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