From e84cd87d073d84a708e33f9149d20eddcb5f5940 Mon Sep 17 00:00:00 2001 From: jakub Date: Mon, 2 Jun 2025 21:47:18 +0200 Subject: [PATCH] ik --- .../xyz/soukup/ecoCraftCore/EcoCraftCore.java | 14 +++- .../ecoCraftCore/commands/RulerCommand.java | 35 ++++++++++ .../ecoCraftCore/commands/ShopCommand.java | 4 ++ .../ecoCraftCore/events/RulerMarking.java | 70 +++++++++++++++++++ 4 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java create mode 100644 src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java create mode 100644 src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java diff --git a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java index 66848ca..466474a 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java @@ -4,8 +4,14 @@ import com.j256.ormlite.dao.DaoManager; import com.j256.ormlite.jdbc.JdbcConnectionSource; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; +import io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.eclipse.sisu.bean.LifecycleManager; +import org.jetbrains.annotations.NotNull; +import xyz.soukup.ecoCraftCore.commands.RulerCommand; import xyz.soukup.ecoCraftCore.commands.TransactionCommand; +import xyz.soukup.ecoCraftCore.events.RulerMarking; import xyz.soukup.ecoCraftCore.objects.Shop; import xyz.soukup.ecoCraftCore.objects.Transaction; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; @@ -27,6 +33,7 @@ public final class EcoCraftCore extends JavaPlugin { try { prepareDatabase(); registerCommands(); + this.getServer().getPluginManager().registerEvents(new RulerMarking(), this); } catch (SQLException e) { e.printStackTrace(); getLogger().severe("Failed to initialize database."); @@ -61,8 +68,9 @@ public final class EcoCraftCore extends JavaPlugin { } private void registerCommands() { - this.getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, - event -> event.registrar().register(TransactionCommand.createCommand().build()) - ); + @NotNull LifecycleEventManager<@NotNull Plugin> lm = this.getLifecycleManager(); + + lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(TransactionCommand.createCommand().build())); + lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(RulerCommand.createCommand().build())); } } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java new file mode 100644 index 0000000..82b8e11 --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java @@ -0,0 +1,35 @@ +package xyz.soukup.ecoCraftCore.commands; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import io.papermc.paper.command.brigadier.CommandSourceStack; +import io.papermc.paper.command.brigadier.Commands; +import org.bukkit.Material; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import xyz.soukup.ecoCraftCore.utilities.PDC; + +public class RulerCommand { + public static LiteralArgumentBuilder createCommand() { + return Commands.literal("ruler") + .executes(RulerCommand::obtainRuler); + } + + private static int obtainRuler(CommandContext context){ + + CommandSender commandSender = context.getSource().getSender(); + + if (!(commandSender instanceof Player)){ + commandSender.sendPlainMessage("Musíš být hráč"); + return 0; + } + + Player player = (Player) commandSender; + ItemStack itemStack = PDC.setItemStackBoolean(new ItemStack(Material.BLAZE_ROD), "ruler", true); + + player.getInventory().addItem(itemStack); + + return 1; + } +} diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java new file mode 100644 index 0000000..7a7796f --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java @@ -0,0 +1,4 @@ +package xyz.soukup.ecoCraftCore.commands; + +public class ShopCommand { +} diff --git a/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java b/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java new file mode 100644 index 0000000..1fd0b49 --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java @@ -0,0 +1,70 @@ +package xyz.soukup.ecoCraftCore.events; + +import org.bukkit.BlockChangeDelegate; +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.block.Chest; +import org.bukkit.block.Sign; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; +import xyz.soukup.ecoCraftCore.utilities.PDC; + +import java.util.HashMap; + +public class RulerMarking implements Listener { + + public static HashMap primary_locations = new HashMap<>(); + public static HashMap secondary_locations = new HashMap<>(); + public static HashMap sign_locations = new HashMap<>(); + public static HashMap storage_locations = new HashMap<>(); + + @EventHandler + public void playerInteract(PlayerInteractEvent event){ + + ItemStack itemStack = event.getItem(); + Block block = event.getClickedBlock(); + + + if (itemStack == null || block == null){ + return; + } + + Boolean isRuler = PDC.retrieveBooleanFromItemStack(itemStack, "ruler"); + + if (isRuler == null || !isRuler) { + return; + } + + event.setCancelled(true); + + if (block.getState() instanceof Chest){ + storage_locations.put(event.getPlayer(), block.getLocation()); + event.getPlayer().sendMessage("pozice truhly nastavena"); + return; + } + + if (block.getState() instanceof Sign){ + sign_locations.put(event.getPlayer(), block.getLocation()); + event.getPlayer().sendMessage("pozice cedule nastavena"); + return; + } + + switch (event.getAction()){ + case LEFT_CLICK_BLOCK -> { + primary_locations.put(event.getPlayer(), block.getLocation()); + event.getPlayer().sendMessage("první pozice nastavena"); + return; + } + case RIGHT_CLICK_BLOCK -> { + secondary_locations.put(event.getPlayer(), block.getLocation()); + event.getPlayer().sendMessage("druhá pozice nastavena"); + return; + } + } + + event.setCancelled(false); + } +}