mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 14:46:45 +01:00
Changed to TranslationAPI
This commit is contained in:
parent
b15ccdc789
commit
0a6f2aa357
@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
|
import com.intellectualsites.translation.*;
|
||||||
|
import com.intellectualsites.translation.bukkit.BukkitTranslation;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -231,8 +233,30 @@ public enum C {
|
|||||||
* Info
|
* Info
|
||||||
*/
|
*/
|
||||||
PLOT_INFO_UNCLAIMED("&cPlot &6%s&c is not yet claimed"),
|
PLOT_INFO_UNCLAIMED("&cPlot &6%s&c is not yet claimed"),
|
||||||
PLOT_INFO("&6ID&7: &a%id%&7\n&6Alias&7: &a%alias%\n&6Owner&7: &a%owner%\n&6Helpers&7: &a%helpers%\n&6Trusted&7: &a%trusted%\n&Denied&7: &a%denied%\n&6Denied&7: &a%denied%\n&6Flags&7: &a%flags%\n&6Biome&7: &a%biome%\n&6Rating&7: &a%rating%&7/&a10\n&6Can build&7: &a%build%"),
|
/*PLOT_INFO("" +
|
||||||
|
"&6ID&7: &a%id%&7\n" +
|
||||||
|
"&6Alias&7: &a%alias%\n" +
|
||||||
|
"&6Owner&7: &a%owner%\n" +
|
||||||
|
"&6Helpers&7: &a%helpers%\n" +
|
||||||
|
"&6Trusted&7: &a%trusted%\n" +
|
||||||
|
"&6Denied&7: &a%denied%\n" +
|
||||||
|
"&6Flags&7: &a%flags%\n" +
|
||||||
|
"&6Biome&7: &a%biome%\n" +
|
||||||
|
"&6Rating&7: &a%rating%&7/&a10\n" +
|
||||||
|
"&6Can build&7: &a%build%"
|
||||||
|
),*/
|
||||||
|
PLOT_INFO(
|
||||||
|
"&cID: &6%id%&c, " +
|
||||||
|
"&cAlias: &6%alias%&c, " +
|
||||||
|
"&cOwner: &6%owner%&c, " +
|
||||||
|
"&cBiome: &6%biome%&c, " +
|
||||||
|
"&cCan Build: &6%build%&c, " +
|
||||||
|
"&cRating: &6%rating%&c/&610&c, " +
|
||||||
|
"&cHelpers:&6%helpers%&c, " +
|
||||||
|
"&cTrusted:&6%trusted%&c, " +
|
||||||
|
"&cDenied:&6%denied%&c, " +
|
||||||
|
"&cFlags: &6%flags%"
|
||||||
|
),
|
||||||
PLOT_INFO_HELPERS("&6Helpers&7: %helpers%"),
|
PLOT_INFO_HELPERS("&6Helpers&7: %helpers%"),
|
||||||
PLOT_INFO_TRUSTED("&6Trusted&7: %trusted%"),
|
PLOT_INFO_TRUSTED("&6Trusted&7: %trusted%"),
|
||||||
PLOT_INFO_DENIED("&6Denied&7: %denied%"),
|
PLOT_INFO_DENIED("&6Denied&7: %denied%"),
|
||||||
@ -377,20 +401,11 @@ public enum C {
|
|||||||
*/
|
*/
|
||||||
C(final String d) {
|
C(final String d) {
|
||||||
this.d = d;
|
this.d = d;
|
||||||
if (PlotMain.translations == null) {
|
|
||||||
this.s = d;
|
|
||||||
} else {
|
|
||||||
this.s = PlotMain.translations.getString(this.toString());
|
|
||||||
}
|
|
||||||
if (this.s == null) {
|
if (this.s == null) {
|
||||||
this.s = "";
|
this.s = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Potato {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the default string
|
* Get the default string
|
||||||
*
|
*
|
||||||
@ -407,6 +422,8 @@ public enum C {
|
|||||||
* @return translated if exists else default
|
* @return translated if exists else default
|
||||||
*/
|
*/
|
||||||
public String s() {
|
public String s() {
|
||||||
|
return manager.getTranslated(toString(), TranslationLanguage.englishAmerican).getTranslated().replaceAll("&-", "\n").replaceAll("\\n", "\n");
|
||||||
|
/*
|
||||||
if (PlotMain.translations != null) {
|
if (PlotMain.translations != null) {
|
||||||
final String t = PlotMain.translations.getString(this.toString());
|
final String t = PlotMain.translations.getString(this.toString());
|
||||||
if (t != null) {
|
if (t != null) {
|
||||||
@ -416,7 +433,7 @@ public enum C {
|
|||||||
if (this.s.length() < 1) {
|
if (this.s.length() < 1) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return this.s.replace("\\n", "\n");
|
return this.s.replace("\\n", "\n");*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -426,4 +443,26 @@ public enum C {
|
|||||||
return ChatColor.translateAlternateColorCodes('&', this.s());
|
return ChatColor.translateAlternateColorCodes('&', this.s());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static TranslationManager manager;
|
||||||
|
private static TranslationFile defaultFile;
|
||||||
|
|
||||||
|
public static void setupTranslations() {
|
||||||
|
if (manager == null) {
|
||||||
|
manager = new TranslationManager();
|
||||||
|
}
|
||||||
|
if (defaultFile == null) {
|
||||||
|
defaultFile = new YamlTranslationFile(BukkitTranslation.getParent(PlotMain.getPlugin(PlotMain.class)), TranslationLanguage.englishAmerican, "PlotSquared", manager)
|
||||||
|
.read();
|
||||||
|
}
|
||||||
|
// register everything in this class
|
||||||
|
for (C c : values()) {
|
||||||
|
manager.addTranslationObject(
|
||||||
|
new TranslationObject(c.toString(), c.d, "", "")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveTranslations() {
|
||||||
|
manager.saveAll(defaultFile).saveFile(defaultFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
|
// /
|
||||||
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
|
// it under the terms of the GNU General Public License as published by /
|
||||||
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
@ -1,17 +1,30 @@
|
|||||||
/*
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
* Copyright (c) IntellectualCrafters - 2014. You are not allowed to distribute
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
* and/or monetize any of our intellectual property. IntellectualCrafters is not
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
* affiliated with Mojang AB. Minecraft is a trademark of Mojang AB.
|
// /
|
||||||
*
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
* >> File = PlayerFunctions.java >> Generated by: Citymonstret at 2014-08-09
|
// it under the terms of the GNU General Public License as published by /
|
||||||
* 01:43
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
*/
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.ChatPaginator;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -228,7 +241,15 @@ public class PlayerFunctions {
|
|||||||
* @param plr
|
* @param plr
|
||||||
* @param msg Was used to wrap the chat client length (Packets out--)
|
* @param msg Was used to wrap the chat client length (Packets out--)
|
||||||
*/
|
*/
|
||||||
public static void sendMessageWrapped(final Player plr, final String msg) {
|
public static void sendMessageWrapped(final Player plr, String msg) {
|
||||||
|
if (msg.length() > ChatPaginator.AVERAGE_CHAT_PAGE_WIDTH) {
|
||||||
|
String[] ss = ChatPaginator.wordWrap(msg, ChatPaginator.AVERAGE_CHAT_PAGE_WIDTH);
|
||||||
|
StringBuilder b = new StringBuilder();
|
||||||
|
for (String p : ss) {
|
||||||
|
b.append(p).append("\n ");
|
||||||
|
}
|
||||||
|
msg = b.toString();
|
||||||
|
}
|
||||||
plr.sendMessage(msg);
|
plr.sendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
|
// /
|
||||||
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
|
// it under the terms of the GNU General Public License as published by /
|
||||||
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
@ -83,15 +83,6 @@ public class PlotMain extends JavaPlugin {
|
|||||||
*/
|
*/
|
||||||
public static YamlConfiguration storage;
|
public static YamlConfiguration storage;
|
||||||
public static int storage_ver = 1;
|
public static int storage_ver = 1;
|
||||||
/**
|
|
||||||
* translations.properties
|
|
||||||
*/
|
|
||||||
public static File translationsFile;
|
|
||||||
/**
|
|
||||||
* Contains all translations
|
|
||||||
*/
|
|
||||||
public static YamlConfiguration translations;
|
|
||||||
public static int translations_ver = 1;
|
|
||||||
/**
|
/**
|
||||||
* MySQL Object
|
* MySQL Object
|
||||||
*/
|
*/
|
||||||
@ -581,6 +572,7 @@ public class PlotMain extends JavaPlugin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
C.setupTranslations();
|
||||||
// Setup configurations
|
// Setup configurations
|
||||||
configs();
|
configs();
|
||||||
|
|
||||||
@ -875,7 +867,7 @@ public class PlotMain extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void reloadTranslations() throws IOException {
|
public static void reloadTranslations() throws IOException {
|
||||||
translations = YamlConfiguration.loadConfiguration(translationsFile);
|
C.setupTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long getLastPlayed(final UUID uuid) {
|
public static long getLastPlayed(final UUID uuid) {
|
||||||
@ -926,25 +918,9 @@ public class PlotMain extends JavaPlugin {
|
|||||||
Logger.add(LogLevel.DANGER, "Failed to save storage.yml");
|
Logger.add(LogLevel.DANGER, "Failed to save storage.yml");
|
||||||
System.out.println("Failed to save storage.yml");
|
System.out.println("Failed to save storage.yml");
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
translationsFile = new File(getMain().getDataFolder() + File.separator + "config" + File.separator + "translations.yml");
|
|
||||||
if (!translationsFile.exists()) {
|
|
||||||
if (!translationsFile.createNewFile()) {
|
|
||||||
sendConsoleSenderMessage("Could not create the translations file, please create \"translations.yml\" manually.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
translations = YamlConfiguration.loadConfiguration(translationsFile);
|
|
||||||
setupTranslations();
|
|
||||||
}
|
|
||||||
catch (final Exception err_trans) {
|
|
||||||
Logger.add(LogLevel.DANGER, "Failed to save translations.yml");
|
|
||||||
System.out.println("Failed to save translations.yml");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
config.save(configFile);
|
config.save(configFile);
|
||||||
storage.save(storageFile);
|
storage.save(storageFile);
|
||||||
translations.save(translationsFile);
|
|
||||||
}
|
}
|
||||||
catch (final IOException e) {
|
catch (final IOException e) {
|
||||||
Logger.add(LogLevel.DANGER, "Configuration file saving failed");
|
Logger.add(LogLevel.DANGER, "Configuration file saving failed");
|
||||||
@ -1270,24 +1246,12 @@ public class PlotMain extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* SETUP: translations.properties
|
|
||||||
*/
|
|
||||||
public static void setupTranslations() {
|
|
||||||
translations.set("version", translations_ver);
|
|
||||||
for (final C c : C.values()) {
|
|
||||||
if (!translations.contains(c.toString())) {
|
|
||||||
translations.set(c.toString(), c.s());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On unload
|
* On unload
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
C.saveTranslations();
|
||||||
Logger.add(LogLevel.GENERAL, "Logger disabled");
|
Logger.add(LogLevel.GENERAL, "Logger disabled");
|
||||||
try {
|
try {
|
||||||
Logger.write();
|
Logger.write();
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
|
// /
|
||||||
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
|
// it under the terms of the GNU General Public License as published by /
|
||||||
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,10 +1,23 @@
|
|||||||
/*
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
* Copyright (c) IntellectualCrafters - 2014. You are not allowed to distribute
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
* and/or monetize any of our intellectual property. IntellectualCrafters is not
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
* affiliated with Mojang AB. Minecraft is a trademark of Mojang AB.
|
// /
|
||||||
*
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
* >> File = RUtils.java >> Generated by: Citymonstret at 2014-08-09 01:44
|
// it under the terms of the GNU General Public License as published by /
|
||||||
*/
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
|
@ -1,10 +1,23 @@
|
|||||||
/*
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
* Copyright (c) IntellectualCrafters - 2014. You are not allowed to distribute
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
* and/or monetize any of our intellectual property. IntellectualCrafters is not
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
* affiliated with Mojang AB. Minecraft is a trademark of Mojang AB.
|
// /
|
||||||
*
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
* >> File = Settings.java >> Generated by: Citymonstret at 2014-08-09 01:44
|
// it under the terms of the GNU General Public License as published by /
|
||||||
*/
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
package com.intellectualcrafters.plot;
|
package com.intellectualcrafters.plot;
|
||||||
|
|
||||||
@ -15,31 +28,31 @@ package com.intellectualcrafters.plot;
|
|||||||
* @author Empire92
|
* @author Empire92
|
||||||
*/
|
*/
|
||||||
public class Settings {
|
public class Settings {
|
||||||
|
|
||||||
public static boolean MOB_CAP_ENABLED = false;
|
public static boolean MOB_CAP_ENABLED = false;
|
||||||
public static int MOB_CAP = 20;
|
public static int MOB_CAP = 20;
|
||||||
|
|
||||||
public static boolean TITLES = true;
|
public static boolean TITLES = true;
|
||||||
/**
|
/**
|
||||||
* Schematic Save Path
|
* Schematic Save Path
|
||||||
*/
|
*/
|
||||||
public static String SCHEMATIC_SAVE_PATH = "/var/www/schematics";
|
public static String SCHEMATIC_SAVE_PATH = "/var/www/schematics";
|
||||||
/**
|
/**
|
||||||
* Max allowed plots
|
* Max allowed plots
|
||||||
*/
|
*/
|
||||||
public static int MAX_PLOTS = 20;
|
public static int MAX_PLOTS = 20;
|
||||||
/**
|
/**
|
||||||
* WorldGuard region on claimed plots
|
* WorldGuard region on claimed plots
|
||||||
*/
|
*/
|
||||||
public static boolean WORLDGUARD = false;
|
public static boolean WORLDGUARD = false;
|
||||||
/**
|
/**
|
||||||
* metrics
|
* metrics
|
||||||
*/
|
*/
|
||||||
public static boolean METRICS = true;
|
public static boolean METRICS = true;
|
||||||
/**
|
/**
|
||||||
* plot specific resource pack
|
* plot specific resource pack
|
||||||
*/
|
*/
|
||||||
public static String PLOT_SPECIFIC_RESOURCE_PACK = "";
|
public static String PLOT_SPECIFIC_RESOURCE_PACK = "";
|
||||||
/**
|
/**
|
||||||
* Kill road mobs?
|
* Kill road mobs?
|
||||||
*/
|
*/
|
||||||
@ -47,7 +60,7 @@ public class Settings {
|
|||||||
/**
|
/**
|
||||||
* Default kill road mobs: true
|
* Default kill road mobs: true
|
||||||
*/
|
*/
|
||||||
public static boolean KILL_ROAD_MOBS_DEFAULT = true;
|
public static boolean KILL_ROAD_MOBS_DEFAULT = true;
|
||||||
/**
|
/**
|
||||||
* mob pathfinding?
|
* mob pathfinding?
|
||||||
*/
|
*/
|
||||||
@ -55,31 +68,31 @@ public class Settings {
|
|||||||
/**
|
/**
|
||||||
* Default mob pathfinding: true
|
* Default mob pathfinding: true
|
||||||
*/
|
*/
|
||||||
public static boolean MOB_PATHFINDING_DEFAULT = true;
|
public static boolean MOB_PATHFINDING_DEFAULT = true;
|
||||||
/**
|
/**
|
||||||
* Delete plots on ban?
|
* Delete plots on ban?
|
||||||
*/
|
*/
|
||||||
public static boolean DELETE_PLOTS_ON_BAN = false;
|
public static boolean DELETE_PLOTS_ON_BAN = false;
|
||||||
/**
|
/**
|
||||||
* Verbose?
|
* Verbose?
|
||||||
*/
|
*/
|
||||||
public static boolean DEBUG = true;
|
public static boolean DEBUG = true;
|
||||||
/**
|
/**
|
||||||
* Auto clear enabled
|
* Auto clear enabled
|
||||||
*/
|
*/
|
||||||
public static boolean AUTO_CLEAR = false;
|
public static boolean AUTO_CLEAR = false;
|
||||||
/**
|
/**
|
||||||
* Days until a plot gets cleared
|
* Days until a plot gets cleared
|
||||||
*/
|
*/
|
||||||
public static int AUTO_CLEAR_DAYS = 365;
|
public static int AUTO_CLEAR_DAYS = 365;
|
||||||
/**
|
/**
|
||||||
* API Location
|
* API Location
|
||||||
*/
|
*/
|
||||||
public static String API_URL = "http://www.intellectualsites.com/minecraft.php";
|
public static String API_URL = "http://www.intellectualsites.com/minecraft.php";
|
||||||
/**
|
/**
|
||||||
* Use the custom API
|
* Use the custom API
|
||||||
*/
|
*/
|
||||||
public static boolean CUSTOM_API = true;
|
public static boolean CUSTOM_API = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database settings
|
* Database settings
|
||||||
@ -90,7 +103,7 @@ public class Settings {
|
|||||||
/**
|
/**
|
||||||
* MongoDB enabled?
|
* MongoDB enabled?
|
||||||
*/
|
*/
|
||||||
public static boolean USE_MONGO = false; /*
|
public static boolean USE_MONGO = false; /*
|
||||||
* TODO: Implement Mongo
|
* TODO: Implement Mongo
|
||||||
* @Brandon
|
* @Brandon
|
||||||
*/
|
*/
|
||||||
@ -101,34 +114,34 @@ public class Settings {
|
|||||||
/**
|
/**
|
||||||
* MySQL Enabled?
|
* MySQL Enabled?
|
||||||
*/
|
*/
|
||||||
public static boolean USE_MYSQL = true; /* NOTE: Fixed connector */
|
public static boolean USE_MYSQL = true; /* NOTE: Fixed connector */
|
||||||
/**
|
/**
|
||||||
* SQLite Database name
|
* SQLite Database name
|
||||||
*/
|
*/
|
||||||
public static String SQLITE_DB = "storage";
|
public static String SQLITE_DB = "storage";
|
||||||
/**
|
/**
|
||||||
* MySQL Host name
|
* MySQL Host name
|
||||||
*/
|
*/
|
||||||
public static String HOST_NAME = "localhost";
|
public static String HOST_NAME = "localhost";
|
||||||
/**
|
/**
|
||||||
* MySQL Port
|
* MySQL Port
|
||||||
*/
|
*/
|
||||||
public static String PORT = "3306";
|
public static String PORT = "3306";
|
||||||
/**
|
/**
|
||||||
* MySQL DB
|
* MySQL DB
|
||||||
*/
|
*/
|
||||||
public static String DATABASE = "plot_db";
|
public static String DATABASE = "plot_db";
|
||||||
/**
|
/**
|
||||||
* MySQL User
|
* MySQL User
|
||||||
*/
|
*/
|
||||||
public static String USER = "root";
|
public static String USER = "root";
|
||||||
/**
|
/**
|
||||||
* MySQL Password
|
* MySQL Password
|
||||||
*/
|
*/
|
||||||
public static String PASSWORD = "password";
|
public static String PASSWORD = "password";
|
||||||
/**
|
/**
|
||||||
* MySQL Prefix
|
* MySQL Prefix
|
||||||
*/
|
*/
|
||||||
public static String PREFIX = "";
|
public static String PREFIX = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,14 +114,6 @@ public class PlotAPI {
|
|||||||
return PlotMain.config;
|
return PlotMain.config;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return translation configuration
|
|
||||||
* @see com.intellectualcrafters.plot.PlotMain#translations
|
|
||||||
*/
|
|
||||||
public YamlConfiguration getTranslations() {
|
|
||||||
return PlotMain.translations;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return storage configuration
|
* @return storage configuration
|
||||||
* @see com.intellectualcrafters.plot.PlotMain#storage
|
* @see com.intellectualcrafters.plot.PlotMain#storage
|
||||||
|
@ -67,7 +67,7 @@ public class Debug extends SubCommand {
|
|||||||
//PlotHelper.getWorldFolderSize() + "MB"));
|
//PlotHelper.getWorldFolderSize() + "MB"));
|
||||||
for (final String worldname : PlotMain.getPlotWorlds()) {
|
for (final String worldname : PlotMain.getPlotWorlds()) {
|
||||||
final World world = Bukkit.getWorld(worldname);
|
final World world = Bukkit.getWorld(worldname);
|
||||||
information.append(getLine(line, "World: " + world + " size", PlotHelper.getWorldFolderSize(world)));
|
information.append(getLine(line, "World: " + world.getName() + " size", PlotHelper.getWorldFolderSize(world)));
|
||||||
information.append(getLine(line, " - Entities", PlotHelper.getEntities(world)));
|
information.append(getLine(line, " - Entities", PlotHelper.getEntities(world)));
|
||||||
information.append(getLine(line, " - Loaded Tile Entities", PlotHelper.getTileEntities(world)));
|
information.append(getLine(line, " - Loaded Tile Entities", PlotHelper.getTileEntities(world)));
|
||||||
information.append(getLine(line, " - Loaded Chunks", PlotHelper.getLoadedChunks(world)));
|
information.append(getLine(line, " - Loaded Chunks", PlotHelper.getLoadedChunks(world)));
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translation annotation
|
||||||
|
*
|
||||||
|
* @author Citymonstret
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
public @interface Translation {
|
||||||
|
String description() default "";
|
||||||
|
|
||||||
|
String creationDescription() default "";
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asset
|
||||||
|
*
|
||||||
|
* @author Citymonstret
|
||||||
|
*/
|
||||||
|
public class TranslationAsset {
|
||||||
|
|
||||||
|
private TranslationObject trans;
|
||||||
|
private String translated;
|
||||||
|
private TranslationLanguage lang;
|
||||||
|
|
||||||
|
public TranslationAsset(TranslationObject trans, String translated, TranslationLanguage lang) {
|
||||||
|
this.trans = trans;
|
||||||
|
this.translated = translated;
|
||||||
|
this.lang = lang;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationObject getObject() {
|
||||||
|
return trans;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTranslated() {
|
||||||
|
return translated.replace("\n", "&-");
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationLanguage getLang() {
|
||||||
|
return lang;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract TranslationFile
|
||||||
|
*
|
||||||
|
* @author Citymonstret
|
||||||
|
*/
|
||||||
|
public abstract class TranslationFile {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method used to get the language of the file
|
||||||
|
*
|
||||||
|
* @return language
|
||||||
|
*/
|
||||||
|
public abstract TranslationLanguage getLanguage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the file
|
||||||
|
*/
|
||||||
|
public abstract void saveFile();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read from the file
|
||||||
|
*
|
||||||
|
* @return instance
|
||||||
|
*/
|
||||||
|
public abstract TranslationFile read();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a value
|
||||||
|
*
|
||||||
|
* @param key name
|
||||||
|
* @param value value
|
||||||
|
*/
|
||||||
|
public abstract void add(String key, String value);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
public class TranslationLanguage {
|
||||||
|
|
||||||
|
private String countryCode;
|
||||||
|
private String languageCode;
|
||||||
|
private String friendlyName;
|
||||||
|
|
||||||
|
public TranslationLanguage(String friendlyName, String countryCode, String languageCode) {
|
||||||
|
this.friendlyName = friendlyName;
|
||||||
|
this.countryCode = countryCode;
|
||||||
|
this.languageCode = languageCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return friendlyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCountryCode() {
|
||||||
|
return countryCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLanguageCode() {
|
||||||
|
return languageCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
/* en_US */
|
||||||
|
return languageCode.toLowerCase() + "_" + countryCode.toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final TranslationLanguage englishAmerican
|
||||||
|
= (new TranslationLanguage("American English", "us", "en"));
|
||||||
|
public static final TranslationLanguage englishBritish
|
||||||
|
= (new TranslationLanguage("British English", "gb", "en"));
|
||||||
|
public static final TranslationLanguage swedishSwedish
|
||||||
|
= (new TranslationLanguage("Swedish", "sv", "se"));
|
||||||
|
public static final TranslationLanguage russianRussian
|
||||||
|
= (new TranslationLanguage("Russian", "ru", "ru"));
|
||||||
|
|
||||||
|
|
||||||
|
public static TranslationLanguage[] values() {
|
||||||
|
return new TranslationLanguage[]{
|
||||||
|
englishAmerican,
|
||||||
|
englishBritish,
|
||||||
|
swedishSwedish
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,198 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
import java.io.PrintStream;
|
||||||
|
import java.lang.annotation.Annotation;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translation Manager Main class
|
||||||
|
*
|
||||||
|
* @author Citymonstret
|
||||||
|
*/
|
||||||
|
public class TranslationManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The instance
|
||||||
|
*/
|
||||||
|
private TranslationManager instance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public TranslationManager() {
|
||||||
|
this(new TranslationObject[]{});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Don't use this!
|
||||||
|
*
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public TranslationManager instance() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Objects
|
||||||
|
*/
|
||||||
|
private LinkedList<TranslationObject> translationObjects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The translations
|
||||||
|
*/
|
||||||
|
private LinkedHashMap<String, TranslationAsset> translatedObjects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the translation objects
|
||||||
|
*
|
||||||
|
* @return objects
|
||||||
|
*/
|
||||||
|
public List<TranslationObject> translations() {
|
||||||
|
return translationObjects;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param translationObjects pre-init
|
||||||
|
*/
|
||||||
|
public TranslationManager(TranslationObject[] translationObjects) {
|
||||||
|
this.translationObjects
|
||||||
|
= new LinkedList<TranslationObject>(Arrays.asList(translationObjects));
|
||||||
|
this.translatedObjects
|
||||||
|
= new LinkedHashMap<String, TranslationAsset>();
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an object
|
||||||
|
*
|
||||||
|
* @param t object
|
||||||
|
* @return instance
|
||||||
|
*/
|
||||||
|
public TranslationManager addTranslationObject(TranslationObject t) {
|
||||||
|
translationObjects.add(t);
|
||||||
|
return instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an object
|
||||||
|
*
|
||||||
|
* @param t object
|
||||||
|
* @return instance
|
||||||
|
*/
|
||||||
|
public TranslationManager removeTranslationObject(TranslationObject t) {
|
||||||
|
translationObjects.remove(t);
|
||||||
|
return instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription(String key) {
|
||||||
|
for (TranslationObject o : translations()) {
|
||||||
|
if (o.getKey().equals(key) && !o.getDescription().equals("")) {
|
||||||
|
return "# " + o.getDescription();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationManager addTranslation(TranslationObject t, TranslationAsset a) {
|
||||||
|
return addTranslation(t.getKey(), a);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationManager addTranslation(String key, TranslationAsset a) {
|
||||||
|
String eKey = key + "." + a.getLang().toString();
|
||||||
|
eKey = eKey.toLowerCase();
|
||||||
|
if (translatedObjects.containsKey(eKey))
|
||||||
|
translatedObjects.remove(eKey);
|
||||||
|
translatedObjects.put(eKey, a);
|
||||||
|
return instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationAsset getTranslated(String key, String language) {
|
||||||
|
String eKey = key + "." + language;
|
||||||
|
eKey = eKey.toLowerCase();
|
||||||
|
if (!translatedObjects.containsKey(eKey))
|
||||||
|
return new TranslationAsset(getDefault(key), getDefault(key).getKey(), TranslationLanguage.englishAmerican);
|
||||||
|
return translatedObjects.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationAsset getTranslated(String key, TranslationLanguage language) {
|
||||||
|
String eKey = key + "." + language.toString();
|
||||||
|
eKey = eKey.toLowerCase();
|
||||||
|
if (!translatedObjects.containsKey(eKey)) {
|
||||||
|
return new TranslationAsset(getDefault(key), getDefault(key).getDefaultValue(), TranslationLanguage.englishAmerican);
|
||||||
|
}
|
||||||
|
return translatedObjects.get(eKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationAsset getTranslated(TranslationObject t, TranslationLanguage l) {
|
||||||
|
return getTranslated(t.getKey(), l);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTranslation(String key, TranslationLanguage l) {
|
||||||
|
return getTranslated(key, l).getTranslated();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationObject getDefault(String key) {
|
||||||
|
for (TranslationObject o : translations())
|
||||||
|
if (o.getKey().equals(key.toLowerCase()))
|
||||||
|
return o;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationManager saveAll(TranslationFile file) {
|
||||||
|
for (TranslationObject object : translations()) {
|
||||||
|
TranslationAsset o = getTranslated(object.getKey(), file.getLanguage());
|
||||||
|
file.add(object.getKey(), o.getTranslated());
|
||||||
|
}
|
||||||
|
return instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<TranslationObject> transformEnum(Object[] os) {
|
||||||
|
List<TranslationObject> eList = new ArrayList<TranslationObject>();
|
||||||
|
for (Object o : os) {
|
||||||
|
eList.add(
|
||||||
|
new TranslationObject(o.toString(), o.toString().toLowerCase().replace("_", " "), "", "")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return eList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void scan(Class c, TranslationManager manager) throws IllegalAccessException {
|
||||||
|
Field[] fields = c.getDeclaredFields();
|
||||||
|
Annotation annotation;
|
||||||
|
for (Field field : fields) {
|
||||||
|
if (field.getType() != String.class || (annotation = field.getAnnotation(Translation.class)) == null)
|
||||||
|
continue;
|
||||||
|
Translation t = (Translation) annotation;
|
||||||
|
String key = field.getName();
|
||||||
|
// Make sure we can get the value
|
||||||
|
field.setAccessible(true);
|
||||||
|
String defaultValue = (String) field.get(c);
|
||||||
|
manager.addTranslationObject(
|
||||||
|
new TranslationObject(
|
||||||
|
key,
|
||||||
|
defaultValue,
|
||||||
|
t.description(),
|
||||||
|
t.creationDescription()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationManager debug(PrintStream out) {
|
||||||
|
for (TranslationObject object : translations()) {
|
||||||
|
out.println(object.getKey() + ":");
|
||||||
|
for (TranslationLanguage language : TranslationLanguage.values()) {
|
||||||
|
out.println(language.toString() + ": " + getTranslated(object.getKey(), language).getTranslated());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TranslationManager saveFile(TranslationFile file) {
|
||||||
|
file.saveFile();
|
||||||
|
return instance();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
import com.sun.istack.internal.NotNull;
|
||||||
|
|
||||||
|
public class TranslationObject {
|
||||||
|
|
||||||
|
// can include a suffix | not null
|
||||||
|
private String key;
|
||||||
|
//The default ("no-translation" value) | not null
|
||||||
|
private String defaultValue;
|
||||||
|
// ... "Join message" ... | can be null
|
||||||
|
private String description;
|
||||||
|
// Like a plugin name for example | can be null
|
||||||
|
private String creationDescription;
|
||||||
|
|
||||||
|
public TranslationObject(@NotNull String key, @NotNull String defaultValue, String description, String creationDescription) {
|
||||||
|
if (description == null) {
|
||||||
|
description = "";
|
||||||
|
}
|
||||||
|
if (creationDescription == null) {
|
||||||
|
creationDescription = "";
|
||||||
|
}
|
||||||
|
for (char c : key.toCharArray()) {
|
||||||
|
if (!Character.isDigit(c) && !Character.isAlphabetic(c) && c != '_' && c != '&' && c != '§' && c != ':') {
|
||||||
|
throw new RuntimeException(
|
||||||
|
String.format("Translation: '%s' is invalid (Character: '%s') - Only alphanumeric + (\\, _, &, §, :) charcters are allowed",
|
||||||
|
key, c + ""
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.key = key.toLowerCase();
|
||||||
|
this.defaultValue = defaultValue.replace("\n", "&-");
|
||||||
|
;
|
||||||
|
this.description = description;
|
||||||
|
this.creationDescription = creationDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDefaultValue() {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreationDescription() {
|
||||||
|
return creationDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,216 @@
|
|||||||
|
package com.intellectualsites.translation;
|
||||||
|
|
||||||
|
import org.yaml.snakeyaml.DumperOptions;
|
||||||
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The YAML implementation of TranslationFile
|
||||||
|
* Relies heavily on SnakeYAML
|
||||||
|
*
|
||||||
|
* @author Citymonstret
|
||||||
|
*/
|
||||||
|
public class YamlTranslationFile extends TranslationFile {
|
||||||
|
|
||||||
|
private File path;
|
||||||
|
private TranslationLanguage language;
|
||||||
|
private String name;
|
||||||
|
private File file;
|
||||||
|
private HashMap<String, String> map;
|
||||||
|
private String[] header;
|
||||||
|
private boolean fancyHead = false;
|
||||||
|
private YamlTranslationFile instance;
|
||||||
|
private TranslationManager manager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reload
|
||||||
|
*/
|
||||||
|
public void reload() {
|
||||||
|
this.map = new HashMap<String, String>();
|
||||||
|
this.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param path save path
|
||||||
|
* @param language translation language
|
||||||
|
* @param name project name
|
||||||
|
*/
|
||||||
|
public YamlTranslationFile(File path, TranslationLanguage language, String name, TranslationManager manager) {
|
||||||
|
this.path = path;
|
||||||
|
this.language = language;
|
||||||
|
this.name = name;
|
||||||
|
this.manager = manager;
|
||||||
|
if (!path.exists()) {
|
||||||
|
if (!path.mkdirs()) {
|
||||||
|
throw new RuntimeException("Could not create: " + path.getAbsolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.file = new File(path + File.separator + name + "." + language.toString() + ".yml");
|
||||||
|
if (!file.exists()) {
|
||||||
|
try {
|
||||||
|
if (!file.createNewFile()) {
|
||||||
|
throw new RuntimeException("Could not create: " + file.getName());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
instance = this;
|
||||||
|
this.instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the header
|
||||||
|
*
|
||||||
|
* @param header Comment header
|
||||||
|
* @return instance
|
||||||
|
*/
|
||||||
|
public YamlTranslationFile header(String... header) {
|
||||||
|
this.header = header;
|
||||||
|
this.fancyHead = false;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a fancy header
|
||||||
|
*
|
||||||
|
* @param header Comment header
|
||||||
|
* @return instance
|
||||||
|
*/
|
||||||
|
public YamlTranslationFile fancyHeader(String... header) {
|
||||||
|
final String line = "################################################################################################";
|
||||||
|
final int lineLength = line.length();
|
||||||
|
List<String> strings = new ArrayList<String>();
|
||||||
|
strings.add(line + "\n");
|
||||||
|
for (String s : header) {
|
||||||
|
s = "# " + s;
|
||||||
|
while (s.length() < lineLength - 1) {
|
||||||
|
s = s + " ";
|
||||||
|
}
|
||||||
|
s = s + "#\n";
|
||||||
|
strings.add(s);
|
||||||
|
}
|
||||||
|
strings.add(line + "\n");
|
||||||
|
this.header = strings.toArray(new String[strings.size()]);
|
||||||
|
this.fancyHead = true;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a translation
|
||||||
|
*
|
||||||
|
* @param key translation name
|
||||||
|
* @param value translation value
|
||||||
|
*/
|
||||||
|
public void add(String key, String value) {
|
||||||
|
if (map.containsKey(key))
|
||||||
|
return;
|
||||||
|
map.put(
|
||||||
|
key, value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the translation language
|
||||||
|
*
|
||||||
|
* @return language
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TranslationLanguage getLanguage() {
|
||||||
|
return language;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the file
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void saveFile() {
|
||||||
|
try {
|
||||||
|
FileWriter writer = new FileWriter(file);
|
||||||
|
//String s = getYaml().dump(map);
|
||||||
|
if (header != null && !fancyHead) {
|
||||||
|
for (String head : header) {
|
||||||
|
writer.write("# " + head + "\n");
|
||||||
|
}
|
||||||
|
} else if (header != null && fancyHead) {
|
||||||
|
for (String head : header) {
|
||||||
|
writer.write(head);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int length = map.size();
|
||||||
|
int current = 0;
|
||||||
|
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||||
|
String var = entry.getKey();
|
||||||
|
String val = entry.getValue();
|
||||||
|
String des = manager.getDescription(var);
|
||||||
|
if (des.equals(""))
|
||||||
|
writer.write(var + ": \"" + val + "\"" + (current < length - 1 ? "\n" : ""));
|
||||||
|
else
|
||||||
|
writer.write(des + "\n" + var + ": \"" + val + "\"" + (current < length - 1 ? "\n" : ""));
|
||||||
|
++current;
|
||||||
|
}
|
||||||
|
writer.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* YAML Object
|
||||||
|
*/
|
||||||
|
private Yaml yaml;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the YAML object
|
||||||
|
*
|
||||||
|
* @return yaml object with correct settings
|
||||||
|
*/
|
||||||
|
public Yaml getYaml() {
|
||||||
|
if (yaml == null) {
|
||||||
|
DumperOptions options = new DumperOptions();
|
||||||
|
options.setAllowUnicode(true);
|
||||||
|
options.setPrettyFlow(true);
|
||||||
|
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||||
|
options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED);
|
||||||
|
yaml = new Yaml(options);
|
||||||
|
yaml.setName(name + "." + language.toString());
|
||||||
|
}
|
||||||
|
return yaml;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read the file
|
||||||
|
*
|
||||||
|
* @return instance
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public YamlTranslationFile read() {
|
||||||
|
try {
|
||||||
|
map = (HashMap<String, String>) getYaml().load(new FileReader(file));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if (map == null) {
|
||||||
|
map = new HashMap<String, String>();
|
||||||
|
System.out.println("Was null...");
|
||||||
|
}
|
||||||
|
for (Map.Entry<String, String> objects : map.entrySet()) {
|
||||||
|
String key = objects.getKey();
|
||||||
|
String val = objects.getValue();
|
||||||
|
manager.addTranslation(
|
||||||
|
key,
|
||||||
|
new TranslationAsset(null, val, language)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.intellectualsites.translation.bukkit;
|
||||||
|
|
||||||
|
import com.intellectualsites.translation.TranslationAsset;
|
||||||
|
import com.intellectualsites.translation.TranslationLanguage;
|
||||||
|
import com.intellectualsites.translation.TranslationManager;
|
||||||
|
import com.intellectualsites.translation.TranslationObject;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Citymonstret
|
||||||
|
*/
|
||||||
|
public class BukkitTranslation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the converted string
|
||||||
|
*
|
||||||
|
* @param asset asset
|
||||||
|
* @return converted asset
|
||||||
|
*/
|
||||||
|
public static String convert(TranslationAsset asset) {
|
||||||
|
// In some cases newline can screw stuff up, so I added a new character thing
|
||||||
|
// &- = new line
|
||||||
|
return asset.getTranslated().replace("&-", "\n").replace('&', '§');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the universal parent based on the plugin data folder
|
||||||
|
*
|
||||||
|
* @param plugin to check
|
||||||
|
* @return parent folder
|
||||||
|
*/
|
||||||
|
public static File getParent(JavaPlugin plugin) {
|
||||||
|
return new File(plugin.getDataFolder() + File.separator + "translations");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default translation language
|
||||||
|
*
|
||||||
|
* @return default translation language
|
||||||
|
*/
|
||||||
|
public TranslationLanguage getDefaultLanguage() {
|
||||||
|
return TranslationLanguage.englishAmerican;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add material names to the translation list
|
||||||
|
* Will default to a somewhat friendly name
|
||||||
|
*/
|
||||||
|
public static void addMaterials(TranslationManager manager) {
|
||||||
|
for (Material material : Material.values()) {
|
||||||
|
manager.addTranslationObject(
|
||||||
|
new TranslationObject(material.name(), material.name().replace("_", " ").toLowerCase(), "Material." + material.toString(), "")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.intellectualsites.translation.bukkit;
|
||||||
|
|
||||||
|
import com.intellectualsites.translation.*;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class TranslationPlugin extends JavaPlugin {
|
||||||
|
|
||||||
|
@Translation(description = "Printed when the translator is fully loaded")
|
||||||
|
private static final String TRANSLATOR_LOADED = "The translator has been loaded";
|
||||||
|
|
||||||
|
@Translation(description = "Printed when the translator has been disabled")
|
||||||
|
private static final String TRANSLATOR_DISABLED = "The translator has been disabled";
|
||||||
|
|
||||||
|
private static TranslationManager manager;
|
||||||
|
|
||||||
|
private TranslationFile english;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
// Create a new manager
|
||||||
|
manager = new TranslationManager();
|
||||||
|
// Scan this file for all @Translations
|
||||||
|
try {
|
||||||
|
TranslationManager.scan(TranslationPlugin.class, manager);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
// Now let's create some default files :D
|
||||||
|
english =
|
||||||
|
new YamlTranslationFile(
|
||||||
|
BukkitTranslation.getParent(this),
|
||||||
|
TranslationLanguage.englishAmerican,
|
||||||
|
getName(),
|
||||||
|
manager
|
||||||
|
).read().header("Example file", "@author Citymonstret");
|
||||||
|
// That created the file, read it, and made a default header
|
||||||
|
getLogger().log(Level.INFO, BukkitTranslation.convert(manager.getTranslated("translator_loaded", TranslationLanguage.englishAmerican)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
// Add all translations and save the file
|
||||||
|
manager.saveAll(english).saveFile(english);
|
||||||
|
getLogger().log(Level.INFO, BukkitTranslation.convert(manager.getTranslated("translator_disabled", TranslationLanguage.englishAmerican)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user