PDC Upgrade

pull/6/head
= 9 months ago
parent 2711fae9c7
commit 5aac4d2d72
  1. 24
      src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java
  2. 3
      src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java
  3. 63
      src/main/java/xyz/soukup/ecoCraftCore/events/ShopLogic.java
  4. 4
      src/main/java/xyz/soukup/ecoCraftCore/events/VirtualChestLogic.java
  5. 39
      src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java
  6. 27
      src/main/resources/messages.yml

@ -51,7 +51,9 @@ public class MoneyCommand {
} }
private static int getBalance(CommandContext<CommandSourceStack> context){ private static int getBalance(CommandContext<CommandSourceStack> context){
if (!(context.getSource().getSender() instanceof Player player)){ CommandSender commandSender = context.getSource().getSender();
if (!(commandSender instanceof Player player)){
Messages.send(commandSender, "generic.error.not-player");
return 0; return 0;
} }
Account account = Account.getOrCreate(player); Account account = Account.getOrCreate(player);
@ -77,8 +79,9 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount,"player", sender.getName(), "player", receiver.getName(), "player"); Transaction transaction = new Transaction(amount,"player", sender.getName(), "player", receiver.getName(), "player");
transaction.process(); transaction.process();
Messages.send(sender, "money.send.player", PHHM.get(transaction)); Messages.send(sender, "money.send.player", PHHM.get(transaction));
Messages.send(receiver, "money.receiver.player", PHHM.get(transaction)); Messages.send(receiver, "money.receive.player", PHHM.get(transaction));
return 1; return 1;
} }
@ -94,6 +97,8 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount,"admin", commandSender.getName(), "player", receiver.getName(), "admin"); Transaction transaction = new Transaction(amount,"admin", commandSender.getName(), "player", receiver.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.give.player", PHHM.get(transaction));
return 1; return 1;
} }
@ -103,6 +108,9 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount,"admin", player.getName(), "player", player.getName(), "admin"); Transaction transaction = new Transaction(amount,"admin", player.getName(), "player", player.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(player, "money.give.self", PHHM.get(transaction));
return 1; return 1;
} }
@ -114,6 +122,9 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount,"admin", commandSender.getName(), type, owner, "admin"); Transaction transaction = new Transaction(amount,"admin", commandSender.getName(), type, owner, "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.give.other", PHHM.get(transaction));
return 1; return 1;
} }
private static int removeMoneyPlayer(CommandContext<CommandSourceStack> context) throws CommandSyntaxException { private static int removeMoneyPlayer(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
@ -126,6 +137,9 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, "player", sender.getName(),"admin", commandSender.getName(), "admin"); Transaction transaction = new Transaction(amount, "player", sender.getName(),"admin", commandSender.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.remove.player", PHHM.get(transaction));
return 1; return 1;
} }
private static int removeMoneySelf(CommandContext<CommandSourceStack> context){ private static int removeMoneySelf(CommandContext<CommandSourceStack> context){
@ -134,6 +148,9 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount,"player", player.getName(),"admin", player.getName(), "admin"); Transaction transaction = new Transaction(amount,"player", player.getName(),"admin", player.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(player, "money.remove.self", PHHM.get(transaction));
return 1; return 1;
} }
private static int removeMoneyOther(CommandContext<CommandSourceStack> context){ private static int removeMoneyOther(CommandContext<CommandSourceStack> context){
@ -144,6 +161,9 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, type, owner,"admin", commandSender.getName(), "admin"); Transaction transaction = new Transaction(amount, type, owner,"admin", commandSender.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.remove.other", PHHM.get(transaction));
return 1; return 1;
} }
} }

@ -8,6 +8,7 @@ import org.bukkit.Material;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import xyz.soukup.ecoCraftCore.utilities.Messages;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
public class RulerCommand { public class RulerCommand {
@ -21,7 +22,7 @@ public class RulerCommand {
CommandSender commandSender = context.getSource().getSender(); CommandSender commandSender = context.getSource().getSender();
if (!(commandSender instanceof Player)){ if (!(commandSender instanceof Player)){
commandSender.sendPlainMessage("Musíš být hráč"); Messages.send(commandSender, "generic.error.not-player");
return 0; return 0;
} }

@ -20,8 +20,11 @@ import xyz.soukup.ecoCraftCore.objects.Transaction;
import xyz.soukup.ecoCraftCore.objects.VirtualChest; import xyz.soukup.ecoCraftCore.objects.VirtualChest;
import xyz.soukup.ecoCraftCore.utilities.Converter; import xyz.soukup.ecoCraftCore.utilities.Converter;
import xyz.soukup.ecoCraftCore.utilities.InventoryUtils; import xyz.soukup.ecoCraftCore.utilities.InventoryUtils;
import xyz.soukup.ecoCraftCore.utilities.Messages;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
import java.util.HashMap;
public class ShopLogic implements Listener { public class ShopLogic implements Listener {
@EventHandler @EventHandler
@ -52,12 +55,13 @@ public class ShopLogic implements Listener {
event.setCancelled(true); event.setCancelled(true);
Player player = event.getPlayer();
if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){ if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){
event.getPlayer().sendPlainMessage("to by neslo"); Messages.send(player, "shop.error.chest-open");
return; return;
} }
Player player = event.getPlayer();
Gui gui = buildShopGui(player, shop); Gui gui = buildShopGui(player, shop);
@ -78,18 +82,26 @@ public class ShopLogic implements Listener {
int amount = shop.getAmount(); int amount = shop.getAmount();
if (buyPrice != 0){ if (buyPrice != 0){
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("amount", Integer.toString(amount));
hashMap.put("price", String.format("%.2f", buyPrice));
GuiItem one = ItemBuilder GuiItem one = ItemBuilder
.from(Material.LIME_WOOL) .from(Material.LIME_WOOL)
.name(Converter.toComponent("&aKoupit " + amount + "ks za " + String.format("%.2f", buyPrice))) .name(Messages.get("menu.shop.buy", hashMap))
.asGuiItem(); .asGuiItem();
one.setAction(event -> { one.setAction(event -> {
event.setCancelled(true); event.setCancelled(true);
ShopLogic.buy(shop, player, 1); ShopLogic.buy(shop, player, 1);
}); });
hashMap.put("amount", Integer.toString(amount*8));
hashMap.put("price", String.format("%.2f", buyPrice*8));
GuiItem eight = ItemBuilder GuiItem eight = ItemBuilder
.from(Material.LIME_WOOL) .from(Material.LIME_WOOL)
.name(Converter.toComponent("&aKoupit " + amount*8 + "ks za " + String.format("%.2f", buyPrice*8))) .name(Messages.get("menu.shop.buy", hashMap))
.asGuiItem(); .asGuiItem();
eight.setAction(event -> { eight.setAction(event -> {
event.setCancelled(true); event.setCancelled(true);
@ -102,9 +114,14 @@ public class ShopLogic implements Listener {
} }
if (sellPrice != 0){ if (sellPrice != 0){
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("amount", Integer.toString(amount));
hashMap.put("price", String.format("%.2f", sellPrice));
GuiItem one = ItemBuilder GuiItem one = ItemBuilder
.from(Material.YELLOW_WOOL) .from(Material.YELLOW_WOOL)
.name(Converter.toComponent("&eProdat " + amount + "ks za " + String.format("%.2f", sellPrice))) .name(Messages.get("menu.shop.sell", hashMap))
.asGuiItem(); .asGuiItem();
one.setAction(event -> { one.setAction(event -> {
@ -112,9 +129,13 @@ public class ShopLogic implements Listener {
ShopLogic.sell(shop, player, 1); ShopLogic.sell(shop, player, 1);
}); });
hashMap.put("amount", Integer.toString(amount*8));
hashMap.put("price", String.format("%.2f", sellPrice*8));
GuiItem eight = ItemBuilder GuiItem eight = ItemBuilder
.from(Material.YELLOW_WOOL) .from(Material.YELLOW_WOOL)
.name(Converter.toComponent("&eProdat " + amount*8 + "ks za " + String.format("%.2f", sellPrice*8))) .name(Messages.get("menu.shop.sell", hashMap))
.asGuiItem(); .asGuiItem();
eight.setAction(event -> { eight.setAction(event -> {
@ -140,7 +161,7 @@ public class ShopLogic implements Listener {
public static void buy(Shop shop, Player player, int multiplier){ public static void buy(Shop shop, Player player, int multiplier){
if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){ if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){
player.sendPlainMessage("to by neslo"); Messages.send(player, "shop.error.chest-open");
return; return;
} }
@ -152,7 +173,7 @@ public class ShopLogic implements Listener {
Account account = Account.getOrCreate(player); Account account = Account.getOrCreate(player);
if (price > account.getBalance()){ if (price > account.getBalance()){
player.sendPlainMessage("nemaš dost mony"); Messages.send(player, "generic.error.no-money.self");
return; return;
} }
@ -165,12 +186,12 @@ public class ShopLogic implements Listener {
Inventory playerInventory = player.getInventory(); Inventory playerInventory = player.getInventory();
if (InventoryUtils.getSpaceLeft(playerInventory, itemStack) < amount){ if (InventoryUtils.getSpaceLeft(playerInventory, itemStack) < amount){
player.sendPlainMessage("Nemáš dost místa v invu"); Messages.send(player, "generic.error.no-space.self");
return; return;
} }
if (!virtualChest.removeItem(itemStack)){ if (!virtualChest.removeItem(itemStack)){
player.sendPlainMessage("není dost věcí v chestce"); Messages.send(player, "generic.error.no-item.shop");
return; return;
} }
@ -182,12 +203,19 @@ public class ShopLogic implements Listener {
transaction.process(); transaction.process();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("count", Integer.toString(amount));
hashMap.put("price", String.format("%.2f", price));
hashMap.put("item", itemStack.displayName().toString());
Messages.send(player, "shop.buy", hashMap);
} }
public static void sell(Shop shop, Player player, int multiplier){ public static void sell(Shop shop, Player player, int multiplier){
if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){ if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){
player.sendPlainMessage("to by neslo"); Messages.send(player, "shop.error.chest-open");
return; return;
} }
@ -199,7 +227,7 @@ public class ShopLogic implements Listener {
Account account = Account.getOrCreate(shop.getOwnerType(), shop.getOwner()); Account account = Account.getOrCreate(shop.getOwnerType(), shop.getOwner());
if (price > account.getBalance()){ if (price > account.getBalance()){
player.sendPlainMessage("shop nemá mony"); Messages.send(player, "generic.error.no-money.self");
return; return;
} }
@ -212,12 +240,12 @@ public class ShopLogic implements Listener {
Inventory playerInventory = player.getInventory(); Inventory playerInventory = player.getInventory();
if (InventoryUtils.getCount(playerInventory, itemStack) < amount){ if (InventoryUtils.getCount(playerInventory, itemStack) < amount){
player.sendPlainMessage("nemáš prodejní itemy"); Messages.send(player, "generic.error.no-item.self");
return; return;
} }
if (!virtualChest.addItem(itemStack)){ if (!virtualChest.addItem(itemStack)){
player.sendPlainMessage("není dost místa v chestce"); Messages.send(player, "generic.error.no-space.shop");
return; return;
} }
@ -228,5 +256,12 @@ public class ShopLogic implements Listener {
Transaction transaction = new Transaction(price, "player", shop.getOwner(), "player", player.getName(), "playerShop", shop.getItemName() ,Integer.toString(amount)); Transaction transaction = new Transaction(price, "player", shop.getOwner(), "player", player.getName(), "playerShop", shop.getItemName() ,Integer.toString(amount));
transaction.process(); transaction.process();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("count", Integer.toString(amount));
hashMap.put("price", String.format("%.2f", price));
hashMap.put("item", itemStack.displayName().toString());
Messages.send(player, "shop.sell", hashMap);
} }
} }

@ -45,13 +45,9 @@ public class VirtualChestLogic implements Listener {
Integer count = openedChests.get(id); Integer count = openedChests.get(id);
count++; count++;
openedChests.put(id, count); openedChests.put(id, count);
player.sendPlainMessage(Integer.toString(count));
return; return;
} }
player.sendPlainMessage(Integer.toString(id));
VirtualChest virtualChest = VirtualChest.findById(id); VirtualChest virtualChest = VirtualChest.findById(id);
if (virtualChest == null){ if (virtualChest == null){

@ -12,16 +12,16 @@ import org.bukkit.entity.Player;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import static xyz.soukup.ecoCraftCore.EcoCraftCore.plugin; import static xyz.soukup.ecoCraftCore.EcoCraftCore.plugin;
public class Messages { public class Messages {
private static File messagesFile;
private static YamlConfiguration messages; private static YamlConfiguration messages;
public static void init() throws IOException { public static void init() throws IOException {
messagesFile = new File(plugin.getDataFolder(), "messages.yml"); File messagesFile = new File(plugin.getDataFolder(), "messages.yml");
plugin.saveResource("messages.yml", true); plugin.saveResource("messages.yml", true);
@ -36,18 +36,12 @@ public class Messages {
} }
public static Component get(String key) { public static Component get(String key) {
String string = messages.getString(key); String string = getString(key);
if (string == null){
return Component.text(key);
}
return MiniMessage.miniMessage().deserialize(string); return MiniMessage.miniMessage().deserialize(string);
} }
public static Component get(String key, HashMap<String, String> placeholders){ public static Component get(String key, HashMap<String, String> placeholders){
String string = messages.getString(key); String string = getString(key);
if (string == null){
return Component.text(key);
}
TagResolver.Builder resolverBuilder = TagResolver.builder(); TagResolver.Builder resolverBuilder = TagResolver.builder();
placeholders.forEach((k, value) -> resolverBuilder.resolver(Placeholder.unparsed(k, value))); placeholders.forEach((k, value) -> resolverBuilder.resolver(Placeholder.unparsed(k, value)));
@ -63,4 +57,29 @@ public class Messages {
public static void send(CommandSender sender, String key, HashMap<String, String> placeholders){ public static void send(CommandSender sender, String key, HashMap<String, String> placeholders){
sender.sendMessage(get(key, placeholders)); sender.sendMessage(get(key, placeholders));
} }
private static String getString(String key){
StringBuilder string = new StringBuilder();
if (messages.isString(key)){
string = new StringBuilder(Objects.requireNonNull(messages.getString(key)));
} else if (messages.isList(key)) {
boolean isFirst = true;
List<String> list = messages.getStringList(key);
for (String s : list){
if (isFirst){
isFirst = false;
string.append(s);
}else {
string.append("\n").append(s);
}
}
}else {
string = new StringBuilder(key);
}
return string.toString();
}
} }

@ -1,5 +1,6 @@
generic: generic:
error: error:
not-player: "<red>Na tuto akci musíš být hráč"
no-funds: no-funds:
self: "<red>Nemáš dost pěněz" self: "<red>Nemáš dost pěněz"
shop: "<red>Obchod nemá dost peněz" shop: "<red>Obchod nemá dost peněz"
@ -14,25 +15,35 @@ shop:
already-shop: "<red>Tato cedule již je obchod" already-shop: "<red>Tato cedule již je obchod"
not-marked: "<red>Musíš označit ceduly a chestku, aby jsi mohl vytvořit obchod" not-marked: "<red>Musíš označit ceduly a chestku, aby jsi mohl vytvořit obchod"
empty-hand: "<red>Nedržíš v ruce žádný item" empty-hand: "<red>Nedržíš v ruce žádný item"
buy: "<green>Koupil jsi <count>x <item> za <price>" chest-open: "<red>Nelze obchodovat, když je chestka obchodu otevřena."
sell: "<green>Prodal jsi <count>x <item> za <price>" buy: "<green>Koupil jsi <count>x <item> za <price>$"
sell: "<green>Prodal jsi <count>x <item> za <price>$"
created: "<green>Obchod vytvořen." created: "<green>Obchod vytvořen."
money: money:
error: error:
self-send: "<red>Nemůžeš poslat peníze sám sobě" self-send: "<red>Nemůžeš poslat peníze sám sobě"
balance: balance:
self: "<green>Tvůj zůstatek: <balance>" self: "<green>Tvůj zůstatek: <balance>"
player: "<green>Zůstatek hráče <name>: <balance>" player: "<green>Zůstatek hráče <owner>: <balance>$"
give: give:
self: "<green>Dal sis <amount>" self: "<green>Dal sis <amount>$"
player: "<green>Dal jsi hráči <receiver> <amount>" player: "<green>Dal jsi <amount>$ hráči <receiver>"
other: "<green>Na účet <receiver> typu <receiver-type> jsi poslal <amount>$"
send: send:
player: "<green>Poslal jsi <amount> hráči <receiver>" player: "<green>Poslal jsi <amount>$ hráči <receiver>"
receive: receive:
player: "<green>Obdržel jsi <amount> od hráče <sender>" player: "<green>Obdržel jsi <amount>$ od hráče <sender>"
remove:
self: "<green>Odebral sis <amount>$"
player: "<green>Hráči <sender> jsi odebral <amount>$"
other: "<green>Z účtu <sender> typu <sender-type> jsi odebral <amount>$"
marker: marker:
marked: marked:
chest: "<green>Truhla označena (<x>,<y>,<z>)" chest: "<green>Truhla označena (<x>,<y>,<z>)"
sign: "<green>Cedule označena (<x>,<y>,<z>)" sign: "<green>Cedule označena (<x>,<y>,<z>)"
primary: "<green>První pozice označena (<x>,<y>,<z>)" primary: "<green>První pozice označena (<x>,<y>,<z>)"
secondary: "<green>Druhá pozice označena (<x>,<y>,<z>)" secondary: "<green>Druhá pozice označena (<x>,<y>,<z>)"
menu:
shop:
buy: "<green>Koupit <amount>ks za <price>$"
sell: "<yellow>Prodat <amount>ks za <price>$"
Loading…
Cancel
Save