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.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());

View File

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

View File

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

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