From c396e70196b2b046ff3b0b1bed64cf39dec0067e Mon Sep 17 00:00:00 2001 From: Frank Baumann Date: Mon, 26 Aug 2013 16:50:27 +0200 Subject: [PATCH] Started with multilanguage support --- config.yml | 3 - src/com/dre/brewery/BPlayer.java | 3 +- src/com/dre/brewery/LanguageReader.java | 145 ++++++++++++++++++ src/com/dre/brewery/P.java | 17 +- src/com/dre/brewery/Wakeup.java | 4 - .../dre/brewery/listeners/BlockListener.java | 2 +- .../brewery/listeners/CommandListener.java | 4 +- 7 files changed, 159 insertions(+), 19 deletions(-) create mode 100644 src/com/dre/brewery/LanguageReader.java diff --git a/config.yml b/config.yml index 8c4c21d..889beb2 100644 --- a/config.yml +++ b/config.yml @@ -18,9 +18,6 @@ homeType: 'cmd: home' # Der Spieler wacht an dem nähesten zweier zufälliger Orte aus seiner Welt auf. enableWake: true -# Der Text, den der Spieler beim Aufwachen sieht -wakeString: 'Ohh nein! Ich kann mich nicht erinnern, wie ich hier hergekommen bin... *hicks*' - # Ob der Spieler sich bei großer Trunkenheit teilweise nicht einloggen kann und kurz warten muss, da sein Charakter nicht reagiert enableLoginDisallow: true diff --git a/src/com/dre/brewery/BPlayer.java b/src/com/dre/brewery/BPlayer.java index 5f19189..fd3230c 100644 --- a/src/com/dre/brewery/BPlayer.java +++ b/src/com/dre/brewery/BPlayer.java @@ -29,7 +29,6 @@ public class BPlayer { public static boolean enableHome; public static boolean enableLoginDisallow; public static boolean enablePuke; - public static String wakeString; public static String homeType; private int quality = 0;// = quality of drunkeness * drunkeness @@ -260,7 +259,7 @@ public class BPlayer { Location randomLoc = Wakeup.getRandom(player.getLocation()); if (randomLoc != null) { player.teleport(randomLoc); - P.p.msg(player, wakeString); + P.p.msg(player, ""); } } diff --git a/src/com/dre/brewery/LanguageReader.java b/src/com/dre/brewery/LanguageReader.java new file mode 100644 index 0000000..3023046 --- /dev/null +++ b/src/com/dre/brewery/LanguageReader.java @@ -0,0 +1,145 @@ +package com.dre.brewery; + +import java.io.File; +import java.io.IOException; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +public class LanguageReader { + private Map entries = new TreeMap(); + private Map defaults = new TreeMap(); + + private File file; + private boolean changed; + + public LanguageReader(File file) { + this.setDefaults(); + + /* Load */ + this.file = file; + + FileConfiguration configFile = YamlConfiguration.loadConfiguration(file); + + Set keySet = configFile.getKeys(false); + for (String key : keySet) { + entries.put(key, configFile.getString(key)); + } + + /* Check */ + this.check(); + } + + private void setDefaults() { + + /* Player */ + defaults.put("Player_BarrelCreated", "Fass erfolgreich erstellt"); + defaults.put("Player_CauldronInfo1", "Dieser Kessel siedet nun seit &v1 Minuten"); + defaults.put("Player_CauldronInfo2", "Dieser Kessel siedet seit weniger als einer Minute"); + defaults.put("Player_DrunkInfo", "Du bist nun &v1% betrunken, mit einer Qualität von &v2"); + defaults.put("Player_CantDrink", "Du kannst nicht mehr trinken"); + defaults.put("Player_Wake", "Ohh nein! Ich kann mich nicht erinnern, wie ich hierhergekommen bin..."); + defaults.put("Player_WakeCreated", "&aAufwachpunkt mit id: &6&v1 &awurde erfolgreich erstellt!"); + defaults.put("Player_WakeNotExist", "&cDer Aufwachpunkt mit der id: &6&v1 &cexistiert nicht!"); + defaults.put("Player_WakeDeleted", "&aDer Aufwachpunkt mit der id: &6&v1 &awurde erfolgreich gelöscht!"); + defaults.put("Player_WakeAlreadyDeleted", "&cDer Aufwachpunkt mit der id: &6&v1 &cwurde bereits gelöscht!"); + defaults.put("Player_WakeFilled", "&cDer Aufwachpunkt mit der id: &6&v1&c An Position &6&v2 &v3, &4, &v5&c ist mit Blöcken gefüllt!"); + defaults.put("Player_WakeNoPoints", "&cEs wurden noch keine Aufwachpunkte erstellt!"); + defaults.put("Player_WakeLast", "&aDies war der letzte Aufwachpunkt"); + defaults.put("Player_WakeTeleport", "Teleport zu Aufwachpunkt mit der id: &6&v1&f An Position: &6&v2 &v3, &4, &v5"); + defaults.put("Player_WakeHint1", "Zum nächsten Aufwachpunkt: Mit Faust in die Luft schlagen"); + defaults.put("Player_WakeHint2", "Zum Abbrechen: &9/br wakeup cancel"); + defaults.put("Player_WakeCancel", "&6Aufwachpunkte-Check wurde abgebrochen"); + defaults.put("Player_WakeNoCheck", "&cEs läuft kein Aufwachpunkte-Check"); + + /* Commands */ + defaults.put("CMD_Reload", "&aConfig wurde neu eingelesen"); + defaults.put("CMD_Player", "&a&v1 ist nun &6&v2% &abetrunken, mit einer Qualität von &6&v3"); + defaults.put("CMD_Player_Error", "&cDie Qualität muss zwischen 1 und 10 liegen!"); + defaults.put("CMD_Info_NotDrunk", "&v1 ist nicht betrunken"); + defaults.put("CMD_Info_Drunkk", "&v1 ist &6&v2% &fbetrunken, mit einer Qualität von &6&v1"); + defaults.put("CMD_Copy_Error", "&6&v1 &cTränke haben nicht mehr in das Inventar gepasst"); + + /* Error */ + defaults.put("Error_NoPermissions", "&cDu hast keine Rechte dies zu tun!"); + defaults.put("Error_UnknownCommand", "Unbekannter Befehl."); + defaults.put("Error_ShowHelp", "benutze &6/br help &fum die Hilfe anzuzeigen"); + defaults.put("Error_PlayerCommand", "&cDieser Befehl kann nur als Spieler ausgeführt werden"); + defaults.put("Error_ItemNotPotion", "&cDas Item in deiner Hand konnte nicht als Trank identifiziert werden"); + + /* Help */ + defaults.put("Help_Help", "&6/br help &9Zeigt eine bestimmte Hilfeseite an"); + defaults.put("Help_Player", "&6/br <%Trunkenheit> &9 Setzt Trunkenheit (und Qualität) eines Spielers"); + defaults.put("Help_Info", "&6/br Info&9 Zeigt deine aktuelle Trunkenheit und Qualität an"); + defaults.put("Help_Copy", "&6/br Copy &9 Kopiert den Trank in deiner Hand"); + defaults.put("Help_Delete", "&6/br Delete &9Entfernt den Trank in deiner Hand"); + defaults.put("Help_InfoOther", "&6/br Info &9 Zeigt die aktuelle Trunkenheit und Qualität von an"); + defaults.put("Help_Wakeup", "&6/br Wakeup List &9 Listet alle Aufwachpunkte auf"); + defaults.put("Help_WakeupList", "&6/br Wakeup List &9 Listet die Aufwachpunkte einer Welt auf"); + defaults.put("Help_WakeupCheck", "&6/br Wakeup Check &9Teleportiert zu allen Aufwachpunkten"); + defaults.put("Help_WakeupCheckSpecific", "&6/br Wakeup Check &9Teleportiert zu einem Aufwachpunkt"); + defaults.put("Help_WakeupAdd", "&6/br Wakeup Add &9Setzt einen Aufwachpunkt"); + defaults.put("Help_WakeupRemove", "&6/br Wakeup Remove &9Entfernt einen Aufwachpunkt"); + defaults.put("Help_Reload", "&6/br reload &9Config neuladen"); + + /* Etc. */ + defaults.put("Etc_Usage", "Benutzung:"); + } + + private void check() { + for (String defaultEntry : defaults.keySet()) { + if (!entries.containsKey(defaultEntry)) { + entries.put(defaultEntry, defaults.get(defaultEntry)); + changed = true; + } + } + } + + public void save() { + if (changed) { + /* Copy old File */ + File source = new File(file.getPath()); + String filePath = file.getPath(); + File temp = new File(filePath.substring(0, filePath.length() - 4) + "_old.yml"); + + if (temp.exists()) + temp.delete(); + + source.renameTo(temp); + + /* Save */ + FileConfiguration configFile = new YamlConfiguration(); + + for (String key : entries.keySet()) { + configFile.set(key, entries.get(key)); + } + + try { + configFile.save(file); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public String get(String key, String... args) { + String entry = entries.get(key); + + if (entry != null) { + int i = 0; + for (String arg : args) { + if (arg != null) { + i++; + entry = entry.replace("&v" + i, arg); + } + } + } else { + entry = "%placeholder%"; + } + + return entry; + } +} diff --git a/src/com/dre/brewery/P.java b/src/com/dre/brewery/P.java index 15e3caa..081674a 100644 --- a/src/com/dre/brewery/P.java +++ b/src/com/dre/brewery/P.java @@ -14,6 +14,7 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.ConfigurationSection; import org.apache.commons.lang.math.NumberUtils; + import net.milkbowl.vault.permission.Permission; import org.bukkit.event.HandlerList; @@ -26,6 +27,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import com.dre.brewery.listeners.*; +import com.dre.managerxl.LanguageReader; public class P extends JavaPlugin { public static P p; @@ -40,6 +42,10 @@ public class P extends JavaPlugin { public InventoryListener inventoryListener; public WorldListener worldListener; + // Language + public String language; + public LanguageReader languageReader; + public Permission permission = null; @Override @@ -49,6 +55,9 @@ public class P extends JavaPlugin { readConfig(); readData(); + // Load LanguageReader + languageReader = new LanguageReader(new File(p.getDataFolder(), "languages/" + language + ".yml")); + initPermissions(); // Listeners @@ -141,7 +150,6 @@ public class P extends JavaPlugin { BPlayer.enableHome = config.getBoolean("enableHome", false); BPlayer.enableLoginDisallow = config.getBoolean("enableLoginDisallow", false); BPlayer.enablePuke = config.getBoolean("enablePuke", false); - BPlayer.wakeString = config.getString("wakeString", "Ohh nein! Ich kann mich nicht erinnern, wie ich hier hergekommen bin..."); BPlayer.homeType = config.getString("homeType", null); Brew.colorInBarrels = config.getBoolean("colorInBarrels", false); Brew.colorInBrewer = config.getBoolean("colorInBrewer", false); @@ -423,11 +431,8 @@ public class P extends JavaPlugin { p.log("Writing Data to File (" + ftime + "ms)"); } - - // Utility - public int parseInt(String string) { return NumberUtils.toInt(string, 0); } @@ -461,7 +466,7 @@ public class P extends JavaPlugin { } // prints a list of Strings at the specified page - public void list (CommandSender sender, ArrayList strings, int page) { + public void list(CommandSender sender, ArrayList strings, int page) { int pages = (int) Math.ceil(strings.size() / 7F); if (page > pages || page < 1) { page = 1; @@ -509,8 +514,6 @@ public class P extends JavaPlugin { return msg; } - - // Runnables public class DrunkRunnable implements Runnable { diff --git a/src/com/dre/brewery/Wakeup.java b/src/com/dre/brewery/Wakeup.java index fc35489..2119629 100644 --- a/src/com/dre/brewery/Wakeup.java +++ b/src/com/dre/brewery/Wakeup.java @@ -12,10 +12,6 @@ public class Wakeup { public static ArrayList wakeups = new ArrayList(); public static P p = P.p; - //public static ChatColor g = ChatColor.GOLD; - //public static ChatColor w = ChatColor.WHITE; - //public static ChatColor r = ChatColor.RED; - //public static ChatColor gr = ChatColor.GREEN; public static int checkId = -1; public static Player checkPlayer = null; diff --git a/src/com/dre/brewery/listeners/BlockListener.java b/src/com/dre/brewery/listeners/BlockListener.java index 50bbd96..859e60a 100644 --- a/src/com/dre/brewery/listeners/BlockListener.java +++ b/src/com/dre/brewery/listeners/BlockListener.java @@ -21,7 +21,7 @@ public class BlockListener implements Listener { if (lines[0].equalsIgnoreCase("Fass")) { if (Barrel.create(event.getBlock())) { - P.p.msg(event.getPlayer(), "Fass erfolgreich erstellt"); + P.p.msg(event.getPlayer(), P.p.languageReader.get("Player_BarrelCreated")); } } } diff --git a/src/com/dre/brewery/listeners/CommandListener.java b/src/com/dre/brewery/listeners/CommandListener.java index e18ad0e..70db3f7 100644 --- a/src/com/dre/brewery/listeners/CommandListener.java +++ b/src/com/dre/brewery/listeners/CommandListener.java @@ -201,7 +201,7 @@ public class CommandListener implements CommandExecutor { Wakeup.remove(sender, id); } else { p.msg(sender, "Benutzung:"); - p.msg(sender, "&6/br Wakeup Remove "); + p.msg(sender, "&6/br wakeup Remove "); } } else if (args[1].equalsIgnoreCase("check")){ @@ -299,7 +299,7 @@ public class CommandListener implements CommandExecutor { while (count > 0) { ItemStack item = brew.copy(hand); if (!(player.getInventory().addItem(item)).isEmpty()) { - P.p.msg(sender, "&6" + count + " &cTränke haben nicht mehr in das Inventar gepasst"); + p.msg(sender, "&6" + count + " &cTränke haben nicht mehr in das Inventar gepasst"); return; } count--;