From 2711fae9c794ade21a159fba32d2bf9d572c0110 Mon Sep 17 00:00:00 2001 From: jakub Date: Sun, 15 Jun 2025 21:25:15 +0200 Subject: [PATCH] ik --- pom.xml | 10 +++ .../xyz/soukup/ecoCraftCore/EcoCraftCore.java | 11 ++++ .../ecoCraftCore/commands/MoneyCommand.java | 8 ++- .../ecoCraftCore/commands/ShopCommand.java | 11 ++-- .../ecoCraftCore/events/RulerMarking.java | 10 +-- .../ecoCraftCore/utilities/Messages.java | 66 +++++++++++++++++++ .../soukup/ecoCraftCore/utilities/PHHM.java | 48 ++++++++++++++ src/main/resources/messages.yml | 31 +++++---- 8 files changed, 174 insertions(+), 21 deletions(-) create mode 100644 src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java create mode 100644 src/main/java/xyz/soukup/ecoCraftCore/utilities/PHHM.java diff --git a/pom.xml b/pom.xml index 6916d91..4468d7c 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,10 @@ + + is-releases + https://repo.infernalsuite.com/repository/maven-releases/ + papermc-repo https://repo.papermc.io/repository/maven-public/ @@ -103,6 +107,12 @@ + + com.infernalsuite.asp + api + 4.0.0 + provided + com.j256.ormlite ormlite-core diff --git a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java index 957492c..b920bdc 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java @@ -22,27 +22,36 @@ import xyz.soukup.ecoCraftCore.objects.Transaction; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; import xyz.soukup.ecoCraftCore.objects.VirtualChest; import xyz.soukup.ecoCraftCore.utilities.DaoRegistry; +import xyz.soukup.ecoCraftCore.utilities.Messages; +import java.io.IOException; import java.sql.SQLException; import java.time.Duration; import java.util.logging.Level; import java.util.logging.Logger; + + public final class EcoCraftCore extends JavaPlugin { + public static EcoCraftCore plugin; public static ConnectionSource connectionSource; @Override public void onEnable() { this.getLogger().info("plugin starting out"); + plugin = this; try { + Messages.init(); prepareDatabase(); registerCommands(); registerEvents(); } catch (SQLException e) { e.printStackTrace(); getLogger().severe("Failed to initialize database."); + } catch (IOException e) { + throw new RuntimeException(e); } this.getServer().getScheduler().runTaskTimer(this, /* Lambda: */ task -> { @@ -101,4 +110,6 @@ public final class EcoCraftCore extends JavaPlugin { } + + } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java index 61d76fb..a2400f0 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java @@ -13,6 +13,8 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import xyz.soukup.ecoCraftCore.objects.Account; import xyz.soukup.ecoCraftCore.objects.Transaction; +import xyz.soukup.ecoCraftCore.utilities.Messages; +import xyz.soukup.ecoCraftCore.utilities.PHHM; public class MoneyCommand { public static LiteralArgumentBuilder createCommand() { @@ -53,7 +55,7 @@ public class MoneyCommand { return 0; } Account account = Account.getOrCreate(player); - player.sendPlainMessage(String.format("Tvuj balanc: %.2f", account.getBalance())); + Messages.send(player, "money.balance.self", PHHM.get(account)); return 1; } @@ -69,12 +71,14 @@ public class MoneyCommand { Account senderAccount = Account.getOrCreate(sender); if (amount > senderAccount.getBalance()){ - sender.sendPlainMessage("nemáš mony!"); + Messages.send(sender, "generic.error.no-funds"); return 0; } Transaction transaction = new Transaction(amount,"player", sender.getName(), "player", receiver.getName(), "player"); transaction.process(); + Messages.send(sender, "money.send.player", PHHM.get(transaction)); + Messages.send(receiver, "money.receiver.player", PHHM.get(transaction)); return 1; } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java index 01d9ef6..4772b64 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java @@ -13,6 +13,7 @@ import xyz.soukup.ecoCraftCore.events.RulerMarking; import xyz.soukup.ecoCraftCore.objects.Shop; import xyz.soukup.ecoCraftCore.objects.VirtualChest; import xyz.soukup.ecoCraftCore.utilities.InventoryUtils; +import xyz.soukup.ecoCraftCore.utilities.Messages; import xyz.soukup.ecoCraftCore.utilities.PDC; public class ShopCommand { @@ -38,7 +39,7 @@ public class ShopCommand { CommandSourceStack source = ctx.getSource(); if (!(source.getSender() instanceof Player player)){ - source.getSender().sendPlainMessage("nejsi hrač"); + Messages.send(source.getSender(), "generic.error.not-player"); return 0; } @@ -63,19 +64,19 @@ public class ShopCommand { if (sign == null || chest == null){ - player.sendPlainMessage("nemáš označeno"); + Messages.send(player, "shop.error.not-marked"); return 0; } ItemStack item = player.getInventory().getItemInMainHand(); if (item.isEmpty()){ - player.sendPlainMessage("nemáš item v ruke"); + Messages.send(player, "shop.error.empty-hand"); return 0; } if (PDC.getInteger(sign, "shop") != null){ - player.sendPlainMessage("tato cedule již je obchod"); + Messages.send(player, "shop.error.already-shop"); return 0; } @@ -93,6 +94,8 @@ public class ShopCommand { shop.save(); shop.writeIntoSign(sign); + Messages.send(player, "shop.created"); + return 1; } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java b/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java index 5f12edd..c9f642a 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java @@ -10,7 +10,9 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; +import xyz.soukup.ecoCraftCore.utilities.Messages; import xyz.soukup.ecoCraftCore.utilities.PDC; +import xyz.soukup.ecoCraftCore.utilities.PHHM; import java.util.HashMap; @@ -48,7 +50,7 @@ public class RulerMarking implements Listener { return; } chests.put(player, chest); - player.sendMessage("pozice truhly nastavena"); + Messages.send(player, "marker.marked.chest", PHHM.get(chest.getLocation())); return; } @@ -58,7 +60,7 @@ public class RulerMarking implements Listener { return; } signs.put(player, sign); - player.sendMessage("pozice cedule nastavena"); + Messages.send(player, "marker.marked.sign", PHHM.get(sign.getLocation())); return; } @@ -71,7 +73,7 @@ public class RulerMarking implements Listener { return; } primaryLocations.put(player, location); - player.sendMessage("první pozice nastavena"); + Messages.send(player, "marker.marked.primary", PHHM.get(location)); return; } case RIGHT_CLICK_BLOCK -> { @@ -80,7 +82,7 @@ public class RulerMarking implements Listener { return; } secondaryLocations.put(player, location); - player.sendMessage("druhá pozice nastavena"); + Messages.send(player, "marker.marked.secondary", PHHM.get(location)); return; } } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java b/src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java new file mode 100644 index 0000000..63f9b09 --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java @@ -0,0 +1,66 @@ +package xyz.soukup.ecoCraftCore.utilities; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Objects; + +import static xyz.soukup.ecoCraftCore.EcoCraftCore.plugin; + +public class Messages { + private static File messagesFile; + private static YamlConfiguration messages; + + public static void init() throws IOException { + messagesFile = new File(plugin.getDataFolder(), "messages.yml"); + + plugin.saveResource("messages.yml", true); + + if (!messagesFile.exists()){ + plugin.saveResource("messages.yml", false); + } + + messages = YamlConfiguration.loadConfiguration(messagesFile); + + messages.save(messagesFile); + + } + + public static Component get(String key) { + String string = messages.getString(key); + if (string == null){ + return Component.text(key); + } + return MiniMessage.miniMessage().deserialize(string); + } + + public static Component get(String key, HashMap placeholders){ + String string = messages.getString(key); + if (string == null){ + return Component.text(key); + } + + TagResolver.Builder resolverBuilder = TagResolver.builder(); + placeholders.forEach((k, value) -> resolverBuilder.resolver(Placeholder.unparsed(k, value))); + + + return MiniMessage.miniMessage().deserialize(string, resolverBuilder.build()); + } + + public static void send(CommandSender sender, String key){ + sender.sendMessage(get(key)); + } + + public static void send(CommandSender sender, String key, HashMap placeholders){ + sender.sendMessage(get(key, placeholders)); + } +} diff --git a/src/main/java/xyz/soukup/ecoCraftCore/utilities/PHHM.java b/src/main/java/xyz/soukup/ecoCraftCore/utilities/PHHM.java new file mode 100644 index 0000000..fee94d5 --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/utilities/PHHM.java @@ -0,0 +1,48 @@ +package xyz.soukup.ecoCraftCore.utilities; + + +import org.bukkit.Location; +import xyz.soukup.ecoCraftCore.objects.Account; +import xyz.soukup.ecoCraftCore.objects.Transaction; + +import java.util.HashMap; + +public class PHHM { + public static HashMap get(Location location){ + HashMap hashMap = new HashMap<>(); + + hashMap.put("x", Integer.toString(location.getBlockX())); + hashMap.put("y", Integer.toString(location.getBlockY())); + hashMap.put("z", Integer.toString(location.getBlockZ())); + hashMap.put("world", location.getWorld().getName()); + + return hashMap; + } + + public static HashMap get(Transaction transaction){ + HashMap hashMap = new HashMap<>(); + + hashMap.put("transaction-id", String.format("%bd", transaction.getId())); + hashMap.put("amount", String.format("%.2f", transaction.getAmount())); + hashMap.put("sender", transaction.getSender()); + hashMap.put("sender-type", transaction.getSenderType()); + hashMap.put("receiver", transaction.getReceiver()); + hashMap.put("receiver-type", transaction.getReceiverType()); + hashMap.put("type", transaction.getType()); + hashMap.put("primary-info", transaction.getPrimaryInfo()); + hashMap.put("secondary-info", transaction.getSecondaryInfo()); + + return hashMap; + + } + + public static HashMap get(Account account){ + HashMap hashMap = new HashMap<>(); + + hashMap.put("balance", String.format("%.2f", account.getBalance())); + hashMap.put("owner", account.getOwner()); + hashMap.put("type", account.getType()); + + return hashMap; + } +} diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index e638e5f..d372e74 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -10,20 +10,29 @@ generic: self: "Nemáš dostatek itemů" shop: "Obchod nemá dostatek itemů" shop: - buy: "Koupil jsi x za " - sell: "Prodal jsi x za " - create: "Obchod vytvořen." + error: + already-shop: "Tato cedule již je obchod" + not-marked: "Musíš označit ceduly a chestku, aby jsi mohl vytvořit obchod" + empty-hand: "Nedržíš v ruce žádný item" + buy: "Koupil jsi x za " + sell: "Prodal jsi x za " + created: "Obchod vytvořen." money: + error: + self-send: "Nemůžeš poslat peníze sám sobě" + balance: + self: "Tvůj zůstatek: " + player: "Zůstatek hráče : " give: - self: "Dal sis " - player: "Dal jsi hráči " + self: "Dal sis " + player: "Dal jsi hráči " send: - player: "Poslal jsi hráči " + player: "Poslal jsi hráči " receive: - player: "Obdržel jsi od hráče " + player: "Obdržel jsi od hráče " marker: marked: - chest: "Truhla označena (,,)" - sign: "Cedule označena (,,)" - primary: "První pozice označena (,,)" - secondary: "Druhá pozice označena (,,)" \ No newline at end of file + chest: "Truhla označena (,,)" + sign: "Cedule označena (,,)" + primary: "První pozice označena (,,)" + secondary: "Druhá pozice označena (,,)" \ No newline at end of file