diff --git a/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/EpicHoppersPlugin.java b/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/EpicHoppersPlugin.java index 67e3cc9..9d7bd0b 100644 --- a/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/EpicHoppersPlugin.java +++ b/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/EpicHoppersPlugin.java @@ -51,7 +51,14 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -118,17 +125,15 @@ public class EpicHoppersPlugin extends JavaPlugin implements EpicHoppers { setupConfig(); enchantmentHandler = new EnchantmentHandler(); - // Locales String langMode = getConfig().getString("System.Language Mode"); Locale.init(this); Locale.saveDefaultLocale("en_US"); - Locale.saveDefaultLocale("fr_FR"); - Locale.saveDefaultLocale("nl_NL"); - Locale.saveDefaultLocale("es_ES"); - Locale.saveDefaultLocale("pr_FA"); - Locale.saveDefaultLocale("pt_BR"); this.locale = Locale.getLocale(getConfig().getString("System.Language Mode", langMode)); + if (getConfig().getBoolean("System.Download Needed Data Files")) { + this.update(); + } + hopperManager = new EHopperManager(); playerDataManager = new PlayerDataManager(); boostManager = new BoostManager(); @@ -241,6 +246,39 @@ public class EpicHoppersPlugin extends JavaPlugin implements EpicHoppers { console.sendMessage(Arconix.pl().getApi().format().formatText("&a=============================")); } + private void update() { + try { + URL url = new URL("http://update.songoda.com/index.php?plugin=" + getDescription().getName() + "&version=" + getDescription().getVersion()); + URLConnection urlConnection = url.openConnection(); + InputStream is = urlConnection.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + + int numCharsRead; + char[] charArray = new char[1024]; + StringBuffer sb = new StringBuffer(); + while ((numCharsRead = isr.read(charArray)) > 0) { + sb.append(charArray, 0, numCharsRead); + } + String jsonString = sb.toString(); + JSONObject json = (JSONObject) new JSONParser().parse(jsonString); + + JSONArray files = (JSONArray) json.get("neededFiles"); + for (Object o : files) { + JSONObject file = (JSONObject) o; + + switch ((String)file.get("type")) { + case "locale": + InputStream in = new URL((String) file.get("link")).openStream(); + Locale.saveDefaultLocale(in, (String) file.get("name")); + break; + } + } + } catch (Exception e) { + System.out.println("Failed to update."); + //e.printStackTrace(); + } + } + private void checkStorage() { if (getConfig().getBoolean("Database.Activate Mysql Support")) { diff --git a/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/Locale.java b/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/Locale.java index 3ba5feb..a3a2999 100644 --- a/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/Locale.java +++ b/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/Locale.java @@ -3,7 +3,6 @@ package com.songoda.epichoppers; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; -import org.apache.commons.io.IOUtils; import org.bukkit.ChatColor; import org.bukkit.plugin.java.JavaPlugin; @@ -23,11 +22,10 @@ import java.util.stream.Collectors; */ public class Locale { - private static JavaPlugin plugin; private static final List LOCALES = Lists.newArrayList(); - - private static final Pattern NODE_PATTERN = Pattern.compile("(\\w+(?:\\.\\w+)*)\\s*=\\s*\"(.*)\""); + private static final Pattern NODE_PATTERN = Pattern.compile("(\\w+(?:\\.{1}\\w+)*)\\s*=\\s*\"(.*)\""); private static final String FILE_EXTENSION = ".lang"; + private static JavaPlugin plugin; private static File localeFolder; private static String defaultLocale; @@ -52,123 +50,6 @@ public class Locale { plugin.getLogger().info("Loaded locale " + fileName); } - /** - * Get the name of the language that this locale is based on. - * (i.e. "en" for English, or "fr" for French) - * - * @return the name of the language - */ - public String getName() { - return name; - } - - /** - * Get the name of the region that this locale is from. - * (i.e. "US" for United States or "CA" for Canada) - * - * @return the name of the region - */ - public String getRegion() { - return region; - } - - /** - * Return the entire locale tag (i.e. "en_US") - * - * @return the language tag - */ - public String getLanguageTag() { - return name + "_" + region; - } - - /** - * Get the file that represents this locale - * - * @return the locale file (.lang) - */ - public File getFile() { - return file; - } - - /** - * Get a message set for a specific node - * - * @param node the node to get - * @return the message for the specified node - */ - public String getMessage(String node) { - return ChatColor.translateAlternateColorCodes('&', this.getMessageOrDefault(node, node)); - } - - /** - * Get a message set for a specific node and replace its params with a supplied arguments. - * - * @param node the node to get - * @param args the replacement arguments - * @return the message for the specified node - */ - public String getMessage(String node, Object... args) { - String message = getMessage(node); - for (Object arg : args) { - message = message.replaceFirst("%.*?%", arg.toString()); - } - return message; - } - - /** - * Get a message set for a specific node - * - * @param node the node to get - * @param defaultValue the default value given that a value for the node was not found - * - * @return the message for the specified node. Default if none found - */ - public String getMessageOrDefault(String node, String defaultValue) { - return this.nodes.getOrDefault(node, defaultValue); - } - - /** - * Get the key-value map of nodes to messages - * - * @return node-message map - */ - public Map getMessageNodeMap() { - return ImmutableMap.copyOf(nodes); - } - - /** - * Clear the previous message cache and load new messages directly from file - * - * @return reload messages from file - */ - public boolean reloadMessages() { - if (!this.file.exists()) { - plugin.getLogger().warning("Could not find file for locale " + this.name); - return false; - } - - this.nodes.clear(); // Clear previous data (if any) - - try(BufferedReader reader = new BufferedReader(new FileReader(file))) { - String line; - for (int lineNumber = 0; (line = reader.readLine()) != null; lineNumber++) { - if (line.isEmpty() || line.startsWith("#") /* Comment */) continue; - - Matcher matcher = NODE_PATTERN.matcher(line); - if (!matcher.find()) { - System.err.println("Invalid locale syntax at (line=" + lineNumber + ")"); - continue; - } - - nodes.put(matcher.group(1), matcher.group(2)); - } - } catch (IOException e) { - e.printStackTrace(); - return false; - } - return true; - } - /** * Initialize the locale class to generate information and search for localizations. * This must be called before any other methods in the Locale class can be invoked. @@ -269,12 +150,11 @@ public class Locale { /** * Save a default locale file from the project source directory, to the locale folder * - * @param path the path to the file to save - * @param fileName the name of the file to save - * + * @param in file to save + * @param fileName the name of the file to save * @return true if the operation was successful, false otherwise */ - public static boolean saveDefaultLocale(String path, String fileName) { + public static boolean saveDefaultLocale(InputStream in, String fileName) { if (!localeFolder.exists()) localeFolder.mkdirs(); if (!fileName.endsWith(FILE_EXTENSION)) @@ -286,7 +166,7 @@ public class Locale { } try (OutputStream outputStream = new FileOutputStream(destinationFile)) { - IOUtils.copy(plugin.getResource(fileName), outputStream); + copy(in == null ? plugin.getResource(fileName) : in, outputStream); fileName = fileName.substring(0, fileName.lastIndexOf('.')); String[] localeValues = fileName.split("_"); @@ -309,7 +189,7 @@ public class Locale { * @return true if the operation was successful, false otherwise */ public static boolean saveDefaultLocale(String fileName) { - return saveDefaultLocale("", fileName); + return saveDefaultLocale(null, fileName); } /** @@ -345,7 +225,8 @@ public class Locale { if (!existingLines.contains(key)) { if (!changed) { - writer.newLine(); writer.newLine(); + writer.newLine(); + writer.newLine(); writer.write("# New messages for " + plugin.getName() + " v" + plugin.getDescription().getVersion()); } @@ -362,4 +243,133 @@ public class Locale { return changed; } + private static void copy(InputStream input, OutputStream output) { + int n; + byte[] buffer = new byte[1024 * 4]; + + try { + while ((n = input.read(buffer)) != -1) { + output.write(buffer, 0, n); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Get the name of the language that this locale is based on. + * (i.e. "en" for English, or "fr" for French) + * + * @return the name of the language + */ + public String getName() { + return name; + } + + /** + * Get the name of the region that this locale is from. + * (i.e. "US" for United States or "CA" for Canada) + * + * @return the name of the region + */ + public String getRegion() { + return region; + } + + /** + * Return the entire locale tag (i.e. "en_US") + * + * @return the language tag + */ + public String getLanguageTag() { + return name + "_" + region; + } + + /** + * Get the file that represents this locale + * + * @return the locale file (.lang) + */ + public File getFile() { + return file; + } + + /** + * Get a message set for a specific node + * + * @param node the node to get + * @return the message for the specified node + */ + public String getMessage(String node) { + return ChatColor.translateAlternateColorCodes('&', this.getMessageOrDefault(node, node)); + } + + /** + * Get a message set for a specific node and replace its params with a supplied arguments. + * + * @param node the node to get + * @param args the replacement arguments + * @return the message for the specified node + */ + public String getMessage(String node, Object... args) { + String message = getMessage(node); + for (Object arg : args) { + message = message.replaceFirst("\\%.*?\\%", arg.toString()); + } + return message; + } + + /** + * Get a message set for a specific node + * + * @param node the node to get + * @param defaultValue the default value given that a value for the node was not found + * @return the message for the specified node. Default if none found + */ + public String getMessageOrDefault(String node, String defaultValue) { + return this.nodes.getOrDefault(node, defaultValue); + } + + /** + * Get the key-value map of nodes to messages + * + * @return node-message map + */ + public Map getMessageNodeMap() { + return ImmutableMap.copyOf(nodes); + } + + /** + * Clear the previous message cache and load new messages directly from file + * + * @return reload messages from file + */ + public boolean reloadMessages() { + if (!this.file.exists()) { + plugin.getLogger().warning("Could not find file for locale " + this.name); + return false; + } + + this.nodes.clear(); // Clear previous data (if any) + + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String line; + for (int lineNumber = 0; (line = reader.readLine()) != null; lineNumber++) { + if (line.isEmpty() || line.startsWith("#") /* Comment */) continue; + + Matcher matcher = NODE_PATTERN.matcher(line); + if (!matcher.find()) { + System.err.println("Invalid locale syntax at (line=" + lineNumber + ")"); + continue; + } + + nodes.put(matcher.group(1), matcher.group(2)); + } + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + } \ No newline at end of file diff --git a/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/utils/SettingsManager.java b/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/utils/SettingsManager.java index f5cfec7..25fd1f1 100644 --- a/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/utils/SettingsManager.java +++ b/EpicHoppers-Plugin/src/main/java/com/songoda/epichoppers/utils/SettingsManager.java @@ -196,37 +196,37 @@ public class SettingsManager implements Listener { } public enum Setting { - o1("Upgrading-enabled", "Main.Allow hopper Upgrading", true), - o2("Upgrade-with-eco", "Main.Upgrade With Economy", true), - o3("Upgrade-with-xp", "Main.Upgrade With XP", true), - o4("Teleport-hoppers", "Main.Allow Players To Teleport Through Hoppers", true), - o6("EnderChest-support", "Main.Support Enderchests", true), - o7("Upgrade-particle-type", "Main.Upgrade Particle Type", "SPELL_WITCH"), - o8("Hop-Tick", "Main.Amount of Ticks Between Hops", 8L), - o9("Tele-Tick", "Main.Amount of Ticks Between Teleport", 10L), - o10("Sync-Timeout", "Main.Timeout When Syncing Hoppers", 300L), - o11("hopper-Limit", "Main.Max Hoppers Per Chunk", -1), - o12("Helpful-Tips", "Main.Display Helpful Tips For Operators", true), - o13("Sounds", "Main.Sounds Enabled", true), - o14("BlockBreak-Particle-Type", "Main.BlockBreak Particle Type", "LAVA"), - o15("BlockBreak-Blacklist", "Main.BlockBreak Blacklisted Blocks", Arrays.asList("BEDROCK")), + o1("Main.Allow hopper Upgrading", true), + o2("Main.Upgrade With Economy", true), + o3("Main.Upgrade With XP", true), + o4("Main.Allow Players To Teleport Through Hoppers", true), + o6("Main.Support Enderchests", true), + o7("Main.Upgrade Particle Type", "WITCH_MAGIC"), + o8("Main.Amount of Ticks Between Hops", 8L), + o9("Main.Amount of Ticks Between Teleport", 10L), + o10("Main.Timeout When Syncing Hoppers", 300L), + o11("Main.Max Hoppers Per Chunk", -1), + o12("Main.Display Helpful Tips For Operators", true), + o13("Main.Sounds Enabled", true), + o14("Main.BlockBreak Particle Type", "LAVA"), + o15("Main.BlockBreak Blacklisted Blocks", Arrays.asList("BEDROCK")), + o16("Interfaces.Replace Glass Type 1 With Rainbow Glass", false), + o17("Interfaces.Economy Icon", "SUNFLOWER"), + o18("Interfaces.XP Icon", "EXPERIENCE_BOTTLE"), + o19("Interfaces.Glass Type 1", 7), + o20("Interfaces.Glass Type 2", 11), + o21("Interfaces.Glass Type 3", 3), - o16("Rainbow-Glass", "Interfaces.Replace Glass Type 1 With Rainbow Glass", false), - o17("ECO-Icon", "Interfaces.Economy Icon", "SUNFLOWER"), - o18("XP-Icon", "Interfaces.XP Icon", "EXPERIENCE_BOTTLE"), - o19("Glass-Type-1", "Interfaces.Glass Type 1", 7), - o20("Glass-Type-2", "Interfaces.Glass Type 2", 11), - o21("Glass-Type-3", "Interfaces.Glass Type 3", 3), + DATABASE_SUPPORT("Database.Activate Mysql Support", false), + DATABASE_IP("Database.IP", "127.0.0.1"), + DATABASE_PORT("Database.Port", 3306), + DATABASE_NAME("Database.Database Name", "EpicHoppers"), + DATABASE_USERNAME("Database.Username", "PUT_USERNAME_HERE"), + DATABASE_PASSWORD("Database.Password", "PUT_PASSWORD_HERE"), - DATABASE_SUPPORT("-", "Database.Activate Mysql Support", false), - DATABASE_IP("-", "Database.IP", "127.0.0.1"), - DATABASE_PORT("-", "Database.Port", 3306), - DATABASE_NAME("-", "Database.Database Name", "EpicHoppers"), - DATABASE_USERNAME("-", "Database.Username", "PUT_USERNAME_HERE"), - DATABASE_PASSWORD("-", "Database.Password", "PUT_PASSWORD_HERE"), - - LANGUGE_MODE("-", "System.Language Mode", "en_US"), - o22("Debug-Mode", "System.Debugger Enabled", false); + DOWNLOAD_FILES("System.Download Needed Data Files", true), + LANGUGE_MODE("System.Language Mode", "en_US"), + o22("System.Debugger Enabled", false); private String setting; private String oldSetting; diff --git a/EpicHoppers-Plugin/src/main/resources/es_ES.lang b/EpicHoppers-Plugin/src/main/resources/es_ES.lang deleted file mode 100644 index e9936b6..0000000 --- a/EpicHoppers-Plugin/src/main/resources/es_ES.lang +++ /dev/null @@ -1,63 +0,0 @@ -#Mensajes Generales - -general.nametag.prefix = "&7[&6TolvasÉpicas&7]" -general.nametag.next = "&9Siguiente" -general.nametag.back = "&9Atrás" -general.nametag.nameformat = "&eNivel %level% &fTolva" - -#Mensajes de Interfaz - -interface.hopper.boostedstats = "&a&lActualmente acelerado!|&7Objetos transferidos multiplicados por &6%amount%x&7.|&7Expira en &6%time%&7." -interface.hopper.upgradewithxp = "&aMejorar con XP" -interface.hopper.upgradewithxplore = "&7Costo: &a%cost% Niveles" -interface.hopper.upgradewitheconomy = "&aMejorar con Dinero" -interface.hopper.upgradewitheconomylore = "&7Costo: &a$%cost%" -interface.hopper.currentlevel = "&6Tolva Nivel &7%level%" -interface.hopper.nextlevel = "&6Siguiente Nivel &7%level%" -interface.hopper.range = "&7Rango: &6%range%" -interface.hopper.amount = "&7Cantidad: &6%amount%" -interface.hopper.teleport = "&7Teletransportación: &6%enabled%" -interface.hopper.filter = "&7Filtro: &6%enabled%" -interface.hopper.crafting = "&7AutoCreación: &6%enabled%" -interface.hopper.suction = "&7Succión: &6%suction%" -interface.hopper.blockbreak = "&7Romper Bloque: &6Cada %ticks% ticks" -interface.hopper.alreadymaxed = "&7Esta tolva ya está al máximo!" -interface.hopper.synclore = "|&7Haz click izquierdo luego haz click en|&7una tolva o un cofre para sincronizar!||&7Haz click derecho para cancelar la sincronización." -interface.hopper.perltitle = "&6Haz click para Teletransportarte" -interface.hopper.perllore2 = "|&7Haz click izquierda para teletransportarte a|&7el final de la cadena.||&7Haz click derecho para cambiar el|&7modo de teletransporte.|&7Actualmente establecido a: &a%type%&7." -interface.hopper.filtertitle = "&cHaz click para Filtrar" -interface.hopper.filterlore = "|&7Esto te permite elegir|&7cuales objetos van adonde." -interface.hopper.craftingtitle = "&cHaz click para instalar la AutoCreación" -interface.hopper.craftinglore = "|&7Esto te permite elegir|&7que objetos esta tolva|&7creará automáticamente." -interface.hopper.synchopper = "&6Haga clic para sincronizar esta tolva" -interface.hopper.rejectsync = "&6Haga clic para sincronizar objetos rechazados" -interface.filter.infotitle = "&aGuía de Filtro" -interface.filter.infolore = "&7Objetos colocados en la parte superior izquierda|&7se añadirán en la lista blanca.||&7Objetos colocados en la parte derecha|&7se anularán.||&7Objetos colocados en la parte inferior izquierda|&7se añadirán a la lista negra.||&cEl uso de la lista blanca desactivará|&clos objetos en lista negra y nulos." -interface.filter.whitelist = "&f&lLista Blanca" -interface.filter.blacklist = "&8&lLista Negra" -interface.filter.void = "&c&lVacío" - -#Mensajes de Comandos - -command.give.success = "&7Has recibido una &7tolva &6nivel %level%&7." - -#Mensajes de Eventos - -event.general.nopermission = "&cNo tienes permitido hacer eso." -event.upgrade.cannotafford = "&cNo puedes pagar esta mejora." -event.upgrade.success = "&7Has mejorado esta tolva a &6nivel %level%&7!" -event.upgrade.maxed = "&7Has llevado esta tolva al máximo con el &6nivel %level%&7." -event.inventory.noroom = "&7No tienes espacio suficiente en tu inventario." -event.hopper.syncsuccess = "&aSincrozado con éxito." -event.hopper.desync = "&7Has cancelado la sincronización de esta tolva." -event.hopper.syncnext = "&7Haz click en otra tolva o contenedor para sincronizar." -event.hopper.syncself = "&cNo puedes sincronizar esta tolva con sí misma." -event.hopper.synctimeout = "&cSe agotó el tiempo de espera." -event.hopper.syncoutofrange = "&cEste bloque está muy lejos de tu tolva." -event.hopper.syncdidnotplace = "&cLo sentimos! Necesitas colocar esta tolva para sincronizarla." -event.hopper.toomany = "&cSolo puedes colocar %amount% tolvas por chunk..." -event.hopper.walkteleenabled = "La teletransportación ha sido activada para esta tolva." -event.hopper.walkteledisabled = "La teletransportación ha sido desactivada en esta tolva." -event.hopper.onlyone = "&cSolo puedes colocar un objeto a la vez." -event.hopper.syncchest = "&7Has sincronizado &9%name% &7con este cofre." -event.hopper.desyncchest = "&7Has cancelado la sincronización de &9%name% &7con este cofre." \ No newline at end of file diff --git a/EpicHoppers-Plugin/src/main/resources/fr_FR.lang b/EpicHoppers-Plugin/src/main/resources/fr_FR.lang deleted file mode 100644 index 1a0b795..0000000 --- a/EpicHoppers-Plugin/src/main/resources/fr_FR.lang +++ /dev/null @@ -1,63 +0,0 @@ -#General Messages - -general.nametag.prefix = "&7[&6EpicHoppers&7]" -general.nametag.next = "&9Suivant" -general.nametag.back = "&9Next" -general.nametag.nameformat = "&fHopper &eLevel %level%" - -#Interface Messages - -interface.hopper.boostedstats = "&a&lActuellement boosté!|&7Taux de transfert d'article multiplié par &6%amount%x&7.|&7Expire dans &6%time%&7." -interface.hopper.upgradewithxp = "&aAmélioration avec l'exp" -interface.hopper.upgradewithxplore = "&7Coût: &a%cost% Levels" -interface.hopper.upgradewitheconomy = "&aAmélioration avec l'économie" -interface.hopper.upgradewitheconomylore = "&7Coût: &a$%cost%" -interface.hopper.currentlevel = "&6Hopper Level &7%level%" -interface.hopper.nextlevel = "&6Level suivant dans &7%level% levels" -interface.hopper.range = "&7Portée: &6%range%" -interface.hopper.amount = "&7Montant: &6%amount%" -interface.hopper.teleport = "&7Teleportation: &6%enabled%" -interface.hopper.filter = "&7Filtre: &6%enabled%" -interface.hopper.crafting = "&7CraftAuto: &6%enabled%" -interface.hopper.suction = "&7Respiration: &6%suction%" -interface.hopper.blockbreak = "&7Blocs cassés: &6Tout les %ticks% ticks" -interface.hopper.alreadymaxed = "&7Ce hopper est déjà au maximum!" -interface.hopper.synclore = "|&7Clic gauche puis cliquez sur un autre|&7hopper ou coffre pour synchro!||&7Clic droit pour désynchro." -interface.hopper.perltitle = "&6Clic pour téléporter" -interface.hopper.perllore2 = "|&7Clic gauche pour téléporter à|&7la fin de la chaîne.||&7Clic droit pour changer de|&7mode de téléportation.|&7Actuellement défini sur: &a%type%&7." -interface.hopper.filtertitle = "&cClic pour filtrer" -interface.hopper.filterlore = "|&7Cela vous permet de choisir|&7quel item va ici." -interface.hopper.craftingtitle = "&cClic pour définir l'AutoCraft" -interface.hopper.craftinglore = "|&7Cela vous permet de choisir|&7quel item ce hopper|&7va craft automatiquement." -interface.hopper.synchopper = "&6Clic pour synchro ce hopper" -interface.hopper.rejectsync = "&6Clic synchro les objets rejetés" -interface.filter.infotitle = "&aGuide de filtrage" -interface.filter.infolore = "&7Items placés dans l'espace supérieur gauche|&7seront placés dans la liste blanche.||&7Items placés à droit |&7willsont nuls.||&7Items placés dans l'espace inférieur gauche|&7seront sur la liste noire.||&cL'activation de la liste blanche désactivera|&cLa liste noire et les nuls" -interface.filter.whitelist = "&f&lListe blanche" -interface.filter.blacklist = "&8&lListe noire" -interface.filter.void = "&c&lVide" - -#Command Messages - -command.give.success = "&7Vous avez reçu un Hopper &6level %level%." - -#Event Messages - -event.general.nopermission = "&cVous n'avez pas la permission." -event.upgrade.cannotafford = "&cVous ne pouvez pas améliorer." -event.upgrade.success = "&7Vous avez amélioré ce hopper &6level %level%&7!" -event.upgrade.maxed = "&7Vous avez maximisé ce hopper au &6level %level%&7." -event.inventory.noroom = "&7vous n'avez pas assez de place dans votre inventaire." -event.hopper.syncsuccess = "&aSynchronisation réussie." -event.hopper.desync = "&7Vous avez déssynchronisé ce hopper." -event.hopper.syncnext = "&7Clic sur un autre coffre ou hopper pour synchro." -event.hopper.syncself = "&cVous ne pouvez pas synchro un hopper avec lui même." -event.hopper.synctimeout = "&cSynchro terminée." -event.hopper.syncoutofrange = "&cCe bloc est hors portée de votre hopper." -event.hopper.syncdidnotplace = "&cDésolé! Vous devez avoir placé ce hopper pour synchroniser les choses avec elle." -event.hopper.toomany = "&cVous pouvez seulement placer %amount% hoppers par chunk..." -event.hopper.walkteleenabled = "Téléportation activée pour ce hopper." -event.hopper.walkteledisabled = "La marche sur la téléportation a été désactivée pour ce hopper." -event.hopper.onlyone = "&cVous ne pouvez placer qu'un seul objet à la fois." -event.hopper.syncchest = "&7Vous avez synchronisé votre &9%name% &7avec ce coffre." -event.hopper.desyncchest = "&7Vous avez déssynchronisé votre &9%name% &7avec ce coffre." \ No newline at end of file diff --git a/EpicHoppers-Plugin/src/main/resources/nl_NL.lang b/EpicHoppers-Plugin/src/main/resources/nl_NL.lang deleted file mode 100644 index 893ce96..0000000 --- a/EpicHoppers-Plugin/src/main/resources/nl_NL.lang +++ /dev/null @@ -1,63 +0,0 @@ -#General Messages - -general.nametag.prefix = "&7[&6EpicHoppers&7]" -general.nametag.next = "&9Volgende" -general.nametag.back = "&9Vorige" -general.nametag.nameformat = "&eTrechter Level %level%" - -#Interface Messages - -interface.hopper.boostedstats = "&a&lMomenteel versterkt!|&7Artikeloverdrachtssnelheid vermenigvuldigd met &6%amount%x&7.|&7Verloopt over &6%time%&7." -interface.hopper.upgradewithxp = "&aUpgrade met XP" -interface.hopper.upgradewithxplore = "&7Kosten: &a%cost% Levels" -interface.hopper.upgradewitheconomy = "&aUpgrade met Geld" -interface.hopper.upgradewitheconomylore = "&7Kosten: &a$%cost%" -interface.hopper.currentlevel = "&6Trechter Niveau &7%level%" -interface.hopper.nextlevel = "&6Volgende Niveau &7%level%" -interface.hopper.range = "&7Bereik: &6%range%" -interface.hopper.amount = "&7Bedrag: &6%amount%" -interface.hopper.teleport = "&7Teleporteren: &6%enabled%" -interface.hopper.filter = "&7Filter: &6%enabled%" -interface.hopper.crafting = "&7Automatische werkbank: &6%enabled%" -interface.hopper.suction = "&7Zuigkracht: &6%suction%" -interface.hopper.blockbreak = "&7Blokken gebroken: &6Elke %ticks% tikken" -interface.hopper.alreadymaxed = "&7Deze trechter is al op het hoogste niveau geupgrade!" -interface.hopper.synclore = "|&7Linker-Klik en klik dan op een andere|&7trechter of kist om het te synchroniseren!||&7Rechts-klik om het te desynchroniseren." -interface.hopper.perltitle = "&6Klik om te teleporteren" -interface.hopper.perllore2 = "|&7Linker-Klik om teleporteren|&7het einde van de ketting.||&7Linker-KLik om te veranderen|&7 naar teleporteer mode.|&7Momenteel ingesteld op: &a%type%&7." -interface.hopper.filtertitle = "&cKlik om te Filteren" -interface.hopper.filterlore = "|&7Dit staat je toe om te kiezen|&7welke items waar naar toe gaan." -interface.hopper.craftingtitle = "&cKlik om Automatische werkbank in te stellen" -interface.hopper.craftinglore = "|&7Dit staat je toe om te kiezen|&7elke item(s) deze trechter|&7automatisch zal maken." -interface.hopper.synchopper = "&6Klik om deze trechter te synchroniseren" -interface.hopper.rejectsync = "&6Klik om verworpen items te synchroniseren" -interface.filter.infotitle = "&aFilter handleiding" -interface.filter.infolore = "&7Items die links bovenin zijn geplaatst|&7worden op de witte lijst gezet.||&7Items zie rechts zijn geplaatst|&7worden verwijderd.||&7Items die links onderin zijn geplaatst|&7worden op de zwarte lijst gezet.||&cDoor de witte lijst te gebruiken|&cwordt zowel de zwarte lijst en de verwijder lijst uitgeschakeld." -interface.filter.whitelist = "&f&lWitte lijst" -interface.filter.blacklist = "&8&lZwarte lijst" -interface.filter.void = "&c&lVerwijder lijst" - -#Command Messages - -command.give.success = "&7Je hebt een &6level %level% &7trechter gekregen." - -#Event Messages - -event.general.nopermission = "&cJe hebt geen toestemming om dat te doen." -event.upgrade.cannotafford = "&cJe kunt deze upgrade niet betalen." -event.upgrade.success = "&7Je hebt deze trechter met succes geüpgraded naar &6level %level%&7!" -event.upgrade.maxed = "&7Je hebt deze trechter geupgrade naar het maximale &6level %level%&7." -event.inventory.noroom = "&7Je hebt hiervoor geen ruimte in je inventaris." -event.hopper.syncsuccess = "&aSynchronisatie geslaagd." -event.hopper.desync = "&7Je hebt deze trechter gedesynchroniseerd." -event.hopper.syncnext = "&7Klik op een andere trechter of container om te synchroniseren." -event.hopper.syncself = "&cJe kunt een trechter niet met zichzelf laten synchroniseren." -event.hopper.synctimeout = "&cSynchronisatie duurde te lang." -event.hopper.syncoutofrange = "&cDit blok is buiten je trechter bereik." -event.hopper.syncdidnotplace = "&cSorry! Je moet deze trechter hebben geplaatst om er dingen mee te synchroniseren." -event.hopper.toomany = "&cJe kunt alleen %amount% trechter per chunk plaatsen..." -event.hopper.walkteleenabled = "Teleporteren is ingeschakeld voor deze trechter." -event.hopper.walkteledisabled = "Teleporteren door te lopen is uitgeschakeld voor deze trechter." -event.hopper.onlyone = "&cJe mag slecht een item per keer plaatsen." -event.hopper.syncchest = "&7Je hebt je &9%name% &7gesynchroniseerd met deze kist." -event.hopper.desyncchest = "&7Je hebt je &9%name% &7gedesynchroniseerd met deze kist." \ No newline at end of file diff --git a/EpicHoppers-Plugin/src/main/resources/pr_FA.lang b/EpicHoppers-Plugin/src/main/resources/pr_FA.lang deleted file mode 100644 index 9a015eb..0000000 --- a/EpicHoppers-Plugin/src/main/resources/pr_FA.lang +++ /dev/null @@ -1,63 +0,0 @@ -#General Messages - -general.nametag.prefix = "&7[&6EpicHoppers&7]" -general.nametag.next = "&9Bad" -general.nametag.back = "&9Ghabl" -general.nametag.nameformat = "&fHopper &eLevel %level%" - -#Interface Messages - -interface.hopper.boostedstats = "&a&lDar hale hazer boost shode ast!|&7Sorat jabejayi item &6%amount%x&7 barabaar shode ast.|&7Zaman Engheza:&6%time%&7." -interface.hopper.upgradewithxp = "&aErtegha ba XP" -interface.hopper.upgradewithxplore = "&7Hazine: &a%cost% level" -interface.hopper.upgradewitheconomy = "&aErtegha ba POOL" -interface.hopper.upgradewitheconomylore = "&7Hazine: &a$%cost%" -interface.hopper.currentlevel = "&6Hopper Level &7%level%" -interface.hopper.nextlevel = "&6Level bad &7%level%" -interface.hopper.range = "&7Mahdode: &6%range%" -interface.hopper.amount = "&7Tedad: &6%amount%" -interface.hopper.teleport = "&7Teleport: &6%enabled%" -interface.hopper.filter = "&7Saafii: &6%enabled%" -interface.hopper.crafting = "&7Sakhtan khodkar: &6%enabled%" -interface.hopper.suction = "&7Makesh: &6%suction%" -interface.hopper.blockbreak = "&7kandan block: &6Har %ticks% tick" -interface.hopper.alreadymaxed = "&7In Hopper be akharin level reside!" -interface.hopper.synclore = "|&7Click chap konid sepas bar roye|&7hopper ya chest baraye etesal click konid!||&7Baraye ghatee etesal click rast konid." -interface.hopper.perltitle = "&6Baraye teleport click konid" -interface.hopper.perllore2 = "|&7Click chap konid baraye teleport shodan|&7be akhar in zanjire.||&7Click rast konid baraye taghir|&7nahve teleport.|&7Dar hale hazer rpye &a%type%&7 gharar darad." -interface.hopper.filtertitle = "&cBaraye Saafii click konid" -interface.hopper.filterlore = "|&7In be shoma ejaze midahad ta entekhab konid|&7kodam item koja beravad." -interface.hopper.craftingtitle = "&cBaraye anjam tanzimat khodkar click konid" -interface.hopper.craftinglore = "|&7In be shoma ejaze midahad ta entekhab konid|&7kodam item dar in hopper|&7be sorat khodkar sakhte shavad." -interface.hopper.synchopper = "&6Baraye motasel kardan in hopper click konid" -interface.hopper.rejectsync = "&6Barae motasel kardan item haye blacklist click konid" -interface.filter.infotitle = "&aAmozesh Saafii" -interface.filter.infolore = "&7Item haye bala samte chap|&7whitelist hastand.||&7Iteem haye samt rast|&7pooch hastand.||&7Item haye payin samte chap|&7blacklist hastand.||&cEstafade kardab az whitelist hengam|&cestefade az blacklist va pooch be sorat ham zaman gheyre faal ast." -interface.filter.whitelist = "&f&lWhite List" -interface.filter.blacklist = "&8&lBlack List" -interface.filter.void = "&c&lPooch" - -#Command Messages - -command.give.success = "&7Shoma Hopper &6level %level% &7gereftid." - -#Event Messages - -event.general.nopermission = "&cShoma ejaze anjam in kar ra nadarid." -event.upgrade.cannotafford = "&cErtegha Emal nashod." -event.upgrade.success = "&7Shoma in Hopper ra be &6level %level%&7 ertegha dadid!" -event.upgrade.maxed = "&7Shoma in Hopper ra be akharin levle ertegha dadid &6level %level%&7." -event.inventory.noroom = "&7Shoma baraye in Hopper fazaye khali dar inventory khod nadarid." -event.hopper.syncsuccess = "&aEtesal ba movafaghiat anjam shod." -event.hopper.desync = "&7Etesal shoma ba movafaghiat ghaat shod." -event.hopper.syncnext = "&7Baraye etesal bar roye Hopper ya Chest click konid." -event.hopper.syncself = "&cShoma nemitavanid Hopper ra be khodash motasel konid." -event.hopper.synctimeout = "&cZaman etesal tamam shod." -event.hopper.syncoutofrange = "&cIn block kharej az mahdode hopper shoma hast." -event.hopper.syncdidnotplace = "&cShoma baraye sync kardan item ebteda bayad Hopper ra begozarid!" -event.hopper.toomany = "&cShoma tanha mitavanid %amount% adad Hopper dar har chunk begozarid." -event.hopper.walkteleenabled = "Teleport baraye in hopper faal shod." -event.hopper.walkteledisabled = "Teleport shodan ba rah raftan baraye in hopper gheyre faal shod." -event.hopper.onlyone = "&cShooma faghat mitavanid yek item daron inja gharar dahid." -event.hopper.syncchest = "&7Shoma &9%name% &7khod ra be in Chest etesal dadid." -event.hopper.desyncchest = "&7Shoma Etesal &9%name% &7ra ba chest ghaat kardid." \ No newline at end of file diff --git a/EpicHoppers-Plugin/src/main/resources/pt_BR.lang b/EpicHoppers-Plugin/src/main/resources/pt_BR.lang deleted file mode 100644 index 4ef814f..0000000 --- a/EpicHoppers-Plugin/src/main/resources/pt_BR.lang +++ /dev/null @@ -1,63 +0,0 @@ -#General Messages - -general.nametag.prefix = "&7[&6EpicHoppers&7]" -general.nametag.next = "&9Prox" -general.nametag.back = "&9Voltar" -general.nametag.nameformat = "&fHopper Nivel &e%level%" - -#Interface Messages - -interface.hopper.boostedstats = "&a&lCurrently boosted!|&7Item transfer rate multiplied by &6%amount%x&7.|&7Expires in &6%time%&7." -interface.hopper.upgradewithxp = "&aUpgrade usando XP" -interface.hopper.upgradewithxplore = "&7Valor: &a%cost% Niveis" -interface.hopper.upgradewitheconomy = "&aUpgrade usando Money" -interface.hopper.upgradewitheconomylore = "&7Valor: &a$%cost%" -interface.hopper.currentlevel = "&6Hopper Nivel &7%level%" -interface.hopper.nextlevel = "&6Prox. Nivel &7%level%" -interface.hopper.range = "&7Alcance: &6%range%" -interface.hopper.amount = "&7Quantidade: &6%amount%" -interface.hopper.teleport = "&7Teleporte: &6%enabled%" -interface.hopper.filter = "&7Filtro: &6%enabled%" -interface.hopper.crafting = "&7AutoCrafting: &6%enabled%" -interface.hopper.suction = "&7Succao: &6%suction%" -interface.hopper.blockbreak = "&7Block Break: &6Every %ticks% ticks" -interface.hopper.alreadymaxed = "&7Esse Hopper esta no maximo!" -interface.hopper.synclore = "|&7Left-Click em seguida, clique em outro|&7funil ou peito para sincronizar!||&7Right-Click para sincronizar." -interface.hopper.perltitle = "&6Clique para teleporta" -interface.hopper.perllore2 = "|&7Left-Click to teleport to|&7the end of the chain.||&7Right-Click to switch the|&7teleport trigger mode.|&7Currently set to: &a%type%&7." -interface.hopper.filtertitle = "&cClique para filtrar" -interface.hopper.filterlore = "|&7Isso permite que você escolha | &7que os itens vão para onde." -interface.hopper.craftingtitle = "&cClique para configurar o AutoCrafting" -interface.hopper.craftinglore = "|&7Isso permite que você escolha | & 7que item este funil | & 7will automaticly craft." -interface.hopper.synchopper = "&6Clique para sincronizar este funil" -interface.hopper.rejectsync = "&6Clique para sincronizar itens rejeitados" -interface.filter.infotitle = "&aGuia de filtro" -interface.filter.infolore = "&7Itens colocados na parte superior esquerda | & 7space serão colocados na lista branca. || & 7Itens colocados à direita | & 7 serão anulados. || & 7Itens colocados na parte inferior esquerda | & 7serão colocados na lista negra || & cUtilizar a lista de permissões desativará | & cboth a lista negra e vazio." -interface.filter.whitelist = "&f&lWhite List" -interface.filter.blacklist = "&8&lBlack List" -interface.filter.void = "&c&lVoid" - -#Command Messages - -command.give.success = "&7Você recebeu um &6Nivel %level% &7Hopper." - -#Event Messages - -event.general.nopermission = "&cVocê não tem permissão para fazer isso." -event.upgrade.cannotafford = "&cVocê não pode permitir esta atualização." -event.upgrade.success = "&7Você atualizou com sucesso este depósito para &6Nivel %level%&7!" -event.upgrade.maxed = "&7Você maximizou este funil em &6Nivel %level%&7." -event.inventory.noroom = "&7Você não tem espaço no seu inventário para isso." -event.hopper.syncsuccess = "&aSincronização bem sucedida." -event.hopper.desync = "&7Você desincronizou este funil." -event.hopper.syncnext = "&7Clique em outro funil ou recipiente para sincronizar." -event.hopper.syncself = "&cVocê não pode sincronizar um funil para si." -event.hopper.synctimeout = "&cA sincronização expirou." -event.hopper.syncoutofrange = "&cEste bloco está fora da sua gama de tremonhas." -event.hopper.syncdidnotplace = "&cDesculpa! Você precisa ter colocado este funil para sincronizar as coisas com ele." -event.hopper.toomany = "&cVocê só pode colocar %amount% hoppers por chunk..." -event.hopper.walkteleenabled = "O teletransporte foi ativado para este funil." -event.hopper.walkteledisabled = "Ande no teleporte foi desativado para este funil." -event.hopper.onlyone = "&cVocê só pode colocar um único item de cada vez." -event.hopper.syncchest = "&7Você sincronizou seu &9%name% &7com esse peito." -event.hopper.desyncchest = "&7Você desincronizou seu &9%name% &7com esse peito." \ No newline at end of file