diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java index aa4b72b..693d96f 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java @@ -6,17 +6,19 @@ import eu.mhsl.minecraft.pixelblocks.listeners.*; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; +import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ShapedRecipe; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; +import java.io.File; import java.util.Objects; public final class PixelBlocks extends JavaPlugin { public static PixelBlocks plugin; public static DataBase dataBase; - public static String pathSeparator = "/"; + public static String pathSeparator = File.separator; @Override public void onEnable() { @@ -26,18 +28,24 @@ public final class PixelBlocks extends JavaPlugin { dataBase = new DataBase("jdbc:sqlite:pixelblocks.db"); dataBase.loadPixelBlocks(); - getServer().getPluginManager().registerEvents(new PlayerInteractListener(), this); - getServer().getPluginManager().registerEvents(new PlayerMoveListener(), this); - getServer().getPluginManager().registerEvents(new EntityDamageListener(), this); - getServer().getPluginManager().registerEvents(new BlockBreakListener(), this); - getServer().getPluginManager().registerEvents(new BlockPlaceListener(), this); - getServer().getPluginManager().registerEvents(new CreatureSpawnListener(), this); - getServer().getPluginManager().registerEvents(new EntityExplodeListener(), this); - getServer().getPluginManager().registerEvents(new BlockExplodeListener(), this); - getServer().getPluginManager().registerEvents(new PlayerPortalListener(), this); - getServer().getPluginManager().registerEvents(new InventoryListener(), this); -// getServer().getPluginManager().registerEvents(new ChunkLoadListener(), this); - getServer().getPluginManager().registerEvents(new PlayerChangeWorldListener(), this); + Listener[] listeners = { + new PlayerInteractListener(), + new PlayerMoveListener(), + new EntityDamageListener(), + new BlockBreakListener(), + new BlockPlaceListener(), + new CreatureSpawnListener(), + new EntityExplodeListener(), + new BlockExplodeListener(), + new PlayerPortalListener(), + new InventoryListener(), + new PlayerChangeWorldListener(), + new CraftItemListener() + }; + + for (Listener listener : listeners) { + getServer().getPluginManager().registerEvents(listener, plugin); + } Objects.requireNonNull(getCommand("createpixelblock")).setExecutor(new CreatePixelBlockCommand()); Objects.requireNonNull(getCommand("exitworld")).setExecutor(new ExitWorldCommand()); diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java index da105f8..7bb0120 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockBreakListener.java @@ -12,7 +12,7 @@ public class BlockBreakListener implements Listener { PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld()); assert pixelBlock != null; - pixelBlock.handleBlockBreak(event, false); + pixelBlock.handleBlockBreak(event, true); } } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java index 3b9231f..8bba62e 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/BlockPlaceListener.java @@ -26,7 +26,7 @@ public class BlockPlaceListener implements Listener { if(Arrays.stream(standardWorlds).toList().contains(playerWorld)) { Location newBlockLocation = event.getBlock().getLocation(); - if(event.getItemInHand().getItemMeta().getItemName().equals("Pixelblock")) { + if(event.getItemInHand().getItemMeta().getItemName().startsWith("Pixelblock")) { ItemMeta newMeta = event.getItemInHand().getItemMeta(); newMeta.setItemName(UUID.randomUUID().toString()); event.getItemInHand().setItemMeta(newMeta); @@ -44,7 +44,7 @@ public class BlockPlaceListener implements Listener { PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld()); assert pixelBlock != null; - pixelBlock.handleBlockPlace(event, false); + pixelBlock.handleBlockPlace(event, true); } } } diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ChunkLoadListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ChunkLoadListener.java deleted file mode 100644 index 253e1be..0000000 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/ChunkLoadListener.java +++ /dev/null @@ -1,27 +0,0 @@ -package eu.mhsl.minecraft.pixelblocks.listeners; - -import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.world.ChunkLoadEvent; -import org.bukkit.event.world.ChunkUnloadEvent; - -public class ChunkLoadListener implements Listener { - @EventHandler - static void onChunkLoad(ChunkLoadEvent event) { - PixelBlock.placedPixelBlocks.forEach(pixelBlock -> { - if(pixelBlock.hitbox == null) { - pixelBlock.update(); - } - }); - } - - @EventHandler - static void onChunkUnload(ChunkUnloadEvent event) { - PixelBlock.placedPixelBlocks.forEach(pixelBlock -> { - if(pixelBlock.hitbox != null) { - pixelBlock.clearEntities(); - } - }); - } -} diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CraftItemListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CraftItemListener.java new file mode 100644 index 0000000..b1de9c1 --- /dev/null +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/CraftItemListener.java @@ -0,0 +1,24 @@ +package eu.mhsl.minecraft.pixelblocks.listeners; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Objects; +import java.util.UUID; + +public class CraftItemListener implements Listener { + @EventHandler + static void onCraftItem(CraftItemEvent event) { + if(Objects.requireNonNull(event.getCurrentItem()).getItemMeta().getDisplayName().contains("Pixelblock")) { + if(event.isShiftClick()) { + event.setCancelled(true); + } else { + ItemMeta meta = event.getCurrentItem().getItemMeta(); + meta.setItemName("Pixelblock " + UUID.randomUUID()); + event.getCurrentItem().setItemMeta(meta); + } + } + } +} diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java index a7bd135..ba1e92f 100644 --- a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java +++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerChangeWorldListener.java @@ -1,20 +1,18 @@ package eu.mhsl.minecraft.pixelblocks.listeners; import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; -import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChangedWorldEvent; import java.util.Objects; -import static eu.mhsl.minecraft.pixelblocks.PixelBlocks.plugin; - public class PlayerChangeWorldListener implements Listener { @EventHandler static void onPlayerChangeWorld(PlayerChangedWorldEvent event) { if(CommonEventHandlers.isInPixelWorld(event.getFrom())) { - Bukkit.getScheduler().runTaskLater(plugin, () -> Objects.requireNonNull(PixelBlock.getPixelBlockFromWorld(event.getFrom())).update(), 60); +// Bukkit.getScheduler().runTaskLater(plugin, () -> Objects.requireNonNull(PixelBlock.getPixelBlockFromWorld(event.getFrom())).update(), 60); + Objects.requireNonNull(PixelBlock.getPixelBlockFromWorld(event.getFrom())).update(); } } }