DungeonsXL/src/com/dre/dungeonsxl/LanguageReader.java
2013-07-29 13:23:09 +02:00

184 lines
8.8 KiB
Java
Raw Blame History

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<String, String> entries = new TreeMap<String, String>();
private Map<String, String> defaults = new TreeMap<String, String>();
private File file;
private boolean changed;
public LanguageReader(File file) {
this.setDefaults();
/* Load */
this.file = file;
FileConfiguration configFile = YamlConfiguration.loadConfiguration(file);
Set<String> 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<73>hren!");
/* Player */
defaults.put("Player_CheckpointReached", "&6Checkpoint erreicht!");
defaults.put("Player_LootAdded", "&6Deinem Belohnungsinventar sind&4&v1&6 hinzugef<65>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<36>hle mit dem Holzschwert die zwei Eckpunkte des Portals!");
defaults.put("Player_PortalDeleted", "&6Portal gel<65>scht!");
defaults.put("Player_PortalProgress", "&6Erster Block gew<65>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 <20>ffentlichen Chat");
defaults.put("Cmd_Chatspy_Stopped", "&6Du hast aufgeh<65>rt den DXL-Chat auszusp<73>hen!");
defaults.put("Cmd_Chatspy_Start", "&Du hast begonnen den DXL-Chat auszusp<73>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<65>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<34>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<72>llst nicht die Anforderungen f<>r diesen Dungeon!");
defaults.put("Error_Leftklick", "&4Du musst das Schild mit Links-klick ber<65>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 <id> 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<73>hren!");
defaults.put("Error_SignWrongFormat", "&4 Das Schild ist nicht im richtigen Format!");
/* Help */
defaults.put("Help_Cmd_Chat", "/dxl chat - <20>ndert den Chat-Modus");
defaults.put("Help_Cmd_Chatspy", "/dxl chatspy - De/Aktiviert den Spioniermodus");
defaults.put("Help_Cmd_Create", "/dxl create <name> - Erstellt einen neuen Dungeon");
defaults.put("Help_Cmd_Edit", "/dxl edit <name> - Editiere einen existierenden Dungeon");
defaults.put("Help_Cmd_Help", "/dxl help - Zeigt die Hilfeseite an");
defaults.put("Help_Cmd_Invite", "/dxl invite <player> <dungeon> - Ladet einen Spieler dazu ein den Dungeon zu editieren");
defaults.put("Help_Cmd_Leave", "/dxl leave - Verl<72>sst den aktuellen Dungeon");
defaults.put("Help_Cmd_Escape", "/dxl escape - Verl<72>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 <id> '[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 <player> <dungeon> - 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;
}
}