package com.dre.dungeonsxl; 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() { /* Log */ defaults.put("Log_NewDungeon", "&6New Dungeon"); defaults.put("Log_GenerateNewWorld", "&6Generate new world..."); defaults.put("Log_WorldGenerationFinished", "&6World generation finished!"); defaults.put("Log_Error_MobEnchantment", "&4Error at loading mob.yml: Enchantmet &6&v1&4 doesn't exist!"); defaults.put("Log_Error_MobType", "&4Error at loading mob.yml: Mob &6&v1&4 doesn't exist!"); defaults.put("Log_Error_Spout", "&4Spout wurde nicht gefunden!"); defaults.put("Log_Error_Spout_Skin", "&4Der Spout Skin von &6&v1&4 ist kein png!"); defaults.put("Log_Error_NoConsoleCommand", "&6/dxl &v1&4 kann man nicht als Konsole ausf�hren!"); /* Player */ defaults.put("Player_CheckpointReached", "&6Checkpoint erreicht!"); defaults.put("Player_LootAdded", "&6Deinem Belohnungsinventar sind&4&v1&6 hinzugef�gt worden!"); defaults.put("Player_Ready", "&6Du bist nun bereit f�r den Dungeon!"); defaults.put("Player_FinishedDungeon", "&6Du hast den Dungeon erfolgreich beendet!"); defaults.put("Player_WaitForOtherPlayers", "&6Noch auf Mitspieler warten..."); defaults.put("Player_LeaveGroup", "&6Du hast deine Gruppe erfolgreich verlassen!"); defaults.put("Player_Offline", "&6Spieler &4&v1&6 ging Offline. Er wird in &4&v2&6 Sekunden automatisch aus der Instanz geworfen!"); defaults.put("Player_OfflineNever", "&6Spieler &4&v1&6 ging Offline. Er wird &4nicht&6 automatisch aus der Instanz geworfen!"); defaults.put("Player_LeftGroup", "&6Spieler &4&v1&6 hat die Gruppe verlassen!"); defaults.put("Player_JoinGroup", "&6Spieler &4&v1&6 hat die Gruppe betreten!"); defaults.put("Player_PortalAbort", "&6Portal erstellen abgebrochen!"); defaults.put("Player_PortalIntroduction", "&6W�hle mit dem Holzschwert die zwei Eckpunkte des Portals!"); defaults.put("Player_PortalDeleted", "&6Portal gel�scht!"); defaults.put("Player_PortalProgress", "&6Erster Block gew�hlt, nun der zweite!"); defaults.put("Player_PortalCreated", "&6Portal erstellt!"); defaults.put("Player_SignCreated", "&6Schild erstellt!"); defaults.put("Player_SignCopied", "&6Kopiert!"); defaults.put("Player_BlockInfo", "&6Block-ID: &2&v1"); /* Cmds */ defaults.put("Cmd_Chat_DungeonChat", "&6Du bist nun im Dungeon-Chat"); defaults.put("Cmd_Chat_NormalChat", "&6Du bist nun im �ffentlichen Chat"); defaults.put("Cmd_Chatspy_Stopped", "&6Du hast aufgeh�rt den DXL-Chat auszusp�hen!"); defaults.put("Cmd_Chatspy_Start", "&Du hast begonnen den DXL-Chat auszusp�hen!"); defaults.put("Cmd_Invite_Success", "&6Spieler &4&v1&6 wurde erfolgreich eingeladen am Dungeon &4&v2&6 zu arbeiten!"); defaults.put("Cmd_Leave_Success", "&6Du hast deine Gruppe erfolgreich verlassen!"); defaults.put("Cmd_Msg_Added", "&6Neue Nachricht (&4&v1&6) hinzugef�gt!"); defaults.put("Cmd_Msg_Updated", "&6Nachricht (&4&v1&6) aktualisiert!"); defaults.put("Cmd_Reload_Start", "&6DungeonsXL wird neu geladen"); defaults.put("Cmd_Reload_Done", "&6DungeonsXL erfolgreich neu geladen!"); defaults.put("Cmd_Save_Success", "&6Dungeon erfolgreich gespeichert!"); defaults.put("Cmd_Uninvite_Success", "&4&v1&6 wurde erfolgreich ausgeladen an &4&v1&6 zu arbeiten!"); /* Errors */ defaults.put("Error_Enderchest", "&4Du kannst keine Enderchest in einem Dungeon verwenden!"); defaults.put("Error_Dispenser", "&4Du kannst nicht auf diesen Dispenser zugreifen!"); defaults.put("Error_Ready", "&4W�hle zuerst eine Klasse aus!"); defaults.put("Error_Cooldown", "&4Du kannst den Dungeon nur alle &6&v1&4 Stunden betreten!"); defaults.put("Error_Requirements", "&4Du erf�llst nicht die Anforderungen f�r diesen Dungeon!"); defaults.put("Error_Leftklick", "&4Du musst das Schild mit Links-klick ber�hren!"); defaults.put("Error_Drop", "&4Du kannst keine sicheren Objekte droppen"); defaults.put("Error_Cmd", "&4Befehle sind w�hrend des Dungeons nicht erlaubt!"); defaults.put("Error_NotInGroup", "&4Du musst zuerst einer Gruppe beitreten!"); defaults.put("Error_NoPermissions", "&4Du hast keine Erlaubnis dies zu tun!"); defaults.put("Error_CmdNotExist1", "&4Befehl &6&v1&4 existiert nicht!"); defaults.put("Error_CmdNotExist2", "&4Bitte gib &6/dxl help&4 f�r Hilfe ein!"); defaults.put("Error_NotInDungeon", "&4Du bist in keinem Dungeon!"); defaults.put("Error_DungeonNotExist", "&4Dungeon &6&v1&4 existiert nicht!"); defaults.put("Error_LeaveDungeon", "&4Du musst zuerst den aktuellen Dungeon verlassen!"); defaults.put("Error_NameToLong", "&4Der Name darf nicht l�nger sein als 15 Zeichen!"); defaults.put("Error_LeaveGroup", "&4Du musst zuerst deine Gruppe verlassen!"); defaults.put("Error_NoLeaveInTutorial", "&4Du kannst diesen Befehl nicht in einem Tutorial benutzen!"); defaults.put("Error_MsgIdNotExist", "&4Nachricht mit der Id &6&v1&4 existiert nicht!"); defaults.put("Error_MsgFormat", "&4Die Nachricht muss zwischen \" liegen!"); defaults.put("Error_MsgNoInt", "&4Parameter muss eine Zahl beinhalten!"); defaults.put("Error_TutorialNotExist", "&4Tutorial Dungeon existiert nicht!"); defaults.put("Error_SpoutCraftOnly", "&4Du brauchst SpoutCraft um diesen Dungeon spielen zu k�nnen!"); defaults.put("Error_NoPortal", "&4Du musst ein Portal anschauen!"); defaults.put("Error_NoPlayerCommand", "&6/dxl &v1&4 kann man nicht als Spieler ausf�hren!"); defaults.put("Error_SignWrongFormat", "&4 Das Schild ist nicht im richtigen Format!"); /* Help */ defaults.put("Help_Cmd_Chat", "/dxl chat - �ndert den Chat-Modus"); defaults.put("Help_Cmd_Chatspy", "/dxl chatspy - De/Aktiviert den Spioniermodus"); defaults.put("Help_Cmd_Create", "/dxl create - Erstellt einen neuen Dungeon"); defaults.put("Help_Cmd_Edit", "/dxl edit - Editiere einen existierenden Dungeon"); defaults.put("Help_Cmd_Help", "/dxl help - Zeigt die Hilfeseite an"); defaults.put("Help_Cmd_Invite", "/dxl invite - Ladet einen Spieler dazu ein den Dungeon zu editieren"); defaults.put("Help_Cmd_Leave", "/dxl leave - Verl�sst den aktuellen Dungeon"); defaults.put("Help_Cmd_Escape", "/dxl escape - Verl�sst den Dungeon, ohne ihn zu speichern"); defaults.put("Help_Cmd_List", "/dxl list - Zeigt alle Dungeons an"); defaults.put("Help_Cmd_Msg", "/dxl msg '[msg]' - Zeigt oder editiert eine Nachricht"); defaults.put("Help_Cmd_Portal", "/dxl portal - Erstellt ein Portal welches in Dungeons f�hrt"); defaults.put("Help_Cmd_DeletePortal", "/dxl deleteportal - L�scht das Portal welches du ansiehst"); defaults.put("Help_Cmd_Reload", "/dxl reload - Ladet das Plugin neu"); defaults.put("Help_Cmd_Save", "/dxl save - Speichert den aktuellen Dungeon"); defaults.put("Help_Cmd_Test", "/dxl test [dungeon] - Testet einen Dungeon"); defaults.put("Help_Cmd_Uninvite", "/dxl uninvite - L�dt einen Spieler aus den Dungeon zu editieren"); } 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) { i++; if(arg != null){ entry = entry.replace("&v" + i, arg); } else { entry = entry.replace("&v" + i, "null"); } } } return entry; } }