From 9a01bf9ab2f9f00c7e86a01c6d78fcb566f3821b Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Sat, 16 Nov 2019 22:37:14 +1000 Subject: [PATCH] When custom files are found, use the base files for default values. --- .../worldedit/command/BiomeCommands.java | 2 +- .../worldedit/command/UtilityCommands.java | 3 ++- .../worldedit/regions/RegionSelector.java | 5 ++++- .../util/translation/TranslationManager.java | 22 ++++++++++++------- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java index a04cbeeb4..5666ba7cf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java @@ -106,7 +106,7 @@ public class BiomeCommands { }) .collect(Collectors.toList())); return paginationBox.create(page); - }, null); + }, (Component) null); } @Command( diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java index d3eb84ea2..21c24cdfe 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java @@ -51,6 +51,7 @@ import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CylinderRegion; import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.util.formatting.component.SubtleFormat; +import com.sk89q.worldedit.util.formatting.text.Component; import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; import com.sk89q.worldedit.util.formatting.text.format.TextColor; @@ -491,7 +492,7 @@ public class UtilityCommands { new double[]{}, WorldEdit.getInstance().getSessionManager().get(actor).getTimeout()); String formatted = Double.isNaN(result) ? "NaN" : formatForLocale(actor.getLocale()).format(result); return SubtleFormat.wrap(input + " = ").append(TextComponent.of(formatted, TextColor.LIGHT_PURPLE)); - }, null); + }, (Component) null); } @Command( diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/RegionSelector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/RegionSelector.java index 2a5bbad69..a12b077da 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/RegionSelector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/RegionSelector.java @@ -19,6 +19,7 @@ package com.sk89q.worldedit.regions; +import com.google.common.collect.Lists; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.extension.platform.Actor; @@ -158,7 +159,9 @@ public interface RegionSelector { * @return a list of lines describing the region */ @Deprecated - List getInformationLines(); + default List getInformationLines() { + return Lists.newArrayList(); + }; /** * Get lines of information about the selection. diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java index a0921b81d..b98cb263e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java @@ -85,20 +85,26 @@ public class TranslationManager { } private Optional> loadTranslationFile(String filename) { + Map baseTranslations; + + try { + baseTranslations = parseTranslationFile(ResourceLoader.getResourceRoot("lang/" + filename)); + } catch (IOException e) { + // Seem to be missing base. If the user has provided a file use that. + baseTranslations = new HashMap<>(); + } + File localFile = worldEdit.getWorkingDirectoryFile("lang/" + filename); if (localFile.exists()) { try { - return Optional.of(parseTranslationFile(localFile)); + baseTranslations.putAll(parseTranslationFile(localFile)); } catch (IOException e) { - return Optional.empty(); - } - } else { - try { - return Optional.of(parseTranslationFile(ResourceLoader.getResourceRoot("lang/" + filename))); - } catch (IOException e) { - return Optional.empty(); + // Failed to parse custom language file. Worth printing. + e.printStackTrace(); } } + + return baseTranslations.size() == 0 ? Optional.empty() : Optional.of(baseTranslations); } private boolean tryLoadTranslations(Locale locale) {