From c3718934076e3fe148fb7610810e7f33785bd6a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Fri, 2 Jan 2026 22:29:27 +0100 Subject: [PATCH] added support for portable stonecutter alongside crafting table, renamed listener for clarity --- .../OnCraftingBlockUseListener.java | 20 +++++++++++++++++++ .../OnCraftingTableUseListener.java | 16 --------------- .../portableCrafting/PortableCrafting.java | 9 ++++++--- .../PortableCraftingSetting.java | 2 +- 4 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingBlockUseListener.java delete mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingTableUseListener.java diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingBlockUseListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingBlockUseListener.java new file mode 100644 index 0000000..bc51970 --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingBlockUseListener.java @@ -0,0 +1,20 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.portableCrafting; + +import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.settings.Settings; +import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +class OnCraftingBlockUseListener extends ApplianceListener { + @EventHandler + public void inInteract(PlayerInteractEvent event) { + if(!event.getAction().equals(Action.RIGHT_CLICK_AIR)) return; + if(!Settings.instance().getSetting(event.getPlayer(), Settings.Key.EnablePortableCrafting, Boolean.class)) return; + + switch(event.getMaterial()) { + case CRAFTING_TABLE -> this.getAppliance().openCraftingTable(event.getPlayer()); + case STONECUTTER -> this.getAppliance().openStonecutter(event.getPlayer()); + } + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingTableUseListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingTableUseListener.java deleted file mode 100644 index 989933d..0000000 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/OnCraftingTableUseListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.portableCrafting; - -import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; -import org.bukkit.Material; -import org.bukkit.event.EventHandler; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerInteractEvent; - -class OnCraftingTableUseListener extends ApplianceListener { - @EventHandler - public void inInteract(PlayerInteractEvent event) { - if(!event.getAction().equals(Action.RIGHT_CLICK_AIR)) return; - if(!event.getMaterial().equals(Material.CRAFTING_TABLE)) return; - this.getAppliance().openFor(event.getPlayer()); - } -} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCrafting.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCrafting.java index 4340dd0..d1f00ca 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCrafting.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCrafting.java @@ -14,13 +14,16 @@ public class PortableCrafting extends Appliance { Settings.instance().declareSetting(PortableCraftingSetting.class); } - public void openFor(Player player) { - if(!Settings.instance().getSetting(player, Settings.Key.EnablePortableCrafting, Boolean.class)) return; + public void openCraftingTable(Player player) { player.openWorkbench(null, true); } + public void openStonecutter(Player player) { + player.openStonecutter(null, true); + } + @Override protected @NotNull List listeners() { - return List.of(new OnCraftingTableUseListener()); + return List.of(new OnCraftingBlockUseListener()); } } diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCraftingSetting.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCraftingSetting.java index b533bfa..5d09091 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCraftingSetting.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/portableCrafting/PortableCraftingSetting.java @@ -18,7 +18,7 @@ public class PortableCraftingSetting extends BoolSetting implements CategorizedS @Override protected String description() { - return "Erlaubt das öffnen einer Werkbank in der Hand, ohne sie plazieren zu müssen"; + return "Erlaubt das öffnen einer Werkbank oder einer Steinsäge in der Hand, ohne den Block plazieren zu müssen"; } @Override