diff --git a/pom.xml b/pom.xml index c72b3e7..9115504 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,10 @@ sonatype https://oss.sonatype.org/content/groups/public/ + + jitpack.io + https://jitpack.io + @@ -68,7 +72,11 @@ 1.21.1-R0.1-SNAPSHOT provided - + + com.github.MatrixCreations + MatrixColorAPI + v1.0.7 + com.j256.ormlite ormlite-core diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java index db469ac..a909521 100644 --- a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java @@ -1,16 +1,18 @@ package xyz.soukup.mineconomiaCoreV2; -import commands.tabCompleter; -import commands.teleportWorld; -import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.InvalidConfigurationException; +import xyz.soukup.mineconomiaCoreV2.commands.tabCompleter; +import xyz.soukup.mineconomiaCoreV2.commands.teleportWorld; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import xyz.soukup.mineconomiaCoreV2.database.DatabaseUtil; import xyz.soukup.mineconomiaCoreV2.events.PlayerInit; +import xyz.soukup.mineconomiaCoreV2.tools.LangManager; import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand; import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; +import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.Objects; @@ -27,9 +29,16 @@ public final class MineconomiaCoreV2 extends JavaPlugin { public void onEnable() { // Plugin startup logic instance = this; + getLogger().info("STARTING MINECONOMIA CORE"); plugin.saveDefaultConfig(); + try { + LangManager.initLangManager(); + } catch (IOException | InvalidConfigurationException e) { + throw new RuntimeException(e); + } + PluginManager pluginManager = getServer().getPluginManager(); @@ -46,8 +55,8 @@ public final class MineconomiaCoreV2 extends JavaPlugin { Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand()); // TPW registration - this.getCommand("tpw").setExecutor(new teleportWorld()); - this.getCommand("tpw").setTabCompleter(new tabCompleter()); + Objects.requireNonNull(this.getCommand("tpw")).setExecutor(new teleportWorld()); + Objects.requireNonNull(this.getCommand("tpw")).setTabCompleter(new tabCompleter()); diff --git a/src/main/java/commands/tabCompleter.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/commands/tabCompleter.java similarity index 95% rename from src/main/java/commands/tabCompleter.java rename to src/main/java/xyz/soukup/mineconomiaCoreV2/commands/tabCompleter.java index 1f86e88..5565137 100644 --- a/src/main/java/commands/tabCompleter.java +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/commands/tabCompleter.java @@ -1,4 +1,4 @@ -package commands; +package xyz.soukup.mineconomiaCoreV2.commands; import org.bukkit.Bukkit; import org.bukkit.World; diff --git a/src/main/java/commands/teleportWorld.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/commands/teleportWorld.java similarity index 63% rename from src/main/java/commands/teleportWorld.java rename to src/main/java/xyz/soukup/mineconomiaCoreV2/commands/teleportWorld.java index 9bb51b9..745832c 100644 --- a/src/main/java/commands/teleportWorld.java +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/commands/teleportWorld.java @@ -1,17 +1,21 @@ -package commands; +package xyz.soukup.mineconomiaCoreV2.commands; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.entity.Player; +import xyz.soukup.mineconomiaCoreV2.tools.LangManager; + +import java.io.IOException; public class teleportWorld implements CommandExecutor { // Teleports player with OP to another world. @Override - public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) { + public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings){ if (commandSender instanceof Player) { Player player = (Player) commandSender; @@ -23,7 +27,9 @@ public class teleportWorld implements CommandExecutor { World world = Bukkit.getWorld(strings[0]); if (world == null) { - player.sendMessage("This is not a valid world!"); + + LangManager.message(commandSender, "error.command.tpw.invalid-world"); + return true; } @@ -33,15 +39,15 @@ public class teleportWorld implements CommandExecutor { World targetPlayerWorld = targetPlayer.getWorld(); if (targetPlayerWorld.equals(world)) { - player.sendMessage(String.format("Player %s is already in this world!", strings[1])); + LangManager.message(commandSender, "error.command.tpw.already-in-world", strings[1]); return true; } targetPlayer.teleport(world.getSpawnLocation()); - targetPlayer.sendMessage(String.format("Successfully teleported %s from %s to %s.", strings[1], targetPlayerWorld.getName(), world.getName())); + LangManager.message(commandSender, "success.command.tpw.teleported", strings[1], targetPlayerWorld.getName(), world.getName()); return true; } catch (Exception e) { - player.sendMessage("This is not a valid player!"); + LangManager.message(commandSender, "error.command.invalid-player"); return true; } } @@ -49,12 +55,12 @@ public class teleportWorld implements CommandExecutor { World playerWorld = player.getWorld(); if (playerWorld.equals(world)) { - player.sendMessage("You are already in this world!"); + LangManager.message(commandSender, "error.command.tpw.already-in-world-self"); return true; } player.teleport(world.getSpawnLocation()); - player.sendMessage(String.format("Successfully teleported from %s to %s.", playerWorld.getName(), world.getName())); + LangManager.message(commandSender, "success.command.tpw.teleported-self", playerWorld.getName(), world.getName()); return true; } return false; diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/tools/LangManager.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/tools/LangManager.java index 4375fb6..09ab519 100644 --- a/src/main/java/xyz/soukup/mineconomiaCoreV2/tools/LangManager.java +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/tools/LangManager.java @@ -1,16 +1,145 @@ package xyz.soukup.mineconomiaCoreV2.tools; +import net.matrixcreations.libraries.MatrixColorAPI; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; -import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config; -import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin; +import java.io.File; +import java.io.IOException; +import java.util.List; + +import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.*; public class LangManager { public static YamlConfiguration lang = null; - public static void loadLang(){ - String langPath = "lang/" + config.getString("lang"); - plugin.saveResource(langPath, false); - //lang = YamlConfiguration.loadConfiguration(plugin.getResource(langPath)); + private static FileConfiguration langConfig; + + + //Replace references and colorize retrieved string + public static String get(String key){ + return MatrixColorAPI.process(retrieveString(key)); + } + + public static String get(String key, String s1){ + return MatrixColorAPI.process(retrieveString(key).replace("%s1", s1)); + } + + public static String get(String key, String s1, String s2) { + return MatrixColorAPI.process(retrieveString(key).replace("%s1", s1).replace("%s2", s2)); + } + + public static String get(String key, String s1, String s2, String s3) { + return MatrixColorAPI.process(retrieveString(key).replace("%s1", s1).replace("%s2", s2).replace("%s3", s3)); + } + + + //Info into server console + public static void info(String key){ + logger.info(ChatColor.stripColor(get(key))); + } + + public static void info(String key, String s1){ + logger.info(ChatColor.stripColor(get(key, s1))); + } + public static void info(String key, String s1, String s2){ + logger.info(ChatColor.stripColor(get(key, s1, s2))); + } + public static void info(String key, String s1, String s2, String s3){ + logger.info(ChatColor.stripColor(get(key, s1, s2, s3))); + } + + //Warning into server console + public static void warning(String key){ + logger.warning(ChatColor.stripColor(get(key))); + } + + public static void warning(String key, String s1){ + logger.warning(ChatColor.stripColor(get(key, s1))); + } + public static void warning(String key, String s1, String s2){ + logger.warning(ChatColor.stripColor(get(key, s1, s2))); + } + public static void warning(String key, String s1, String s2, String s3){ + logger.warning(ChatColor.stripColor(get(key, s1, s2, s3))); + } + + //Message to player + public static void message(CommandSender commandSender, String key){ + commandSender.sendMessage(get(key)); + } + + public static void message(CommandSender commandSender, String key, String s1){ + commandSender.sendMessage(get(key, s1)); + } + + public static void message(CommandSender commandSender, String key, String s1, String s2) { + commandSender.sendMessage(get(key, s1, s2)); + } + + public static void message(CommandSender commandSender, String key, String s1, String s2, String s3) { + commandSender.sendMessage(get(key, s1, s2, s3)); } + + + private static String retrieveString(String key) { + + Object value = langConfig.get(key); + + if (value == null){ + return key; + } + + if(value instanceof String){ + return (String) value; + } + + if (value instanceof List){ + List stringList = (List) value; + + StringBuilder result = new StringBuilder(); + boolean isFirst = true; + + for (String s : stringList){ + + if(!isFirst){ + result.append("\n"); + } + + result.append(s); + isFirst = false; + } + + return result.toString(); + } + + return key; + } + + public static void initLangManager() throws IOException, InvalidConfigurationException { + + if (langConfig != null){ + return; + } + + String selectedLang = config.getString("language"); + + File langFile = new File(plugin.getDataFolder(), "lang/" + selectedLang); + + if (!langFile.exists()) { + langFile.getParentFile().mkdirs(); + plugin.saveResource("lang/" + selectedLang, false); + } + + langConfig = new YamlConfiguration(); + + langConfig.load(langFile); + + } + + } diff --git a/src/main/resources/lang/czech.yml b/src/main/resources/lang/czech.yml index d8d6abc..dc45010 100644 --- a/src/main/resources/lang/czech.yml +++ b/src/main/resources/lang/czech.yml @@ -4,3 +4,13 @@ error: not-console: "&cPříkaz může použít jen konzole!" wrong-argument-count: "&cNesprávný počet parametrů!" no-permissions: "&cNemáš oprávnění!" + invalid-player: "&cTento hráč neexistuje!" + tpw: + invalid-world: "&cTento svět neexistuje!" + already-in-world-self: "&cJiž jsi v tomto světě" + already-in-world: "&6%s1 &cjiž je v tomto světě" +success: + command: + tpw: + teleported: "&2%s1 &abyl úspěšně teleportován z &2%s2 &ado &2%s3" + teleported-self: "&aÚspěšně si se teleportoval z &2%s1 &ado &2%s2" \ No newline at end of file