diff --git a/pom.xml b/pom.xml index 20ba536..10be98f 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,7 @@ src/main/resources/ *.yml + lang/*.yml diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java index 4f86a88..ec89792 100644 --- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java +++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java @@ -16,22 +16,18 @@ */ package com.drtshock.playervaults; -import com.drtshock.playervaults.commands.ConvertCommand; -import com.drtshock.playervaults.commands.DeleteCommand; -import com.drtshock.playervaults.commands.SignCommand; -import com.drtshock.playervaults.commands.SignSetInfo; -import com.drtshock.playervaults.commands.VaultCommand; +import com.drtshock.playervaults.commands.*; import com.drtshock.playervaults.listeners.Listeners; import com.drtshock.playervaults.listeners.SignListener; import com.drtshock.playervaults.listeners.VaultPreloadListener; import com.drtshock.playervaults.tasks.Base64Conversion; import com.drtshock.playervaults.tasks.Cleanup; import com.drtshock.playervaults.tasks.UUIDConversion; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; +import com.drtshock.playervaults.translations.Language; import com.drtshock.playervaults.vaultmanagement.UUIDVaultManager; import com.drtshock.playervaults.vaultmanagement.VaultManager; import com.drtshock.playervaults.vaultmanagement.VaultViewInfo; -import com.google.common.base.Charsets; import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -47,11 +43,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; import java.util.HashMap; import java.util.HashSet; import java.util.Set; @@ -62,8 +54,6 @@ public class PlayerVaults extends JavaPlugin { private static PlayerVaults instance; public static boolean DEBUG = false; - private boolean update = false; - private String newVersion = ""; private final HashMap setSign = new HashMap<>(); // Player name - VaultViewInfo private final HashMap inVault = new HashMap<>(); @@ -255,65 +245,48 @@ public class PlayerVaults extends JavaPlugin { conf.set(path, object); } - private void loadLang() { - File lang = new File(getDataFolder(), "lang.yml"); - OutputStream out = null; - InputStream defLangStream = this.getResource("lang.yml"); - if (!lang.exists()) { - try { - getDataFolder().mkdir(); - lang.createNewFile(); - if (defLangStream != null) { - out = new FileOutputStream(lang); - int read; - byte[] bytes = new byte[1024]; + public void loadLang() { + File folder = new File(getDataFolder(), "lang"); + if (!folder.exists()) { + folder.mkdir(); + } - while ((read = defLangStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(defLangStream, Charsets.UTF_8)); - Lang.setFile(defConfig); - return; - } - } catch (IOException e) { - e.printStackTrace(); // So they notice - getLogger().severe("[PlayerVaults] Couldn't create language file."); - getLogger().severe("[PlayerVaults] This is a fatal error. Now disabling"); - this.setEnabled(false); // Without it loaded, we can't send them messages - } finally { - if (defLangStream != null) { - try { - defLangStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - try { - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } + String definedLanguage = getConfig().getString("language", "english"); - } + // Save as default just incase. + File english = null; + File definedFile = null; + + for (Language lang : Language.values()) { + String fileName = lang.getFriendlyName() + ".yml"; + File file = new File(folder, fileName); + if (lang == Language.ENGLISH) { + english = file; + } + + if (!definedLanguage.equalsIgnoreCase(lang.getFriendlyName())) { + definedFile = file; + } + + // Have Bukkit save the file. + if (!file.exists()) { + saveResource("lang/" + fileName, false); } } - YamlConfiguration conf = YamlConfiguration.loadConfiguration(lang); - for (Lang item : Lang.values()) { - if (conf.getString(item.getPath()) == null) { - conf.set(item.getPath(), item.getDefault()); - } + if (definedFile != null && !definedFile.exists()) { + getLogger().severe("Failed to load language for " + definedLanguage + ". Defaulting to English."); + definedFile = english; } - Lang.setFile(conf); - try { - conf.save(lang); - } catch (IOException e) { - getLogger().log(Level.WARNING, "PlayerVaults: Failed to save lang.yml."); - getLogger().log(Level.WARNING, "PlayerVaults: Report this stack trace to drtshock and gomeow."); - e.printStackTrace(); + if (definedFile == null) { + getLogger().severe("Failed to load custom language settings. Loading plugin defaults. This should never happen, go ask for help."); + return; } + + YamlConfiguration config = YamlConfiguration.loadConfiguration(definedFile); + Lang.setFile(config); + getLogger().info("Loaded lang for " + definedLanguage); } public HashMap getSetSign() { @@ -328,14 +301,6 @@ public class PlayerVaults extends JavaPlugin { return this.openInventories; } - public boolean needsUpdate() { - return this.update; - } - - public String getNewVersion() { - return this.newVersion; - } - public Economy getEconomy() { return this.economy; } @@ -351,6 +316,7 @@ public class PlayerVaults extends JavaPlugin { /** * Get the legacy UUID vault data folder. * Deprecated in favor of base64 data. + * * @return */ @Deprecated @@ -374,6 +340,7 @@ public class PlayerVaults extends JavaPlugin { /** * Tries to get a name from a given String that we hope is a UUID. + * * @param potentialUUID - potential UUID to try to get the name for. * @return the player's name if we can find it, otherwise return what got passed to us. */ diff --git a/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java b/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java index 9fa71a6..10231a6 100644 --- a/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java +++ b/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java @@ -3,7 +3,7 @@ package com.drtshock.playervaults.commands; import com.drtshock.playervaults.PlayerVaults; import com.drtshock.playervaults.converters.BackpackConverter; import com.drtshock.playervaults.converters.Converter; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import com.drtshock.playervaults.vaultmanagement.VaultOperations; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; diff --git a/src/main/java/com/drtshock/playervaults/commands/DeleteCommand.java b/src/main/java/com/drtshock/playervaults/commands/DeleteCommand.java index 81a7874..f653b93 100644 --- a/src/main/java/com/drtshock/playervaults/commands/DeleteCommand.java +++ b/src/main/java/com/drtshock/playervaults/commands/DeleteCommand.java @@ -1,6 +1,6 @@ package com.drtshock.playervaults.commands; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import com.drtshock.playervaults.vaultmanagement.VaultOperations; import org.bukkit.Bukkit; import org.bukkit.ChatColor; diff --git a/src/main/java/com/drtshock/playervaults/commands/SignCommand.java b/src/main/java/com/drtshock/playervaults/commands/SignCommand.java index 3940fdc..f94b3ab 100644 --- a/src/main/java/com/drtshock/playervaults/commands/SignCommand.java +++ b/src/main/java/com/drtshock/playervaults/commands/SignCommand.java @@ -1,7 +1,7 @@ package com.drtshock.playervaults.commands; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/drtshock/playervaults/commands/VaultCommand.java b/src/main/java/com/drtshock/playervaults/commands/VaultCommand.java index deae74c..4e00a32 100644 --- a/src/main/java/com/drtshock/playervaults/commands/VaultCommand.java +++ b/src/main/java/com/drtshock/playervaults/commands/VaultCommand.java @@ -1,7 +1,7 @@ package com.drtshock.playervaults.commands; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import com.drtshock.playervaults.vaultmanagement.VaultManager; import com.drtshock.playervaults.vaultmanagement.VaultOperations; import com.drtshock.playervaults.vaultmanagement.VaultViewInfo; diff --git a/src/main/java/com/drtshock/playervaults/listeners/Listeners.java b/src/main/java/com/drtshock/playervaults/listeners/Listeners.java index 06b37ad..9e904ed 100644 --- a/src/main/java/com/drtshock/playervaults/listeners/Listeners.java +++ b/src/main/java/com/drtshock/playervaults/listeners/Listeners.java @@ -17,7 +17,7 @@ package com.drtshock.playervaults.listeners; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import com.drtshock.playervaults.vaultmanagement.VaultManager; import com.drtshock.playervaults.vaultmanagement.VaultViewInfo; import org.bukkit.Bukkit; @@ -32,7 +32,6 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.Inventory; diff --git a/src/main/java/com/drtshock/playervaults/listeners/SignListener.java b/src/main/java/com/drtshock/playervaults/listeners/SignListener.java index f1bb3de..5a2353a 100644 --- a/src/main/java/com/drtshock/playervaults/listeners/SignListener.java +++ b/src/main/java/com/drtshock/playervaults/listeners/SignListener.java @@ -1,8 +1,7 @@ package com.drtshock.playervaults.listeners; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; -import com.drtshock.playervaults.vaultmanagement.UUIDVaultManager; +import com.drtshock.playervaults.translations.Lang; import com.drtshock.playervaults.vaultmanagement.VaultManager; import com.drtshock.playervaults.vaultmanagement.VaultOperations; import com.drtshock.playervaults.vaultmanagement.VaultViewInfo; diff --git a/src/main/java/com/drtshock/playervaults/util/Lang.java b/src/main/java/com/drtshock/playervaults/translations/Lang.java similarity index 97% rename from src/main/java/com/drtshock/playervaults/util/Lang.java rename to src/main/java/com/drtshock/playervaults/translations/Lang.java index 1bdd67f..f247e51 100644 --- a/src/main/java/com/drtshock/playervaults/util/Lang.java +++ b/src/main/java/com/drtshock/playervaults/translations/Lang.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.drtshock.playervaults.util; +package com.drtshock.playervaults.translations; import org.bukkit.ChatColor; import org.bukkit.configuration.file.YamlConfiguration; @@ -26,7 +26,6 @@ public enum Lang { TITLE("title-name", "&4[&fPlayerVaults&4]:"), OPEN_VAULT("open-vault", "&fOpening vault &a%v"), OPEN_OTHER_VAULT("open-other-vault", "&fOpening vault &a%v &fof &a%p"), - OPEN_WORKBENCH("open-workbench", "&fOpening workbench"), INVALID_ARGS("invalid-args", "&cInvalid args!"), DELETE_VAULT("delete-vault", "&fDeleted vault &a%v"), DELETE_OTHER_VAULT("delete-other-vault", "&fDeleted vault &a%v &fof &a%p"), diff --git a/src/main/java/com/drtshock/playervaults/translations/Language.java b/src/main/java/com/drtshock/playervaults/translations/Language.java new file mode 100644 index 0000000..6ab8c03 --- /dev/null +++ b/src/main/java/com/drtshock/playervaults/translations/Language.java @@ -0,0 +1,17 @@ +package com.drtshock.playervaults.translations; + +public enum Language { + ENGLISH("english"), + BULGARIAN("bulgarian"), + DUTH("dutch"); + + private String friendlyName; + + Language(String friendlyName) { + this.friendlyName = friendlyName; + } + + public String getFriendlyName() { + return this.friendlyName; + } +} diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/EconomyOperations.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/EconomyOperations.java index 0e9a4b5..de3f488 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/EconomyOperations.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/EconomyOperations.java @@ -17,7 +17,7 @@ package com.drtshock.playervaults.vaultmanagement; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import net.milkbowl.vault.economy.EconomyResponse; import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java index e6d8dc9..039ff1b 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java @@ -1,7 +1,7 @@ package com.drtshock.playervaults.vaultmanagement; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java index 70c66aa..777c5a7 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java @@ -1,7 +1,7 @@ package com.drtshock.playervaults.vaultmanagement; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java index eaf012c..08b8a09 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java @@ -17,7 +17,7 @@ package com.drtshock.playervaults.vaultmanagement; import com.drtshock.playervaults.PlayerVaults; -import com.drtshock.playervaults.util.Lang; +import com.drtshock.playervaults.translations.Lang; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8dbc24e..1b69992 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -7,6 +7,11 @@ # Should probably only enabled this if you're working with drtshock to fix something. debug: false +# Lang files can be found in plugins/PlayerVaults/lang/ +# Set the below value to be one of the files in there without .yml +# Currently can use: english, bulgarian, dutch +language: english + # Signs # Do you want to enable signs? # You can checkout the project page for info on what this is if you don't know. diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 531769d..d16e69d 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -5,7 +5,7 @@ # %number is the vault number # %converted is the number of vaults converted (where applicable) # Made with love :) -title-name: "&4[&fPlayerVaults&4]:" +title-name: "&4[&fPlayerVaultsX&4]:" open-vault: "&fOpening vault &a%v" open-other-vault: "&fOpening vault &a%v &fof &a%p" open-workbench: "&fOpening workbench" diff --git a/contrib/lang/bulgarian.yml b/src/main/resources/lang/bulgarian.yml similarity index 100% rename from contrib/lang/bulgarian.yml rename to src/main/resources/lang/bulgarian.yml diff --git a/contrib/lang/dutch.yml b/src/main/resources/lang/dutch.yml similarity index 100% rename from contrib/lang/dutch.yml rename to src/main/resources/lang/dutch.yml diff --git a/src/main/resources/lang/english.yml b/src/main/resources/lang/english.yml new file mode 100644 index 0000000..d16e69d --- /dev/null +++ b/src/main/resources/lang/english.yml @@ -0,0 +1,31 @@ +# Use & for color codes. +# %p is where the player name will get inserted. +# %v is where the vault number will get inserted. +# %price is the price. +# %number is the vault number +# %converted is the number of vaults converted (where applicable) +# Made with love :) +title-name: "&4[&fPlayerVaultsX&4]:" +open-vault: "&fOpening vault &a%v" +open-other-vault: "&fOpening vault &a%v &fof &a%p" +open-workbench: "&fOpening workbench" +delete-vault: "&fDeleted vault &a%v" +delete-other-vault: "&fDeleted vault &a%v &fof &a%p" +player-only: "&cSorry but that can only be run by a player!" +must-be-number: "&cYou need to specify a number between 1-99" +invalid-args: "&cInvalid args!" +delete-vault-error: "&cError deleting vault :(" +no-permissions: "&cYou don't have permission for that!" +insufficient-funds: "&cYou don't have enough money for that!" +refund-amount: "&fYou were refunded &a%price &ffor deleting that vault." +cost-to-create: "&fYou were charged &c%price &ffor creating that vault." +cost-to-open: "&fYou were charged &c%price &ffor opening that vault." +vault-number: "&4Vault #%number" +existing-vaults: "&f%p has vaults: &a%v" +no-player-found: "&cCannot find player &a%p" +plugin-not-found: "&cNo converter found for that plugin" +conversion-complete: "&aConverted %converted players to PlayerVaults" +conversion-background: "&fConversion has been forked to the background. See console for updates." +vaults-locked: "&cVaults are currently locked while conversion occurs. Please try again in a moment!" +help: "/pv " +blocked-item: "&6%m &cis blocked from vaults." \ No newline at end of file