pull/6/head
jakub 9 months ago
parent d77cb08f53
commit 2711fae9c7
  1. 10
      pom.xml
  2. 11
      src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java
  3. 8
      src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java
  4. 11
      src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java
  5. 10
      src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java
  6. 66
      src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java
  7. 48
      src/main/java/xyz/soukup/ecoCraftCore/utilities/PHHM.java
  8. 31
      src/main/resources/messages.yml

@ -88,6 +88,10 @@
</build>
<repositories>
<repository>
<id>is-releases</id>
<url>https://repo.infernalsuite.com/repository/maven-releases/</url>
</repository>
<repository>
<id>papermc-repo</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
@ -103,6 +107,12 @@
</repositories>
<dependencies>
<dependency>
<groupId>com.infernalsuite.asp</groupId>
<artifactId>api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-core</artifactId>

@ -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 {
}
}

@ -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<CommandSourceStack> 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;
}

@ -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;
}

@ -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;
}
}

@ -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<String, String> 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<String, String> placeholders){
sender.sendMessage(get(key, placeholders));
}
}

@ -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<String, String> get(Location location){
HashMap<String, String> 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<String, String> get(Transaction transaction){
HashMap<String, String> 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<String, String> get(Account account){
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("balance", String.format("%.2f", account.getBalance()));
hashMap.put("owner", account.getOwner());
hashMap.put("type", account.getType());
return hashMap;
}
}

@ -10,20 +10,29 @@ generic:
self: "<red>Nemáš dostatek itemů"
shop: "<red>Obchod nemá dostatek itemů"
shop:
buy: "<lime>Koupil jsi <count>x <item> za <price>"
sell: "<lime>Prodal jsi <count>x <item> za <price>"
create: "<lime>Obchod vytvořen."
error:
already-shop: "<red>Tato cedule již je obchod"
not-marked: "<red>Musíš označit ceduly a chestku, aby jsi mohl vytvořit obchod"
empty-hand: "<red>Nedržíš v ruce žádný item"
buy: "<green>Koupil jsi <count>x <item> za <price>"
sell: "<green>Prodal jsi <count>x <item> za <price>"
created: "<green>Obchod vytvořen."
money:
error:
self-send: "<red>Nemůžeš poslat peníze sám sobě"
balance:
self: "<green>Tvůj zůstatek: <balance>"
player: "<green>Zůstatek hráče <name>: <balance>"
give:
self: "<lime>Dal sis <amount>"
player: "<lime>Dal jsi hráči <receiver> <amount>"
self: "<green>Dal sis <amount>"
player: "<green>Dal jsi hráči <receiver> <amount>"
send:
player: "<lime>Poslal jsi <amount> hráči <receiver>"
player: "<green>Poslal jsi <amount> hráči <receiver>"
receive:
player: "<lime>Obdržel jsi <amount> od hráče <sender>"
player: "<green>Obdržel jsi <amount> od hráče <sender>"
marker:
marked:
chest: "<lime>Truhla označena (<x>,<y>,<z>)"
sign: "<lime>Cedule označena (<x>,<y>,<z>)"
primary: "<lime>První pozice označena (<x>,<y>,<z>)"
secondary: "<lime>Druhá pozice označena (<x>,<y>,<z>)"
chest: "<green>Truhla označena (<x>,<y>,<z>)"
sign: "<green>Cedule označena (<x>,<y>,<z>)"
primary: "<green>První pozice označena (<x>,<y>,<z>)"
secondary: "<green>Druhá pozice označena (<x>,<y>,<z>)"
Loading…
Cancel
Save