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