From 29a98733b77dff6b7ff9f996d81708f368571563 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 2 Jul 2024 09:51:37 +0200 Subject: [PATCH] tak tak --- .../mineconomiacore/MineconomiaCore.java | 22 ++++++++- .../mineconomiacore/commands/editSign.java | 47 ++++++++++++++++++ .../mineconomiacore/commands/setSign.java | 48 +++++++++++++++++++ .../mineconomiacore/events/signComplete.java | 19 ++++++++ .../mineconomiacore/events/toggleFrame.java | 35 ++++++++++++++ src/main/resources/plugin.yml | 6 ++- 6 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/commands/editSign.java create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/commands/setSign.java create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/events/signComplete.java create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/events/toggleFrame.java diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java index 63e16b8..ae51961 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java @@ -10,8 +10,12 @@ import xyz.mineconomia.mineconomiacore.commands.*; import xyz.mineconomia.mineconomiacore.events.*; import xyz.mineconomia.mineconomiacore.handlers.FHBHandler; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public final class MineconomiaCore extends JavaPlugin { public static Logger logger = Bukkit.getLogger(); @@ -50,6 +54,8 @@ public final class MineconomiaCore extends JavaPlugin { pm.registerEvents(new shopGuiInteract(), this); pm.registerEvents(new sellClose(), this); pm.registerEvents(new spawnRadiusMessage(), this); + pm.registerEvents(new toggleFrame(), this); + pm.registerEvents(new signComplete(), this); Objects.requireNonNull(plugin.getCommand("mcore")).setExecutor(new mcore()); Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand()); @@ -61,8 +67,9 @@ public final class MineconomiaCore extends JavaPlugin { Objects.requireNonNull(getCommand("sell")).setExecutor(new sell()); Objects.requireNonNull(getCommand("spawn")).setExecutor(new spawn()); Objects.requireNonNull(getCommand("bed")).setExecutor(new bed()); - + Objects.requireNonNull(getCommand("setSign")).setExecutor(new setSign()); Objects.requireNonNull(getCommand("mcore")).setTabCompleter(new mcore()); + Objects.requireNonNull(getCommand("editSign")).setExecutor(new editSign()); //CustomItems ItemManager.init(); @@ -89,4 +96,17 @@ public final class MineconomiaCore extends JavaPlugin { public static Economy getEconomy() { return econ; } + public static List getArgs(String input) { + List result = new ArrayList<>(); + Pattern pattern = Pattern.compile("\"([^\"]*)\"|([^\\s]+)"); + Matcher matcher = pattern.matcher(input); + while (matcher.find()) { + String match = matcher.group(1); // Check if the first group (quoted string) matched + if (match == null) { + match = matcher.group(2); // If not, use the second group (unquoted string) + } + result.add(match); + } + return result; + } } diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/editSign.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/editSign.java new file mode 100644 index 0000000..78f4961 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/editSign.java @@ -0,0 +1,47 @@ +package xyz.mineconomia.mineconomiacore.commands; + +import org.bukkit.ChatColor; +import org.bukkit.block.Sign; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import xyz.mineconomia.mineconomiacore.handlers.SignHandler; + +import java.util.List; + +import static xyz.mineconomia.mineconomiacore.MineconomiaCore.getArgs; + +public class editSign implements TabExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { + StringBuilder argsString = new StringBuilder(); + for (String ss : args) { + argsString.append(ChatColor.translateAlternateColorCodes('&', ss)).append(" "); + } + List pArgs = getArgs(argsString.toString()); + if (pArgs.size() != 2){ + commandSender.sendMessage(ChatColor.RED + "špatný počet argumentů"); + return false; + } + Player player = (Player) commandSender; + + if (!(player.getTargetBlock(null, 5).getState() instanceof Sign sign)){ + + commandSender.sendMessage(ChatColor.RED + "musíš se dívat na cedulku"); + return false; + } + sign.setLine(Integer.parseInt(pArgs.get(0))-1, pArgs.get(1)); + commandSender.sendMessage(ChatColor.GREEN + "Cedulka upravena"); + sign.update(); + return false; + } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { + return List.of(); + } +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/setSign.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/setSign.java new file mode 100644 index 0000000..8ca42d8 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/setSign.java @@ -0,0 +1,48 @@ +package xyz.mineconomia.mineconomiacore.commands; + +import org.bukkit.ChatColor; +import org.bukkit.block.Sign; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import xyz.mineconomia.mineconomiacore.handlers.SignHandler; + +import java.util.List; + +import static xyz.mineconomia.mineconomiacore.MineconomiaCore.getArgs; + +public class setSign implements TabExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { + + StringBuilder argsString = new StringBuilder(); + for (String ss : args) { + argsString.append(ChatColor.translateAlternateColorCodes('&', ss)).append(" "); + } + List pArgs = getArgs(argsString.toString()); + if (pArgs.size() != 4){ + commandSender.sendMessage(ChatColor.RED + "špatný počet argumentů"); + return false; + } + Player player = (Player) commandSender; + + if (!(player.getTargetBlock(null, 5).getState() instanceof Sign sign)){ + + commandSender.sendMessage(ChatColor.RED + "musíš se dívat na cedulku"); + return false; + } + SignHandler.changeSignText(sign, pArgs.get(0), pArgs.get(1), pArgs.get(2), pArgs.get(3)); + commandSender.sendMessage(ChatColor.GREEN + "Cedulka nastavena"); + sign.update(); + return false; + } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { + return List.of(); + } +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/events/signComplete.java b/src/main/java/xyz/mineconomia/mineconomiacore/events/signComplete.java new file mode 100644 index 0000000..68f796d --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/events/signComplete.java @@ -0,0 +1,19 @@ +package xyz.mineconomia.mineconomiacore.events; + +import org.bukkit.ChatColor; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.SignChangeEvent; + + +import java.util.Objects; + +public class signComplete implements Listener { + @EventHandler + public void signCreate(SignChangeEvent event){ + + for (int i = 0; 4 > i; i++){ + event.setLine(i, ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(event.getLine(i)))); + } + } +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/events/toggleFrame.java b/src/main/java/xyz/mineconomia/mineconomiacore/events/toggleFrame.java new file mode 100644 index 0000000..ba27b17 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/events/toggleFrame.java @@ -0,0 +1,35 @@ +package xyz.mineconomia.mineconomiacore.events; + +import org.bukkit.Particle; +import org.bukkit.Sound; +import org.bukkit.entity.*; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.inventory.EquipmentSlot; + +public class toggleFrame implements Listener { + @EventHandler + public void frameToggle(PlayerInteractEntityEvent event){ + Entity entity = event.getRightClicked(); + Player player = event.getPlayer(); + if (entity.getType() != EntityType.ITEM_FRAME){ + return; + } + + if (!player.isSneaking()){ + return; + } + event.setCancelled(true); + if (event.getHand() == EquipmentSlot.OFF_HAND) { + return; + } + ItemFrame itemFrame = (ItemFrame) entity; + itemFrame.setVisible(!itemFrame.isVisible()); + player.playSound(itemFrame, Sound.ITEM_HOE_TILL, 100, 1); + player.spawnParticle(Particle.EXPLOSION_NORMAL, itemFrame.getLocation(), 0); + + + + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e225d4d..cbcd177 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -29,4 +29,8 @@ commands: spawn: description: "na spawn s tebou" bed: - description: "do postele s tebou" \ No newline at end of file + description: "do postele s tebou" + setSign: + description: "" + editSign: + description: ""