diff --git a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java index 768379a..915b4b9 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java @@ -10,14 +10,10 @@ import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.World; -import org.bukkit.boss.BarColor; -import org.bukkit.boss.BarStyle; -import org.bukkit.boss.BossBar; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; public class EventStartCommand extends SubCommand { @@ -41,7 +37,7 @@ GUIUtils.sendTitleToAll("Event", j > 0 ? "" + j : "Go", ChatUtil.BLUE); - if(j <= 0){ + if (j <= 0) { bukkitTask.cancel(); World world = Bukkit.getWorld("world"); if (plugin.getServerType() != ServerType.ADVENTURE) { @@ -62,7 +58,6 @@ }, 10, 20); - return true; } else { ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); diff --git a/src/main/java/de/fanta/challenges/listeners/ContainerListener.java b/src/main/java/de/fanta/challenges/listeners/ContainerListener.java new file mode 100644 index 0000000..072d9a0 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/ContainerListener.java @@ -0,0 +1,85 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.teams.ChallengeTeam; +import de.fanta.challenges.teams.TeamUtils; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.block.BlockState; +import org.bukkit.block.Container; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.inventory.FurnaceStartSmeltEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.metadata.MetadataValue; + +import java.util.Optional; +import java.util.UUID; + +public class ContainerListener implements Listener { + + private static final String META_PLACED_BY_PLAYER = "PlacedByPlayer"; + private static final String META_PLACED_BY_TEAM = "PlacedByTeam"; + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onContainerPlace(BlockPlaceEvent e) { + BlockState state = e.getBlockPlaced().getState(); + if(state instanceof Container container) { + if (plugin.getConfig().getBoolean("event.teams")) { + ChallengeTeam challengeTeam = TeamUtils.getPlayerTeam(e.getPlayer()); + if (challengeTeam != null) { + container.setMetadata(META_PLACED_BY_TEAM, new FixedMetadataValue(plugin, challengeTeam.getName())); + container.update(); + } + + } else { + container.setMetadata(META_PLACED_BY_PLAYER, new FixedMetadataValue(plugin, e.getPlayer().getUniqueId().toString())); + container.update(); + } + + } + } + + @EventHandler + public void onFurnaceStartSmelt(FurnaceStartSmeltEvent e) { + if (plugin.getConfig().getBoolean("speedfurnace")) { + e.setTotalCookTime(e.getTotalCookTime() / 10); + } + } + + + @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); + } + 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) { + e.setCancelled(true); + } + ChatUtil.sendNormalMessage(e.getPlayer(), "Diese/r " + new ItemStack(container.getType()).getI18NDisplayName() + " gehört: Team " + team.getChatColor() + team.getName()); + } + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index c2ba5f3..b43a6ca 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -40,7 +40,7 @@ pM.registerEvents(new SammelFieberSettingsGui(), plugin); pM.registerEvents(new EventItemsGui(), plugin); pM.registerEvents(new EventGui(), plugin); - pM.registerEvents(new FurnaceListener(), plugin); + pM.registerEvents(new ContainerListener(), plugin); pM.registerEvents(new CommandBlockListener(), plugin); pM.registerEvents(new TeleportGUI(), plugin); pM.registerEvents(new TeamSelectGUI(), plugin); diff --git a/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java b/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java deleted file mode 100644 index ea1d18f..0000000 --- a/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java +++ /dev/null @@ -1,65 +0,0 @@ -package de.fanta.challenges.listeners; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.utils.ChatUtil; -import org.bukkit.Bukkit; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Furnace; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.inventory.FurnaceStartSmeltEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; - -import java.util.Optional; -import java.util.UUID; - -public class FurnaceListener implements Listener { - - private static final String META_PLACED_BY_PLAYER = "PlacedByPlayer"; - - private final Challenges plugin = Challenges.getPlugin(); - - @EventHandler - public void onFurnacePlace(BlockPlaceEvent e) { - BlockState state = e.getBlockPlaced().getState(); - if(state instanceof Furnace furnace) { - /*if (plugin.getConfig().getBoolean("speedfurnace")) { - furnace.setCookSpeedMultiplier(10.0); - }*/ - furnace.setMetadata(META_PLACED_BY_PLAYER, new FixedMetadataValue(plugin, e.getPlayer().getUniqueId().toString())); - furnace.update(); - } - } - - @EventHandler - public void onFurnaceStartSmelt(FurnaceStartSmeltEvent e) { - if (plugin.getConfig().getBoolean("speedfurnace")) { - e.setTotalCookTime(e.getTotalCookTime() / 10); - } - } - - - @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 Furnace furnace && furnace.hasMetadata(META_PLACED_BY_PLAYER)) { - Optional valueOptional = furnace.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); - } - ChatUtil.sendNormalMessage(e.getPlayer(), "Dieser Ofen gehört: " + Bukkit.getOfflinePlayer(uuid).getName()); - } - } - } - } - } -}