made pixelblocks unstackable

This commit is contained in:
Lars Neuhaus 2024-07-20 13:18:08 +02:00
parent c6f0c0ba4b
commit 63dec832ae
6 changed files with 50 additions and 47 deletions

View File

@ -6,17 +6,19 @@ import eu.mhsl.minecraft.pixelblocks.listeners.*;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe; import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.util.Objects; import java.util.Objects;
public final class PixelBlocks extends JavaPlugin { public final class PixelBlocks extends JavaPlugin {
public static PixelBlocks plugin; public static PixelBlocks plugin;
public static DataBase dataBase; public static DataBase dataBase;
public static String pathSeparator = "/"; public static String pathSeparator = File.separator;
@Override @Override
public void onEnable() { public void onEnable() {
@ -26,18 +28,24 @@ public final class PixelBlocks extends JavaPlugin {
dataBase = new DataBase("jdbc:sqlite:pixelblocks.db"); dataBase = new DataBase("jdbc:sqlite:pixelblocks.db");
dataBase.loadPixelBlocks(); dataBase.loadPixelBlocks();
getServer().getPluginManager().registerEvents(new PlayerInteractListener(), this); Listener[] listeners = {
getServer().getPluginManager().registerEvents(new PlayerMoveListener(), this); new PlayerInteractListener(),
getServer().getPluginManager().registerEvents(new EntityDamageListener(), this); new PlayerMoveListener(),
getServer().getPluginManager().registerEvents(new BlockBreakListener(), this); new EntityDamageListener(),
getServer().getPluginManager().registerEvents(new BlockPlaceListener(), this); new BlockBreakListener(),
getServer().getPluginManager().registerEvents(new CreatureSpawnListener(), this); new BlockPlaceListener(),
getServer().getPluginManager().registerEvents(new EntityExplodeListener(), this); new CreatureSpawnListener(),
getServer().getPluginManager().registerEvents(new BlockExplodeListener(), this); new EntityExplodeListener(),
getServer().getPluginManager().registerEvents(new PlayerPortalListener(), this); new BlockExplodeListener(),
getServer().getPluginManager().registerEvents(new InventoryListener(), this); new PlayerPortalListener(),
// getServer().getPluginManager().registerEvents(new ChunkLoadListener(), this); new InventoryListener(),
getServer().getPluginManager().registerEvents(new PlayerChangeWorldListener(), this); new PlayerChangeWorldListener(),
new CraftItemListener()
};
for (Listener listener : listeners) {
getServer().getPluginManager().registerEvents(listener, plugin);
}
Objects.requireNonNull(getCommand("createpixelblock")).setExecutor(new CreatePixelBlockCommand()); Objects.requireNonNull(getCommand("createpixelblock")).setExecutor(new CreatePixelBlockCommand());
Objects.requireNonNull(getCommand("exitworld")).setExecutor(new ExitWorldCommand()); Objects.requireNonNull(getCommand("exitworld")).setExecutor(new ExitWorldCommand());

View File

@ -12,7 +12,7 @@ public class BlockBreakListener implements Listener {
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld()); PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld());
assert pixelBlock != null; assert pixelBlock != null;
pixelBlock.handleBlockBreak(event, false); pixelBlock.handleBlockBreak(event, true);
} }
} }
} }

View File

@ -26,7 +26,7 @@ public class BlockPlaceListener implements Listener {
if(Arrays.stream(standardWorlds).toList().contains(playerWorld)) { if(Arrays.stream(standardWorlds).toList().contains(playerWorld)) {
Location newBlockLocation = event.getBlock().getLocation(); Location newBlockLocation = event.getBlock().getLocation();
if(event.getItemInHand().getItemMeta().getItemName().equals("Pixelblock")) { if(event.getItemInHand().getItemMeta().getItemName().startsWith("Pixelblock")) {
ItemMeta newMeta = event.getItemInHand().getItemMeta(); ItemMeta newMeta = event.getItemInHand().getItemMeta();
newMeta.setItemName(UUID.randomUUID().toString()); newMeta.setItemName(UUID.randomUUID().toString());
event.getItemInHand().setItemMeta(newMeta); event.getItemInHand().setItemMeta(newMeta);
@ -44,7 +44,7 @@ public class BlockPlaceListener implements Listener {
PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld()); PixelBlock pixelBlock = PixelBlock.getPixelBlockFromWorld(event.getBlock().getLocation().getWorld());
assert pixelBlock != null; assert pixelBlock != null;
pixelBlock.handleBlockPlace(event, false); pixelBlock.handleBlockPlace(event, true);
} }
} }
} }

View File

@ -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();
}
});
}
}

View File

@ -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);
}
}
}
}

View File

@ -1,20 +1,18 @@
package eu.mhsl.minecraft.pixelblocks.listeners; package eu.mhsl.minecraft.pixelblocks.listeners;
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock; import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerChangedWorldEvent;
import java.util.Objects; import java.util.Objects;
import static eu.mhsl.minecraft.pixelblocks.PixelBlocks.plugin;
public class PlayerChangeWorldListener implements Listener { public class PlayerChangeWorldListener implements Listener {
@EventHandler @EventHandler
static void onPlayerChangeWorld(PlayerChangedWorldEvent event) { static void onPlayerChangeWorld(PlayerChangedWorldEvent event) {
if(CommonEventHandlers.isInPixelWorld(event.getFrom())) { 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();
} }
} }
} }