diff --git a/src/main/java/de/fanta/challenges/commands/ChestUnlockCommand.java b/src/main/java/de/fanta/challenges/commands/ChestUnlockCommand.java new file mode 100644 index 0000000..e16cbb2 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/ChestUnlockCommand.java @@ -0,0 +1,41 @@ +package de.fanta.challenges.commands; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.listeners.ContainerListener; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ChestUnlockCommand extends SubCommand { + + private final Challenges plugin; + + public ChestUnlockCommand(Challenges plugin) { + this.plugin = plugin; + } + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String s1, ArgsParser args) { + if (!(sender instanceof Player player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + + if (!plugin.getConfig().getBoolean("event.minilwc")) { + ChatUtil.sendWarningMessage(player, "Aktuell kann es keine Sicherungen geben."); + return true; + } + if (ContainerListener.unlockList.contains(player.getUniqueId())) { + ContainerListener.unlockList.remove(player.getUniqueId()); + ChatUtil.sendNormalMessage(player, "Du entsicherst jetzt keine Sicherung mehr."); + } else { + ContainerListener.unlockList.add(player.getUniqueId()); + ChatUtil.sendNormalMessage(player, "Berühre eine Sicherung, um sie zu entfernen."); + } + + + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java index ca69366..8b950e7 100644 --- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -136,5 +136,9 @@ CommandRouter skipItemRouter = new CommandRouter(plugin.getCommand("skipitem")); skipItemRouter.addCommandMapping(new SkipItemCommand(plugin)); + + CommandRouter unlockRouter = new CommandRouter(plugin.getCommand("unlock")); + unlockRouter.addPluginCommand(plugin.getCommand("cremove")); + unlockRouter.addCommandMapping(new ChestUnlockCommand(plugin)); } } diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java index ea2ded9..1d9afb1 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -31,6 +31,7 @@ private static final int ORE_BATTLE_INDEX = 16; private static final int FORCE_ITEM_INDEX = 17; //TODO muss noch schön gemacht werden. + private static final int EVENT_SETTINGS_INDEX = 18; private static final int BINGO_ITEMS_INDEX = 19; private static final int SAMMEL_FIEBER_SETTINGS_INDEX = 24; private static final int CLOSE_IDEX = 26; @@ -50,6 +51,7 @@ } EVENT_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.ORANGE_BED, ChatUtil.BLUE + "Team Settings")); + EVENT_GUI.setItem(EVENT_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatUtil.BLUE + "Event Settings")); if (Objects.equals(plugin.getConfig().getString("event.type"), "build")) { EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatUtil.GREEN + "Build Event", true, ChatUtil.GREEN + "Baue so viele Blöcke wie möglich ab", ChatUtil.RED + "Einen Block setzen gibt einen Minus Punkt")); @@ -152,6 +154,7 @@ case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p); case SAMMEL_FIEBER_SETTINGS_INDEX -> new SammelFieberSettingsGui(p).open(); case TEAM_INDEX -> TeamSettingsGUI.createTeamSettingsGUI(p); + case EVENT_SETTINGS_INDEX -> new EventSettingsGui(p).open(); case CLOSE_IDEX -> p.closeInventory(); } } diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventSettingsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventSettingsGui.java index 405bdac..69dc437 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventSettingsGui.java @@ -13,9 +13,9 @@ public class EventSettingsGui extends AbstractWindow { private static final Challenges plugin = Challenges.getPlugin(); - public static final int INVENTORY_SIZE = 9; + public static final int INVENTORY_SIZE = 27; - private static final int DIRECTION_INDEX = 11; + private static final int MINI_LWC_INDEX = 10; public EventSettingsGui(Player player) { super(player, Bukkit.createInventory(player, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Event Settings")); @@ -35,13 +35,13 @@ int slot = event.getSlot(); switch (slot) { - case DIRECTION_INDEX -> { + case MINI_LWC_INDEX -> { if (plugin.getConfig().getBoolean("event.minilwc")) { GUIUtils.setConfig("event.minilwc", false); - ChatUtil.sendTitleToAll("Event", "Mini LWC aktiviert.", ChatUtil.GREEN, true); + ChatUtil.sendTitleToAll("Event", "Mini LWC deaktiviert.", ChatUtil.RED, true); } else { GUIUtils.setConfig("event.minilwc", true); - ChatUtil.sendTitleToAll("Event", "Mini LWC deaktiviert.", ChatUtil.BLUE, true); + ChatUtil.sendTitleToAll("Event", "Mini LWC aktiviert.", ChatUtil.GREEN, true); } player.closeInventory(); } @@ -55,11 +55,11 @@ for (int i = 0; i < INVENTORY_SIZE; i++) { ItemStack item; switch (i) { - case DIRECTION_INDEX -> { + case MINI_LWC_INDEX -> { if (plugin.getConfig().getBoolean("event.minilwc")) { - item = GUIUtils.createGuiItem(Material.BARREL, ChatUtil.BLUE + "Timer Richtung - rückwärts"); + item = GUIUtils.createGuiItem(Material.BARREL, ChatUtil.RED + "Mini LWC deaktivieren."); } else { - item = GUIUtils.createGuiItem(Material.BARREL, ChatUtil.GREEN + "Timer Richtung - vorwärts"); + item = GUIUtils.createGuiItem(Material.BARREL, ChatUtil.GREEN + "Mini LWC aktivieren."); } } default -> item = GUIUtils.EMPTY_ICON; diff --git a/src/main/java/de/fanta/challenges/listeners/ContainerListener.java b/src/main/java/de/fanta/challenges/listeners/ContainerListener.java index 072d9a0..5138561 100644 --- a/src/main/java/de/fanta/challenges/listeners/ContainerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/ContainerListener.java @@ -17,6 +17,7 @@ import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; +import java.util.ArrayList; import java.util.Optional; import java.util.UUID; @@ -27,10 +28,15 @@ private final Challenges plugin = Challenges.getPlugin(); + public static final ArrayList unlockList = new ArrayList<>(); + @EventHandler public void onContainerPlace(BlockPlaceEvent e) { BlockState state = e.getBlockPlaced().getState(); - if(state instanceof Container container) { + if (!plugin.getConfig().getBoolean("event.minilwc")) { + return; + } + if (state instanceof Container container) { if (plugin.getConfig().getBoolean("event.teams")) { ChallengeTeam challengeTeam = TeamUtils.getPlayerTeam(e.getPlayer()); if (challengeTeam != null) { @@ -56,28 +62,50 @@ @EventHandler public void onInteract(PlayerInteractEvent e) { - if (plugin.getConfig().getBoolean("event.enabled")) { - Block block = e.getClickedBlock(); - if(block != null) { - BlockState state = block.getState(); - if(state instanceof Container container && container.hasMetadata(META_PLACED_BY_PLAYER)) { - Optional valueOptional = container.getMetadata(META_PLACED_BY_PLAYER).stream().filter(metadataValue -> metadataValue.getOwningPlugin().equals(plugin)).findFirst(); - if(valueOptional.isPresent()){ - UUID uuid = UUID.fromString(valueOptional.get().asString()); - if(!e.getPlayer().getUniqueId().equals(uuid)) { - e.setCancelled(true); - } + if (!plugin.getConfig().getBoolean("event.minilwc")) { + return; + } + + Block block = e.getClickedBlock(); + if (block != null) { + BlockState state = block.getState(); + if (state instanceof Container container && container.hasMetadata(META_PLACED_BY_PLAYER)) { + Optional valueOptional = container.getMetadata(META_PLACED_BY_PLAYER).stream().filter(metadataValue -> metadataValue.getOwningPlugin().equals(plugin)).findFirst(); + if (valueOptional.isPresent()) { + UUID uuid = UUID.fromString(valueOptional.get().asString()); + if (!e.getPlayer().getUniqueId().equals(uuid)) { ChatUtil.sendNormalMessage(e.getPlayer(), "Diese/r " + new ItemStack(container.getType()).getI18NDisplayName() + " gehört: " + Bukkit.getOfflinePlayer(uuid).getName()); + e.setCancelled(true); + return; } - } else if (state instanceof Container container && container.hasMetadata(META_PLACED_BY_TEAM)) { - Optional valueOptional = container.getMetadata(META_PLACED_BY_TEAM).stream().filter(metadataValue -> metadataValue.getOwningPlugin().equals(plugin)).findFirst(); - if(valueOptional.isPresent()){ - ChallengeTeam team = TeamUtils.getTeam(valueOptional.get().asString()); - if(TeamUtils.getPlayerTeam(e.getPlayer()) != team) { - e.setCancelled(true); - } + + if (unlockList.contains(e.getPlayer().getUniqueId())) { + container.removeMetadata(META_PLACED_BY_PLAYER, plugin); + unlockList.remove(e.getPlayer().getUniqueId()); + ChatUtil.sendNormalMessage(e.getPlayer(), new ItemStack(container.getType()).getI18NDisplayName() + " entsichert."); + return; + } + + ChatUtil.sendNormalMessage(e.getPlayer(), "Diese/r " + new ItemStack(container.getType()).getI18NDisplayName() + " gehört: " + Bukkit.getOfflinePlayer(uuid).getName()); + } + } else if (state instanceof Container container && container.hasMetadata(META_PLACED_BY_TEAM)) { + Optional valueOptional = container.getMetadata(META_PLACED_BY_TEAM).stream().filter(metadataValue -> metadataValue.getOwningPlugin().equals(plugin)).findFirst(); + if (valueOptional.isPresent()) { + ChallengeTeam team = TeamUtils.getTeam(valueOptional.get().asString()); + if (TeamUtils.getPlayerTeam(e.getPlayer()) != team) { ChatUtil.sendNormalMessage(e.getPlayer(), "Diese/r " + new ItemStack(container.getType()).getI18NDisplayName() + " gehört: Team " + team.getChatColor() + team.getName()); + e.setCancelled(true); + return; } + + if (unlockList.contains(e.getPlayer().getUniqueId())) { + container.removeMetadata(META_PLACED_BY_TEAM, plugin); + unlockList.remove(e.getPlayer().getUniqueId()); + ChatUtil.sendNormalMessage(e.getPlayer(), new ItemStack(container.getType()).getI18NDisplayName() + " entsichert."); + return; + } + + ChatUtil.sendNormalMessage(e.getPlayer(), "Diese/r " + new ItemStack(container.getType()).getI18NDisplayName() + " gehört: Team " + team.getChatColor() + team.getName()); } } }