diff --git a/pom.xml b/pom.xml index de8a3c41e..1b1cfa421 100644 --- a/pom.xml +++ b/pom.xml @@ -292,6 +292,13 @@ 1.0.6 compile + + + com.github.apachezy + LangUtils + 3.1.3 + provided + diff --git a/src/main/java/world/bentobox/bentobox/BentoBox.java b/src/main/java/world/bentobox/bentobox/BentoBox.java index 9949b6a39..427a3f279 100644 --- a/src/main/java/world/bentobox/bentobox/BentoBox.java +++ b/src/main/java/world/bentobox/bentobox/BentoBox.java @@ -24,6 +24,7 @@ import world.bentobox.bentobox.hooks.DynmapHook; import world.bentobox.bentobox.hooks.MultiverseCoreHook; import world.bentobox.bentobox.hooks.VaultHook; import world.bentobox.bentobox.hooks.WorldEditHook; +import world.bentobox.bentobox.hooks.LangUtilsHook; import world.bentobox.bentobox.hooks.placeholders.PlaceholderAPIHook; import world.bentobox.bentobox.listeners.BannedCommands; import world.bentobox.bentobox.listeners.BlockEndDragon; @@ -228,6 +229,7 @@ public class BentoBox extends JavaPlugin { // Register additional hooks hooksManager.registerHook(new DynmapHook()); hooksManager.registerHook(new WorldEditHook()); + hooksManager.registerHook(new LangUtilsHook()); webManager = new WebManager(this); diff --git a/src/main/java/world/bentobox/bentobox/hooks/LangUtilsHook.java b/src/main/java/world/bentobox/bentobox/hooks/LangUtilsHook.java new file mode 100644 index 000000000..74f5a8357 --- /dev/null +++ b/src/main/java/world/bentobox/bentobox/hooks/LangUtilsHook.java @@ -0,0 +1,612 @@ +package world.bentobox.bentobox.hooks; + +import com.meowj.langutils.lang.LanguageHelper; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.block.Biome; +import org.bukkit.block.banner.Pattern; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.TropicalFish; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.TropicalFishBucketMeta; +import org.bukkit.plugin.Plugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.potion.PotionType; +import org.jetbrains.annotations.Nullable; +import world.bentobox.bentobox.BentoBox; +import world.bentobox.bentobox.api.hooks.Hook; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.util.Util; + +import java.util.Locale; +import java.util.Map.Entry; +import java.util.logging.Logger; + +/** + * @author ApacheZy + * @since 1.6.0 + */ +@SuppressWarnings("unused") +public class LangUtilsHook extends Hook { + + private static boolean hooked; + + public LangUtilsHook() { + super("LangUtils", Material.BOOK); + } + + private static boolean doHook(Plugin plugin) { + + // Because there are other plugins with the same name, + // we should check here whether it is the plugin we need. + + if (plugin != null && plugin.isEnabled()) { + + String tag = plugin.getConfig().getString("Extra-TAG"); + if ("tag_r72EhIAL".equals(tag)) { + hooked = true; + return true; + } + + Logger logger = BentoBox.getInstance().getLogger(); + logger.warning("This LangUtils version is not available for BentoBox."); + logger.warning("Please go here to download the latest version:"); + logger.warning("https://github.com/apachezy/LangUtils/releases"); + } + + hooked = false; + return false; + } + + @Override + public boolean hook() { + return LangUtilsHook.doHook(getPlugin()); + } + + @Override + public String getFailureCause() { + return "The LangUtils version does not apply to BentoBox."; + } + + /** + * Sometimes it is necessary to check whether "LangUtils" exists + * first to decide what method to use to complete the work. + * + * @return LangUtils is loaded correctly. + */ + public static boolean isHooked() { + return hooked; + } + + private static String getUserLocale(User user) { + return user.getLocale().toLanguageTag(); + } + + /** + * Get the item display name. + * + * If the item contains a custom name, return its custom name. + * If the item itself does not have a custom name, the material + * name will be translated and returned. + * + * @param item The item + * @param user the User's locale will be used for translation. + * @return The Display-Name of the item. + */ + public static String getItemDisplayName(ItemStack item, User user) { + if (hooked) { + return LanguageHelper.getItemDisplayName(item, getUserLocale(user)); + } + ItemMeta meta = item.getItemMeta(); + if (meta != null && meta.hasDisplayName()) { + String dname = meta.getDisplayName(); + if (!dname.isEmpty()) { + return dname; + } + } + return Util.prettifyText(item.getType().name()); + } + + /** + * Name translation of ItemStack. + *

+ * Translate the material names of the items so that players can + * see the names they know well. + * + * @param itemStack the ItemStack whose name will be translated. + * @param user the User's locale will be used for translation. + * @return The translated item name. + */ + public static String getItemName(ItemStack itemStack, User user) { + return hooked + ? LanguageHelper.getItemName(itemStack, getUserLocale(user)) + : Util.prettifyText(itemStack.getType().name()); + } + + /** + * Name translation of Bukkit material. + *

+ * Translate the material names of the items so that players can + * see the names they know well. + * + * @param material the Bukkit material whose name will be translated. + * @param user the User's locale will be used for translation. + * @return The translated material name. + */ + public static String getMaterialName(Material material, User user) { + return hooked + ? LanguageHelper.getMaterialName(material, getUserLocale(user)) + : Util.prettifyText(material.name()); + } + + /** + * Return the display name of the entity. + * + * @param entity The entity + * @param user the User's locale will be used for translation. + * @return The name of the entity + */ + public static String getEntityDisplayName(Entity entity, User user) { + return entity.getCustomName() != null + ? entity.getCustomName() + : getEntityName(entity, user); + } + + /** + * Translate the name of the entity type. + * + * @param entityType the EntityType whose name will be translated. + * @param user the User's locale will be used for translation. + * @return The translated EntityType name. + */ + public static String getEntityName(EntityType entityType, User user) { + return hooked + ? LanguageHelper.getEntityName(entityType, getUserLocale(user)) + : Util.prettifyText(entityType.toString()); + } + + /** + * Translate the name of the entity type. + * + * @param entity the EntityType whose name will be translated. + * @param user the User's locale will be used for translation. + * @return The translated EntityType name. + */ + public static String getEntityName(Entity entity, User user) { + return hooked + ? LanguageHelper.getEntityName(entity, getUserLocale(user)) + : Util.prettifyText(entity.getType().toString()); + } + + /** + * Translate the name of the Biome. + * + * @param biome the Biome whose name will be translated. + * @param user the User's locale will be used for translation. + * @return The translated Biome name. + */ + public static String getBiomeName(Biome biome, User user) { + return hooked + ? LanguageHelper.getBiomeName(biome, getUserLocale(user)) + : Util.prettifyText(biome.name()); + } + + /** + * Return the display name of the enchantment(with level). + * + * @param ench The enchantment. + * @param level The enchantment level. + * @param user The User's locale will be used for translation. + * @return Translated enchanted name with level. + */ + public static String getEnchantDisplayName(Enchantment ench, int level, User user) { + return hooked + ? LanguageHelper.getEnchantmentDisplayName(ench, level, getUserLocale(user)) + : ench.getKey().getKey() + " " + level; + } + + /** + * Return the display name of the enchantment(with level). + * + * @param entry The Entry of an enchantment with level The type + * is {@code Map.Entry} + * @param user The User's locale will be used for translation. + * @return Translated enchanted name with level. + */ + public static String getEnchantDisplayName(Entry entry, User user) { + return hooked + ? LanguageHelper.getEnchantmentDisplayName(entry, getUserLocale(user)) + : entry.getKey().getKey().getKey() + " " + entry.getValue(); + } + + /** + * Return the name of the enchantment. + * + * @param enchant The enchantment. + * @param user The User's locale will be used for translation. + * @return The translated enchant name. + */ + public static String getEnchantName(Enchantment enchant, User user) { + return hooked + ? LanguageHelper.getEnchantmentName(enchant, getUserLocale(user)) + : enchant.getKey().getKey(); + } + + /** + * Return the enchantment level indicated by Roman numerals. + * Can only get Roman numerals within 10. + * + * @param level The enchantment level. + * @param user The user's language will be used for translation. + * @return The converted enchantment level. + */ + public static String getEnchantLevelName(int level, User user) { + return hooked + ? LanguageHelper.getEnchantmentLevelName(level, getUserLocale(user)) + : String.valueOf(level); + } + + /** + * Translate the name of the potion. + * + * @param potionType The type of the potion. + * @param user The user's language will be used for translation. + * @return Translated potion name. + */ + public static String getPotionTypeName(PotionType potionType, User user) { + if (hooked) { + return LanguageHelper.getPotionName(potionType, getUserLocale(user)); + } + switch (potionType) { + case UNCRAFTABLE: return "Uncraftable Potion"; + case WATER: return "Water Bottle"; + case MUNDANE: return "Mundane Potion"; + case THICK: return "Thick Potion"; + case AWKWARD: return "Awkward Potion"; + case NIGHT_VISION: return "Potion of Night Vision"; + case INVISIBILITY: return "Potion of Invisibility"; + case JUMP: return "Potion of Leaping"; + case FIRE_RESISTANCE: return "Potion of Fire Resistance"; + case SPEED: return "Potion of Swiftness"; + case SLOWNESS: return "Potion of Slowness"; + case WATER_BREATHING: return "Potion of Water Breathing"; + case INSTANT_HEAL: return "Potion of Healing"; + case INSTANT_DAMAGE: return "Potion of Harming"; + case POISON: return "Potion of Poison"; + case REGEN: return "Potion of Regeneration"; + case STRENGTH: return "Potion of Strength"; + case WEAKNESS: return "Potion of Weakness"; + case LUCK: return "Potion of Luck"; + case TURTLE_MASTER: return "Potion of the Turtle Master"; + case SLOW_FALLING: return "Potion of Slow Falling"; + default: + return Util.prettifyText(potionType.name()); + } + + } + + /** + * Translate the name of the splash potion. + * + * @param potionType The type of the splash potion. + * @param user The user's language will be used for translation. + * @return Translated splash potion name. + */ + public static String getSplashPotionName(PotionType potionType, User user) { + if (hooked) { + return LanguageHelper.getSplashPotionName(potionType, getUserLocale(user)); + } + switch (potionType) { + case UNCRAFTABLE: return "Splash Uncraftable Potion"; + case WATER: return "Splash Water Bottle"; + case MUNDANE: return "Mundane Splash Potion"; + case THICK: return "Thick Splash Potion"; + case AWKWARD: return "Awkward Splash Potion"; + case NIGHT_VISION: return "Splash Potion of Night Vision"; + case INVISIBILITY: return "Splash Potion of Invisibility"; + case JUMP: return "Splash Potion of Leaping"; + case FIRE_RESISTANCE: return "Splash Potion of Fire Resistance"; + case SPEED: return "Splash Potion of Swiftness"; + case SLOWNESS: return "Splash Potion of Slowness"; + case WATER_BREATHING: return "Splash Potion of Water Breathing"; + case INSTANT_HEAL: return "Splash Potion of Healing"; + case INSTANT_DAMAGE: return "Splash Potion of Harming"; + case POISON: return "Splash Potion of Poison"; + case REGEN: return "Splash Potion of Regeneration"; + case STRENGTH: return "Splash Potion of Strength"; + case WEAKNESS: return "Splash Potion of Weakness"; + case LUCK: return "Splash Potion of Luck"; + case TURTLE_MASTER: return "Splash Potion of the Turtle Master"; + case SLOW_FALLING: return "Splash Potion of Slow Falling"; + default: + return Util.prettifyText(potionType.name()); + } + } + + /** + * Translate the name of the lingering potion. + * + * @param potionType The type of lingering potion. + * @param user The user's language will be used for translation. + * @return Translated lingering potion name. + */ + public static String getLingeringPotionName(PotionType potionType, User user) { + if (hooked) { + return LanguageHelper.getLingeringPotionName(potionType, getUserLocale(user)); + } + switch (potionType) { + case UNCRAFTABLE: return "Lingering Uncraftable Potion"; + case WATER: return "Lingering Water Bottle"; + case MUNDANE: return "Mundane Lingering Potion"; + case THICK: return "Thick Lingering Potion"; + case AWKWARD: return "Awkward Lingering Potion"; + case NIGHT_VISION: return "Lingering Potion of Night Vision"; + case INVISIBILITY: return "Lingering Potion of Invisibility"; + case JUMP: return "Lingering Potion of Leaping"; + case FIRE_RESISTANCE: return "Lingering Potion of Fire Resistance"; + case SPEED: return "Lingering Potion of Swiftness"; + case SLOWNESS: return "Lingering Potion of Slowness"; + case WATER_BREATHING: return "Lingering Potion of Water Breathing"; + case INSTANT_HEAL: return "Lingering Potion of Healing"; + case INSTANT_DAMAGE: return "Lingering Potion of Harming"; + case POISON: return "Lingering Potion of Poison"; + case REGEN: return "Lingering Potion of Regeneration"; + case STRENGTH: return "Lingering Potion of Strength"; + case WEAKNESS: return "Lingering Potion of Weakness"; + case LUCK: return "Lingering Potion of Luck"; + case TURTLE_MASTER: return "Lingering Potion of the Turtle Master"; + case SLOW_FALLING: return "Lingering Potion of Slow Falling"; + default: + return Util.prettifyText(potionType.name()); + } + } + + /** + * Translate the name of the tipped arrow. + * + * @param potionType Potion type of tipped arrow. + * @param user The user's language will be used for translation. + * @return Translated tipped arrow name. + */ + public static String getTippedArrowName(PotionType potionType, User user) { + if (hooked) { + return LanguageHelper.getTippedArrowName(potionType, getUserLocale(user)); + } + switch (potionType) { + case UNCRAFTABLE: return "Uncraftable Tipped Arrow"; + case WATER: return "Arrow of Splashing"; + case MUNDANE: + case THICK: + case AWKWARD: return "Tipped Arrow"; + case NIGHT_VISION: return "Arrow of Night Vision"; + case INVISIBILITY: return "Arrow of Invisibility"; + case JUMP: return "Arrow of Leaping"; + case FIRE_RESISTANCE: return "Arrow of Fire Resistance"; + case SPEED: return "Arrow of Swiftness"; + case SLOWNESS: return "Arrow of Slowness"; + case WATER_BREATHING: return "Arrow of Water Breathing"; + case INSTANT_HEAL: return "Arrow of Healing"; + case INSTANT_DAMAGE: return "Arrow of Harming"; + case POISON: return "Arrow of Poison"; + case REGEN: return "Arrow of Regeneration"; + case STRENGTH: return "Arrow of Strength"; + case WEAKNESS: return "Arrow of Weakness"; + case LUCK: return "Arrow of Luck"; + case TURTLE_MASTER: return "Arrow of the Turtle Master"; + case SLOW_FALLING: return "Arrow of Slow Falling"; + default: + return Util.prettifyText(potionType.name()); + } + } + + /** + * Translate the name of the base effect of the potion. If the PotionType + * has no base effect, the translation of "No Effects" is returned. e.g. + * Water Bottle, Mundane Potion. + * + * @param potionType The basic effect of PotionType. + * @param user The user's language will be used for translation. + * @return Return the translation result. + */ + public static String getPotionBaseEffectName(PotionType potionType, User user) { + if (hooked) { + return LanguageHelper.getPotionBaseEffectName(potionType, getUserLocale(user)); + } + PotionEffectType effectType = potionType.getEffectType(); + if (effectType == null) { + return "No Effects"; + } + return Util.prettifyText(effectType.getName()); + } + + /** + * Translate the name of the potion effect. + * + * @param effectType The potion effect. + * @param user The user's language will be used for translation. + * @return Translated name of potion effect. + */ + public static String getPotionEffectName(PotionEffectType effectType, User user) { + return hooked + ? LanguageHelper.getPotionEffectName(effectType, getUserLocale(user)) + : Util.prettifyText(effectType.getName()); + } + + /** + * Translate the name of the potion level. + * + * @param amplifier The potion level. + * @param user The user's language will be used for translation. + * @return The translated name of the potion level. + */ + public static String getEffectAmplifierName(int amplifier, User user) { + if (hooked) { + return LanguageHelper.getEffectAmplifierName(amplifier, getUserLocale(user)); + } + return amplifier > 0 ? Integer.toString(amplifier) : ""; + } + + /** + * Make the custom potion effect like the player usually sees. + * + * @param effect The potion effect. + * @param user The user's language will be used for translation. + * @return The translated and formatted potion effect name, level, and duration. + */ + public static String getPotionEffectDisplay(PotionEffect effect, User user) { + if (hooked) { + return LanguageHelper.getPotionEffectDisplay(effect, getUserLocale(user)); + } + + String effecName = getPotionEffectName(effect.getType(), user); + String amplifier = getEffectAmplifierName(effect.getAmplifier(), user); + + if (amplifier.length() > 0) { + effecName = effecName + " " + amplifier; + } + + int duration = effect.getDuration(); + if (duration > 20) { + int m = duration / 20 / 60; + int s = duration / 20 % 60; + String time = String.format("%d:%02d", m, s); + effecName = String.format("%s (%s)", effecName, time); + } + + return effecName; + } + + /** + * Translate the type name of tropical fish. + * + * @param fishPattern The type of tropical fish. + * @param user The user's language will be used for translation. + * @return The translated name of the tropical fish type. + */ + public static String getTropicalFishTypeName(TropicalFish.Pattern fishPattern, User user) { + return hooked + ? LanguageHelper.getTropicalFishTypeName(fishPattern, getUserLocale(user)) + : Util.prettifyText(fishPattern.name()); + } + + /** + * Get the names of 22 predefined tropical fish according to the + * 'variant' tag of TropicalFish. + * + * @param meta Metadata carrying information about tropical fish. + * @param user The return value is localized according to the + * user's locale. + * @return If variant is predefined, return the name of the + * tropical fish, otherwise return null. + */ + @Nullable + public static String getPredefinedTropicalFishName(TropicalFishBucketMeta meta, User user) { + if (hooked) { + return LanguageHelper.getPredefinedTropicalFishName(meta, getUserLocale(user)); + } + + if (meta.hasVariant()) { + TropicalFish.Pattern pattern = meta.getPattern(); + + // https://minecraft.gamepedia.com/Tropical_Fish#Entity_data + + int type = pattern.ordinal() > 5 ? 1 : 0; + int patt = pattern.ordinal() % 6; + int bcol = meta.getBodyColor().ordinal(); + int pcol = meta.getPatternColor().ordinal(); + + int variant = (pcol & 255) << 24 | (bcol & 255) << 16 | (patt & 255) << 8 | type; + + switch (variant) { + case 117506305: return "Anemone"; + case 117899265: return "Black Tang"; + case 185008129: return "Blue Tang"; + case 117441793: return "Butterflyfish"; + case 118161664: return "Cichlid"; + case 65536 : return "Clownfish"; + case 50726144 : return "Cotton Candy Betta"; + case 67764993 : return "Dottyback"; + case 234882305: return "Emperor Red Snapper"; + case 67110144 : return "Goatfish"; + case 117441025: return "Moorish Idol"; + case 16778497 : return "Ornate Butterflyfish"; + case 101253888: return "Parrotfish"; + case 50660352 : return "Queen Angelfish"; + case 918529 : return "Red Cichlid"; + case 235340288: return "Red Lipped Blenny"; + case 918273 : return "Red Snapper"; + case 67108865 : return "Threadfin"; + case 917504 : return "Tomato Clownfish"; + case 459008 : return "Triggerfish"; + case 67699456 : return "Yellowtail Parrotfish"; + case 67371009 : return "Yellow Tang"; + default : return null; + } + } + return null; + } + + /** + * Translate the name of the dye color. + * + * @param color The color of the dye. + * @param user The user's language will be used for translation. + * @return The name of the dye color that has been translated. + */ + public static String getDyeColorName(DyeColor color, User user) { + return hooked + ? LanguageHelper.getDyeColorName(color, getUserLocale(user)) + : Util.prettifyText(color.name()); + } + + /** + * Translate merchant's level name. + * + * @param level The merchant's level. + * @param user The user's language will be used for translation. + * @return Translated name of merchant's level. + */ + public static String getVillagerLevelName(int level, User user) { + return hooked + ? LanguageHelper.getVillagerLevelName(level, getUserLocale(user)) + : Integer.toString(level); + } + + /** + * Translate the profession name of the villager. + * + * @param profession The villager's profession. + * @param user The user's language will be used for translation. + * @return The translated profession name of the villager. + */ + public static String getVillagerProfessionName(Villager.Profession profession, User user) { + return hooked + ? LanguageHelper.getVillagerProfessionName(profession, getUserLocale(user)) + : Util.prettifyText(profession.name()); + } + + /** + * Translate the name of the banner pattern. + * + * @param pattern Contains the color banner pattern. + * @param user The user's language will be used for translation. + * @return The translated name of banner pattern. + */ + public static String getBannerPatternName(Pattern pattern, User user) { + String patName; + if (hooked) { + patName = LanguageHelper.getBannerPatternName(pattern, getUserLocale(user)); + } else { + patName = pattern.getColor().name().toLowerCase(Locale.ROOT) + + "_" + + pattern.getPattern().name().toLowerCase(Locale.ROOT); + } + return patName; + } + +} diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoMobLimitTab.java b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoMobLimitTab.java index 0cb242f8c..b4d3179a8 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoMobLimitTab.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoMobLimitTab.java @@ -23,6 +23,7 @@ import world.bentobox.bentobox.api.panels.Tab; import world.bentobox.bentobox.api.panels.TabbedPanel; import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder; import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.hooks.LangUtilsHook; import world.bentobox.bentobox.util.Util; /** @@ -120,7 +121,7 @@ public class GeoMobLimitTab implements Tab, ClickHandler { private PanelItem getPanelItem(EntityType c, User user) { PanelItemBuilder pib = new PanelItemBuilder(); - pib.name(Util.prettifyText(c.toString())); + pib.name(LangUtilsHook.getEntityName(c, user)); pib.clickHandler(this); if (type == EntityLimitTabType.MOB_LIMIT) { if (!BentoBox.getInstance().getIWM().getMobLimitSettings(world).contains(c.name())) { diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/InvincibleVisitorsListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/InvincibleVisitorsListener.java index 0185fa44c..23f219924 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/InvincibleVisitorsListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/worldsettings/InvincibleVisitorsListener.java @@ -82,6 +82,8 @@ public class InvincibleVisitorsListener extends FlagListener implements ClickHan private PanelItem getPanelItem(DamageCause c, User user) { PanelItemBuilder pib = new PanelItemBuilder(); + // todo: Please consider adding translation fields for each entry + // of "DamageCause" in the language file in the future. pib.name(Util.prettifyText(c.toString())); pib.clickHandler(this); if (getIWM().getIvSettings(user.getWorld()).contains(c.name())) { diff --git a/src/main/java/world/bentobox/bentobox/panels/BlueprintManagementPanel.java b/src/main/java/world/bentobox/bentobox/panels/BlueprintManagementPanel.java index 3428323b8..304ae8c79 100644 --- a/src/main/java/world/bentobox/bentobox/panels/BlueprintManagementPanel.java +++ b/src/main/java/world/bentobox/bentobox/panels/BlueprintManagementPanel.java @@ -255,12 +255,27 @@ public class BlueprintManagementPanel { private PanelItem getWorldInstrTile(Environment env) { Material icon; - if (env.equals(Environment.NORMAL)) icon = Material.GRASS_BLOCK; - else if (env.equals(Environment.NETHER)) icon = Material.NETHERRACK; - else icon = Material.END_STONE; + String worldName; + switch (env) { + case NORMAL: + icon = Material.GRASS_BLOCK; + worldName = normalBlueprint.getName(); + break; + case NETHER: + icon = Material.NETHERRACK; + worldName = netherBlueprint.getName(); + break; + case THE_END: + icon = Material.END_STONE; + worldName = endBlueprint.getName(); + break; + default: + icon = Material.STONE; + worldName = Util.prettifyText(env.name()); + } return new PanelItemBuilder() - .name(t("world-name-syntax", TextVariables.NAME, Util.prettifyText(env.name()))) + .name(t("world-name-syntax", TextVariables.NAME, worldName)) .description(t("world-instructions")) .glow(true) .icon(icon) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 253a80375..1ca589839 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -12,7 +12,7 @@ load: STARTUP loadbefore: [Multiverse-Core, Residence] -softdepend: [Vault, PlaceholderAPI, dynmap, WorldEdit, WorldBorderAPI, BsbMongo, WorldGeneratorApi, AdvancedChests] +softdepend: [Vault, PlaceholderAPI, dynmap, WorldEdit, WorldBorderAPI, BsbMongo, WorldGeneratorApi, AdvancedChests, LangUtils] permissions: bentobox.admin: