diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 2a372d5c6..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,29 +0,0 @@ - - -EssentialsX version (run `/essentials`): - -Server software (run `/version`): - -Server (`logs/latest.log`): - -EssentialsX config (`plugins/Essentials/config.yml`): - -Details: diff --git a/.github/ISSUE_TEMPLATE/help.md b/.github/ISSUE_TEMPLATE/help.md new file mode 100644 index 000000000..4d6afa037 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/help.md @@ -0,0 +1,45 @@ +--- +name: Help! +about: Encountered a problem with EssentialsX? Not sure how to fix it? + +--- + + + +### Information + +Full output of `/ess version`: + + + +**Server log:** + +**EssentialsX config** + +### Help request + +**Problem** + + +**What I have tried** + + +**Screenshots** + diff --git a/.github/ISSUE_TEMPLATE/report-a-bug.md b/.github/ISSUE_TEMPLATE/report-a-bug.md new file mode 100644 index 000000000..e3b382729 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/report-a-bug.md @@ -0,0 +1,58 @@ +--- +name: Report a bug +about: Report an EssentialsX bug. Only use this if you're 100% sure there's something wrong with EssentialsX - otherwise, try "Help!". + +--- + + + +### Information + +**Full output of `/ess version`**: + +``` + +``` + +**Server log**: + +**EssentialsX config**: + +### Details + +**Description** + + +**Steps to reproduce** + + +**Expected behavior** + + +**Screenshots** + diff --git a/.github/ISSUE_TEMPLATE/request-a-feature.md b/.github/ISSUE_TEMPLATE/request-a-feature.md new file mode 100644 index 000000000..8adc6dd90 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/request-a-feature.md @@ -0,0 +1,45 @@ +--- +name: Request a feature +about: Suggest a feature you want to see in EssentialsX! + +--- + + + +### Feature request + +**Feature description** + + +**How the feature is useful** + diff --git a/.gitignore b/.gitignore index 41422ecd4..5cb07e59b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,52 +1,18 @@ -.DS_Store -/BuildAll/nbproject/private/ -/EssentialsProtect/nbproject/private/ -/EssentialsChat/nbproject/private/ -/EssentialsGroupBridge/nbproject/private/ -/EssentialsGeoIP/nbproject/private/ -/EssentialsSpawn/nbproject/private/ -/EssentialsXMPP/nbproject/private/ -/BuildAll/build/ -/EssentialsGroupBridge/dist/ -/EssentialsGroupBridge/build/ -/EssentialsGeoIP/dist/ -/EssentialsGeoIP/build/ -/BuildAll/dist/ -/EssentialsChat/build/ -/EssentialsChat/dist/ -/EssentialsSpawn/build/ -/EssentialsSpawn/dist/ -/EssentialsXMPP/dist/ -/EssentialsXMPP/build/ -/EssentialsProtect/dist/ -/EssentialsProtect/build/ -/EssentialsPermissionsCommands/nbproject/private/ -/EssentialsPermissionsCommands/build/ -/EssentialsPermissionsCommands/dist/ -/Essentials/nbproject/private/ -/Essentials/dist/ -/Essentials/build/ -/YamlAnnotations/ -/EssentialsUpdate/nbproject/private/ -/EssentialsRelease/ -/EssentialsUpdate/dist/ -/EssentialsUpdate/build/ -/WebPush/apikey.php -/WebPush/nbproject/private -/EssentialsAntiBuild/nbproject/private/ -/EssentialsAntiBuild/dist/ -/EssentialsAntiBuild/build/ -/jars -/out -.idea/ -*.iml -*.classpath -*.project -*.settings/ -target/ -dependency-reduced-pom.xml -/Essentials/config.yml -/Essentials/userdata/testplayer1.yml -/Essentials/usermap.csv -/Essentials/userdata -/EssentialsGroupManager/target/ +# IDE files +*.classpath +*.project +*.settings/ +.idea/ +*.iml +.DS_Store + +# Essentials files +/Essentials/userdata +/Essentials/config.yml +/Essentials/kits.yml +/Essentials/userdata/testplayer1.yml +/Essentials/usermap.csv + +# Build files +target/ +jars/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..72777d59f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: java + +cache: + directories: + - .buildtools + - $HOME/.m2 + +before_install: + - chmod +x scripts/buildtools.sh + - scripts/buildtools.sh diff --git a/Essentials/pom.xml b/Essentials/pom.xml index c2e2b8480..6c8864077 100644 --- a/Essentials/pom.xml +++ b/Essentials/pom.xml @@ -6,24 +6,18 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsX - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - - + EssentialsX-${full.version} org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.8.0 false @@ -31,7 +25,7 @@ org.apache.maven.plugins maven-shade-plugin - 1.4 + 3.2.1 package @@ -40,61 +34,48 @@ + + false + + + io.papermc.lib + com.earth2me.essentials.paperlib + + + - - BOSEconomy - BOSEconomy - v0.7.8.1 - system - ${project.basedir}/../lib/BOSEconomy.jar - - - iConomy - iConomy5 - 5 - system - ${project.basedir}/../lib/iCo5.jar - - - iConomy - iConomy6 - 6 - system - ${project.basedir}/../lib/iCo6.jar - - - MultiCurrency - MultiCurrency - 2.2 - system - ${project.basedir}/../lib/MultiCurrency.jar - net.milkbowl.vault - Vault - 1.5.6 + VaultAPI + 1.7 provided + + io.papermc + paperlib + 1.0.2 + compile + net.ess3 NMSProvider - 2.0.1 + 2.16.1 compile net.ess3 UpdatedMetaProvider - 2.0.1 + 2.16.1 compile net.ess3 1_8_R1Provider - 2.0.1 + 2.16.1 compile @@ -106,7 +87,7 @@ net.ess3 1_8_R2Provider - 2.0.1 + 2.16.1 compile @@ -118,26 +99,20 @@ net.ess3 LegacyProvider - 2.0.1 + 2.16.1 compile net.ess3 ReflectionProvider - 2.0.1 + 2.16.1 + compile + + + net.ess3 + FlattenedProvider + 2.16.1 compile - - - org.bukkit - craftbukkit - - - - - vault-repo - http://nexus.hc.to/content/repositories/pub_releases - - diff --git a/Essentials/src/com/earth2me/essentials/Enchantments.java b/Essentials/src/com/earth2me/essentials/Enchantments.java index d71233ee5..05990f152 100644 --- a/Essentials/src/com/earth2me/essentials/Enchantments.java +++ b/Essentials/src/com/earth2me/essentials/Enchantments.java @@ -1,6 +1,6 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.NumberUtil; +import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import java.util.HashMap; @@ -13,6 +13,7 @@ import java.util.Set; public class Enchantments { private static final Map ENCHANTMENTS = new HashMap(); private static final Map ALIASENCHANTMENTS = new HashMap(); + private static boolean isFlat; static { ENCHANTMENTS.put("alldamage", Enchantment.DAMAGE_ALL); @@ -197,14 +198,57 @@ public class Enchantments { ALIASENCHANTMENTS.put("sweeping", sweeping); } } catch (IllegalArgumentException ignored) {} + + + try { // 1.13 + Enchantment loyalty = Enchantment.getByName("LOYALTY"); + if (loyalty != null) { + ENCHANTMENTS.put("loyalty", loyalty); + ALIASENCHANTMENTS.put("loyal", loyalty); + ALIASENCHANTMENTS.put("return", loyalty); + } + Enchantment impaling = Enchantment.getByName("IMPALING"); + if (impaling != null) { + ENCHANTMENTS.put("impaling", impaling); + ALIASENCHANTMENTS.put("impale", impaling); + ALIASENCHANTMENTS.put("oceandamage", impaling); + ALIASENCHANTMENTS.put("oceandmg", impaling); + } + Enchantment riptide = Enchantment.getByName("RIPTIDE"); + if (riptide != null) { + ENCHANTMENTS.put("riptide", riptide); + ALIASENCHANTMENTS.put("rip", riptide); + ALIASENCHANTMENTS.put("tide", riptide); + ALIASENCHANTMENTS.put("launch", riptide); + } + Enchantment channelling = Enchantment.getByName("CHANNELING"); + if (channelling != null) { + ENCHANTMENTS.put("channelling", channelling); + ALIASENCHANTMENTS.put("chanelling", channelling); + ALIASENCHANTMENTS.put("channeling", channelling); + ALIASENCHANTMENTS.put("chaneling", channelling); + ALIASENCHANTMENTS.put("channel", channelling); + } + } catch (IllegalArgumentException ignored) {} + + try { + Class namespacedKeyClass = Class.forName("org.bukkit.NamespacedKey"); + Class enchantmentClass = Class.forName("org.bukkit.enchantments.Enchantment"); + enchantmentClass.getDeclaredMethod("getByKey", namespacedKeyClass); + isFlat = true; + } catch (ClassNotFoundException | NoSuchMethodException e) { + isFlat = false; + } } public static Enchantment getByName(String name) { - Enchantment enchantment; - if (NumberUtil.isInt(name)) { - enchantment = Enchantment.getById(Integer.parseInt(name)); - } else { - enchantment = Enchantment.getByName(name.toUpperCase(Locale.ENGLISH)); + Enchantment enchantment = null; + if (isFlat) { // 1.13+ only + enchantment = Enchantment.getByKey(NamespacedKey.minecraft(name.toLowerCase())); + } + + if (enchantment == null) { + enchantment = Enchantment.getByName(name.toUpperCase()); } if (enchantment == null) { enchantment = ENCHANTMENTS.get(name.toLowerCase(Locale.ENGLISH)); diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 3e7209fa1..31db97ee3 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -18,6 +18,9 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.*; +import com.earth2me.essentials.items.AbstractItemDb; +import com.earth2me.essentials.items.FlatItemDb; +import com.earth2me.essentials.items.LegacyItemDb; import com.earth2me.essentials.metrics.Metrics; import com.earth2me.essentials.perm.PermissionsHandler; import com.earth2me.essentials.register.payment.Methods; @@ -28,6 +31,7 @@ import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.KeywordReplacer; import com.earth2me.essentials.textreader.SimpleTextInput; import com.earth2me.essentials.utils.DateUtil; +import com.earth2me.essentials.utils.VersionUtil; import com.google.common.base.Function; import com.google.common.base.Throwables; import com.google.common.collect.Iterables; @@ -37,17 +41,17 @@ import net.ess3.api.ISettings; import net.ess3.nms.PotionMetaProvider; import net.ess3.nms.SpawnEggProvider; import net.ess3.nms.SpawnerProvider; +import net.ess3.nms.flattened.FlatSpawnEggProvider; import net.ess3.nms.legacy.LegacyPotionMetaProvider; +import net.ess3.nms.legacy.LegacySpawnEggProvider; +import net.ess3.nms.legacy.LegacySpawnerProvider; import net.ess3.nms.refl.ReflSpawnEggProvider; import net.ess3.nms.updatedmeta.BasePotionDataProvider; import net.ess3.nms.updatedmeta.BlockMetaSpawnerProvider; -import net.ess3.nms.legacy.LegacySpawnEggProvider; -import net.ess3.nms.legacy.LegacySpawnerProvider; import net.ess3.nms.v1_8_R1.v1_8_R1SpawnerProvider; import net.ess3.nms.v1_8_R2.v1_8_R2SpawnerProvider; import net.ess3.providers.ProviderFactory; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.block.Block; @@ -60,19 +64,19 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldUnloadEvent; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.InvalidDescriptionException; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPluginLoader; -import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitTask; import org.yaml.snakeyaml.error.YAMLException; import java.io.File; -import java.io.FileReader; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -92,7 +96,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { private transient Worth worth; private transient List confList; private transient Backup backup; - private transient ItemDb itemDb; + private transient AbstractItemDb itemDb; private transient final Methods paymentMethod = new Methods(); private transient PermissionsHandler permissionsHandler; private transient AlternativeCommandsHandler alternativeCommandsHandler; @@ -101,11 +105,12 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { private transient I18n i18n; private transient Metrics metrics; private transient EssentialsTimer timer; - private final transient List vanishedPlayers = new ArrayList<>(); + private final transient Set vanishedPlayers = new LinkedHashSet<>(); private transient Method oldGetOnlinePlayers; private transient SpawnerProvider spawnerProvider; private transient SpawnEggProvider spawnEggProvider; private transient PotionMetaProvider potionMetaProvider; + private transient Kits kits; public Essentials() { } @@ -150,6 +155,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { confList = new ArrayList<>(); jails = new Jails(this); registerListeners(server.getPluginManager()); + kits = new Kits(this); } @Override @@ -166,6 +172,10 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { Console.setInstance(this); + if (!VersionUtil.isServerSupported()) { + getLogger().severe(tl("serverUnsupported")); + } + final PluginManager pm = getServer().getPluginManager(); for (Plugin plugin : pm.getPlugins()) { if (plugin.getDescription().getName().startsWith("Essentials") && !plugin.getDescription().getVersion().equals(this.getDescription().getVersion()) && !plugin.getDescription().getName().equals("EssentialsAntiCheat")) { @@ -186,25 +196,38 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { final EssentialsUpgrade upgrade = new EssentialsUpgrade(this); upgrade.beforeSettings(); execTimer.mark("Upgrade"); + confList = new ArrayList<>(); settings = new Settings(this); confList.add(settings); execTimer.mark("Settings"); + userMap = new UserMap(this); confList.add(userMap); execTimer.mark("Init(Usermap)"); + + kits = new Kits(this); + confList.add(kits); + upgrade.convertKits(); + execTimer.mark("Kits"); + upgrade.afterSettings(); execTimer.mark("Upgrade2"); + warps = new Warps(getServer(), this.getDataFolder()); confList.add(warps); execTimer.mark("Init(Spawn/Warp)"); + worth = new Worth(this.getDataFolder()); confList.add(worth); - itemDb = new ItemDb(this); + itemDb = getItemDbFromConfig(); confList.add(itemDb); execTimer.mark("Init(Worth/ItemDB)"); + jails = new Jails(this); confList.add(jails); + execTimer.mark("Init(Jails)"); + spawnerProvider = new ProviderFactory<>(getLogger(), Arrays.asList( BlockMetaSpawnerProvider.class, @@ -214,6 +237,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { ), "mob spawner").getProvider(); spawnEggProvider = new ProviderFactory<>(getLogger(), Arrays.asList( + FlatSpawnEggProvider.class, ReflSpawnEggProvider.class, LegacySpawnEggProvider.class ), "spawn egg").getProvider(); @@ -222,7 +246,12 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { BasePotionDataProvider.class, LegacyPotionMetaProvider.class ), "potion meta").getProvider(); + execTimer.mark("Init(Providers)"); reload(); + + // The item spawn blacklist is loaded with all other settings, before the item + // DB, but it depends on the item DB, so we need to reload it again here: + ((Settings) settings)._lateLoadItemSpawnBlacklist(); } catch (YAMLException exception) { if (pm.getPlugin("EssentialsUpdate") != null) { LOGGER.log(Level.SEVERE, tl("essentialsHelp2")); @@ -242,8 +271,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { Economy.setEss(this); execTimer.mark("RegHandler"); + for (World w : Bukkit.getWorlds()) + addDefaultBackPermissionsToWorld(w); + metrics = new Metrics(this); - if (!metrics.isOptOut()) { + if (metrics.isEnabled()) { getLogger().info("Starting Metrics. Opt-out using the global bStats config."); } else { getLogger().info("Metrics disabled per bStats config."); @@ -437,7 +469,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { return pc.execute(cSender, commandLabel, args); } catch (final Exception ex) { Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex); - cSender.sendMessage(ChatColor.RED + "An internal error occurred while attempting to perform this command"); + cSender.sendMessage(tl("internalError")); return true; } } @@ -585,6 +617,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { return backup; } + @Override + public Kits getKits() { + return kits; + } + @Override public Metrics getMetrics() { return metrics; @@ -809,6 +846,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { @Override public List getVanishedPlayers() { + return Collections.unmodifiableList(new ArrayList<>(vanishedPlayers)); + } + + @Override + public Collection getVanishedPlayersNew() { return vanishedPlayers; } @@ -853,6 +895,18 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { return potionMetaProvider; } + private static void addDefaultBackPermissionsToWorld(World w) { + String permName = "essentials.back.into." + w.getName(); + + Permission p = Bukkit.getPluginManager().getPermission(permName); + if (p == null) { + p = new Permission(permName, + "Allows access to /back when the destination location is within world " + w.getName(), + PermissionDefault.TRUE); + Bukkit.getPluginManager().addPermission(p); + } + } + private static class EssentialsWorldListener implements Listener, Runnable { private transient final IEssentials ess; @@ -862,6 +916,8 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { @EventHandler(priority = EventPriority.LOW) public void onWorldLoad(final WorldLoadEvent event) { + addDefaultBackPermissionsToWorld(event.getWorld()); + ess.getJails().onReload(); ess.getWarps().reloadConfig(); for (IConf iConf : ((Essentials) ess).confList) { @@ -887,4 +943,22 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { ess.reload(); } } + + private AbstractItemDb getItemDbFromConfig() { + final String setting = settings.getItemDbType(); + + if (setting.equalsIgnoreCase("json")) { + return new FlatItemDb(this); + } else if (setting.equalsIgnoreCase("csv")) { + return new LegacyItemDb(this); + } else { + VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion(); + + if (version.isHigherThanOrEqualTo(VersionUtil.v1_13_0_R01)) { + return new FlatItemDb(this); + } else { + return new LegacyItemDb(this); + } + } + } } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java index 59b6c0f97..ae2107add 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java @@ -1,6 +1,8 @@ package com.earth2me.essentials; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.LocationUtil; +import com.earth2me.essentials.utils.MaterialUtil; import net.ess3.api.IEssentials; import org.bukkit.GameMode; import org.bukkit.Material; @@ -28,11 +30,12 @@ public class EssentialsBlockListener implements Listener { // Do not rely on getItemInHand(); // http://leaky.bukkit.org/issues/663 final ItemStack is = LocationUtil.convertBlockToItem(event.getBlockPlaced()); + if (is == null) { return; } - if (is.getType() == Material.MOB_SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == Material.MOB_SPAWNER) { + if (is.getType() == MaterialUtil.SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == MaterialUtil.SPAWNER) { final BlockState blockState = event.getBlockPlaced().getState(); if (blockState instanceof CreatureSpawner) { final CreatureSpawner spawner = (CreatureSpawner) blockState; diff --git a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java index 63435446e..fbf5abfd9 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java @@ -47,7 +47,7 @@ public class EssentialsEntityListener implements Listener { event.setCancelled(true); } } - attacker.updateActivity(true); + attacker.updateActivityOnInteract(true); } else if (eAttack instanceof Projectile && eDefend instanceof Player) { final Projectile projectile = (Projectile) event.getDamager(); //This should return a ProjectileSource on 1.7.3 beta + @@ -55,7 +55,7 @@ public class EssentialsEntityListener implements Listener { if (shooter instanceof Player) { final User attacker = ess.getUser((Player) shooter); onPlayerVsPlayerDamage(event, (Player) eDefend, attacker); - attacker.updateActivity(true); + attacker.updateActivityOnInteract(true); } } } @@ -124,7 +124,7 @@ public class EssentialsEntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onEntityCombustByEntity(final EntityCombustByEntityEvent event) { - if (event.getCombuster() instanceof Arrow) { + if (event.getCombuster() instanceof Arrow && event.getEntity() instanceof Player) { Arrow combuster = (Arrow) event.getCombuster(); if (combuster.getShooter() instanceof Player) { final User srcCombuster = ess.getUser(((Player) combuster.getShooter()).getUniqueId()); @@ -194,7 +194,17 @@ public class EssentialsEntityListener implements Listener { if (event.getEntity() instanceof Player) { final User user = ess.getUser((Player) event.getEntity()); if (user.isAfk()) { - user.updateActivity(true); + user.updateActivityOnInteract(true); + } + } + } + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onEntityTarget(EntityTargetEvent event) { + if (event.getTarget() instanceof Player) { + final User user = ess.getUser((Player) event.getTarget()); + if (user.isVanished()) { + event.setCancelled(true); } } } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index ceb4c3b79..3ea75abd2 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -6,14 +6,16 @@ import com.earth2me.essentials.textreader.TextInput; import com.earth2me.essentials.textreader.TextPager; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.LocationUtil; +import com.earth2me.essentials.utils.MaterialUtil; +import io.papermc.lib.PaperLib; import net.ess3.api.IEssentials; -import net.ess3.nms.refl.ReflUtil; import org.bukkit.BanEntry; import org.bukkit.BanList; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.World; import org.bukkit.command.PluginCommand; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; @@ -57,10 +59,10 @@ public class EssentialsPlayerListener implements Listener { public void registerEvents() { ess.getServer().getPluginManager().registerEvents(this, ess); - if (ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_12_R1)) { - ess.getServer().getPluginManager().registerEvents(new PlayerListenerPre1_12(), ess); - } else { + if (isEntityPickupEvent()) { ess.getServer().getPluginManager().registerEvents(new PlayerListener1_12(), ess); + } else { + ess.getServer().getPluginManager().registerEvents(new PlayerListenerPre1_12(), ess); } } @@ -101,7 +103,7 @@ public class EssentialsPlayerListener implements Listener { } } - user.updateActivity(true); + user.updateActivityOnInteract(true); user.setDisplayNick(); } @@ -126,8 +128,8 @@ public class EssentialsPlayerListener implements Listener { final Location from = event.getFrom(); final Location origTo = event.getTo(); final Location to = origTo.clone(); - if (ess.getSettings().cancelAfkOnMove() && origTo.getY() >= from.getBlockY() + 1) { - user.updateActivity(true); + if (origTo.getY() >= from.getBlockY() + 1) { + user.updateActivityOnMove(true); return; } to.setX(from.getX()); @@ -142,7 +144,7 @@ public class EssentialsPlayerListener implements Listener { } final Location afk = user.getAfkPosition(); if (afk == null || !event.getTo().getWorld().equals(afk.getWorld()) || afk.distanceSquared(event.getTo()) > 9) { - user.updateActivity(true); + user.updateActivityOnMove(true); } } @@ -154,7 +156,12 @@ public class EssentialsPlayerListener implements Listener { event.setQuitMessage(null); } else if (ess.getSettings().isCustomQuitMessage() && event.getQuitMessage() != null) { final Player player = event.getPlayer(); - event.setQuitMessage(ess.getSettings().getCustomQuitMessage().replace("{PLAYER}", player.getDisplayName()).replace("{USERNAME}", player.getName())); + final String msg = ess.getSettings().getCustomQuitMessage() + .replace("{PLAYER}", player.getDisplayName()) + .replace("{USERNAME}", player.getName()) + .replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size())); + + event.setQuitMessage(msg.isEmpty() ? null : msg); } user.startTransaction(); @@ -178,7 +185,7 @@ public class EssentialsPlayerListener implements Listener { } } - user.updateActivity(false); + user.updateActivityOnInteract(false); if (!user.isHidden()) { user.setLastLogout(System.currentTimeMillis()); } @@ -216,7 +223,7 @@ public class EssentialsPlayerListener implements Listener { final long currentTime = System.currentTimeMillis(); dUser.checkMuteTimeout(currentTime); - dUser.updateActivity(false); + dUser.updateActivityOnInteract(false); dUser.stopTransaction(); class DelayJoinTask implements Runnable { @@ -235,11 +242,14 @@ public class EssentialsPlayerListener implements Listener { user.setDisplayNick(); updateCompass(user); - if (!ess.getVanishedPlayers().isEmpty() && !user.isAuthorized("essentials.vanish.see")) { - for (String p : ess.getVanishedPlayers()) { + if (!ess.getVanishedPlayersNew().isEmpty() && !user.isAuthorized("essentials.vanish.see")) { + for (String p : ess.getVanishedPlayersNew()) { Player toVanish = ess.getServer().getPlayerExact(p); if (toVanish != null && toVanish.isOnline()) { user.getBase().hidePlayer(toVanish); + if (ess.getSettings().isDebug()) { + ess.getLogger().info("Hiding vanished player: " + p); + } } } } @@ -257,8 +267,11 @@ public class EssentialsPlayerListener implements Listener { } else if (ess.getSettings().isCustomJoinMessage()) { String msg = ess.getSettings().getCustomJoinMessage() .replace("{PLAYER}", player.getDisplayName()).replace("{USERNAME}", player.getName()) - .replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUserMap().getUniqueUsers())); - ess.getServer().broadcastMessage(msg); + .replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUserMap().getUniqueUsers())) + .replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size())); + if (!msg.isEmpty()) { + ess.getServer().broadcastMessage(msg); + } } else if (ess.getSettings().allowSilentJoinQuit()) { ess.getServer().broadcastMessage(message); } @@ -307,6 +320,9 @@ public class EssentialsPlayerListener implements Listener { user.setGodModeEnabled(false); ess.getLogger().log(Level.INFO, "Set god mode to false for {0} because they had it enabled without permission.", user.getName()); } + + user.setConfirmingClearCommand(null); + user.getConfirmingPayments().clear(); user.stopTransaction(); } @@ -336,7 +352,7 @@ public class EssentialsPlayerListener implements Listener { final IText input = tempInput; - if (input != null && user.isAuthorized("essentials.motd")) { + if (input != null && !input.getLines().isEmpty() && user.isAuthorized("essentials.motd")) { final IText output = new KeywordReplacer(input, user.getSource(), ess); final TextPager pager = new TextPager(output, true); pager.showPage("1", null, "motd", user.getSource()); @@ -349,7 +365,10 @@ public class EssentialsPlayerListener implements Listener { } // Makes the compass item ingame always point to the first essentials home. #EasterEgg + // EssentialsX: This can now optionally require a permission to enable, if set in the config. private void updateCompass(final User user) { + if (ess.getSettings().isCompassTowardsHomePerm() && !user.isAuthorized("essentials.home.compass")) return; + Location loc = user.getHome(user.getLocation()); if (loc == null) { loc = user.getBase().getBedSpawnLocation(); @@ -456,8 +475,7 @@ public class EssentialsPlayerListener implements Listener { if (spyer.isSocialSpyEnabled() && !player.equals(spyer.getBase())) { if (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) { spyer.sendMessage(tl("socialSpyMutedPrefix") + player.getDisplayName() + ": " + event.getMessage()); - } - else { + } else { spyer.sendMessage(tl("socialSpyPrefix") + player.getDisplayName() + ": " + event.getMessage()); } } @@ -487,7 +505,7 @@ public class EssentialsPlayerListener implements Listener { } final User user = ess.getUser(player); if (update) { - user.updateActivity(broadcast); + user.updateActivityOnInteract(broadcast); } if (ess.getSettings().isCommandCooldownsEnabled() && pluginCommand != null @@ -585,9 +603,9 @@ public class EssentialsPlayerListener implements Listener { public void onPlayerInteract(final PlayerInteractEvent event) { switch (event.getAction()) { case RIGHT_CLICK_BLOCK: - if (!event.isCancelled() && event.getClickedBlock().getType() == Material.BED_BLOCK && ess.getSettings().getUpdateBedAtDaytime()) { + if (!event.isCancelled() && MaterialUtil.isBed(event.getClickedBlock().getType()) && ess.getSettings().getUpdateBedAtDaytime()) { User player = ess.getUser(event.getPlayer()); - if (player.isAuthorized("essentials.sethome.bed")) { + if (player.isAuthorized("essentials.sethome.bed") && player.getWorld().getEnvironment().equals(World.Environment.NORMAL)) { player.getBase().setBedSpawnLocation(event.getClickedBlock().getLocation()); player.sendMessage(tl("bedSet", player.getLocation().getWorld().getName(), player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ())); } @@ -604,13 +622,13 @@ public class EssentialsPlayerListener implements Listener { case LEFT_CLICK_BLOCK: if (event.getItem() != null && event.getItem().getType() != Material.AIR) { final User user = ess.getUser(event.getPlayer()); - if (user.hasPowerTools() && user.arePowerToolsEnabled() && usePowertools(user, event.getItem().getTypeId())) { + if (user.hasPowerTools() && user.arePowerToolsEnabled() && usePowertools(user, event.getItem().getType())) { event.setCancelled(true); } } break; } - ess.getUser(event.getPlayer()).updateActivity(true); + ess.getUser(event.getPlayer()).updateActivityOnInteract(true); } // This method allows the /jump lock feature to work, allows teleporting while flying #EasterEgg @@ -627,7 +645,7 @@ public class EssentialsPlayerListener implements Listener { while (LocationUtil.isBlockDamaging(loc.getWorld(), loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ())) { loc.setY(loc.getY() + 1d); } - user.getBase().teleport(loc, TeleportCause.PLUGIN); + PaperLib.teleportAsync(user.getBase(), loc, TeleportCause.PLUGIN); } } ess.scheduleSyncDelayedTask(new DelayedClickJumpTask()); @@ -638,8 +656,8 @@ public class EssentialsPlayerListener implements Listener { } } - private boolean usePowertools(final User user, final int id) { - final List commandList = user.getPowertool(id); + private boolean usePowertools(final User user, final Material material) { + final List commandList = user.getPowertool(material); if (commandList == null || commandList.isEmpty()) { return false; } @@ -713,6 +731,7 @@ public class EssentialsPlayerListener implements Listener { } else if (clickedInventory != null && clickedInventory.getType() == InventoryType.PLAYER) { if (ess.getSettings().isDirectHatAllowed() && event.getClick() == ClickType.LEFT && event.getSlot() == 39 && event.getCursor().getType() != Material.AIR && event.getCursor().getType().getMaxDurability() == 0 + && !MaterialUtil.isSkull(event.getCursor().getType()) && ess.getUser(event.getWhoClicked()).isAuthorized("essentials.hat")) { event.setCancelled(true); final PlayerInventory inv = (PlayerInventory) clickedInventory; @@ -776,9 +795,18 @@ public class EssentialsPlayerListener implements Listener { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onPlayerFishEvent(final PlayerFishEvent event) { final User user = ess.getUser(event.getPlayer()); - user.updateActivity(true); + user.updateActivityOnInteract(true); } - + + private static boolean isEntityPickupEvent() { + try { + Class.forName("org.bukkit.event.entity.EntityPickupItemEvent"); + return true; + } catch (ClassNotFoundException ignored) { + return false; + } + } + private final class PlayerListenerPre1_12 implements Listener { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) @@ -790,7 +818,7 @@ public class EssentialsPlayerListener implements Listener { } } } - + private final class PlayerListener1_12 implements Listener { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java index b82586629..3574c20f2 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java @@ -10,12 +10,17 @@ import org.bukkit.event.server.ServerListPingEvent; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.logging.Level; public class EssentialsServerListener implements Listener { + private static List ignoredSLPECallers = Arrays.asList( + ".LegacyPingHandler.channelRead(" // CB responding to pings from pre-Netty clients + ); + private final transient IEssentials ess; private boolean unsupportedLogged = false; private boolean npeWarned = false; @@ -25,15 +30,20 @@ public class EssentialsServerListener implements Listener { public EssentialsServerListener(final IEssentials ess) { this.ess = ess; - setSampleText = ReflUtil.getMethodCached(ServerListPingEvent.class, "setSampleText", List.class); - getSampleText = ReflUtil.getMethodCached(ServerListPingEvent.class, "getSampleText"); - if (setSampleText != null && getSampleText != null) { - ess.getLogger().info("Using Paper 1.12+ ServerListPingEvent methods"); - isPaperSample = true; - } else { - ess.getLogger().info("Using Spigot 1.7.10+ ServerListPingEvent iterator"); - isPaperSample = false; + + if (ReflUtil.getClassCached("com.destroystokyo.paper.event.server.PaperServerListPingEvent") == null) { + // This workaround is only necessary for older Paper builds + setSampleText = ReflUtil.getMethodCached(ServerListPingEvent.class, "setSampleText", List.class); + getSampleText = ReflUtil.getMethodCached(ServerListPingEvent.class, "getSampleText"); + if (setSampleText != null && getSampleText != null) { + ess.getLogger().info("ServerListPingEvent: Paper 1.12.2 setSampleText API"); + isPaperSample = true; + return; + } } + + ess.getLogger().info("ServerListPingEvent: Spigot iterator API"); + isPaperSample = false; } @EventHandler(priority = EventPriority.LOWEST) @@ -41,22 +51,16 @@ public class EssentialsServerListener implements Listener { if (isPaperSample) { try { List playerNames = (List) getSampleText.invoke(event, null); - Iterator iterator = playerNames.iterator(); - while (iterator.hasNext()) { - String player = iterator.next(); - if (ess.getUser(player).isVanished()) { - iterator.remove(); - } - } + playerNames.removeIf(player -> ess.getUser(player).isVanished()); setSampleText.invoke(event, playerNames); } catch (IllegalAccessException | InvocationTargetException | ClassCastException e) { - if (!unsupportedLogged) { + if (!unsupportedLogged && shouldWarnSLPECaller(e)) { ess.getLogger().log(Level.WARNING, "Unable to hide players from server list ping " - + "using Paper 1.12+ method!", e); + + "using Paper 1.12 method!", e); unsupportedLogged = true; } } catch (NullPointerException e) { - if (!npeWarned) { + if (!npeWarned && shouldWarnSLPECaller(e)) { npeWarned = true; Exception ex = new Exception("A plugin has fired a ServerListPingEvent " + "without implementing Paper's methods. Point the author to https://git.io/v7Xzl."); @@ -74,12 +78,38 @@ public class EssentialsServerListener implements Listener { } } } catch (UnsupportedOperationException e) { - if (!unsupportedLogged) { - ess.getLogger().warning("Current server implementation does not support " - + "hiding players from server list ping. Update or contact the maintainers."); + if (!unsupportedLogged && shouldWarnSLPECaller(e)) { + ess.getLogger().log(Level.WARNING, "Could not hide vanished players while handling " + event.getClass().getName(), e); unsupportedLogged = true; } } } } + + /** + * Should we warn about this SLPE caller, or should we silently ignore it? + * This checks against the ignoredSLPECallers strings, and if it matches one of those, we + * return false. + * + * @param throwable A throwable caught by a catch block + * @return Whether or not to send a warning about this particular caller + */ + private boolean shouldWarnSLPECaller(Throwable throwable) { + final int maxStackDepth = 20; // Limit the depth when searching through the stack trace + int depth = 0; + for (StackTraceElement element : throwable.getStackTrace()) { + depth++; + if (depth > maxStackDepth) { + break; + } + + for (String ignoredString : ignoredSLPECallers) { + if (element.toString().contains(ignoredString)) { + return false; // We know about this error and should ignore it, so don't warn + } + } + } + + return true; // We don't know for certain that we can ignore this, so warn just to be safe + } } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java index d645a35b7..8a6b8201b 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java @@ -12,6 +12,7 @@ import org.bukkit.BanList; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.configuration.ConfigurationSection; import java.io.*; import java.math.BigInteger; @@ -41,6 +42,34 @@ public class EssentialsUpgrade { doneFile.load(); } + public void convertKits() { + Kits kits = ess.getKits(); + EssentialsConf config = kits.getConfig(); + if (doneFile.getBoolean("kitsyml", false)) { + return; + } + + LOGGER.info("Attempting to convert old kits in config.yml to new kits.yml"); + + ConfigurationSection section = ess.getSettings().getKitSection(); + if (section == null) { + LOGGER.info("No kits found to migrate."); + return; + } + + Map legacyKits = ess.getSettings().getKitSection().getValues(true); + + for (Map.Entry entry : legacyKits.entrySet()) { + LOGGER.info("Converting " + entry.getKey()); + config.set("kits." + entry.getKey(), entry.getValue()); + } + + config.save(); + doneFile.setProperty("kitsyml", true); + doneFile.save(); + LOGGER.info("Done converting kits."); + } + private void moveMotdRulesToFile(String name) { if (doneFile.getBoolean("move" + name + "ToFile", false)) { return; diff --git a/Essentials/src/com/earth2me/essentials/I18n.java b/Essentials/src/com/earth2me/essentials/I18n.java index 91d91583f..7d0f8ca2b 100644 --- a/Essentials/src/com/earth2me/essentials/I18n.java +++ b/Essentials/src/com/earth2me/essentials/I18n.java @@ -93,7 +93,7 @@ public class I18n implements net.ess3.api.II18n { } messageFormatCache.put(format, messageFormat); } - return messageFormat.format(objects); + return messageFormat.format(objects).replace(' ', ' '); // replace nbsp with a space } public void updateLocale(final String loc) { diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java index f1ea0ca3a..216f3ce94 100644 --- a/Essentials/src/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/com/earth2me/essentials/IEssentials.java @@ -19,7 +19,6 @@ import java.util.Collection; import java.util.List; import java.util.UUID; - public interface IEssentials extends Plugin { void addReloadListener(IConf listener); @@ -62,6 +61,8 @@ public interface IEssentials extends Plugin { Backup getBackup(); + Kits getKits(); + Methods getPaymentMethod(); BukkitTask runTaskAsynchronously(Runnable run); @@ -94,6 +95,7 @@ public interface IEssentials extends Plugin { EssentialsTimer getTimer(); + @Deprecated List getVanishedPlayers(); Collection getOnlinePlayers(); diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 8f6a3eaae..c353ffbc7 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -5,6 +5,7 @@ import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.textreader.IText; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.event.EventPriority; @@ -58,12 +59,27 @@ public interface ISettings extends IConf { Set getMuteCommands(); - Map getKit(String name); - + /** + * @Deprecated in favor of {@link Kits#getKits()} + */ + @Deprecated ConfigurationSection getKits(); + /** + * @Deprecated in favor of {@link Kits#getKit(String)} + */ + @Deprecated + Map getKit(String kit); + + /** + * @Deprecated in favor of {@link Kits#addKit(String, List, long)}} + */ + @Deprecated void addKit(String name, List lines, long delay); + @Deprecated + ConfigurationSection getKitSection(); + boolean isSkippingUsedOneTimeKitsFromKitList(); String getLocale(); @@ -80,7 +96,7 @@ public interface ISettings extends IConf { int getProtectCreeperMaxHeight(); - List getProtectList(final String configName); + List getProtectList(final String configName); boolean getProtectPreventSpawn(final String creatureName); @@ -118,9 +134,12 @@ public interface ISettings extends IConf { boolean isEcoDisabled(); + @Deprecated boolean isTradeInStacks(int id); - List itemSpawnBlacklist(); + boolean isTradeInStacks(Material type); + + List itemSpawnBlacklist(); List enabledSigns(); @@ -166,6 +185,8 @@ public interface ISettings extends IConf { boolean cancelAfkOnInteract(); + boolean sleepIgnoresAfkPlayers(); + boolean isAfkListName(); String getAfkListName(); @@ -224,6 +245,8 @@ public interface ISettings extends IConf { boolean ignoreColorsInMaxLength(); + boolean hideDisplayNameInVanish(); + int getMaxUserCacheCount(); boolean allowSilentJoinQuit(); @@ -243,7 +266,7 @@ public interface ISettings extends IConf { boolean isLastMessageReplyRecipient(); BigDecimal getMinimumPayAmount(); - + long getLastMessageReplyRecipientTimeout(); boolean isMilkBucketEasterEggEnabled(); @@ -255,13 +278,13 @@ public interface ISettings extends IConf { boolean isSpawnOnJoin(); List getSpawnOnJoinGroups(); - + boolean isUserInSpawnOnJoinGroup(IUser user); boolean isTeleportToCenterLocation(); boolean isCommandCooldownsEnabled(); - + long getCommandCooldownMs(String label); Entry getCommandCooldownEntry(String label); @@ -273,11 +296,11 @@ public interface ISettings extends IConf { NumberFormat getCurrencyFormat(); List getUnprotectedSignNames(); - + boolean isPastebinCreateKit(); - + boolean isAllowBulkBuySell(); - + boolean isAddingPrefixInPlayerlist(); boolean isAddingSuffixInPlayerlist(); @@ -287,4 +310,18 @@ public interface ISettings extends IConf { int getMotdDelay(); boolean isDirectHatAllowed(); + + List getDefaultEnabledConfirmCommands(); + + boolean isConfirmCommandEnabledByDefault(String commandName); + + boolean isCompassTowardsHomePerm(); + + boolean isAllowWorldInBroadcastworld(); + + String getItemDbType(); + + boolean isForceEnableRecipe(); + + boolean allowOldIdSigns(); } diff --git a/Essentials/src/com/earth2me/essentials/IUser.java b/Essentials/src/com/earth2me/essentials/IUser.java index 6a9c98230..66945addc 100644 --- a/Essentials/src/com/earth2me/essentials/IUser.java +++ b/Essentials/src/com/earth2me/essentials/IUser.java @@ -4,6 +4,7 @@ import com.earth2me.essentials.commands.IEssentialsCommand; import net.ess3.api.ITeleport; import net.ess3.api.MaxMoneyException; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.entity.Player; import java.math.BigDecimal; @@ -35,7 +36,7 @@ public interface IUser { boolean canAfford(BigDecimal value); - Boolean canSpawnItem(final int itemId); + Boolean canSpawnItem(final Material material); void setLastLocation(); diff --git a/Essentials/src/com/earth2me/essentials/ItemDb.java b/Essentials/src/com/earth2me/essentials/ItemDb.java deleted file mode 100644 index 73d4e1024..000000000 --- a/Essentials/src/com/earth2me/essentials/ItemDb.java +++ /dev/null @@ -1,472 +0,0 @@ -package com.earth2me.essentials; - -import com.earth2me.essentials.utils.NumberUtil; - -import net.ess3.nms.refl.ReflUtil; -import net.ess3.nms.updatedmeta.BasePotionDataProvider; -import com.earth2me.essentials.utils.StringUtil; -import net.ess3.api.IEssentials; -import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; -import org.bukkit.Color; -import org.bukkit.FireworkEffect; -import org.bukkit.Material; -import org.bukkit.block.Banner; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.*; -import org.bukkit.potion.Potion; -import org.bukkit.potion.PotionEffect; - -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static com.earth2me.essentials.I18n.tl; - - -public class ItemDb implements IConf, net.ess3.api.IItemDb { - private final transient IEssentials ess; - private final transient Map items = new HashMap<>(); - private final transient Map> names = new HashMap<>(); - private final transient Map primaryName = new HashMap<>(); - private final transient Map durabilities = new HashMap<>(); - private final transient Map nbtData = new HashMap<>(); - private final transient ManagedFile file; - private final transient Pattern splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))"); - private final transient Pattern csvSplitPattern = Pattern.compile("(\"([^\"]*)\"|[^,]*)(,|$)"); - - public ItemDb(final IEssentials ess) { - this.ess = ess; - file = new ManagedFile("items.csv", ess); - } - - @Override - public void reloadConfig() { - final List lines = file.getLines(); - - if (lines.isEmpty()) { - return; - } - - durabilities.clear(); - items.clear(); - names.clear(); - primaryName.clear(); - - for (String line : lines) { - if (line.length() > 0 && line.charAt(0) == '#') { - continue; - } - - String itemName = null; - int numeric = -1; - short data = 0; - String nbt = null; - - int col = 0; - Matcher matcher = csvSplitPattern.matcher(line); - while (matcher.find()) { - String match = matcher.group(1); - if (StringUtils.stripToNull(match) == null) { - continue; - } - match = StringUtils.strip(match.trim(), "\""); - switch (col) { - case 0: - itemName = match.toLowerCase(Locale.ENGLISH); - break; - case 1: - numeric = Integer.parseInt(match); - break; - case 2: - data = Short.parseShort(match); - break; - case 3: - nbt = StringUtils.stripToNull(match); - break; - default: - continue; - } - col++; - } - // Invalid row - if (itemName == null || numeric < 0) { - continue; - } - durabilities.put(itemName, data); - items.put(itemName, numeric); - if (nbt != null) { - nbtData.put(itemName, nbt); - } - - ItemData itemData = new ItemData(numeric, data); - if (names.containsKey(itemData)) { - List nameList = names.get(itemData); - nameList.add(itemName); - } else { - List nameList = new ArrayList<>(); - nameList.add(itemName); - names.put(itemData, nameList); - primaryName.put(itemData, itemName); - } - } - - for (List nameList : names.values()) { - Collections.sort(nameList, LengthCompare.INSTANCE); - } - } - - @Override - public ItemStack get(final String id, final int quantity) throws Exception { - final ItemStack retval = get(id.toLowerCase(Locale.ENGLISH)); - retval.setAmount(quantity); - return retval; - } - - @Override - public ItemStack get(final String id) throws Exception { - int itemid = 0; - String itemname; - short metaData = 0; - Matcher parts = splitPattern.matcher(id); - if (parts.matches()) { - itemname = parts.group(2); - metaData = Short.parseShort(parts.group(3)); - } else { - itemname = id; - } - - if (NumberUtil.isInt(itemname)) { - itemid = Integer.parseInt(itemname); - } else if (NumberUtil.isInt(id)) { - itemid = Integer.parseInt(id); - } else { - itemname = itemname.toLowerCase(Locale.ENGLISH); - } - - if (itemid < 1) { - if (items.containsKey(itemname)) { - itemid = items.get(itemname); - if (durabilities.containsKey(itemname) && metaData == 0) { - metaData = durabilities.get(itemname); - } - } else if (Material.getMaterial(itemname.toUpperCase(Locale.ENGLISH)) != null) { - Material bMaterial = Material.getMaterial(itemname.toUpperCase(Locale.ENGLISH)); - itemid = bMaterial.getId(); - } else { - try { - Material bMaterial = Bukkit.getUnsafe().getMaterialFromInternalName(itemname.toLowerCase(Locale.ENGLISH)); - itemid = bMaterial.getId(); - } catch (Throwable throwable) { - throw new Exception(tl("unknownItemName", itemname), throwable); - } - } - } - - if (itemid < 1) { - throw new Exception(tl("unknownItemName", itemname)); - } - - final Material mat = Material.getMaterial(itemid); - if (mat == null) { - throw new Exception(tl("unknownItemId", itemid)); - } - ItemStack retval = new ItemStack(mat); - if (nbtData.containsKey(itemname)) { - String nbt = nbtData.get(itemname); - if (nbt.startsWith("*")) { - nbt = nbtData.get(nbt.substring(1)); - } - retval = ess.getServer().getUnsafe().modifyItemStack(retval, nbt); - } - if (mat == Material.MOB_SPAWNER) { - if (metaData == 0) metaData = EntityType.PIG.getTypeId(); - try { - retval = ess.getSpawnerProvider().setEntityType(retval, EntityType.fromId(metaData)); - } catch (IllegalArgumentException e) { - throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners."); - } - } else if (mat == Material.MONSTER_EGG) { - EntityType type; - try { - type = EntityType.fromId(metaData); - } catch (IllegalArgumentException e) { - throw new Exception("Can't spawn entity ID " + metaData + " from spawn eggs."); - } - retval = ess.getSpawnEggProvider().createEggItem(type); - } else if (mat.name().endsWith("POTION") - && ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_11_R1)) { // Only apply this to pre-1.11 as items.csv might only work in 1.11 - retval = ess.getPotionMetaProvider().createPotionItem(mat, metaData); - } else { - retval.setDurability(metaData); - } - retval.setAmount(mat.getMaxStackSize()); - return retval; - } - - @Override - public List getMatching(User user, String[] args) throws Exception { - List is = new ArrayList<>(); - - if (args.length < 1) { - is.add(user.getItemInHand().clone()); - } else if (args[0].equalsIgnoreCase("hand")) { - is.add(user.getItemInHand().clone()); - } else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all")) { - for (ItemStack stack : user.getBase().getInventory().getContents()) { - if (stack == null || stack.getType() == Material.AIR) { - continue; - } - is.add(stack.clone()); - } - } else if (args[0].equalsIgnoreCase("blocks")) { - for (ItemStack stack : user.getBase().getInventory().getContents()) { - if (stack == null || stack.getTypeId() > 255 || stack.getType() == Material.AIR) { - continue; - } - is.add(stack.clone()); - } - } else { - is.add(get(args[0])); - } - - if (is.isEmpty() || is.get(0).getType() == Material.AIR) { - throw new Exception(tl("itemSellAir")); - } - - return is; - } - - @Override - public String names(ItemStack item) { - ItemData itemData = new ItemData(item.getTypeId(), item.getDurability()); - List nameList = names.get(itemData); - if (nameList == null) { - itemData = new ItemData(item.getTypeId(), (short) 0); - nameList = names.get(itemData); - if (nameList == null) { - return null; - } - } - - if (nameList.size() > 15) { - nameList = nameList.subList(0, 14); - } - return StringUtil.joinList(", ", nameList); - } - - @Override - public String name(ItemStack item) { - ItemData itemData = new ItemData(item.getTypeId(), item.getDurability()); - String name = primaryName.get(itemData); - if (name == null) { - itemData = new ItemData(item.getTypeId(), (short) 0); - name = primaryName.get(itemData); - if (name == null) { - return null; - } - } - return name; - } - - @Override - public String serialize(ItemStack is) { - String mat = is.getType().name(); - if (is.getData().getData() != 0) { - mat = mat + ":" + is.getData().getData(); - } - int quantity = is.getAmount(); - StringBuilder sb = new StringBuilder(); // Add space AFTER you add something. We can trim at end. - sb.append(mat).append(" ").append(quantity).append(" "); - - // ItemMeta applies to anything. - if (is.hasItemMeta()) { - ItemMeta meta = is.getItemMeta(); - if (meta.hasDisplayName()) { - sb.append("name:").append(meta.getDisplayName().replaceAll(" ", "_")).append(" "); - } - - if (meta.hasLore()) { - sb.append("lore:"); - boolean first = true; - for (String s : meta.getLore()) { - // Add | before the line if it's not the first one. Easy but weird way - // to do this since we need each line separated by | - if (!first) { - sb.append("|"); - } - first = false; - sb.append(s.replaceAll(" ", "_")); - } - sb.append(" "); - } - - if (meta.hasEnchants()) { - for (Enchantment e : meta.getEnchants().keySet()) { - sb.append(e.getName().toLowerCase()).append(":").append(meta.getEnchantLevel(e)).append(" "); - } - } - } - - switch (is.getType()) { - case WRITTEN_BOOK: - // Everything from http://wiki.ess3.net/wiki/Item_Meta#Books in that order. - // Interesting as I didn't see a way to do pages or chapters. - BookMeta bookMeta = (BookMeta) is.getItemMeta(); - if (bookMeta.hasTitle()) { - sb.append("title:").append(bookMeta.getTitle()).append(" "); - } - if (bookMeta.hasAuthor()) { - sb.append("author:").append(bookMeta.getAuthor()).append(" "); - } - // Only other thing it could have is lore but that's done up there ^^^ - break; - case ENCHANTED_BOOK: - EnchantmentStorageMeta enchantmentStorageMeta = (EnchantmentStorageMeta) is.getItemMeta(); - for (Enchantment e : enchantmentStorageMeta.getStoredEnchants().keySet()) { - sb.append(e.getName().toLowerCase()).append(":").append(enchantmentStorageMeta.getStoredEnchantLevel(e)).append(" "); - } - break; - case FIREWORK: - // Everything from http://wiki.ess3.net/wiki/Item_Meta#Fireworks in that order. - FireworkMeta fireworkMeta = (FireworkMeta) is.getItemMeta(); - if (fireworkMeta.hasEffects()) { - for (FireworkEffect effect : fireworkMeta.getEffects()) { - if (effect.getColors() != null && !effect.getColors().isEmpty()) { - sb.append("color:"); - boolean first = true; - for (Color c : effect.getColors()) { - if (!first) { - sb.append(","); // same thing as above. - } - sb.append(c.toString()); - first = false; - } - sb.append(" "); - } - - sb.append("shape: ").append(effect.getType().name()).append(" "); - if (effect.getFadeColors() != null && !effect.getFadeColors().isEmpty()) { - sb.append("fade:"); - boolean first = true; - for (Color c : effect.getFadeColors()) { - if (!first) { - sb.append(","); // same thing as above. - } - sb.append(c.toString()); - first = false; - } - sb.append(" "); - } - } - sb.append("power: ").append(fireworkMeta.getPower()).append(" "); - } - break; - case POTION: - Potion potion = Potion.fromItemStack(is); - for (PotionEffect e : potion.getEffects()) { - // long but needs to be effect:speed power:2 duration:120 in that order. - sb.append("splash:").append(potion.isSplash()).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" "); - } - break; - case SKULL_ITEM: - // item stack with meta - SkullMeta skullMeta = (SkullMeta) is.getItemMeta(); - if (skullMeta != null && skullMeta.hasOwner()) { - sb.append("player:").append(skullMeta.getOwner()).append(" "); - } - break; - case LEATHER_HELMET: - case LEATHER_CHESTPLATE: - case LEATHER_LEGGINGS: - case LEATHER_BOOTS: - LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) is.getItemMeta(); - int rgb = leatherArmorMeta.getColor().asRGB(); - sb.append("color:").append(rgb).append(" "); - break; - case BANNER: - BannerMeta bannerMeta = (BannerMeta) is.getItemMeta(); - if (bannerMeta != null) { - int basecolor = bannerMeta.getBaseColor().getColor().asRGB(); - sb.append("basecolor:").append(basecolor).append(" "); - for (org.bukkit.block.banner.Pattern p : bannerMeta.getPatterns()) { - String type = p.getPattern().getIdentifier(); - int color = p.getColor().getColor().asRGB(); - sb.append(type).append(",").append(color).append(" "); - } - } - break; - case SHIELD: - // Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795 - BlockStateMeta shieldMeta = (BlockStateMeta) is.getItemMeta(); - Banner shieldBannerMeta = (Banner) shieldMeta.getBlockState(); - int basecolor = shieldBannerMeta.getBaseColor().getColor().asRGB(); - sb.append("basecolor:").append(basecolor).append(" "); - for (org.bukkit.block.banner.Pattern p : shieldBannerMeta.getPatterns()) { - String type = p.getPattern().getIdentifier(); - int color = p.getColor().getColor().asRGB(); - sb.append(type).append(",").append(color).append(" "); - } - break; - } - - return sb.toString().trim().replaceAll("§", "&"); - } - - @Override - public Collection listNames() { - return primaryName.values(); - } - - static class ItemData { - final private int itemNo; - final private short itemData; - - ItemData(final int itemNo, final short itemData) { - this.itemNo = itemNo; - this.itemData = itemData; - } - - public int getItemNo() { - return itemNo; - } - - public short getItemData() { - return itemData; - } - - @Override - public int hashCode() { - return (31 * itemNo) ^ itemData; - } - - @Override - public boolean equals(Object o) { - if (o == null) { - return false; - } - if (!(o instanceof ItemData)) { - return false; - } - ItemData pairo = (ItemData) o; - return this.itemNo == pairo.getItemNo() && this.itemData == pairo.getItemData(); - } - } - - - static class LengthCompare implements java.util.Comparator { - - private static final LengthCompare INSTANCE = new LengthCompare(); - - public LengthCompare() { - super(); - } - - @Override - public int compare(String s1, String s2) { - return s1.length() - s2.length(); - } - } -} diff --git a/Essentials/src/com/earth2me/essentials/Kit.java b/Essentials/src/com/earth2me/essentials/Kit.java index 3bc9d2d44..4d5a71493 100644 --- a/Essentials/src/com/earth2me/essentials/Kit.java +++ b/Essentials/src/com/earth2me/essentials/Kit.java @@ -7,18 +7,15 @@ import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.KeywordReplacer; import com.earth2me.essentials.textreader.SimpleTextInput; import com.earth2me.essentials.utils.DateUtil; -import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.IEssentials; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; import java.math.BigDecimal; import java.util.*; import java.util.logging.Level; -import static com.earth2me.essentials.I18n.capitalCase; import static com.earth2me.essentials.I18n.tl; @@ -31,7 +28,7 @@ public class Kit { public Kit(final String kitName, final IEssentials ess) throws Exception { this.kitName = kitName; this.ess = ess; - this.kit = ess.getSettings().getKit(kitName); + this.kit = ess.getKits().getKit(kitName); this.charge = new Trade("kit-" + kitName, new Trade("kit-kit", ess), ess); if (kit == null) { @@ -39,40 +36,6 @@ public class Kit { } } - //TODO: Convert this to use one of the new text classes? - public static String listKits(final IEssentials ess, final User user) throws Exception { - try { - final ConfigurationSection kits = ess.getSettings().getKits(); - final StringBuilder list = new StringBuilder(); - for (String kitItem : kits.getKeys(false)) { - if (user == null) { - list.append(" ").append(capitalCase(kitItem)); - } else if (user.isAuthorized("essentials.kits." + kitItem.toLowerCase(Locale.ENGLISH))) { - String cost = ""; - String name = capitalCase(kitItem); - BigDecimal costPrice = new Trade("kit-" + kitItem.toLowerCase(Locale.ENGLISH), ess).getCommandCost(user); - if (costPrice.signum() > 0) { - cost = tl("kitCost", NumberUtil.displayCurrency(costPrice, ess)); - } - - Kit kit = new Kit(kitItem, ess); - double nextUse = kit.getNextUse(user); - if (nextUse == -1 && ess.getSettings().isSkippingUsedOneTimeKitsFromKitList()) { - continue; - } else if (nextUse != 0) { - name = tl("kitDelay", name); - } - - list.append(" ").append(name).append(cost); - } - } - return list.toString().trim(); - } catch (Exception ex) { - throw new Exception(tl("kitError"), ex); - } - - } - public String getName() { return kitName; } @@ -185,7 +148,7 @@ public class Kit { public void expandItems(final User user, final List items) throws Exception { try { IText input = new SimpleTextInput(items); - IText output = new KeywordReplacer(input, user.getSource(), ess); + IText output = new KeywordReplacer(input, user.getSource(), ess, true, true); boolean spew = false; final boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments(); diff --git a/Essentials/src/com/earth2me/essentials/Kits.java b/Essentials/src/com/earth2me/essentials/Kits.java new file mode 100644 index 000000000..92b3f70e5 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/Kits.java @@ -0,0 +1,114 @@ +package com.earth2me.essentials; + +import com.earth2me.essentials.utils.NumberUtil; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.MemoryConfiguration; + +import java.io.File; +import java.math.BigDecimal; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import static com.earth2me.essentials.I18n.capitalCase; +import static com.earth2me.essentials.I18n.tl; + +public class Kits implements IConf { + + private final EssentialsConf config; + private ConfigurationSection kits; + + public Kits(final IEssentials essentials) { + config = new EssentialsConf(new File(essentials.getDataFolder(), "kits.yml")); + config.setTemplateName("/kits.yml"); + + reloadConfig(); + } + + @Override + public void reloadConfig() { + config.load(); + kits = _getKits(); + } + + private ConfigurationSection _getKits() { + if (config.isConfigurationSection("kits")) { + final ConfigurationSection section = config.getConfigurationSection("kits"); + final ConfigurationSection newSection = new MemoryConfiguration(); + for (String kitItem : section.getKeys(false)) { + if (section.isConfigurationSection(kitItem)) { + newSection.set(kitItem.toLowerCase(Locale.ENGLISH), section.getConfigurationSection(kitItem)); + } + } + return newSection; + } + return null; + } + + public EssentialsConf getConfig() { + return config; + } + + public ConfigurationSection getKits() { + return kits; + } + + public Map getKit(String name) { + name = name.replace('.', '_').replace('/', '_'); + if (getKits() != null) { + final ConfigurationSection kits = getKits(); + // For some reason, YAML doesn't sees keys as always lowercase even if they aren't defined like that. + // Workaround is to toLowercase when getting from the config, but showing normally elsewhere. + // ODDLY ENOUGH when you get the configuration section for ALL kits, it will return the proper + // case of each kit. But when you check for each kit's configuration section, it won't return the kit + // you just found if you don't toLowercase it. + if (kits.isConfigurationSection(name.toLowerCase())) { + return kits.getConfigurationSection(name.toLowerCase()).getValues(true); + } else { + } + } + + return null; + } + + public void addKit(String name, List lines, long delay) { + // Will overwrite but w/e + config.set("kits." + name + ".delay", delay); + config.set("kits." + name + ".items", lines); + kits = _getKits(); + config.save(); + } + + public String listKits(final net.ess3.api.IEssentials ess, final User user) throws Exception { + try { + final ConfigurationSection kits = config.getConfigurationSection("kits"); + final StringBuilder list = new StringBuilder(); + for (String kitItem : kits.getKeys(false)) { + if (user == null) { + list.append(" ").append(capitalCase(kitItem)); + } else if (user.isAuthorized("essentials.kits." + kitItem.toLowerCase(Locale.ENGLISH))) { + String cost = ""; + String name = capitalCase(kitItem); + BigDecimal costPrice = new Trade("kit-" + kitItem.toLowerCase(Locale.ENGLISH), ess).getCommandCost(user); + if (costPrice.signum() > 0) { + cost = tl("kitCost", NumberUtil.displayCurrency(costPrice, ess)); + } + + Kit kit = new Kit(kitItem, ess); + double nextUse = kit.getNextUse(user); + if (nextUse == -1 && ess.getSettings().isSkippingUsedOneTimeKitsFromKitList()) { + continue; + } else if (nextUse != 0) { + name = tl("kitDelay", name); + } + + list.append(" ").append(name).append(cost); + } + } + return list.toString().trim(); + } catch (Exception ex) { + throw new Exception(tl("kitError"), ex); + } + + } +} diff --git a/Essentials/src/com/earth2me/essentials/MetaItemStack.java b/Essentials/src/com/earth2me/essentials/MetaItemStack.java index 93fa1e046..e9c4683ff 100644 --- a/Essentials/src/com/earth2me/essentials/MetaItemStack.java +++ b/Essentials/src/com/earth2me/essentials/MetaItemStack.java @@ -3,7 +3,9 @@ package com.earth2me.essentials; import com.earth2me.essentials.textreader.BookInput; import com.earth2me.essentials.textreader.BookPager; import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.FormatUtil; +import com.earth2me.essentials.utils.MaterialUtil; import com.earth2me.essentials.utils.NumberUtil; import com.google.common.base.Joiner; import net.ess3.api.IEssentials; @@ -17,6 +19,7 @@ import org.bukkit.Material; import org.bukkit.block.Banner; import org.bukkit.block.banner.PatternType; import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.*; import org.bukkit.potion.Potion; @@ -32,8 +35,8 @@ import static com.earth2me.essentials.I18n.tl; public class MetaItemStack { - private static final Map colorMap = new HashMap(); - private static final Map fireworkShape = new HashMap(); + private static final Map colorMap = new HashMap<>(); + private static final Map fireworkShape = new HashMap<>(); static { for (DyeColor color : DyeColor.values()) { @@ -96,10 +99,6 @@ public class MetaItemStack { completePotion = true; } - private boolean isPotion(Material type) { - return type.name().endsWith("POTION"); - } - public boolean canSpawn(final IEssentials ess) { try { ess.getServer().getUnsafe().modifyItemStack(stack.clone(), "{}"); @@ -120,26 +119,6 @@ public class MetaItemStack { } public void parseStringMeta(final CommandSource sender, final boolean allowUnsafe, String[] string, int fromArg, final IEssentials ess) throws Exception { - // Make any entries after lore definition become the lore and not parsed. - { - int loreIndex = -1; - boolean dirty = false; - for (int i = 0; i < string.length; i++) { - String _str = string[i]; - if (loreIndex == -1) { - if (_str.matches("^lore" + splitPattern.pattern() + ".*")) { - loreIndex = i; - } - } else { - string[loreIndex] += " " + string[i]; - string[i] = null; - dirty = true; - } - } - if (dirty) { - string = (String[]) ArrayUtils.subarray(string, 0, loreIndex + 1); - } - } if (string[fromArg].startsWith("{") && hasMetaPermission(sender, "vanilla", false, true, ess)) { try { stack = ess.getServer().getUnsafe().modifyItemStack(stack, Joiner.on(' ').join(Arrays.asList(string).subList(fromArg, string.length))); @@ -177,16 +156,7 @@ public class MetaItemStack { return; } - Material banner = null; - Material shield = null; - - try { - // 1.8 - banner = Material.valueOf("BANNER"); - - // 1.9 - shield = Material.valueOf("SHIELD"); - } catch(IllegalArgumentException ignored){} + Material WRITTEN_BOOK = EnumUtil.getMaterial("WRITTEN_BOOK"); if (split.length > 1 && split[0].equalsIgnoreCase("name") && hasMetaPermission(sender, "name", false, true, ess)) { final String displayName = FormatUtil.replaceFormat(split[1].replace('_', ' ')); @@ -202,18 +172,18 @@ public class MetaItemStack { meta.setLore(lore); stack.setItemMeta(meta); } else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) { - boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true; + boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true; setUnbreakable(stack, value); - } else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && stack.getType() == Material.SKULL_ITEM && hasMetaPermission(sender, "head", false, true, ess)) { - if (stack.getDurability() == 3) { + } else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && hasMetaPermission(sender, "head", false, true, ess)) { + if (MaterialUtil.isPlayerHead(stack.getType(), stack.getDurability())) { final String owner = split[1]; final SkullMeta meta = (SkullMeta) stack.getItemMeta(); - meta.setOwner(owner); + meta.setOwningPlayer(ess.getServer().getOfflinePlayer(owner)); stack.setItemMeta(meta); } else { throw new Exception(tl("onlyPlayerSkulls")); } - } else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == Material.WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) { + } else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) { final BookMeta meta = (BookMeta) stack.getItemMeta(); final IText input = new BookInput("book", true, ess); final BookPager pager = new BookPager(input); @@ -221,40 +191,42 @@ public class MetaItemStack { List pages = pager.getPages(split[1]); meta.setPages(pages); stack.setItemMeta(meta); - } else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) { + } else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) { final String author = FormatUtil.replaceFormat(split[1]); final BookMeta meta = (BookMeta) stack.getItemMeta(); meta.setAuthor(author); stack.setItemMeta(meta); - } else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) { + } else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) { final String title = FormatUtil.replaceFormat(split[1].replace('_', ' ')); final BookMeta meta = (BookMeta) stack.getItemMeta(); meta.setTitle(title); stack.setItemMeta(meta); - } else if (split.length > 1 && split[0].equalsIgnoreCase("power") && stack.getType() == Material.FIREWORK && hasMetaPermission(sender, "firework-power", false, true, ess)) { + } else if (split.length > 1 && split[0].equalsIgnoreCase("power") && (MaterialUtil.isFirework(stack.getType()))&& hasMetaPermission(sender, "firework-power", false, true, ess)) { final int power = NumberUtil.isInt(split[1]) ? Integer.parseInt(split[1]) : 0; final FireworkMeta meta = (FireworkMeta) stack.getItemMeta(); meta.setPower(power > 3 ? 4 : power); stack.setItemMeta(meta); - } else if (stack.getType() == Material.FIREWORK) {//WARNING - Meta for fireworks will be ignored after this point. + } else if (split.length > 1 && split[0].equalsIgnoreCase("itemflags") && hasMetaPermission(sender, "itemflags", false, true, ess)) { + addItemFlags(string); + } else if (MaterialUtil.isFirework(stack.getType())) {//WARNING - Meta for fireworks will be ignored after this point. addFireworkMeta(sender, false, string, ess); - } else if (isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point. + } else if (MaterialUtil.isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point. addPotionMeta(sender, false, string, ess); - } else if (banner != null && stack.getType() == banner) { //WARNING - Meta for banners will be ignored after this point. + } else if (MaterialUtil.isBanner(stack.getType())) { + //WARNING - Meta for banners will be ignored after this point. addBannerMeta(sender, false, string, ess); - } else if (shield != null && stack.getType() == shield) { //WARNING - Meta for shields will be ignored after this point. - addBannerMeta(sender, false, string, ess); - } else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && (stack.getType() == Material.LEATHER_BOOTS || stack.getType() == Material.LEATHER_CHESTPLATE || stack.getType() == Material.LEATHER_HELMET || stack.getType() == Material.LEATHER_LEGGINGS)) { + } else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && MaterialUtil.isLeatherArmor(stack.getType())) { final String[] color = split[1].split("(\\||,)"); - if(color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) { // int rgb and hex + if (color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) { + // Either integer or hexadecimal final LeatherArmorMeta meta = (LeatherArmorMeta) stack.getItemMeta(); String input = color[0]; - if(input.startsWith("#")) { + if (input.startsWith("#")) { // Hex meta.setColor(Color.fromRGB( Integer.valueOf(input.substring(1, 3), 16), Integer.valueOf(input.substring(3, 5), 16), Integer.valueOf(input.substring(5, 7), 16))); - } else { + } else { // Int meta.setColor(Color.fromRGB(Integer.parseInt(input))); } stack.setItemMeta(meta); @@ -273,8 +245,32 @@ public class MetaItemStack { } } + public void addItemFlags(final String string) throws Exception { + String[] separate = splitPattern.split(string, 2); + if (separate.length != 2) { + throw new Exception(tl("invalidItemFlagMeta", string)); + } + + String[] split = separate[1].split(","); + ItemMeta meta = stack.getItemMeta(); + + for (String s : split) { + for (ItemFlag flag : ItemFlag.values()) { + if (s.equalsIgnoreCase(flag.name())) { + meta.addItemFlags(flag); + } + } + } + + if (meta.getItemFlags().isEmpty()) { + throw new Exception(tl("invalidItemFlagMeta", string)); + } + + stack.setItemMeta(meta); + } + public void addFireworkMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception { - if (stack.getType() == Material.FIREWORK) { + if (MaterialUtil.isFirework(stack.getType())) { final String[] split = splitPattern.split(string, 2); if (split.length < 2) { return; @@ -346,7 +342,7 @@ public class MetaItemStack { } public void addPotionMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception { - if (isPotion(stack.getType())) { + if (MaterialUtil.isPotion(stack.getType())) { final String[] split = splitPattern.split(string, 2); if (split.length < 2) { @@ -475,13 +471,13 @@ public class MetaItemStack { } public void addBannerMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception { - if (stack.getType() == Material.BANNER && string != null) { + if (MaterialUtil.isBanner(stack.getType()) && !stack.getType().toString().equals("SHIELD") && string != null) { final String[] split = splitPattern.split(string, 2); if (split.length < 2) { throw new Exception(tl("invalidBanner", split[1])); } - + PatternType patternType = null; try { patternType = PatternType.valueOf(split[0]); @@ -499,7 +495,7 @@ public class MetaItemStack { } stack.setItemMeta(meta); - } else if (stack.getType() == Material.SHIELD && string != null) { + } else if (stack.getType().toString().equals("SHIELD") && string != null) { final String[] split = splitPattern.split(string, 2); if (split.length < 2) { @@ -547,22 +543,36 @@ public class MetaItemStack { } } + private static int bukkitUnbreakableSupport = -1; private static Method spigotMethod; private static Method setUnbreakableMethod; private void setUnbreakable(ItemStack is, boolean unbreakable) { ItemMeta meta = is.getItemMeta(); try { - if (spigotMethod == null) { - spigotMethod = meta.getClass().getDeclaredMethod("spigot"); - spigotMethod.setAccessible(true); + if (bukkitUnbreakableSupport == -1) { + try { + ItemMeta.class.getDeclaredMethod("setUnbreakable", boolean.class); + bukkitUnbreakableSupport = 1; + } catch (NoSuchMethodException | SecurityException ex) { + bukkitUnbreakableSupport = 0; + } } - Object itemStackSpigot = spigotMethod.invoke(meta); - if (setUnbreakableMethod == null) { - setUnbreakableMethod = itemStackSpigot.getClass().getDeclaredMethod("setUnbreakable", Boolean.TYPE); - setUnbreakableMethod.setAccessible(true); + + if (bukkitUnbreakableSupport == 1) { + meta.setUnbreakable(unbreakable); + } else { + if (spigotMethod == null) { + spigotMethod = meta.getClass().getDeclaredMethod("spigot"); + spigotMethod.setAccessible(true); + } + Object itemStackSpigot = spigotMethod.invoke(meta); + if (setUnbreakableMethod == null) { + setUnbreakableMethod = itemStackSpigot.getClass().getDeclaredMethod("setUnbreakable", Boolean.TYPE); + setUnbreakableMethod.setAccessible(true); + } + setUnbreakableMethod.invoke(itemStackSpigot, unbreakable); } - setUnbreakableMethod.invoke(itemStackSpigot, unbreakable); is.setItemMeta(meta); } catch (Throwable t) { t.printStackTrace(); diff --git a/Essentials/src/com/earth2me/essentials/Mob.java b/Essentials/src/com/earth2me/essentials/Mob.java index f2519a7cf..562727975 100644 --- a/Essentials/src/com/earth2me/essentials/Mob.java +++ b/Essentials/src/com/earth2me/essentials/Mob.java @@ -75,6 +75,14 @@ public enum Mob { HUSK("Husk", Enemies.ENEMY, "HUSK"), ILLUSIONER("Illusioner", Enemies.ENEMY, "ILLUSIONER"), PARROT("Parrot", Enemies.NEUTRAL, "PARROT"), + TURTLE("Turtle", Enemies.NEUTRAL, "TURTLE"), + PHANTOM("Phantom", Enemies.ENEMY, "PHANTOM"), + COD("Cod", Enemies.NEUTRAL, "COD"), + SALMON("Salmon", Enemies.NEUTRAL, "SALMON"), + PUFFERFISH("Pufferfish", Enemies.NEUTRAL, "PUFFERFISH"), + TROPICAL_FISH("TropicalFish", Enemies.NEUTRAL, "TROPICAL_FISH"), + DROWNED("Drowned", Enemies.ENEMY, "DROWNED"), + DOLPHIN("Dolphin", Enemies.NEUTRAL, "DOLPHIN"), ; public static final Logger logger = Logger.getLogger("Essentials"); diff --git a/Essentials/src/com/earth2me/essentials/MobData.java b/Essentials/src/com/earth2me/essentials/MobData.java index df56adc41..38cd4391f 100644 --- a/Essentials/src/com/earth2me/essentials/MobData.java +++ b/Essentials/src/com/earth2me/essentials/MobData.java @@ -1,6 +1,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.craftbukkit.InventoryWorkaround; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.StringUtil; import org.bukkit.DyeColor; import org.bukkit.Material; @@ -53,9 +54,9 @@ public enum MobData { BAY_HORSE("bay", EntityType.HORSE, Horse.Color.BROWN, true), BROWN_HORSE("brown", EntityType.HORSE, Horse.Color.BROWN, false), SADDLE_HORSE("saddle", EntityType.HORSE, Data.HORSESADDLE, true), - GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, Material.GOLD_BARDING, true), - DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, Material.DIAMOND_BARDING, true), - ARMOR_HORSE("armor", EntityType.HORSE, Material.IRON_BARDING, true), + GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, EnumUtil.getMaterial("GOLDEN_HORSE_ARMOR", "GOLD_BARDING"), true), + DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, EnumUtil.getMaterial("DIAMOND_HORSE_ARMOR", "DIAMOND_BARDING"), true), + ARMOR_HORSE("armor", EntityType.HORSE, EnumUtil.getMaterial("IRON_HORSE_ARMOR", "IRON_BARDING"), true), SIAMESE_CAT("siamese", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, true), WHITE_CAT("white", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, false), RED_CAT("red", EntityType.OCELOT, Ocelot.Type.RED_CAT, true), @@ -66,12 +67,12 @@ public enum MobData { BABY_ZOMBIE("baby", EntityType.ZOMBIE.getEntityClass(), Data.BABYZOMBIE, true), ADULT_ZOMBIE("adult", EntityType.ZOMBIE.getEntityClass(), Data.ADULTZOMBIE, true), DIAMOND_SWORD_ZOMBIE("diamondsword", EntityType.ZOMBIE.getEntityClass(), Material.DIAMOND_SWORD, true), - GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), Material.GOLD_SWORD, true), + GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD"), true), IRON_SWORD_ZOMBIE("ironsword", EntityType.ZOMBIE.getEntityClass(), Material.IRON_SWORD, true), STONE_SWORD_ZOMBIE("stonesword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, false), SWORD_ZOMBIE("sword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, true), DIAMOND_SWORD_SKELETON("diamondsword", EntityType.SKELETON, Material.DIAMOND_SWORD, true), - GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, Material.GOLD_SWORD, true), + GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD"), true), IRON_SWORD_SKELETON("ironsword", EntityType.SKELETON, Material.IRON_SWORD, true), STONE_SWORD_SKELETON("stonesword", EntityType.SKELETON, Material.STONE_SWORD, false), SWORD_SKELETON("sword", EntityType.SKELETON, Material.STONE_SWORD, true), @@ -95,6 +96,18 @@ public enum MobData { BLUE_PARROT("blue", EntityType.PARROT, Parrot.Variant.BLUE, true), CYAN_PARROT("cyan", EntityType.PARROT, Parrot.Variant.CYAN, true), GRAY_PARROT("gray", EntityType.PARROT, Parrot.Variant.GRAY, true), + KOB_TROPICAL_FISH("kob", EntityType.TROPICAL_FISH, TropicalFish.Pattern.KOB, true), + SUNSTREAK_TROPICAL_FISH("sunstreak", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SUNSTREAK, true), + SNOOPER_TROPICAL_FISH("snooper", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SNOOPER, true), + DASHER_TROPICAL_FISH("dasher", EntityType.TROPICAL_FISH, TropicalFish.Pattern.DASHER, true), + BRINELY_TROPICAL_FISH("brinely", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BRINELY, true), + SPOTTY_TROPICAL_FISH("spotty", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SPOTTY, true), + FLOPPER_TROPICAL_FISH("flopper", EntityType.TROPICAL_FISH, TropicalFish.Pattern.FLOPPER, true), + STRIPEY_TROPICAL_FISH("stripey", EntityType.TROPICAL_FISH, TropicalFish.Pattern.STRIPEY, true), + GLITTER_TROPICAL_FISH("glitter", EntityType.TROPICAL_FISH, TropicalFish.Pattern.GLITTER, true), + BLOCKFISH_TROPICAL_FISH("blockfish", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BLOCKFISH, true), + BETTY_TROPICAL_FISH("betty", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BETTY, true), + CLAYFISH_TROPICAL_FISH("clayfish", EntityType.TROPICAL_FISH, TropicalFish.Pattern.CLAYFISH, true); ; @@ -252,6 +265,8 @@ public enum MobData { } } else if (this.value instanceof Parrot.Variant) { ((Parrot) spawned).setVariant((Parrot.Variant) this.value); + } else if (this.value instanceof TropicalFish.Pattern) { + ((TropicalFish) spawned).setPattern((TropicalFish.Pattern) this.value); } } } diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index e1c3d3d4d..be006082d 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -8,7 +8,9 @@ import org.bukkit.advancement.AdvancementProgress; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.block.PistonMoveReaction; +import org.bukkit.block.data.BlockData; import org.bukkit.conversations.Conversation; import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.entity.*; @@ -25,6 +27,8 @@ import org.bukkit.plugin.Plugin; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.util.BoundingBox; +import org.bukkit.util.RayTraceResult; import org.bukkit.util.Vector; import java.lang.reflect.InvocationTargetException; @@ -145,6 +149,10 @@ public class OfflinePlayer implements Player { return -1; } + public BlockFace getFacing() { + return null; + } + @Override public boolean performCommand(String string) { return false; @@ -200,24 +208,34 @@ public class OfflinePlayer implements Player { return Collections.emptyList(); } - @Override - public Block getTargetBlock(HashSet hs, int i) { - return null; - } - @Override public Block getTargetBlock(Set mat, int i) { return null; } @Override - public List getLastTwoTargetBlocks(HashSet hs, int i) { + public List getLastTwoTargetBlocks(Set mat, int i) { return Collections.emptyList(); } @Override - public List getLastTwoTargetBlocks(Set mat, int i) { - return Collections.emptyList(); + public Block getTargetBlockExact(int maxDistance) { + return null; + } + + @Override + public Block getTargetBlockExact(int maxDistance, FluidCollisionMode fluidCollisionMode) { + return null; + } + + @Override + public RayTraceResult rayTraceBlocks(double maxDistance) { + return null; + } + + @Override + public RayTraceResult rayTraceBlocks(double maxDistance, FluidCollisionMode fluidCollisionMode) { + return null; } @Override @@ -243,6 +261,15 @@ public class OfflinePlayer implements Player { return server; } + @Override + public boolean isPersistent() { + return false; + } + + @Override + public void setPersistent(boolean persistent) { + } + public Vector getMomentum() { return getVelocity(); } @@ -481,7 +508,8 @@ public class OfflinePlayer implements Player { } @Override - public void sendBlockChange(Location lctn, int i, byte b) { + public void sendBlockChange(Location loc, BlockData block) { + } @Override @@ -653,6 +681,31 @@ public class OfflinePlayer implements Player { public void setPlayerListName(String name) { } + @Override + public String getPlayerListHeader() { + return null; + } + + @Override + public String getPlayerListFooter() { + return null; + } + + @Override + public void setPlayerListHeader(String header) { + + } + + @Override + public void setPlayerListFooter(String footer) { + + } + + @Override + public void setPlayerListHeaderFooter(String header, String footer) { + + } + @Override public String getPlayerListName() { return name; @@ -734,6 +787,21 @@ public class OfflinePlayer implements Player { public void setBedSpawnLocation(Location lctn, boolean force) { } + @Override + public boolean sleep(Location location, boolean force) { + return false; + } + + @Override + public void wakeup(boolean setSpawnLocation) { + + } + + @Override + public Location getBedLocation() { + return null; + } + @Override public void playEffect(EntityEffect ee) { } @@ -742,10 +810,20 @@ public class OfflinePlayer implements Player { public void hidePlayer(Player player) { } + @Override + public void hidePlayer(Plugin plugin, Player player) { + + } + @Override public void showPlayer(Player player) { } + @Override + public void showPlayer(Plugin plugin, Player player) { + + } + @Override public boolean canSee(Player player) { return false; @@ -920,6 +998,26 @@ public class OfflinePlayer implements Player { return 0; } + @Override + public boolean discoverRecipe(NamespacedKey recipe) { + return false; + } + + @Override + public int discoverRecipes(Collection recipes) { + return 0; + } + + @Override + public boolean undiscoverRecipe(NamespacedKey recipe) { + return false; + } + + @Override + public int undiscoverRecipes(Collection recipes) { + return 0; + } + @Override public boolean hasLineOfSight(Entity entity) { return false; @@ -1195,6 +1293,21 @@ public class OfflinePlayer implements Player { public void setGliding(boolean b) { } + @Override + public boolean isSwimming() { + return false; + } + + @Override + public void setSwimming(boolean swimming) { + + } + + @Override + public boolean isRiptiding() { + return false; + } + @Override public void setAI(boolean b) { } @@ -1412,6 +1525,11 @@ public class OfflinePlayer implements Player { return null; } + @Override + public int getClientViewDistance() { + return 0; + } + @Override public String getLocale() { return null; @@ -1459,6 +1577,11 @@ public class OfflinePlayer implements Player { return 0; } + @Override + public BoundingBox getBoundingBox() { + return null; + } + @Override public List getPassengers() { return null; @@ -1478,4 +1601,8 @@ public class OfflinePlayer implements Player { public PistonMoveReaction getPistonMoveReaction() { return null; } + + @Override + public void updateCommands() { + } } diff --git a/Essentials/src/com/earth2me/essentials/Potions.java b/Essentials/src/com/earth2me/essentials/Potions.java index 075002430..e86842f87 100644 --- a/Essentials/src/com/earth2me/essentials/Potions.java +++ b/Essentials/src/com/earth2me/essentials/Potions.java @@ -11,8 +11,8 @@ import java.util.Set; public class Potions { - private static final Map POTIONS = new HashMap(); - private static final Map ALIASPOTIONS = new HashMap(); + private static final Map POTIONS = new HashMap<>(); + private static final Map ALIASPOTIONS = new HashMap<>(); static { diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index d924653d6..79623f750 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -1,23 +1,24 @@ package com.earth2me.essentials; +import com.earth2me.essentials.api.IItemDb; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.signs.Signs; import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.SimpleTextInput; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.FormatUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.IEssentials; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.MemoryConfiguration; import org.bukkit.event.EventPriority; import org.bukkit.inventory.ItemStack; import java.io.File; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; @@ -37,7 +38,6 @@ public class Settings implements net.ess3.api.ISettings { private final transient EssentialsConf config; private static final Logger logger = Logger.getLogger("Essentials"); private final transient IEssentials ess; - private boolean metricsEnabled = true; public Settings(IEssentials ess) { this.ess = ess; @@ -325,46 +325,24 @@ public class Settings implements net.ess3.api.ISettings { return config.getDouble("heal-cooldown", 0); } - private ConfigurationSection kits; - - private ConfigurationSection _getKits() { - if (config.isConfigurationSection("kits")) { - final ConfigurationSection section = config.getConfigurationSection("kits"); - final ConfigurationSection newSection = new MemoryConfiguration(); - for (String kitItem : section.getKeys(false)) { - if (section.isConfigurationSection(kitItem)) { - newSection.set(kitItem.toLowerCase(Locale.ENGLISH), section.getConfigurationSection(kitItem)); - } - } - return newSection; - } - return null; - } - @Override public ConfigurationSection getKits() { - return kits; + return ess.getKits().getKits(); } @Override public Map getKit(String name) { - name = name.replace('.', '_').replace('/', '_'); - if (getKits() != null) { - final ConfigurationSection kits = getKits(); - if (kits.isConfigurationSection(name)) { - return kits.getConfigurationSection(name).getValues(true); - } - } - return null; + return ess.getKits().getKit(name); } @Override public void addKit(String name, List lines, long delay) { - // Will overwrite but w/e - config.set("kits." + name + ".delay", delay); - config.set("kits." + name + ".items", lines); - kits = _getKits(); - config.save(); + ess.getKits().addKit(name, lines, delay); + } + + @Override + public ConfigurationSection getKitSection() { + return config.getConfigurationSection("kits"); } @Override @@ -449,9 +427,14 @@ public class Settings implements net.ess3.api.ISettings { mFormat = mFormat.replace("{TEAMPREFIX}", "{3}"); mFormat = mFormat.replace("{TEAMSUFFIX}", "{4}"); mFormat = mFormat.replace("{TEAMNAME}", "{5}"); + mFormat = mFormat.replace("{PREFIX}", "{6}"); + mFormat = mFormat.replace("{SUFFIX}", "{7}"); mFormat = "§r".concat(mFormat); chatFormats.put(group, mFormat); } + if (isDebug()) { + ess.getLogger().info(String.format("Found format '%s' for group '%s'", mFormat, group)); + } return mFormat; } @@ -509,14 +492,14 @@ public class Settings implements net.ess3.api.ISettings { disableItemPickupWhileAfk = _getDisableItemPickupWhileAfk(); registerBackInListener = _registerBackInListener(); cancelAfkOnInteract = _cancelAfkOnInteract(); - cancelAfkOnMove = _cancelAfkOnMove() && cancelAfkOnInteract; + cancelAfkOnMove = _cancelAfkOnMove(); getFreezeAfkPlayers = _getFreezeAfkPlayers(); + sleepIgnoresAfkPlayers = _sleepIgnoresAfkPlayers(); afkListName = _getAfkListName(); isAfkListName = !afkListName.equalsIgnoreCase("none"); itemSpawnBl = _getItemSpawnBlacklist(); loginAttackDelay = _getLoginAttackDelay(); signUsePerSecond = _getSignUsePerSecond(); - kits = _getKits(); chatFormats.clear(); changeDisplayName = _changeDisplayName(); disabledCommands = getDisabledCommands(); @@ -553,19 +536,30 @@ public class Settings implements net.ess3.api.ISettings { npcsInBalanceRanking = _isNpcsInBalanceRanking(); currencyFormat = _getCurrencyFormat(); unprotectedSigns = _getUnprotectedSign(); + defaultEnabledConfirmCommands = _getDefaultEnabledConfirmCommands(); + isCompassTowardsHomePerm = _isCompassTowardsHomePerm(); + isAllowWorldInBroadcastworld = _isAllowWorldInBroadcastworld(); + itemDbType = _getItemDbType(); + forceEnableRecipe = _isForceEnableRecipe(); + allowOldIdSigns = _allowOldIdSigns(); } - private List itemSpawnBl = new ArrayList(); + void _lateLoadItemSpawnBlacklist() { + itemSpawnBl = _getItemSpawnBlacklist(); + } + + private List itemSpawnBl = new ArrayList<>(); @Override - public List itemSpawnBlacklist() { + public List itemSpawnBlacklist() { return itemSpawnBl; } - private List _getItemSpawnBlacklist() { - final List epItemSpwn = new ArrayList(); - if (ess.getItemDb() == null) { - logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded."); + private List _getItemSpawnBlacklist() { + final List epItemSpwn = new ArrayList<>(); + final IItemDb itemDb = ess.getItemDb(); + if (itemDb == null || !itemDb.isReady()) { + logger.log(Level.FINE, "Skipping item spawn blacklist read; item DB not yet loaded."); return epItemSpwn; } for (String itemName : config.getString("item-spawn-blacklist", "").split(",")) { @@ -574,10 +568,10 @@ public class Settings implements net.ess3.api.ISettings { continue; } try { - final ItemStack iStack = ess.getItemDb().get(itemName); - epItemSpwn.add(iStack.getTypeId()); + final ItemStack iStack = itemDb.get(itemName); + epItemSpwn.add(iStack.getType()); } catch (Exception ex) { - logger.log(Level.SEVERE, tl("unknownItemInList", itemName, "item-spawn-blacklist")); + logger.log(Level.SEVERE, tl("unknownItemInList", itemName, "item-spawn-blacklist"), ex); } } return epItemSpwn; @@ -663,10 +657,17 @@ public class Settings implements net.ess3.api.ISettings { // #easteregg @Override + @Deprecated public boolean isTradeInStacks(int id) { return config.getBoolean("trade-in-stacks-" + id, false); } + // #easteregg + @Override + public boolean isTradeInStacks(Material type) { + return config.getBoolean("trade-in-stacks." + type.toString().toLowerCase().replace("_", ""), false); + } + // #easteregg private boolean economyDisabled = false; @@ -685,19 +686,27 @@ public class Settings implements net.ess3.api.ISettings { } @Override - public List getProtectList(final String configName) { - final List list = new ArrayList(); + public List getProtectList(final String configName) { + final List list = new ArrayList<>(); for (String itemName : config.getString(configName, "").split(",")) { itemName = itemName.trim(); if (itemName.isEmpty()) { continue; } - ItemStack itemStack; - try { - itemStack = ess.getItemDb().get(itemName); - list.add(itemStack.getTypeId()); - } catch (Exception ex) { + + Material mat = EnumUtil.getMaterial(itemName.toUpperCase()); + + if (mat == null) { + try { + ItemStack itemStack = ess.getItemDb().get(itemName); + mat = itemStack.getType(); + } catch (Exception ignored) {} + } + + if (mat == null) { logger.log(Level.SEVERE, tl("unknownItemInList", itemName, configName)); + } else { + list.add(mat); } } return list; @@ -885,6 +894,17 @@ public class Settings implements net.ess3.api.ISettings { return config.getBoolean("cancel-afk-on-interact", true); } + private boolean sleepIgnoresAfkPlayers; + + @Override + public boolean sleepIgnoresAfkPlayers() { + return sleepIgnoresAfkPlayers; + } + + private boolean _sleepIgnoresAfkPlayers() { + return config.getBoolean("sleep-ignores-afk-players", true); + } + private String afkListName; private boolean isAfkListName; @@ -1111,6 +1131,11 @@ public class Settings implements net.ess3.api.ISettings { return config.getBoolean("ignore-colors-in-max-nick-length", false); } + @Override + public boolean hideDisplayNameInVanish() { + return config.getBoolean("hide-displayname-in-vanish", false); + } + private boolean allowSilentJoin; public boolean _allowSilentJoinQuit() { @@ -1202,7 +1227,7 @@ public class Settings implements net.ess3.api.ISettings { public boolean isSpawnOnJoin() { return !this.spawnOnJoinGroups.isEmpty(); } - + private List spawnOnJoinGroups; public List _getSpawnOnJoinGroups() { @@ -1241,7 +1266,7 @@ public class Settings implements net.ess3.api.ISettings { public boolean isTeleportToCenterLocation() { return config.getBoolean("teleport-to-center", true); } - + private Map commandCooldowns; private Map _getCommandCooldowns() { @@ -1268,10 +1293,10 @@ public class Settings implements net.ess3.api.ISettings { cmdEntry = cmdEntry.substring(1); } String cmd = cmdEntry - .replaceAll("\\*", ".*"); // Wildcards are accepted as asterisk * as known universally. + .replaceAll("\\*", ".*"); // Wildcards are accepted as asterisk * as known universally. pattern = Pattern.compile(cmd + "( .*)?"); // This matches arguments, if present, to "ignore" them from the feature. } - + /* ================================ * >> Process cooldown value * ================================ */ @@ -1312,7 +1337,12 @@ public class Settings implements net.ess3.api.ISettings { if (isCommandCooldownsEnabled()) { for (Entry entry : this.commandCooldowns.entrySet()) { // Check if label matches current pattern (command-cooldown in config) - if (entry.getKey().matcher(label).matches()) { + boolean matches = entry.getKey().matcher(label).matches(); + if (isDebug()) { + ess.getLogger().info(String.format("Checking command '%s' against cooldown '%s': %s", label, entry.getKey(), matches)); + } + + if (matches) { return entry; } } @@ -1354,24 +1384,8 @@ public class Settings implements net.ess3.api.ISettings { DecimalFormat currencyFormat = new DecimalFormat(currencyFormatString, decimalFormatSymbols); currencyFormat.setRoundingMode(RoundingMode.FLOOR); - // Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials - // can follow a single format. - try { - Field field = NumberUtil.class.getDeclaredField("PRETTY_FORMAT"); - field.setAccessible(true); - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(null, currencyFormat); - modifiersField.setAccessible(false); - field.setAccessible(false); - } catch (NoSuchFieldException | IllegalAccessException e) { - ess.getLogger().severe("Failed to apply custom currency format: " + e.getMessage()); - if (isDebug()) { - e.printStackTrace(); - } - } - + // Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials can follow a single format. + NumberUtil.internalSetPrettyFormat(currencyFormat); return currencyFormat; } @@ -1407,7 +1421,7 @@ public class Settings implements net.ess3.api.ISettings { @Override public boolean isPastebinCreateKit() { - return config.getBoolean("pastebin-createkit", true); + return config.getBoolean("pastebin-createkit", false); } @Override @@ -1439,4 +1453,79 @@ public class Settings implements net.ess3.api.ISettings { public boolean isDirectHatAllowed() { return config.getBoolean("allow-direct-hat", true); } + + private List defaultEnabledConfirmCommands; + + private List _getDefaultEnabledConfirmCommands() { + List commands = config.getStringList("default-enabled-confirm-commands"); + for (int i = 0; i < commands.size(); i++) { + commands.set(i, commands.get(i).toLowerCase()); + } + return commands; + } + + @Override + public List getDefaultEnabledConfirmCommands() { + return defaultEnabledConfirmCommands; + } + + @Override + public boolean isConfirmCommandEnabledByDefault(String commandName) { + return getDefaultEnabledConfirmCommands().contains(commandName.toLowerCase()); + } + + private boolean isCompassTowardsHomePerm; + + private boolean _isCompassTowardsHomePerm() { + return config.getBoolean("compass-towards-home-perm", false); + } + + @Override + public boolean isCompassTowardsHomePerm() { + return isCompassTowardsHomePerm; + } + + private boolean isAllowWorldInBroadcastworld; + + private boolean _isAllowWorldInBroadcastworld() { + return config.getBoolean("allow-world-in-broadcastworld", false); + } + + @Override + public boolean isAllowWorldInBroadcastworld() { + return isAllowWorldInBroadcastworld; + } + + private String itemDbType; // #EasterEgg - admins can manually switch items provider if they want + + private String _getItemDbType() { + return config.getString("item-db-type", "auto"); + } + + @Override + public String getItemDbType() { + return itemDbType; + } + + private boolean forceEnableRecipe; // https://github.com/EssentialsX/Essentials/issues/1397 + + private boolean _isForceEnableRecipe() { + return config.getBoolean("force-enable-recipe", false); + } + + @Override + public boolean isForceEnableRecipe() { + return forceEnableRecipe; + } + + private boolean allowOldIdSigns; + + private boolean _allowOldIdSigns() { + return config.getBoolean("allow-old-id-signs", false); + } + + @Override + public boolean allowOldIdSigns() { + return allowOldIdSigns; + } } diff --git a/Essentials/src/com/earth2me/essentials/SpawnMob.java b/Essentials/src/com/earth2me/essentials/SpawnMob.java index 9ae334290..cb66fa169 100644 --- a/Essentials/src/com/earth2me/essentials/SpawnMob.java +++ b/Essentials/src/com/earth2me/essentials/SpawnMob.java @@ -2,6 +2,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.Mob.MobException; import com.earth2me.essentials.craftbukkit.InventoryWorkaround; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.LocationUtil; import com.earth2me.essentials.utils.StringUtil; import net.ess3.api.IEssentials; @@ -19,6 +20,13 @@ import static com.earth2me.essentials.I18n.tl; public class SpawnMob { + + private static final Material GOLDEN_HELMET = EnumUtil.getMaterial("GOLDEN_HELMET", "GOLD_HELMET"); + private static final Material GOLDEN_CHESTPLATE = EnumUtil.getMaterial("GOLDEN_CHESTPLATE", "GOLD_CHESTPLATE"); + private static final Material GOLDEN_LEGGINGS = EnumUtil.getMaterial("GOLDEN_LEGGINGS", "GOLD_LEGGINGS"); + private static final Material GOLDEN_BOOTS = EnumUtil.getMaterial("GOLDEN_BOOTS", "GOLD_BOOTS"); + private static final Material GOLDEN_SWORD = EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD"); + public static String mobList(final User user) { final Set mobList = Mob.getMobList(); final Set availableList = new HashSet(); @@ -191,16 +199,16 @@ public class SpawnMob { invent.setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE, 1)); invent.setHelmet(new ItemStack(Material.DIAMOND_HELMET, 1)); } else if (inputData.contains("gold")) { - invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1)); - invent.setLeggings(new ItemStack(Material.GOLD_LEGGINGS, 1)); - invent.setChestplate(new ItemStack(Material.GOLD_CHESTPLATE, 1)); - invent.setHelmet(new ItemStack(Material.GOLD_HELMET, 1)); + invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1)); + invent.setLeggings(new ItemStack(GOLDEN_LEGGINGS, 1)); + invent.setChestplate(new ItemStack(GOLDEN_CHESTPLATE, 1)); + invent.setHelmet(new ItemStack(GOLDEN_HELMET, 1)); } else if (inputData.contains("leather")) { invent.setBoots(new ItemStack(Material.LEATHER_BOOTS, 1)); invent.setLeggings(new ItemStack(Material.LEATHER_LEGGINGS, 1)); invent.setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE, 1)); invent.setHelmet(new ItemStack(Material.LEATHER_HELMET, 1)); - } else { + } else if (inputData.contains("iron")) { invent.setBoots(new ItemStack(Material.IRON_BOOTS, 1)); invent.setLeggings(new ItemStack(Material.IRON_LEGGINGS, 1)); invent.setChestplate(new ItemStack(Material.IRON_CHESTPLATE, 1)); @@ -228,7 +236,7 @@ public class SpawnMob { InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.BOW, 1)); InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f); - invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1)); + invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1)); invent.setBootsDropChance(0.0f); } @@ -237,10 +245,10 @@ public class SpawnMob { setVillager(zombie, false); final EntityEquipment invent = zombie.getEquipment(); - InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.GOLD_SWORD, 1)); + InventoryWorkaround.setItemInMainHand(invent, new ItemStack(GOLDEN_SWORD, 1)); InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f); - invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1)); + invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1)); invent.setBootsDropChance(0.0f); } @@ -249,7 +257,7 @@ public class SpawnMob { setVillager(zombie, false); final EntityEquipment invent = zombie.getEquipment(); - invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1)); + invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1)); invent.setBootsDropChance(0.0f); } diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java index e45523a0a..4db4543cf 100644 --- a/Essentials/src/com/earth2me/essentials/Teleport.java +++ b/Essentials/src/com/earth2me/essentials/Teleport.java @@ -2,8 +2,12 @@ package com.earth2me.essentials; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.LocationUtil; +import io.papermc.lib.PaperLib; import net.ess3.api.IEssentials; +import net.ess3.api.ITeleport; import net.ess3.api.IUser; +import net.ess3.api.events.UserWarpEvent; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerRespawnEvent; @@ -16,7 +20,7 @@ import java.util.GregorianCalendar; import static com.earth2me.essentials.I18n.tl; -public class Teleport implements net.ess3.api.ITeleport { +public class Teleport implements ITeleport { private final IUser teleportOwner; private final IEssentials ess; private TimedTeleport timedTeleport; @@ -47,7 +51,7 @@ public class Teleport implements net.ess3.api.ITeleport { final long earliestLong = earliestTime.getTimeInMillis(); // When was the last teleportPlayer used? - final Long lastTime = teleportOwner.getLastTeleportTimestamp(); + final long lastTime = teleportOwner.getLastTeleportTimestamp(); if (lastTime > time.getTimeInMillis()) { // This is to make sure time didn't get messed up on last teleportPlayer use. @@ -122,21 +126,21 @@ public class Teleport implements net.ess3.api.ITeleport { if (LocationUtil.isBlockUnsafeForUser(teleportee, loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) { if (ess.getSettings().isTeleportSafetyEnabled()) { if (ess.getSettings().isForceDisableTeleportSafety()) { - teleportee.getBase().teleport(loc, cause); + PaperLib.teleportAsync(teleportee.getBase(), loc, cause); } else { - teleportee.getBase().teleport(LocationUtil.getSafeDestination(ess, teleportee, loc), cause); + PaperLib.teleportAsync(teleportee.getBase(), LocationUtil.getSafeDestination(ess, teleportee, loc), cause); } } else { throw new Exception(tl("unsafeTeleportDestination", loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); } } else { if (ess.getSettings().isForceDisableTeleportSafety()) { - teleportee.getBase().teleport(loc, cause); + PaperLib.teleportAsync(teleportee.getBase(), loc, cause); } else { if (ess.getSettings().isTeleportToCenterLocation()) { loc = LocationUtil.getRoundedDestination(loc); } - teleportee.getBase().teleport(loc, cause); + PaperLib.teleportAsync(teleportee.getBase(), loc, cause); } } } @@ -229,7 +233,7 @@ public class Teleport implements net.ess3.api.ITeleport { initTimer((long) (delay * 1000.0), teleportOwner, null, chargeFor, cause, true); } - protected void respawnNow(IUser teleportee, TeleportCause cause) throws Exception { + void respawnNow(IUser teleportee, TeleportCause cause) throws Exception { final Player player = teleportee.getBase(); Location bed = player.getBedSpawnLocation(); if (bed != null) { @@ -247,6 +251,13 @@ public class Teleport implements net.ess3.api.ITeleport { //The warp function is a wrapper used to teleportPlayer a player to a /warp @Override public void warp(IUser teleportee, String warp, Trade chargeFor, TeleportCause cause) throws Exception { + UserWarpEvent event = new UserWarpEvent(teleportee, warp, chargeFor); + Bukkit.getServer().getPluginManager().callEvent(event); + + if(event.isCancelled()) { + return; + } + warp = event.getWarp(); Location loc = ess.getWarps().getWarp(warp); teleportee.sendMessage(tl("warpingTo", warp, loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); if (!teleportee.equals(teleportOwner)) { diff --git a/Essentials/src/com/earth2me/essentials/TimedTeleport.java b/Essentials/src/com/earth2me/essentials/TimedTeleport.java index 0544c6c8c..c3e959f58 100644 --- a/Essentials/src/com/earth2me/essentials/TimedTeleport.java +++ b/Essentials/src/com/earth2me/essentials/TimedTeleport.java @@ -16,9 +16,9 @@ public class TimedTeleport implements Runnable { private final IEssentials ess; private final Teleport teleport; private final UUID timer_teleportee; - private int timer_task = -1; - private final long timer_started; // time this task was initiated - private final long timer_delay; // how long to delay the teleportPlayer + private int timer_task; + private final long timer_started; // time this task was initiated + private final long timer_delay; // how long to delay the teleportPlayer private double timer_health; // note that I initially stored a clone of the location for reference, but... // when comparing locations, I got incorrect mismatches (rounding errors, looked like) @@ -32,8 +32,7 @@ public class TimedTeleport implements Runnable { private final Trade timer_chargeFor; private final TeleportCause timer_cause; - public TimedTeleport(IUser user, IEssentials ess, Teleport teleport, long delay, IUser teleportUser, ITarget target, Trade chargeFor, TeleportCause cause, boolean respawn) { - + TimedTeleport(IUser user, IEssentials ess, Teleport teleport, long delay, IUser teleportUser, ITarget target, Trade chargeFor, TeleportCause cause, boolean respawn) { this.teleportOwner = user; this.ess = ess; this.teleport = teleport; @@ -111,8 +110,7 @@ public class TimedTeleport implements Runnable { if (timer_chargeFor != null) { timer_chargeFor.charge(teleportOwner); } - } catch (Exception ex) { - } + } catch (Exception ignored) {} } catch (Exception ex) { ess.showError(teleportOwner.getSource(), ex, "\\ teleport"); @@ -124,7 +122,7 @@ public class TimedTeleport implements Runnable { } //If we need to cancelTimer a pending teleportPlayer call this method - public void cancelTimer(boolean notifyUser) { + void cancelTimer(boolean notifyUser) { if (timer_task == -1) { return; } diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 44cc49ac1..e5bb2d502 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -8,6 +8,7 @@ import com.earth2me.essentials.register.payment.Methods; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.FormatUtil; import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.VersionUtil; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; import net.ess3.api.events.AfkStatusChangeEvent; @@ -18,6 +19,7 @@ import net.ess3.nms.refl.ReflUtil; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.ItemStack; @@ -26,12 +28,7 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import java.math.BigDecimal; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.WeakHashMap; +import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; @@ -222,8 +219,19 @@ public class User extends UserData implements Comparable, IMessageRecipien } @Override - public Boolean canSpawnItem(final int itemId) { - return !ess.getSettings().itemSpawnBlacklist().contains(itemId); + public Boolean canSpawnItem(final Material material) { + if (ess.getSettings().permissionBasedItemSpawn()) { + final String name = material.toString().toLowerCase(Locale.ENGLISH).replace("_", ""); + + if (isAuthorized("essentials.itemspawn.item-all") || isAuthorized("essentials.itemspawn.item-" + name)) return true; + + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) { + final int id = material.getId(); + if (isAuthorized("essentials.itemspawn.item-" + id)) return true; + } + } + + return isAuthorized("essentials.itemspawn.exempt") || !ess.getSettings().itemSpawnBlacklist().contains(material); } @Override @@ -359,7 +367,7 @@ public class User extends UserData implements Comparable, IMessageRecipien } public String getDisplayName() { - return super.getBase().getDisplayName() == null ? super.getBase().getName() : super.getBase().getDisplayName(); + return super.getBase().getDisplayName() == null || (ess.getSettings().hideDisplayNameInVanish() && isHidden()) ? super.getBase().getName() : super.getBase().getDisplayName(); } @Override @@ -457,7 +465,7 @@ public class User extends UserData implements Comparable, IMessageRecipien return; } - this.getBase().setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set); + this.getBase().setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") || set && ess.getSettings().sleepIgnoresAfkPlayers()); if (set && !isAfk()) { afkPosition = this.getLocation(); this.afkSince = System.currentTimeMillis(); @@ -546,7 +554,7 @@ public class User extends UserData implements Comparable, IMessageRecipien } public void updateActivity(final boolean broadcast) { - if (isAfk() && ess.getSettings().cancelAfkOnInteract()) { + if (isAfk()) { setAfk(false); if (broadcast && !isHidden()) { setDisplayNick(); @@ -559,6 +567,18 @@ public class User extends UserData implements Comparable, IMessageRecipien lastActivity = System.currentTimeMillis(); } + public void updateActivityOnMove(final boolean broadcast) { + if(ess.getSettings().cancelAfkOnMove()) { + updateActivity(broadcast); + } + } + + public void updateActivityOnInteract(final boolean broadcast) { + if(ess.getSettings().cancelAfkOnInteract()) { + updateActivity(broadcast); + } + } + public void checkActivity() { // Graceful time before the first afk check call. if (System.currentTimeMillis() - lastActivity <= 10000) { @@ -716,7 +736,7 @@ public class User extends UserData implements Comparable, IMessageRecipien } } setHidden(true); - ess.getVanishedPlayers().add(getName()); + ess.getVanishedPlayersNew().add(getName()); if (isAuthorized("essentials.vanish.effect")) { this.getBase().addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1, false)); } @@ -725,7 +745,7 @@ public class User extends UserData implements Comparable, IMessageRecipien p.showPlayer(getBase()); } setHidden(false); - ess.getVanishedPlayers().remove(getName()); + ess.getVanishedPlayersNew().remove(getName()); if (isAuthorized("essentials.vanish.effect")) { this.getBase().removePotionEffect(PotionEffectType.INVISIBILITY); } @@ -860,7 +880,7 @@ public class User extends UserData implements Comparable, IMessageRecipien * Returns the {@link ItemStack} in the main hand or off-hand. If the main hand is empty then the offhand item is returned - also nullable. */ public ItemStack getItemInHand() { - if (ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_9_R1)) { + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_9_R01)) { return getBase().getInventory().getItemInHand(); } else { PlayerInventory inventory = getBase().getInventory(); diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java index 090326927..8c0c2cfb3 100644 --- a/Essentials/src/com/earth2me/essentials/UserData.java +++ b/Essentials/src/com/earth2me/essentials/UserData.java @@ -7,6 +7,7 @@ import net.ess3.api.IEssentials; import net.ess3.api.InvalidWorldException; import net.ess3.api.MaxMoneyException; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -101,7 +102,7 @@ public abstract class UserData extends PlayerExtension implements IConf { BigDecimal result = ess.getSettings().getStartingBalance(); BigDecimal maxMoney = ess.getSettings().getMaxMoney(); BigDecimal minMoney = ess.getSettings().getMinMoney(); - + // NPC banks are not actual player banks, as such they do not have player starting balance. if (isNPC()) { result = BigDecimal.ZERO; @@ -232,26 +233,35 @@ public abstract class UserData extends PlayerExtension implements IConf { config.save(); } - private List unlimited; + private List unlimited; - private List _getUnlimited() { - return config.getIntegerList("unlimited"); + private List _getUnlimited() { + List retlist = new ArrayList<>(); + List configList = config.getStringList("unlimited"); + for(String s : configList) { + Material mat = Material.matchMaterial(s); + if(mat != null) { + retlist.add(mat); + } + } + + return retlist; } - public List getUnlimited() { + public List getUnlimited() { return unlimited; } public boolean hasUnlimited(ItemStack stack) { - return unlimited.contains(stack.getTypeId()); + return unlimited.contains(stack.getType()); } public void setUnlimited(ItemStack stack, boolean state) { - if (unlimited.contains(stack.getTypeId())) { - unlimited.remove(Integer.valueOf(stack.getTypeId())); + if (unlimited.contains(stack.getType())) { + unlimited.remove(stack.getType()); } if (state) { - unlimited.add(stack.getTypeId()); + unlimited.add(stack.getType()); } config.setProperty("unlimited", unlimited); config.save(); @@ -263,7 +273,7 @@ public abstract class UserData extends PlayerExtension implements IConf { if (config.isConfigurationSection("powertools")) { return config.getConfigurationSection("powertools").getValues(false); } - return new HashMap(); + return new HashMap<>(); } public void clearAllPowertools() { @@ -274,19 +284,19 @@ public abstract class UserData extends PlayerExtension implements IConf { @SuppressWarnings("unchecked") public List getPowertool(ItemStack stack) { - return (List) powertools.get("" + stack.getTypeId()); + return (List) powertools.get(stack.getType().name().toLowerCase(Locale.ENGLISH)); } @SuppressWarnings("unchecked") - public List getPowertool(int id) { - return (List) powertools.get("" + id); + public List getPowertool(Material material) { + return (List) powertools.get(material.name().toLowerCase(Locale.ENGLISH)); } public void setPowertool(ItemStack stack, List commandList) { if (commandList == null || commandList.isEmpty()) { - powertools.remove("" + stack.getTypeId()); + powertools.remove(stack.getType().name().toLowerCase(Locale.ENGLISH)); } else { - powertools.put("" + stack.getTypeId(), commandList); + powertools.put(stack.getType().name().toLowerCase(Locale.ENGLISH), commandList); } config.setProperty("powertools", powertools); config.save(); @@ -437,6 +447,22 @@ public abstract class UserData extends PlayerExtension implements IConf { config.save(); } + private boolean autoTeleportEnabled; + + private boolean _getAutoTeleportEnabled() { + return config.getBoolean("teleportauto", false); + } + + public boolean isAutoTeleportEnabled() { + return autoTeleportEnabled; + } + + public void setAutoTeleportEnabled(boolean set) { + autoTeleportEnabled = set; + config.setProperty("teleportauto", set); + config.save(); + } + private List ignoredPlayers; public List _getIgnoredPlayers() { @@ -468,10 +494,11 @@ public abstract class UserData extends PlayerExtension implements IConf { } public void setIgnoredPlayer(IUser user, boolean set) { + final String entry = user.getName().toLowerCase(Locale.ENGLISH); if (set) { - ignoredPlayers.add(user.getName().toLowerCase(Locale.ENGLISH)); + if (!ignoredPlayers.contains(entry)) ignoredPlayers.add(entry); } else { - ignoredPlayers.remove(user.getName().toLowerCase(Locale.ENGLISH)); + ignoredPlayers.remove(entry); } setIgnoredPlayers(ignoredPlayers); } @@ -831,7 +858,7 @@ public abstract class UserData extends PlayerExtension implements IConf { if (!config.isConfigurationSection("timestamps.command-cooldowns")) { return null; } - + // See saveCommandCooldowns() for deserialization explanation List> section = config.getMapList("timestamps.command-cooldowns"); HashMap result = new HashMap<>(); @@ -870,19 +897,19 @@ public abstract class UserData extends PlayerExtension implements IConf { saveCommandCooldowns(); } } - + public boolean clearCommandCooldown(Pattern pattern) { if (this.commandCooldowns == null) { return false; // false for no modification } - + if(this.commandCooldowns.remove(pattern) != null) { saveCommandCooldowns(); return true; } return false; } - + private void saveCommandCooldowns() { // Serialization explanation: // @@ -923,14 +950,14 @@ public abstract class UserData extends PlayerExtension implements IConf { save(); } - private boolean confirmPay = true; // players accept pay confirmation by default + private Boolean confirmPay; - public boolean _getConfirmPay() { - return config.getBoolean("confirm-pay", true); + private Boolean _getConfirmPay() { + return (Boolean) config.get("confirm-pay"); } public boolean isPromptingPayConfirm() { - return confirmPay; + return confirmPay != null ? confirmPay : ess.getSettings().isConfirmCommandEnabledByDefault("pay"); } public void setPromptingPayConfirm(boolean prompt) { @@ -939,14 +966,14 @@ public abstract class UserData extends PlayerExtension implements IConf { save(); } - private boolean confirmClear = true; // players accept clear confirmation by default + private Boolean confirmClear; - public boolean _getConfirmClear() { - return config.getBoolean("confirm-clear", true); + private Boolean _getConfirmClear() { + return (Boolean) config.get("confirm-clear"); } public boolean isPromptingClearConfirm() { - return confirmClear; + return confirmClear != null ? confirmClear : ess.getSettings().isConfirmCommandEnabledByDefault("clearinventory"); } public void setPromptingClearConfirm(boolean prompt) { diff --git a/Essentials/src/com/earth2me/essentials/Warps.java b/Essentials/src/com/earth2me/essentials/Warps.java index bff2f970f..f66fce9d5 100644 --- a/Essentials/src/com/earth2me/essentials/Warps.java +++ b/Essentials/src/com/earth2me/essentials/Warps.java @@ -6,13 +6,11 @@ import net.ess3.api.InvalidNameException; import net.ess3.api.InvalidWorldException; import org.bukkit.Location; import org.bukkit.Server; - import java.io.File; import java.io.IOException; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; - import static com.earth2me.essentials.I18n.tl; @@ -57,6 +55,11 @@ public class Warps implements IConf, net.ess3.api.IWarps { @Override public void setWarp(String name, Location loc) throws Exception { + setWarp(null, name, loc); + } + + @Override + public void setWarp(IUser user, String name, Location loc) throws Exception { String filename = StringUtil.sanitizeFileName(name); EssentialsConf conf = warpPoints.get(new StringIgnoreCase(name)); if (conf == null) { @@ -69,13 +72,28 @@ public class Warps implements IConf, net.ess3.api.IWarps { } conf.setProperty(null, loc); conf.setProperty("name", name); + if (user != null) conf.setProperty("lastowner", user.getBase().getUniqueId().toString()); try { conf.saveWithError(); } catch (IOException ex) { throw new IOException(tl("invalidWarpName")); } } - + + @Override + public UUID getLastOwner(String warp) throws WarpNotFoundException { + EssentialsConf conf = warpPoints.get(new StringIgnoreCase(warp)); + if (conf == null) { + throw new WarpNotFoundException(); + } + UUID uuid = null; + try { + uuid = UUID.fromString(conf.getString("lastowner")); + } + catch (Exception ex) {} + return uuid; + } + @Override public void removeWarp(String name) throws Exception { EssentialsConf conf = warpPoints.get(new StringIgnoreCase(name)); diff --git a/Essentials/src/com/earth2me/essentials/Worth.java b/Essentials/src/com/earth2me/essentials/Worth.java index d029f3f59..804797dd3 100644 --- a/Essentials/src/com/earth2me/essentials/Worth.java +++ b/Essentials/src/com/earth2me/essentials/Worth.java @@ -1,6 +1,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.NotEnoughArgumentsException; +import com.earth2me.essentials.utils.VersionUtil; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; @@ -21,57 +22,62 @@ public class Worth implements IConf { config.load(); } - public BigDecimal getPrice(ItemStack itemStack) { - String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); + /** + * Get the value of an item stack from the config. + * + * @param ess The Essentials instance. + * @param itemStack The item stack to look up in the config. + * @return The price from the config. + */ + public BigDecimal getPrice(IEssentials ess, ItemStack itemStack) { BigDecimal result; - //First check for matches with item name + String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); + + // Check for matches with data value from stack + // Note that we always default to BigDecimal.ONE.negate(), equivalent to -1 result = config.getBigDecimal("worth." + itemname + "." + itemStack.getDurability(), BigDecimal.ONE.negate()); + + // Check for matches with data value 0 if (result.signum() < 0) { final ConfigurationSection itemNameMatch = config.getConfigurationSection("worth." + itemname); if (itemNameMatch != null && itemNameMatch.getKeys(false).size() == 1) { result = config.getBigDecimal("worth." + itemname + ".0", BigDecimal.ONE.negate()); } } + + // Check for matches with data value wildcard if (result.signum() < 0) { result = config.getBigDecimal("worth." + itemname + ".*", BigDecimal.ONE.negate()); } + + // Check for matches with item name alone if (result.signum() < 0) { result = config.getBigDecimal("worth." + itemname, BigDecimal.ONE.negate()); } - //Now we should check for item ID - if (result.signum() < 0) { - result = config.getBigDecimal("worth." + itemStack.getTypeId() + "." + itemStack.getDurability(), BigDecimal.ONE.negate()); - } - if (result.signum() < 0) { - final ConfigurationSection itemNumberMatch = config.getConfigurationSection("worth." + itemStack.getTypeId()); - if (itemNumberMatch != null && itemNumberMatch.getKeys(false).size() == 1) { - result = config.getBigDecimal("worth." + itemStack.getTypeId() + ".0", BigDecimal.ONE.negate()); - } - } - if (result.signum() < 0) { - result = config.getBigDecimal("worth." + itemStack.getTypeId() + ".*", BigDecimal.ONE.negate()); - } - if (result.signum() < 0) { - result = config.getBigDecimal("worth." + itemStack.getTypeId(), BigDecimal.ONE.negate()); - } - - //This is to match the old worth syntax - if (result.signum() < 0) { - result = config.getBigDecimal("worth-" + itemStack.getTypeId(), BigDecimal.ONE.negate()); - } if (result.signum() < 0) { return null; } return result; } + /** + * Get the amount of items to be sold from a player's inventory. + * + * @param ess The Essentials instance. + * @param user The user attempting to sell the item. + * @param is A stack of the item to search the inventory for. + * @param args The amount to try to sell. + * @param isBulkSell Whether or not to try and bulk sell all items. + * @return The amount of items to sell from the player's inventory. + * @throws Exception Thrown if trying to sell air or an invalid amount. + */ public int getAmount(IEssentials ess, User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception { if (is == null || is.getType() == Material.AIR) { throw new Exception(tl("itemSellAir")); } - int id = is.getTypeId(); + int amount = 0; if (args.length > 1) { @@ -86,7 +92,7 @@ public class Worth implements IConf { } boolean stack = args.length > 1 && args[1].endsWith("s"); - boolean requireStack = ess.getSettings().isTradeInStacks(id); + boolean requireStack = ess.getSettings().isTradeInStacks(is.getType()); if (requireStack && !stack) { throw new Exception(tl("itemMustBeStacked")); @@ -123,14 +129,23 @@ public class Worth implements IConf { return amount; } - public void setPrice(ItemStack itemStack, double price) { - if (itemStack.getType().getData() == null) { - config.setProperty("worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), price); - } else { + /** + * Set the price of an item and save it to the config. + * + * @param ess The Essentials instance. + * @param itemStack A stack of the item to save. + * @param price The new price of the item. + */ + public void setPrice(IEssentials ess, ItemStack itemStack, double price) { + String path = "worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); + + // Spigot 1.13+ throws an exception if a 1.13+ plugin even *attempts* to do set data. + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01) && itemStack.getType().getData() == null) { // Bukkit-bug: getDurability still contains the correct value, while getData().getData() is 0. - config.setProperty("worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "") + "." + itemStack.getDurability(), price); + path = path + "." + itemStack.getDurability(); } - config.removeProperty("worth-" + itemStack.getTypeId()); + + config.setProperty(path, price); config.save(); } diff --git a/Essentials/src/com/earth2me/essentials/api/Economy.java b/Essentials/src/com/earth2me/essentials/api/Economy.java index cbd6215b2..82943da86 100644 --- a/Essentials/src/com/earth2me/essentials/api/Economy.java +++ b/Essentials/src/com/earth2me/essentials/api/Economy.java @@ -8,6 +8,7 @@ import com.earth2me.essentials.utils.StringUtil; import com.google.common.base.Charsets; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; +import org.bukkit.entity.Player; import java.io.File; import java.math.BigDecimal; @@ -18,7 +19,7 @@ import java.util.logging.Logger; /** - * Instead of using this api directly, we recommend to use the register plugin: http://bit.ly/RegisterMethod + * You should use Vault instead of directly using this class. */ public class Economy { public Economy() { @@ -64,7 +65,24 @@ public class Economy { if (name == null) { throw new RuntimeException("Economy username cannot be null"); } - return ess.getUser(name); + + User user = ess.getUser(name); + if (user == null) { + /* + Attempt lookup using UUID - this prevents balance resets when accessing economy + via Vault during player join. + See: https://github.com/EssentialsX/Essentials/issues/2400 + */ + Player player = ess.getServer().getPlayerExact(name); + if (player != null) { + user = ess.getUser(player.getUniqueId()); + if (user != null) { + logger.info(String.format("[Economy] Found player %s by UUID %s but not by their actual name - they may have changed their username", name, player.getUniqueId().toString())); + } + } + } + + return user; } /** @@ -78,7 +96,14 @@ public class Economy { */ @Deprecated public static double getMoney(String name) throws UserDoesNotExistException { - return getMoneyExact(name).doubleValue(); + BigDecimal exactAmount = getMoneyExact(name); + double amount = exactAmount.doubleValue(); + if (new BigDecimal(amount).compareTo(exactAmount) > 0) { + // closest double is bigger than the exact amount + // -> get the previous double value to not return more money than the user has + amount = Math.nextAfter(amount, Double.NEGATIVE_INFINITY); + } + return amount; } public static BigDecimal getMoneyExact(String name) throws UserDoesNotExistException { @@ -178,7 +203,7 @@ public class Economy { * Divides the balance of a user by a value * * @param name Name of the user - * @param value The balance is divided by this value + * @param amount The balance is divided by this value * * @throws UserDoesNotExistException If a user by that name does not exists * @throws NoLoanPermittedException If the user is not allowed to have a negative balance @@ -202,7 +227,7 @@ public class Economy { * Multiplies the balance of a user by a value * * @param name Name of the user - * @param value The balance is multiplied by this value + * @param amount The balance is multiplied by this value * * @throws UserDoesNotExistException If a user by that name does not exists * @throws NoLoanPermittedException If the user is not allowed to have a negative balance diff --git a/Essentials/src/com/earth2me/essentials/api/IItemDb.java b/Essentials/src/com/earth2me/essentials/api/IItemDb.java index cae937710..44f75bd32 100644 --- a/Essentials/src/com/earth2me/essentials/api/IItemDb.java +++ b/Essentials/src/com/earth2me/essentials/api/IItemDb.java @@ -1,24 +1,163 @@ package com.earth2me.essentials.api; +import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.MaterialUtil; +import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.StringUtil; +import net.ess3.api.IEssentials; +import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import java.util.Collection; import java.util.List; +import java.util.Locale; public interface IItemDb { - ItemStack get(final String name, final int quantity) throws Exception; + /** + * Create a stack from the given name with the given quantity. + * + * @param name Item name to look up in the database + * @param quantity Quantity of the item stack + * @return The requested item stack + * @throws Exception if the item stack cannot be created + */ + default ItemStack get(final String name, final int quantity) throws Exception { + final ItemStack stack = get(name.toLowerCase(Locale.ENGLISH)); + stack.setAmount(quantity); + return stack; + } + + /** + * Create a stack from the given name with the maximum stack size for that material. + * + * @param name Item name to look up in the database + * @return The requested item stack with the maximum stack size + * @throws Exception if the item stack cannot be created + */ ItemStack get(final String name) throws Exception; - String names(ItemStack item); + /** + * Get a comma-separated string list of up to 15 aliases for the given stack. + * + * @param item Item stack whose names to find + * @return Comma-separated list of up to 15 item names + */ + default String names(ItemStack item) { + List nameList = nameList(item); + if (nameList.size() > 15) { + nameList = nameList.subList(0, 14); + } + return StringUtil.joinList(", ", nameList); + }; + + /** + * Get a List of all aliases for the given item stack. + * + * @param item Item stack whose names to find + * @return List of all names + */ + List nameList(ItemStack item); + + /** + * Get the primary name for the given item stack. + * + * @param item Item stack whose name to find + * @return Primary name of the item + */ String name(ItemStack item); + /** + * Get all stacks in a given User's inventory that matches the given arguments. + * + * @param user The user with the player inventory to search + * @param args Either an item name, or one of the following: + * hand (default), inventory/invent/all, blocks + * @return A List of all matching ItemStacks + * @throws Exception if the given args are invalid or no blocks are found + */ List getMatching(User user, String[] args) throws Exception; + /** + * Serialise an ItemStack into a format that can be decoded by + * {@link #get(String) get} and + * {@link com.earth2me.essentials.MetaItemStack#parseStringMeta(CommandSource, boolean, String[], int, IEssentials)} MetaItemStack#parseStringMeta}. + * Used to encode items for kits. + * + * @param is Stack to serialise + * @return Serialised stack + */ String serialize(ItemStack is); + /** + * Return names recognised by the database, intended for tab-completion. + * + * @return Collection of all item names + */ Collection listNames(); + + /** + * Get the material matching the given legacy ID. Used for conversion from item IDs to + * modern names. + * + * @param id Legacy ID of material to find + * @return Updated material + */ + @Deprecated + default Material getFromLegacyId(int id) { + return getFromLegacy(id, (byte) 0); + } + + /** + * Get the legacy ID for the given material. + * + * @param material Material to look up + * @return Legacy ID of given material + * @throws Exception if the ID cannot be looked up + * @deprecated Item IDs are no longer supported. + */ + @Deprecated + int getLegacyId(Material material) throws Exception; + + /** + * Convert colon syntax (eg. "13", "1:5") legacy IDs to Material. Used for conversion from + * item IDs to modern names. + * + * @param item Legacy ID in colon syntax. + * @return + */ + default Material getFromLegacy(String item) { + final String[] split = item.split(":"); + + final int id = Integer.parseInt(split[0]); + byte damage = 0; + + if (split.length > 1 && NumberUtil.isInt(split[1])) { + damage = Byte.parseByte(split[1]); + } + + return getFromLegacy(id, damage); + } + + /** + * Convert legacy ID and damage value to Material. Used for conversion from item IDs to + * modern names. + * + * @param id Legacy ID + * @param damage Damage value + * @return Material + */ + default Material getFromLegacy(final int id, final byte damage) { + return MaterialUtil.convertFromLegacy(id, damage); + } + + /** + * Check whether the item database is loaded and ready for use. + * + * @return Whether items have finished loading + */ + boolean isReady(); } diff --git a/Essentials/src/com/earth2me/essentials/api/IWarps.java b/Essentials/src/com/earth2me/essentials/api/IWarps.java index 207b2afdb..3a5dcb7f1 100644 --- a/Essentials/src/com/earth2me/essentials/api/IWarps.java +++ b/Essentials/src/com/earth2me/essentials/api/IWarps.java @@ -1,11 +1,13 @@ package com.earth2me.essentials.api; import com.earth2me.essentials.IConf; +import com.earth2me.essentials.IUser; import com.earth2me.essentials.commands.WarpNotFoundException; import org.bukkit.Location; import java.io.File; import java.util.Collection; +import java.util.UUID; public interface IWarps extends IConf { @@ -54,6 +56,25 @@ public interface IWarps extends IConf { */ void setWarp(String name, Location loc) throws Exception; + /** + * Set a warp + * + * @param user - User of warp + * @param name - Name of warp + * @param loc - Location of warp + * + * @throws Exception + */ + void setWarp(IUser user, String name, Location loc) throws Exception; + + /** + * Gets Lastowner UUID + * + * @param name - Name of warp + * + * @throws WarpNotFoundException + */ + UUID getLastOwner(String warp) throws WarpNotFoundException; /** * Check to see if the file is empty * diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java index d9f73be86..09f56bba7 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java @@ -79,6 +79,7 @@ public class Commandafk extends EssentialsCommand { if (!msg.isEmpty()) { ess.broadcastMessage(user, msg); } + user.setDisplayNick(); // Set this again after toggling } @Override diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandback.java b/Essentials/src/com/earth2me/essentials/commands/Commandback.java index 618c84e7a..4e28ac0bb 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandback.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandback.java @@ -17,9 +17,17 @@ public class Commandback extends EssentialsCommand { if (user.getLastLocation() == null) { throw new Exception(tl("noLocationFound")); } - if (user.getWorld() != user.getLastLocation().getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + user.getLastLocation().getWorld().getName())) { - throw new Exception(tl("noPerm", "essentials.worlds." + user.getLastLocation().getWorld().getName())); + + String lastWorldName = user.getLastLocation().getWorld().getName(); + + if (user.getWorld() != user.getLastLocation().getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + lastWorldName)) { + throw new Exception(tl("noPerm", "essentials.worlds." + lastWorldName)); } + + if (!user.isAuthorized("essentials.back.into." + lastWorldName)) { + throw new Exception(tl("noPerm", "essentials.back.into." + lastWorldName)); + } + final Trade charge = new Trade(this.getName(), ess); charge.isAffordableFor(user); user.getTeleport().back(charge); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java b/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java index 395ff173f..1ba6bb56e 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java @@ -6,6 +6,7 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.utils.FormatUtil; import org.bukkit.BanList; import org.bukkit.Server; +import org.bukkit.entity.Player; import java.util.Collections; import java.util.List; @@ -14,7 +15,6 @@ import java.util.logging.Level; import static com.earth2me.essentials.I18n.tl; -//TODO: Add kick to online players matching ip ban. public class Commandbanip extends EssentialsCommand { public Commandbanip() { super("banip"); @@ -51,9 +51,17 @@ public class Commandbanip extends EssentialsCommand { banReason = tl("defaultBanReason"); } + String banDisplay = tl("banFormat", banReason, senderName); + ess.getServer().getBanList(BanList.Type.IP).addBan(ipAddress, banReason, null, senderName); server.getLogger().log(Level.INFO, tl("playerBanIpAddress", senderName, ipAddress, banReason)); + for (Player player : ess.getServer().getOnlinePlayers()) { + if (player.getAddress().getAddress().getHostAddress().equalsIgnoreCase(ipAddress)) { + player.kickPlayer(banDisplay); + } + } + ess.broadcastMessage("essentials.banip.notify", tl("playerBanIpAddress", senderName, ipAddress, banReason)); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java b/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java index e6ca18efa..19b217ba5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java @@ -27,6 +27,8 @@ public class Commandbigtree extends EssentialsCommand { tree = TreeType.BIG_TREE; } else if (args.length > 0 && args[0].equalsIgnoreCase("jungle")) { tree = TreeType.JUNGLE; + } else if (args.length > 0 && args[0].equalsIgnoreCase("darkoak")) { + tree = TreeType.DARK_OAK; } else { throw new NotEnoughArgumentsException(); } @@ -44,7 +46,7 @@ public class Commandbigtree extends EssentialsCommand { @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { if (args.length == 1) { - return Lists.newArrayList("redwood", "tree", "jungle"); + return Lists.newArrayList("redwood", "tree", "jungle", "darkoak"); } else { return Collections.emptyList(); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbook.java b/Essentials/src/com/earth2me/essentials/commands/Commandbook.java index 8883858c2..ea2934716 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbook.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbook.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.InventoryWorkaround; +import com.earth2me.essentials.utils.EnumUtil; import com.google.common.collect.Lists; import org.bukkit.Material; import org.bukkit.Server; @@ -15,11 +16,13 @@ import static com.earth2me.essentials.I18n.tl; public class Commandbook extends EssentialsCommand { + + private static final Material WRITABLE_BOOK = EnumUtil.getMaterial("WRITABLE_BOOK", "BOOK_AND_QUILL"); + public Commandbook() { super("book"); } - //TODO: Translate this @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { final ItemStack item = user.getItemInHand(); @@ -45,7 +48,7 @@ public class Commandbook extends EssentialsCommand { } } else { if (isAuthor(bmeta, player) || user.isAuthorized("essentials.book.others")) { - ItemStack newItem = new ItemStack(Material.BOOK_AND_QUILL, item.getAmount()); + ItemStack newItem = new ItemStack(WRITABLE_BOOK, item.getAmount()); newItem.setItemMeta(bmeta); InventoryWorkaround.setItemInMainHand(user.getBase(), newItem); user.sendMessage(tl("editBookContents")); @@ -53,7 +56,7 @@ public class Commandbook extends EssentialsCommand { throw new Exception(tl("denyBookEdit")); } } - } else if (item.getType() == Material.BOOK_AND_QUILL) { + } else if (item.getType() == WRITABLE_BOOK) { BookMeta bmeta = (BookMeta) item.getItemMeta(); if (!user.isAuthorized("essentials.book.author")) { bmeta.setAuthor(player); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbroadcastworld.java b/Essentials/src/com/earth2me/essentials/commands/Commandbroadcastworld.java index d289700a1..109f4efe1 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbroadcastworld.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbroadcastworld.java @@ -27,7 +27,25 @@ public class Commandbroadcastworld extends EssentialsCommand { @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - sendBroadcast(user.getWorld().getName(), user.getDisplayName(), getFinalArg(args, 0)); + World world = user.getWorld(); + String message = getFinalArg(args, 0); + + if (args.length < 1) { + throw new NotEnoughArgumentsException(); + } else if (args.length > 1 && ess.getSettings().isAllowWorldInBroadcastworld()) { + World argWorld = ess.getWorld(args[0]); + if (argWorld != null) { + world = argWorld; + message = getFinalArg(args, 1); + } + } + + if (world == null) { + world = user.getWorld(); + message = getFinalArg(args, 0); + } + + sendBroadcast(world.getName(), user.getDisplayName(), message); } @Override @@ -43,6 +61,9 @@ public class Commandbroadcastworld extends EssentialsCommand { if (world == null) { throw new Exception(tl("invalidWorld")); } + if (message.isEmpty()) { + throw new NotEnoughArgumentsException(); + } sendToWorld(world, tl("broadcast", FormatUtil.replaceFormat(message).replace("\\n", "\n"), name)); } @@ -63,7 +84,15 @@ public class Commandbroadcastworld extends EssentialsCommand { @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { - return Collections.emptyList(); // The argument is only for non-players + if (args.length == 1 && ess.getSettings().isAllowWorldInBroadcastworld()) { + List worlds = Lists.newArrayList(); + for (World world : server.getWorlds()) { + worlds.add(world.getName()); + } + return worlds; + } else { + return Collections.emptyList(); + } } @Override diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java b/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java index e5a433f09..338d780c4 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java @@ -8,15 +8,12 @@ import com.earth2me.essentials.craftbukkit.InventoryWorkaround; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.StringUtil; +import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Locale; +import java.util.*; public class Commandclearinventory extends EssentialsCommand { @@ -87,6 +84,7 @@ public class Commandclearinventory extends EssentialsCommand { short data = -1; int type = -1; int amount = -1; + final Set mats = new HashSet<>(); if (args.length > (offset + 1) && NumberUtil.isInt(args[(offset + 1)])) { amount = Integer.parseInt(args[(offset + 1)]); @@ -95,15 +93,15 @@ public class Commandclearinventory extends EssentialsCommand { if (args[offset].equalsIgnoreCase("**")) { type = -2; } else if (!args[offset].equalsIgnoreCase("*")) { - final String[] split = args[offset].split(":"); - final ItemStack item = ess.getItemDb().get(split[0]); - type = item.getTypeId(); + final String[] split = args[offset].split(","); - if (split.length > 1 && NumberUtil.isInt(split[1])) { - data = Short.parseShort(split[1]); - } else { - data = item.getDurability(); + for (String name : split) { + try { + mats.add(ess.getItemDb().get(name).getType()); + } catch (Exception ignored) {} } + + type = 1; } } @@ -113,40 +111,37 @@ public class Commandclearinventory extends EssentialsCommand { sender.sendMessage(tl("inventoryClearingAllItems", player.getDisplayName())); } InventoryWorkaround.clearInventoryNoArmor(player.getInventory()); + InventoryWorkaround.setItemInOffHand(player, null); } else if (type == -2) // type -2 represents double wildcard or all items and armor { if (showExtended) { sender.sendMessage(tl("inventoryClearingAllArmor", player.getDisplayName())); } InventoryWorkaround.clearInventoryNoArmor(player.getInventory()); + InventoryWorkaround.setItemInOffHand(player, null); player.getInventory().setArmorContents(null); } else { - if (data == -1) // data -1 means that all subtypes will be cleared - { - ItemStack stack = new ItemStack(type); - if (showExtended) { - sender.sendMessage(tl("inventoryClearingAllStack", stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName())); - } - player.getInventory().clear(type, data); - } else if (amount == -1) // amount -1 means all items will be cleared - { - ItemStack stack = new ItemStack(type, BASE_AMOUNT, data); - ItemStack removedStack = player.getInventory().removeItem(stack).get(0); - final int removedAmount = (BASE_AMOUNT - removedStack.getAmount()); - if (removedAmount > 0 || showExtended) { - sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName())); - } - } else { - if (amount < 0) { - amount = 1; - } - ItemStack stack = new ItemStack(type, amount, data); - if (player.getInventory().containsAtLeast(stack, amount)) { - sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName())); - player.getInventory().removeItem(stack); + for (Material mat : mats) { + if (amount == -1) // amount -1 means all items will be cleared + { + ItemStack stack = new ItemStack(mat, BASE_AMOUNT, data); + ItemStack removedStack = player.getInventory().removeItem(stack).get(0); + final int removedAmount = (BASE_AMOUNT - removedStack.getAmount()); + if (removedAmount > 0 || showExtended) { + sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName())); + } } else { - if (showExtended) { - sender.sendMessage(tl("inventoryClearFail", player.getDisplayName(), amount, stack.getType().toString().toLowerCase(Locale.ENGLISH))); + if (amount < 0) { + amount = 1; + } + ItemStack stack = new ItemStack(mat, amount); + if (player.getInventory().containsAtLeast(stack, amount)) { + sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName())); + player.getInventory().removeItem(stack); + } else { + if (showExtended) { + sender.sendMessage(tl("inventoryClearFail", player.getDisplayName(), amount, stack.getType().toString().toLowerCase(Locale.ENGLISH))); + } } } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java b/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java index 24b6aa85f..65525d18a 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java @@ -16,23 +16,23 @@ public class Commandcompass extends EssentialsCommand { final int bearing = (int) (user.getLocation().getYaw() + 180 + 360) % 360; String dir; if (bearing < 23) { - dir = "N"; + dir = tl("north"); } else if (bearing < 68) { - dir = "NE"; + dir = tl("northEast"); } else if (bearing < 113) { - dir = "E"; + dir = tl("east"); } else if (bearing < 158) { - dir = "SE"; + dir = tl("southEast"); } else if (bearing < 203) { - dir = "S"; + dir = tl("south"); } else if (bearing < 248) { - dir = "SW"; + dir = tl("southWest"); } else if (bearing < 293) { - dir = "W"; + dir = tl("west"); } else if (bearing < 338) { - dir = "NW"; + dir = tl("northWest"); } else { - dir = "N"; + dir = tl("north"); } user.sendMessage(tl("compassBearing", dir, bearing)); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandcreatekit.java b/Essentials/src/com/earth2me/essentials/commands/Commandcreatekit.java index 6318eb31f..5d6459087 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandcreatekit.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandcreatekit.java @@ -2,9 +2,8 @@ package com.earth2me.essentials.commands; import com.google.common.base.Charsets; import com.google.common.io.CharStreams; -import com.google.common.reflect.TypeToken; import com.google.gson.Gson; -import com.google.gson.stream.JsonWriter; +import com.google.gson.JsonObject; import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; @@ -24,12 +23,10 @@ import org.yaml.snakeyaml.representer.Representer; import java.io.InputStreamReader; import java.io.OutputStream; -import java.io.StringWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -37,8 +34,8 @@ import static com.earth2me.essentials.I18n.tl; public class Commandcreatekit extends EssentialsCommand { - private static final String PASTE_URL = "https://api.github.com/gists"; - private static final String SHORTENER_URL = "https://git.io"; + private static final String PASTE_URL = "https://hastebin.com/"; + private static final String PASTE_UPLOAD_URL = PASTE_URL + "documents"; private static final Gson GSON = new Gson(); private final ExecutorService executorService = Executors.newSingleThreadExecutor(); @@ -72,7 +69,7 @@ public class Commandcreatekit extends EssentialsCommand { } // Some users might want to directly write to config knowing the consequences. *shrug* if (!ess.getSettings().isPastebinCreateKit()) { - ess.getSettings().addKit(kitname, list, delay); + ess.getKits().addKit(kitname, list, delay); user.sendMessage(tl("createdKit", kitname, list.size(), delay)); } else { ConfigurationSection config = new MemoryConfiguration(); @@ -83,34 +80,22 @@ public class Commandcreatekit extends EssentialsCommand { String fileContents = "# Copy the kit code below into the kits section in your config.yml file\n"; fileContents += yaml.dump(config.getValues(false)); - gist(user.getSource(), kitname, delay, fileContents); + uploadPaste(user.getSource(), kitname, delay, fileContents); } } - /** - * SEE https://developer.github.com/v3/gists/#create-a-gist - */ - private void gist(final CommandSource sender, final String kitName, final long delay, final String contents) { + private void uploadPaste(final CommandSource sender, final String kitName, final long delay, final String contents) { executorService.submit(new Runnable() { @Override public void run() { try { - HttpURLConnection connection = (HttpURLConnection) new URL(PASTE_URL).openConnection(); + HttpURLConnection connection = (HttpURLConnection) new URL(PASTE_UPLOAD_URL).openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); + connection.setRequestProperty("User-Agent", "EssentialsX plugin"); try (OutputStream os = connection.getOutputStream()) { - StringWriter sw = new StringWriter(); - new JsonWriter(sw).beginObject() - .name("description").value(sender.getSender().getName() + ": /createkit " + kitName) - .name("public").value(false) - .name("files") - .beginObject().name("kit.yml") - .beginObject().name("content").value(contents) - .endObject() - .endObject() - .endObject(); - os.write(sw.toString().getBytes()); + os.write(contents.getBytes(Charsets.UTF_8)); } // Error if (connection.getResponseCode() >= 400) { @@ -120,25 +105,10 @@ public class Commandcreatekit extends EssentialsCommand { return; } - // Read URl - Map map = GSON.fromJson(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8), - new TypeToken>() {}.getType()); - String pasteUrl = map.get("html_url"); + // Read URL + JsonObject object = GSON.fromJson(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8), JsonObject.class); + String pasteUrl = PASTE_URL + object.get("key").getAsString(); connection.disconnect(); - - /* ================================ - * >> Shorten URL to fit in chat - * ================================ */ - { - connection = (HttpURLConnection) new URL(SHORTENER_URL).openConnection(); - connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - connection.setDoOutput(true); - pasteUrl = "url=" + pasteUrl; - try (OutputStream os = connection.getOutputStream()) { - os.write(pasteUrl.getBytes()); - } - pasteUrl = connection.getHeaderField("Location"); - } String separator = tl("createKitSeparator"); String delayFormat = "0"; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanddeljail.java b/Essentials/src/com/earth2me/essentials/commands/Commanddeljail.java index 4d0d2ef16..01643e81d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commanddeljail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commanddeljail.java @@ -19,6 +19,10 @@ public class Commanddeljail extends EssentialsCommand { throw new NotEnoughArgumentsException(); } + if (ess.getJails().getJail(args[0]) == null) { + throw new Exception(tl("jailNotExist")); + } + ess.getJails().removeJail(args[0]); sender.sendMessage(tl("deleteJail", args[0])); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanddisposal.java b/Essentials/src/com/earth2me/essentials/commands/Commanddisposal.java new file mode 100644 index 000000000..f4751e044 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/commands/Commanddisposal.java @@ -0,0 +1,20 @@ +package com.earth2me.essentials.commands; + +import com.earth2me.essentials.User; +import org.bukkit.Server; + +import static com.earth2me.essentials.I18n.tl; + +public class Commanddisposal extends EssentialsCommand { + + public Commanddisposal() { + super("disposal"); + } + + @Override + protected void run(Server server, User user, String commandLabel, String[] args) throws Exception { + user.sendMessage(tl("openingDisposal")); + user.getBase().openInventory(ess.getServer().createInventory(user.getBase(), 36, "Disposal")); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandeco.java b/Essentials/src/com/earth2me/essentials/commands/Commandeco.java index 0473714a0..ef8c1eaee 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandeco.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandeco.java @@ -71,7 +71,7 @@ public class Commandeco extends EssentialsLoopCommand { private void take(BigDecimal amount, final User player, final CommandSource sender) throws ChargeException { BigDecimal money = player.getMoney(); BigDecimal minBalance = ess.getSettings().getMinMoney(); - if (money.subtract(amount).compareTo(minBalance) > 0) { + if (money.subtract(amount).compareTo(minBalance) >= 0) { player.takeMoney(amount, sender); } else if (sender == null) { try { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java b/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java index 0a687d775..b3945e400 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandenchant.java @@ -46,7 +46,7 @@ public class Commandenchant extends EssentialsCommand { throw new NotEnoughArgumentsException(tl("enchantments", StringUtil.joinList(enchantmentslist.toArray()))); } - int level = -1; + int level = 1; if (args.length > 1) { try { level = Integer.parseInt(args[1]); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java index 12f3d59ac..329a31aba 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java @@ -4,10 +4,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.EssentialsUpgrade; import com.earth2me.essentials.User; import com.earth2me.essentials.UserMap; -import com.earth2me.essentials.metrics.Metrics; -import com.earth2me.essentials.utils.DateUtil; -import com.earth2me.essentials.utils.FloatUtil; -import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.*; import com.google.common.base.Charsets; import com.google.common.collect.Lists; import org.bukkit.Material; @@ -15,19 +12,19 @@ import org.bukkit.Server; import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginDescriptionFile; +import org.bukkit.plugin.PluginManager; -import java.io.IOException; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.UUID; +import java.util.*; import static com.earth2me.essentials.I18n.tl; // This command has 4 undocumented behaviours #EasterEgg public class Commandessentials extends EssentialsCommand { + + private final Sound NOTE_HARP = EnumUtil.valueOf(Sound.class, "BLOCK_NOTE_HARP", "NOTE_PIANO"); + public Commandessentials() { super("essentials"); } @@ -35,6 +32,27 @@ public class Commandessentials extends EssentialsCommand { private transient int taskid; private final transient Map noteBlocks = new HashMap(); + private final List versionPlugins = Arrays.asList( + "Vault", + "LuckPerms", + "PermissionsEx", + "GroupManager" + ); + + private final List officialPlugins = Arrays.asList( + "EssentialsAntiBuild", + "EssentialsChat", + "EssentialsGeoIP", + "EssentialsProtect", + "EssentialsSpawn", + "EssentialsXMPP" + ); + + private final List warnPlugins = Arrays.asList( + "PermissionsEx", + "GroupManager" + ); + @Override public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { if (args.length == 0) { @@ -47,14 +65,14 @@ public class Commandessentials extends EssentialsCommand { run_moo(server, sender, commandLabel, args); } else if (args[0].equalsIgnoreCase("reset")) { run_reset(server, sender, commandLabel, args); - } else if (args[0].equalsIgnoreCase("opt-out")) { - run_optout(server, sender, commandLabel, args); } else if (args[0].equalsIgnoreCase("cleanup")) { run_cleanup(server, sender, commandLabel, args); } else if (args[0].equalsIgnoreCase("uuidconvert")) { run_uuidconvert(server, sender, commandLabel, args); } else if (args[0].equalsIgnoreCase("uuidtest")) { run_uuidtest(server, sender, commandLabel, args); + } else if (args[0].equalsIgnoreCase("version")) { + run_version(server, sender, commandLabel, args); } else { run_reload(server, sender, commandLabel, args); } @@ -137,15 +155,9 @@ public class Commandessentials extends EssentialsCommand { if (note == null || note.isEmpty()) { return; } - Sound noteHarp; - try { - noteHarp = Sound.valueOf("NOTE_PIANO"); // pre-1.9, referenced internally as note.harp - } catch (IllegalArgumentException e) { - noteHarp = Sound.valueOf("BLOCK_NOTE_HARP"); // 1.9 - } for (Player onlinePlayer : ess.getOnlinePlayers()) { - onlinePlayer.playSound(onlinePlayer.getLocation(), noteHarp, 1, noteMap.get(note)); + onlinePlayer.playSound(onlinePlayer.getLocation(), NOTE_HARP, 1, noteMap.get(note)); } } }, 20, 2); @@ -165,12 +177,8 @@ public class Commandessentials extends EssentialsCommand { private final String[] playerMoo = new String[]{" (__)", " (oo)", " /------\\/", " / | | |", " * /\\---/\\", " ~~ ~~", "....\"Have you mooed today?\"..."}; private void run_moo(final Server server, final CommandSource sender, final String command, final String args[]) { - Sound moo; - try { - moo = Sound.valueOf("COW_IDLE"); // pre-1.9 - } catch (IllegalArgumentException e) { - moo = Sound.valueOf("ENTITY_COW_MILK"); // 1.9 - } + Sound moo = EnumUtil.valueOf(Sound.class, "COW_IDLE", "ENTITY_COW_MILK"); + if (args.length == 2 && args[1].equals("moo")) { for (String s : consoleMoo) { logger.info(s); @@ -191,19 +199,6 @@ public class Commandessentials extends EssentialsCommand { } } - private void run_optout(final Server server, final CommandSource sender, final String command, final String args[]) { - final Metrics metrics = ess.getMetrics(); - - sender.sendMessage("Essentials collects simple metrics to highlight which features to concentrate work on in the future."); - if (metrics.isOptOut()) { - metrics.enable(); - } else { - metrics.disable(); - } - sender.sendMessage("Anonymous Metrics are now " + (metrics.isOptOut() ? "disabled" : "enabled") + " for EssentialsX until server restart."); - sender.sendMessage("To " + (metrics.isOptOut() ? "disable" : "enable") + " them for all plugins permanently, see the bStats config."); - } - private void run_cleanup(final Server server, final CommandSource sender, final String command, final String args[]) throws Exception { if (args.length < 2 || !NumberUtil.isInt(args[1])) { sender.sendMessage("This sub-command will delete users who havent logged in in the last days."); @@ -307,6 +302,69 @@ public class Commandessentials extends EssentialsCommand { sender.sendMessage("Offline Mode UUID: " + offlineuuid.toString()); } + private void run_version(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { + if (sender.isPlayer() && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.version")) return; + + boolean isMismatched = false; + boolean isVaultInstalled = false; + boolean isUnsupported = false; + final boolean isServerSupported = VersionUtil.isServerSupported(); + final PluginManager pm = server.getPluginManager(); + final String essVer = pm.getPlugin("Essentials").getDescription().getVersion(); + + sender.sendMessage(tl(isServerSupported ? "versionOutputFine" : "versionOutputWarn", "Server", server.getBukkitVersion() + " " + server.getVersion())); + sender.sendMessage(tl("versionOutputFine", "EssentialsX", essVer)); + + for (Plugin plugin : pm.getPlugins()) { + final PluginDescriptionFile desc = plugin.getDescription(); + String name = desc.getName(); + String version = desc.getVersion(); + + if (name.startsWith("Essentials") && !name.equalsIgnoreCase("Essentials")) { + if (officialPlugins.contains(name)) { + name = name.replace("Essentials", "EssentialsX"); + + if (!version.equalsIgnoreCase(essVer)) { + isMismatched = true; + sender.sendMessage(tl("versionOutputWarn", name, version)); + } else { + sender.sendMessage(tl("versionOutputFine", name, version)); + } + } else { + sender.sendMessage(tl("versionOutputUnsupported", name, version)); + isUnsupported = true; + } + } + + if (versionPlugins.contains(name)) { + if (warnPlugins.contains(name)) { + sender.sendMessage(tl("versionOutputUnsupported", name, version)); + isUnsupported = true; + } else { + sender.sendMessage(tl("versionOutputFine", name, version)); + } + } + + if (name.equals("Vault")) isVaultInstalled = true; + } + + if (isMismatched) { + sender.sendMessage(tl("versionMismatchAll")); + } + + if (!isVaultInstalled) { + sender.sendMessage(tl("versionOutputVaultMissing")); + } + + if (isUnsupported) { + sender.sendMessage(tl("versionOutputUnsupportedPlugins")); + } + + if (!VersionUtil.isServerSupported()) { + sender.sendMessage(tl("serverUnsupported")); + } + } + @Override protected List getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) { if (args.length == 1) { @@ -316,10 +374,10 @@ public class Commandessentials extends EssentialsCommand { //options.add("nya"); //options.add("moo"); options.add("reset"); - options.add("opt-out"); options.add("cleanup"); //options.add("uuidconvert"); //options.add("uuidtest"); + options.add("version"); return options; } else if (args[0].equalsIgnoreCase("debug")) { // No args @@ -333,8 +391,6 @@ public class Commandessentials extends EssentialsCommand { if (args.length == 2) { return getPlayers(server, sender); } - } else if (args[0].equalsIgnoreCase("opt-out")) { - // No args } else if (args[0].equalsIgnoreCase("cleanup")) { if (args.length == 2) { return COMMON_DURATIONS; @@ -349,6 +405,8 @@ public class Commandessentials extends EssentialsCommand { if (args.length == 2) { return getPlayers(server, sender); } + } else if (args[0].equalsIgnoreCase("version")) { + // No args } else { // No args } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandfirework.java b/Essentials/src/com/earth2me/essentials/commands/Commandfirework.java index 2087d78d6..65dfabed9 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandfirework.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandfirework.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.MetaItemStack; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.MaterialUtil; import com.earth2me.essentials.utils.NumberUtil; import com.google.common.collect.Lists; import org.bukkit.DyeColor; @@ -43,8 +44,8 @@ public class Commandfirework extends EssentialsCommand { @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - final ItemStack stack = user.getBase().getItemInHand(); - if (stack.getType() == Material.FIREWORK) { + final ItemStack stack = user.getItemInHand(); + if (MaterialUtil.isFirework(stack.getType())) { if (args.length > 0) { if (args[0].equalsIgnoreCase("clear")) { FireworkMeta fmeta = (FireworkMeta) stack.getItemMeta(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java index 47f81e7c3..b43d0d1b0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java @@ -31,9 +31,9 @@ public class Commandgive extends EssentialsCommand { } ItemStack stack = ess.getItemDb().get(args[1]); - final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); - if (sender.isPlayer() && (ess.getSettings().permissionBasedItemSpawn() ? (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-all") && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + itemname) && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.exempt") && !ess.getUser(sender.getPlayer()).canSpawnItem(stack.getTypeId())))) { + + if (sender.isPlayer() && !ess.getUser(sender.getPlayer()).canSpawnItem(stack.getType())) { throw new Exception(tl("cantSpawnItem", itemname)); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgod.java b/Essentials/src/com/earth2me/essentials/commands/Commandgod.java index 295f2c619..4df72fa5c 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgod.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgod.java @@ -30,7 +30,7 @@ public class Commandgod extends EssentialsToggleCommand { } final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null; - final GodStatusChangeEvent godEvent = new GodStatusChangeEvent(controller, user, enabled); + final GodStatusChangeEvent godEvent = new GodStatusChangeEvent(user, controller, enabled); ess.getServer().getPluginManager().callEvent(godEvent); if (!godEvent.isCancelled()) { user.setGodModeEnabled(enabled); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhat.java b/Essentials/src/com/earth2me/essentials/commands/Commandhat.java index e77438208..4ba918945 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhat.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhat.java @@ -33,8 +33,8 @@ public class Commandhat extends EssentialsCommand { user.sendMessage(tl("hatRemoved")); } } else { - if (user.getBase().getItemInHand().getType() != Material.AIR) { - final ItemStack hand = user.getBase().getItemInHand(); + final ItemStack hand = user.getItemInHand(); + if (hand != null && hand.getType() != Material.AIR) { if (hand.getType().getMaxDurability() == 0) { final PlayerInventory inv = user.getBase().getInventory(); final ItemStack head = inv.getHelmet(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java index 2bae7df6a..00c1b39ea 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java @@ -25,12 +25,14 @@ public class Commanditem extends EssentialsCommand { if (args.length < 1) { throw new NotEnoughArgumentsException(); } + ItemStack stack = ess.getItemDb().get(args[0]); final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); - if (ess.getSettings().permissionBasedItemSpawn() ? (!user.isAuthorized("essentials.itemspawn.item-all") && !user.isAuthorized("essentials.itemspawn.item-" + itemname) && !user.isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!user.isAuthorized("essentials.itemspawn.exempt") && !user.canSpawnItem(stack.getTypeId()))) { + if (!user.canSpawnItem(stack.getType())) { throw new Exception(tl("cantSpawnItem", itemname)); } + try { if (args.length > 1 && Integer.parseInt(args[1]) > 0) { stack.setAmount(Integer.parseInt(args[1])); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java b/Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java index b4015558c..6a105754d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; +import com.earth2me.essentials.utils.VersionUtil; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.inventory.ItemStack; @@ -21,9 +22,9 @@ public class Commanditemdb extends EssentialsCommand { ItemStack itemStack = null; boolean itemHeld = false; if (args.length < 1) { - if (sender.isPlayer()) { + if (sender.isPlayer() && sender.getPlayer() != null) { itemHeld = true; - itemStack = sender.getPlayer().getItemInHand(); + itemStack = ess.getUser(sender.getPlayer()).getItemInHand(); } if (itemStack == null) { throw new NotEnoughArgumentsException(); @@ -31,7 +32,19 @@ public class Commanditemdb extends EssentialsCommand { } else { itemStack = ess.getItemDb().get(args[0]); } - sender.sendMessage(tl("itemType", itemStack.getType().toString(), itemStack.getTypeId() + ":" + Integer.toString(itemStack.getDurability()))); + + String itemId = "none"; + + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) { + itemId = itemStack.getType().getId() + ":" + itemStack.getDurability(); + } + + sender.sendMessage(tl("itemType", itemStack.getType().toString(), itemId)); + + // Don't send IDs twice + if (!tl("itemType").contains("{1}") && !itemId.equals("none")) { + sender.sendMessage(tl("itemId", itemId)); + } if (itemHeld && itemStack.getType() != Material.AIR) { int maxuses = itemStack.getType().getMaxDurability(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandjails.java b/Essentials/src/com/earth2me/essentials/commands/Commandjails.java index 3ee469712..e48bf2153 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandjails.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandjails.java @@ -4,6 +4,10 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.utils.StringUtil; import org.bukkit.Server; +import java.util.Collection; + +import static com.earth2me.essentials.I18n.tl; + public class Commandjails extends EssentialsCommand { public Commandjails() { @@ -12,6 +16,10 @@ public class Commandjails extends EssentialsCommand { @Override protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { - sender.sendMessage("§7" + StringUtil.joinList(" ", ess.getJails().getList())); + if (ess.getJails().getCount() < 1) { + sender.sendMessage(tl("noJailsDefined")); + } else { + sender.sendMessage(tl("jailList", StringUtil.joinList(" ", ess.getJails().getList()))); + } } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkickall.java b/Essentials/src/com/earth2me/essentials/commands/Commandkickall.java index 5c96af2c2..303adfc5d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkickall.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkickall.java @@ -20,7 +20,9 @@ public class Commandkickall extends EssentialsCommand { for (Player onlinePlayer : ess.getOnlinePlayers()) { if (!sender.isPlayer() || !onlinePlayer.getName().equalsIgnoreCase(sender.getPlayer().getName())) { - onlinePlayer.kickPlayer(kickReason); + if (!ess.getUser(onlinePlayer).isAuthorized("essentials.kickall.exempt")) { + onlinePlayer.kickPlayer(kickReason); + } } } sender.sendMessage(tl("kickedAll")); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java index a46518d21..5779deff7 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java @@ -23,7 +23,7 @@ public class Commandkit extends EssentialsCommand { @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { - final String kitList = Kit.listKits(ess, user); + final String kitList = ess.getKits().listKits(ess, user); user.sendMessage(kitList.length() > 0 ? tl("kits", kitList) : tl("noKits")); throw new NoChargeException(); } else if (args.length > 1 && user.isAuthorized("essentials.kit.others")) { @@ -39,7 +39,7 @@ public class Commandkit extends EssentialsCommand { @Override public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 2) { - final String kitList = Kit.listKits(ess, null); + final String kitList = ess.getKits().listKits(ess, null); sender.sendMessage(kitList.length() > 0 ? tl("kits", kitList) : tl("noKits")); throw new NoChargeException(); } else { @@ -106,7 +106,7 @@ public class Commandkit extends EssentialsCommand { if (args.length == 1) { List options = new ArrayList<>(); // TODO: Move all of this to its own method - for (String kitName : ess.getSettings().getKits().getKeys(false)) { + for (String kitName : ess.getKits().getKits().getKeys(false)) { if (!user.isAuthorized("essentials.kits." + kitName)) { // Only check perm, not time or money continue; } @@ -123,7 +123,7 @@ public class Commandkit extends EssentialsCommand { @Override protected List getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) { if (args.length == 1) { - return new ArrayList<>(ess.getSettings().getKits().getKeys(false)); // TODO: Move this to its own method + return new ArrayList<>(ess.getKits().getKits().getKeys(false)); // TODO: Move this to its own method } else if (args.length == 2) { return getPlayers(server, sender); } else { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java index 5fd17b152..663b398f6 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java @@ -56,8 +56,7 @@ public class Commandmail extends EssentialsCommand { throw new Exception(tl("playerNeverOnServer", args[1])); } - String mail = tl("mailFormat", user.getName(), StringUtil.sanitizeString(FormatUtil.stripFormat(getFinalArg(args, 2)))); - mail = FormatUtil.formatMessage(user, "essentials.mail", mail); + String mail = tl("mailFormat", user.getName(), FormatUtil.formatMessage(user, "essentials.mail", StringUtil.sanitizeString(FormatUtil.stripFormat(getFinalArg(args, 2))))); if (mail.length() > 1000) { throw new Exception(tl("mailTooLong")); } @@ -82,7 +81,8 @@ public class Commandmail extends EssentialsCommand { if (!user.isAuthorized("essentials.mail.sendall")) { throw new Exception(tl("noPerm", "essentials.mail.sendall")); } - ess.runTaskAsynchronously(new SendAll(tl("mailFormat", user.getName(), FormatUtil.stripFormat(getFinalArg(args, 1))))); + ess.runTaskAsynchronously(new SendAll(tl("mailFormat", user.getName(), + FormatUtil.formatMessage(user, "essentials.mail", StringUtil.sanitizeString(FormatUtil.stripFormat(getFinalArg(args, 1))))))); user.sendMessage(tl("mailSent")); return; } @@ -105,11 +105,11 @@ public class Commandmail extends EssentialsCommand { if (u == null) { throw new Exception(tl("playerNeverOnServer", args[1])); } - u.addMail(tl("mailFormat", "Server", getFinalArg(args, 2))); + u.addMail(tl("mailFormat", "Server", FormatUtil.replaceFormat(getFinalArg(args, 2)))); sender.sendMessage(tl("mailSent")); return; } else if (args.length >= 2 && "sendall".equalsIgnoreCase(args[0])) { - ess.runTaskAsynchronously(new SendAll(tl("mailFormat", "Server", getFinalArg(args, 1)))); + ess.runTaskAsynchronously(new SendAll(tl("mailFormat", "Server", FormatUtil.replaceFormat(getFinalArg(args, 1))))); sender.sendMessage(tl("mailSent")); return; } else if (args.length >= 2) { @@ -118,7 +118,7 @@ public class Commandmail extends EssentialsCommand { if (u == null) { throw new Exception(tl("playerNeverOnServer", args[0])); } - u.addMail(tl("mailFormat", "Server", getFinalArg(args, 1))); + u.addMail(tl("mailFormat", "Server", FormatUtil.replaceFormat(getFinalArg(args, 1)))); sender.sendMessage(tl("mailSent")); return; } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmore.java b/Essentials/src/com/earth2me/essentials/commands/Commandmore.java index 3a08a4966..2109d176b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmore.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmore.java @@ -16,15 +16,16 @@ public class Commandmore extends EssentialsCommand { @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - final ItemStack stack = user.getBase().getItemInHand(); + final ItemStack stack = user.getItemInHand(); if (stack == null) { throw new Exception(tl("cantSpawnItem", "Air")); } + if (stack.getAmount() >= ((user.isAuthorized("essentials.oversizedstacks")) ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize())) { throw new Exception(tl("fullStack")); } final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); - if (ess.getSettings().permissionBasedItemSpawn() ? (!user.isAuthorized("essentials.itemspawn.item-all") && !user.isAuthorized("essentials.itemspawn.item-" + itemname) && !user.isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!user.isAuthorized("essentials.itemspawn.exempt") && !user.canSpawnItem(stack.getTypeId()))) { + if (!user.canSpawnItem(stack.getType())) { throw new Exception(tl("cantSpawnItem", itemname)); } if (user.isAuthorized("essentials.oversizedstacks")) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java index c5ba7386e..93e13002d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java @@ -55,16 +55,16 @@ public class Commandnick extends EssentialsLoopCommand { @Override protected void updatePlayer(final Server server, final CommandSource sender, final User target, final String[] args) throws NotEnoughArgumentsException { final String nick = args[0]; - if (target.getName().equalsIgnoreCase(nick)) { + if ("off".equalsIgnoreCase(nick)) { + setNickname(server, sender, target, null); + target.sendMessage(tl("nickNoMore")); + } else if (target.getName().equalsIgnoreCase(nick)) { String oldName = target.getDisplayName(); setNickname(server, sender, target, nick); if (!target.getDisplayName().equalsIgnoreCase(oldName)) { target.sendMessage(tl("nickNoMore")); } target.sendMessage(tl("nickSet", target.getDisplayName())); - } else if ("off".equalsIgnoreCase(nick)) { - setNickname(server, sender, target, null); - target.sendMessage(tl("nickNoMore")); } else if (nickInUse(server, target, nick)) { throw new NotEnoughArgumentsException(tl("nickInUse")); } else { @@ -75,7 +75,7 @@ public class Commandnick extends EssentialsLoopCommand { private String formatNickname(final User user, final String nick) throws Exception { String newNick = user == null ? FormatUtil.replaceFormat(nick) : FormatUtil.formatString(user, "essentials.nick", nick); - if (!newNick.matches("^[a-zA-Z_0-9\u00a7]+$")) { + if (!newNick.matches("^[a-zA-Z_0-9\u00a7]+$") && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) { throw new Exception(tl("nickNamesAlpha")); } else if (getNickLength(newNick) > ess.getSettings().getMaxNickLength()) { throw new Exception(tl("nickTooLong")); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java b/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java index 4e4d1d67b..fc97fb298 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java @@ -31,7 +31,7 @@ public class Commandrealname extends EssentialsCommand { final String displayName = FormatUtil.stripFormat(u.getDisplayName()).toLowerCase(Locale.ENGLISH); if (displayName.contains(whois)) { foundUser = true; - sender.sendMessage(u.getDisplayName() + " " + tl("is") + " " + u.getName()); + sender.sendMessage(tl("realName", u.getDisplayName(), u.getName())); } } if (!foundUser) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java index dd957fe41..f0d4ec805 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java @@ -2,7 +2,9 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.VersionUtil; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.inventory.*; @@ -19,13 +21,20 @@ import net.ess3.nms.refl.ReflUtil; public class Commandrecipe extends EssentialsCommand { + + private static final Material FIREWORK_ROCKET = EnumUtil.getMaterial("FIREWORK_ROCKET", "FIREWORK"); + private static final Material FIREWORK_STAR = EnumUtil.getMaterial("FIREWORK_STAR", "FIREWORK_CHARGE"); + private static final Material GUNPOWDER = EnumUtil.getMaterial("GUNPOWDER", "SULPHUR"); + public Commandrecipe() { super("recipe"); } private void disableCommandForVersion1_12() throws Exception { - if (ReflUtil.getNmsVersionObject().equals(ReflUtil.V1_12_R1)) { - throw new Exception("/recipe is temporarily disabled. Please use the recipe book in your inventory."); + VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion(); + if (version.isHigherThanOrEqualTo(VersionUtil.v1_12_0_R01) + && !ess.getSettings().isForceEnableRecipe()) { + throw new Exception("Please use the recipe book in your inventory."); } } @@ -64,11 +73,11 @@ public class Commandrecipe extends EssentialsCommand { } else if (selectedRecipe instanceof ShapedRecipe) { shapedRecipe(sender, (ShapedRecipe) selectedRecipe, sender.isPlayer()); } else if (selectedRecipe instanceof ShapelessRecipe) { - if (recipesOfType.size() == 1 && itemType.getType() == Material.FIREWORK) { + if (recipesOfType.size() == 1 && (itemType.getType() == FIREWORK_ROCKET)) { ShapelessRecipe shapelessRecipe = new ShapelessRecipe(itemType); - shapelessRecipe.addIngredient(Material.SULPHUR); + shapelessRecipe.addIngredient(GUNPOWDER); shapelessRecipe.addIngredient(Material.PAPER); - shapelessRecipe.addIngredient(Material.FIREWORK_CHARGE); + shapelessRecipe.addIngredient(FIREWORK_STAR); shapelessRecipe(sender, shapelessRecipe, sender.isPlayer()); } else { shapelessRecipe(sender, (ShapelessRecipe) selectedRecipe, sender.isPlayer()); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java index 0d4cfbe41..174119ed5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java @@ -4,6 +4,7 @@ import com.earth2me.essentials.ChargeException; import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import com.earth2me.essentials.utils.StringUtil; +import com.earth2me.essentials.utils.VersionUtil; import com.google.common.collect.Lists; import net.ess3.api.IUser; import org.bukkit.Material; @@ -38,7 +39,7 @@ public class Commandrepair extends EssentialsCommand { } public void repairHand(User user) throws Exception { - final ItemStack item = user.getBase().getItemInHand(); + final ItemStack item = user.getItemInHand(); if (item == null || item.getType().isBlock() || item.getDurability() == 0) { throw new Exception(tl("repairInvalidType")); } @@ -48,7 +49,7 @@ public class Commandrepair extends EssentialsCommand { } final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH); - final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + item.getTypeId(), new Trade("repair-item", ess), ess), ess); + final Trade charge = getCharge(item.getType()); charge.isAffordableFor(user); @@ -76,7 +77,7 @@ public class Commandrepair extends EssentialsCommand { } private void repairItem(final ItemStack item) throws Exception { - final Material material = Material.getMaterial(item.getTypeId()); + final Material material = item.getType(); if (material.isBlock() || material.getMaxDurability() < 1) { throw new Exception(tl("repairInvalidType")); } @@ -88,13 +89,15 @@ public class Commandrepair extends EssentialsCommand { item.setDurability((short) 0); } - private void repairItems(final ItemStack[] items, final IUser user, final List repaired) { + private void repairItems(final ItemStack[] items, final IUser user, final List repaired) throws Exception { for (ItemStack item : items) { if (item == null || item.getType().isBlock() || item.getDurability() == 0) { continue; } + final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH); - final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + item.getTypeId(), new Trade("repair-item", ess), ess), ess); + final Trade charge = getCharge(item.getType()); + try { charge.isAffordableFor(user); } catch (ChargeException ex) { @@ -119,6 +122,16 @@ public class Commandrepair extends EssentialsCommand { } } + private Trade getCharge(final Material material) { + final String itemName = material.toString().toLowerCase(Locale.ENGLISH); + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) { + final int itemId = material.getId(); + return new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + itemId, new Trade("repair-item", ess), ess), ess); + } else { + return new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-item", ess), ess); + } + } + @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { if (args.length == 1) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandseen.java b/Essentials/src/com/earth2me/essentials/commands/Commandseen.java index 11c26ba4c..312653a81 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandseen.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandseen.java @@ -28,16 +28,16 @@ public class Commandseen extends EssentialsCommand { @Override protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { - seen(server, sender, commandLabel, args, true, true, true); + seen(server, sender, commandLabel, args, true, true, true, true); } @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - seen(server, user.getSource(), commandLabel, args, user.isAuthorized("essentials.seen.banreason"), user.isAuthorized("essentials.seen.extra"), user.isAuthorized("essentials.seen.ipsearch")); + seen(server, user.getSource(), commandLabel, args, user.isAuthorized("essentials.seen.banreason"), user.isAuthorized("essentials.seen.ip"), user.isAuthorized("essentials.seen.location"), user.isAuthorized("essentials.seen.ipsearch")); } protected void seen(final Server server, final CommandSource sender, final String commandLabel, final String[] args, - final boolean showBan, final boolean extra, final boolean ipLookup) throws Exception { + final boolean showBan, final boolean showIp, final boolean showLocation, final boolean ipLookup) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } @@ -80,23 +80,23 @@ public class Commandseen extends EssentialsCommand { if (user == null) { throw new PlayerNotFoundException(); } - showSeenMessage(server, sender, user, showBan, extra); + showSeenMessage(server, sender, user, showBan, showIp, showLocation); } }); } else { - showSeenMessage(server, sender, player, showBan, extra); + showSeenMessage(server, sender, player, showBan, showIp, showLocation); } } - private void showSeenMessage(Server server, CommandSource sender, User player, boolean showBan, boolean extra) throws Exception { + private void showSeenMessage(Server server, CommandSource sender, User player, boolean showBan, boolean showIp, boolean showLocation) throws Exception { if (player.getBase().isOnline() && canInteractWith(sender, player)) { - seenOnline(server, sender, player, showBan, extra); + seenOnline(server, sender, player, showBan, showIp, showLocation); } else { - seenOffline(server, sender, player, showBan, extra); + seenOffline(server, sender, player, showBan, showIp, showLocation); } } - private void seenOnline(final Server server, final CommandSource sender, final User user, final boolean showBan, final boolean extra) throws Exception { + private void seenOnline(final Server server, final CommandSource sender, final User user, final boolean showBan, final boolean showIp, final boolean showLocation) throws Exception { user.setDisplayNick(); sender.sendMessage(tl("seenOnline", user.getDisplayName(), DateUtil.formatDateDiff(user.getLastLogin()))); @@ -128,12 +128,12 @@ public class Commandseen extends EssentialsCommand { if (location != null && (!(sender.isPlayer()) || ess.getUser(sender.getPlayer()).isAuthorized("essentials.geoip.show"))) { sender.sendMessage(tl("whoisGeoLocation", location)); } - if (extra) { + if (showIp) { sender.sendMessage(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())); } } - private void seenOffline(final Server server, final CommandSource sender, User user, final boolean showBan, final boolean extra) throws Exception { + private void seenOffline(final Server server, final CommandSource sender, User user, final boolean showBan, final boolean showIp, final boolean showLocation) throws Exception { user.setDisplayNick(); if (user.getLastLogout() > 0) { sender.sendMessage(tl("seenOffline", user.getName(), DateUtil.formatDateDiff(user.getLastLogout()))); @@ -177,10 +177,12 @@ public class Commandseen extends EssentialsCommand { if (location != null && (!(sender.isPlayer()) || ess.getUser(sender.getPlayer()).isAuthorized("essentials.geoip.show"))) { sender.sendMessage(tl("whoisGeoLocation", location)); } - if (extra) { + if (showIp) { if (!user.getLastLoginAddress().isEmpty()) { sender.sendMessage(tl("whoisIPAddress", user.getLastLoginAddress())); } + } + if (showLocation) { final Location loc = user.getLogoutLocation(); if (loc != null) { sender.sendMessage(tl("whoisLocation", loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java index 8c775bcd3..e6c41a98b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java @@ -69,7 +69,7 @@ public class Commandsell extends EssentialsCommand { private BigDecimal sellItem(User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception { int amount = ess.getWorth().getAmount(ess, user, is, args, isBulkSell); - BigDecimal worth = ess.getWorth().getPrice(is); + BigDecimal worth = ess.getWorth().getPrice(ess, is); if (worth == null) { throw new Exception(tl("itemCannotBeSold")); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsetwarp.java b/Essentials/src/com/earth2me/essentials/commands/Commandsetwarp.java index 796fa1fb4..a6cf878f6 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsetwarp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsetwarp.java @@ -36,7 +36,7 @@ public class Commandsetwarp extends EssentialsCommand { } if (warpLoc == null || user.isAuthorized("essentials.warp.overwrite." + StringUtil.safeString(args[0]))) { - warps.setWarp(args[0], loc); + warps.setWarp(user, args[0], loc); } else { throw new Exception(tl("warpOverwrite")); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsetworth.java b/Essentials/src/com/earth2me/essentials/commands/Commandsetworth.java index efde7ee97..d3e61c528 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsetworth.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsetworth.java @@ -31,7 +31,7 @@ public class Commandsetworth extends EssentialsCommand { price = args[1]; } - ess.getWorth().setPrice(stack, FloatUtil.parseDouble(price)); + ess.getWorth().setPrice(ess, stack, FloatUtil.parseDouble(price)); user.sendMessage(tl("worthSet")); } @@ -42,7 +42,7 @@ public class Commandsetworth extends EssentialsCommand { } ItemStack stack = ess.getItemDb().get(args[0]); - ess.getWorth().setPrice(stack, FloatUtil.parseDouble(args[1])); + ess.getWorth().setPrice(ess, stack, FloatUtil.parseDouble(args[1])); sender.sendMessage(tl("worthSet")); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandshowkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandshowkit.java index 24e28ae68..b280b02df 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandshowkit.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandshowkit.java @@ -2,7 +2,6 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.Kit; import com.earth2me.essentials.User; -import com.earth2me.essentials.Settings; import org.bukkit.Server; import java.util.ArrayList; @@ -37,7 +36,7 @@ public class Commandshowkit extends EssentialsCommand { @Override protected List getTabCompleteOptions(final Server server, final User user, final String commandLabel, final String[] args) { if (args.length == 1) { - return new ArrayList<>(ess.getSettings().getKits().getKeys(false)); // TODO: Move this to its own method + return new ArrayList<>(ess.getKits().getKits().getKeys(false)); // TODO: Move this to its own method } else { return Collections.emptyList(); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandskull.java b/Essentials/src/com/earth2me/essentials/commands/Commandskull.java index d1082a7f8..5cb06a865 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandskull.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandskull.java @@ -2,6 +2,8 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.InventoryWorkaround; +import com.earth2me.essentials.utils.EnumUtil; +import com.earth2me.essentials.utils.MaterialUtil; import com.google.common.collect.Lists; import org.bukkit.Material; import org.bukkit.Server; @@ -14,6 +16,9 @@ import java.util.List; import static com.earth2me.essentials.I18n.tl; public class Commandskull extends EssentialsCommand { + + private static final Material SKULL_ITEM = EnumUtil.getMaterial("PLAYER_HEAD", "SKULL_ITEM"); + public Commandskull() { super("skull"); } @@ -31,14 +36,14 @@ public class Commandskull extends EssentialsCommand { owner = user.getName(); } - ItemStack itemSkull = user.getBase().getItemInHand(); + ItemStack itemSkull = user.getItemInHand(); SkullMeta metaSkull = null; boolean spawn = false; - if (itemSkull != null && itemSkull.getType() == Material.SKULL_ITEM && itemSkull.getDurability() == 3) { + if (itemSkull != null && MaterialUtil.isPlayerHead(itemSkull.getType(), itemSkull.getDurability())) { metaSkull = (SkullMeta) itemSkull.getItemMeta(); } else if (user.isAuthorized("essentials.skull.spawn")) { - itemSkull = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3); + itemSkull = new ItemStack(SKULL_ITEM, 1, (byte) 3); metaSkull = (SkullMeta) itemSkull.getItemMeta(); spawn = true; } else { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java b/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java index 33704ece1..ee079d678 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java @@ -3,6 +3,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.Mob; import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.LocationUtil; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.StringUtil; @@ -28,7 +29,9 @@ public class Commandspawner extends EssentialsCommand { } final Location target = LocationUtil.getTarget(user.getBase()); - if (target == null || target.getBlock().getType() != Material.MOB_SPAWNER) { + Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER"); + + if (target == null || target.getBlock().getType() != MOB_SPAWNER) { throw new Exception(tl("mobSpawnTarget")); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpa.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpa.java index 5a6db08a8..bdff28454 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpa.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpa.java @@ -1,7 +1,10 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.Teleport; +import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import org.bukkit.Server; +import org.bukkit.event.player.PlayerTeleportEvent; import java.util.Collections; import java.util.List; @@ -35,6 +38,15 @@ public class Commandtpa extends EssentialsCommand { && player.isTpRequestHere() == false) { // Make sure the last teleport request was actually tpa and not tpahere throw new Exception(tl("requestSentAlready", player.getDisplayName())); } + if (player.isAutoTeleportEnabled() && !player.isIgnoredPlayer(user)) { + final Trade charge = new Trade(this.getName(), ess); + Teleport teleport = user.getTeleport(); + teleport.setTpType(Teleport.TeleportType.TPA); + teleport.teleport(player.getBase(), charge, PlayerTeleportEvent.TeleportCause.COMMAND); + player.sendMessage(tl("requestAcceptedAuto", user.getDisplayName())); + user.sendMessage(tl("requestAcceptedFromAuto", player.getDisplayName())); + return; + } if (!player.isIgnoredPlayer(user)) { player.requestTeleport(user, false); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpauto.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpauto.java new file mode 100644 index 000000000..e2bc526ac --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpauto.java @@ -0,0 +1,41 @@ +package com.earth2me.essentials.commands; + +import com.earth2me.essentials.CommandSource; +import com.earth2me.essentials.User; +import org.bukkit.Server; + +import static com.earth2me.essentials.I18n.tl; + + +public class Commandtpauto extends EssentialsToggleCommand { + public Commandtpauto() { + super("tpauto", "essentials.tpauto.others"); + } + + @Override + protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { + toggleOtherPlayers(server, sender, args); + } + + @Override + protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { + handleToggleWithArgs(server, user, args); + } + + @Override + void togglePlayer(CommandSource sender, User user, Boolean enabled) { + if (enabled == null) { + enabled = !user.isAutoTeleportEnabled(); + } + + user.setAutoTeleportEnabled(enabled); + + user.sendMessage(enabled ? tl("autoTeleportEnabled") : tl("autoTeleportDisabled")); + if (enabled && !user.isTeleportEnabled()) { + user.sendMessage(tl("teleportationDisabledWarning")); + } + if (!sender.isPlayer() || !user.getBase().equals(sender.getPlayer())) { + sender.sendMessage(enabled ? tl("autoTeleportEnabledFor", user.getDisplayName()) : tl("autoTeleportDisabledFor", user.getDisplayName())); + } + } +} diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtree.java b/Essentials/src/com/earth2me/essentials/commands/Commandtree.java index 637192a09..f57505057 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtree.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtree.java @@ -32,6 +32,10 @@ public class Commandtree extends EssentialsCommand { } if (args[0].equalsIgnoreCase("jungle")) { tree = TreeType.SMALL_JUNGLE; + } else if (args[0].equalsIgnoreCase("acacia")) { + tree = TreeType.ACACIA; + } else if (args[0].equalsIgnoreCase("birch")) { + tree = TreeType.BIRCH; } if (tree == null) { throw new NotEnoughArgumentsException(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java b/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java index 158da4bc1..36b34ca27 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java @@ -32,12 +32,12 @@ public class Commandunlimited extends EssentialsCommand { final String list = getList(target); user.sendMessage(list); } else if (args[0].equalsIgnoreCase("clear")) { - final List itemList = target.getUnlimited(); + final List itemList = target.getUnlimited(); int index = 0; while (itemList.size() > index) { - final Integer item = itemList.get(index); - if (toggleUnlimited(user, target, item.toString()) == false) { + final Material item = itemList.get(index); + if (!toggleUnlimited(user, target, item.toString())) { index++; } } @@ -50,16 +50,16 @@ public class Commandunlimited extends EssentialsCommand { final StringBuilder output = new StringBuilder(); output.append(tl("unlimitedItems")).append(" "); boolean first = true; - final List items = target.getUnlimited(); + final List items = target.getUnlimited(); if (items.isEmpty()) { output.append(tl("none")); } - for (Integer integer : items) { + for (Material material : items) { if (!first) { output.append(", "); } first = false; - final String matname = Material.getMaterial(integer).toString().toLowerCase(Locale.ENGLISH).replace("_", ""); + final String matname = material.toString().toLowerCase(Locale.ENGLISH).replace("_", ""); output.append(matname); } @@ -71,7 +71,7 @@ public class Commandunlimited extends EssentialsCommand { stack.setAmount(Math.min(stack.getType().getMaxStackSize(), 2)); final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""); - if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !user.isAuthorized("essentials.unlimited.item-" + stack.getTypeId()) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) { + if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) { throw new Exception(tl("unlimitedItemPermission", itemname)); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java index e50268ec3..07abc89b6 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java @@ -13,9 +13,9 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; -import java.util.Iterator; import java.util.List; import java.util.Locale; +import java.util.stream.Collectors; import static com.earth2me.essentials.I18n.tl; @@ -64,17 +64,8 @@ public class Commandwarp extends EssentialsCommand { //TODO: Use one of the new text classes, like /help ? private void warpList(final CommandSource sender, final String[] args, final IUser user) throws Exception { final IWarps warps = ess.getWarps(); - final List warpNameList = new ArrayList<>(warps.getList()); + final List warpNameList = getAvailableWarpsFor(user); - if (user != null) { - final Iterator iterator = warpNameList.iterator(); - while (iterator.hasNext()) { - final String warpName = iterator.next(); - if (ess.getSettings().getPerWarpPermission() && !user.isAuthorized("essentials.warps." + warpName)) { - iterator.remove(); - } - } - } if (warpNameList.isEmpty()) { throw new Exception(tl("noWarpsDefined")); } @@ -112,10 +103,20 @@ public class Commandwarp extends EssentialsCommand { owner.getTeleport().warp(user, name, charge, TeleportCause.COMMAND); } + private List getAvailableWarpsFor(final IUser user) { + if (ess.getSettings().getPerWarpPermission() && user != null) { + return ess.getWarps().getList().stream() + .filter(warpName -> user.isAuthorized("essentials.warps." + warpName)) + .collect(Collectors.toList()); + } + + return new ArrayList<>(ess.getWarps().getList()); + } + @Override protected List getTabCompleteOptions(final Server server, final User user, final String commandLabel, final String[] args) { if (args.length == 1 && user.isAuthorized("essentials.warp.list")) { - return new ArrayList<>(ess.getWarps().getList()); + return getAvailableWarpsFor(user); } else if (args.length == 2 && (user.isAuthorized("essentials.warp.otherplayers") || user.isAuthorized("essentials.warp.others"))) { //TODO: Remove 'otherplayers' permission. return getPlayers(server, user); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java index c62812d90..c90cee919 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java @@ -4,6 +4,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.SetExpFix; import com.earth2me.essentials.utils.DateUtil; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; import org.bukkit.Server; import org.bukkit.Statistic; @@ -16,6 +17,10 @@ import static com.earth2me.essentials.I18n.tl; public class Commandwhois extends EssentialsCommand { + // For some reason, in 1.13 PLAY_ONE_MINUTE = ticks played = what used to be PLAY_ONE_TICK + // https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/b848d8ce633871b52115247b089029749c02f579 + private static final Statistic PLAY_ONE_TICK = EnumUtil.getStatistic("PLAY_ONE_MINUTE", "PLAY_ONE_TICK"); + public Commandwhois() { super("whois"); } @@ -36,12 +41,14 @@ public class Commandwhois extends EssentialsCommand { sender.sendMessage(tl("whoisHunger", user.getBase().getFoodLevel(), user.getBase().getSaturation())); sender.sendMessage(tl("whoisExp", SetExpFix.getTotalExperience(user.getBase()), user.getBase().getLevel())); sender.sendMessage(tl("whoisLocation", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ())); - long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(Statistic.PLAY_ONE_TICK) * 50); + long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(PLAY_ONE_TICK) * 50); sender.sendMessage(tl("whoisPlaytime", DateUtil.formatDateDiff(playtimeMs))); if (!ess.getSettings().isEcoDisabled()) { sender.sendMessage(tl("whoisMoney", NumberUtil.displayCurrency(user.getMoney(), ess))); } - sender.sendMessage(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())); + if (!sender.isPlayer() || ess.getUser(sender.getPlayer()).isAuthorized("essentials.whois.ip")) { + sender.sendMessage(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())); + } final String location = user.getGeoLocation(); if (location != null && (!sender.isPlayer() || ess.getUser(sender.getPlayer()).isAuthorized("essentials.geoip.show"))) { sender.sendMessage(tl("whoisGeoLocation", location)); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandworth.java b/Essentials/src/com/earth2me/essentials/commands/Commandworth.java index ec7bd8928..31b55be55 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandworth.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandworth.java @@ -84,7 +84,7 @@ public class Commandworth extends EssentialsCommand { amount = ess.getWorth().getAmount(ess, user, is, args, true); } - BigDecimal worth = ess.getWorth().getPrice(is); + BigDecimal worth = ess.getWorth().getPrice(ess, is); if (worth == null) { throw new Exception(tl("itemCannotBeSold")); diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index 1d346f951..4d471545b 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -3,6 +3,7 @@ package com.earth2me.essentials.craftbukkit; import org.bukkit.*; import org.bukkit.block.Biome; import org.bukkit.block.Block; +import org.bukkit.block.data.BlockData; import org.bukkit.entity.*; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; @@ -10,6 +11,8 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.material.MaterialData; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; +import org.bukkit.util.BoundingBox; +import org.bukkit.util.RayTraceResult; import org.bukkit.util.Vector; import java.io.File; @@ -17,6 +20,7 @@ import java.util.Collection; import java.util.List; import java.util.Set; import java.util.UUID; +import java.util.function.Predicate; public class FakeWorld implements World { @@ -38,16 +42,6 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } - @Override - public int getBlockTypeIdAt(int i, int i1, int i2) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getBlockTypeIdAt(Location lctn) { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public int getHighestBlockYAt(int i, int i1) { throw new UnsupportedOperationException("Not supported yet."); @@ -93,6 +87,11 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public boolean isChunkGenerated(int x, int z) { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public void loadChunk(int i, int i1) { throw new UnsupportedOperationException("Not supported yet."); @@ -138,6 +137,21 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public boolean isChunkForceLoaded(int x, int z) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setChunkForceLoaded(int x, int z, boolean forced) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection getForceLoadedChunks() { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public Item dropItem(Location lctn, ItemStack is) { throw new UnsupportedOperationException("Not supported yet."); @@ -164,7 +178,7 @@ public class FakeWorld implements World { } @Override - public boolean generateTree(Location lctn, TreeType tt, BlockChangeDelegate bcd) { + public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { throw new UnsupportedOperationException("Not supported yet."); } @@ -203,6 +217,11 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public boolean setSpawnLocation(Location location) { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public boolean setSpawnLocation(int i, int i1, int i2) { throw new UnsupportedOperationException("Not supported yet."); @@ -348,6 +367,11 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public FallingBlock spawnFallingBlock(Location location, BlockData blockData) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public ChunkSnapshot getEmptyChunkSnapshot(int i, int i1, boolean bln, boolean bln1) { throw new UnsupportedOperationException("Not supported yet."); @@ -583,11 +607,6 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } - @Override - public FallingBlock spawnFallingBlock(Location location, int blockId, byte blockData) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public void playSound(Location arg0, Sound arg1, float arg2, float arg3) { throw new UnsupportedOperationException("Not supported yet."); @@ -600,12 +619,12 @@ public class FakeWorld implements World { @Override public void playSound(Location location, Sound sound, SoundCategory soundCategory, float v, float v1) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void playSound(Location location, String s, SoundCategory soundCategory, float v, float v1) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override @@ -650,66 +669,151 @@ public class FakeWorld implements World { @Override public void spawnParticle(Particle particle, Location location, int i) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, double v, double v1, double v2, int i) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, Location location, int i, T t) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, double v, double v1, double v2, int i, T t) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, T t) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, T t) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t) { - + throw new UnsupportedOperationException("Not supported yet."); } @Override public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t) { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t, boolean b) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Location locateNearestStructure(Location origin, StructureType structureType, int radius, boolean findUnexplored) { + throw new UnsupportedOperationException("Not supported yet."); } @Override public List getNearbyEntities(Location loc, double x, double y, double z) { throw new UnsupportedOperationException("Not supported yet."); } -} \ No newline at end of file + + @Override + public Collection getNearbyEntities(Location location, double x, double y, double z, Predicate filter) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection getNearbyEntities(BoundingBox boundingBox) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection getNearbyEntities(BoundingBox boundingBox, Predicate filter) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, Predicate filter) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize, Predicate filter) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public RayTraceResult rayTrace(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, double raySize, Predicate filter) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public T getGameRuleDefault(GameRule arg0) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public T getGameRuleValue(GameRule arg0) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean setGameRule(GameRule arg0, T arg1) { + throw new UnsupportedOperationException("Not supported yet."); + } +} diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java index 3a0e905a3..a70ba20bc 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java @@ -239,4 +239,17 @@ public final class InventoryWorkaround { } } } + + @SuppressWarnings("deprecation") + public static void setItemInOffHand(Player p, ItemStack item) { + // This assumes that all builds that support a main hand also support an off hand. + if (hasMainHandSupport == null || hasMainHandSupport) { + try { + p.getInventory().setItemInOffHand(item); + hasMainHandSupport = true; + } catch (Throwable e) { + hasMainHandSupport = false; + } + } + } } diff --git a/Essentials/src/com/earth2me/essentials/items/AbstractItemDb.java b/Essentials/src/com/earth2me/essentials/items/AbstractItemDb.java new file mode 100644 index 000000000..867d3ae13 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/items/AbstractItemDb.java @@ -0,0 +1,234 @@ +package com.earth2me.essentials.items; + +import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.IConf; +import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.MaterialUtil; +import com.earth2me.essentials.utils.StringUtil; +import com.earth2me.essentials.utils.VersionUtil; +import org.bukkit.Color; +import org.bukkit.DyeColor; +import org.bukkit.FireworkEffect; +import org.bukkit.Material; +import org.bukkit.block.Banner; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.*; +import org.bukkit.potion.Potion; +import org.bukkit.potion.PotionEffect; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +import static com.earth2me.essentials.I18n.tl; + +public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb { + + protected boolean ready = false; + + @Override + public List getMatching(User user, String[] args) throws Exception { + List is = new ArrayList<>(); + + if (args.length < 1) { + is.add(user.getItemInHand().clone()); + } else if (args[0].equalsIgnoreCase("hand")) { + is.add(user.getItemInHand().clone()); + } else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all")) { + for (ItemStack stack : user.getBase().getInventory().getContents()) { + if (stack == null || stack.getType() == Material.AIR) { + continue; + } + is.add(stack.clone()); + } + } else if (args[0].equalsIgnoreCase("blocks")) { + for (ItemStack stack : user.getBase().getInventory().getContents()) { + if (stack == null || stack.getType() == Material.AIR) { + continue; + } + is.add(stack.clone()); + } + } else { + is.add(get(args[0])); + } + + if (is.isEmpty() || is.get(0).getType() == Material.AIR) { + throw new Exception(tl("itemSellAir")); + } + + return is; + } + + @Override + public String serialize(ItemStack is) { + String mat = name(is); + if (VersionUtil.getServerBukkitVersion().isLowerThanOrEqualTo(VersionUtil.v1_12_2_R01) && is.getData().getData() != 0) { + mat = mat + ":" + is.getData().getData(); + } + int quantity = is.getAmount(); + StringBuilder sb = new StringBuilder(); // Add space AFTER you add something. We can trim at end. + sb.append(mat).append(" ").append(quantity).append(" "); + + // ItemMeta applies to anything. + if (is.hasItemMeta()) { + ItemMeta meta = is.getItemMeta(); + if (meta.hasDisplayName()) { + sb.append("name:").append(meta.getDisplayName().replaceAll(" ", "_")).append(" "); + } + + if (meta.hasLore()) { + sb.append("lore:"); + boolean first = true; + for (String s : meta.getLore()) { + // Add | before the line if it's not the first one. Easy but weird way + // to do this since we need each line separated by | + if (!first) { + sb.append("|"); + } + first = false; + sb.append(s.replaceAll(" ", "_")); + } + sb.append(" "); + } + + if (meta.hasEnchants()) { + for (Enchantment e : meta.getEnchants().keySet()) { + sb.append(e.getName().toLowerCase()).append(":").append(meta.getEnchantLevel(e)).append(" "); + } + } + + Set flags = meta.getItemFlags(); + if (flags != null && !flags.isEmpty()) { + sb.append("itemflags:"); + boolean first = true; + for (ItemFlag flag : flags) { + if (!first) { + sb.append(","); + } + sb.append(flag.name()); + first = false; + } + } + } + + final Material material = is.getType(); + + switch (material) { + case WRITTEN_BOOK: + // Everything from http://wiki.ess3.net/wiki/Item_Meta#Books in that order. + // Interesting as I didn't see a way to do pages or chapters. + BookMeta bookMeta = (BookMeta) is.getItemMeta(); + if (bookMeta.hasTitle()) { + sb.append("title:").append(bookMeta.getTitle()).append(" "); + } + if (bookMeta.hasAuthor()) { + sb.append("author:").append(bookMeta.getAuthor()).append(" "); + } + // Only other thing it could have is lore but that's done up there ^^^ + break; + case ENCHANTED_BOOK: + EnchantmentStorageMeta enchantmentStorageMeta = (EnchantmentStorageMeta) is.getItemMeta(); + for (Enchantment e : enchantmentStorageMeta.getStoredEnchants().keySet()) { + sb.append(e.getName().toLowerCase()).append(":").append(enchantmentStorageMeta.getStoredEnchantLevel(e)).append(" "); + } + break; + } + + if (MaterialUtil.isFirework(material)) { + // Everything from http://wiki.ess3.net/wiki/Item_Meta#Fireworks in that order. + FireworkMeta fireworkMeta = (FireworkMeta) is.getItemMeta(); + if (fireworkMeta.hasEffects()) { + for (FireworkEffect effect : fireworkMeta.getEffects()) { + if (effect.getColors() != null && !effect.getColors().isEmpty()) { + sb.append("color:"); + boolean first = true; + for (Color c : effect.getColors()) { + if (!first) { + sb.append(","); // same thing as above. + } + sb.append(c.toString()); + first = false; + } + sb.append(" "); + } + + sb.append("shape:").append(effect.getType().name()).append(" "); + if (effect.getFadeColors() != null && !effect.getFadeColors().isEmpty()) { + sb.append("fade:"); + boolean first = true; + for (Color c : effect.getFadeColors()) { + if (!first) { + sb.append(","); // same thing as above. + } + sb.append(c.toString()); + first = false; + } + sb.append(" "); + } + } + sb.append("power:").append(fireworkMeta.getPower()).append(" "); + } + } else if (MaterialUtil.isPotion(material)) { + Potion potion = Potion.fromItemStack(is); + for (PotionEffect e : potion.getEffects()) { + // long but needs to be effect:speed power:2 duration:120 in that order. + sb.append("splash:").append(potion.isSplash()).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" "); + } + } else if (MaterialUtil.isPlayerHead(material, is.getData().getData())) { + // item stack with meta + SkullMeta skullMeta = (SkullMeta) is.getItemMeta(); + if (skullMeta != null && skullMeta.hasOwner()) { + sb.append("player:").append(skullMeta.getOwner()).append(" "); + } + } else if (MaterialUtil.isBanner(material)) { + if (material.toString().contains("SHIELD")) { + // Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795 + BlockStateMeta shieldMeta = (BlockStateMeta) is.getItemMeta(); + Banner shieldBannerMeta = (Banner) shieldMeta.getBlockState(); + DyeColor baseDyeColor = shieldBannerMeta.getBaseColor(); + if (baseDyeColor != null) { + int basecolor = baseDyeColor.getColor().asRGB(); + sb.append("basecolor:").append(basecolor).append(" "); + } + for (org.bukkit.block.banner.Pattern p : shieldBannerMeta.getPatterns()) { + String type = p.getPattern().getIdentifier(); + int color = p.getColor().getColor().asRGB(); + sb.append(type).append(",").append(color).append(" "); + } + } else { + BannerMeta bannerMeta = (BannerMeta) is.getItemMeta(); + if (bannerMeta != null) { + DyeColor baseDyeColor = bannerMeta.getBaseColor(); + if (baseDyeColor == null) { + baseDyeColor = MaterialUtil.getColorOf(material); + } + if (baseDyeColor != null) { + int basecolor = baseDyeColor + .getColor() + .asRGB(); + sb.append("basecolor:").append(basecolor).append(" "); + } + for (org.bukkit.block.banner.Pattern p : bannerMeta.getPatterns()) { + String type = p.getPattern().getIdentifier(); + int color = p.getColor().getColor().asRGB(); + sb.append(type).append(",").append(color).append(" "); + } + } + } + } else if (MaterialUtil.isLeatherArmor(material)) { + LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) is.getItemMeta(); + int rgb = leatherArmorMeta.getColor().asRGB(); + sb.append("color:").append(rgb).append(" "); + } + + return sb.toString().trim().replaceAll("§", "&"); + } + + @Override + public boolean isReady() { + return ready; + } +} diff --git a/Essentials/src/com/earth2me/essentials/items/FlatItemDb.java b/Essentials/src/com/earth2me/essentials/items/FlatItemDb.java new file mode 100644 index 000000000..b02d6f9a7 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/items/FlatItemDb.java @@ -0,0 +1,278 @@ +package com.earth2me.essentials.items; + +import com.earth2me.essentials.ManagedFile; +import com.earth2me.essentials.utils.MaterialUtil; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import net.ess3.api.IEssentials; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionData; + +import java.util.*; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +import static com.earth2me.essentials.I18n.tl; + + +public class FlatItemDb extends AbstractItemDb { + protected static final Logger LOGGER = Logger.getLogger("Essentials"); + private static Gson gson = new Gson(); + private final transient IEssentials ess; + // Maps primary name to ItemData + private final transient Map items = new HashMap<>(); + + // Maps alias to primary name + private final transient Map itemAliases = new HashMap<>(); + + // Every known alias + private final transient Set allAliases = new HashSet<>(); + + private transient ManagedFile file = null; + + public FlatItemDb(final IEssentials ess) { + this.ess = ess; + } + + @Override + public void reloadConfig() { + if (file == null) { + file = new ManagedFile("items.json", ess); + } + + this.rebuild(); + LOGGER.info(String.format("Loaded %s items from items.json.", listNames().size())); + } + + private void rebuild() { + this.reset(); + + String json = file.getLines().stream() + .filter(line -> !line.startsWith("#")) + .collect(Collectors.joining()); + + this.loadJSON(String.join("\n", json)); + + ready = true; + } + + private void reset() { + ready = false; + items.clear(); + itemAliases.clear(); + allAliases.clear(); + } + + public void loadJSON(String source) { + JsonObject map = (new JsonParser()).parse(source).getAsJsonObject(); + + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + JsonElement element = entry.getValue(); + boolean valid = false; + + if (element.isJsonObject()) { + ItemData data = gson.fromJson(element, ItemData.class); + items.put(key, data); + valid = true; + } else { + try { + String target = element.getAsString(); + itemAliases.put(key, target); + valid = true; + } catch (Exception ignored) {} + } + + if (valid) { + allAliases.add(key); + } else { + LOGGER.warning(String.format("Failed to add item: \"%s\": %s", key, element.toString())); + } + } + } + + @Override + public ItemStack get(String id) throws Exception { + id = id.toLowerCase(); + final String[] split = id.split(":"); + + ItemData data = getByName(split[0]); + + if (data == null) { + throw new Exception(tl("unknownItemName", id)); + } + + Material material = data.getMaterial(); + + if (!material.isItem()) throw new Exception(tl("unableToSpawnItem", id)); + + ItemStack stack = new ItemStack(material); + stack.setAmount(material.getMaxStackSize()); + + PotionData potionData = data.getPotionData(); + ItemMeta meta = stack.getItemMeta(); + + if (potionData != null && meta instanceof PotionMeta) { + PotionMeta potionMeta = (PotionMeta) meta; + potionMeta.setBasePotionData(potionData); + } + + // For some reason, Damageable doesn't extend ItemMeta but CB implements them in the same + // class. As to why, your guess is as good as mine. + if (split.length > 1 && meta instanceof Damageable) { + Damageable damageMeta = (Damageable) meta; + damageMeta.setDamage(Integer.parseInt(split[1])); + } + + stack.setItemMeta(meta); + + // The spawner provider will update the meta again, so we need to call it after + // setItemMeta to prevent a race condition + EntityType entity = data.getEntity(); + if (entity != null && material.toString().contains("SPAWNER")) { + ess.getSpawnerProvider().setEntityType(stack, entity); + } + + return stack; + } + + private ItemData getByName(String name) { + name = name.toLowerCase(); + if (items.containsKey(name)) { + return items.get(name); + } else if (itemAliases.containsKey(name)) { + return items.get(itemAliases.get(name)); + } + + return null; + } + + @Override + public List nameList(ItemStack item) { + List names = new ArrayList<>(); + String primaryName = name(item); + names.add(primaryName); + + for (Map.Entry entry : itemAliases.entrySet()) { + if (entry.getValue().equalsIgnoreCase(primaryName)) { + names.add(entry.getKey()); + } + } + + return names; + } + + @Override + public String name(ItemStack item) { + ItemData data = lookup(item); + + for (Map.Entry entry : items.entrySet()) { + if (entry.getValue().equals(data)) { + return entry.getKey(); + } + } + + return null; + } + + @Override + @Deprecated + public int getLegacyId(Material material) throws Exception { + throw new UnsupportedOperationException("Legacy IDs aren't supported on this version."); + } + + public ItemData lookup(ItemStack item) { + Material type = item.getType(); + + if (MaterialUtil.isPotion(type) && item.getItemMeta() instanceof PotionMeta) { + PotionData potion = ((PotionMeta) item.getItemMeta()).getBasePotionData(); + return new ItemData(type, potion); + } else if (type.toString().contains("SPAWNER")) { + EntityType entity = ess.getSpawnerProvider().getEntityType(item); + return new ItemData(type, entity); + } else { + return new ItemData(type); + } + } + + @Override + public Collection listNames() { + return Collections.unmodifiableSet(allAliases); + } + + public static class ItemData { + private final Material material; + private PotionData potionData = null; + private EntityType entity = null; + + public ItemData(Material material) { + this.material = material; + } + + public ItemData(Material material, PotionData potionData) { + this.material = material; + this.potionData = potionData; + } + + public ItemData(Material material, EntityType entity) { + this.material = material; + this.entity = entity; + } + + @Override + public int hashCode() { + return (31 * material.hashCode()) ^ potionData.hashCode(); + } + + @Override + public boolean equals(Object o) { + if (o == null) { + return false; + } + if (!(o instanceof ItemData)) { + return false; + } + ItemData that = (ItemData) o; + return this.material == that.getMaterial() && potionDataEquals(that) && entityEquals(that); + } + + public Material getMaterial() { + return material; + } + + public PotionData getPotionData() { + return this.potionData; + } + + public EntityType getEntity() { + return this.entity; + } + + private boolean potionDataEquals(ItemData o) { + if (this.potionData == null && o.getPotionData() == null) { + return true; + } else if (this.potionData != null && o.getPotionData() != null) { + return this.potionData.equals(o.getPotionData()); + } else { + return false; + } + } + + private boolean entityEquals(ItemData o) { + if (this.entity == null && o.getEntity() == null) { // neither have an entity + return true; + } else if (this.entity != null && o.getEntity() != null) { // both have an entity; check if it's the same one + return this.entity.equals(o.getEntity()); + } else { // one has an entity but the other doesn't, so they can't be equal + return false; + } + } + } +} diff --git a/Essentials/src/com/earth2me/essentials/items/LegacyItemDb.java b/Essentials/src/com/earth2me/essentials/items/LegacyItemDb.java new file mode 100644 index 000000000..6f84c8104 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/items/LegacyItemDb.java @@ -0,0 +1,298 @@ +package com.earth2me.essentials.items; + +import com.earth2me.essentials.ManagedFile; +import com.earth2me.essentials.utils.EnumUtil; +import com.earth2me.essentials.utils.NumberUtil; +import net.ess3.api.IEssentials; +import net.ess3.nms.refl.ReflUtil; +import org.apache.commons.lang.StringUtils; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.inventory.ItemStack; + +import java.util.*; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.earth2me.essentials.I18n.tl; + + +public class LegacyItemDb extends AbstractItemDb { + protected static final Logger LOGGER = Logger.getLogger("Essentials"); + private final transient IEssentials ess; + private final transient Map items = new HashMap<>(); + private final transient Map> names = new HashMap<>(); + private final transient Map primaryName = new HashMap<>(); + private final transient Map legacyIds = new HashMap<>(); + private final transient Map durabilities = new HashMap<>(); + private final transient Map nbtData = new HashMap<>(); + private final transient ManagedFile file; + private final transient Pattern splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))"); + private final transient Pattern csvSplitPattern = Pattern.compile("(\"([^\"]*)\"|[^,]*)(,|$)"); + + public LegacyItemDb(final IEssentials ess) { + this.ess = ess; + file = new ManagedFile("items.csv", ess); + } + + @Override + public void reloadConfig() { + final List lines = file.getLines(); + + if (lines.isEmpty()) { + return; + } + + ready = false; + durabilities.clear(); + items.clear(); + names.clear(); + primaryName.clear(); + + for (String line : lines) { + if (line.length() > 0 && line.charAt(0) == '#') { + continue; + } + + String itemName = null; + int numeric = -1; + short data = 0; + String nbt = null; + + int col = 0; + Matcher matcher = csvSplitPattern.matcher(line); + while (matcher.find()) { + String match = matcher.group(1); + if (StringUtils.stripToNull(match) == null) { + continue; + } + match = StringUtils.strip(match.trim(), "\""); + switch (col) { + case 0: + itemName = match.toLowerCase(Locale.ENGLISH); + break; + case 1: + numeric = Integer.parseInt(match); + break; + case 2: + data = Short.parseShort(match); + break; + case 3: + nbt = StringUtils.stripToNull(match); + break; + default: + continue; + } + col++; + } + // Invalid row + if (itemName == null || numeric < 0) { + continue; + } + + durabilities.put(itemName, data); + items.put(itemName, numeric); + if (nbt != null) { + nbtData.put(itemName, nbt); + } + + ItemData itemData = new ItemData(numeric, data); + if (names.containsKey(itemData)) { + List nameList = names.get(itemData); + nameList.add(itemName); + } else { + List nameList = new ArrayList<>(); + nameList.add(itemName); + names.put(itemData, nameList); + primaryName.put(itemData, itemName); + } + + legacyIds.put(numeric, itemData); + } + + for (List nameList : names.values()) { + Collections.sort(nameList, LengthCompare.INSTANCE); + } + + LOGGER.info(String.format("Loaded %s items from items.csv.", listNames().size())); + + ready = true; + } + + @Override + public ItemStack get(final String id) throws Exception { + int itemid = 0; + String itemname; + short metaData = 0; + Matcher parts = splitPattern.matcher(id); + if (parts.matches()) { + itemname = parts.group(2); + metaData = Short.parseShort(parts.group(3)); + } else { + itemname = id; + } + + if (NumberUtil.isInt(itemname)) { + itemid = Integer.parseInt(itemname); + } else if (NumberUtil.isInt(id)) { + itemid = Integer.parseInt(id); + } else { + itemname = itemname.toLowerCase(Locale.ENGLISH); + } + + if (itemid < 1) { + if (items.containsKey(itemname)) { + itemid = items.get(itemname); + if (durabilities.containsKey(itemname) && metaData == 0) { + metaData = durabilities.get(itemname); + } + } + } + + if (itemid < 1) { + Material matFromName = EnumUtil.getMaterial(itemname.toUpperCase()); + if (matFromName != null) { + itemid = matFromName.getId(); + } + } + + if (itemid < 1) { + throw new Exception(tl("unknownItemName", itemname)); + } + + ItemData data = legacyIds.get(itemid); + if (data == null) { + throw new Exception(tl("unknownItemId", itemid)); + } + + Material mat = getFromLegacy(itemid, (byte) metaData); + ItemStack retval = new ItemStack(mat); + if (nbtData.containsKey(itemname)) { + String nbt = nbtData.get(itemname); + if (nbt.startsWith("*")) { + nbt = nbtData.get(nbt.substring(1)); + } + retval = ess.getServer().getUnsafe().modifyItemStack(retval, nbt); + } + Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER"); + if (mat == MOB_SPAWNER) { + if (metaData == 0) metaData = EntityType.PIG.getTypeId(); + try { + retval = ess.getSpawnerProvider().setEntityType(retval, EntityType.fromId(metaData)); + } catch (IllegalArgumentException e) { + throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners."); + } + } else if (mat.name().contains("MONSTER_EGG")) { + EntityType type; + try { + type = EntityType.fromId(metaData); + } catch (IllegalArgumentException e) { + throw new Exception("Can't spawn entity ID " + metaData + " from spawn eggs."); + } + retval = ess.getSpawnEggProvider().createEggItem(type); + } else if (mat.name().endsWith("POTION") + && ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_11_R1)) { // Only apply this to pre-1.11 as items.csv might only work in 1.11 + retval = ess.getPotionMetaProvider().createPotionItem(mat, metaData); + } else { + retval.setDurability(metaData); + } + retval.setAmount(mat.getMaxStackSize()); + return retval; + } + + @Override + public List nameList(ItemStack item) { + ItemData itemData = new ItemData(item.getType().getId(), item.getDurability()); + List nameList = names.get(itemData); + if (nameList == null) { + itemData = new ItemData(item.getType().getId(), (short) 0); + nameList = names.get(itemData); + if (nameList == null) { + return null; + } + } + + return Collections.unmodifiableList(nameList); + } + + @Override + public String name(ItemStack item) { + ItemData itemData = new ItemData(item.getType().getId(), item.getDurability()); + String name = primaryName.get(itemData); + if (name == null) { + itemData = new ItemData(item.getType().getId(), (short) 0); + name = primaryName.get(itemData); + if (name == null) { + return null; + } + } + return name; + } + + @Override + public int getLegacyId(Material material) throws Exception { + for(Map.Entry entry : items.entrySet()) { + if(material.name().toLowerCase(Locale.ENGLISH).equalsIgnoreCase(entry.getKey())) { + return entry.getValue(); + } + } + + throw new Exception("Itemid not found for material: " + material.name()); + } + + @Override + public Collection listNames() { + return primaryName.values(); + } + + static class ItemData { + private int itemNo; + final private short itemData; + + ItemData(final int itemNo, final short itemData) { + this.itemNo = itemNo; + this.itemData = itemData; + } + + public int getItemNo() { + return itemNo; + } + + public short getItemData() { + return itemData; + } + + @Override + public int hashCode() { + return (31 * itemNo) ^ itemData; + } + + @Override + public boolean equals(Object o) { + if (o == null) { + return false; + } + if (!(o instanceof ItemData)) { + return false; + } + ItemData pairo = (ItemData) o; + return this.itemNo == pairo.getItemNo() && this.itemData == pairo.getItemData(); + } + } + + + static class LengthCompare implements java.util.Comparator { + + private static final LengthCompare INSTANCE = new LengthCompare(); + + public LengthCompare() { + super(); + } + + @Override + public int compare(String s1, String s2) { + return s1.length() - s2.length(); + } + } +} diff --git a/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java b/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java index 612daeb69..445f1f759 100644 --- a/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java +++ b/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java @@ -2,7 +2,6 @@ package com.earth2me.essentials.messaging; import static com.earth2me.essentials.I18n.tl; -import com.earth2me.essentials.Console; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.IUser; import com.earth2me.essentials.User; @@ -17,7 +16,7 @@ import java.lang.ref.WeakReference; *
  • {@link IMessageRecipient#getReplyRecipient()}
  • *
  • {@link IMessageRecipient#setReplyRecipient(IMessageRecipient)}
  • * - * + * * The given {@code parent} must implement the following methods to prevent overflow: *
      *
    • {@link IMessageRecipient#sendMessage(String)}
    • @@ -25,14 +24,14 @@ import java.lang.ref.WeakReference; *
    • {@link IMessageRecipient#getDisplayName()}
    • *
    • {@link IMessageRecipient#isReachable()}
    • *
    - * + * * The reply-recipient is wrapped in a {@link WeakReference}. */ public class SimpleMessageRecipient implements IMessageRecipient { private final IEssentials ess; private final IMessageRecipient parent; - + private long lastMessageMs; private WeakReference replyRecipient; @@ -42,7 +41,7 @@ public class SimpleMessageRecipient implements IMessageRecipient { } return recipient instanceof User ? (User) recipient : null; } - + public SimpleMessageRecipient(IEssentials ess, IMessageRecipient parent) { this.ess = ess; this.parent = parent; @@ -117,13 +116,12 @@ public class SimpleMessageRecipient implements IMessageRecipient { if (!isReachable()) { return MessageResponse.UNREACHABLE; } - + User user = getUser(this); boolean afk = false; if (user != null) { - if (user.isIgnoreMsg() - && !(sender instanceof Console)) { // Console must never be ignored. - return MessageResponse.MESSAGES_IGNORED; + if (user.isIgnoreMsg() && sender instanceof IUser && !((IUser) sender).isAuthorized("essentials.msgtoggle.bypass")) { // Don't ignore console and senders with permission + return MessageResponse.MESSAGES_IGNORED; } afk = user.isAfk(); // Check whether this recipient ignores the sender, only if the sender is not the console. @@ -138,7 +136,7 @@ public class SimpleMessageRecipient implements IMessageRecipient { // If this recipient doesn't have a reply recipient, initiate by setting the first // message sender to this recipient's replyRecipient. long timeout = ess.getSettings().getLastMessageReplyRecipientTimeout() * 1000; - if (getReplyRecipient() == null || !getReplyRecipient().isReachable() + if (getReplyRecipient() == null || !getReplyRecipient().isReachable() || System.currentTimeMillis() - this.lastMessageMs > timeout) { setReplyRecipient(sender); } diff --git a/Essentials/src/com/earth2me/essentials/metrics/Metrics.java b/Essentials/src/com/earth2me/essentials/metrics/Metrics.java index c4373b2ab..00f640e9f 100644 --- a/Essentials/src/com/earth2me/essentials/metrics/Metrics.java +++ b/Essentials/src/com/earth2me/essentials/metrics/Metrics.java @@ -2,43 +2,43 @@ package com.earth2me.essentials.metrics; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.ServicePriority; -import org.bukkit.plugin.java.JavaPlugin; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import javax.net.ssl.HttpsURLConnection; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; +import java.io.*; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Timer; -import java.util.TimerTask; -import java.util.UUID; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.concurrent.Callable; import java.util.logging.Level; import java.util.zip.GZIPOutputStream; /** * bStats collects some data for plugin authors. - * + *

    * Check out https://bStats.org/ to learn more about bStats! */ +@SuppressWarnings({"WeakerAccess", "unused"}) public class Metrics { static { - // Maven's Relocate is clever and changes strings, too. So we have to use this little "trick" ... :D - final String defaultPackage = new String(new byte[] { 'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's' }); - final String examplePackage = new String(new byte[] { 'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e' }); - // We want to make sure nobody just copy & pastes the example and use the wrong package names - if (Metrics.class.getPackage().getName().equals(defaultPackage) || Metrics.class.getPackage().getName().equals(examplePackage)) { - throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); + // You can use the property to disable the check in your test environment + if (System.getProperty("bstats.relocatecheck") == null || !System.getProperty("bstats.relocatecheck").equals("false")) { + // Maven's Relocate is clever and changes strings, too. So we have to use this little "trick" ... :D + final String defaultPackage = new String( + new byte[]{'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's', '.', 'b', 'u', 'k', 'k', 'i', 't'}); + final String examplePackage = new String(new byte[]{'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'}); + // We want to make sure nobody just copy & pastes the example and use the wrong package names + if (Metrics.class.getPackage().getName().equals(defaultPackage) || Metrics.class.getPackage().getName().equals(examplePackage)) { + throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); + } } } @@ -48,17 +48,23 @@ public class Metrics { // The url to which the data is sent private static final String URL = "https://bStats.org/submitData/bukkit"; + // Is bStats enabled on this server? + private boolean enabled; + // Should failed requests be logged? private static boolean logFailedRequests; + // Should the sent data be logged? + private static boolean logSentData; + + // Should the response text be logged? + private static boolean logResponseStatusText; + // The uuid of the server private static String serverUUID; - // Whether bStats is enabled. - private static boolean enabled; - // The plugin - private final JavaPlugin plugin; + private final Plugin plugin; // A list with all custom charts private final List charts = new ArrayList<>(); @@ -68,7 +74,7 @@ public class Metrics { * * @param plugin The plugin which stats should be submitted. */ - public Metrics(JavaPlugin plugin) { + public Metrics(Plugin plugin) { if (plugin == null) { throw new IllegalArgumentException("Plugin cannot be null!"); } @@ -88,6 +94,10 @@ public class Metrics { config.addDefault("serverUuid", UUID.randomUUID().toString()); // Should failed request be logged? config.addDefault("logFailedRequests", false); + // Should the sent data be logged? + config.addDefault("logSentData", false); + // Should the response text be logged? + config.addDefault("logResponseStatusText", false); // Inform the server owners about bStats config.options().header( @@ -102,10 +112,13 @@ public class Metrics { } // Load the data + enabled = config.getBoolean("enabled", true); serverUUID = config.getString("serverUuid"); logFailedRequests = config.getBoolean("logFailedRequests", false); - if (config.getBoolean("enabled", true)) { - enabled = true; + logSentData = config.getBoolean("logSentData", false); + logResponseStatusText = config.getBoolean("logResponseStatusText", false); + + if (enabled) { boolean found = false; // Search for all other bStats Metrics classes to see if we are the first one for (Class service : Bukkit.getServicesManager().getKnownServices()) { @@ -121,11 +134,18 @@ public class Metrics { // We are the first! startSubmitting(); } - } else { - enabled = false; } } + /** + * Checks if bStats is enabled. + * + * @return Whether bStats is enabled or not. + */ + public boolean isEnabled() { + return enabled; + } + /** * Adds a custom chart. * @@ -152,14 +172,9 @@ public class Metrics { } // Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler // Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;) - Bukkit.getScheduler().runTask(plugin, new Runnable() { - @Override - public void run() { - if (enabled) submitData(); - } - }); + Bukkit.getScheduler().runTask(plugin, () -> submitData()); } - }, 1000*60*5, 1000*60*30); + }, 1000 * 60 * 5, 1000 * 60 * 30); // Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start // WARNING: Changing the frequency has no effect but your plugin WILL be blocked/deleted! // WARNING: Just don't do it! @@ -174,7 +189,7 @@ public class Metrics { public JSONObject getPluginData() { JSONObject data = new JSONObject(); - String pluginName = "EssentialsX"; + String pluginName = plugin.getDescription().getName().replace("Essentials", "EssentialsX"); String pluginVersion = plugin.getDescription().getVersion(); data.put("pluginName", pluginName); // Append the name of the plugin @@ -200,10 +215,19 @@ public class Metrics { */ private JSONObject getServerData() { // Minecraft specific data - int playerAmount = Bukkit.getOnlinePlayers().size(); + int playerAmount; + try { + // Around MC 1.8 the return type was changed to a collection from an array, + // This fixes java.lang.NoSuchMethodError: org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection; + Method onlinePlayersMethod = Class.forName("org.bukkit.Server").getMethod("getOnlinePlayers"); + playerAmount = onlinePlayersMethod.getReturnType().equals(Collection.class) + ? ((Collection) onlinePlayersMethod.invoke(Bukkit.getServer())).size() + : ((Player[]) onlinePlayersMethod.invoke(Bukkit.getServer())).length; + } catch (Exception e) { + playerAmount = Bukkit.getOnlinePlayers().size(); // Just use the new method if the Reflection failed + } int onlineMode = Bukkit.getOnlineMode() ? 1 : 0; - String bukkitVersion = org.bukkit.Bukkit.getVersion(); - bukkitVersion = bukkitVersion.substring(bukkitVersion.indexOf("MC: ") + 4, bukkitVersion.length() - 1); + String bukkitVersion = Bukkit.getVersion(); // OS/Java specific data String javaVersion = System.getProperty("java.version"); @@ -233,8 +257,6 @@ public class Metrics { * Collects the data and sends it afterwards. */ private void submitData() { - if (!enabled) return; - final JSONObject data = getServerData(); JSONArray pluginData = new JSONArray(); @@ -242,13 +264,13 @@ public class Metrics { for (Class service : Bukkit.getServicesManager().getKnownServices()) { try { service.getField("B_STATS_VERSION"); // Our identifier :) - } catch (NoSuchFieldException ignored) { - continue; // Continue "searching" - } - // Found one! - try { - pluginData.add(service.getMethod("getPluginData").invoke(Bukkit.getServicesManager().load(service))); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } + + for (RegisteredServiceProvider provider : Bukkit.getServicesManager().getRegistrations(service)) { + try { + pluginData.add(provider.getService().getMethod("getPluginData").invoke(provider.getProvider())); + } catch (NullPointerException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } + } + } catch (NoSuchFieldException ignored) { } } data.put("plugins", pluginData); @@ -259,7 +281,7 @@ public class Metrics { public void run() { try { // Send the data - sendData(data); + sendData(plugin, data); } catch (Exception e) { // Something went wrong! :( if (logFailedRequests) { @@ -273,16 +295,20 @@ public class Metrics { /** * Sends the data to the bStats server. * + * @param plugin Any plugin. It's just used to get a logger instance. * @param data The data to send. * @throws Exception If the request failed. */ - private static void sendData(JSONObject data) throws Exception { + private static void sendData(Plugin plugin, JSONObject data) throws Exception { if (data == null) { throw new IllegalArgumentException("Data cannot be null!"); } if (Bukkit.isPrimaryThread()) { throw new IllegalAccessException("This method must not be called from the main thread!"); } + if (logSentData) { + plugin.getLogger().info("Sending data to bStats: " + data.toString()); + } HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); // Compress the data to save bandwidth @@ -304,7 +330,18 @@ public class Metrics { outputStream.flush(); outputStream.close(); - connection.getInputStream().close(); // We don't care about the response - Just send our data :) + InputStream inputStream = connection.getInputStream(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + + StringBuilder builder = new StringBuilder(); + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line); + } + bufferedReader.close(); + if (logResponseStatusText) { + plugin.getLogger().info("Sent data to bStats and received response: " + builder.toString()); + } } /** @@ -320,57 +357,32 @@ public class Metrics { } ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(outputStream); - gzip.write(str.getBytes("UTF-8")); + gzip.write(str.getBytes(StandardCharsets.UTF_8)); gzip.close(); return outputStream.toByteArray(); } - /** - * Whether Metrics is disabled. - * - * @return Whether bStats is disabled. - */ - public boolean isOptOut() { - return !enabled; - } - - /** - * Temporarily enable bStats. - * This does not change the global config and will reset on server restart. - */ - public void enable() { - enabled = true; - } - - /** - * Temporarily disable bStats. - * This does not change the global config and will reset on server restart. - */ - public void disable() { - enabled = false; - } - /** * Represents a custom chart. */ public static abstract class CustomChart { // The id of the chart - protected final String chartId; + final String chartId; /** * Class constructor. * * @param chartId The id of the chart. */ - public CustomChart(String chartId) { + CustomChart(String chartId) { if (chartId == null || chartId.isEmpty()) { throw new IllegalArgumentException("ChartId cannot be null or empty!"); } this.chartId = chartId; } - protected JSONObject getRequestJsonObject() { + private JSONObject getRequestJsonObject() { JSONObject chart = new JSONObject(); chart.put("chartId", chartId); try { @@ -389,35 +401,32 @@ public class Metrics { return chart; } - protected abstract JSONObject getChartData(); + protected abstract JSONObject getChartData() throws Exception; } /** * Represents a custom simple pie. */ - public static abstract class SimplePie extends CustomChart { + public static class SimplePie extends CustomChart { + + private final Callable callable; /** * Class constructor. * * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public SimplePie(String chartId) { + public SimplePie(String chartId, Callable callable) { super(chartId); + this.callable = callable; } - /** - * Gets the value of the pie. - * - * @return The value of the pie. - */ - public abstract String getValue(); - @Override - protected JSONObject getChartData() { + protected JSONObject getChartData() throws Exception { JSONObject data = new JSONObject(); - String value = getValue(); + String value = callable.call(); if (value == null || value.isEmpty()) { // Null = skip the chart return null; @@ -430,31 +439,26 @@ public class Metrics { /** * Represents a custom advanced pie. */ - public static abstract class AdvancedPie extends CustomChart { + public static class AdvancedPie extends CustomChart { + + private final Callable> callable; /** * Class constructor. * * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public AdvancedPie(String chartId) { + public AdvancedPie(String chartId, Callable> callable) { super(chartId); + this.callable = callable; } - /** - * Gets the values of the pie. - * - * @param valueMap Just an empty map. The only reason it exists is to make your life easier. - * You don't have to create a map yourself! - * @return The values of the pie. - */ - public abstract HashMap getValues(HashMap valueMap); - @Override - protected JSONObject getChartData() { + protected JSONObject getChartData() throws Exception { JSONObject data = new JSONObject(); JSONObject values = new JSONObject(); - HashMap map = getValues(new HashMap()); + Map map = callable.call(); if (map == null || map.isEmpty()) { // Null = skip the chart return null; @@ -477,30 +481,76 @@ public class Metrics { } /** - * Represents a custom single line chart. + * Represents a custom drilldown pie. */ - public static abstract class SingleLineChart extends CustomChart { + public static class DrilldownPie extends CustomChart { + + private final Callable>> callable; /** * Class constructor. * * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public SingleLineChart(String chartId) { + public DrilldownPie(String chartId, Callable>> callable) { super(chartId); + this.callable = callable; } + @Override + public JSONObject getChartData() throws Exception { + JSONObject data = new JSONObject(); + JSONObject values = new JSONObject(); + Map> map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JSONObject value = new JSONObject(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + value.put(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + values.put(entryValues.getKey(), value); + } + } + if (reallyAllSkipped) { + // Null = skip the chart + return null; + } + data.put("values", values); + return data; + } + } + + /** + * Represents a custom single line chart. + */ + public static class SingleLineChart extends CustomChart { + + private final Callable callable; + /** - * Gets the value of the chart. + * Class constructor. * - * @return The value of the chart. + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public abstract int getValue(); + public SingleLineChart(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } @Override - protected JSONObject getChartData() { + protected JSONObject getChartData() throws Exception { JSONObject data = new JSONObject(); - int value = getValue(); + int value = callable.call(); if (value == 0) { // Null = skip the chart return null; @@ -514,31 +564,26 @@ public class Metrics { /** * Represents a custom multi line chart. */ - public static abstract class MultiLineChart extends CustomChart { + public static class MultiLineChart extends CustomChart { + + private final Callable> callable; /** * Class constructor. * * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public MultiLineChart(String chartId) { + public MultiLineChart(String chartId, Callable> callable) { super(chartId); + this.callable = callable; } - /** - * Gets the values of the chart. - * - * @param valueMap Just an empty map. The only reason it exists is to make your life easier. - * You don't have to create a map yourself! - * @return The values of the chart. - */ - public abstract HashMap getValues(HashMap valueMap); - @Override - protected JSONObject getChartData() { + protected JSONObject getChartData() throws Exception { JSONObject data = new JSONObject(); JSONObject values = new JSONObject(); - HashMap map = getValues(new HashMap()); + Map map = callable.call(); if (map == null || map.isEmpty()) { // Null = skip the chart return null; @@ -564,31 +609,26 @@ public class Metrics { /** * Represents a custom simple bar chart. */ - public static abstract class SimpleBarChart extends CustomChart { + public static class SimpleBarChart extends CustomChart { + + private final Callable> callable; /** * Class constructor. * * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public SimpleBarChart(String chartId) { + public SimpleBarChart(String chartId, Callable> callable) { super(chartId); + this.callable = callable; } - /** - * Gets the value of the chart. - * - * @param valueMap Just an empty map. The only reason it exists is to make your life easier. - * You don't have to create a map yourself! - * @return The value of the chart. - */ - public abstract HashMap getValues(HashMap valueMap); - @Override - protected JSONObject getChartData() { + protected JSONObject getChartData() throws Exception { JSONObject data = new JSONObject(); JSONObject values = new JSONObject(); - HashMap map = getValues(new HashMap()); + Map map = callable.call(); if (map == null || map.isEmpty()) { // Null = skip the chart return null; @@ -607,31 +647,26 @@ public class Metrics { /** * Represents a custom advanced bar chart. */ - public static abstract class AdvancedBarChart extends CustomChart { + public static class AdvancedBarChart extends CustomChart { + + private final Callable> callable; /** * Class constructor. * * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. */ - public AdvancedBarChart(String chartId) { + public AdvancedBarChart(String chartId, Callable> callable) { super(chartId); + this.callable = callable; } - /** - * Gets the value of the chart. - * - * @param valueMap Just an empty map. The only reason it exists is to make your life easier. - * You don't have to create a map yourself! - * @return The value of the chart. - */ - public abstract HashMap getValues(HashMap valueMap); - @Override - protected JSONObject getChartData() { + protected JSONObject getChartData() throws Exception { JSONObject data = new JSONObject(); JSONObject values = new JSONObject(); - HashMap map = getValues(new HashMap()); + Map map = callable.call(); if (map == null || map.isEmpty()) { // Null = skip the chart return null; @@ -655,408 +690,6 @@ public class Metrics { data.put("values", values); return data; } - } - /** - * Represents a custom simple map chart. - */ - public static abstract class SimpleMapChart extends CustomChart { - - /** - * Class constructor. - * - * @param chartId The id of the chart. - */ - public SimpleMapChart(String chartId) { - super(chartId); - } - - /** - * Gets the value of the chart. - * - * @return The value of the chart. - */ - public abstract Country getValue(); - - @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - Country value = getValue(); - - if (value == null) { - // Null = skip the chart - return null; - } - data.put("value", value.getCountryIsoTag()); - return data; - } - - } - - /** - * Represents a custom advanced map chart. - */ - public static abstract class AdvancedMapChart extends CustomChart { - - /** - * Class constructor. - * - * @param chartId The id of the chart. - */ - public AdvancedMapChart(String chartId) { - super(chartId); - } - - /** - * Gets the value of the chart. - * - * @param valueMap Just an empty map. The only reason it exists is to make your life easier. - * You don't have to create a map yourself! - * @return The value of the chart. - */ - public abstract HashMap getValues(HashMap valueMap); - - @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); - HashMap map = getValues(new HashMap()); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean allSkipped = true; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue() == 0) { - continue; // Skip this invalid - } - allSkipped = false; - values.put(entry.getKey().getCountryIsoTag(), entry.getValue()); - } - if (allSkipped) { - // Null = skip the chart - return null; - } - data.put("values", values); - return data; - } - - } - - /** - * A enum which is used for custom maps. - */ - public enum Country { - - /** - * bStats will use the country of the server. - */ - AUTO_DETECT("AUTO", "Auto Detected"), - - ANDORRA("AD", "Andorra"), - UNITED_ARAB_EMIRATES("AE", "United Arab Emirates"), - AFGHANISTAN("AF", "Afghanistan"), - ANTIGUA_AND_BARBUDA("AG", "Antigua and Barbuda"), - ANGUILLA("AI", "Anguilla"), - ALBANIA("AL", "Albania"), - ARMENIA("AM", "Armenia"), - NETHERLANDS_ANTILLES("AN", "Netherlands Antilles"), - ANGOLA("AO", "Angola"), - ANTARCTICA("AQ", "Antarctica"), - ARGENTINA("AR", "Argentina"), - AMERICAN_SAMOA("AS", "American Samoa"), - AUSTRIA("AT", "Austria"), - AUSTRALIA("AU", "Australia"), - ARUBA("AW", "Aruba"), - ALAND_ISLANDS("AX", "Åland Islands"), - AZERBAIJAN("AZ", "Azerbaijan"), - BOSNIA_AND_HERZEGOVINA("BA", "Bosnia and Herzegovina"), - BARBADOS("BB", "Barbados"), - BANGLADESH("BD", "Bangladesh"), - BELGIUM("BE", "Belgium"), - BURKINA_FASO("BF", "Burkina Faso"), - BULGARIA("BG", "Bulgaria"), - BAHRAIN("BH", "Bahrain"), - BURUNDI("BI", "Burundi"), - BENIN("BJ", "Benin"), - SAINT_BARTHELEMY("BL", "Saint Barthélemy"), - BERMUDA("BM", "Bermuda"), - BRUNEI("BN", "Brunei"), - BOLIVIA("BO", "Bolivia"), - BONAIRE_SINT_EUSTATIUS_AND_SABA("BQ", "Bonaire, Sint Eustatius and Saba"), - BRAZIL("BR", "Brazil"), - BAHAMAS("BS", "Bahamas"), - BHUTAN("BT", "Bhutan"), - BOUVET_ISLAND("BV", "Bouvet Island"), - BOTSWANA("BW", "Botswana"), - BELARUS("BY", "Belarus"), - BELIZE("BZ", "Belize"), - CANADA("CA", "Canada"), - COCOS_ISLANDS("CC", "Cocos Islands"), - THE_DEMOCRATIC_REPUBLIC_OF_CONGO("CD", "The Democratic Republic Of Congo"), - CENTRAL_AFRICAN_REPUBLIC("CF", "Central African Republic"), - CONGO("CG", "Congo"), - SWITZERLAND("CH", "Switzerland"), - COTE_D_IVOIRE("CI", "Côte d'Ivoire"), - COOK_ISLANDS("CK", "Cook Islands"), - CHILE("CL", "Chile"), - CAMEROON("CM", "Cameroon"), - CHINA("CN", "China"), - COLOMBIA("CO", "Colombia"), - COSTA_RICA("CR", "Costa Rica"), - CUBA("CU", "Cuba"), - CAPE_VERDE("CV", "Cape Verde"), - CURACAO("CW", "Curaçao"), - CHRISTMAS_ISLAND("CX", "Christmas Island"), - CYPRUS("CY", "Cyprus"), - CZECH_REPUBLIC("CZ", "Czech Republic"), - GERMANY("DE", "Germany"), - DJIBOUTI("DJ", "Djibouti"), - DENMARK("DK", "Denmark"), - DOMINICA("DM", "Dominica"), - DOMINICAN_REPUBLIC("DO", "Dominican Republic"), - ALGERIA("DZ", "Algeria"), - ECUADOR("EC", "Ecuador"), - ESTONIA("EE", "Estonia"), - EGYPT("EG", "Egypt"), - WESTERN_SAHARA("EH", "Western Sahara"), - ERITREA("ER", "Eritrea"), - SPAIN("ES", "Spain"), - ETHIOPIA("ET", "Ethiopia"), - FINLAND("FI", "Finland"), - FIJI("FJ", "Fiji"), - FALKLAND_ISLANDS("FK", "Falkland Islands"), - MICRONESIA("FM", "Micronesia"), - FAROE_ISLANDS("FO", "Faroe Islands"), - FRANCE("FR", "France"), - GABON("GA", "Gabon"), - UNITED_KINGDOM("GB", "United Kingdom"), - GRENADA("GD", "Grenada"), - GEORGIA("GE", "Georgia"), - FRENCH_GUIANA("GF", "French Guiana"), - GUERNSEY("GG", "Guernsey"), - GHANA("GH", "Ghana"), - GIBRALTAR("GI", "Gibraltar"), - GREENLAND("GL", "Greenland"), - GAMBIA("GM", "Gambia"), - GUINEA("GN", "Guinea"), - GUADELOUPE("GP", "Guadeloupe"), - EQUATORIAL_GUINEA("GQ", "Equatorial Guinea"), - GREECE("GR", "Greece"), - SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS("GS", "South Georgia And The South Sandwich Islands"), - GUATEMALA("GT", "Guatemala"), - GUAM("GU", "Guam"), - GUINEA_BISSAU("GW", "Guinea-Bissau"), - GUYANA("GY", "Guyana"), - HONG_KONG("HK", "Hong Kong"), - HEARD_ISLAND_AND_MCDONALD_ISLANDS("HM", "Heard Island And McDonald Islands"), - HONDURAS("HN", "Honduras"), - CROATIA("HR", "Croatia"), - HAITI("HT", "Haiti"), - HUNGARY("HU", "Hungary"), - INDONESIA("ID", "Indonesia"), - IRELAND("IE", "Ireland"), - ISRAEL("IL", "Israel"), - ISLE_OF_MAN("IM", "Isle Of Man"), - INDIA("IN", "India"), - BRITISH_INDIAN_OCEAN_TERRITORY("IO", "British Indian Ocean Territory"), - IRAQ("IQ", "Iraq"), - IRAN("IR", "Iran"), - ICELAND("IS", "Iceland"), - ITALY("IT", "Italy"), - JERSEY("JE", "Jersey"), - JAMAICA("JM", "Jamaica"), - JORDAN("JO", "Jordan"), - JAPAN("JP", "Japan"), - KENYA("KE", "Kenya"), - KYRGYZSTAN("KG", "Kyrgyzstan"), - CAMBODIA("KH", "Cambodia"), - KIRIBATI("KI", "Kiribati"), - COMOROS("KM", "Comoros"), - SAINT_KITTS_AND_NEVIS("KN", "Saint Kitts And Nevis"), - NORTH_KOREA("KP", "North Korea"), - SOUTH_KOREA("KR", "South Korea"), - KUWAIT("KW", "Kuwait"), - CAYMAN_ISLANDS("KY", "Cayman Islands"), - KAZAKHSTAN("KZ", "Kazakhstan"), - LAOS("LA", "Laos"), - LEBANON("LB", "Lebanon"), - SAINT_LUCIA("LC", "Saint Lucia"), - LIECHTENSTEIN("LI", "Liechtenstein"), - SRI_LANKA("LK", "Sri Lanka"), - LIBERIA("LR", "Liberia"), - LESOTHO("LS", "Lesotho"), - LITHUANIA("LT", "Lithuania"), - LUXEMBOURG("LU", "Luxembourg"), - LATVIA("LV", "Latvia"), - LIBYA("LY", "Libya"), - MOROCCO("MA", "Morocco"), - MONACO("MC", "Monaco"), - MOLDOVA("MD", "Moldova"), - MONTENEGRO("ME", "Montenegro"), - SAINT_MARTIN("MF", "Saint Martin"), - MADAGASCAR("MG", "Madagascar"), - MARSHALL_ISLANDS("MH", "Marshall Islands"), - MACEDONIA("MK", "Macedonia"), - MALI("ML", "Mali"), - MYANMAR("MM", "Myanmar"), - MONGOLIA("MN", "Mongolia"), - MACAO("MO", "Macao"), - NORTHERN_MARIANA_ISLANDS("MP", "Northern Mariana Islands"), - MARTINIQUE("MQ", "Martinique"), - MAURITANIA("MR", "Mauritania"), - MONTSERRAT("MS", "Montserrat"), - MALTA("MT", "Malta"), - MAURITIUS("MU", "Mauritius"), - MALDIVES("MV", "Maldives"), - MALAWI("MW", "Malawi"), - MEXICO("MX", "Mexico"), - MALAYSIA("MY", "Malaysia"), - MOZAMBIQUE("MZ", "Mozambique"), - NAMIBIA("NA", "Namibia"), - NEW_CALEDONIA("NC", "New Caledonia"), - NIGER("NE", "Niger"), - NORFOLK_ISLAND("NF", "Norfolk Island"), - NIGERIA("NG", "Nigeria"), - NICARAGUA("NI", "Nicaragua"), - NETHERLANDS("NL", "Netherlands"), - NORWAY("NO", "Norway"), - NEPAL("NP", "Nepal"), - NAURU("NR", "Nauru"), - NIUE("NU", "Niue"), - NEW_ZEALAND("NZ", "New Zealand"), - OMAN("OM", "Oman"), - PANAMA("PA", "Panama"), - PERU("PE", "Peru"), - FRENCH_POLYNESIA("PF", "French Polynesia"), - PAPUA_NEW_GUINEA("PG", "Papua New Guinea"), - PHILIPPINES("PH", "Philippines"), - PAKISTAN("PK", "Pakistan"), - POLAND("PL", "Poland"), - SAINT_PIERRE_AND_MIQUELON("PM", "Saint Pierre And Miquelon"), - PITCAIRN("PN", "Pitcairn"), - PUERTO_RICO("PR", "Puerto Rico"), - PALESTINE("PS", "Palestine"), - PORTUGAL("PT", "Portugal"), - PALAU("PW", "Palau"), - PARAGUAY("PY", "Paraguay"), - QATAR("QA", "Qatar"), - REUNION("RE", "Reunion"), - ROMANIA("RO", "Romania"), - SERBIA("RS", "Serbia"), - RUSSIA("RU", "Russia"), - RWANDA("RW", "Rwanda"), - SAUDI_ARABIA("SA", "Saudi Arabia"), - SOLOMON_ISLANDS("SB", "Solomon Islands"), - SEYCHELLES("SC", "Seychelles"), - SUDAN("SD", "Sudan"), - SWEDEN("SE", "Sweden"), - SINGAPORE("SG", "Singapore"), - SAINT_HELENA("SH", "Saint Helena"), - SLOVENIA("SI", "Slovenia"), - SVALBARD_AND_JAN_MAYEN("SJ", "Svalbard And Jan Mayen"), - SLOVAKIA("SK", "Slovakia"), - SIERRA_LEONE("SL", "Sierra Leone"), - SAN_MARINO("SM", "San Marino"), - SENEGAL("SN", "Senegal"), - SOMALIA("SO", "Somalia"), - SURINAME("SR", "Suriname"), - SOUTH_SUDAN("SS", "South Sudan"), - SAO_TOME_AND_PRINCIPE("ST", "Sao Tome And Principe"), - EL_SALVADOR("SV", "El Salvador"), - SINT_MAARTEN_DUTCH_PART("SX", "Sint Maarten (Dutch part)"), - SYRIA("SY", "Syria"), - SWAZILAND("SZ", "Swaziland"), - TURKS_AND_CAICOS_ISLANDS("TC", "Turks And Caicos Islands"), - CHAD("TD", "Chad"), - FRENCH_SOUTHERN_TERRITORIES("TF", "French Southern Territories"), - TOGO("TG", "Togo"), - THAILAND("TH", "Thailand"), - TAJIKISTAN("TJ", "Tajikistan"), - TOKELAU("TK", "Tokelau"), - TIMOR_LESTE("TL", "Timor-Leste"), - TURKMENISTAN("TM", "Turkmenistan"), - TUNISIA("TN", "Tunisia"), - TONGA("TO", "Tonga"), - TURKEY("TR", "Turkey"), - TRINIDAD_AND_TOBAGO("TT", "Trinidad and Tobago"), - TUVALU("TV", "Tuvalu"), - TAIWAN("TW", "Taiwan"), - TANZANIA("TZ", "Tanzania"), - UKRAINE("UA", "Ukraine"), - UGANDA("UG", "Uganda"), - UNITED_STATES_MINOR_OUTLYING_ISLANDS("UM", "United States Minor Outlying Islands"), - UNITED_STATES("US", "United States"), - URUGUAY("UY", "Uruguay"), - UZBEKISTAN("UZ", "Uzbekistan"), - VATICAN("VA", "Vatican"), - SAINT_VINCENT_AND_THE_GRENADINES("VC", "Saint Vincent And The Grenadines"), - VENEZUELA("VE", "Venezuela"), - BRITISH_VIRGIN_ISLANDS("VG", "British Virgin Islands"), - U_S__VIRGIN_ISLANDS("VI", "U.S. Virgin Islands"), - VIETNAM("VN", "Vietnam"), - VANUATU("VU", "Vanuatu"), - WALLIS_AND_FUTUNA("WF", "Wallis And Futuna"), - SAMOA("WS", "Samoa"), - YEMEN("YE", "Yemen"), - MAYOTTE("YT", "Mayotte"), - SOUTH_AFRICA("ZA", "South Africa"), - ZAMBIA("ZM", "Zambia"), - ZIMBABWE("ZW", "Zimbabwe"); - - private String isoTag; - private String name; - - Country(String isoTag, String name) { - this.isoTag = isoTag; - this.name = name; - } - - /** - * Gets the name of the country. - * - * @return The name of the country. - */ - public String getCountryName() { - return name; - } - - /** - * Gets the iso tag of the country. - * - * @return The iso tag of the country. - */ - public String getCountryIsoTag() { - return isoTag; - } - - /** - * Gets a country by it's iso tag. - * - * @param isoTag The iso tag of the county. - * @return The country with the given iso tag or null if unknown. - */ - public static Country byIsoTag(String isoTag) { - for (Country country : Country.values()) { - if (country.getCountryIsoTag().equals(isoTag)) { - return country; - } - } - return null; - } - - /** - * Gets a country by a locale. - * - * @param locale The locale. - * @return The country from the giben locale or null if unknown country or - * if the locale does not contain a country. - */ - public static Country byLocale(Locale locale) { - return byIsoTag(locale.getCountry()); - } - - } - -} \ No newline at end of file +} diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 11b32787f..3d3d6e50d 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -13,7 +13,7 @@ public class PermissionsHandler implements IPermissionsHandler { private transient IPermissionsHandler handler = null; private transient String defaultGroup = "default"; private final transient Essentials ess; - private transient boolean useSuperperms = false; + private transient boolean useSuperperms; private Class lastHandler = null; @@ -92,10 +92,7 @@ public class PermissionsHandler implements IPermissionsHandler { public void checkPermissions() { // load and assign a handler List> providerClazz = Arrays.asList( - BPermissions2Handler.class, PermissionsExHandler.class, - PrivilegesHandler.class, - SimplyPermsHandler.class, GenericVaultHandler.class, SuperpermsHandler.class ); @@ -158,7 +155,4 @@ public class PermissionsHandler implements IPermissionsHandler { } } - private void checkPermLag(long start) { - checkPermLag(start, "not defined"); - } } diff --git a/Essentials/src/com/earth2me/essentials/perm/impl/AbstractVaultHandler.java b/Essentials/src/com/earth2me/essentials/perm/impl/AbstractVaultHandler.java index b046a0df2..b2d381cdf 100644 --- a/Essentials/src/com/earth2me/essentials/perm/impl/AbstractVaultHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/impl/AbstractVaultHandler.java @@ -13,7 +13,7 @@ public abstract class AbstractVaultHandler extends SuperpermsHandler { protected static Permission perms = null; protected static Chat chat = null; - public boolean setupProviders() { + private boolean setupProviders() { try { Class.forName("net.milkbowl.vault.permission.Permission"); Class.forName("net.milkbowl.vault.chat.Chat"); @@ -65,7 +65,7 @@ public abstract class AbstractVaultHandler extends SuperpermsHandler { } } - protected boolean canLoad() { + boolean canLoad() { if (Bukkit.getPluginManager().getPlugin("Vault") == null) return false; try { return setupProviders(); diff --git a/Essentials/src/com/earth2me/essentials/perm/impl/BPermissions2Handler.java b/Essentials/src/com/earth2me/essentials/perm/impl/BPermissions2Handler.java deleted file mode 100644 index c89c5da5d..000000000 --- a/Essentials/src/com/earth2me/essentials/perm/impl/BPermissions2Handler.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.earth2me.essentials.perm.impl; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - - -public class BPermissions2Handler extends AbstractVaultHandler { - @Override - public boolean canBuild(final Player base, final String group) { - return hasPermission(base, "bPermissions.build"); - } - - @Override - public boolean tryProvider() { - return super.canLoad() && Bukkit.getPluginManager().getPlugin("bPermissions") != null; - } -} diff --git a/Essentials/src/com/earth2me/essentials/perm/impl/PrivilegesHandler.java b/Essentials/src/com/earth2me/essentials/perm/impl/PrivilegesHandler.java deleted file mode 100644 index 8fdd79188..000000000 --- a/Essentials/src/com/earth2me/essentials/perm/impl/PrivilegesHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.earth2me.essentials.perm.impl; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -public class PrivilegesHandler extends AbstractVaultHandler { - @Override - public boolean canBuild(Player base, String group) { - return hasPermission(base, "privileges.build"); - } - - @Override - public boolean tryProvider() { - return super.canLoad() && Bukkit.getPluginManager().getPlugin("Privileges") != null; - } -} diff --git a/Essentials/src/com/earth2me/essentials/perm/impl/SimplyPermsHandler.java b/Essentials/src/com/earth2me/essentials/perm/impl/SimplyPermsHandler.java deleted file mode 100644 index ee289eb47..000000000 --- a/Essentials/src/com/earth2me/essentials/perm/impl/SimplyPermsHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.earth2me.essentials.perm.impl; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -public class SimplyPermsHandler extends AbstractVaultHandler { - @Override - public boolean canBuild(Player base, String group) { - return hasPermission(base, "permissions.allow.build"); - } - - @Override - public boolean tryProvider() { - return super.canLoad() && Bukkit.getPluginManager().getPlugin("SimplyPerms") != null; - } -} diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Method.java b/Essentials/src/com/earth2me/essentials/register/payment/Method.java index 3d2f62bdb..d977e5961 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/Method.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/Method.java @@ -5,10 +5,10 @@ import org.bukkit.plugin.Plugin; /** * Interface to be implemented by a payment method. + * Copyright (C) 2011 + * AOL license * * @author Nijikokun (@nijikokun) - * @copyright Copyright (C) 2011 - * @license AOL license */ public interface Method { /** diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java index 3cfa6b630..458501ef1 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java @@ -22,7 +22,7 @@ import java.util.Set; * preferred: "iConomy" * * - * @author: Nijikokun (@nijikokun) @copyright: Copyright (C) 2011 @license: AOL license + * @author Nijikokun (@nijikokun) @copyright: Copyright (C) 2011 @license: AOL license * */ public class Methods { @@ -30,9 +30,9 @@ public class Methods { private static boolean self = false; private static Method Method = null; private static String preferred = ""; - private static final Set Methods = new HashSet(); - private static final Set Dependencies = new HashSet(); - private static final Set Attachables = new HashSet(); + private static final Set Methods = new HashSet<>(); + private static final Set Dependencies = new HashSet<>(); + private static final Set Attachables = new HashSet<>(); static { _init(); @@ -42,11 +42,6 @@ public class Methods { * Implement all methods along with their respective name & class. */ private static void _init() { - addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo6()); - addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo5()); - addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE7()); - addMethod("Currency", new com.earth2me.essentials.register.payment.methods.MCUR()); - Dependencies.add("MultiCurrency"); addMethod("Vault", new com.earth2me.essentials.register.payment.methods.VaultEco()); } @@ -84,7 +79,7 @@ public class Methods { * * @return Set - Array of payment methods that are loaded. * - * @see #setMethod(org.bukkit.plugin.Plugin) + * @see #setMethod(PluginManager) */ public static Set getDependencies() { return Dependencies; @@ -119,8 +114,8 @@ public class Methods { * * @return boolean * - * @see #setMethod(org.bukkit.plugin.Plugin) - * @see #checkDisabled(org.bukkit.plugin.Plugin) + * @see #setMethod(PluginManager) + * @see #checkDisabled(Plugin) */ public static boolean hasMethod() { return (Method != null); @@ -129,7 +124,7 @@ public class Methods { /** * Checks Plugin Class against a multitude of checks to verify it's usability as a payment method. * - * @param PluginManager the plugin manager for the server + * @param manager the plugin manager for the server * * @return boolean True on success, False on failure. */ @@ -145,7 +140,7 @@ public class Methods { int count = 0; boolean match = false; - Plugin plugin = null; + Plugin plugin; for (String name : getDependencies()) { if (hasMethod()) { diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java deleted file mode 100644 index 5616d2d95..000000000 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java +++ /dev/null @@ -1,271 +0,0 @@ -package com.earth2me.essentials.register.payment.methods; - -import com.earth2me.essentials.register.payment.Method; -import cosine.boseconomy.BOSEconomy; -import org.bukkit.plugin.Plugin; - - -/** - * BOSEconomy 7 Implementation of Method - * - * @author Acrobot - * @author Nijikokun (@nijikokun) @copyright (c) 2011 @license AOL license - * - */ -public class BOSE7 implements Method { - private BOSEconomy BOSEconomy; - - @Override - public BOSEconomy getPlugin() { - return this.BOSEconomy; - } - - @Override - public String getName() { - return "BOSEconomy"; - } - - @Override - public String getLongName() { - return getName(); - } - - @Override - public String getVersion() { - return "0.7.0"; - } - - @Override - public int fractionalDigits() { - return this.BOSEconomy.getFractionalDigits(); - } - - @Override - public String format(double amount) { - String currency = this.BOSEconomy.getMoneyNamePlural(); - - if (amount == 1) { - currency = this.BOSEconomy.getMoneyName(); - } - - return amount + " " + currency; - } - - @Override - public boolean hasBanks() { - return true; - } - - @Override - public boolean hasBank(String bank) { - return this.BOSEconomy.bankExists(bank); - } - - @Override - public boolean hasAccount(String name) { - return this.BOSEconomy.playerRegistered(name, false); - } - - @Override - public boolean hasBankAccount(String bank, String name) { - return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); - } - - @Override - public boolean createAccount(String name) { - if (hasAccount(name)) { - return false; - } - - this.BOSEconomy.registerPlayer(name); - return true; - } - - @Override - public boolean createAccount(String name, Double balance) { - if (hasAccount(name)) { - return false; - } - - this.BOSEconomy.registerPlayer(name); - this.BOSEconomy.setPlayerMoney(name, balance, false); - return true; - } - - @Override - public MethodAccount getAccount(String name) { - if (!hasAccount(name)) { - return null; - } - - return new BOSEAccount(name, this.BOSEconomy); - } - - @Override - public MethodBankAccount getBankAccount(String bank, String name) { - if (!hasBankAccount(bank, name)) { - return null; - } - - return new BOSEBankAccount(bank, BOSEconomy); - } - - @Override - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && !plugin.getDescription().getVersion().equals("0.6.2"); - } - - @Override - public void setPlugin(Plugin plugin) { - BOSEconomy = (BOSEconomy) plugin; - } - - - public class BOSEAccount implements MethodAccount { - private final String name; - private final BOSEconomy BOSEconomy; - - public BOSEAccount(String name, BOSEconomy bOSEconomy) { - this.name = name; - this.BOSEconomy = bOSEconomy; - } - - @Override - public double balance() { - return this.BOSEconomy.getPlayerMoneyDouble(this.name); - } - - @Override - public boolean set(double amount) { - return this.BOSEconomy.setPlayerMoney(this.name, amount, false); - } - - @Override - public boolean add(double amount) { - return this.BOSEconomy.addPlayerMoney(this.name, amount, false); - } - - @Override - public boolean subtract(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance - amount), false); - } - - @Override - public boolean multiply(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance * amount), false); - } - - @Override - public boolean divide(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance / amount), false); - } - - @Override - public boolean hasEnough(double amount) { - return (this.balance() >= amount); - } - - @Override - public boolean hasOver(double amount) { - return (this.balance() > amount); - } - - @Override - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } - - @Override - public boolean isNegative() { - return (this.balance() < 0); - } - - @Override - public boolean remove() { - return false; - } - } - - - public class BOSEBankAccount implements MethodBankAccount { - private final String bank; - private final BOSEconomy BOSEconomy; - - public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) { - this.bank = bank; - this.BOSEconomy = bOSEconomy; - } - - @Override - public String getBankName() { - return this.bank; - } - - @Override - public int getBankId() { - return -1; - } - - @Override - public double balance() { - return this.BOSEconomy.getBankMoneyDouble(bank); - } - - @Override - public boolean set(double amount) { - return this.BOSEconomy.setBankMoney(bank, amount, true); - } - - @Override - public boolean add(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance + amount), false); - } - - @Override - public boolean subtract(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance - amount), false); - } - - @Override - public boolean multiply(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance * amount), false); - } - - @Override - public boolean divide(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance / amount), false); - } - - @Override - public boolean hasEnough(double amount) { - return (this.balance() >= amount); - } - - @Override - public boolean hasOver(double amount) { - return (this.balance() > amount); - } - - @Override - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } - - @Override - public boolean isNegative() { - return (this.balance() < 0); - } - - @Override - public boolean remove() { - return this.BOSEconomy.removeBank(bank); - } - } -} \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java deleted file mode 100644 index b470051b6..000000000 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.earth2me.essentials.register.payment.methods; - -import com.earth2me.essentials.register.payment.Method; -import me.ashtheking.currency.Currency; -import me.ashtheking.currency.CurrencyList; -import org.bukkit.plugin.Plugin; - - -/** - * MultiCurrency Method implementation. - * - * @author Acrobot @copyright (c) 2011 @license AOL license - */ -public class MCUR implements Method { - private Currency currencyList; - - @Override - public Object getPlugin() { - return this.currencyList; - } - - @Override - public String getName() { - return "MultiCurrency"; - } - - @Override - public String getLongName() { - return getName(); - } - - @Override - public String getVersion() { - return "0.09"; - } - - @Override - public int fractionalDigits() { - return -1; - } - - @Override - public String format(double amount) { - return amount + " Currency"; - } - - @Override - public boolean hasBanks() { - return false; - } - - @Override - public boolean hasBank(String bank) { - return false; - } - - @Override - public boolean hasAccount(String name) { - return true; - } - - @Override - public boolean hasBankAccount(String bank, String name) { - return false; - } - - @Override - public boolean createAccount(String name) { - CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, 0); - return true; - } - - @Override - public boolean createAccount(String name, Double balance) { - CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, balance); - return true; - } - - @Override - public MethodAccount getAccount(String name) { - return new MCurrencyAccount(name); - } - - @Override - public MethodBankAccount getBankAccount(String bank, String name) { - return null; - } - - @Override - public boolean isCompatible(Plugin plugin) { - return (plugin.getDescription().getName().equalsIgnoreCase("Currency") || plugin.getDescription().getName().equalsIgnoreCase("MultiCurrency")) && plugin instanceof Currency; - } - - @Override - public void setPlugin(Plugin plugin) { - currencyList = (Currency) plugin; - } - - - public class MCurrencyAccount implements MethodAccount { - private final String name; - - public MCurrencyAccount(String name) { - this.name = name; - } - - @Override - public double balance() { - return CurrencyList.getValue((String) CurrencyList.maxCurrency(name)[0], name); - } - - @Override - public boolean set(double amount) { - CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, amount); - return true; - } - - @Override - public boolean add(double amount) { - return CurrencyList.add(name, amount); - } - - @Override - public boolean subtract(double amount) { - return CurrencyList.subtract(name, amount); - } - - @Override - public boolean multiply(double amount) { - return CurrencyList.multiply(name, amount); - } - - @Override - public boolean divide(double amount) { - return CurrencyList.divide(name, amount); - } - - @Override - public boolean hasEnough(double amount) { - return CurrencyList.hasEnough(name, amount); - } - - @Override - public boolean hasOver(double amount) { - return CurrencyList.hasOver(name, amount); - } - - @Override - public boolean hasUnder(double amount) { - return CurrencyList.hasUnder(name, amount); - } - - @Override - public boolean isNegative() { - return CurrencyList.isNegative(name); - } - - @Override - public boolean remove() { - return CurrencyList.remove(name); - } - } -} diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/VaultEco.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/VaultEco.java index b7833d8c1..7d83bc341 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/VaultEco.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/VaultEco.java @@ -1,18 +1,17 @@ package com.earth2me.essentials.register.payment.methods; import com.earth2me.essentials.register.payment.Method; -import net.milkbowl.vault.Vault; import net.milkbowl.vault.economy.Economy; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.RegisteredServiceProvider; public class VaultEco implements Method { - private Vault vault; + private Plugin vault; private Economy economy; @Override - public Vault getPlugin() { + public Plugin getPlugin() { return this.vault; } @@ -108,17 +107,15 @@ public class VaultEco implements Method { public boolean isCompatible(Plugin plugin) { try { RegisteredServiceProvider ecoPlugin = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); - return plugin instanceof Vault && ecoPlugin != null && !ecoPlugin.getProvider().getName().equals("Essentials Economy"); - } catch (LinkageError e) { - return false; - } catch (Exception e) { + return plugin.getName().equals("Vault") && ecoPlugin != null && !ecoPlugin.getProvider().getName().equals("Essentials Economy"); + } catch (LinkageError | Exception e) { return false; } } @Override public void setPlugin(Plugin plugin) { - this.vault = (Vault) plugin; + this.vault = plugin; RegisteredServiceProvider economyProvider = this.vault.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); if (economyProvider != null) { this.economy = economyProvider.getProvider(); @@ -130,7 +127,7 @@ public class VaultEco implements Method { private final String name; private final Economy economy; - public VaultAccount(String name, Economy economy) { + VaultAccount(String name, Economy economy) { this.name = name; this.economy = economy; } diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java deleted file mode 100644 index 8a5dd6428..000000000 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java +++ /dev/null @@ -1,312 +0,0 @@ -package com.earth2me.essentials.register.payment.methods; - -import com.earth2me.essentials.register.payment.Method; -import com.iConomy.iConomy; -import com.iConomy.system.Account; -import com.iConomy.system.BankAccount; -import com.iConomy.system.Holdings; -import com.iConomy.util.Constants; -import org.bukkit.plugin.Plugin; - - -/** - * iConomy 5 Implementation of Method - * - * @author Nijikokun (@nijikokun) @copyright (c) 2011 @license AOL license - * - */ -public class iCo5 implements Method { - private iConomy iConomy; - - @Override - public iConomy getPlugin() { - return this.iConomy; - } - - @Override - public String getName() { - return "iConomy"; - } - - @Override - public String getLongName() { - return getName(); - } - - @Override - public String getVersion() { - return "5"; - } - - @Override - public int fractionalDigits() { - return 2; - } - - @Override - public String format(double amount) { - return com.iConomy.iConomy.format(amount); - } - - @Override - public boolean hasBanks() { - return Constants.Banking; - } - - @Override - public boolean hasBank(String bank) { - return (hasBanks()) && com.iConomy.iConomy.Banks.exists(bank); - } - - @Override - public boolean hasAccount(String name) { - return com.iConomy.iConomy.hasAccount(name); - } - - @Override - public boolean hasBankAccount(String bank, String name) { - return (hasBank(bank)) && com.iConomy.iConomy.getBank(bank).hasAccount(name); - } - - @Override - public boolean createAccount(String name) { - if (hasAccount(name)) { - return false; - } - - return com.iConomy.iConomy.Accounts.create(name); - } - - @Override - public boolean createAccount(String name, Double balance) { - if (hasAccount(name)) { - return false; - } - - if (!com.iConomy.iConomy.Accounts.create(name)) { - return false; - } - - getAccount(name).set(balance); - - return true; - } - - @Override - public MethodAccount getAccount(String name) { - return new iCoAccount(com.iConomy.iConomy.getAccount(name)); - } - - @Override - public MethodBankAccount getBankAccount(String bank, String name) { - return new iCoBankAccount(com.iConomy.iConomy.getBank(bank).getAccount(name)); - } - - @Override - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iConomy.iConomy") && plugin instanceof iConomy; - } - - @Override - public void setPlugin(Plugin plugin) { - iConomy = (iConomy) plugin; - } - - - public class iCoAccount implements MethodAccount { - private final Account account; - private final Holdings holdings; - - public iCoAccount(Account account) { - this.account = account; - this.holdings = account.getHoldings(); - } - - public Account getiCoAccount() { - return account; - } - - @Override - public double balance() { - return this.holdings.balance(); - } - - @Override - public boolean set(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.set(amount); - return true; - } - - @Override - public boolean add(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.add(amount); - return true; - } - - @Override - public boolean subtract(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.subtract(amount); - return true; - } - - @Override - public boolean multiply(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.multiply(amount); - return true; - } - - @Override - public boolean divide(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.divide(amount); - return true; - } - - @Override - public boolean hasEnough(double amount) { - return this.holdings.hasEnough(amount); - } - - @Override - public boolean hasOver(double amount) { - return this.holdings.hasOver(amount); - } - - @Override - public boolean hasUnder(double amount) { - return this.holdings.hasUnder(amount); - } - - @Override - public boolean isNegative() { - return this.holdings.isNegative(); - } - - @Override - public boolean remove() { - if (this.account == null) { - return false; - } - this.account.remove(); - return true; - } - } - - - public class iCoBankAccount implements MethodBankAccount { - private final BankAccount account; - private final Holdings holdings; - - public iCoBankAccount(BankAccount account) { - this.account = account; - this.holdings = account.getHoldings(); - } - - public BankAccount getiCoBankAccount() { - return account; - } - - @Override - public String getBankName() { - return this.account.getBankName(); - } - - @Override - public int getBankId() { - return this.account.getBankId(); - } - - @Override - public double balance() { - return this.holdings.balance(); - } - - @Override - public boolean set(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.set(amount); - return true; - } - - @Override - public boolean add(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.add(amount); - return true; - } - - @Override - public boolean subtract(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.subtract(amount); - return true; - } - - @Override - public boolean multiply(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.multiply(amount); - return true; - } - - @Override - public boolean divide(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.divide(amount); - return true; - } - - @Override - public boolean hasEnough(double amount) { - return this.holdings.hasEnough(amount); - } - - @Override - public boolean hasOver(double amount) { - return this.holdings.hasOver(amount); - } - - @Override - public boolean hasUnder(double amount) { - return this.holdings.hasUnder(amount); - } - - @Override - public boolean isNegative() { - return this.holdings.isNegative(); - } - - @Override - public boolean remove() { - if (this.account == null) { - return false; - } - this.account.remove(); - return true; - } - } -} \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java deleted file mode 100644 index 0c099a782..000000000 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.earth2me.essentials.register.payment.methods; - -import com.earth2me.essentials.register.payment.Method; -import com.iCo6.iConomy; -import com.iCo6.system.Account; -import com.iCo6.system.Accounts; -import com.iCo6.system.Holdings; -import org.bukkit.plugin.Plugin; - - -/** - * iConomy 6 Implementation of Method - * - * @author Nijikokun (@nijikokun) @copyright (c) 2011 @license AOL license - * - */ -public class iCo6 implements Method { - private iConomy iConomy; - - @Override - public iConomy getPlugin() { - return this.iConomy; - } - - @Override - public String getName() { - return "iConomy"; - } - - @Override - public String getLongName() { - return getName(); - } - - @Override - public String getVersion() { - return "6"; - } - - @Override - public int fractionalDigits() { - return 2; - } - - @Override - public String format(double amount) { - return com.iCo6.iConomy.format(amount); - } - - @Override - public boolean hasBanks() { - return false; - } - - @Override - public boolean hasBank(String bank) { - return false; - } - - @Override - public boolean hasAccount(String name) { - return (new Accounts()).exists(name); - } - - @Override - public boolean hasBankAccount(String bank, String name) { - return false; - } - - @Override - public boolean createAccount(String name) { - if (hasAccount(name)) { - return false; - } - - return (new Accounts()).create(name); - } - - @Override - public boolean createAccount(String name, Double balance) { - if (hasAccount(name)) { - return false; - } - - return (new Accounts()).create(name, balance); - } - - @Override - public MethodAccount getAccount(String name) { - return new iCoAccount((new Accounts()).get(name)); - } - - @Override - public MethodBankAccount getBankAccount(String bank, String name) { - return null; - } - - @Override - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iCo6.iConomy") && plugin instanceof iConomy; - } - - @Override - public void setPlugin(Plugin plugin) { - iConomy = (iConomy) plugin; - } - - - public class iCoAccount implements MethodAccount { - private final Account account; - private final Holdings holdings; - - public iCoAccount(Account account) { - this.account = account; - this.holdings = account.getHoldings(); - } - - public Account getiCoAccount() { - return account; - } - - @Override - public double balance() { - return this.holdings.getBalance(); - } - - @Override - public boolean set(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.setBalance(amount); - return true; - } - - @Override - public boolean add(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.add(amount); - return true; - } - - @Override - public boolean subtract(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.subtract(amount); - return true; - } - - @Override - public boolean multiply(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.multiply(amount); - return true; - } - - @Override - public boolean divide(double amount) { - if (this.holdings == null) { - return false; - } - this.holdings.divide(amount); - return true; - } - - @Override - public boolean hasEnough(double amount) { - return this.holdings.hasEnough(amount); - } - - @Override - public boolean hasOver(double amount) { - return this.holdings.hasOver(amount); - } - - @Override - public boolean hasUnder(double amount) { - return this.holdings.hasUnder(amount); - } - - @Override - public boolean isNegative() { - return this.holdings.isNegative(); - } - - @Override - public boolean remove() { - if (this.account == null) { - return false; - } - this.account.remove(); - return true; - } - } -} diff --git a/Essentials/src/com/earth2me/essentials/settings/Jails.java b/Essentials/src/com/earth2me/essentials/settings/Jails.java index 311a75f82..91b08ea9c 100644 --- a/Essentials/src/com/earth2me/essentials/settings/Jails.java +++ b/Essentials/src/com/earth2me/essentials/settings/Jails.java @@ -2,15 +2,39 @@ package com.earth2me.essentials.settings; import com.earth2me.essentials.storage.MapValueType; import com.earth2me.essentials.storage.StorageObject; -import lombok.Data; -import lombok.EqualsAndHashCode; import org.bukkit.Location; import java.util.HashMap; import java.util.Map; +import java.util.Objects; -@Data @EqualsAndHashCode(callSuper = false) public class Jails implements StorageObject { +public class Jails implements StorageObject { @MapValueType(Location.class) - private Map jails = new HashMap(); + private Map jails = new HashMap<>(); + + public Map getJails() { + return jails; + } + + public void setJails(Map jails) { + this.jails = jails; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Jails jails1 = (Jails) o; + return Objects.equals(jails, jails1.jails); + } + + @Override + public int hashCode() { + return Objects.hash(jails); + } } diff --git a/Essentials/src/com/earth2me/essentials/settings/Spawns.java b/Essentials/src/com/earth2me/essentials/settings/Spawns.java index 0ece0f2bf..5df62e8cf 100644 --- a/Essentials/src/com/earth2me/essentials/settings/Spawns.java +++ b/Essentials/src/com/earth2me/essentials/settings/Spawns.java @@ -2,15 +2,38 @@ package com.earth2me.essentials.settings; import com.earth2me.essentials.storage.MapValueType; import com.earth2me.essentials.storage.StorageObject; -import lombok.Data; -import lombok.EqualsAndHashCode; import org.bukkit.Location; import java.util.HashMap; import java.util.Map; +import java.util.Objects; - -@Data @EqualsAndHashCode(callSuper = false) public class Spawns implements StorageObject { +public class Spawns implements StorageObject { @MapValueType(Location.class) - private Map spawns = new HashMap(); + private Map spawns = new HashMap<>(); + + public Map getSpawns() { + return spawns; + } + + public void setSpawns(Map spawns) { + this.spawns = spawns; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Spawns spawns1 = (Spawns) o; + return Objects.equals(spawns, spawns1.spawns); + } + + @Override + public int hashCode() { + return Objects.hash(spawns); + } } diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java index 69a3585e9..46dcb4e0c 100644 --- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java +++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.signs; import com.earth2me.essentials.*; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; @@ -25,6 +26,7 @@ import static com.earth2me.essentials.I18n.tl; public class EssentialsSign { + private static final Material SIGN_POST = EnumUtil.getMaterial("SIGN", "SIGN_POST"); private static final Set EMPTY_SET = new HashSet(); protected static final BigDecimal MINTRANSACTION = new BigDecimal("0.01"); protected transient final String signName; @@ -58,9 +60,7 @@ public class EssentialsSign { sign.setLine(0, getSuccessName(ess)); } return ret; - } catch (ChargeException ex) { - showError(ess, user.getSource(), ex, signName); - } catch (SignException ex) { + } catch (ChargeException | SignException ex) { showError(ess, user.getSource(), ex, signName); } // Return true, so the player sees the wrong sign. @@ -115,9 +115,6 @@ public class EssentialsSign { } return onSignInteract(sign, user, getUsername(user), ess); - } catch (ChargeException ex) { - showError(ess, user.getSource(), ex, signName); - return false; } catch (Exception ex) { showError(ess, user.getSource(), ex, signName); return false; @@ -161,9 +158,7 @@ public class EssentialsSign { User user = ess.getUser(player); try { return onBlockPlace(block, user, getUsername(user), ess); - } catch (ChargeException ex) { - showError(ess, user.getSource(), ex, signName); - } catch (SignException ex) { + } catch (ChargeException | SignException ex) { showError(ess, user.getSource(), ex, signName); } return false; @@ -173,9 +168,7 @@ public class EssentialsSign { User user = ess.getUser(player); try { return onBlockInteract(block, user, getUsername(user), ess); - } catch (ChargeException ex) { - showError(ess, user.getSource(), ex, signName); - } catch (SignException ex) { + } catch (ChargeException | SignException ex) { showError(ess, user.getSource(), ex, signName); } return false; @@ -213,7 +206,7 @@ public class EssentialsSign { protected static boolean checkIfBlockBreaksSigns(final Block block) { final Block sign = block.getRelative(BlockFace.UP); - if (sign.getType() == Material.SIGN_POST && isValidSign(new BlockSign(sign))) { + if (sign.getType() == SIGN_POST && isValidSign(new BlockSign(sign))) { return true; } final BlockFace[] directions = new BlockFace[]{BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST}; @@ -304,12 +297,16 @@ public class EssentialsSign { } protected final Trade getTrade(final ISign sign, final int amountIndex, final int itemIndex, final User player, final IEssentials ess) throws SignException { + return getTrade(sign, amountIndex, itemIndex, player, false, ess); + } + + protected final Trade getTrade(final ISign sign, final int amountIndex, final int itemIndex, final User player, final boolean allowId, final IEssentials ess) throws SignException { final String itemType = getSignText(sign, itemIndex); if (itemType.equalsIgnoreCase("exp") || itemType.equalsIgnoreCase("xp")) { final int amount = getIntegerPositive(getSignText(sign, amountIndex)); return new Trade(amount, ess); } - final ItemStack item = getItemStack(itemType, 1, ess); + final ItemStack item = getItemStack(itemType, 1, allowId, ess); final int amount = Math.min(getIntegerPositive(getSignText(sign, amountIndex)), item.getType().getMaxStackSize() * player.getBase().getInventory().getSize()); if (item.getType() == Material.AIR || amount < 1) { throw new SignException(tl("moreThanZero")); @@ -346,6 +343,17 @@ public class EssentialsSign { } protected final ItemStack getItemStack(final String itemName, final int quantity, final IEssentials ess) throws SignException { + return getItemStack(itemName, quantity, false, ess); + } + + protected final ItemStack getItemStack(final String itemName, final int quantity, final boolean allowId, final IEssentials ess) throws SignException { + if (allowId && ess.getSettings().allowOldIdSigns()) { + final Material newMaterial = ess.getItemDb().getFromLegacy(itemName); + if (newMaterial != null) { + return new ItemStack(newMaterial, quantity); + } + } + try { final ItemStack item = ess.getItemDb().get(itemName); item.setAmount(quantity); @@ -398,6 +406,10 @@ public class EssentialsSign { } protected final Trade getTrade(final ISign sign, final int index, final int decrement, final IEssentials ess) throws SignException { + return getTrade(sign, index, decrement, false, ess); + } + + protected final Trade getTrade(final ISign sign, final int index, final int decrement, final boolean allowId, final IEssentials ess) throws SignException { final String line = getSignText(sign, index); if (line.isEmpty()) { return new Trade(signName.toLowerCase(Locale.ENGLISH) + "sign", ess); @@ -420,7 +432,7 @@ public class EssentialsSign { sign.setLine(index, quantity + " exp"); return new Trade(quantity, ess); } else { - final ItemStack stack = getItemStack(item, quantity, ess); + final ItemStack stack = getItemStack(item, quantity, allowId, ess); sign.setLine(index, quantity + " " + item); return new Trade(stack, ess); } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java index bf6ce02f1..89b027a1b 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.signs; import com.earth2me.essentials.I18n; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; @@ -22,7 +23,7 @@ import java.util.logging.Logger; public class SignBlockListener implements Listener { private static final Logger LOGGER = Logger.getLogger("Essentials"); private static final Material WALL_SIGN = Material.WALL_SIGN; - private static final Material SIGN_POST = Material.SIGN_POST; + private static final Material SIGN_POST = EnumUtil.getMaterial("SIGN", "SIGN_POST"); private final transient IEssentials ess; public SignBlockListener(IEssentials ess) { diff --git a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java index 192470ed3..7b8670200 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.signs; +import com.earth2me.essentials.utils.EnumUtil; import net.ess3.api.IEssentials; import org.bukkit.Material; import org.bukkit.block.Block; @@ -11,6 +12,8 @@ import org.bukkit.event.entity.EntityExplodeEvent; public class SignEntityListener implements Listener { + + private static final Material SIGN_POST = EnumUtil.getMaterial("SIGN", "SIGN_POST"); private final transient IEssentials ess; public SignEntityListener(final IEssentials ess) { @@ -25,7 +28,7 @@ public class SignEntityListener implements Listener { } for (Block block : event.blockList()) { - if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) { + if (((block.getType() == Material.WALL_SIGN || block.getType() == SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) { event.setCancelled(true); return; } @@ -46,7 +49,7 @@ public class SignEntityListener implements Listener { } final Block block = event.getBlock(); - if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) { + if (((block.getType() == Material.WALL_SIGN || block.getType() == SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) { event.setCancelled(true); return; } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignGameMode.java b/Essentials/src/com/earth2me/essentials/signs/SignGameMode.java index 05db6c661..820ecd84c 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignGameMode.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignGameMode.java @@ -54,6 +54,8 @@ public class SignGameMode extends EssentialsSign { player.setGameMode(GameMode.CREATIVE); } else if (mode.contains("advent") || mode.equalsIgnoreCase("2")) { player.setGameMode(GameMode.ADVENTURE); + } else if (mode.contains("spec") || mode.equalsIgnoreCase("3")) { + player.setGameMode(GameMode.SPECTATOR); } else { throw new SignException(tl("invalidSignLine", 2)); } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignKit.java b/Essentials/src/com/earth2me/essentials/signs/SignKit.java index d47110d97..a9e569283 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignKit.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignKit.java @@ -28,7 +28,7 @@ public class SignKit extends EssentialsSign { return false; } else { try { - ess.getSettings().getKit(kitName); + ess.getKits().getKit(kitName); } catch (Exception ex) { throw new SignException(ex.getMessage(), ex); } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java index 6d6188b98..b1d79dc75 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.signs; +import com.earth2me.essentials.utils.MaterialUtil; import net.ess3.api.IEssentials; import org.bukkit.Material; import org.bukkit.block.Block; @@ -54,7 +55,7 @@ public class SignPlayerListener implements Listener { } final Material mat = block.getType(); - if (mat == Material.SIGN_POST || mat == Material.WALL_SIGN) { + if (MaterialUtil.isSign(mat)) { final String csign = ((Sign) block.getState()).getLine(0); for (EssentialsSign sign : ess.getSettings().enabledSigns()) { if (csign.equalsIgnoreCase(sign.getSuccessName(ess))) { diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java index befbedbfe..9368ae60e 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java @@ -4,7 +4,9 @@ import com.earth2me.essentials.ChargeException; import com.earth2me.essentials.Trade; import com.earth2me.essentials.Trade.OverflowType; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.FormatUtil; +import com.earth2me.essentials.utils.MaterialUtil; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; import org.bukkit.Location; @@ -21,14 +23,14 @@ import static com.earth2me.essentials.I18n.tl; @Deprecated // This sign will be removed soon public class SignProtection extends EssentialsSign { - private final transient Set protectedBlocks = EnumSet.noneOf(Material.class); + private final transient Set protectedBlocks = EnumUtil.getAllMatching(Material.class, + "CHEST", + "FURNACE", + "BURNING_FURNACE", + "DISPENSER"); public SignProtection() { super("Protection"); - protectedBlocks.add(Material.CHEST); - protectedBlocks.add(Material.BURNING_FURNACE); - protectedBlocks.add(Material.FURNACE); - protectedBlocks.add(Material.DISPENSER); } @Override @@ -103,7 +105,7 @@ public class SignProtection extends EssentialsSign { } private SignProtectionState checkProtectionSign(final Block block, final User user, final String username) { - if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) { + if (MaterialUtil.isSign(block.getType())) { final BlockSign sign = new BlockSign(block); if (sign.getLine(0).equals(this.getSuccessName())) { // TODO call getSuccessName(IEssentials) return checkProtectionSign(sign, user, username); @@ -160,7 +162,7 @@ public class SignProtection extends EssentialsSign { public boolean isBlockProtected(final Block block) { final Block[] faces = getAdjacentBlocks(block); for (Block b : faces) { - if (b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN) { + if (MaterialUtil.isSign(b.getType())) { final Sign sign = (Sign) b.getState(); if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) { return true; @@ -170,7 +172,7 @@ public class SignProtection extends EssentialsSign { final Block[] faceChest = getAdjacentBlocks(b); for (Block a : faceChest) { - if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN) { + if (MaterialUtil.isSign(a.getType())) { final Sign sign = (Sign) a.getState(); if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) { return true; diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 4b8015b5d..990aaf313 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -26,8 +26,8 @@ public class SignTrade extends EssentialsSign { protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException { validateTrade(sign, 1, false, ess); validateTrade(sign, 2, true, ess); - final Trade trade = getTrade(sign, 2, AmountType.ROUNDED, true, ess); - final Trade charge = getTrade(sign, 1, AmountType.ROUNDED, false, ess); + final Trade trade = getTrade(sign, 2, AmountType.ROUNDED, true, true, ess); + final Trade charge = getTrade(sign, 1, AmountType.ROUNDED, false, true, ess); if (trade.getType() == charge.getType() && (trade.getType() != TradeType.ITEM || trade.getItemStack().isSimilar(charge.getItemStack()))) { throw new SignException("You cannot trade for the same item type."); } @@ -44,7 +44,7 @@ public class SignTrade extends EssentialsSign { final Trade store = rechargeSign(sign, ess, player); Trade stored; try { - stored = getTrade(sign, 1, AmountType.TOTAL, true, ess); + stored = getTrade(sign, 1, AmountType.TOTAL, true, true, ess); subtractAmount(sign, 1, stored, ess); Map withdraw = stored.pay(player, OverflowType.RETURN); @@ -62,8 +62,8 @@ public class SignTrade extends EssentialsSign { } Trade.log("Sign", "Trade", "Deposit", username, store, username, null, sign.getBlock().getLocation(), ess); } else { - final Trade charge = getTrade(sign, 1, AmountType.COST, false, ess); - final Trade trade = getTrade(sign, 2, AmountType.COST, true, ess); + final Trade charge = getTrade(sign, 1, AmountType.COST, false, true, ess); + final Trade trade = getTrade(sign, 2, AmountType.COST, true, true, ess); charge.isAffordableFor(player); addAmount(sign, 1, charge, ess); subtractAmount(sign, 2, trade, ess); @@ -80,7 +80,7 @@ public class SignTrade extends EssentialsSign { } private Trade rechargeSign(final ISign sign, final IEssentials ess, final User player) throws SignException, ChargeException { - final Trade trade = getTrade(sign, 2, AmountType.COST, false, ess); + final Trade trade = getTrade(sign, 2, AmountType.COST, false, true, ess); if (trade.getItemStack() != null && player.getBase().getItemInHand() != null && trade.getItemStack().getType() == player.getBase().getItemInHand().getType() && trade.getItemStack().getDurability() == player.getBase().getItemInHand().getDurability() && trade.getItemStack().getEnchantments().equals(player.getBase().getItemInHand().getEnchantments())) { int amount = player.getBase().getItemInHand().getAmount(); amount -= amount % trade.getItemStack().getAmount(); @@ -106,8 +106,8 @@ public class SignTrade extends EssentialsSign { if (canBreak) { try { - final Trade stored1 = getTrade(sign, 1, AmountType.TOTAL, false, ess); - final Trade stored2 = getTrade(sign, 2, AmountType.TOTAL, false, ess); + final Trade stored1 = getTrade(sign, 1, AmountType.TOTAL, false, true, ess); + final Trade stored2 = getTrade(sign, 2, AmountType.TOTAL, false, true, ess); if (!canCollect) { Trade.log("Sign", "Trade", "Destroy", signOwner, stored2, username, stored1, sign.getBlock().getLocation(), ess); @@ -206,6 +206,10 @@ public class SignTrade extends EssentialsSign { } protected final Trade getTrade(final ISign sign, final int index, final AmountType amountType, final boolean notEmpty, final IEssentials ess) throws SignException { + return getTrade(sign, index, amountType, notEmpty, false, ess); + } + + protected final Trade getTrade(final ISign sign, final int index, final AmountType amountType, final boolean notEmpty, final boolean allowId, final IEssentials ess) throws SignException { final String line = sign.getLine(index).trim(); if (line.isEmpty()) { throw new SignException("Empty line"); @@ -237,7 +241,7 @@ public class SignTrade extends EssentialsSign { return new Trade((amountType == AmountType.COST ? stackamount : amount), ess); } else { final int stackamount = getIntegerPositive(split[0]); - final ItemStack item = getItemStack(split[1], stackamount, ess); + final ItemStack item = getItemStack(split[1], stackamount, allowId, ess); int amount = getInteger(split[2]); if (amountType == AmountType.ROUNDED) { amount -= amount % stackamount; diff --git a/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java b/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java index 54f780e52..931ad852f 100644 --- a/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java +++ b/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java @@ -1,18 +1,23 @@ package com.earth2me.essentials.storage; +import com.earth2me.essentials.Enchantments; import com.earth2me.essentials.utils.NumberUtil; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.NamespacedKey; import org.bukkit.World; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.material.MaterialData; import org.bukkit.plugin.Plugin; +import org.yaml.snakeyaml.constructor.BaseConstructor; import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; import org.yaml.snakeyaml.introspector.PropertyUtils; import org.yaml.snakeyaml.nodes.*; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Locale; @@ -30,23 +35,37 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { setPropertyUtils(propertyUtils); } + private Method constructScalarMethod = null; + + protected String constructScalarRefl(ScalarNode scalarNode) { + try { + if (constructScalarMethod == null) { + constructScalarMethod = BaseConstructor.class.getDeclaredMethod("constructScalar", ScalarNode.class); + } + return (String) constructScalarMethod.invoke(this, scalarNode); + } catch (NoSuchMethodException + | SecurityException + | IllegalAccessException + | IllegalArgumentException + | InvocationTargetException e) { + e.printStackTrace(); + } + + return null; + } + private class ConstructBukkitScalar extends ConstructScalar { + @Override public Object construct(final Node node) { if (node.getType().equals(Material.class)) { - final String val = (String) constructScalar((ScalarNode) node); - Material mat; - if (NumberUtil.isInt(val)) { - final int typeId = Integer.parseInt(val); - mat = Material.getMaterial(typeId); - } else { - mat = Material.matchMaterial(val); - } - return mat; + final String val = constructScalarRefl((ScalarNode) node); + return Material.matchMaterial(val); } + if (node.getType().equals(MaterialData.class)) { - final String val = (String) constructScalar((ScalarNode) node); + final String val = constructScalarRefl((ScalarNode) node); if (val.isEmpty()) { return null; } @@ -54,13 +73,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { if (split.length == 0) { return null; } - Material mat; - if (NumberUtil.isInt(split[0])) { - final int typeId = Integer.parseInt(split[0]); - mat = Material.getMaterial(typeId); - } else { - mat = Material.matchMaterial(split[0]); - } + + Material mat = Material.matchMaterial(split[0]); + if (mat == null) { return null; } @@ -71,7 +86,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { return new MaterialData(mat, data); } if (node.getType().equals(ItemStack.class)) { - final String val = (String) constructScalar((ScalarNode) node); + final String val = constructScalarRefl((ScalarNode) node); if (val.isEmpty()) { return null; } @@ -83,13 +98,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { if (split2.length == 0) { return null; } - Material mat; - if (NumberUtil.isInt(split2[0])) { - final int typeId = Integer.parseInt(split2[0]); - mat = Material.getMaterial(typeId); - } else { - mat = Material.matchMaterial(split2[0]); - } + + Material mat = Material.matchMaterial(split2[0]); + if (mat == null) { return null; } @@ -108,13 +119,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { if (split3.length < 1) { continue; } - Enchantment enchantment; - if (NumberUtil.isInt(split3[0])) { - final int enchantId = Integer.parseInt(split3[0]); - enchantment = Enchantment.getById(enchantId); - } else { - enchantment = Enchantment.getByName(split3[0].toUpperCase(Locale.ENGLISH)); - } + Enchantment enchantment = Enchantments.getByName(split3[0]); if (enchantment == null) { continue; } @@ -134,7 +139,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { return stack; } if (node.getType().equals(EnchantmentLevel.class)) { - final String val = (String) constructScalar((ScalarNode) node); + final String val = constructScalarRefl((ScalarNode) node); if (val.isEmpty()) { return null; } @@ -142,13 +147,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { if (split.length == 0) { return null; } - Enchantment enchant; - if (NumberUtil.isInt(split[0])) { - final int typeId = Integer.parseInt(split[0]); - enchant = Enchantment.getById(typeId); - } else { - enchant = Enchantment.getByName(split[0].toUpperCase(Locale.ENGLISH)); - } + Enchantment enchant = Enchantments.getByName(split[0]); if (enchant == null) { return null; } @@ -169,6 +168,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { } private class ConstructBukkitMapping extends ConstructMapping { + @Override public Object construct(final Node node) { if (node.getType().equals(Location.class)) { @@ -181,25 +181,25 @@ public class BukkitConstructor extends CustomClassLoaderConstructor { return null; } for (NodeTuple nodeTuple : mnode.getValue()) { - final String key = (String) constructScalar((ScalarNode) nodeTuple.getKeyNode()); + final String key = constructScalarRefl((ScalarNode) nodeTuple.getKeyNode()); final ScalarNode snode = (ScalarNode) nodeTuple.getValueNode(); if (key.equalsIgnoreCase("world")) { - worldName = (String) constructScalar(snode); + worldName = constructScalarRefl(snode); } if (key.equalsIgnoreCase("x")) { - x = Double.parseDouble((String) constructScalar(snode)); + x = Double.parseDouble(constructScalarRefl(snode)); } if (key.equalsIgnoreCase("y")) { - y = Double.parseDouble((String) constructScalar(snode)); + y = Double.parseDouble(constructScalarRefl(snode)); } if (key.equalsIgnoreCase("z")) { - z = Double.parseDouble((String) constructScalar(snode)); + z = Double.parseDouble(constructScalarRefl(snode)); } if (key.equalsIgnoreCase("yaw")) { - yaw = Float.parseFloat((String) constructScalar(snode)); + yaw = Float.parseFloat(constructScalarRefl(snode)); } if (key.equalsIgnoreCase("pitch")) { - pitch = Float.parseFloat((String) constructScalar(snode)); + pitch = Float.parseFloat(constructScalarRefl(snode)); } } if (worldName == null || worldName.isEmpty()) { diff --git a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java index 8c304c2c9..2a1ed4cae 100644 --- a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java +++ b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java @@ -32,6 +32,7 @@ public class KeywordReplacer implements IText { private final transient IEssentials ess; private final transient boolean includePrivate; private transient ExecuteTimer execTimer; + private final transient boolean replaceSpacesWithUnderscores; private final EnumMap keywordCache = new EnumMap(KeywordType.class); public KeywordReplacer(final IText input, final CommandSource sender, final IEssentials ess) { @@ -39,6 +40,7 @@ public class KeywordReplacer implements IText { this.replaced = new ArrayList(this.input.getLines().size()); this.ess = ess; this.includePrivate = true; + this.replaceSpacesWithUnderscores = false; replaceKeywords(sender); } @@ -47,6 +49,17 @@ public class KeywordReplacer implements IText { this.replaced = new ArrayList(this.input.getLines().size()); this.ess = ess; this.includePrivate = showPrivate; + this.replaceSpacesWithUnderscores = false; + replaceKeywords(sender); + } + + public KeywordReplacer(final IText input, final CommandSource sender, final IEssentials ess, final boolean showPrivate, + boolean replaceSpacesWithUnderscores) { + this.input = input; + this.replaced = new ArrayList(this.input.getLines().size()); + this.ess = ess; + this.includePrivate = showPrivate; + this.replaceSpacesWithUnderscores = replaceSpacesWithUnderscores; replaceKeywords(sender); } @@ -266,6 +279,10 @@ public class KeywordReplacer implements IText { break; } + if (this.replaceSpacesWithUnderscores) { + replacer = replacer.replaceAll("\\s", "_"); + } + //If this is just a regular keyword, lets throw it into the cache if (validKeyword.getType().equals(KeywordCachable.CACHEABLE)) { keywordCache.put(validKeyword, replacer); diff --git a/Essentials/src/com/earth2me/essentials/utils/EnumUtil.java b/Essentials/src/com/earth2me/essentials/utils/EnumUtil.java new file mode 100644 index 000000000..177bff0ef --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/utils/EnumUtil.java @@ -0,0 +1,81 @@ +package com.earth2me.essentials.utils; + +import org.bukkit.Material; +import org.bukkit.Statistic; + +import java.lang.reflect.Field; +import java.util.HashSet; +import java.util.Set; + +public class EnumUtil { + + + /** + * Returns the field matching the first provided enum name that exists within the given + * enum class. If no field is found, this method returns null. + * + * @param enumClass The class to search through + * @param names The names of the fields to search for + * @param The enum to search through + * @return The first matching enum field + */ + public static T valueOf(Class enumClass, String... names) { + for (String name : names) { + try { + Field enumField = enumClass.getDeclaredField(name); + + if (enumField.isEnumConstant()) { + return (T) enumField.get(null); + } + } catch (NoSuchFieldException | IllegalAccessException ignored) {} + } + + return null; + } + + /** + * Return a set containing all fields of the given enum that maths one of the provided + * names. + * + * @param enumClass The class to search through + * @param names The names of the fields to search for + * @param The enum to search through + * @return All matching enum fields + */ + public static Set getAllMatching(Class enumClass, String... names) { + Set set = new HashSet<>(); + + for (String name : names) { + try { + Field enumField = enumClass.getDeclaredField(name); + + if (enumField.isEnumConstant()) { + set.add((T) enumField.get(null)); + } + } catch (NoSuchFieldException | IllegalAccessException ignored) {} + } + + return set; + } + + /** + * Gets the first Material field found from the given names. + * + * @param names The names of the fields to search for + * @return The first matching Material + */ + public static Material getMaterial(String... names) { + return valueOf(Material.class, names); + } + + /** + * Gets the first Statistic field found from the given names. + * + * @param names The names of the fields to search for + * @return The first matching Statistic + */ + public static Statistic getStatistic(String... names) { + return valueOf(Statistic.class, names); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java b/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java index 64d5bb2c6..d8a54781c 100644 --- a/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java +++ b/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.utils; +import com.earth2me.essentials.IEssentials; import net.ess3.api.IUser; import org.bukkit.GameMode; import org.bukkit.Location; @@ -13,158 +14,32 @@ import java.util.*; import static com.earth2me.essentials.I18n.tl; -import com.earth2me.essentials.Essentials; -import com.earth2me.essentials.IEssentials; - public class LocationUtil { // The player can stand inside these materials - public static final Set HOLLOW_MATERIALS = new HashSet<>(); + private static final Set HOLLOW_MATERIALS = new HashSet<>(); private static final Set TRANSPARENT_MATERIALS = new HashSet<>(); static { // Materials from Material.isTransparent() - HOLLOW_MATERIALS.add(Material.AIR); - HOLLOW_MATERIALS.add(Material.SAPLING); - HOLLOW_MATERIALS.add(Material.POWERED_RAIL); - HOLLOW_MATERIALS.add(Material.DETECTOR_RAIL); - HOLLOW_MATERIALS.add(Material.LONG_GRASS); - HOLLOW_MATERIALS.add(Material.DEAD_BUSH); - HOLLOW_MATERIALS.add(Material.YELLOW_FLOWER); - HOLLOW_MATERIALS.add(Material.RED_ROSE); - HOLLOW_MATERIALS.add(Material.BROWN_MUSHROOM); - HOLLOW_MATERIALS.add(Material.RED_MUSHROOM); - HOLLOW_MATERIALS.add(Material.TORCH); - HOLLOW_MATERIALS.add(Material.FIRE); - HOLLOW_MATERIALS.add(Material.REDSTONE_WIRE); - HOLLOW_MATERIALS.add(Material.CROPS); - HOLLOW_MATERIALS.add(Material.LADDER); - HOLLOW_MATERIALS.add(Material.RAILS); - HOLLOW_MATERIALS.add(Material.LEVER); - HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_OFF); - HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_ON); - HOLLOW_MATERIALS.add(Material.STONE_BUTTON); - HOLLOW_MATERIALS.add(Material.SNOW); - HOLLOW_MATERIALS.add(Material.SUGAR_CANE_BLOCK); - HOLLOW_MATERIALS.add(Material.PORTAL); - HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_OFF); - HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_ON); - HOLLOW_MATERIALS.add(Material.PUMPKIN_STEM); - HOLLOW_MATERIALS.add(Material.MELON_STEM); - HOLLOW_MATERIALS.add(Material.VINE); - HOLLOW_MATERIALS.add(Material.WATER_LILY); - HOLLOW_MATERIALS.add(Material.NETHER_WARTS); - HOLLOW_MATERIALS.add(Material.ENDER_PORTAL); - HOLLOW_MATERIALS.add(Material.COCOA); - HOLLOW_MATERIALS.add(Material.TRIPWIRE_HOOK); - HOLLOW_MATERIALS.add(Material.TRIPWIRE); - HOLLOW_MATERIALS.add(Material.FLOWER_POT); - HOLLOW_MATERIALS.add(Material.CARROT); - HOLLOW_MATERIALS.add(Material.POTATO); - HOLLOW_MATERIALS.add(Material.WOOD_BUTTON); - HOLLOW_MATERIALS.add(Material.SKULL); - HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_OFF); - HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_ON); - HOLLOW_MATERIALS.add(Material.ACTIVATOR_RAIL); - HOLLOW_MATERIALS.add(Material.CARPET); - HOLLOW_MATERIALS.add(Material.DOUBLE_PLANT); - - // Additional Materials added in by Essentials - HOLLOW_MATERIALS.add(Material.SEEDS); - HOLLOW_MATERIALS.add(Material.SIGN_POST); - HOLLOW_MATERIALS.add(Material.WOODEN_DOOR); - HOLLOW_MATERIALS.add(Material.WALL_SIGN); - HOLLOW_MATERIALS.add(Material.STONE_PLATE); - HOLLOW_MATERIALS.add(Material.IRON_DOOR_BLOCK); - HOLLOW_MATERIALS.add(Material.WOOD_PLATE); - HOLLOW_MATERIALS.add(Material.FENCE_GATE); + for (Material mat : Material.values()) { + if (mat.isTransparent()) { + HOLLOW_MATERIALS.add(mat); + } + } TRANSPARENT_MATERIALS.addAll(HOLLOW_MATERIALS); TRANSPARENT_MATERIALS.add(Material.WATER); - TRANSPARENT_MATERIALS.add(Material.STATIONARY_WATER); + try { + TRANSPARENT_MATERIALS.add(Material.valueOf("FLOWING_WATER")); + } catch (Exception ignored) {} // 1.13 WATER uses Levelled } public static final int RADIUS = 3; public static final Vector3D[] VOLUME; public static ItemStack convertBlockToItem(final Block block) { - final ItemStack is = new ItemStack(block.getType(), 1, (short) 0, block.getData()); - switch (is.getType()) { - case WOODEN_DOOR: - is.setType(Material.WOOD_DOOR); - is.setDurability((short) 0); - break; - case IRON_DOOR_BLOCK: - is.setType(Material.IRON_DOOR); - is.setDurability((short) 0); - break; - case SIGN_POST: - case WALL_SIGN: - is.setType(Material.SIGN); - is.setDurability((short) 0); - break; - case CROPS: - is.setType(Material.SEEDS); - is.setDurability((short) 0); - break; - case CAKE_BLOCK: - is.setType(Material.CAKE); - is.setDurability((short) 0); - break; - case BED_BLOCK: - is.setType(Material.BED); - is.setDurability((short) 0); - break; - case REDSTONE_WIRE: - is.setType(Material.REDSTONE); - is.setDurability((short) 0); - break; - case REDSTONE_TORCH_OFF: - case REDSTONE_TORCH_ON: - is.setType(Material.REDSTONE_TORCH_ON); - is.setDurability((short) 0); - break; - case DIODE_BLOCK_OFF: - case DIODE_BLOCK_ON: - is.setType(Material.DIODE); - is.setDurability((short) 0); - break; - case DOUBLE_STEP: - is.setType(Material.STEP); - break; - case TORCH: - case RAILS: - case LADDER: - case WOOD_STAIRS: - case COBBLESTONE_STAIRS: - case LEVER: - case STONE_BUTTON: - case FURNACE: - case DISPENSER: - case PUMPKIN: - case JACK_O_LANTERN: - case WOOD_PLATE: - case STONE_PLATE: - case PISTON_STICKY_BASE: - case PISTON_BASE: - case IRON_FENCE: - case THIN_GLASS: - case TRAP_DOOR: - case FENCE: - case FENCE_GATE: - case NETHER_FENCE: - is.setDurability((short) 0); - break; - case FIRE: - return null; - case PUMPKIN_STEM: - is.setType(Material.PUMPKIN_SEEDS); - break; - case MELON_STEM: - is.setType(Material.MELON_SEEDS); - break; - } - return is; + return new ItemStack(block.getType(), 1); } @@ -173,7 +48,7 @@ public class LocationUtil { public int y; public int z; - public Vector3D(int x, int y, int z) { + Vector3D(int x, int y, int z) { this.x = x; this.y = y; this.z = z; @@ -181,7 +56,7 @@ public class LocationUtil { } static { - List pos = new ArrayList(); + List pos = new ArrayList<>(); for (int x = -RADIUS; x <= RADIUS; x++) { for (int y = -RADIUS; y <= RADIUS; y++) { for (int z = -RADIUS; z <= RADIUS; z++) { @@ -189,42 +64,27 @@ public class LocationUtil { } } } - Collections.sort(pos, new Comparator() { - @Override - public int compare(Vector3D a, Vector3D b) { - return (a.x * a.x + a.y * a.y + a.z * a.z) - (b.x * b.x + b.y * b.y + b.z * b.z); - } - }); + pos.sort(Comparator.comparingInt(a -> (a.x * a.x + a.y * a.y + a.z * a.z))); VOLUME = pos.toArray(new Vector3D[0]); } - @SuppressWarnings("deprecation") public static Location getTarget(final LivingEntity entity) throws Exception { - Block block; + Block block = null; try { block = entity.getTargetBlock(TRANSPARENT_MATERIALS, 300); - } catch (NoSuchMethodError e) { - HashSet legacyTransparent = new HashSet<>(); // Bukkit API prevents declaring as Set - for (Material m : TRANSPARENT_MATERIALS) { - legacyTransparent.add((byte) m.getId()); - } - block = entity.getTargetBlock(legacyTransparent, 300); - } + } catch (NoSuchMethodError ignored) {} // failing now :( if (block == null) { throw new Exception("Not targeting a block"); } return block.getLocation(); } - static boolean isBlockAboveAir(final World world, final int x, final int y, final int z) { - if (y > world.getMaxHeight()) { - return true; - } - return HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType()); + public static boolean isBlockAboveAir(final World world, final int x, final int y, final int z) { + return y > world.getMaxHeight() || HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType()); } public static boolean isBlockUnsafeForUser(final IUser user, final World world, final int x, final int y, final int z) { - if (user.getBase().isOnline() && world.equals(user.getBase().getWorld()) && (user.getBase().getGameMode() == GameMode.CREATIVE || user.isGodModeEnabled()) && user.getBase().getAllowFlight()) { + if (user.getBase().isOnline() && world.equals(user.getBase().getWorld()) && (user.getBase().getGameMode() == GameMode.CREATIVE || user.getBase().getGameMode() == GameMode.SPECTATOR || user.isGodModeEnabled()) && user.getBase().getAllowFlight()) { return false; } @@ -235,26 +95,34 @@ public class LocationUtil { } public static boolean isBlockUnsafe(final World world, final int x, final int y, final int z) { - if (isBlockDamaging(world, x, y, z)) { - return true; - } - return isBlockAboveAir(world, x, y, z); + return isBlockDamaging(world, x, y, z) || isBlockAboveAir(world, x, y, z); } public static boolean isBlockDamaging(final World world, final int x, final int y, final int z) { final Block below = world.getBlockAt(x, y - 1, z); - if (below.getType() == Material.LAVA || below.getType() == Material.STATIONARY_LAVA) { + + switch (below.getType()) { + case LAVA: + case FIRE: + return true; + } + + if (MaterialUtil.isBed(below.getType())) { return true; } - if (below.getType() == Material.FIRE) { - return true; - } - if (below.getType() == Material.BED_BLOCK) { - return true; - } - if (world.getBlockAt(x, y, z).getType() == Material.PORTAL) { + + try { + if (below.getType() == Material.valueOf("FLOWING_LAVA")) { + return true; + } + } catch (Exception ignored) {} // 1.13 LAVA uses Levelled + + Material PORTAL = EnumUtil.getMaterial("NETHER_PORTAL", "PORTAL"); + + if (world.getBlockAt(x, y, z).getType() == PORTAL) { return true; } + return (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y, z).getType())) || (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y + 1, z).getType())); } @@ -281,7 +149,6 @@ public class LocationUtil { user.getBase().setFlying(true); } // ess can be null if old deprecated method is calling it. - System.out.println((ess == null) + " " + ess.getSettings().isTeleportToCenterLocation()); if (ess == null || ess.getSettings().isTeleportToCenterLocation()) { return getRoundedDestination(loc); } else { diff --git a/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java b/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java new file mode 100644 index 000000000..02b44d54a --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java @@ -0,0 +1,127 @@ +package com.earth2me.essentials.utils; + +import org.bukkit.Bukkit; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.material.MaterialData; + +import java.util.EnumSet; +import java.util.Optional; +import java.util.Set; + +public class MaterialUtil { + + + private static final Set BEDS; + private static final Set BANNERS; + private static final Set FIREWORKS; + private static final Set LEGACY_SKULLS; + private static final Set LEATHER_ARMOR; + private static final Set MOB_HEADS; + // includes TIPPED_ARROW which also has potion effects + private static final Set PLAYER_HEADS; + private static final Set POTIONS; + private static final Set SIGNS; + + public static final Material SPAWNER = EnumUtil.getMaterial("MOB_SPAWNER", "SPAWNER"); + + static { + + BEDS = EnumUtil.getAllMatching(Material.class, "BED", "WHITE_BED", "ORANGE_BED", + "MAGENTA_BED", "LIGHT_BLUE_BED", "YELLOW_BED", "LIME_BED", "PINK_BED", "GRAY_BED", + "LIGHT_GRAY_BED", "CYAN_BED", "PURPLE_BED", "BLUE_BED", "BROWN_BED", "GREEN_BED", + "RED_BED", "BLACK_BED"); + + BANNERS = EnumUtil.getAllMatching(Material.class, "BANNER", "WHITE_BANNER", + "ORANGE_BANNER", "MAGENTA_BANNER", "LIGHT_BLUE_BANNER", "YELLOW_BANNER", "LIME_BANNER", + "PINK_BANNER","GRAY_BANNER","LIGHT_GRAY_BANNER", "CYAN_BANNER", "PURPLE_BANNER", + "BLUE_BANNER", "BROWN_BANNER", "GREEN_BANNER", "RED_BANNER", "BLACK_BANNER", "SHIELD"); + + FIREWORKS = EnumUtil.getAllMatching(Material.class, "FIREWORK", "FIREWORK_ROCKET", + "FIREWORK_CHARGE", "FIREWORK_STAR"); + + LEATHER_ARMOR = EnumUtil.getAllMatching(Material.class, "LEATHER_HELMET", + "LEATHER_CHESTPLATE", "LEATHER_LEGGINGS", "LEATHER_BOOTS"); + + LEGACY_SKULLS = EnumUtil.getAllMatching(Material.class,"SKULL", "SKULL_ITEM"); + + MOB_HEADS = EnumUtil.getAllMatching(Material.class, "SKELETON_SKULL", + "SKELETON_WALL_SKULL", "WITHER_SKELETON_SKULL", "WITHER_SKELETON_WALL_SKULL", + "CREEPER_HEAD", "CREEPER_WALL_HEAD", "ZOMBIE_HEAD", "ZOMBIE_WALL_HEAD", "DRAGON_HEAD" + , "DRAGON_WALL_HEAD"); + + PLAYER_HEADS = EnumUtil.getAllMatching(Material.class, "PLAYER_HEAD", "PLAYER_WALL_HEAD"); + + POTIONS = EnumUtil.getAllMatching(Material.class, "POTION", "SPLASH_POTION", + "LINGERING_POTION", "TIPPED_ARROW"); + + SIGNS = EnumUtil.getAllMatching(Material.class, "SIGN", "SIGN_POST", "WALL_SIGN"); + } + + public static boolean isBed(Material material) { + return BEDS.contains(material); + } + + public static boolean isBanner(Material material) { + return BANNERS.contains(material); + } + + public static boolean isFirework(Material material) { + return FIREWORKS.contains(material); + } + + public static boolean isLeatherArmor(Material material) { + return LEATHER_ARMOR.contains(material); + } + + public static boolean isMobHead(Material material, int durability) { + if (MOB_HEADS.contains(material)) { + return true; + } + + return LEGACY_SKULLS.contains(material) && (durability < 0 || durability != 3); + } + + public static boolean isPlayerHead(Material material, int durability) { + if (PLAYER_HEADS.contains(material)) { + return true; + } + + return LEGACY_SKULLS.contains(material) && durability == 3; + } + + public static boolean isPotion(Material material) { + return POTIONS.contains(material); + } + + public static boolean isSign(Material material) { + return SIGNS.contains(material); + } + + public static boolean isSkull(Material material) { + return isPlayerHead(material, -1) || isMobHead(material, -1); + } + + public static Material convertFromLegacy(int id, byte damage) { + for (Material material : EnumSet.allOf(Material.class)) { + if (material.getId() == id) { + try { + return Bukkit.getUnsafe().fromLegacy(new MaterialData(material, damage)); + } catch (NoSuchMethodError error) { + return material; + } + } + } + return null; + } + + public static DyeColor getColorOf(Material material) { + for (DyeColor color : DyeColor.values()) { + if (material.toString().contains(color.name())) { + return color; + } + } + + return DyeColor.WHITE; + } +} diff --git a/Essentials/src/com/earth2me/essentials/utils/NumberUtil.java b/Essentials/src/com/earth2me/essentials/utils/NumberUtil.java index c4459f34c..f554ed6b3 100644 --- a/Essentials/src/com/earth2me/essentials/utils/NumberUtil.java +++ b/Essentials/src/com/earth2me/essentials/utils/NumberUtil.java @@ -11,14 +11,14 @@ import java.util.Locale; import static com.earth2me.essentials.I18n.tl; - public class NumberUtil { - static DecimalFormat twoDPlaces = new DecimalFormat("#,###.##"); - static DecimalFormat currencyFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US)); + + private static DecimalFormat twoDPlaces = new DecimalFormat("#,###.##"); + private static DecimalFormat currencyFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US)); // This field is likely to be modified in com.earth2me.essentials.Settings when loading currency format. // This ensures that we can supply a constant formatting. - static final NumberFormat PRETTY_FORMAT = NumberFormat.getInstance(Locale.US); + private static NumberFormat PRETTY_FORMAT = NumberFormat.getInstance(Locale.US); static { twoDPlaces.setRoundingMode(RoundingMode.HALF_UP); @@ -30,6 +30,11 @@ public class NumberUtil { PRETTY_FORMAT.setMaximumFractionDigits(2); } + // this method should only be called by Essentials + public static void internalSetPrettyFormat(NumberFormat prettyFormat) { + PRETTY_FORMAT = prettyFormat; + } + public static String shortCurrency(final BigDecimal value, final IEssentials ess) { return ess.getSettings().getCurrencySymbol() + formatAsCurrency(value); } diff --git a/Essentials/src/com/earth2me/essentials/utils/VersionUtil.java b/Essentials/src/com/earth2me/essentials/utils/VersionUtil.java new file mode 100644 index 000000000..f87fb5800 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/utils/VersionUtil.java @@ -0,0 +1,156 @@ +package com.earth2me.essentials.utils; + +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import org.bukkit.Bukkit; + +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class VersionUtil { + + public static final BukkitVersion v1_8_8_R01 = BukkitVersion.fromString("1.8.8-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_9_R01 = BukkitVersion.fromString("1.9-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_9_4_R01 = BukkitVersion.fromString("1.9.4-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_10_2_R01 = BukkitVersion.fromString("1.10.2-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_11_2_R01 = BukkitVersion.fromString("1.11.2-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_12_0_R01 = BukkitVersion.fromString("1.12.0-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_12_2_R01 = BukkitVersion.fromString("1.12.2-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_13_0_R01 = BukkitVersion.fromString("1.13.0-R0.1-SNAPSHOT"); + public static final BukkitVersion v1_13_2_R01 = BukkitVersion.fromString("1.13.2-R0.1-SNAPSHOT"); + + private static final Set supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01); + + private static BukkitVersion serverVersion = null; + + public static BukkitVersion getServerBukkitVersion() { + if (serverVersion == null) { + serverVersion = BukkitVersion.fromString(Bukkit.getServer().getBukkitVersion()); + } + return serverVersion; + } + + public static boolean isServerSupported() { + return supportedVersions.contains(getServerBukkitVersion()); + } + + public static class BukkitVersion implements Comparable { + private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)-R([\\d.]+)(?:-SNAPSHOT)?"); + + private final int major; + private final int minor; + private final int patch; + private final double revision; + + public static BukkitVersion fromString(String string) { + Preconditions.checkNotNull(string, "string cannot be null."); + Matcher matcher = VERSION_PATTERN.matcher(string); + if (!matcher.matches()) { + if (!Bukkit.getName().equals("Essentials Fake Server")) { + throw new IllegalArgumentException(string + " is not in valid version format. e.g. 1.8.8-R0.1"); + } + matcher = VERSION_PATTERN.matcher(v1_13_2_R01.toString()); + Preconditions.checkArgument(matcher.matches(), string + " is not in valid version format. e.g. 1.8.8-R0.1"); + } + + return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(4)); + } + + private static BukkitVersion from(String major, String minor, String patch, String revision) { + if (patch.isEmpty()) patch = "0"; + return new BukkitVersion(Integer.parseInt(major), + Integer.parseInt(minor), + Integer.parseInt(patch), + Double.parseDouble(revision)); + } + + private BukkitVersion(int major, int minor, int patch, double revision) { + this.major = major; + this.minor = minor; + this.patch = patch; + this.revision = revision; + } + + public boolean isHigherThan(BukkitVersion o) { + return compareTo(o) > 0; + } + + public boolean isHigherThanOrEqualTo(BukkitVersion o) { + return compareTo(o) >= 0; + } + + public boolean isLowerThan(BukkitVersion o) { + return compareTo(o) < 0; + } + + public boolean isLowerThanOrEqualTo(BukkitVersion o) { + return compareTo(o) <= 0; + } + + public int getMajor() { + return major; + } + + public int getMinor() { + return minor; + } + + public int getPatch() { + return patch; + } + + public double getRevision() { + return revision; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BukkitVersion that = (BukkitVersion) o; + return major == that.major && + minor == that.minor && + patch == that.patch && + revision == that.revision; + } + + @Override + public int hashCode() { + return Objects.hashCode(major, minor, patch, revision); + } + + @Override + public String toString() { + return major + "." + minor + "." + patch + "-R" + revision; + } + + @Override + public int compareTo(BukkitVersion o) { + if (major < o.major) { + return -1; + } else if (major > o.major) { + return 1; + } else { // equal major + if (minor < o.minor) { + return -1; + } else if (minor > o.minor) { + return 1; + } else { // equal minor + if (patch < o.patch) { + return -1; + } else if (patch > o.patch) { + return 1; + } else { // equal patch + return Double.compare(revision, o.revision); + } + } + } + } + } +} diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 860d364e8..2dc9606aa 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -13,7 +13,9 @@ # If you have problems join the Essentials help support channel: http://tiny.cc/EssentialsChat -# Version ${project.version}-b${build.number} +# Version ${full.version} + +# KITS ARE NOW IN THE kits.yml FILE ############################################################ # +------------------------------------------------------+ # @@ -34,6 +36,10 @@ max-nick-length: 15 # ie: "&6Notch" has 7 characters (2 are part of a color code), a length of 5 is used when this option is set to true ignore-colors-in-max-nick-length: false +# When this option is enabled, display names for hidden users will not be shown. This prevents players from being +# able to see that they are online while vanished. +hide-displayname-in-vanish: true + # Disable this if you have any other plugin, that modifies the displayname of a user. change-displayname: true @@ -279,42 +285,11 @@ player-commands: # removed from the /kit list when a player can no longer use it skip-used-one-time-kits-from-kit-list: false -# Note: All items MUST be followed by a quantity! -# All kit names should be lower case, and will be treated as lower in permissions/costs. -# Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]... -# For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta -# 'delay' refers to the cooldown between how often you can use each kit, measured in seconds. -# Set delay to -1 for a one time kit. -# For more information, visit http://wiki.ess3.net/wiki/Kits -kits: - tools: - delay: 10 - items: - - 272 1 - - 273 1 - - 274 1 - - 275 1 - dtools: - delay: 600 - items: - - 278 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens - - 277 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole - - 298 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day - - 279:780 1 - notch: - delay: 6000 - items: - - 397:3 1 player:Notch - color: - delay: 6000 - items: - - 387 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors - firework: - delay: 6000 - items: - - 401 1 name:Angry_Creeper color:red fade:green type:creeper power:1 - - 401 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1 - - 401 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1 +# Determines the functionality of the /createkit command. +# If this is true, /createkit will give the user a link with the kit code. +# If this is false, /createkit will add the kit to the kits.yml config file directly. +# +pastebin-createkit: false # Essentials Sign Control # See http://wiki.ess3.net/wiki/Sign_Tutorial for instructions on how to use these. @@ -347,6 +322,11 @@ enabledSigns: # Lower numbers will reduce the possibility of lag, but may annoy players. sign-use-per-second: 4 +# Allow item IDs on pre-existing signs on 1.13 and above. +# You cannot use item IDs on new signs, but this will allow players to interact with signs that +# were placed before 1.13. +allow-old-id-signs: false + # List of sign names Essentials should not protect. This feature is especially useful when # another plugin provides a sign that EssentialsX provides, but Essentials overrides. # For example, if a plugin provides a [kit] sign, and you wish to use theirs instead of @@ -425,6 +405,11 @@ cancel-afk-on-interact: true # Disable this to reduce server lag. cancel-afk-on-move: true +# Should AFK players be ignored when other players are trying to sleep? +# When this setting is false, players won't be able to skip the night if some players are AFK. +# Users with the permission node essentials.sleepingignored will always be ignored. +sleep-ignores-afk-players: true + # Set the player's list name when they are AFK. This is none by default which specifies that Essentials # should not interfere with the AFK player's list name. # You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname. @@ -504,7 +489,7 @@ last-message-reply-recipient: true # Default is 180 (3 minutes) last-message-reply-recipient-timeout: 180 -# Toggles whether or not right clicking mobs with a milk bucket turns them into a baby. +# Toggles whether or not clicking mobs with a milk bucket turns them into a baby. milk-bucket-easter-egg: true # Toggles whether or not the fly status message should be sent to players on join @@ -537,13 +522,6 @@ command-cooldown-persistence: true # NPC balances can include features like factions from FactionsUUID plugin. npcs-in-balance-ranking: false -# Determines the functionality of the /createkit command. -# If this is true, /createkit will give the user a link with the kit code. -# If this is false, /createkit will add the kit to this config file directly. -# -# WARNING: If this is false, the config comments WILL be removed and it won't look the same as it does now. -pastebin-createkit: true - # Allow bulk buying and selling signs when the player is sneaking. # This is useful when a sign sells or buys one item at a time and the player wants to sell a bunch at once. allow-bulk-buy-sell: true @@ -552,6 +530,24 @@ allow-bulk-buy-sell: true # This has no effect if the MOTD command or permission are disabled. delay-motd: 0 +# A list of commands that should have their complementary confirm commands enabled by default. +# This is empty by default, for the latest list of valid commands see the latest source config.yml. +default-enabled-confirm-commands: +#- pay +#- clearinventory + +# Set the timeout, in seconds for players to accept a tpa before the request is cancelled. +# Set to 0 for no timeout. +tpa-accept-cancellation: 120 + +# Allow players to set hats by clicking on their helmet slot. +allow-direct-hat: true + +# Allow in-game players to specify a world when running /broadcastworld. +# If false, running /broadcastworld in-game will always send a message to the player's current world. +# This doesn't affect running the command from the console, where a world is always required. +allow-world-in-broadcastworld: true + ############################################################ # +------------------------------------------------------+ # # | EssentialsHome | # @@ -581,12 +577,12 @@ sethome-multiple: # In this example someone with 'essentials.sethome.multiple' and 'essentials.sethome.multiple.vip' will have 5 homes. # Remember, they MUST have both permission nodes in order to be able to set multiple homes. -# Set the timeout, in seconds for players to accept a tpa before the request is cancelled. -# Set to 0 for no timeout. -tpa-accept-cancellation: 120 - -# Allow players to set hats by clicking on their helmet slot. -allow-direct-hat: true +# Controls whether players need the permission "essentials.home.compass" in order to point +# the player's compass at their first home. +# +# Leaving this as false will retain Essentials' original behaviour, which is to always +# change the compass' direction to point towards their first home. +compass-towards-home-perm: false ############################################################ # +------------------------------------------------------+ # @@ -683,9 +679,11 @@ chat: # Chat formatting can be done in two ways, you can either define a standard format for all chat. # Or you can give a group specific chat format, to give some extra variation. # For more information of chat formatting, check out the wiki: http://wiki.ess3.net/wiki/Chat_Formatting + # For EssentialsX changes, take a look at the EssentialsX wiki: https://github.com/EssentialsX/Essentials/wiki format: '<{DISPLAYNAME}> {MESSAGE}' #format: '&7[{GROUP}]&r {DISPLAYNAME}&7:&r {MESSAGE}' + #format: '&7{PREFIX}&r {DISPLAYNAME}&r &7{SUFFIX}&r: {MESSAGE}' group-formats: # Default: '{WORLDNAME} {DISPLAYNAME}&7:&r {MESSAGE}' @@ -833,20 +831,19 @@ protect: warn-on-build-disallow: true # For which block types would you like to be alerted? - # You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time. - # 10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket + # You can find a list of items at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html. alert: - on-placement: 10,11,46,327 - on-use: 327 + on-placement: LAVA,TNT,LAVA_BUCKET + on-use: LAVA_BUCKET on-break: blacklist: # Which blocks should people be prevented from placing? - placement: 10,11,46,327 + placement: LAVA,TNT,LAVA_BUCKET # Which items should people be prevented from using? - usage: 327 + usage: LAVA_BUCKET # Which blocks should people be prevented from breaking? break: diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv index 59d002a19..f1970d4b2 100644 --- a/Essentials/src/items.csv +++ b/Essentials/src/items.csv @@ -1,4 +1,4 @@ -#version: ${project.version}-b${build.number} +#version: ${full.version} #If you change this file, it will not be automatically updated after the next release. #item,id,metadata stone,1,0 @@ -1901,9 +1901,6 @@ plantren,91,0 glowpumpkin,91,0 gpumpkin,91,0 lpumpkin,91,0 -lockedchest,95,0 -lockchest,95,0 -jokechest,95,0 whiteglass,95,0 whitesglass,95,0 whitestainedglass,95,0 diff --git a/Essentials/src/items.json b/Essentials/src/items.json new file mode 100644 index 000000000..1668b4bb1 --- /dev/null +++ b/Essentials/src/items.json @@ -0,0 +1,22806 @@ +#version: ${full.version} +{ + "acacia_boat": { + "material": "ACACIA_BOAT" + }, + "acaciaboat": "acacia_boat", + "aboat": "acacia_boat", + "acacia_button": { + "material": "ACACIA_BUTTON" + }, + "acaciabutton": "acacia_button", + "acacia_door": { + "material": "ACACIA_DOOR" + }, + "acaciadoor": "acacia_door", + "acacia_fence": { + "material": "ACACIA_FENCE" + }, + "acaciafence": "acacia_fence", + "afence": "acacia_fence", + "acacia_fence_gate": { + "material": "ACACIA_FENCE_GATE" + }, + "acaciafencegate": "acacia_fence_gate", + "acaciagate": "acacia_fence_gate", + "afencegate": "acacia_fence_gate", + "agate": "acacia_fence_gate", + "acacia_leaves": { + "material": "ACACIA_LEAVES" + }, + "acacialeaves": "acacia_leaves", + "acaciatreeleaves": "acacia_leaves", + "acacialogleaves": "acacia_leaves", + "acaciatrunkleaves": "acacia_leaves", + "acaciawoodleaves": "acacia_leaves", + "acaciatreeleaf": "acacia_leaves", + "acacialogleaf": "acacia_leaves", + "acaciatrunkleaf": "acacia_leaves", + "acaciawoodleaf": "acacia_leaves", + "acacialeaf": "acacia_leaves", + "acaciatreeleave": "acacia_leaves", + "acacialogleave": "acacia_leaves", + "acaciatrunkleave": "acacia_leaves", + "acaciawoodleave": "acacia_leaves", + "acacialeave": "acacia_leaves", + "atreeleaves": "acacia_leaves", + "alogleaves": "acacia_leaves", + "atrunkleaves": "acacia_leaves", + "awoodleaves": "acacia_leaves", + "aleaves": "acacia_leaves", + "atreeleaf": "acacia_leaves", + "alogleaf": "acacia_leaves", + "atrunkleaf": "acacia_leaves", + "awoodleaf": "acacia_leaves", + "aleaf": "acacia_leaves", + "atreeleave": "acacia_leaves", + "alogleave": "acacia_leaves", + "atrunkleave": "acacia_leaves", + "awoodleave": "acacia_leaves", + "aleave": "acacia_leaves", + "acacia_log": { + "material": "ACACIA_LOG" + }, + "acacialog": "acacia_log", + "acacia": "acacia_log", + "logacacia": "acacia_log", + "acaciatrunk": "acacia_log", + "acaciatree": "acacia_log", + "a": "acacia_log", + "loga": "acacia_log", + "atrunk": "acacia_log", + "alog": "acacia_log", + "atree": "acacia_log", + "acacia_planks": { + "material": "ACACIA_PLANKS" + }, + "acaciaplanks": "acacia_planks", + "acaciawoodenplank": "acacia_planks", + "acaciawoodplank": "acacia_planks", + "acaciawplank": "acacia_planks", + "acaciaplankwooden": "acacia_planks", + "acaciaplankwood": "acacia_planks", + "acaciaplankw": "acacia_planks", + "acaciaplank": "acacia_planks", + "awoodenplank": "acacia_planks", + "awoodplank": "acacia_planks", + "awplank": "acacia_planks", + "aplankwooden": "acacia_planks", + "aplankwood": "acacia_planks", + "aplankw": "acacia_planks", + "aplank": "acacia_planks", + "acacia_pressure_plate": { + "material": "ACACIA_PRESSURE_PLATE" + }, + "acaciapressureplate": "acacia_pressure_plate", + "acacia_sapling": { + "material": "ACACIA_SAPLING" + }, + "acaciasapling": "acacia_sapling", + "acaciatreesapling": "acacia_sapling", + "acacialogsapling": "acacia_sapling", + "acaciatrunksapling": "acacia_sapling", + "acaciawoodsapling": "acacia_sapling", + "asapling": "acacia_sapling", + "atreesapling": "acacia_sapling", + "alogsapling": "acacia_sapling", + "atrunksapling": "acacia_sapling", + "awoodsapling": "acacia_sapling", + "acacia_slab": { + "material": "ACACIA_SLAB" + }, + "acaciaslab": "acacia_slab", + "acaciawoodenstep": "acacia_slab", + "acaciawoodstep": "acacia_slab", + "acaciawstep": "acacia_slab", + "acaciastep": "acacia_slab", + "acaciawoodenslab": "acacia_slab", + "acaciawoodslab": "acacia_slab", + "acaciawslab": "acacia_slab", + "acaciawoodenhalfblock": "acacia_slab", + "acaciawoodhalfblock": "acacia_slab", + "acaciawhalfblock": "acacia_slab", + "acaciahalfblock": "acacia_slab", + "awoodenstep": "acacia_slab", + "awoodstep": "acacia_slab", + "awstep": "acacia_slab", + "astep": "acacia_slab", + "awoodenslab": "acacia_slab", + "awoodslab": "acacia_slab", + "awslab": "acacia_slab", + "awoodenhalfblock": "acacia_slab", + "awoodhalfblock": "acacia_slab", + "awhalfblock": "acacia_slab", + "ahalfblock": "acacia_slab", + "acacia_stairs": { + "material": "ACACIA_STAIRS" + }, + "acaciastairs": "acacia_stairs", + "acaciawoodenstairs": "acacia_stairs", + "acaciawoodstairs": "acacia_stairs", + "acaciawstairs": "acacia_stairs", + "acaciawoodenstair": "acacia_stairs", + "acaciawoodstair": "acacia_stairs", + "acaciawstair": "acacia_stairs", + "acaciastair": "acacia_stairs", + "awoodenstairs": "acacia_stairs", + "awoodstairs": "acacia_stairs", + "awstairs": "acacia_stairs", + "awoodenstair": "acacia_stairs", + "awoodstair": "acacia_stairs", + "awstair": "acacia_stairs", + "astair": "acacia_stairs", + "acacia_trapdoor": { + "material": "ACACIA_TRAPDOOR" + }, + "acaciatrapdoor": "acacia_trapdoor", + "acaciadoortrap": "acacia_trapdoor", + "acaciahatch": "acacia_trapdoor", + "acaciatdoor": "acacia_trapdoor", + "acaciadoort": "acacia_trapdoor", + "acaciatrapd": "acacia_trapdoor", + "acaciadtrap": "acacia_trapdoor", + "atrapdoor": "acacia_trapdoor", + "adoortrap": "acacia_trapdoor", + "ahatch": "acacia_trapdoor", + "atdoor": "acacia_trapdoor", + "adoort": "acacia_trapdoor", + "atrapd": "acacia_trapdoor", + "adtrap": "acacia_trapdoor", + "acacia_wood": { + "material": "ACACIA_WOOD" + }, + "acaciawood": "acacia_wood", + "acacialogall": "acacia_wood", + "acaciatrunkall": "acacia_wood", + "acaciatreeall": "acacia_wood", + "awood": "acacia_wood", + "alogall": "acacia_wood", + "atrunkall": "acacia_wood", + "atreeall": "acacia_wood", + "activator_rail": { + "material": "ACTIVATOR_RAIL" + }, + "activatorrail": "activator_rail", + "activatorrails": "activator_rail", + "activatortrack": "activator_rail", + "activaterails": "activator_rail", + "activaterail": "activator_rail", + "activatetrack": "activator_rail", + "triggerrails": "activator_rail", + "triggerrail": "activator_rail", + "triggertrack": "activator_rail", + "arails": "activator_rail", + "arail": "activator_rail", + "atrack": "activator_rail", + "trails": "activator_rail", + "trail": "activator_rail", + "ttrack": "activator_rail", + "air": { + "material": "AIR" + }, + "allium": { + "material": "ALLIUM" + }, + "magentaallium": "allium", + "magentaflower": "allium", + "andesite": { + "material": "ANDESITE" + }, + "astone": "andesite", + "anvil": { + "material": "ANVIL" + }, + "apple": { + "material": "APPLE" + }, + "armor_stand": { + "material": "ARMOR_STAND" + }, + "armorstand": "armor_stand", + "arrow": { + "material": "ARROW" + }, + "attached_melon_stem": { + "material": "ATTACHED_MELON_STEM", + "unspawnable": true + }, + "attachedmelonstem": "attached_melon_stem", + "attached_pumpkin_stem": { + "material": "ATTACHED_PUMPKIN_STEM", + "unspawnable": true + }, + "attachedpumpkinstem": "attached_pumpkin_stem", + "azure_bluet": { + "material": "AZURE_BLUET" + }, + "azurebluet": "azure_bluet", + "whiteazurebluet": "azure_bluet", + "abluet": "azure_bluet", + "azureb": "azure_bluet", + "houstonia": "azure_bluet", + "baked_potato": { + "material": "BAKED_POTATO" + }, + "bakedpotato": "baked_potato", + "barrier": { + "material": "BARRIER" + }, + "bat_spawn_egg": { + "material": "BAT_SPAWN_EGG" + }, + "batspawnegg": "bat_spawn_egg", + "bategg": "bat_spawn_egg", + "eggbat": "bat_spawn_egg", + "spawneggbat": "bat_spawn_egg", + "batspawn": "bat_spawn_egg", + "spawnbat": "bat_spawn_egg", + "beacon": { + "material": "BEACON" + }, + "beaconblock": "beacon", + "bedrock": { + "material": "BEDROCK" + }, + "oprock": "bedrock", + "opblock": "bedrock", + "adminblock": "bedrock", + "adminrock": "bedrock", + "adminium": "bedrock", + "beef": { + "material": "BEEF" + }, + "rawbeef": "beef", + "rawsteak": "beef", + "rawcowmeat": "beef", + "rabeef": "beef", + "rasteak": "beef", + "racowmeat": "beef", + "uncookedbeef": "beef", + "uncookedsteak": "beef", + "uncookedcowmeat": "beef", + "plainbeef": "beef", + "plainsteak": "beef", + "plaincowmeat": "beef", + "steak": "beef", + "cowmeat": "beef", + "beetroot": { + "material": "BEETROOT" + }, + "broot": "beetroot", + "beet": "beetroot", + "beets": "beetroot", + "beetplant": "beetroot", + "beetcrop": "beetroot", + "beetroots": { + "material": "BEETROOTS", + "unspawnable": true + }, + "beetroot_seeds": { + "material": "BEETROOT_SEEDS" + }, + "beetrootseeds": "beetroot_seeds", + "beetrootseed": "beetroot_seeds", + "brootseed": "beetroot_seeds", + "brootseeds": "beetroot_seeds", + "beetseed": "beetroot_seeds", + "beetseeds": "beetroot_seeds", + "beetsseeds": "beetroot_seeds", + "beetplantseeds": "beetroot_seeds", + "beetcropseeds": "beetroot_seeds", + "beetroot_soup": { + "material": "BEETROOT_SOUP" + }, + "beetrootsoup": "beetroot_soup", + "brootsoup": "beetroot_soup", + "beetsoup": "beetroot_soup", + "beetssoup": "beetroot_soup", + "beetplantsoup": "beetroot_soup", + "beetcropsoup": "beetroot_soup", + "redsoup": "beetroot_soup", + "birch_boat": { + "material": "BIRCH_BOAT" + }, + "birchboat": "birch_boat", + "bboat": "birch_boat", + "lightboat": "birch_boat", + "lboat": "birch_boat", + "whiteboat": "birch_boat", + "wboat": "birch_boat", + "birch_button": { + "material": "BIRCH_BUTTON" + }, + "birchbutton": "birch_button", + "birch_door": { + "material": "BIRCH_DOOR" + }, + "birchdoor": "birch_door", + "birch_fence": { + "material": "BIRCH_FENCE" + }, + "birchfence": "birch_fence", + "bfence": "birch_fence", + "lightfence": "birch_fence", + "lfence": "birch_fence", + "whitefence": "birch_fence", + "wfence": "birch_fence", + "birch_fence_gate": { + "material": "BIRCH_FENCE_GATE" + }, + "birchfencegate": "birch_fence_gate", + "birchgate": "birch_fence_gate", + "bfencegate": "birch_fence_gate", + "bgate": "birch_fence_gate", + "lightfencegate": "birch_fence_gate", + "lightgate": "birch_fence_gate", + "lfencegate": "birch_fence_gate", + "lgate": "birch_fence_gate", + "whitefencegate": "birch_fence_gate", + "whitegate": "birch_fence_gate", + "wfencegate": "birch_fence_gate", + "wgate": "birch_fence_gate", + "birch_leaves": { + "material": "BIRCH_LEAVES" + }, + "birchleaves": "birch_leaves", + "birchtreeleaves": "birch_leaves", + "birchlogleaves": "birch_leaves", + "birchtrunkleaves": "birch_leaves", + "birchwoodleaves": "birch_leaves", + "birchtreeleaf": "birch_leaves", + "birchlogleaf": "birch_leaves", + "birchtrunkleaf": "birch_leaves", + "birchwoodleaf": "birch_leaves", + "birchleaf": "birch_leaves", + "birchtreeleave": "birch_leaves", + "birchlogleave": "birch_leaves", + "birchtrunkleave": "birch_leaves", + "birchwoodleave": "birch_leaves", + "birchleave": "birch_leaves", + "btreeleaves": "birch_leaves", + "blogleaves": "birch_leaves", + "btrunkleaves": "birch_leaves", + "bwoodleaves": "birch_leaves", + "bleaves": "birch_leaves", + "btreeleaf": "birch_leaves", + "blogleaf": "birch_leaves", + "btrunkleaf": "birch_leaves", + "bwoodleaf": "birch_leaves", + "bleaf": "birch_leaves", + "btreeleave": "birch_leaves", + "blogleave": "birch_leaves", + "btrunkleave": "birch_leaves", + "bwoodleave": "birch_leaves", + "bleave": "birch_leaves", + "lighttreeleaves": "birch_leaves", + "lightlogleaves": "birch_leaves", + "lighttrunkleaves": "birch_leaves", + "lightwoodleaves": "birch_leaves", + "lightleaves": "birch_leaves", + "lighttreeleaf": "birch_leaves", + "lightlogleaf": "birch_leaves", + "lighttrunkleaf": "birch_leaves", + "lightwoodleaf": "birch_leaves", + "lightleaf": "birch_leaves", + "lighttreeleave": "birch_leaves", + "lightlogleave": "birch_leaves", + "lighttrunkleave": "birch_leaves", + "lightwoodleave": "birch_leaves", + "lightleave": "birch_leaves", + "ltreeleaves": "birch_leaves", + "llogleaves": "birch_leaves", + "ltrunkleaves": "birch_leaves", + "lwoodleaves": "birch_leaves", + "lleaves": "birch_leaves", + "ltreeleaf": "birch_leaves", + "llogleaf": "birch_leaves", + "ltrunkleaf": "birch_leaves", + "lwoodleaf": "birch_leaves", + "lleaf": "birch_leaves", + "ltreeleave": "birch_leaves", + "llogleave": "birch_leaves", + "ltrunkleave": "birch_leaves", + "lwoodleave": "birch_leaves", + "lleave": "birch_leaves", + "whitetreeleaves": "birch_leaves", + "whitelogleaves": "birch_leaves", + "whitetrunkleaves": "birch_leaves", + "whitewoodleaves": "birch_leaves", + "whiteleaves": "birch_leaves", + "whitetreeleaf": "birch_leaves", + "whitelogleaf": "birch_leaves", + "whitetrunkleaf": "birch_leaves", + "whitewoodleaf": "birch_leaves", + "whiteleaf": "birch_leaves", + "whitetreeleave": "birch_leaves", + "whitelogleave": "birch_leaves", + "whitetrunkleave": "birch_leaves", + "whitewoodleave": "birch_leaves", + "whiteleave": "birch_leaves", + "wtreeleaves": "birch_leaves", + "wlogleaves": "birch_leaves", + "wtrunkleaves": "birch_leaves", + "wwoodleaves": "birch_leaves", + "wleaves": "birch_leaves", + "wtreeleaf": "birch_leaves", + "wlogleaf": "birch_leaves", + "wtrunkleaf": "birch_leaves", + "wwoodleaf": "birch_leaves", + "wleaf": "birch_leaves", + "wtreeleave": "birch_leaves", + "wlogleave": "birch_leaves", + "wtrunkleave": "birch_leaves", + "wwoodleave": "birch_leaves", + "wleave": "birch_leaves", + "birch_log": { + "material": "BIRCH_LOG" + }, + "birchlog": "birch_log", + "birch": "birch_log", + "logbirch": "birch_log", + "birchtrunk": "birch_log", + "birchtree": "birch_log", + "b": "birch_log", + "logb": "birch_log", + "btrunk": "birch_log", + "blog": "birch_log", + "btree": "birch_log", + "light": "birch_log", + "loglight": "birch_log", + "lighttrunk": "birch_log", + "lightlog": "birch_log", + "lighttree": "birch_log", + "l": "birch_log", + "logl": "birch_log", + "ltrunk": "birch_log", + "llog": "birch_log", + "ltree": "birch_log", + "white": "birch_log", + "logwhite": "birch_log", + "whitetrunk": "birch_log", + "whitelog": "birch_log", + "whitetree": "birch_log", + "w": "birch_log", + "logw": "birch_log", + "wtrunk": "birch_log", + "wlog": "birch_log", + "wtree": "birch_log", + "birch_planks": { + "material": "BIRCH_PLANKS" + }, + "birchplanks": "birch_planks", + "birchwoodenplank": "birch_planks", + "birchwoodplank": "birch_planks", + "birchwplank": "birch_planks", + "birchplankwooden": "birch_planks", + "birchplankwood": "birch_planks", + "birchplankw": "birch_planks", + "birchplank": "birch_planks", + "bwoodenplank": "birch_planks", + "bwoodplank": "birch_planks", + "bwplank": "birch_planks", + "bplankwooden": "birch_planks", + "bplankwood": "birch_planks", + "bplankw": "birch_planks", + "bplank": "birch_planks", + "lightwoodenplank": "birch_planks", + "lightwoodplank": "birch_planks", + "lightwplank": "birch_planks", + "lightplankwooden": "birch_planks", + "lightplankwood": "birch_planks", + "lightplankw": "birch_planks", + "lightplank": "birch_planks", + "lwoodenplank": "birch_planks", + "lwoodplank": "birch_planks", + "lwplank": "birch_planks", + "lplankwooden": "birch_planks", + "lplankwood": "birch_planks", + "lplankw": "birch_planks", + "lplank": "birch_planks", + "whitewoodenplank": "birch_planks", + "whitewoodplank": "birch_planks", + "whitewplank": "birch_planks", + "whiteplankwooden": "birch_planks", + "whiteplankwood": "birch_planks", + "whiteplankw": "birch_planks", + "whiteplank": "birch_planks", + "wwoodenplank": "birch_planks", + "wwoodplank": "birch_planks", + "wwplank": "birch_planks", + "wplankwooden": "birch_planks", + "wplankwood": "birch_planks", + "wplankw": "birch_planks", + "wplank": "oak_planks", + "birch_pressure_plate": { + "material": "BIRCH_PRESSURE_PLATE" + }, + "birchpressureplate": "birch_pressure_plate", + "birch_sapling": { + "material": "BIRCH_SAPLING" + }, + "birchsapling": "birch_sapling", + "birchtreesapling": "birch_sapling", + "birchlogsapling": "birch_sapling", + "birchtrunksapling": "birch_sapling", + "birchwoodsapling": "birch_sapling", + "bsapling": "birch_sapling", + "btreesapling": "birch_sapling", + "blogsapling": "birch_sapling", + "btrunksapling": "birch_sapling", + "bwoodsapling": "birch_sapling", + "lightsapling": "birch_sapling", + "lighttreesapling": "birch_sapling", + "lightlogsapling": "birch_sapling", + "lighttrunksapling": "birch_sapling", + "lightwoodsapling": "birch_sapling", + "lsapling": "birch_sapling", + "ltreesapling": "birch_sapling", + "llogsapling": "birch_sapling", + "ltrunksapling": "birch_sapling", + "lwoodsapling": "birch_sapling", + "whitesapling": "birch_sapling", + "whitetreesapling": "birch_sapling", + "whitelogsapling": "birch_sapling", + "whitetrunksapling": "birch_sapling", + "whitewoodsapling": "birch_sapling", + "wsapling": "birch_sapling", + "wtreesapling": "birch_sapling", + "wlogsapling": "birch_sapling", + "wtrunksapling": "birch_sapling", + "wwoodsapling": "birch_sapling", + "birch_slab": { + "material": "BIRCH_SLAB" + }, + "birchslab": "birch_slab", + "birchwoodenstep": "birch_slab", + "birchwoodstep": "birch_slab", + "birchwstep": "birch_slab", + "birchstep": "birch_slab", + "birchwoodenslab": "birch_slab", + "birchwoodslab": "birch_slab", + "birchwslab": "birch_slab", + "birchwoodenhalfblock": "birch_slab", + "birchwoodhalfblock": "birch_slab", + "birchwhalfblock": "birch_slab", + "birchhalfblock": "birch_slab", + "bwoodenstep": "birch_slab", + "bwoodstep": "birch_slab", + "bwstep": "birch_slab", + "bstep": "birch_slab", + "bwoodenslab": "birch_slab", + "bwoodslab": "birch_slab", + "bwslab": "birch_slab", + "bwoodenhalfblock": "birch_slab", + "bwoodhalfblock": "birch_slab", + "bwhalfblock": "birch_slab", + "bhalfblock": "birch_slab", + "lightwoodenstep": "birch_slab", + "lightwoodstep": "birch_slab", + "lightwstep": "birch_slab", + "lightstep": "birch_slab", + "lightwoodenslab": "birch_slab", + "lightwoodslab": "birch_slab", + "lightwslab": "birch_slab", + "lightwoodenhalfblock": "birch_slab", + "lightwoodhalfblock": "birch_slab", + "lightwhalfblock": "birch_slab", + "lighthalfblock": "birch_slab", + "lwoodenstep": "birch_slab", + "lwoodstep": "birch_slab", + "lwstep": "birch_slab", + "lstep": "birch_slab", + "lwoodenslab": "birch_slab", + "lwoodslab": "birch_slab", + "lwslab": "birch_slab", + "lwoodenhalfblock": "birch_slab", + "lwoodhalfblock": "birch_slab", + "lwhalfblock": "birch_slab", + "lhalfblock": "birch_slab", + "whitewoodenstep": "birch_slab", + "whitewoodstep": "birch_slab", + "whitewstep": "birch_slab", + "whitestep": "birch_slab", + "whitewoodenslab": "birch_slab", + "whitewoodslab": "birch_slab", + "whitewslab": "birch_slab", + "whitewoodenhalfblock": "birch_slab", + "whitewoodhalfblock": "birch_slab", + "whitewhalfblock": "birch_slab", + "whitehalfblock": "birch_slab", + "wwoodenstep": "birch_slab", + "wwoodstep": "birch_slab", + "wwstep": "birch_slab", + "wstep": "petrified_oak_slab", + "wwoodenslab": "birch_slab", + "wwoodslab": "birch_slab", + "wwslab": "birch_slab", + "wwoodenhalfblock": "birch_slab", + "wwoodhalfblock": "birch_slab", + "wwhalfblock": "birch_slab", + "whalfblock": "petrified_oak_slab", + "birch_stairs": { + "material": "BIRCH_STAIRS" + }, + "birchstairs": "birch_stairs", + "birchwoodenstairs": "birch_stairs", + "birchwoodstairs": "birch_stairs", + "birchwstairs": "birch_stairs", + "birchwoodenstair": "birch_stairs", + "birchwoodstair": "birch_stairs", + "birchwstair": "birch_stairs", + "birchstair": "birch_stairs", + "bwoodenstairs": "birch_stairs", + "bwoodstairs": "birch_stairs", + "bwstairs": "birch_stairs", + "bwoodenstair": "birch_stairs", + "bwoodstair": "birch_stairs", + "bwstair": "birch_stairs", + "bstair": "birch_stairs", + "lightwoodenstairs": "birch_stairs", + "lightwoodstairs": "birch_stairs", + "lightwstairs": "birch_stairs", + "lightwoodenstair": "birch_stairs", + "lightwoodstair": "birch_stairs", + "lightwstair": "birch_stairs", + "lightstair": "birch_stairs", + "lwoodenstairs": "birch_stairs", + "lwoodstairs": "birch_stairs", + "lwstairs": "birch_stairs", + "lwoodenstair": "birch_stairs", + "lwoodstair": "birch_stairs", + "lwstair": "birch_stairs", + "lstair": "birch_stairs", + "whitewoodenstairs": "birch_stairs", + "whitewoodstairs": "birch_stairs", + "whitewstairs": "birch_stairs", + "whitewoodenstair": "birch_stairs", + "whitewoodstair": "birch_stairs", + "whitewstair": "birch_stairs", + "whitestair": "birch_stairs", + "wwoodenstairs": "birch_stairs", + "wwoodstairs": "birch_stairs", + "wwstairs": "birch_stairs", + "wwoodenstair": "birch_stairs", + "wwoodstair": "birch_stairs", + "wwstair": "birch_stairs", + "wstair": "oak_stairs", + "birch_trapdoor": { + "material": "BIRCH_TRAPDOOR" + }, + "birchtrapdoor": "birch_trapdoor", + "birchdoortrap": "birch_trapdoor", + "birchhatch": "birch_trapdoor", + "birchtdoor": "birch_trapdoor", + "birchdoort": "birch_trapdoor", + "birchtrapd": "birch_trapdoor", + "birchdtrap": "birch_trapdoor", + "btrapdoor": "birch_trapdoor", + "bdoortrap": "birch_trapdoor", + "bhatch": "birch_trapdoor", + "btdoor": "birch_trapdoor", + "bdoort": "birch_trapdoor", + "btrapd": "birch_trapdoor", + "bdtrap": "birch_trapdoor", + "lighttrapdoor": "birch_trapdoor", + "lightdoortrap": "birch_trapdoor", + "lighthatch": "birch_trapdoor", + "lighttdoor": "birch_trapdoor", + "lightdoort": "birch_trapdoor", + "lighttrapd": "birch_trapdoor", + "lightdtrap": "birch_trapdoor", + "ltrapdoor": "birch_trapdoor", + "ldoortrap": "birch_trapdoor", + "lhatch": "birch_trapdoor", + "ltdoor": "birch_trapdoor", + "ldoort": "birch_trapdoor", + "ltrapd": "birch_trapdoor", + "ldtrap": "birch_trapdoor", + "whitetrapdoor": "birch_trapdoor", + "whitedoortrap": "birch_trapdoor", + "whitehatch": "birch_trapdoor", + "whitetdoor": "birch_trapdoor", + "whitedoort": "birch_trapdoor", + "whitetrapd": "birch_trapdoor", + "whitedtrap": "birch_trapdoor", + "wtrapdoor": "birch_trapdoor", + "wdoortrap": "birch_trapdoor", + "whatch": "birch_trapdoor", + "wtdoor": "birch_trapdoor", + "wdoort": "birch_trapdoor", + "wtrapd": "birch_trapdoor", + "wdtrap": "birch_trapdoor", + "birch_wood": { + "material": "BIRCH_WOOD" + }, + "birchwood": "birch_wood", + "birchlogall": "birch_wood", + "birchtrunkall": "birch_wood", + "birchtreeall": "birch_wood", + "bwood": "birch_wood", + "blogall": "birch_wood", + "btrunkall": "birch_wood", + "btreeall": "birch_wood", + "lightwood": "birch_wood", + "lightlogall": "birch_wood", + "lighttrunkall": "birch_wood", + "lighttreeall": "birch_wood", + "lwood": "birch_wood", + "llogall": "birch_wood", + "ltrunkall": "birch_wood", + "ltreeall": "birch_wood", + "whitewood": "birch_wood", + "whitelogall": "birch_wood", + "whitetrunkall": "birch_wood", + "whitetreeall": "birch_wood", + "wwood": "birch_wood", + "wlogall": "birch_wood", + "wtrunkall": "birch_wood", + "wtreeall": "birch_wood", + "black_banner": { + "material": "BLACK_BANNER" + }, + "blackbanner": "black_banner", + "bkstandingbanner": "black_banner", + "bkbanner": "black_banner", + "blastandingbanner": "black_banner", + "blabanner": "black_banner", + "blackstandingbanner": "black_banner", + "black_bed": { + "material": "BLACK_BED" + }, + "blackbed": "black_bed", + "bkbed": "black_bed", + "blabed": "black_bed", + "black_carpet": { + "material": "BLACK_CARPET" + }, + "blackcarpet": "black_carpet", + "bkcarpet": "black_carpet", + "bkfloor": "black_carpet", + "blacarpet": "black_carpet", + "blafloor": "black_carpet", + "blackfloor": "black_carpet", + "black_concrete": { + "material": "BLACK_CONCRETE" + }, + "blackconcrete": "black_concrete", + "bkconcrete": "black_concrete", + "blaconcrete": "black_concrete", + "black_concrete_powder": { + "material": "BLACK_CONCRETE_POWDER" + }, + "blackconcretepowder": "black_concrete_powder", + "bkconcretepowder": "black_concrete_powder", + "bkconcretesand": "black_concrete_powder", + "bkcpowder": "black_concrete_powder", + "bkcdust": "black_concrete_powder", + "bkcp": "black_concrete_powder", + "blaconcretepowder": "black_concrete_powder", + "blaconcretesand": "black_concrete_powder", + "blacpowder": "black_concrete_powder", + "blacdust": "black_concrete_powder", + "blacp": "black_concrete_powder", + "blackconcretesand": "black_concrete_powder", + "blackcpowder": "black_concrete_powder", + "blackcdust": "black_concrete_powder", + "blackcp": "black_concrete_powder", + "black_glazed_terracotta": { + "material": "BLACK_GLAZED_TERRACOTTA" + }, + "blackglazedterracotta": "black_glazed_terracotta", + "bkglazedtcota": "black_glazed_terracotta", + "bkglazedterra": "black_glazed_terracotta", + "bkglazedterracotta": "black_glazed_terracotta", + "bkglazedterracota": "black_glazed_terracotta", + "blaglazedtcota": "black_glazed_terracotta", + "blaglazedterra": "black_glazed_terracotta", + "blaglazedterracotta": "black_glazed_terracotta", + "blaglazedterracota": "black_glazed_terracotta", + "blackglazedtcota": "black_glazed_terracotta", + "blackglazedterra": "black_glazed_terracotta", + "blackglazedterracota": "black_glazed_terracotta", + "black_shulker_box": { + "material": "BLACK_SHULKER_BOX" + }, + "blackshulkerbox": "black_shulker_box", + "bkshulkerbox": "black_shulker_box", + "bkchest": "black_shulker_box", + "blashulkerbox": "black_shulker_box", + "blachest": "black_shulker_box", + "blackchest": "black_shulker_box", + "black_stained_glass": { + "material": "BLACK_STAINED_GLASS" + }, + "blackstainedglass": "black_stained_glass", + "bkglass": "black_stained_glass", + "bksglass": "black_stained_glass", + "bkstainedglass": "black_stained_glass", + "blaglass": "black_stained_glass", + "blasglass": "black_stained_glass", + "blastainedglass": "black_stained_glass", + "blackglass": "black_stained_glass", + "blacksglass": "black_stained_glass", + "black_stained_glass_pane": { + "material": "BLACK_STAINED_GLASS_PANE" + }, + "blackstainedglasspane": "black_stained_glass_pane", + "bkglasspane": "black_stained_glass_pane", + "bksglasspane": "black_stained_glass_pane", + "bkstainedglasspane": "black_stained_glass_pane", + "bkgpane": "black_stained_glass_pane", + "blaglasspane": "black_stained_glass_pane", + "blasglasspane": "black_stained_glass_pane", + "blastainedglasspane": "black_stained_glass_pane", + "blagpane": "black_stained_glass_pane", + "blackglasspane": "black_stained_glass_pane", + "blacksglasspane": "black_stained_glass_pane", + "blackgpane": "black_stained_glass_pane", + "black_terracotta": { + "material": "BLACK_TERRACOTTA" + }, + "blackterracotta": "black_terracotta", + "bkclay": "black_terracotta", + "bksclay": "black_terracotta", + "bkstainedclay": "black_terracotta", + "bkterra": "black_terracotta", + "bktcota": "black_terracotta", + "bkterracota": "black_terracotta", + "bkterracotta": "black_terracotta", + "blaclay": "black_terracotta", + "blasclay": "black_terracotta", + "blastainedclay": "black_terracotta", + "blaterra": "black_terracotta", + "blatcota": "black_terracotta", + "blaterracota": "black_terracotta", + "blaterracotta": "black_terracotta", + "blackclay": "black_terracotta", + "blacksclay": "black_terracotta", + "blackstainedclay": "black_terracotta", + "blackterra": "black_terracotta", + "blacktcota": "black_terracotta", + "blackterracota": "black_terracotta", + "black_wall_banner": { + "material": "BLACK_WALL_BANNER", + "unspawnable": true + }, + "blackwallbanner": "black_wall_banner", + "black_wool": { + "material": "BLACK_WOOL" + }, + "blackwool": "black_wool", + "bkwool": "black_wool", + "bkcloth": "black_wool", + "bkcotton": "black_wool", + "blawool": "black_wool", + "blacloth": "black_wool", + "blacotton": "black_wool", + "blackcloth": "black_wool", + "blackcotton": "black_wool", + "blaze_powder": { + "material": "BLAZE_POWDER" + }, + "blazepowder": "blaze_powder", + "blaze_rod": { + "material": "BLAZE_ROD" + }, + "blazerod": "blaze_rod", + "blaze_spawn_egg": { + "material": "BLAZE_SPAWN_EGG" + }, + "blazespawnegg": "blaze_spawn_egg", + "blazeegg": "blaze_spawn_egg", + "eggblaze": "blaze_spawn_egg", + "spawneggblaze": "blaze_spawn_egg", + "blazespawn": "blaze_spawn_egg", + "spawnblaze": "blaze_spawn_egg", + "blue_banner": { + "material": "BLUE_BANNER" + }, + "bluebanner": "blue_banner", + "blustandingbanner": "blue_banner", + "blubanner": "blue_banner", + "bluestandingbanner": "blue_banner", + "blue_bed": { + "material": "BLUE_BED" + }, + "bluebed": "blue_bed", + "blubed": "blue_bed", + "blue_carpet": { + "material": "BLUE_CARPET" + }, + "bluecarpet": "blue_carpet", + "blucarpet": "blue_carpet", + "blufloor": "blue_carpet", + "bluefloor": "blue_carpet", + "blue_concrete": { + "material": "BLUE_CONCRETE" + }, + "blueconcrete": "blue_concrete", + "bluconcrete": "blue_concrete", + "blue_concrete_powder": { + "material": "BLUE_CONCRETE_POWDER" + }, + "blueconcretepowder": "blue_concrete_powder", + "bluconcretepowder": "blue_concrete_powder", + "bluconcretesand": "blue_concrete_powder", + "blucpowder": "blue_concrete_powder", + "blucdust": "blue_concrete_powder", + "blucp": "blue_concrete_powder", + "blueconcretesand": "blue_concrete_powder", + "bluecpowder": "blue_concrete_powder", + "bluecdust": "blue_concrete_powder", + "bluecp": "blue_concrete_powder", + "blue_glazed_terracotta": { + "material": "BLUE_GLAZED_TERRACOTTA" + }, + "blueglazedterracotta": "blue_glazed_terracotta", + "bluglazedtcota": "blue_glazed_terracotta", + "bluglazedterra": "blue_glazed_terracotta", + "bluglazedterracotta": "blue_glazed_terracotta", + "bluglazedterracota": "blue_glazed_terracotta", + "blueglazedtcota": "blue_glazed_terracotta", + "blueglazedterra": "blue_glazed_terracotta", + "blueglazedterracota": "blue_glazed_terracotta", + "blue_ice": { + "material": "BLUE_ICE" + }, + "blueice": "blue_ice", + "blue_orchid": { + "material": "BLUE_ORCHID" + }, + "blueorchid": "blue_orchid", + "cyanorchid": "blue_orchid", + "lightblueorchid": "blue_orchid", + "lblueorchid": "blue_orchid", + "orchid": "blue_orchid", + "cyanflower": "blue_orchid", + "lightblueflower": "blue_orchid", + "lblueflower": "blue_orchid", + "blue_shulker_box": { + "material": "BLUE_SHULKER_BOX" + }, + "blueshulkerbox": "blue_shulker_box", + "blushulkerbox": "blue_shulker_box", + "bluchest": "blue_shulker_box", + "bluechest": "blue_shulker_box", + "blue_stained_glass": { + "material": "BLUE_STAINED_GLASS" + }, + "bluestainedglass": "blue_stained_glass", + "bluglass": "blue_stained_glass", + "blusglass": "blue_stained_glass", + "blustainedglass": "blue_stained_glass", + "blueglass": "blue_stained_glass", + "bluesglass": "blue_stained_glass", + "blue_stained_glass_pane": { + "material": "BLUE_STAINED_GLASS_PANE" + }, + "bluestainedglasspane": "blue_stained_glass_pane", + "bluglasspane": "blue_stained_glass_pane", + "blusglasspane": "blue_stained_glass_pane", + "blustainedglasspane": "blue_stained_glass_pane", + "blugpane": "blue_stained_glass_pane", + "blueglasspane": "blue_stained_glass_pane", + "bluesglasspane": "blue_stained_glass_pane", + "bluegpane": "blue_stained_glass_pane", + "blue_terracotta": { + "material": "BLUE_TERRACOTTA" + }, + "blueterracotta": "blue_terracotta", + "bluclay": "blue_terracotta", + "blusclay": "blue_terracotta", + "blustainedclay": "blue_terracotta", + "bluterra": "blue_terracotta", + "blutcota": "blue_terracotta", + "bluterracota": "blue_terracotta", + "bluterracotta": "blue_terracotta", + "blueclay": "blue_terracotta", + "bluesclay": "blue_terracotta", + "bluestainedclay": "blue_terracotta", + "blueterra": "blue_terracotta", + "bluetcota": "blue_terracotta", + "blueterracota": "blue_terracotta", + "blue_wall_banner": { + "material": "BLUE_WALL_BANNER", + "unspawnable": true + }, + "bluewallbanner": "blue_wall_banner", + "blue_wool": { + "material": "BLUE_WOOL" + }, + "bluewool": "blue_wool", + "bluwool": "blue_wool", + "blucloth": "blue_wool", + "blucotton": "blue_wool", + "bluecloth": "blue_wool", + "bluecotton": "blue_wool", + "bone": { + "material": "BONE" + }, + "bone_block": { + "material": "BONE_BLOCK" + }, + "boneblock": "bone_block", + "bone_meal": { + "material": "BONE_MEAL" + }, + "bonemeal": "bone_meal", + "book": { + "material": "BOOK" + }, + "bookshelf": { + "material": "BOOKSHELF" + }, + "bshelf": "bookshelf", + "bookcase": "bookshelf", + "casebook": "bookshelf", + "shelfbook": "bookshelf", + "bookblock": "bookshelf", + "blockbook": "bookshelf", + "bow": { + "material": "BOW" + }, + "bowl": { + "material": "BOWL" + }, + "brain_coral": { + "material": "BRAIN_CORAL" + }, + "braincoral": "brain_coral", + "brain_coral_block": { + "material": "BRAIN_CORAL_BLOCK" + }, + "braincoralblock": "brain_coral_block", + "brain_coral_fan": { + "material": "BRAIN_CORAL_FAN" + }, + "braincoralfan": "brain_coral_fan", + "brain_coral_wall_fan": { + "material": "BRAIN_CORAL_WALL_FAN", + "unspawnable": true + }, + "braincoralwallfan": "brain_coral_wall_fan", + "bread": { + "material": "BREAD" + }, + "brewing_stand": { + "material": "BREWING_STAND" + }, + "brewingstand": "brewing_stand", + "brick": { + "material": "BRICK" + }, + "bricks": { + "material": "BRICKS" + }, + "brick_slab": { + "material": "BRICK_SLAB" + }, + "brickslab": "brick_slab", + "brick_stairs": { + "material": "BRICK_STAIRS" + }, + "brickstairs": "brick_stairs", + "brown_banner": { + "material": "BROWN_BANNER" + }, + "brownbanner": "brown_banner", + "brostandingbanner": "brown_banner", + "brobanner": "brown_banner", + "brownstandingbanner": "brown_banner", + "brown_bed": { + "material": "BROWN_BED" + }, + "brownbed": "brown_bed", + "brobed": "brown_bed", + "brown_carpet": { + "material": "BROWN_CARPET" + }, + "browncarpet": "brown_carpet", + "brocarpet": "brown_carpet", + "brofloor": "brown_carpet", + "brownfloor": "brown_carpet", + "brown_concrete": { + "material": "BROWN_CONCRETE" + }, + "brownconcrete": "brown_concrete", + "broconcrete": "brown_concrete", + "brown_concrete_powder": { + "material": "BROWN_CONCRETE_POWDER" + }, + "brownconcretepowder": "brown_concrete_powder", + "broconcretepowder": "brown_concrete_powder", + "broconcretesand": "brown_concrete_powder", + "brocpowder": "brown_concrete_powder", + "brocdust": "brown_concrete_powder", + "brocp": "brown_concrete_powder", + "brownconcretesand": "brown_concrete_powder", + "browncpowder": "brown_concrete_powder", + "browncdust": "brown_concrete_powder", + "browncp": "brown_concrete_powder", + "brown_glazed_terracotta": { + "material": "BROWN_GLAZED_TERRACOTTA" + }, + "brownglazedterracotta": "brown_glazed_terracotta", + "broglazedtcota": "brown_glazed_terracotta", + "broglazedterra": "brown_glazed_terracotta", + "broglazedterracotta": "brown_glazed_terracotta", + "broglazedterracota": "brown_glazed_terracotta", + "brownglazedtcota": "brown_glazed_terracotta", + "brownglazedterra": "brown_glazed_terracotta", + "brownglazedterracota": "brown_glazed_terracotta", + "brown_mushroom": { + "material": "BROWN_MUSHROOM" + }, + "brownmushroom": "brown_mushroom", + "brownmush": "brown_mushroom", + "brownshroom": "brown_mushroom", + "bmushroom": "brown_mushroom", + "bmush": "brown_mushroom", + "bshroom": "brown_mushroom", + "brown_mushroom_block": { + "material": "BROWN_MUSHROOM_BLOCK" + }, + "brownmushroomblock": "brown_mushroom_block", + "giantbrownmushroom": "brown_mushroom_block", + "giantbrownmush": "brown_mushroom_block", + "gbrownmushroom": "brown_mushroom_block", + "gbrownmush": "brown_mushroom_block", + "hugebrownmushroom": "brown_mushroom_block", + "hugebrownmush": "brown_mushroom_block", + "hbrownmushroom": "brown_mushroom_block", + "hbrownmush": "brown_mushroom_block", + "bigbrownmushroom": "brown_mushroom_block", + "bigbrownmush": "brown_mushroom_block", + "bbrownmushroom": "brown_mushroom_block", + "bbrownmush": "brown_mushroom_block", + "giantbmushroom": "brown_mushroom_block", + "giantbmush": "brown_mushroom_block", + "gbmushroom": "brown_mushroom_block", + "gbmush": "brown_mushroom_block", + "hugebmushroom": "brown_mushroom_block", + "hugebmush": "brown_mushroom_block", + "hbmushroom": "brown_mushroom_block", + "hbmush": "brown_mushroom_block", + "bigbmushroom": "brown_mushroom_block", + "bigbmush": "brown_mushroom_block", + "bbmushroom": "brown_mushroom_block", + "bbmush": "brown_mushroom_block", + "brown_shulker_box": { + "material": "BROWN_SHULKER_BOX" + }, + "brownshulkerbox": "brown_shulker_box", + "broshulkerbox": "brown_shulker_box", + "brochest": "brown_shulker_box", + "brownchest": "brown_shulker_box", + "brown_stained_glass": { + "material": "BROWN_STAINED_GLASS" + }, + "brownstainedglass": "brown_stained_glass", + "broglass": "brown_stained_glass", + "brosglass": "brown_stained_glass", + "brostainedglass": "brown_stained_glass", + "brownglass": "brown_stained_glass", + "brownsglass": "brown_stained_glass", + "brown_stained_glass_pane": { + "material": "BROWN_STAINED_GLASS_PANE" + }, + "brownstainedglasspane": "brown_stained_glass_pane", + "broglasspane": "brown_stained_glass_pane", + "brosglasspane": "brown_stained_glass_pane", + "brostainedglasspane": "brown_stained_glass_pane", + "brogpane": "brown_stained_glass_pane", + "brownglasspane": "brown_stained_glass_pane", + "brownsglasspane": "brown_stained_glass_pane", + "browngpane": "brown_stained_glass_pane", + "brown_terracotta": { + "material": "BROWN_TERRACOTTA" + }, + "brownterracotta": "brown_terracotta", + "broclay": "brown_terracotta", + "brosclay": "brown_terracotta", + "brostainedclay": "brown_terracotta", + "broterra": "brown_terracotta", + "brotcota": "brown_terracotta", + "broterracota": "brown_terracotta", + "broterracotta": "brown_terracotta", + "brownclay": "brown_terracotta", + "brownsclay": "brown_terracotta", + "brownstainedclay": "brown_terracotta", + "brownterra": "brown_terracotta", + "browntcota": "brown_terracotta", + "brownterracota": "brown_terracotta", + "brown_wall_banner": { + "material": "BROWN_WALL_BANNER", + "unspawnable": true + }, + "brownwallbanner": "brown_wall_banner", + "brown_wool": { + "material": "BROWN_WOOL" + }, + "brownwool": "brown_wool", + "browool": "brown_wool", + "brocloth": "brown_wool", + "brocotton": "brown_wool", + "browncloth": "brown_wool", + "browncotton": "brown_wool", + "bubble_column": { + "material": "BUBBLE_COLUMN", + "unspawnable": true + }, + "bubblecolumn": "bubble_column", + "bubble_coral": { + "material": "BUBBLE_CORAL" + }, + "bubblecoral": "bubble_coral", + "bubble_coral_block": { + "material": "BUBBLE_CORAL_BLOCK" + }, + "bubblecoralblock": "bubble_coral_block", + "bubble_coral_fan": { + "material": "BUBBLE_CORAL_FAN" + }, + "bubblecoralfan": "bubble_coral_fan", + "bubble_coral_wall_fan": { + "material": "BUBBLE_CORAL_WALL_FAN", + "unspawnable": true + }, + "bubblecoralwallfan": "bubble_coral_wall_fan", + "bucket": { + "material": "BUCKET" + }, + "cactus": { + "material": "CACTUS" + }, + "cactuses": "cactus", + "cacti": "cactus", + "cactus_green": { + "material": "CACTUS_GREEN" + }, + "cactusgreen": "cactus_green", + "cake": { + "material": "CAKE" + }, + "carrot": { + "material": "CARROT" + }, + "carrots": { + "material": "CARROTS", + "unspawnable": true + }, + "carrot_on_a_stick": { + "material": "CARROT_ON_A_STICK" + }, + "carrotonastick": "carrot_on_a_stick", + "carved_pumpkin": { + "material": "CARVED_PUMPKIN" + }, + "carvedpumpkin": "carved_pumpkin", + "hollowpumpkin": "carved_pumpkin", + "cutpumpkin": "carved_pumpkin", + "oldpumpkin": "carved_pumpkin", + "legacypumpkin": "carved_pumpkin", + "cauldron": { + "material": "CAULDRON" + }, + "cave_air": { + "material": "CAVE_AIR", + "unspawnable": true + }, + "caveair": "cave_air", + "cave_spider_spawn_egg": { + "material": "CAVE_SPIDER_SPAWN_EGG" + }, + "cavespiderspawnegg": "cave_spider_spawn_egg", + "cavespideregg": "cave_spider_spawn_egg", + "eggcavespider": "cave_spider_spawn_egg", + "spawneggcavespider": "cave_spider_spawn_egg", + "cavespiderspawn": "cave_spider_spawn_egg", + "spawncavespider": "cave_spider_spawn_egg", + "chainmail_boots": { + "material": "CHAINMAIL_BOOTS" + }, + "chainmailboots": "chainmail_boots", + "chainmailshoes": "chainmail_boots", + "chainmboots": "chainmail_boots", + "chainmshoes": "chainmail_boots", + "cmailboots": "chainmail_boots", + "cmailshoes": "chainmail_boots", + "chainboots": "chainmail_boots", + "chainshoes": "chainmail_boots", + "cmboots": "chainmail_boots", + "cmshoes": "chainmail_boots", + "chainmail_chestplate": { + "material": "CHAINMAIL_CHESTPLATE" + }, + "chainmailchestplate": "chainmail_chestplate", + "chainmailplatebody": "chainmail_chestplate", + "chainmailplate": "chainmail_chestplate", + "chainmailshirt": "chainmail_chestplate", + "chainmailtunic": "chainmail_chestplate", + "chainmchestplate": "chainmail_chestplate", + "chainmplatebody": "chainmail_chestplate", + "chainmplate": "chainmail_chestplate", + "chainmshirt": "chainmail_chestplate", + "chainmtunic": "chainmail_chestplate", + "cmailchestplate": "chainmail_chestplate", + "cmailplatebody": "chainmail_chestplate", + "cmailplate": "chainmail_chestplate", + "cmailshirt": "chainmail_chestplate", + "cmailtunic": "chainmail_chestplate", + "chainchestplate": "chainmail_chestplate", + "chainplatebody": "chainmail_chestplate", + "chainplate": "chainmail_chestplate", + "chainshirt": "chainmail_chestplate", + "chaintunic": "chainmail_chestplate", + "cmchestplate": "chainmail_chestplate", + "cmplatebody": "chainmail_chestplate", + "cmplate": "chainmail_chestplate", + "cmshirt": "chainmail_chestplate", + "cmtunic": "chainmail_chestplate", + "chainmail_helmet": { + "material": "CHAINMAIL_HELMET" + }, + "chainmailhelmet": "chainmail_helmet", + "chainmailhelm": "chainmail_helmet", + "chainmailhat": "chainmail_helmet", + "chainmailcoif": "chainmail_helmet", + "chainmhelmet": "chainmail_helmet", + "chainmhelm": "chainmail_helmet", + "chainmhat": "chainmail_helmet", + "chainmcoif": "chainmail_helmet", + "cmailhelmet": "chainmail_helmet", + "cmailhelm": "chainmail_helmet", + "cmailhat": "chainmail_helmet", + "cmailcoif": "chainmail_helmet", + "chainhelmet": "chainmail_helmet", + "chainhelm": "chainmail_helmet", + "chainhat": "chainmail_helmet", + "chaincoif": "chainmail_helmet", + "cmhelmet": "chainmail_helmet", + "cmhelm": "chainmail_helmet", + "cmhat": "chainmail_helmet", + "cmcoif": "chainmail_helmet", + "chainmail_leggings": { + "material": "CHAINMAIL_LEGGINGS" + }, + "chainmailleggings": "chainmail_leggings", + "chainmaillegs": "chainmail_leggings", + "chainmailpants": "chainmail_leggings", + "chainmleggings": "chainmail_leggings", + "chainmlegs": "chainmail_leggings", + "chainmpants": "chainmail_leggings", + "cmailleggings": "chainmail_leggings", + "cmaillegs": "chainmail_leggings", + "cmailpants": "chainmail_leggings", + "chainleggings": "chainmail_leggings", + "chainlegs": "chainmail_leggings", + "chainpants": "chainmail_leggings", + "cmleggings": "chainmail_leggings", + "cmlegs": "chainmail_leggings", + "cmpants": "chainmail_leggings", + "chain_command_block": { + "material": "CHAIN_COMMAND_BLOCK" + }, + "chaincommandblock": "chain_command_block", + "charcoal": { + "material": "CHARCOAL" + }, + "chest": { + "material": "CHEST" + }, + "container": "chest", + "chest_minecart": { + "material": "CHEST_MINECART" + }, + "chestminecart": "chest_minecart", + "storageminecart": "chest_minecart", + "storagemcart": "chest_minecart", + "storagemc": "chest_minecart", + "storagecart": "chest_minecart", + "chestmcart": "chest_minecart", + "chestmc": "chest_minecart", + "chestcart": "chest_minecart", + "sminecart": "chest_minecart", + "smcart": "chest_minecart", + "smc": "chest_minecart", + "scart": "chest_minecart", + "cminecart": "chest_minecart", + "cmcart": "chest_minecart", + "cmc": "chest_minecart", + "ccart": "chest_minecart", + "chicken": { + "material": "CHICKEN" + }, + "rawchicken": "chicken", + "rachicken": "chicken", + "uncookedchicken": "chicken", + "plainchicken": "chicken", + "chicken_spawn_egg": { + "material": "CHICKEN_SPAWN_EGG" + }, + "chickenspawnegg": "chicken_spawn_egg", + "chickenegg": "chicken_spawn_egg", + "eggchicken": "chicken_spawn_egg", + "spawneggchicken": "chicken_spawn_egg", + "chickenspawn": "chicken_spawn_egg", + "spawnchicken": "chicken_spawn_egg", + "chipped_anvil": { + "material": "CHIPPED_ANVIL" + }, + "chippedanvil": "chipped_anvil", + "slightlydamagedanvil": "chipped_anvil", + "slightdamageanvil": "chipped_anvil", + "chiseled_quartz_block": { + "material": "CHISELED_QUARTZ_BLOCK" + }, + "chiseledquartzblock": "chiseled_quartz_block", + "chiselquartzblock": "chiseled_quartz_block", + "cquartzblock": "chiseled_quartz_block", + "cqblock": "chiseled_quartz_block", + "pillarquartzblock": "chiseled_quartz_block", + "pquartzblock": "chiseled_quartz_block", + "pqblock": "chiseled_quartz_block", + "chiseled_red_sandstone": { + "material": "CHISELED_RED_SANDSTONE" + }, + "chiseledredsandstone": "chiseled_red_sandstone", + "crstone": "chiseled_red_sandstone", + "redsandstonechiseled": "chiseled_red_sandstone", + "circleredsandstone": "chiseled_red_sandstone", + "ciredsandstone": "chiseled_red_sandstone", + "chiseledrsandstone": "chiseled_red_sandstone", + "circlersandstone": "chiseled_red_sandstone", + "cirsandstone": "chiseled_red_sandstone", + "chiseledrsandst": "chiseled_red_sandstone", + "circlersandst": "chiseled_red_sandstone", + "cirsandst": "chiseled_red_sandstone", + "chiseledrsastone": "chiseled_red_sandstone", + "circlersastone": "chiseled_red_sandstone", + "cirsastone": "chiseled_red_sandstone", + "chiseled_sandstone": { + "material": "CHISELED_SANDSTONE" + }, + "chiseledsandstone": "chiseled_sandstone", + "cpstone": "chiseled_sandstone", + "creepersandstone": "chiseled_sandstone", + "creepersastone": "chiseled_sandstone", + "creepsandstone": "chiseled_sandstone", + "creepsastone": "chiseled_sandstone", + "csandstone": "chiseled_sandstone", + "csastone": "chiseled_sandstone", + "hieroglyphicsandstone": "chiseled_sandstone", + "hieroglyphicsastone": "chiseled_sandstone", + "hieroglyphsandstone": "chiseled_sandstone", + "hieroglyphsastone": "chiseled_sandstone", + "hsandstone": "chiseled_sandstone", + "hsastone": "chiseled_sandstone", + "pyramidsandstone": "chiseled_sandstone", + "pyramidsastone": "chiseled_sandstone", + "psandstone": "chiseled_sandstone", + "psastone": "chiseled_sandstone", + "chiseledsastone": "chiseled_sandstone", + "chiselsandstone": "chiseled_sandstone", + "chiselsastone": "chiseled_sandstone", + "circlesandstone": "chiseled_sandstone", + "cisandstone": "chiseled_sandstone", + "chiseledsandst": "chiseled_sandstone", + "circlesandst": "chiseled_sandstone", + "cisandst": "chiseled_sandstone", + "circlesastone": "chiseled_sandstone", + "cisastone": "chiseled_sandstone", + "chiseled_stone_bricks": { + "material": "CHISELED_STONE_BRICKS" + }, + "chiseledstonebricks": "chiseled_stone_bricks", + "chiseledstonebrick": "chiseled_stone_bricks", + "circlestonebrick": "chiseled_stone_bricks", + "cistonebrick": "chiseled_stone_bricks", + "chiseledstonebrickblock": "chiseled_stone_bricks", + "circlestonebrickblock": "chiseled_stone_bricks", + "cistonebrickblock": "chiseled_stone_bricks", + "chiseledstonebb": "chiseled_stone_bricks", + "circlestonebb": "chiseled_stone_bricks", + "cistonebb": "chiseled_stone_bricks", + "chiseledsbrick": "chiseled_stone_bricks", + "circlesbrick": "chiseled_stone_bricks", + "cisbrick": "chiseled_stone_bricks", + "chiseledsbricks": "chiseled_stone_bricks", + "circlesbricks": "chiseled_stone_bricks", + "cisbricks": "chiseled_stone_bricks", + "chiseledsbrickblock": "chiseled_stone_bricks", + "circlesbrickblock": "chiseled_stone_bricks", + "cisbrickblock": "chiseled_stone_bricks", + "circlestonebricks": "chiseled_stone_bricks", + "cistonebricks": "chiseled_stone_bricks", + "chiseledsbb": "chiseled_stone_bricks", + "circlesbb": "chiseled_stone_bricks", + "cisbb": "chiseled_stone_bricks", + "chorus_flower": { + "material": "CHORUS_FLOWER" + }, + "chorusflower": "chorus_flower", + "chorus_fruit": { + "material": "CHORUS_FRUIT" + }, + "chorusfruit": "chorus_fruit", + "chorus": "chorus_fruit", + "unpoppedchorus": "chorus_fruit", + "unpopchorus": "chorus_fruit", + "chorus_plant": { + "material": "CHORUS_PLANT" + }, + "chorusplant": "chorus_plant", + "clay": { + "material": "CLAY" + }, + "clay_ball": { + "material": "CLAY_BALL" + }, + "clayball": "clay_ball", + "clock": { + "material": "CLOCK" + }, + "coal": { + "material": "COAL" + }, + "coal_block": { + "material": "COAL_BLOCK" + }, + "coalblock": "coal_block", + "blockcoal": "coal_block", + "cblock": "coal_block", + "blockc": "coal_block", + "coal_ore": { + "material": "COAL_ORE" + }, + "coalore": "coal_ore", + "coalo": "coal_ore", + "orecoal": "coal_ore", + "ocoal": "coal_ore", + "core": "coal_ore", + "co": "coal_ore", + "orec": "coal_ore", + "oc": "coal_ore", + "coarse_dirt": { + "material": "COARSE_DIRT" + }, + "coarsedirt": "coarse_dirt", + "cdirt": "coarse_dirt", + "grasslessdirt": "coarse_dirt", + "grasslessearth": "coarse_dirt", + "grasslessland": "coarse_dirt", + "coarseland": "coarse_dirt", + "coarseearth": "coarse_dirt", + "cobblestone": { + "material": "COBBLESTONE" + }, + "cstone": "cobblestone", + "cobble": "cobblestone", + "cobblestone_slab": { + "material": "COBBLESTONE_SLAB" + }, + "cobblestoneslab": "cobblestone_slab", + "cobblestonesl": "cobblestone_slab", + "cstoneslab": "cobblestone_slab", + "cstonesl": "cobblestone_slab", + "cobbleslab": "cobblestone_slab", + "cobblesl": "cobblestone_slab", + "cobblestone_stairs": { + "material": "COBBLESTONE_STAIRS" + }, + "cobblestonestairs": "cobblestone_stairs", + "cobblestonestair": "cobblestone_stairs", + "cobblestonest": "cobblestone_stairs", + "cstonestair": "cobblestone_stairs", + "cstonestairs": "cobblestone_stairs", + "cstonest": "cobblestone_stairs", + "cobblestair": "cobblestone_stairs", + "cobblestairs": "cobblestone_stairs", + "cobblest": "cobblestone_stairs", + "cobblestone_wall": { + "material": "COBBLESTONE_WALL" + }, + "cobblestonewall": "cobblestone_wall", + "cobblewall": "cobblestone_wall", + "cstonewall": "cobblestone_wall", + "cswall": "cobblestone_wall", + "cwall": "cobblestone_wall", + "cobblestonefence": "cobblestone_wall", + "cobblefence": "cobblestone_wall", + "cstonefence": "cobblestone_wall", + "csfence": "cobblestone_wall", + "cfence": "cobblestone_wall", + "stonewall": "cobblestone_wall", + "swall": "cobblestone_wall", + "cobweb": { + "material": "COBWEB" + }, + "spiderweb": "cobweb", + "sweb": "cobweb", + "cweb": "cobweb", + "web": "cobweb", + "cocoa": { + "material": "COCOA", + "unspawnable": true + }, + "cocoa_beans": { + "material": "COCOA_BEANS" + }, + "cocoabeans": "cocoa_beans", + "cocoaplant": "cocoa_beans", + "cocoplant": "cocoa_beans", + "cplant": "cocoa_beans", + "cocoafruit": "cocoa_beans", + "cocofruit": "cocoa_beans", + "cfruit": "cocoa_beans", + "cocoapod": "cocoa_beans", + "cocopod": "cocoa_beans", + "cpod": "cocoa_beans", + "cod": { + "material": "COD" + }, + "rawfish": "cod", + "rawcod": "cod", + "rafish": "cod", + "racod": "cod", + "uncookedfish": "cod", + "uncookedcod": "cod", + "plainfish": "cod", + "plaincod": "cod", + "fish": "cod", + "cod_bucket": { + "material": "COD_BUCKET" + }, + "codbucket": "cod_bucket", + "codpail": "cod_bucket", + "cod_spawn_egg": { + "material": "COD_SPAWN_EGG" + }, + "codspawnegg": "cod_spawn_egg", + "codegg": "cod_spawn_egg", + "eggcod": "cod_spawn_egg", + "spawneggcod": "cod_spawn_egg", + "codspawn": "cod_spawn_egg", + "spawncod": "cod_spawn_egg", + "command_block": { + "material": "COMMAND_BLOCK" + }, + "commandblock": "command_block", + "blockcommand": "command_block", + "cmdblock": "command_block", + "blockcmd": "command_block", + "macroblock": "command_block", + "blockmacro": "command_block", + "command_block_minecart": { + "material": "COMMAND_BLOCK_MINECART" + }, + "commandblockminecart": "command_block_minecart", + "cmdblockminecart": "command_block_minecart", + "cmdblockmcart": "command_block_minecart", + "cmdblockmc": "command_block_minecart", + "cmdblockcart": "command_block_minecart", + "cblockminecart": "command_block_minecart", + "cblockmcart": "command_block_minecart", + "cblockmc": "command_block_minecart", + "cblockcart": "command_block_minecart", + "commandminecart": "command_block_minecart", + "commandmcart": "command_block_minecart", + "commandmc": "command_block_minecart", + "commandcart": "command_block_minecart", + "cmdminecart": "command_block_minecart", + "cmdmcart": "command_block_minecart", + "cmdmc": "command_block_minecart", + "cmdcart": "command_block_minecart", + "cbminecart": "command_block_minecart", + "cbmcart": "command_block_minecart", + "cbmc": "command_block_minecart", + "cbcart": "command_block_minecart", + "commandblockmcart": "command_block_minecart", + "commandblockmc": "command_block_minecart", + "commandblockcart": "command_block_minecart", + "comparator": { + "material": "COMPARATOR" + }, + "compass": { + "material": "COMPASS" + }, + "conduit": { + "material": "CONDUIT" + }, + "cooked_beef": { + "material": "COOKED_BEEF" + }, + "cookedbeef": "cooked_beef", + "beefcooked": "cooked_beef", + "beefcook": "cooked_beef", + "beefc": "cooked_beef", + "beefgrilled": "cooked_beef", + "beefgrill": "cooked_beef", + "beefg": "cooked_beef", + "beefroasted": "cooked_beef", + "beefroast": "cooked_beef", + "beefro": "cooked_beef", + "beefbbq": "cooked_beef", + "beeftoasted": "cooked_beef", + "cookbeef": "cooked_beef", + "cbeef": "cooked_beef", + "grilledbeef": "cooked_beef", + "grillbeef": "cooked_beef", + "gbeef": "cooked_beef", + "roastedbeef": "cooked_beef", + "roastbeef": "cooked_beef", + "robeef": "cooked_beef", + "bbqbeef": "cooked_beef", + "toastedbeef": "cooked_beef", + "steakcooked": "cooked_beef", + "steakcook": "cooked_beef", + "steakc": "cooked_beef", + "steakgrilled": "cooked_beef", + "steakgrill": "cooked_beef", + "steakg": "cooked_beef", + "steakroasted": "cooked_beef", + "steakroast": "cooked_beef", + "steakro": "cooked_beef", + "steakbbq": "cooked_beef", + "steaktoasted": "cooked_beef", + "cookedsteak": "cooked_beef", + "cooksteak": "cooked_beef", + "csteak": "cooked_beef", + "grilledsteak": "cooked_beef", + "grillsteak": "cooked_beef", + "gsteak": "cooked_beef", + "roastedsteak": "cooked_beef", + "roaststeak": "cooked_beef", + "rosteak": "cooked_beef", + "bbqsteak": "cooked_beef", + "toastedsteak": "cooked_beef", + "cowmeatcooked": "cooked_beef", + "cowmeatcook": "cooked_beef", + "cowmeatc": "cooked_beef", + "cowmeatgrilled": "cooked_beef", + "cowmeatgrill": "cooked_beef", + "cowmeatg": "cooked_beef", + "cowmeatroasted": "cooked_beef", + "cowmeatroast": "cooked_beef", + "cowmeatro": "cooked_beef", + "cowmeatbbq": "cooked_beef", + "cowmeattoasted": "cooked_beef", + "cookedcowmeat": "cooked_beef", + "cookcowmeat": "cooked_beef", + "ccowmeat": "cooked_beef", + "grilledcowmeat": "cooked_beef", + "grillcowmeat": "cooked_beef", + "gcowmeat": "cooked_beef", + "roastedcowmeat": "cooked_beef", + "roastcowmeat": "cooked_beef", + "rocowmeat": "cooked_beef", + "bbqcowmeat": "cooked_beef", + "toastedcowmeat": "cooked_beef", + "cooked_chicken": { + "material": "COOKED_CHICKEN" + }, + "cookedchicken": "cooked_chicken", + "chickencooked": "cooked_chicken", + "chickencook": "cooked_chicken", + "chickenc": "cooked_chicken", + "chickengrilled": "cooked_chicken", + "chickengrill": "cooked_chicken", + "chickeng": "cooked_chicken", + "chickenroasted": "cooked_chicken", + "chickenroast": "cooked_chicken", + "chickenro": "cooked_chicken", + "chickenbbq": "cooked_chicken", + "chickentoasted": "cooked_chicken", + "cookchicken": "cooked_chicken", + "cchicken": "cooked_chicken", + "grilledchicken": "cooked_chicken", + "grillchicken": "cooked_chicken", + "gchicken": "cooked_chicken", + "roastedchicken": "cooked_chicken", + "roastchicken": "cooked_chicken", + "rochicken": "cooked_chicken", + "bbqchicken": "cooked_chicken", + "toastedchicken": "cooked_chicken", + "cooked_cod": { + "material": "COOKED_COD" + }, + "cookedcod": "cooked_cod", + "fishcooked": "cooked_cod", + "fishcook": "cooked_cod", + "fishc": "cooked_cod", + "fishgrilled": "cooked_cod", + "fishgrill": "cooked_cod", + "fishg": "cooked_cod", + "fishroasted": "cooked_cod", + "fishroast": "cooked_cod", + "fishro": "cooked_cod", + "fishbbq": "cooked_cod", + "fishtoasted": "cooked_cod", + "cookedfish": "cooked_cod", + "cookfish": "cooked_cod", + "cfish": "cooked_cod", + "grilledfish": "cooked_cod", + "grillfish": "cooked_cod", + "gfish": "cooked_cod", + "roastedfish": "cooked_cod", + "roastfish": "cooked_cod", + "rofish": "cooked_cod", + "bbqfish": "cooked_cod", + "toastedfish": "cooked_cod", + "codcooked": "cooked_cod", + "codcook": "cooked_cod", + "codc": "cooked_cod", + "codgrilled": "cooked_cod", + "codgrill": "cooked_cod", + "codg": "cooked_cod", + "codroasted": "cooked_cod", + "codroast": "cooked_cod", + "codro": "cooked_cod", + "codbbq": "cooked_cod", + "codtoasted": "cooked_cod", + "cookcod": "cooked_cod", + "ccod": "cooked_cod", + "grilledcod": "cooked_cod", + "grillcod": "cooked_cod", + "gcod": "cooked_cod", + "roastedcod": "cooked_cod", + "roastcod": "cooked_cod", + "rocod": "cooked_cod", + "bbqcod": "cooked_cod", + "toastedcod": "cooked_cod", + "cooked_mutton": { + "material": "COOKED_MUTTON" + }, + "cookedmutton": "cooked_mutton", + "muttoncooked": "cooked_mutton", + "muttoncook": "cooked_mutton", + "muttonc": "cooked_mutton", + "muttongrilled": "cooked_mutton", + "muttongrill": "cooked_mutton", + "muttong": "cooked_mutton", + "muttonroasted": "cooked_mutton", + "muttonroast": "cooked_mutton", + "muttonro": "cooked_mutton", + "muttonbbq": "cooked_mutton", + "muttontoasted": "cooked_mutton", + "cookmutton": "cooked_mutton", + "cmutton": "cooked_mutton", + "grilledmutton": "cooked_mutton", + "grillmutton": "cooked_mutton", + "gmutton": "cooked_mutton", + "roastedmutton": "cooked_mutton", + "roastmutton": "cooked_mutton", + "romutton": "cooked_mutton", + "bbqmutton": "cooked_mutton", + "toastedmutton": "cooked_mutton", + "sheepmeatcooked": "cooked_mutton", + "sheepmeatcook": "cooked_mutton", + "sheepmeatc": "cooked_mutton", + "sheepmeatgrilled": "cooked_mutton", + "sheepmeatgrill": "cooked_mutton", + "sheepmeatg": "cooked_mutton", + "sheepmeatroasted": "cooked_mutton", + "sheepmeatroast": "cooked_mutton", + "sheepmeatro": "cooked_mutton", + "sheepmeatbbq": "cooked_mutton", + "sheepmeattoasted": "cooked_mutton", + "cookedsheepmeat": "cooked_mutton", + "cooksheepmeat": "cooked_mutton", + "csheepmeat": "cooked_mutton", + "grilledsheepmeat": "cooked_mutton", + "grillsheepmeat": "cooked_mutton", + "gsheepmeat": "cooked_mutton", + "roastedsheepmeat": "cooked_mutton", + "roastsheepmeat": "cooked_mutton", + "rosheepmeat": "cooked_mutton", + "bbqsheepmeat": "cooked_mutton", + "toastedsheepmeat": "cooked_mutton", + "cooked_porkchop": { + "material": "COOKED_PORKCHOP" + }, + "cookedporkchop": "cooked_porkchop", + "porkcooked": "cooked_porkchop", + "porkcook": "cooked_porkchop", + "porkc": "cooked_porkchop", + "porkgrilled": "cooked_porkchop", + "porkgrill": "cooked_porkchop", + "porkg": "cooked_porkchop", + "porkroasted": "cooked_porkchop", + "porkroast": "cooked_porkchop", + "porkro": "cooked_porkchop", + "porkbbq": "cooked_porkchop", + "porktoasted": "cooked_porkchop", + "cookedpork": "cooked_porkchop", + "cookpork": "cooked_porkchop", + "cpork": "cooked_porkchop", + "grilledpork": "cooked_porkchop", + "grillpork": "cooked_porkchop", + "gpork": "cooked_porkchop", + "roastedpork": "cooked_porkchop", + "roastpork": "cooked_porkchop", + "ropork": "cooked_porkchop", + "bbqpork": "cooked_porkchop", + "toastedpork": "cooked_porkchop", + "porkchopcooked": "cooked_porkchop", + "porkchopcook": "cooked_porkchop", + "porkchopc": "cooked_porkchop", + "porkchopgrilled": "cooked_porkchop", + "porkchopgrill": "cooked_porkchop", + "porkchopg": "cooked_porkchop", + "porkchoproasted": "cooked_porkchop", + "porkchoproast": "cooked_porkchop", + "porkchopro": "cooked_porkchop", + "porkchopbbq": "cooked_porkchop", + "porkchoptoasted": "cooked_porkchop", + "cookporkchop": "cooked_porkchop", + "cporkchop": "cooked_porkchop", + "grilledporkchop": "cooked_porkchop", + "grillporkchop": "cooked_porkchop", + "gporkchop": "cooked_porkchop", + "roastedporkchop": "cooked_porkchop", + "roastporkchop": "cooked_porkchop", + "roporkchop": "cooked_porkchop", + "bbqporkchop": "cooked_porkchop", + "toastedporkchop": "cooked_porkchop", + "cooked_rabbit": { + "material": "COOKED_RABBIT" + }, + "cookedrabbit": "cooked_rabbit", + "rabbitcooked": "cooked_rabbit", + "rabbitcook": "cooked_rabbit", + "rabbitc": "cooked_rabbit", + "rabbitgrilled": "cooked_rabbit", + "rabbitgrill": "cooked_rabbit", + "rabbitg": "cooked_rabbit", + "rabbitroasted": "cooked_rabbit", + "rabbitroast": "cooked_rabbit", + "rabbitro": "cooked_rabbit", + "rabbitbbq": "cooked_rabbit", + "rabbittoasted": "cooked_rabbit", + "cookrabbit": "cooked_rabbit", + "crabbit": "cooked_rabbit", + "grilledrabbit": "cooked_rabbit", + "grillrabbit": "cooked_rabbit", + "grabbit": "cooked_rabbit", + "roastedrabbit": "cooked_rabbit", + "roastrabbit": "cooked_rabbit", + "rorabbit": "cooked_rabbit", + "bbqrabbit": "cooked_rabbit", + "toastedrabbit": "cooked_rabbit", + "harecooked": "cooked_rabbit", + "harecook": "cooked_rabbit", + "harec": "cooked_rabbit", + "haregrilled": "cooked_rabbit", + "haregrill": "cooked_rabbit", + "hareg": "cooked_rabbit", + "hareroasted": "cooked_rabbit", + "hareroast": "cooked_rabbit", + "harero": "cooked_rabbit", + "harebbq": "cooked_rabbit", + "haretoasted": "cooked_rabbit", + "cookedhare": "cooked_rabbit", + "cookhare": "cooked_rabbit", + "chare": "cooked_rabbit", + "grilledhare": "cooked_rabbit", + "grillhare": "cooked_rabbit", + "ghare": "cooked_rabbit", + "roastedhare": "cooked_rabbit", + "roasthare": "cooked_rabbit", + "rohare": "cooked_rabbit", + "bbqhare": "cooked_rabbit", + "toastedhare": "cooked_rabbit", + "hasenpfeffercooked": "cooked_rabbit", + "hasenpfeffercook": "cooked_rabbit", + "hasenpfefferc": "cooked_rabbit", + "hasenpfeffergrilled": "cooked_rabbit", + "hasenpfeffergrill": "cooked_rabbit", + "hasenpfefferg": "cooked_rabbit", + "hasenpfefferroasted": "cooked_rabbit", + "hasenpfefferroast": "cooked_rabbit", + "hasenpfefferro": "cooked_rabbit", + "hasenpfefferbbq": "cooked_rabbit", + "hasenpfeffertoasted": "cooked_rabbit", + "cookedhasenpfeffer": "cooked_rabbit", + "cookhasenpfeffer": "cooked_rabbit", + "chasenpfeffer": "cooked_rabbit", + "grilledhasenpfeffer": "cooked_rabbit", + "grillhasenpfeffer": "cooked_rabbit", + "ghasenpfeffer": "cooked_rabbit", + "roastedhasenpfeffer": "cooked_rabbit", + "roasthasenpfeffer": "cooked_rabbit", + "rohasenpfeffer": "cooked_rabbit", + "bbqhasenpfeffer": "cooked_rabbit", + "toastedhasenpfeffer": "cooked_rabbit", + "cooked_salmon": { + "material": "COOKED_SALMON" + }, + "cookedsalmon": "cooked_salmon", + "salmoncooked": "cooked_salmon", + "salmoncook": "cooked_salmon", + "salmonc": "cooked_salmon", + "salmongrilled": "cooked_salmon", + "salmongrill": "cooked_salmon", + "salmong": "cooked_salmon", + "salmonroasted": "cooked_salmon", + "salmonroast": "cooked_salmon", + "salmonro": "cooked_salmon", + "salmonbbq": "cooked_salmon", + "salmontoasted": "cooked_salmon", + "cooksalmon": "cooked_salmon", + "csalmon": "cooked_salmon", + "grilledsalmon": "cooked_salmon", + "grillsalmon": "cooked_salmon", + "gsalmon": "cooked_salmon", + "roastedsalmon": "cooked_salmon", + "roastsalmon": "cooked_salmon", + "rosalmon": "cooked_salmon", + "bbqsalmon": "cooked_salmon", + "toastedsalmon": "cooked_salmon", + "salmonfishcooked": "cooked_salmon", + "salmonfishcook": "cooked_salmon", + "salmonfishc": "cooked_salmon", + "salmonfishgrilled": "cooked_salmon", + "salmonfishgrill": "cooked_salmon", + "salmonfishg": "cooked_salmon", + "salmonfishroasted": "cooked_salmon", + "salmonfishroast": "cooked_salmon", + "salmonfishro": "cooked_salmon", + "salmonfishbbq": "cooked_salmon", + "salmonfishtoasted": "cooked_salmon", + "cookedsalmonfish": "cooked_salmon", + "cooksalmonfish": "cooked_salmon", + "csalmonfish": "cooked_salmon", + "grilledsalmonfish": "cooked_salmon", + "grillsalmonfish": "cooked_salmon", + "gsalmonfish": "cooked_salmon", + "roastedsalmonfish": "cooked_salmon", + "roastsalmonfish": "cooked_salmon", + "rosalmonfish": "cooked_salmon", + "bbqsalmonfish": "cooked_salmon", + "toastedsalmonfish": "cooked_salmon", + "sfishcooked": "cooked_salmon", + "sfishcook": "cooked_salmon", + "sfishc": "cooked_salmon", + "sfishgrilled": "cooked_salmon", + "sfishgrill": "cooked_salmon", + "sfishg": "cooked_salmon", + "sfishroasted": "cooked_salmon", + "sfishroast": "cooked_salmon", + "sfishro": "cooked_salmon", + "sfishbbq": "cooked_salmon", + "sfishtoasted": "cooked_salmon", + "cookedsfish": "cooked_salmon", + "cooksfish": "cooked_salmon", + "csfish": "cooked_salmon", + "grilledsfish": "cooked_salmon", + "grillsfish": "cooked_salmon", + "gsfish": "cooked_salmon", + "roastedsfish": "cooked_salmon", + "roastsfish": "cooked_salmon", + "rosfish": "cooked_salmon", + "bbqsfish": "cooked_salmon", + "toastedsfish": "cooked_salmon", + "fishscooked": "cooked_salmon", + "fishscook": "cooked_salmon", + "fishsc": "cooked_salmon", + "fishsgrilled": "cooked_salmon", + "fishsgrill": "cooked_salmon", + "fishsg": "cooked_salmon", + "fishsroasted": "cooked_salmon", + "fishsroast": "cooked_salmon", + "fishsro": "cooked_salmon", + "fishsbbq": "cooked_salmon", + "fishstoasted": "cooked_salmon", + "cookedfishs": "cooked_salmon", + "cookfishs": "cooked_salmon", + "cfishs": "cooked_salmon", + "grilledfishs": "cooked_salmon", + "grillfishs": "cooked_salmon", + "gfishs": "cooked_salmon", + "roastedfishs": "cooked_salmon", + "roastfishs": "cooked_salmon", + "rofishs": "cooked_salmon", + "bbqfishs": "cooked_salmon", + "toastedfishs": "cooked_salmon", + "cookie": { + "material": "COOKIE" + }, + "cow_spawn_egg": { + "material": "COW_SPAWN_EGG" + }, + "cowspawnegg": "cow_spawn_egg", + "cowegg": "cow_spawn_egg", + "eggcow": "cow_spawn_egg", + "spawneggcow": "cow_spawn_egg", + "cowspawn": "cow_spawn_egg", + "spawncow": "cow_spawn_egg", + "cracked_stone_bricks": { + "material": "CRACKED_STONE_BRICKS" + }, + "crackedstonebricks": "cracked_stone_bricks", + "crackedstonebrick": "cracked_stone_bricks", + "crackstonebrick": "cracked_stone_bricks", + "crstonebrick": "cracked_stone_bricks", + "cstonebrick": "cracked_stone_bricks", + "crackedstonebrickblock": "cracked_stone_bricks", + "crackstonebrickblock": "cracked_stone_bricks", + "crstonebrickblock": "cracked_stone_bricks", + "cstonebrickblock": "cracked_stone_bricks", + "crackedstonebb": "cracked_stone_bricks", + "crackstonebb": "cracked_stone_bricks", + "crstonebb": "cracked_stone_bricks", + "cstonebb": "cracked_stone_bricks", + "crackedsbrick": "cracked_stone_bricks", + "cracksbrick": "cracked_stone_bricks", + "crsbrick": "cracked_stone_bricks", + "csbrick": "cracked_stone_bricks", + "crackedsbricks": "cracked_stone_bricks", + "cracksbricks": "cracked_stone_bricks", + "crsbricks": "cracked_stone_bricks", + "csbricks": "cracked_stone_bricks", + "crackedsbrickblock": "cracked_stone_bricks", + "cracksbrickblock": "cracked_stone_bricks", + "crsbrickblock": "cracked_stone_bricks", + "csbrickblock": "cracked_stone_bricks", + "crackstonebricks": "cracked_stone_bricks", + "crstonebricks": "cracked_stone_bricks", + "cstonebricks": "cracked_stone_bricks", + "crackedsbb": "cracked_stone_bricks", + "cracksbb": "cracked_stone_bricks", + "crsbb": "cracked_stone_bricks", + "csbb": "cracked_stone_bricks", + "crafting_table": { + "material": "CRAFTING_TABLE" + }, + "craftingtable": "crafting_table", + "workbench": "crafting_table", + "craftingbench": "crafting_table", + "crafterbench": "crafting_table", + "craftbench": "crafting_table", + "worktable": "crafting_table", + "craftertable": "crafting_table", + "crafttable": "crafting_table", + "wbench": "crafting_table", + "cbench": "crafting_table", + "creeper_head": { + "material": "CREEPER_HEAD" + }, + "creeperhead": "creeper_head", + "creeperskull": "creeper_head", + "headcreeper": "creeper_head", + "stevecreeper": "creeper_head", + "creepermask": "creeper_head", + "creeperheadmask": "creeper_head", + "crhead": "creeper_head", + "crskull": "creeper_head", + "headcr": "creeper_head", + "stevecr": "creeper_head", + "crmask": "creeper_head", + "crheadmask": "creeper_head", + "creeper_spawn_egg": { + "material": "CREEPER_SPAWN_EGG" + }, + "creeperspawnegg": "creeper_spawn_egg", + "creeperegg": "creeper_spawn_egg", + "eggcreeper": "creeper_spawn_egg", + "spawneggcreeper": "creeper_spawn_egg", + "creeperspawn": "creeper_spawn_egg", + "spawncreeper": "creeper_spawn_egg", + "cregg": "creeper_spawn_egg", + "eggcr": "creeper_spawn_egg", + "crspawnegg": "creeper_spawn_egg", + "spawneggcr": "creeper_spawn_egg", + "crspawn": "creeper_spawn_egg", + "spawncr": "creeper_spawn_egg", + "creeper_wall_head": { + "material": "CREEPER_WALL_HEAD", + "unspawnable": true + }, + "creeperwallhead": "creeper_wall_head", + "cut_red_sandstone": { + "material": "CUT_RED_SANDSTONE" + }, + "cutredsandstone": "cut_red_sandstone", + "srstone": "cut_red_sandstone", + "redsandstonesmooth": "cut_red_sandstone", + "smoothredsandstone": "smooth_red_sandstone", + "cutrsandstone": "cut_red_sandstone", + "cutrsandst": "cut_red_sandstone", + "cutrsastone": "cut_red_sandstone", + "cut_sandstone": { + "material": "CUT_SANDSTONE" + }, + "cutsandstone": "cut_sandstone", + "smstone": "smooth_stone", + "smoothsastone": "smooth_sandstone", + "ssandstone": "cut_sandstone", + "smsastone": "smooth_sandstone", + "ssastone": "cut_sandstone", + "cutsandst": "cut_sandstone", + "cutsastone": "cut_sandstone", + "cyan_banner": { + "material": "CYAN_BANNER" + }, + "cyanbanner": "cyan_banner", + "cstandingbanner": "cyan_banner", + "cbanner": "cyan_banner", + "cyanstandingbanner": "cyan_banner", + "cyan_bed": { + "material": "CYAN_BED" + }, + "cyanbed": "cyan_bed", + "cbed": "cyan_bed", + "cyan_carpet": { + "material": "CYAN_CARPET" + }, + "cyancarpet": "cyan_carpet", + "ccarpet": "cyan_carpet", + "cfloor": "cyan_carpet", + "cyanfloor": "cyan_carpet", + "cyan_concrete": { + "material": "CYAN_CONCRETE" + }, + "cyanconcrete": "cyan_concrete", + "cconcrete": "cyan_concrete", + "cyan_concrete_powder": { + "material": "CYAN_CONCRETE_POWDER" + }, + "cyanconcretepowder": "cyan_concrete_powder", + "cconcretepowder": "cyan_concrete_powder", + "cconcretesand": "cyan_concrete_powder", + "ccpowder": "cyan_concrete_powder", + "ccdust": "cyan_concrete_powder", + "ccp": "cyan_concrete_powder", + "cyanconcretesand": "cyan_concrete_powder", + "cyancpowder": "cyan_concrete_powder", + "cyancdust": "cyan_concrete_powder", + "cyancp": "cyan_concrete_powder", + "cyan_dye": { + "material": "CYAN_DYE" + }, + "cyandye": "cyan_dye", + "cyan_glazed_terracotta": { + "material": "CYAN_GLAZED_TERRACOTTA" + }, + "cyanglazedterracotta": "cyan_glazed_terracotta", + "cglazedtcota": "cyan_glazed_terracotta", + "cglazedterra": "cyan_glazed_terracotta", + "cglazedterracotta": "cyan_glazed_terracotta", + "cglazedterracota": "cyan_glazed_terracotta", + "cyanglazedtcota": "cyan_glazed_terracotta", + "cyanglazedterra": "cyan_glazed_terracotta", + "cyanglazedterracota": "cyan_glazed_terracotta", + "cyan_shulker_box": { + "material": "CYAN_SHULKER_BOX" + }, + "cyanshulkerbox": "cyan_shulker_box", + "cshulkerbox": "cyan_shulker_box", + "cchest": "cyan_shulker_box", + "cyanchest": "cyan_shulker_box", + "cyan_stained_glass": { + "material": "CYAN_STAINED_GLASS" + }, + "cyanstainedglass": "cyan_stained_glass", + "cglass": "cyan_stained_glass", + "csglass": "cyan_stained_glass", + "cstainedglass": "cyan_stained_glass", + "cyanglass": "cyan_stained_glass", + "cyansglass": "cyan_stained_glass", + "cyan_stained_glass_pane": { + "material": "CYAN_STAINED_GLASS_PANE" + }, + "cyanstainedglasspane": "cyan_stained_glass_pane", + "cglasspane": "cyan_stained_glass_pane", + "csglasspane": "cyan_stained_glass_pane", + "cstainedglasspane": "cyan_stained_glass_pane", + "cgpane": "cyan_stained_glass_pane", + "cyanglasspane": "cyan_stained_glass_pane", + "cyansglasspane": "cyan_stained_glass_pane", + "cyangpane": "cyan_stained_glass_pane", + "cyan_terracotta": { + "material": "CYAN_TERRACOTTA" + }, + "cyanterracotta": "cyan_terracotta", + "cclay": "cyan_terracotta", + "csclay": "cyan_terracotta", + "cstainedclay": "cyan_terracotta", + "cterra": "cyan_terracotta", + "ctcota": "cyan_terracotta", + "cterracota": "cyan_terracotta", + "cterracotta": "cyan_terracotta", + "cyanclay": "cyan_terracotta", + "cyansclay": "cyan_terracotta", + "cyanstainedclay": "cyan_terracotta", + "cyanterra": "cyan_terracotta", + "cyantcota": "cyan_terracotta", + "cyanterracota": "cyan_terracotta", + "cyan_wall_banner": { + "material": "CYAN_WALL_BANNER", + "unspawnable": true + }, + "cyanwallbanner": "cyan_wall_banner", + "cyan_wool": { + "material": "CYAN_WOOL" + }, + "cyanwool": "cyan_wool", + "cwool": "cyan_wool", + "ccloth": "cyan_wool", + "ccotton": "cyan_wool", + "cyancloth": "cyan_wool", + "cyancotton": "cyan_wool", + "damaged_anvil": { + "material": "DAMAGED_ANVIL" + }, + "damagedanvil": "damaged_anvil", + "verydamagedanvil": "damaged_anvil", + "dandelion": { + "material": "DANDELION" + }, + "yellowdandelion": "dandelion", + "ydandelion": "dandelion", + "yellowflower": "dandelion", + "yflower": "dandelion", + "flower": "dandelion", + "dandelion_yellow": { + "material": "DANDELION_YELLOW" + }, + "dandelionyellow": "dandelion_yellow", + "dark_oak_boat": { + "material": "DARK_OAK_BOAT" + }, + "darkoakboat": "dark_oak_boat", + "doakboat": "dark_oak_boat", + "doboat": "dark_oak_boat", + "dark_oak_button": { + "material": "DARK_OAK_BUTTON" + }, + "darkoakbutton": "dark_oak_button", + "dark_oak_door": { + "material": "DARK_OAK_DOOR" + }, + "darkoakdoor": "dark_oak_door", + "dark_oak_fence": { + "material": "DARK_OAK_FENCE" + }, + "darkoakfence": "dark_oak_fence", + "doakfence": "dark_oak_fence", + "dofence": "dark_oak_fence", + "dark_oak_fence_gate": { + "material": "DARK_OAK_FENCE_GATE" + }, + "darkoakfencegate": "dark_oak_fence_gate", + "darkoakgate": "dark_oak_fence_gate", + "doakfencegate": "dark_oak_fence_gate", + "doakgate": "dark_oak_fence_gate", + "dofencegate": "dark_oak_fence_gate", + "dogate": "dark_oak_fence_gate", + "dark_oak_leaves": { + "material": "DARK_OAK_LEAVES" + }, + "darkoakleaves": "dark_oak_leaves", + "darkoaktreeleaves": "dark_oak_leaves", + "darkoaklogleaves": "dark_oak_leaves", + "darkoaktrunkleaves": "dark_oak_leaves", + "darkoakwoodleaves": "dark_oak_leaves", + "darkoaktreeleaf": "dark_oak_leaves", + "darkoaklogleaf": "dark_oak_leaves", + "darkoaktrunkleaf": "dark_oak_leaves", + "darkoakwoodleaf": "dark_oak_leaves", + "darkoakleaf": "dark_oak_leaves", + "darkoaktreeleave": "dark_oak_leaves", + "darkoaklogleave": "dark_oak_leaves", + "darkoaktrunkleave": "dark_oak_leaves", + "darkoakwoodleave": "dark_oak_leaves", + "darkoakleave": "dark_oak_leaves", + "doaktreeleaves": "dark_oak_leaves", + "doaklogleaves": "dark_oak_leaves", + "doaktrunkleaves": "dark_oak_leaves", + "doakwoodleaves": "dark_oak_leaves", + "doakleaves": "dark_oak_leaves", + "doaktreeleaf": "dark_oak_leaves", + "doaklogleaf": "dark_oak_leaves", + "doaktrunkleaf": "dark_oak_leaves", + "doakwoodleaf": "dark_oak_leaves", + "doakleaf": "dark_oak_leaves", + "doaktreeleave": "dark_oak_leaves", + "doaklogleave": "dark_oak_leaves", + "doaktrunkleave": "dark_oak_leaves", + "doakwoodleave": "dark_oak_leaves", + "doakleave": "dark_oak_leaves", + "dotreeleaves": "dark_oak_leaves", + "dologleaves": "dark_oak_leaves", + "dotrunkleaves": "dark_oak_leaves", + "dowoodleaves": "dark_oak_leaves", + "doleaves": "dark_oak_leaves", + "dotreeleaf": "dark_oak_leaves", + "dologleaf": "dark_oak_leaves", + "dotrunkleaf": "dark_oak_leaves", + "dowoodleaf": "dark_oak_leaves", + "doleaf": "dark_oak_leaves", + "dotreeleave": "dark_oak_leaves", + "dologleave": "dark_oak_leaves", + "dotrunkleave": "dark_oak_leaves", + "dowoodleave": "dark_oak_leaves", + "doleave": "dark_oak_leaves", + "dark_oak_log": { + "material": "DARK_OAK_LOG" + }, + "darkoaklog": "dark_oak_log", + "darkoak": "dark_oak_log", + "logdarkoak": "dark_oak_log", + "darkoaktrunk": "dark_oak_log", + "darkoaktree": "dark_oak_log", + "doak": "dark_oak_log", + "logdoak": "dark_oak_log", + "doaktrunk": "dark_oak_log", + "doaklog": "dark_oak_log", + "doaktree": "dark_oak_log", + "do": "diamond_ore", + "logdo": "dark_oak_log", + "dotrunk": "dark_oak_log", + "dolog": "dark_oak_log", + "dotree": "dark_oak_log", + "dark_oak_planks": { + "material": "DARK_OAK_PLANKS" + }, + "darkoakplanks": "dark_oak_planks", + "darkoakwoodenplank": "dark_oak_planks", + "darkoakwoodplank": "dark_oak_planks", + "darkoakwplank": "dark_oak_planks", + "darkoakplankwooden": "dark_oak_planks", + "darkoakplankwood": "dark_oak_planks", + "darkoakplankw": "dark_oak_planks", + "darkoakplank": "dark_oak_planks", + "doakwoodenplank": "dark_oak_planks", + "doakwoodplank": "dark_oak_planks", + "doakwplank": "dark_oak_planks", + "doakplankwooden": "dark_oak_planks", + "doakplankwood": "dark_oak_planks", + "doakplankw": "dark_oak_planks", + "doakplank": "dark_oak_planks", + "dowoodenplank": "dark_oak_planks", + "dowoodplank": "dark_oak_planks", + "dowplank": "dark_oak_planks", + "doplankwooden": "dark_oak_planks", + "doplankwood": "dark_oak_planks", + "doplankw": "dark_oak_planks", + "doplank": "dark_oak_planks", + "dark_oak_pressure_plate": { + "material": "DARK_OAK_PRESSURE_PLATE" + }, + "darkoakpressureplate": "dark_oak_pressure_plate", + "dark_oak_sapling": { + "material": "DARK_OAK_SAPLING" + }, + "darkoaksapling": "dark_oak_sapling", + "darkoaktreesapling": "dark_oak_sapling", + "darkoaklogsapling": "dark_oak_sapling", + "darkoaktrunksapling": "dark_oak_sapling", + "darkoakwoodsapling": "dark_oak_sapling", + "doaksapling": "dark_oak_sapling", + "doaktreesapling": "dark_oak_sapling", + "doaklogsapling": "dark_oak_sapling", + "doaktrunksapling": "dark_oak_sapling", + "doakwoodsapling": "dark_oak_sapling", + "dosapling": "dark_oak_sapling", + "dotreesapling": "dark_oak_sapling", + "dologsapling": "dark_oak_sapling", + "dotrunksapling": "dark_oak_sapling", + "dowoodsapling": "dark_oak_sapling", + "dark_oak_slab": { + "material": "DARK_OAK_SLAB" + }, + "darkoakslab": "dark_oak_slab", + "darkoakwoodenstep": "dark_oak_slab", + "darkoakwoodstep": "dark_oak_slab", + "darkoakwstep": "dark_oak_slab", + "darkoakstep": "dark_oak_slab", + "darkoakwoodenslab": "dark_oak_slab", + "darkoakwoodslab": "dark_oak_slab", + "darkoakwslab": "dark_oak_slab", + "darkoakwoodenhalfblock": "dark_oak_slab", + "darkoakwoodhalfblock": "dark_oak_slab", + "darkoakwhalfblock": "dark_oak_slab", + "darkoakhalfblock": "dark_oak_slab", + "doakwoodenstep": "dark_oak_slab", + "doakwoodstep": "dark_oak_slab", + "doakwstep": "dark_oak_slab", + "doakstep": "dark_oak_slab", + "doakwoodenslab": "dark_oak_slab", + "doakwoodslab": "dark_oak_slab", + "doakwslab": "dark_oak_slab", + "doakwoodenhalfblock": "dark_oak_slab", + "doakwoodhalfblock": "dark_oak_slab", + "doakwhalfblock": "dark_oak_slab", + "doakhalfblock": "dark_oak_slab", + "dowoodenstep": "dark_oak_slab", + "dowoodstep": "dark_oak_slab", + "dowstep": "dark_oak_slab", + "dostep": "dark_oak_slab", + "dowoodenslab": "dark_oak_slab", + "dowoodslab": "dark_oak_slab", + "dowslab": "dark_oak_slab", + "dowoodenhalfblock": "dark_oak_slab", + "dowoodhalfblock": "dark_oak_slab", + "dowhalfblock": "dark_oak_slab", + "dohalfblock": "dark_oak_slab", + "dark_oak_stairs": { + "material": "DARK_OAK_STAIRS" + }, + "darkoakstairs": "dark_oak_stairs", + "darkoakwoodenstairs": "dark_oak_stairs", + "darkoakwoodstairs": "dark_oak_stairs", + "darkoakwstairs": "dark_oak_stairs", + "darkoakwoodenstair": "dark_oak_stairs", + "darkoakwoodstair": "dark_oak_stairs", + "darkoakwstair": "dark_oak_stairs", + "darkoakstair": "dark_oak_stairs", + "doakwoodenstairs": "dark_oak_stairs", + "doakwoodstairs": "dark_oak_stairs", + "doakwstairs": "dark_oak_stairs", + "doakwoodenstair": "dark_oak_stairs", + "doakwoodstair": "dark_oak_stairs", + "doakwstair": "dark_oak_stairs", + "doakstair": "dark_oak_stairs", + "dowoodenstairs": "dark_oak_stairs", + "dowoodstairs": "dark_oak_stairs", + "dowstairs": "dark_oak_stairs", + "dowoodenstair": "dark_oak_stairs", + "dowoodstair": "dark_oak_stairs", + "dowstair": "dark_oak_stairs", + "dostair": "dark_oak_stairs", + "dark_oak_trapdoor": { + "material": "DARK_OAK_TRAPDOOR" + }, + "darkoaktrapdoor": "dark_oak_trapdoor", + "darkoakdoortrap": "dark_oak_trapdoor", + "darkoakhatch": "dark_oak_trapdoor", + "darkoaktdoor": "dark_oak_trapdoor", + "darkoakdoort": "dark_oak_trapdoor", + "darkoaktrapd": "dark_oak_trapdoor", + "darkoakdtrap": "dark_oak_trapdoor", + "doaktrapdoor": "dark_oak_trapdoor", + "doakdoortrap": "dark_oak_trapdoor", + "doakhatch": "dark_oak_trapdoor", + "doaktdoor": "dark_oak_trapdoor", + "doakdoort": "dark_oak_trapdoor", + "doaktrapd": "dark_oak_trapdoor", + "doakdtrap": "dark_oak_trapdoor", + "dotrapdoor": "dark_oak_trapdoor", + "dodoortrap": "dark_oak_trapdoor", + "dohatch": "dark_oak_trapdoor", + "dotdoor": "dark_oak_trapdoor", + "dodoort": "dark_oak_trapdoor", + "dotrapd": "dark_oak_trapdoor", + "dodtrap": "dark_oak_trapdoor", + "dark_oak_wood": { + "material": "DARK_OAK_WOOD" + }, + "darkoakwood": "dark_oak_wood", + "darkoaklogall": "dark_oak_wood", + "darkoaktrunkall": "dark_oak_wood", + "darkoaktreeall": "dark_oak_wood", + "doakwood": "dark_oak_wood", + "doaklogall": "dark_oak_wood", + "doaktrunkall": "dark_oak_wood", + "doaktreeall": "dark_oak_wood", + "dowood": "dark_oak_wood", + "dologall": "dark_oak_wood", + "dotrunkall": "dark_oak_wood", + "dotreeall": "dark_oak_wood", + "dark_prismarine": { + "material": "DARK_PRISMARINE" + }, + "darkprismarine": "dark_prismarine", + "dark_prismarine_slab": { + "material": "DARK_PRISMARINE_SLAB" + }, + "darkprismarineslab": "dark_prismarine_slab", + "darkprismarinesl": "dark_prismarine_slab", + "dprismarineslab": "dark_prismarine_slab", + "dprismarinesl": "dark_prismarine_slab", + "darkprisslab": "dark_prismarine_slab", + "darkprissl": "dark_prismarine_slab", + "dprisslab": "dark_prismarine_slab", + "dprissl": "dark_prismarine_slab", + "darkseaslab": "dark_prismarine_slab", + "darkseasl": "dark_prismarine_slab", + "dseaslab": "dark_prismarine_slab", + "dseasl": "dark_prismarine_slab", + "dark_prismarine_stairs": { + "material": "DARK_PRISMARINE_STAIRS" + }, + "darkprismarinestairs": "dark_prismarine_stairs", + "darkprismarinestair": "dark_prismarine_stairs", + "darkprismarinest": "dark_prismarine_stairs", + "dprismarinestairs": "dark_prismarine_stairs", + "dprismarinestair": "dark_prismarine_stairs", + "dprismarinest": "dark_prismarine_stairs", + "darkprisstairs": "dark_prismarine_stairs", + "darkprisstair": "dark_prismarine_stairs", + "darkprisst": "dark_prismarine_stairs", + "dprisstairs": "dark_prismarine_stairs", + "dprisstair": "dark_prismarine_stairs", + "dprisst": "dark_prismarine_stairs", + "darkseastairs": "dark_prismarine_stairs", + "darkseastair": "dark_prismarine_stairs", + "darkseast": "dark_prismarine_stairs", + "dseastairs": "dark_prismarine_stairs", + "dseastair": "dark_prismarine_stairs", + "dseast": "dark_prismarine_stairs", + "daylight_detector": { + "material": "DAYLIGHT_DETECTOR" + }, + "daylightdetector": "daylight_detector", + "daylightsensor": "daylight_detector", + "daylightsense": "daylight_detector", + "lightsensor": "daylight_detector", + "lightsense": "daylight_detector", + "daysensor": "daylight_detector", + "daysense": "daylight_detector", + "timesensor": "daylight_detector", + "timesense": "daylight_detector", + "dead_brain_coral": { + "material": "DEAD_BRAIN_CORAL" + }, + "deadbraincoral": "dead_brain_coral", + "dead_brain_coral_block": { + "material": "DEAD_BRAIN_CORAL_BLOCK" + }, + "deadbraincoralblock": "dead_brain_coral_block", + "dead_brain_coral_fan": { + "material": "DEAD_BRAIN_CORAL_FAN" + }, + "deadbraincoralfan": "dead_brain_coral_fan", + "dead_brain_coral_wall_fan": { + "material": "DEAD_BRAIN_CORAL_WALL_FAN", + "unspawnable": true + }, + "deadbraincoralwallfan": "dead_brain_coral_wall_fan", + "dead_bubble_coral": { + "material": "DEAD_BUBBLE_CORAL" + }, + "deadbubblecoral": "dead_bubble_coral", + "dead_bubble_coral_block": { + "material": "DEAD_BUBBLE_CORAL_BLOCK" + }, + "deadbubblecoralblock": "dead_bubble_coral_block", + "dead_bubble_coral_fan": { + "material": "DEAD_BUBBLE_CORAL_FAN" + }, + "deadbubblecoralfan": "dead_bubble_coral_fan", + "dead_bubble_coral_wall_fan": { + "material": "DEAD_BUBBLE_CORAL_WALL_FAN", + "unspawnable": true + }, + "deadbubblecoralwallfan": "dead_bubble_coral_wall_fan", + "dead_bush": { + "material": "DEAD_BUSH" + }, + "deadbush": "dead_bush", + "bush": "dead_bush", + "deadshrub": "dead_bush", + "dshrub": "dead_bush", + "dbush": "dead_bush", + "deadsapling": "dead_bush", + "dead_fire_coral": { + "material": "DEAD_FIRE_CORAL" + }, + "deadfirecoral": "dead_fire_coral", + "dead_fire_coral_block": { + "material": "DEAD_FIRE_CORAL_BLOCK" + }, + "deadfirecoralblock": "dead_fire_coral_block", + "dead_fire_coral_fan": { + "material": "DEAD_FIRE_CORAL_FAN" + }, + "deadfirecoralfan": "dead_fire_coral_fan", + "dead_fire_coral_wall_fan": { + "material": "DEAD_FIRE_CORAL_WALL_FAN", + "unspawnable": true + }, + "deadfirecoralwallfan": "dead_fire_coral_wall_fan", + "dead_horn_coral": { + "material": "DEAD_HORN_CORAL" + }, + "deadhorncoral": "dead_horn_coral", + "dead_horn_coral_block": { + "material": "DEAD_HORN_CORAL_BLOCK" + }, + "deadhorncoralblock": "dead_horn_coral_block", + "dead_horn_coral_fan": { + "material": "DEAD_HORN_CORAL_FAN" + }, + "deadhorncoralfan": "dead_horn_coral_fan", + "dead_horn_coral_wall_fan": { + "material": "DEAD_HORN_CORAL_WALL_FAN", + "unspawnable": true + }, + "deadhorncoralwallfan": "dead_horn_coral_wall_fan", + "dead_tube_coral": { + "material": "DEAD_TUBE_CORAL" + }, + "deadtubecoral": "dead_tube_coral", + "dead_tube_coral_block": { + "material": "DEAD_TUBE_CORAL_BLOCK" + }, + "deadtubecoralblock": "dead_tube_coral_block", + "dead_tube_coral_fan": { + "material": "DEAD_TUBE_CORAL_FAN" + }, + "deadtubecoralfan": "dead_tube_coral_fan", + "dead_tube_coral_wall_fan": { + "material": "DEAD_TUBE_CORAL_WALL_FAN", + "unspawnable": true + }, + "deadtubecoralwallfan": "dead_tube_coral_wall_fan", + "debug_stick": { + "material": "DEBUG_STICK" + }, + "debugstick": "debug_stick", + "detector_rail": { + "material": "DETECTOR_RAIL" + }, + "detectorrail": "detector_rail", + "detectorrails": "detector_rail", + "detectortrack": "detector_rail", + "detectingrails": "detector_rail", + "detectingrail": "detector_rail", + "detectingtrack": "detector_rail", + "detectrails": "detector_rail", + "detectrail": "detector_rail", + "detecttrack": "detector_rail", + "drails": "detector_rail", + "drail": "detector_rail", + "dtrack": "detector_rail", + "diamond": { + "material": "DIAMOND" + }, + "diamond_axe": { + "material": "DIAMOND_AXE" + }, + "diamondaxe": "diamond_axe", + "crystalaxe": "diamond_axe", + "daxe": "diamond_axe", + "diamond_block": { + "material": "DIAMOND_BLOCK" + }, + "diamondblock": "diamond_block", + "crystalblock": "diamond_block", + "blockcrystal": "diamond_block", + "blockdiamond": "diamond_block", + "dblock": "diamond_block", + "blockd": "diamond_block", + "diamond_boots": { + "material": "DIAMOND_BOOTS" + }, + "diamondboots": "diamond_boots", + "crystalboots": "diamond_boots", + "crystalshoes": "diamond_boots", + "diamondshoes": "diamond_boots", + "dboots": "diamond_boots", + "dshoes": "diamond_boots", + "diamond_chestplate": { + "material": "DIAMOND_CHESTPLATE" + }, + "diamondchestplate": "diamond_chestplate", + "crystalchestplate": "diamond_chestplate", + "crystalplatebody": "diamond_chestplate", + "crystalplate": "diamond_chestplate", + "crystalshirt": "diamond_chestplate", + "crystaltunic": "diamond_chestplate", + "diamondplatebody": "diamond_chestplate", + "diamondplate": "diamond_chestplate", + "diamondshirt": "diamond_chestplate", + "diamondtunic": "diamond_chestplate", + "dchestplate": "diamond_chestplate", + "dplatebody": "diamond_chestplate", + "dplate": "diamond_chestplate", + "dshirt": "diamond_chestplate", + "dtunic": "diamond_chestplate", + "diamond_helmet": { + "material": "DIAMOND_HELMET" + }, + "diamondhelmet": "diamond_helmet", + "crystalhelmet": "diamond_helmet", + "crystalhelm": "diamond_helmet", + "crystalhat": "diamond_helmet", + "crystalcoif": "diamond_helmet", + "diamondhelm": "diamond_helmet", + "diamondhat": "diamond_helmet", + "diamondcoif": "diamond_helmet", + "dhelmet": "diamond_helmet", + "dhelm": "diamond_helmet", + "dhat": "diamond_helmet", + "dcoif": "diamond_helmet", + "diamond_hoe": { + "material": "DIAMOND_HOE" + }, + "diamondhoe": "diamond_hoe", + "crystalhoe": "diamond_hoe", + "dhoe": "diamond_hoe", + "diamond_horse_armor": { + "material": "DIAMOND_HORSE_ARMOR" + }, + "diamondhorsearmor": "diamond_horse_armor", + "crystalhorsearmor": "diamond_horse_armor", + "crystalharmor": "diamond_horse_armor", + "crystalarmor": "diamond_horse_armor", + "diamondharmor": "diamond_horse_armor", + "diamondarmor": "diamond_horse_armor", + "dhorsearmor": "diamond_horse_armor", + "dharmor": "diamond_horse_armor", + "darmor": "diamond_horse_armor", + "diamond_leggings": { + "material": "DIAMOND_LEGGINGS" + }, + "diamondleggings": "diamond_leggings", + "crystalleggings": "diamond_leggings", + "crystallegs": "diamond_leggings", + "crystalpants": "diamond_leggings", + "diamondlegs": "diamond_leggings", + "diamondpants": "diamond_leggings", + "dleggings": "diamond_leggings", + "dlegs": "diamond_leggings", + "dpants": "diamond_leggings", + "diamond_ore": { + "material": "DIAMOND_ORE" + }, + "diamondore": "diamond_ore", + "crystalore": "diamond_ore", + "crystalo": "diamond_ore", + "orecrystal": "diamond_ore", + "ocrystal": "diamond_ore", + "diamondo": "diamond_ore", + "orediamond": "diamond_ore", + "odiamond": "diamond_ore", + "dore": "diamond_ore", + "ored": "redstone_ore", + "od": "diamond_ore", + "diamond_pickaxe": { + "material": "DIAMOND_PICKAXE" + }, + "diamondpickaxe": "diamond_pickaxe", + "crystalpickaxe": "diamond_pickaxe", + "crystalpick": "diamond_pickaxe", + "diamondpick": "diamond_pickaxe", + "dpickaxe": "diamond_pickaxe", + "dpick": "diamond_pickaxe", + "diamond_shovel": { + "material": "DIAMOND_SHOVEL" + }, + "diamondshovel": "diamond_shovel", + "crystalshovel": "diamond_shovel", + "crystalspade": "diamond_shovel", + "diamondspade": "diamond_shovel", + "dshovel": "diamond_shovel", + "dspade": "diamond_shovel", + "diamond_sword": { + "material": "DIAMOND_SWORD" + }, + "diamondsword": "diamond_sword", + "crystalsword": "diamond_sword", + "dsword": "diamond_sword", + "diorite": { + "material": "DIORITE" + }, + "dstone": "diorite", + "dirt": { + "material": "DIRT" + }, + "earth": "dirt", + "land": "dirt", + "dispenser": { + "material": "DISPENSER" + }, + "dispense": "dispenser", + "dolphin_spawn_egg": { + "material": "DOLPHIN_SPAWN_EGG" + }, + "dolphinspawnegg": "dolphin_spawn_egg", + "dolphinegg": "dolphin_spawn_egg", + "eggdolphin": "dolphin_spawn_egg", + "spawneggdolphin": "dolphin_spawn_egg", + "dolphinspawn": "dolphin_spawn_egg", + "spawndolphin": "dolphin_spawn_egg", + "eccoegg": "dolphin_spawn_egg", + "eggecco": "dolphin_spawn_egg", + "eccospawnegg": "dolphin_spawn_egg", + "spawneggecco": "dolphin_spawn_egg", + "eccospawn": "dolphin_spawn_egg", + "spawnecco": "dolphin_spawn_egg", + "donkey_spawn_egg": { + "material": "DONKEY_SPAWN_EGG" + }, + "donkeyspawnegg": "donkey_spawn_egg", + "donkeyegg": "donkey_spawn_egg", + "eggdonkey": "donkey_spawn_egg", + "spawneggdonkey": "donkey_spawn_egg", + "donkeyspawn": "donkey_spawn_egg", + "spawndonkey": "donkey_spawn_egg", + "dragon_breath": { + "material": "DRAGON_BREATH" + }, + "dragonbreath": "dragon_breath", + "dragon_egg": { + "material": "DRAGON_EGG" + }, + "dragonegg": "dragon_egg", + "enderdragonegg": "dragon_egg", + "endegg": "dragon_egg", + "degg": "dragon_egg", + "bossegg": "dragon_egg", + "begg": "dragon_egg", + "dragon_head": { + "material": "DRAGON_HEAD" + }, + "dragonhead": "dragon_head", + "dragonskull": "dragon_head", + "headdragon": "dragon_head", + "stevedragon": "dragon_head", + "dragonmask": "dragon_head", + "dragonheadmask": "dragon_head", + "dragon_wall_head": { + "material": "DRAGON_WALL_HEAD", + "unspawnable": true + }, + "dragonwallhead": "dragon_wall_head", + "dried_kelp": { + "material": "DRIED_KELP" + }, + "driedkelp": "dried_kelp", + "dried_kelp_block": { + "material": "DRIED_KELP_BLOCK" + }, + "driedkelpblock": "dried_kelp_block", + "dropper": { + "material": "DROPPER" + }, + "drowned_spawn_egg": { + "material": "DROWNED_SPAWN_EGG" + }, + "drownedspawnegg": "drowned_spawn_egg", + "drownedegg": "drowned_spawn_egg", + "eggdrowned": "drowned_spawn_egg", + "spawneggdrowned": "drowned_spawn_egg", + "drownedspawn": "drowned_spawn_egg", + "spawndrowned": "drowned_spawn_egg", + "egg": { + "material": "EGG" + }, + "elder_guardian_spawn_egg": { + "material": "ELDER_GUARDIAN_SPAWN_EGG" + }, + "elderguardianspawnegg": "elder_guardian_spawn_egg", + "elderguardianegg": "elder_guardian_spawn_egg", + "eggelderguardian": "elder_guardian_spawn_egg", + "spawneggelderguardian": "elder_guardian_spawn_egg", + "elderguardianspawn": "elder_guardian_spawn_egg", + "spawnelderguardian": "elder_guardian_spawn_egg", + "eguardianegg": "elder_guardian_spawn_egg", + "eggeguardian": "elder_guardian_spawn_egg", + "eguardianspawnegg": "elder_guardian_spawn_egg", + "spawneggeguardian": "elder_guardian_spawn_egg", + "eguardianspawn": "elder_guardian_spawn_egg", + "spawneguardian": "elder_guardian_spawn_egg", + "elytra": { + "material": "ELYTRA" + }, + "hangglider": "elytra", + "glider": "elytra", + "wings": "elytra", + "wing": "elytra", + "playerwings": "elytra", + "playerwing": "elytra", + "pwings": "elytra", + "pwing": "elytra", + "emerald": { + "material": "EMERALD" + }, + "emerald_block": { + "material": "EMERALD_BLOCK" + }, + "emeraldblock": "emerald_block", + "blockemerald": "emerald_block", + "eblock": "emerald_block", + "blocke": "emerald_block", + "emerald_ore": { + "material": "EMERALD_ORE" + }, + "emeraldore": "emerald_ore", + "emeraldo": "emerald_ore", + "oreemerald": "emerald_ore", + "oemerald": "emerald_ore", + "eore": "emerald_ore", + "eo": "emerald_ore", + "oree": "emerald_ore", + "oe": "emerald_ore", + "enchanted_book": { + "material": "ENCHANTED_BOOK" + }, + "enchantedbook": "enchanted_book", + "enchanted_golden_apple": { + "material": "ENCHANTED_GOLDEN_APPLE" + }, + "enchantedgoldenapple": "enchanted_golden_apple", + "notchapple": "enchanted_golden_apple", + "godapple": "enchanted_golden_apple", + "enchgoldapple": "enchanted_golden_apple", + "enchanting_table": { + "material": "ENCHANTING_TABLE" + }, + "enchantingtable": "enchanting_table", + "enchantmenttable": "enchanting_table", + "enchanttable": "enchanting_table", + "etable": "enchanting_table", + "magicaltable": "enchanting_table", + "magictable": "enchanting_table", + "mtable": "enchanting_table", + "enchantmentdesk": "enchanting_table", + "enchantingdesk": "enchanting_table", + "enchantdesk": "enchanting_table", + "edesk": "enchanting_table", + "magicaldesk": "enchanting_table", + "magicdesk": "enchanting_table", + "mdesk": "enchanting_table", + "booktable": "enchanting_table", + "bookdesk": "enchanting_table", + "btable": "enchanting_table", + "bdesk": "enchanting_table", + "enderman_spawn_egg": { + "material": "ENDERMAN_SPAWN_EGG" + }, + "endermanspawnegg": "enderman_spawn_egg", + "endermanegg": "enderman_spawn_egg", + "eggenderman": "enderman_spawn_egg", + "spawneggenderman": "enderman_spawn_egg", + "endermanspawn": "enderman_spawn_egg", + "spawnenderman": "enderman_spawn_egg", + "endermite_spawn_egg": { + "material": "ENDERMITE_SPAWN_EGG" + }, + "endermitespawnegg": "endermite_spawn_egg", + "endermiteegg": "endermite_spawn_egg", + "eggendermite": "endermite_spawn_egg", + "spawneggendermite": "endermite_spawn_egg", + "endermitespawn": "endermite_spawn_egg", + "spawnendermite": "endermite_spawn_egg", + "ender_chest": { + "material": "ENDER_CHEST" + }, + "enderchest": "ender_chest", + "endchest": "ender_chest", + "echest": "ender_chest", + "chestender": "ender_chest", + "chestend": "ender_chest", + "cheste": "ender_chest", + "endercontainer": "ender_chest", + "endcontainer": "ender_chest", + "econtainer": "ender_chest", + "ender_eye": { + "material": "ENDER_EYE" + }, + "endereye": "ender_eye", + "ender_pearl": { + "material": "ENDER_PEARL" + }, + "enderpearl": "ender_pearl", + "end_crystal": { + "material": "END_CRYSTAL" + }, + "endcrystal": "end_crystal", + "end_gateway": { + "material": "END_GATEWAY", + "unspawnable": true + }, + "endgateway": "end_gateway", + "end_portal": { + "material": "END_PORTAL", + "unspawnable": true + }, + "endportal": "end_portal", + "endergoo": "end_portal", + "enderportal": "end_portal", + "endgoo": "end_portal", + "eportal": "end_portal", + "egoo": "end_portal", + "end_portal_frame": { + "material": "END_PORTAL_FRAME" + }, + "endportalframe": "end_portal_frame", + "endergooframe": "end_portal_frame", + "enderportalframe": "end_portal_frame", + "endgooframe": "end_portal_frame", + "eportalframe": "end_portal_frame", + "egooframe": "end_portal_frame", + "enderframe": "end_portal_frame", + "endframe": "end_portal_frame", + "end_rod": { + "material": "END_ROD" + }, + "endrod": "end_rod", + "end_stone": { + "material": "END_STONE" + }, + "endstone": "end_stone", + "enderstone": "end_stone", + "endrock": "end_stone", + "enderrock": "end_stone", + "erock": "end_stone", + "estone": "end_stone", + "end_stone_bricks": { + "material": "END_STONE_BRICKS" + }, + "endstonebricks": "end_stone_bricks", + "evoker_spawn_egg": { + "material": "EVOKER_SPAWN_EGG" + }, + "evokerspawnegg": "evoker_spawn_egg", + "evokeregg": "evoker_spawn_egg", + "eggevoker": "evoker_spawn_egg", + "spawneggevoker": "evoker_spawn_egg", + "evokerspawn": "evoker_spawn_egg", + "spawnevoker": "evoker_spawn_egg", + "experience_bottle": { + "material": "EXPERIENCE_BOTTLE" + }, + "experiencebottle": "experience_bottle", + "farmland": { + "material": "FARMLAND" + }, + "feather": { + "material": "FEATHER" + }, + "fermented_spider_eye": { + "material": "FERMENTED_SPIDER_EYE" + }, + "fermentedspidereye": "fermented_spider_eye", + "fern": { + "material": "FERN" + }, + "filled_map": { + "material": "FILLED_MAP" + }, + "filledmap": "filled_map", + "fire": { + "material": "FIRE", + "unspawnable": true + }, + "firework_rocket": { + "material": "FIREWORK_ROCKET" + }, + "fireworkrocket": "firework_rocket", + "firework_star": { + "material": "FIREWORK_STAR" + }, + "fireworkstar": "firework_star", + "fire_charge": { + "material": "FIRE_CHARGE" + }, + "firecharge": "fire_charge", + "fire_coral": { + "material": "FIRE_CORAL" + }, + "firecoral": "fire_coral", + "fire_coral_block": { + "material": "FIRE_CORAL_BLOCK" + }, + "firecoralblock": "fire_coral_block", + "fire_coral_fan": { + "material": "FIRE_CORAL_FAN" + }, + "firecoralfan": "fire_coral_fan", + "fire_coral_wall_fan": { + "material": "FIRE_CORAL_WALL_FAN", + "unspawnable": true + }, + "firecoralwallfan": "fire_coral_wall_fan", + "fishing_rod": { + "material": "FISHING_ROD" + }, + "fishingrod": "fishing_rod", + "flint": { + "material": "FLINT" + }, + "flint_and_steel": { + "material": "FLINT_AND_STEEL" + }, + "flintandsteel": "flint_and_steel", + "flower_pot": { + "material": "FLOWER_POT" + }, + "flowerpot": "flower_pot", + "frosted_ice": { + "material": "FROSTED_ICE", + "unspawnable": true + }, + "frostedice": "frosted_ice", + "furnace": { + "material": "FURNACE" + }, + "furnace_minecart": { + "material": "FURNACE_MINECART" + }, + "furnaceminecart": "furnace_minecart", + "engineminecart": "furnace_minecart", + "enginemcart": "furnace_minecart", + "enginemc": "furnace_minecart", + "enginecart": "furnace_minecart", + "poweredminecart": "furnace_minecart", + "poweredmcart": "furnace_minecart", + "poweredmc": "furnace_minecart", + "poweredcart": "furnace_minecart", + "powerminecart": "furnace_minecart", + "powermcart": "furnace_minecart", + "powermc": "furnace_minecart", + "powercart": "furnace_minecart", + "furnacemcart": "furnace_minecart", + "furnacemc": "furnace_minecart", + "furnacecart": "furnace_minecart", + "eminecart": "furnace_minecart", + "emcart": "furnace_minecart", + "emc": "furnace_minecart", + "ecart": "furnace_minecart", + "pminecart": "furnace_minecart", + "pmcart": "furnace_minecart", + "pmc": "furnace_minecart", + "pcart": "furnace_minecart", + "fminecart": "furnace_minecart", + "fmcart": "furnace_minecart", + "fmc": "furnace_minecart", + "fcart": "furnace_minecart", + "ghast_spawn_egg": { + "material": "GHAST_SPAWN_EGG" + }, + "ghastspawnegg": "ghast_spawn_egg", + "ghastegg": "ghast_spawn_egg", + "eggghast": "ghast_spawn_egg", + "spawneggghast": "ghast_spawn_egg", + "ghastspawn": "ghast_spawn_egg", + "spawnghast": "ghast_spawn_egg", + "ghast_tear": { + "material": "GHAST_TEAR" + }, + "ghasttear": "ghast_tear", + "glass": { + "material": "GLASS" + }, + "blockglass": "glass", + "glassblock": "glass", + "glass_bottle": { + "material": "GLASS_BOTTLE" + }, + "glassbottle": "glass_bottle", + "glass_pane": { + "material": "GLASS_PANE" + }, + "glasspane": "glass_pane", + "glassp": "glass_pane", + "paneglass": "glass_pane", + "pglass": "glass_pane", + "flatglass": "glass_pane", + "fglass": "glass_pane", + "skinnyglass": "glass_pane", + "glassflat": "glass_pane", + "glassf": "glass_pane", + "glassskinny": "glass_pane", + "glasss": "glass_pane", + "glistering_melon_slice": { + "material": "GLISTERING_MELON_SLICE" + }, + "glisteringmelonslice": "glistering_melon_slice", + "glowstone": { + "material": "GLOWSTONE" + }, + "glowingstoneblock": "glowstone", + "lightstoneblock": "glowstone", + "glowstoneblock": "glowstone", + "blockglowingstone": "glowstone", + "blocklightstone": "glowstone", + "blockglowstone": "glowstone", + "glowingstone": "glowstone", + "lightstone": "glowstone", + "glowingblock": "glowstone", + "lightblock": "glowstone", + "glowblock": "glowstone", + "lstone": "glowstone", + "glowstone_dust": { + "material": "GLOWSTONE_DUST" + }, + "glowstonedust": "glowstone_dust", + "golden_apple": { + "material": "GOLDEN_APPLE" + }, + "goldenapple": "golden_apple", + "goldapple": "golden_apple", + "newgoldapple": "golden_apple", + "notnotchapple": "golden_apple", + "golden_axe": { + "material": "GOLDEN_AXE" + }, + "goldenaxe": "golden_axe", + "goldaxe": "golden_axe", + "gaxe": "golden_axe", + "golden_boots": { + "material": "GOLDEN_BOOTS" + }, + "goldenboots": "golden_boots", + "goldboots": "golden_boots", + "goldshoes": "golden_boots", + "gboots": "golden_boots", + "gshoes": "golden_boots", + "golden_carrot": { + "material": "GOLDEN_CARROT" + }, + "goldencarrot": "golden_carrot", + "golden_chestplate": { + "material": "GOLDEN_CHESTPLATE" + }, + "goldenchestplate": "golden_chestplate", + "goldchestplate": "golden_chestplate", + "goldplatebody": "golden_chestplate", + "goldplate": "golden_chestplate", + "goldshirt": "golden_chestplate", + "goldtunic": "golden_chestplate", + "gchestplate": "golden_chestplate", + "gplatebody": "golden_chestplate", + "gplate": "golden_chestplate", + "gshirt": "golden_chestplate", + "gtunic": "golden_chestplate", + "golden_helmet": { + "material": "GOLDEN_HELMET" + }, + "goldenhelmet": "golden_helmet", + "goldhelmet": "golden_helmet", + "goldhelm": "golden_helmet", + "goldhat": "golden_helmet", + "goldcoif": "golden_helmet", + "ghelmet": "golden_helmet", + "ghelm": "golden_helmet", + "ghat": "golden_helmet", + "gcoif": "golden_helmet", + "golden_hoe": { + "material": "GOLDEN_HOE" + }, + "goldenhoe": "golden_hoe", + "goldhoe": "golden_hoe", + "ghoe": "golden_hoe", + "golden_horse_armor": { + "material": "GOLDEN_HORSE_ARMOR" + }, + "goldenhorsearmor": "golden_horse_armor", + "goldhorsearmor": "golden_horse_armor", + "goldharmor": "golden_horse_armor", + "goldarmor": "golden_horse_armor", + "ghorsearmor": "golden_horse_armor", + "gharmor": "golden_horse_armor", + "garmor": "golden_horse_armor", + "golden_leggings": { + "material": "GOLDEN_LEGGINGS" + }, + "goldenleggings": "golden_leggings", + "goldleggings": "golden_leggings", + "goldlegs": "golden_leggings", + "goldpants": "golden_leggings", + "gleggings": "golden_leggings", + "glegs": "golden_leggings", + "gpants": "golden_leggings", + "golden_pickaxe": { + "material": "GOLDEN_PICKAXE" + }, + "goldenpickaxe": "golden_pickaxe", + "goldpickaxe": "golden_pickaxe", + "goldpick": "golden_pickaxe", + "gpickaxe": "golden_pickaxe", + "gpick": "golden_pickaxe", + "golden_shovel": { + "material": "GOLDEN_SHOVEL" + }, + "goldenshovel": "golden_shovel", + "goldshovel": "golden_shovel", + "goldspade": "golden_shovel", + "gshovel": "golden_shovel", + "gspade": "golden_shovel", + "golden_sword": { + "material": "GOLDEN_SWORD" + }, + "goldensword": "golden_sword", + "goldsword": "golden_sword", + "gsword": "golden_sword", + "gold_block": { + "material": "GOLD_BLOCK" + }, + "goldblock": "gold_block", + "blockgold": "gold_block", + "gblock": "gold_block", + "blockg": "gold_block", + "gold_ingot": { + "material": "GOLD_INGOT" + }, + "goldingot": "gold_ingot", + "goldbar": "gold_ingot", + "goldi": "gold_ingot", + "ingotgold": "gold_ingot", + "bargold": "gold_ingot", + "igold": "gold_ingot", + "gingot": "gold_ingot", + "gbar": "gold_ingot", + "gi": "gold_ingot", + "ingotg": "gold_ingot", + "barg": "gold_ingot", + "ig": "gold_ingot", + "gold_nugget": { + "material": "GOLD_NUGGET" + }, + "goldnugget": "gold_nugget", + "gold_ore": { + "material": "GOLD_ORE" + }, + "goldore": "gold_ore", + "goldo": "gold_ore", + "oregold": "gold_ore", + "ogold": "gold_ore", + "gore": "gold_ore", + "go": "gold_ore", + "oreg": "gold_ore", + "og": "gold_ore", + "granite": { + "material": "GRANITE" + }, + "gstone": "granite", + "grass": { + "material": "GRASS" + }, + "grass_block": { + "material": "GRASS_BLOCK" + }, + "grassblock": "grass_block", + "greendirt": "grass_block", + "greenearth": "grass_block", + "greenland": "grass_block", + "grass_path": { + "material": "GRASS_PATH" + }, + "grasspath": "grass_path", + "gravel": { + "material": "GRAVEL" + }, + "gray_banner": { + "material": "GRAY_BANNER" + }, + "graybanner": "gray_banner", + "grastandingbanner": "gray_banner", + "grabanner": "gray_banner", + "greystandingbanner": "gray_banner", + "greybanner": "gray_banner", + "graystandingbanner": "gray_banner", + "dgrastandingbanner": "gray_banner", + "dgrabanner": "gray_banner", + "darkgrastandingbanner": "gray_banner", + "darkgrabanner": "gray_banner", + "dgreystandingbanner": "gray_banner", + "dgreybanner": "gray_banner", + "dgraystandingbanner": "gray_banner", + "dgraybanner": "gray_banner", + "darkgreystandingbanner": "gray_banner", + "darkgreybanner": "gray_banner", + "darkgraystandingbanner": "gray_banner", + "darkgraybanner": "gray_banner", + "gray_bed": { + "material": "GRAY_BED" + }, + "graybed": "gray_bed", + "grabed": "gray_bed", + "greybed": "gray_bed", + "dgrabed": "gray_bed", + "darkgrabed": "gray_bed", + "dgreybed": "gray_bed", + "dgraybed": "gray_bed", + "darkgreybed": "gray_bed", + "darkgraybed": "gray_bed", + "gray_carpet": { + "material": "GRAY_CARPET" + }, + "graycarpet": "gray_carpet", + "gracarpet": "gray_carpet", + "grafloor": "gray_carpet", + "greycarpet": "gray_carpet", + "greyfloor": "gray_carpet", + "grayfloor": "gray_carpet", + "dgracarpet": "gray_carpet", + "dgrafloor": "gray_carpet", + "darkgracarpet": "gray_carpet", + "darkgrafloor": "gray_carpet", + "dgreycarpet": "gray_carpet", + "dgreyfloor": "gray_carpet", + "dgraycarpet": "gray_carpet", + "dgrayfloor": "gray_carpet", + "darkgreycarpet": "gray_carpet", + "darkgreyfloor": "gray_carpet", + "darkgraycarpet": "gray_carpet", + "darkgrayfloor": "gray_carpet", + "gray_concrete": { + "material": "GRAY_CONCRETE" + }, + "grayconcrete": "gray_concrete", + "graconcrete": "gray_concrete", + "greyconcrete": "gray_concrete", + "dgraconcrete": "gray_concrete", + "darkgraconcrete": "gray_concrete", + "dgreyconcrete": "gray_concrete", + "dgrayconcrete": "gray_concrete", + "darkgreyconcrete": "gray_concrete", + "darkgrayconcrete": "gray_concrete", + "gray_concrete_powder": { + "material": "GRAY_CONCRETE_POWDER" + }, + "grayconcretepowder": "gray_concrete_powder", + "graconcretepowder": "gray_concrete_powder", + "graconcretesand": "gray_concrete_powder", + "gracpowder": "gray_concrete_powder", + "gracdust": "gray_concrete_powder", + "gracp": "gray_concrete_powder", + "greyconcretepowder": "gray_concrete_powder", + "greyconcretesand": "gray_concrete_powder", + "greycpowder": "gray_concrete_powder", + "greycdust": "gray_concrete_powder", + "greycp": "gray_concrete_powder", + "grayconcretesand": "gray_concrete_powder", + "graycpowder": "gray_concrete_powder", + "graycdust": "gray_concrete_powder", + "graycp": "gray_concrete_powder", + "dgraconcretepowder": "gray_concrete_powder", + "dgraconcretesand": "gray_concrete_powder", + "dgracpowder": "gray_concrete_powder", + "dgracdust": "gray_concrete_powder", + "dgracp": "gray_concrete_powder", + "darkgraconcretepowder": "gray_concrete_powder", + "darkgraconcretesand": "gray_concrete_powder", + "darkgracpowder": "gray_concrete_powder", + "darkgracdust": "gray_concrete_powder", + "darkgracp": "gray_concrete_powder", + "dgreyconcretepowder": "gray_concrete_powder", + "dgreyconcretesand": "gray_concrete_powder", + "dgreycpowder": "gray_concrete_powder", + "dgreycdust": "gray_concrete_powder", + "dgreycp": "gray_concrete_powder", + "dgrayconcretepowder": "gray_concrete_powder", + "dgrayconcretesand": "gray_concrete_powder", + "dgraycpowder": "gray_concrete_powder", + "dgraycdust": "gray_concrete_powder", + "dgraycp": "gray_concrete_powder", + "darkgreyconcretepowder": "gray_concrete_powder", + "darkgreyconcretesand": "gray_concrete_powder", + "darkgreycpowder": "gray_concrete_powder", + "darkgreycdust": "gray_concrete_powder", + "darkgreycp": "gray_concrete_powder", + "darkgrayconcretepowder": "gray_concrete_powder", + "darkgrayconcretesand": "gray_concrete_powder", + "darkgraycpowder": "gray_concrete_powder", + "darkgraycdust": "gray_concrete_powder", + "darkgraycp": "gray_concrete_powder", + "gray_dye": { + "material": "GRAY_DYE" + }, + "graydye": "gray_dye", + "gray_glazed_terracotta": { + "material": "GRAY_GLAZED_TERRACOTTA" + }, + "grayglazedterracotta": "gray_glazed_terracotta", + "graglazedtcota": "gray_glazed_terracotta", + "graglazedterra": "gray_glazed_terracotta", + "graglazedterracotta": "gray_glazed_terracotta", + "graglazedterracota": "gray_glazed_terracotta", + "greyglazedtcota": "gray_glazed_terracotta", + "greyglazedterra": "gray_glazed_terracotta", + "greyglazedterracotta": "gray_glazed_terracotta", + "greyglazedterracota": "gray_glazed_terracotta", + "grayglazedtcota": "gray_glazed_terracotta", + "grayglazedterra": "gray_glazed_terracotta", + "grayglazedterracota": "gray_glazed_terracotta", + "dgraglazedtcota": "gray_glazed_terracotta", + "dgraglazedterra": "gray_glazed_terracotta", + "dgraglazedterracotta": "gray_glazed_terracotta", + "dgraglazedterracota": "gray_glazed_terracotta", + "darkgraglazedtcota": "gray_glazed_terracotta", + "darkgraglazedterra": "gray_glazed_terracotta", + "darkgraglazedterracotta": "gray_glazed_terracotta", + "darkgraglazedterracota": "gray_glazed_terracotta", + "dgreyglazedtcota": "gray_glazed_terracotta", + "dgreyglazedterra": "gray_glazed_terracotta", + "dgreyglazedterracotta": "gray_glazed_terracotta", + "dgreyglazedterracota": "gray_glazed_terracotta", + "dgrayglazedtcota": "gray_glazed_terracotta", + "dgrayglazedterra": "gray_glazed_terracotta", + "dgrayglazedterracotta": "gray_glazed_terracotta", + "dgrayglazedterracota": "gray_glazed_terracotta", + "darkgreyglazedtcota": "gray_glazed_terracotta", + "darkgreyglazedterra": "gray_glazed_terracotta", + "darkgreyglazedterracotta": "gray_glazed_terracotta", + "darkgreyglazedterracota": "gray_glazed_terracotta", + "darkgrayglazedtcota": "gray_glazed_terracotta", + "darkgrayglazedterra": "gray_glazed_terracotta", + "darkgrayglazedterracotta": "gray_glazed_terracotta", + "darkgrayglazedterracota": "gray_glazed_terracotta", + "gray_shulker_box": { + "material": "GRAY_SHULKER_BOX" + }, + "grayshulkerbox": "gray_shulker_box", + "grashulkerbox": "gray_shulker_box", + "grachest": "gray_shulker_box", + "greyshulkerbox": "gray_shulker_box", + "greychest": "gray_shulker_box", + "graychest": "gray_shulker_box", + "dgrashulkerbox": "gray_shulker_box", + "dgrachest": "gray_shulker_box", + "darkgrashulkerbox": "gray_shulker_box", + "darkgrachest": "gray_shulker_box", + "dgreyshulkerbox": "gray_shulker_box", + "dgreychest": "gray_shulker_box", + "dgrayshulkerbox": "gray_shulker_box", + "dgraychest": "gray_shulker_box", + "darkgreyshulkerbox": "gray_shulker_box", + "darkgreychest": "gray_shulker_box", + "darkgrayshulkerbox": "gray_shulker_box", + "darkgraychest": "gray_shulker_box", + "gray_stained_glass": { + "material": "GRAY_STAINED_GLASS" + }, + "graystainedglass": "gray_stained_glass", + "graglass": "gray_stained_glass", + "grasglass": "gray_stained_glass", + "grastainedglass": "gray_stained_glass", + "greyglass": "gray_stained_glass", + "greysglass": "gray_stained_glass", + "greystainedglass": "gray_stained_glass", + "grayglass": "gray_stained_glass", + "graysglass": "gray_stained_glass", + "dgraglass": "gray_stained_glass", + "dgrasglass": "gray_stained_glass", + "dgrastainedglass": "gray_stained_glass", + "darkgraglass": "gray_stained_glass", + "darkgrasglass": "gray_stained_glass", + "darkgrastainedglass": "gray_stained_glass", + "dgreyglass": "gray_stained_glass", + "dgreysglass": "gray_stained_glass", + "dgreystainedglass": "gray_stained_glass", + "dgrayglass": "gray_stained_glass", + "dgraysglass": "gray_stained_glass", + "dgraystainedglass": "gray_stained_glass", + "darkgreyglass": "gray_stained_glass", + "darkgreysglass": "gray_stained_glass", + "darkgreystainedglass": "gray_stained_glass", + "darkgrayglass": "gray_stained_glass", + "darkgraysglass": "gray_stained_glass", + "darkgraystainedglass": "gray_stained_glass", + "gray_stained_glass_pane": { + "material": "GRAY_STAINED_GLASS_PANE" + }, + "graystainedglasspane": "gray_stained_glass_pane", + "graglasspane": "gray_stained_glass_pane", + "grasglasspane": "gray_stained_glass_pane", + "grastainedglasspane": "gray_stained_glass_pane", + "gragpane": "gray_stained_glass_pane", + "greyglasspane": "gray_stained_glass_pane", + "greysglasspane": "gray_stained_glass_pane", + "greystainedglasspane": "gray_stained_glass_pane", + "greygpane": "gray_stained_glass_pane", + "grayglasspane": "gray_stained_glass_pane", + "graysglasspane": "gray_stained_glass_pane", + "graygpane": "gray_stained_glass_pane", + "dgraglasspane": "gray_stained_glass_pane", + "dgrasglasspane": "gray_stained_glass_pane", + "dgrastainedglasspane": "gray_stained_glass_pane", + "dgragpane": "gray_stained_glass_pane", + "darkgraglasspane": "gray_stained_glass_pane", + "darkgrasglasspane": "gray_stained_glass_pane", + "darkgrastainedglasspane": "gray_stained_glass_pane", + "darkgragpane": "gray_stained_glass_pane", + "dgreyglasspane": "gray_stained_glass_pane", + "dgreysglasspane": "gray_stained_glass_pane", + "dgreystainedglasspane": "gray_stained_glass_pane", + "dgreygpane": "gray_stained_glass_pane", + "dgrayglasspane": "gray_stained_glass_pane", + "dgraysglasspane": "gray_stained_glass_pane", + "dgraystainedglasspane": "gray_stained_glass_pane", + "dgraygpane": "gray_stained_glass_pane", + "darkgreyglasspane": "gray_stained_glass_pane", + "darkgreysglasspane": "gray_stained_glass_pane", + "darkgreystainedglasspane": "gray_stained_glass_pane", + "darkgreygpane": "gray_stained_glass_pane", + "darkgrayglasspane": "gray_stained_glass_pane", + "darkgraysglasspane": "gray_stained_glass_pane", + "darkgraystainedglasspane": "gray_stained_glass_pane", + "darkgraygpane": "gray_stained_glass_pane", + "gray_terracotta": { + "material": "GRAY_TERRACOTTA" + }, + "grayterracotta": "gray_terracotta", + "graclay": "gray_terracotta", + "grasclay": "gray_terracotta", + "grastainedclay": "gray_terracotta", + "graterra": "gray_terracotta", + "gratcota": "gray_terracotta", + "graterracota": "gray_terracotta", + "graterracotta": "gray_terracotta", + "greyclay": "gray_terracotta", + "greysclay": "gray_terracotta", + "greystainedclay": "gray_terracotta", + "greyterra": "gray_terracotta", + "greytcota": "gray_terracotta", + "greyterracota": "gray_terracotta", + "greyterracotta": "gray_terracotta", + "grayclay": "gray_terracotta", + "graysclay": "gray_terracotta", + "graystainedclay": "gray_terracotta", + "grayterra": "gray_terracotta", + "graytcota": "gray_terracotta", + "grayterracota": "gray_terracotta", + "dgraclay": "gray_terracotta", + "dgrasclay": "gray_terracotta", + "dgrastainedclay": "gray_terracotta", + "dgraterra": "gray_terracotta", + "dgratcota": "gray_terracotta", + "dgraterracota": "gray_terracotta", + "dgraterracotta": "gray_terracotta", + "darkgraclay": "gray_terracotta", + "darkgrasclay": "gray_terracotta", + "darkgrastainedclay": "gray_terracotta", + "darkgraterra": "gray_terracotta", + "darkgratcota": "gray_terracotta", + "darkgraterracota": "gray_terracotta", + "darkgraterracotta": "gray_terracotta", + "dgreyclay": "gray_terracotta", + "dgreysclay": "gray_terracotta", + "dgreystainedclay": "gray_terracotta", + "dgreyterra": "gray_terracotta", + "dgreytcota": "gray_terracotta", + "dgreyterracota": "gray_terracotta", + "dgreyterracotta": "gray_terracotta", + "dgrayclay": "gray_terracotta", + "dgraysclay": "gray_terracotta", + "dgraystainedclay": "gray_terracotta", + "dgrayterra": "gray_terracotta", + "dgraytcota": "gray_terracotta", + "dgrayterracota": "gray_terracotta", + "dgrayterracotta": "gray_terracotta", + "darkgreyclay": "gray_terracotta", + "darkgreysclay": "gray_terracotta", + "darkgreystainedclay": "gray_terracotta", + "darkgreyterra": "gray_terracotta", + "darkgreytcota": "gray_terracotta", + "darkgreyterracota": "gray_terracotta", + "darkgreyterracotta": "gray_terracotta", + "darkgrayclay": "gray_terracotta", + "darkgraysclay": "gray_terracotta", + "darkgraystainedclay": "gray_terracotta", + "darkgrayterra": "gray_terracotta", + "darkgraytcota": "gray_terracotta", + "darkgrayterracota": "gray_terracotta", + "darkgrayterracotta": "gray_terracotta", + "gray_wall_banner": { + "material": "GRAY_WALL_BANNER", + "unspawnable": true + }, + "graywallbanner": "gray_wall_banner", + "gray_wool": { + "material": "GRAY_WOOL" + }, + "graywool": "gray_wool", + "grawool": "gray_wool", + "gracloth": "gray_wool", + "gracotton": "gray_wool", + "greywool": "gray_wool", + "greycloth": "gray_wool", + "greycotton": "gray_wool", + "graycloth": "gray_wool", + "graycotton": "gray_wool", + "dgrawool": "gray_wool", + "dgracloth": "gray_wool", + "dgracotton": "gray_wool", + "darkgrawool": "gray_wool", + "darkgracloth": "gray_wool", + "darkgracotton": "gray_wool", + "dgreywool": "gray_wool", + "dgreycloth": "gray_wool", + "dgreycotton": "gray_wool", + "dgraywool": "gray_wool", + "dgraycloth": "gray_wool", + "dgraycotton": "gray_wool", + "darkgreywool": "gray_wool", + "darkgreycloth": "gray_wool", + "darkgreycotton": "gray_wool", + "darkgraywool": "gray_wool", + "darkgraycloth": "gray_wool", + "darkgraycotton": "gray_wool", + "green_banner": { + "material": "GREEN_BANNER" + }, + "greenbanner": "green_banner", + "grestandingbanner": "green_banner", + "grebanner": "green_banner", + "dgrestandingbanner": "green_banner", + "dgrebanner": "green_banner", + "darkgrestandingbanner": "green_banner", + "darkgrebanner": "green_banner", + "greenstandingbanner": "green_banner", + "dgreenstandingbanner": "green_banner", + "dgreenbanner": "green_banner", + "darkgreenstandingbanner": "green_banner", + "darkgreenbanner": "green_banner", + "green_bed": { + "material": "GREEN_BED" + }, + "greenbed": "green_bed", + "grebed": "green_bed", + "dgrebed": "green_bed", + "darkgrebed": "green_bed", + "dgreenbed": "green_bed", + "darkgreenbed": "green_bed", + "green_carpet": { + "material": "GREEN_CARPET" + }, + "greencarpet": "green_carpet", + "grecarpet": "green_carpet", + "grefloor": "green_carpet", + "dgrecarpet": "green_carpet", + "dgrefloor": "green_carpet", + "darkgrecarpet": "green_carpet", + "darkgrefloor": "green_carpet", + "greenfloor": "green_carpet", + "dgreencarpet": "green_carpet", + "dgreenfloor": "green_carpet", + "darkgreencarpet": "green_carpet", + "darkgreenfloor": "green_carpet", + "green_concrete": { + "material": "GREEN_CONCRETE" + }, + "greenconcrete": "green_concrete", + "greconcrete": "green_concrete", + "dgreconcrete": "green_concrete", + "darkgreconcrete": "green_concrete", + "dgreenconcrete": "green_concrete", + "darkgreenconcrete": "green_concrete", + "green_concrete_powder": { + "material": "GREEN_CONCRETE_POWDER" + }, + "greenconcretepowder": "green_concrete_powder", + "greconcretepowder": "green_concrete_powder", + "greconcretesand": "green_concrete_powder", + "grecpowder": "green_concrete_powder", + "grecdust": "green_concrete_powder", + "grecp": "green_concrete_powder", + "dgreconcretepowder": "green_concrete_powder", + "dgreconcretesand": "green_concrete_powder", + "dgrecpowder": "green_concrete_powder", + "dgrecdust": "green_concrete_powder", + "dgrecp": "green_concrete_powder", + "darkgreconcretepowder": "green_concrete_powder", + "darkgreconcretesand": "green_concrete_powder", + "darkgrecpowder": "green_concrete_powder", + "darkgrecdust": "green_concrete_powder", + "darkgrecp": "green_concrete_powder", + "greenconcretesand": "green_concrete_powder", + "greencpowder": "green_concrete_powder", + "greencdust": "green_concrete_powder", + "greencp": "green_concrete_powder", + "dgreenconcretepowder": "green_concrete_powder", + "dgreenconcretesand": "green_concrete_powder", + "dgreencpowder": "green_concrete_powder", + "dgreencdust": "green_concrete_powder", + "dgreencp": "green_concrete_powder", + "darkgreenconcretepowder": "green_concrete_powder", + "darkgreenconcretesand": "green_concrete_powder", + "darkgreencpowder": "green_concrete_powder", + "darkgreencdust": "green_concrete_powder", + "darkgreencp": "green_concrete_powder", + "green_glazed_terracotta": { + "material": "GREEN_GLAZED_TERRACOTTA" + }, + "greenglazedterracotta": "green_glazed_terracotta", + "greglazedtcota": "green_glazed_terracotta", + "greglazedterra": "green_glazed_terracotta", + "greglazedterracotta": "green_glazed_terracotta", + "greglazedterracota": "green_glazed_terracotta", + "dgreglazedtcota": "green_glazed_terracotta", + "dgreglazedterra": "green_glazed_terracotta", + "dgreglazedterracotta": "green_glazed_terracotta", + "dgreglazedterracota": "green_glazed_terracotta", + "darkgreglazedtcota": "green_glazed_terracotta", + "darkgreglazedterra": "green_glazed_terracotta", + "darkgreglazedterracotta": "green_glazed_terracotta", + "darkgreglazedterracota": "green_glazed_terracotta", + "greenglazedtcota": "green_glazed_terracotta", + "greenglazedterra": "green_glazed_terracotta", + "greenglazedterracota": "green_glazed_terracotta", + "dgreenglazedtcota": "green_glazed_terracotta", + "dgreenglazedterra": "green_glazed_terracotta", + "dgreenglazedterracotta": "green_glazed_terracotta", + "dgreenglazedterracota": "green_glazed_terracotta", + "darkgreenglazedtcota": "green_glazed_terracotta", + "darkgreenglazedterra": "green_glazed_terracotta", + "darkgreenglazedterracotta": "green_glazed_terracotta", + "darkgreenglazedterracota": "green_glazed_terracotta", + "green_shulker_box": { + "material": "GREEN_SHULKER_BOX" + }, + "greenshulkerbox": "green_shulker_box", + "greshulkerbox": "green_shulker_box", + "grechest": "green_shulker_box", + "dgreshulkerbox": "green_shulker_box", + "dgrechest": "green_shulker_box", + "darkgreshulkerbox": "green_shulker_box", + "darkgrechest": "green_shulker_box", + "greenchest": "green_shulker_box", + "dgreenshulkerbox": "green_shulker_box", + "dgreenchest": "green_shulker_box", + "darkgreenshulkerbox": "green_shulker_box", + "darkgreenchest": "green_shulker_box", + "green_stained_glass": { + "material": "GREEN_STAINED_GLASS" + }, + "greenstainedglass": "green_stained_glass", + "greglass": "green_stained_glass", + "gresglass": "green_stained_glass", + "grestainedglass": "green_stained_glass", + "dgreglass": "green_stained_glass", + "dgresglass": "green_stained_glass", + "dgrestainedglass": "green_stained_glass", + "darkgreglass": "green_stained_glass", + "darkgresglass": "green_stained_glass", + "darkgrestainedglass": "green_stained_glass", + "greenglass": "green_stained_glass", + "greensglass": "green_stained_glass", + "dgreenglass": "green_stained_glass", + "dgreensglass": "green_stained_glass", + "dgreenstainedglass": "green_stained_glass", + "darkgreenglass": "green_stained_glass", + "darkgreensglass": "green_stained_glass", + "darkgreenstainedglass": "green_stained_glass", + "green_stained_glass_pane": { + "material": "GREEN_STAINED_GLASS_PANE" + }, + "greenstainedglasspane": "green_stained_glass_pane", + "greglasspane": "green_stained_glass_pane", + "gresglasspane": "green_stained_glass_pane", + "grestainedglasspane": "green_stained_glass_pane", + "gregpane": "green_stained_glass_pane", + "dgreglasspane": "green_stained_glass_pane", + "dgresglasspane": "green_stained_glass_pane", + "dgrestainedglasspane": "green_stained_glass_pane", + "dgregpane": "green_stained_glass_pane", + "darkgreglasspane": "green_stained_glass_pane", + "darkgresglasspane": "green_stained_glass_pane", + "darkgrestainedglasspane": "green_stained_glass_pane", + "darkgregpane": "green_stained_glass_pane", + "greenglasspane": "green_stained_glass_pane", + "greensglasspane": "green_stained_glass_pane", + "greengpane": "green_stained_glass_pane", + "dgreenglasspane": "green_stained_glass_pane", + "dgreensglasspane": "green_stained_glass_pane", + "dgreenstainedglasspane": "green_stained_glass_pane", + "dgreengpane": "green_stained_glass_pane", + "darkgreenglasspane": "green_stained_glass_pane", + "darkgreensglasspane": "green_stained_glass_pane", + "darkgreenstainedglasspane": "green_stained_glass_pane", + "darkgreengpane": "green_stained_glass_pane", + "green_terracotta": { + "material": "GREEN_TERRACOTTA" + }, + "greenterracotta": "green_terracotta", + "greclay": "green_terracotta", + "gresclay": "green_terracotta", + "grestainedclay": "green_terracotta", + "greterra": "green_terracotta", + "gretcota": "green_terracotta", + "greterracota": "green_terracotta", + "greterracotta": "green_terracotta", + "dgreclay": "green_terracotta", + "dgresclay": "green_terracotta", + "dgrestainedclay": "green_terracotta", + "dgreterra": "green_terracotta", + "dgretcota": "green_terracotta", + "dgreterracota": "green_terracotta", + "dgreterracotta": "green_terracotta", + "darkgreclay": "green_terracotta", + "darkgresclay": "green_terracotta", + "darkgrestainedclay": "green_terracotta", + "darkgreterra": "green_terracotta", + "darkgretcota": "green_terracotta", + "darkgreterracota": "green_terracotta", + "darkgreterracotta": "green_terracotta", + "greenclay": "green_terracotta", + "greensclay": "green_terracotta", + "greenstainedclay": "green_terracotta", + "greenterra": "green_terracotta", + "greentcota": "green_terracotta", + "greenterracota": "green_terracotta", + "dgreenclay": "green_terracotta", + "dgreensclay": "green_terracotta", + "dgreenstainedclay": "green_terracotta", + "dgreenterra": "green_terracotta", + "dgreentcota": "green_terracotta", + "dgreenterracota": "green_terracotta", + "dgreenterracotta": "green_terracotta", + "darkgreenclay": "green_terracotta", + "darkgreensclay": "green_terracotta", + "darkgreenstainedclay": "green_terracotta", + "darkgreenterra": "green_terracotta", + "darkgreentcota": "green_terracotta", + "darkgreenterracota": "green_terracotta", + "darkgreenterracotta": "green_terracotta", + "green_wall_banner": { + "material": "GREEN_WALL_BANNER", + "unspawnable": true + }, + "greenwallbanner": "green_wall_banner", + "green_wool": { + "material": "GREEN_WOOL" + }, + "greenwool": "green_wool", + "grewool": "green_wool", + "grecloth": "green_wool", + "grecotton": "green_wool", + "dgrewool": "green_wool", + "dgrecloth": "green_wool", + "dgrecotton": "green_wool", + "darkgrewool": "green_wool", + "darkgrecloth": "green_wool", + "darkgrecotton": "green_wool", + "greencloth": "green_wool", + "greencotton": "green_wool", + "dgreenwool": "green_wool", + "dgreencloth": "green_wool", + "dgreencotton": "green_wool", + "darkgreenwool": "green_wool", + "darkgreencloth": "green_wool", + "darkgreencotton": "green_wool", + "guardian_spawn_egg": { + "material": "GUARDIAN_SPAWN_EGG" + }, + "guardianspawnegg": "guardian_spawn_egg", + "guardianegg": "guardian_spawn_egg", + "eggguardian": "guardian_spawn_egg", + "spawneggguardian": "guardian_spawn_egg", + "guardianspawn": "guardian_spawn_egg", + "spawnguardian": "guardian_spawn_egg", + "gunpowder": { + "material": "GUNPOWDER" + }, + "hay_block": { + "material": "HAY_BLOCK" + }, + "hayblock": "hay_block", + "hay": "hay_block", + "haybale": "hay_block", + "baleofhay": "hay_block", + "hayofbale": "hay_block", + "heart_of_the_sea": { + "material": "HEART_OF_THE_SEA" + }, + "heartofthesea": "heart_of_the_sea", + "heavy_weighted_pressure_plate": { + "material": "HEAVY_WEIGHTED_PRESSURE_PLATE" + }, + "heavyweightedpressureplate": "heavy_weighted_pressure_plate", + "hopper": { + "material": "HOPPER" + }, + "chestpuller": "hopper", + "chestpull": "hopper", + "cheststorer": "hopper", + "cheststore": "hopper", + "itempuller": "hopper", + "itempull": "hopper", + "itemstorer": "hopper", + "itemstore": "hopper", + "hopper_minecart": { + "material": "HOPPER_MINECART" + }, + "hopperminecart": "hopper_minecart", + "hoppermcart": "hopper_minecart", + "hoppermc": "hopper_minecart", + "hoppercart": "hopper_minecart", + "hopminecart": "hopper_minecart", + "hopmcart": "hopper_minecart", + "hopmc": "hopper_minecart", + "hopcart": "hopper_minecart", + "hminecart": "hopper_minecart", + "hmcart": "hopper_minecart", + "hmc": "hopper_minecart", + "hcart": "hopper_minecart", + "horn_coral": { + "material": "HORN_CORAL" + }, + "horncoral": "horn_coral", + "horn_coral_block": { + "material": "HORN_CORAL_BLOCK" + }, + "horncoralblock": "horn_coral_block", + "horn_coral_fan": { + "material": "HORN_CORAL_FAN" + }, + "horncoralfan": "horn_coral_fan", + "horn_coral_wall_fan": { + "material": "HORN_CORAL_WALL_FAN", + "unspawnable": true + }, + "horncoralwallfan": "horn_coral_wall_fan", + "horse_spawn_egg": { + "material": "HORSE_SPAWN_EGG" + }, + "horsespawnegg": "horse_spawn_egg", + "horseegg": "horse_spawn_egg", + "egghorse": "horse_spawn_egg", + "spawnegghorse": "horse_spawn_egg", + "horsespawn": "horse_spawn_egg", + "spawnhorse": "horse_spawn_egg", + "husk_spawn_egg": { + "material": "HUSK_SPAWN_EGG" + }, + "huskspawnegg": "husk_spawn_egg", + "huskegg": "husk_spawn_egg", + "egghusk": "husk_spawn_egg", + "spawnegghusk": "husk_spawn_egg", + "huskspawn": "husk_spawn_egg", + "spawnhusk": "husk_spawn_egg", + "ice": { + "material": "ICE" + }, + "frozenwater": "ice", + "waterfrozen": "ice", + "freezewater": "ice", + "waterfreeze": "ice", + "infested_chiseled_stone_bricks": { + "material": "INFESTED_CHISELED_STONE_BRICKS" + }, + "infestedchiseledstonebricks": "infested_chiseled_stone_bricks", + "silverfishchiseledstonebrick": "infested_chiseled_stone_bricks", + "silverfishcirclestonebrick": "infested_chiseled_stone_bricks", + "silverfishcistonebrick": "infested_chiseled_stone_bricks", + "sfishchiseledstonebrick": "infested_chiseled_stone_bricks", + "sfishcirclestonebrick": "infested_chiseled_stone_bricks", + "sfishcistonebrick": "infested_chiseled_stone_bricks", + "fishchiseledstonebrick": "infested_chiseled_stone_bricks", + "fishcirclestonebrick": "infested_chiseled_stone_bricks", + "fishcistonebrick": "infested_chiseled_stone_bricks", + "infestedchiseledstonebrick": "infested_chiseled_stone_bricks", + "infestedcirclestonebrick": "infested_chiseled_stone_bricks", + "infestedcistonebrick": "infested_chiseled_stone_bricks", + "monstereggchiseledstonebrick": "infested_chiseled_stone_bricks", + "monstereggcirclestonebrick": "infested_chiseled_stone_bricks", + "monstereggcistonebrick": "infested_chiseled_stone_bricks", + "meggchiseledstonebrick": "infested_chiseled_stone_bricks", + "meggcirclestonebrick": "infested_chiseled_stone_bricks", + "meggcistonebrick": "infested_chiseled_stone_bricks", + "trapchiseledstonebrick": "infested_chiseled_stone_bricks", + "trapcirclestonebrick": "infested_chiseled_stone_bricks", + "trapcistonebrick": "infested_chiseled_stone_bricks", + "sfchiseledstonebrick": "infested_chiseled_stone_bricks", + "sfcirclestonebrick": "infested_chiseled_stone_bricks", + "sfcistonebrick": "infested_chiseled_stone_bricks", + "mechiseledstonebrick": "infested_chiseled_stone_bricks", + "mecirclestonebrick": "infested_chiseled_stone_bricks", + "mecistonebrick": "infested_chiseled_stone_bricks", + "silverfishchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "silverfishcirclestonebrickblock": "infested_chiseled_stone_bricks", + "silverfishcistonebrickblock": "infested_chiseled_stone_bricks", + "sfishchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "sfishcirclestonebrickblock": "infested_chiseled_stone_bricks", + "sfishcistonebrickblock": "infested_chiseled_stone_bricks", + "fishchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "fishcirclestonebrickblock": "infested_chiseled_stone_bricks", + "fishcistonebrickblock": "infested_chiseled_stone_bricks", + "infestedchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "infestedcirclestonebrickblock": "infested_chiseled_stone_bricks", + "infestedcistonebrickblock": "infested_chiseled_stone_bricks", + "monstereggchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "monstereggcirclestonebrickblock": "infested_chiseled_stone_bricks", + "monstereggcistonebrickblock": "infested_chiseled_stone_bricks", + "meggchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "meggcirclestonebrickblock": "infested_chiseled_stone_bricks", + "meggcistonebrickblock": "infested_chiseled_stone_bricks", + "trapchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "trapcirclestonebrickblock": "infested_chiseled_stone_bricks", + "trapcistonebrickblock": "infested_chiseled_stone_bricks", + "sfchiseledstonebrickblock": "infested_chiseled_stone_bricks", + "sfcirclestonebrickblock": "infested_chiseled_stone_bricks", + "sfcistonebrickblock": "infested_chiseled_stone_bricks", + "mechiseledstonebrickblock": "infested_chiseled_stone_bricks", + "mecirclestonebrickblock": "infested_chiseled_stone_bricks", + "mecistonebrickblock": "infested_chiseled_stone_bricks", + "silverfishchiseledstonebb": "infested_chiseled_stone_bricks", + "silverfishcirclestonebb": "infested_chiseled_stone_bricks", + "silverfishcistonebb": "infested_chiseled_stone_bricks", + "sfishchiseledstonebb": "infested_chiseled_stone_bricks", + "sfishcirclestonebb": "infested_chiseled_stone_bricks", + "sfishcistonebb": "infested_chiseled_stone_bricks", + "fishchiseledstonebb": "infested_chiseled_stone_bricks", + "fishcirclestonebb": "infested_chiseled_stone_bricks", + "fishcistonebb": "infested_chiseled_stone_bricks", + "infestedchiseledstonebb": "infested_chiseled_stone_bricks", + "infestedcirclestonebb": "infested_chiseled_stone_bricks", + "infestedcistonebb": "infested_chiseled_stone_bricks", + "monstereggchiseledstonebb": "infested_chiseled_stone_bricks", + "monstereggcirclestonebb": "infested_chiseled_stone_bricks", + "monstereggcistonebb": "infested_chiseled_stone_bricks", + "meggchiseledstonebb": "infested_chiseled_stone_bricks", + "meggcirclestonebb": "infested_chiseled_stone_bricks", + "meggcistonebb": "infested_chiseled_stone_bricks", + "trapchiseledstonebb": "infested_chiseled_stone_bricks", + "trapcirclestonebb": "infested_chiseled_stone_bricks", + "trapcistonebb": "infested_chiseled_stone_bricks", + "sfchiseledstonebb": "infested_chiseled_stone_bricks", + "sfcirclestonebb": "infested_chiseled_stone_bricks", + "sfcistonebb": "infested_chiseled_stone_bricks", + "mechiseledstonebb": "infested_chiseled_stone_bricks", + "mecirclestonebb": "infested_chiseled_stone_bricks", + "mecistonebb": "infested_chiseled_stone_bricks", + "silverfishchiseledsbrick": "infested_chiseled_stone_bricks", + "silverfishcirclesbrick": "infested_chiseled_stone_bricks", + "silverfishcisbrick": "infested_chiseled_stone_bricks", + "sfishchiseledsbrick": "infested_chiseled_stone_bricks", + "sfishcirclesbrick": "infested_chiseled_stone_bricks", + "sfishcisbrick": "infested_chiseled_stone_bricks", + "fishchiseledsbrick": "infested_chiseled_stone_bricks", + "fishcirclesbrick": "infested_chiseled_stone_bricks", + "fishcisbrick": "infested_chiseled_stone_bricks", + "infestedchiseledsbrick": "infested_chiseled_stone_bricks", + "infestedcirclesbrick": "infested_chiseled_stone_bricks", + "infestedcisbrick": "infested_chiseled_stone_bricks", + "monstereggchiseledsbrick": "infested_chiseled_stone_bricks", + "monstereggcirclesbrick": "infested_chiseled_stone_bricks", + "monstereggcisbrick": "infested_chiseled_stone_bricks", + "meggchiseledsbrick": "infested_chiseled_stone_bricks", + "meggcirclesbrick": "infested_chiseled_stone_bricks", + "meggcisbrick": "infested_chiseled_stone_bricks", + "trapchiseledsbrick": "infested_chiseled_stone_bricks", + "trapcirclesbrick": "infested_chiseled_stone_bricks", + "trapcisbrick": "infested_chiseled_stone_bricks", + "sfchiseledsbrick": "infested_chiseled_stone_bricks", + "sfcirclesbrick": "infested_chiseled_stone_bricks", + "sfcisbrick": "infested_chiseled_stone_bricks", + "mechiseledsbrick": "infested_chiseled_stone_bricks", + "mecirclesbrick": "infested_chiseled_stone_bricks", + "mecisbrick": "infested_chiseled_stone_bricks", + "silverfishchiseledsbricks": "infested_chiseled_stone_bricks", + "silverfishcirclesbricks": "infested_chiseled_stone_bricks", + "silverfishcisbricks": "infested_chiseled_stone_bricks", + "sfishchiseledsbricks": "infested_chiseled_stone_bricks", + "sfishcirclesbricks": "infested_chiseled_stone_bricks", + "sfishcisbricks": "infested_chiseled_stone_bricks", + "fishchiseledsbricks": "infested_chiseled_stone_bricks", + "fishcirclesbricks": "infested_chiseled_stone_bricks", + "fishcisbricks": "infested_chiseled_stone_bricks", + "infestedchiseledsbricks": "infested_chiseled_stone_bricks", + "infestedcirclesbricks": "infested_chiseled_stone_bricks", + "infestedcisbricks": "infested_chiseled_stone_bricks", + "monstereggchiseledsbricks": "infested_chiseled_stone_bricks", + "monstereggcirclesbricks": "infested_chiseled_stone_bricks", + "monstereggcisbricks": "infested_chiseled_stone_bricks", + "meggchiseledsbricks": "infested_chiseled_stone_bricks", + "meggcirclesbricks": "infested_chiseled_stone_bricks", + "meggcisbricks": "infested_chiseled_stone_bricks", + "trapchiseledsbricks": "infested_chiseled_stone_bricks", + "trapcirclesbricks": "infested_chiseled_stone_bricks", + "trapcisbricks": "infested_chiseled_stone_bricks", + "sfchiseledsbricks": "infested_chiseled_stone_bricks", + "sfcirclesbricks": "infested_chiseled_stone_bricks", + "sfcisbricks": "infested_chiseled_stone_bricks", + "mechiseledsbricks": "infested_chiseled_stone_bricks", + "mecirclesbricks": "infested_chiseled_stone_bricks", + "mecisbricks": "infested_chiseled_stone_bricks", + "silverfishchiseledsbrickblock": "infested_chiseled_stone_bricks", + "silverfishcirclesbrickblock": "infested_chiseled_stone_bricks", + "silverfishcisbrickblock": "infested_chiseled_stone_bricks", + "sfishchiseledsbrickblock": "infested_chiseled_stone_bricks", + "sfishcirclesbrickblock": "infested_chiseled_stone_bricks", + "sfishcisbrickblock": "infested_chiseled_stone_bricks", + "fishchiseledsbrickblock": "infested_chiseled_stone_bricks", + "fishcirclesbrickblock": "infested_chiseled_stone_bricks", + "fishcisbrickblock": "infested_chiseled_stone_bricks", + "infestedchiseledsbrickblock": "infested_chiseled_stone_bricks", + "infestedcirclesbrickblock": "infested_chiseled_stone_bricks", + "infestedcisbrickblock": "infested_chiseled_stone_bricks", + "monstereggchiseledsbrickblock": "infested_chiseled_stone_bricks", + "monstereggcirclesbrickblock": "infested_chiseled_stone_bricks", + "monstereggcisbrickblock": "infested_chiseled_stone_bricks", + "meggchiseledsbrickblock": "infested_chiseled_stone_bricks", + "meggcirclesbrickblock": "infested_chiseled_stone_bricks", + "meggcisbrickblock": "infested_chiseled_stone_bricks", + "trapchiseledsbrickblock": "infested_chiseled_stone_bricks", + "trapcirclesbrickblock": "infested_chiseled_stone_bricks", + "trapcisbrickblock": "infested_chiseled_stone_bricks", + "sfchiseledsbrickblock": "infested_chiseled_stone_bricks", + "sfcirclesbrickblock": "infested_chiseled_stone_bricks", + "sfcisbrickblock": "infested_chiseled_stone_bricks", + "mechiseledsbrickblock": "infested_chiseled_stone_bricks", + "mecirclesbrickblock": "infested_chiseled_stone_bricks", + "mecisbrickblock": "infested_chiseled_stone_bricks", + "silverfishchiseledstonebricks": "infested_chiseled_stone_bricks", + "silverfishcirclestonebricks": "infested_chiseled_stone_bricks", + "silverfishcistonebricks": "infested_chiseled_stone_bricks", + "sfishchiseledstonebricks": "infested_chiseled_stone_bricks", + "sfishcirclestonebricks": "infested_chiseled_stone_bricks", + "sfishcistonebricks": "infested_chiseled_stone_bricks", + "fishchiseledstonebricks": "infested_chiseled_stone_bricks", + "fishcirclestonebricks": "infested_chiseled_stone_bricks", + "fishcistonebricks": "infested_chiseled_stone_bricks", + "infestedcirclestonebricks": "infested_chiseled_stone_bricks", + "infestedcistonebricks": "infested_chiseled_stone_bricks", + "monstereggchiseledstonebricks": "infested_chiseled_stone_bricks", + "monstereggcirclestonebricks": "infested_chiseled_stone_bricks", + "monstereggcistonebricks": "infested_chiseled_stone_bricks", + "meggchiseledstonebricks": "infested_chiseled_stone_bricks", + "meggcirclestonebricks": "infested_chiseled_stone_bricks", + "meggcistonebricks": "infested_chiseled_stone_bricks", + "trapchiseledstonebricks": "infested_chiseled_stone_bricks", + "trapcirclestonebricks": "infested_chiseled_stone_bricks", + "trapcistonebricks": "infested_chiseled_stone_bricks", + "sfchiseledstonebricks": "infested_chiseled_stone_bricks", + "sfcirclestonebricks": "infested_chiseled_stone_bricks", + "sfcistonebricks": "infested_chiseled_stone_bricks", + "mechiseledstonebricks": "infested_chiseled_stone_bricks", + "mecirclestonebricks": "infested_chiseled_stone_bricks", + "mecistonebricks": "infested_chiseled_stone_bricks", + "silverfishchiseledsbb": "infested_chiseled_stone_bricks", + "silverfishcirclesbb": "infested_chiseled_stone_bricks", + "silverfishcisbb": "infested_chiseled_stone_bricks", + "sfishchiseledsbb": "infested_chiseled_stone_bricks", + "sfishcirclesbb": "infested_chiseled_stone_bricks", + "sfishcisbb": "infested_chiseled_stone_bricks", + "fishchiseledsbb": "infested_chiseled_stone_bricks", + "fishcirclesbb": "infested_chiseled_stone_bricks", + "fishcisbb": "infested_chiseled_stone_bricks", + "infestedchiseledsbb": "infested_chiseled_stone_bricks", + "infestedcirclesbb": "infested_chiseled_stone_bricks", + "infestedcisbb": "infested_chiseled_stone_bricks", + "monstereggchiseledsbb": "infested_chiseled_stone_bricks", + "monstereggcirclesbb": "infested_chiseled_stone_bricks", + "monstereggcisbb": "infested_chiseled_stone_bricks", + "meggchiseledsbb": "infested_chiseled_stone_bricks", + "meggcirclesbb": "infested_chiseled_stone_bricks", + "meggcisbb": "infested_chiseled_stone_bricks", + "trapchiseledsbb": "infested_chiseled_stone_bricks", + "trapcirclesbb": "infested_chiseled_stone_bricks", + "trapcisbb": "infested_chiseled_stone_bricks", + "sfchiseledsbb": "infested_chiseled_stone_bricks", + "sfcirclesbb": "infested_chiseled_stone_bricks", + "sfcisbb": "infested_chiseled_stone_bricks", + "mechiseledsbb": "infested_chiseled_stone_bricks", + "mecirclesbb": "infested_chiseled_stone_bricks", + "mecisbb": "infested_chiseled_stone_bricks", + "infested_cobblestone": { + "material": "INFESTED_COBBLESTONE" + }, + "infestedcobblestone": "infested_cobblestone", + "silverfishcobblestone": "infested_cobblestone", + "sfishcobblestone": "infested_cobblestone", + "fishcobblestone": "infested_cobblestone", + "monstereggcobblestone": "infested_cobblestone", + "meggcobblestone": "infested_cobblestone", + "trapcobblestone": "infested_cobblestone", + "sfcobblestone": "infested_cobblestone", + "mecobblestone": "infested_cobblestone", + "silverfishcstone": "infested_cobblestone", + "sfishcstone": "infested_cobblestone", + "fishcstone": "infested_cobblestone", + "infestedcstone": "infested_cobblestone", + "monstereggcstone": "infested_cobblestone", + "meggcstone": "infested_cobblestone", + "trapcstone": "infested_cobblestone", + "sfcstone": "infested_cobblestone", + "mecstone": "infested_cobblestone", + "silverfishcobble": "infested_cobblestone", + "sfishcobble": "infested_cobblestone", + "fishcobble": "infested_cobblestone", + "infestedcobble": "infested_cobblestone", + "monstereggcobble": "infested_cobblestone", + "meggcobble": "infested_cobblestone", + "trapcobble": "infested_cobblestone", + "sfcobble": "infested_cobblestone", + "mecobble": "infested_cobblestone", + "infested_cracked_stone_bricks": { + "material": "INFESTED_CRACKED_STONE_BRICKS" + }, + "infestedcrackedstonebricks": "infested_cracked_stone_bricks", + "silverfishcrackedstonebrick": "infested_cracked_stone_bricks", + "silverfishcrackstonebrick": "infested_cracked_stone_bricks", + "silverfishcrstonebrick": "infested_cracked_stone_bricks", + "silverfishcstonebrick": "infested_cracked_stone_bricks", + "sfishcrackedstonebrick": "infested_cracked_stone_bricks", + "sfishcrackstonebrick": "infested_cracked_stone_bricks", + "sfishcrstonebrick": "infested_cracked_stone_bricks", + "sfishcstonebrick": "infested_cracked_stone_bricks", + "fishcrackedstonebrick": "infested_cracked_stone_bricks", + "fishcrackstonebrick": "infested_cracked_stone_bricks", + "fishcrstonebrick": "infested_cracked_stone_bricks", + "fishcstonebrick": "infested_cracked_stone_bricks", + "infestedcrackedstonebrick": "infested_cracked_stone_bricks", + "infestedcrackstonebrick": "infested_cracked_stone_bricks", + "infestedcrstonebrick": "infested_cracked_stone_bricks", + "infestedcstonebrick": "infested_cracked_stone_bricks", + "monstereggcrackedstonebrick": "infested_cracked_stone_bricks", + "monstereggcrackstonebrick": "infested_cracked_stone_bricks", + "monstereggcrstonebrick": "infested_cracked_stone_bricks", + "monstereggcstonebrick": "infested_cracked_stone_bricks", + "meggcrackedstonebrick": "infested_cracked_stone_bricks", + "meggcrackstonebrick": "infested_cracked_stone_bricks", + "meggcrstonebrick": "infested_cracked_stone_bricks", + "meggcstonebrick": "infested_cracked_stone_bricks", + "trapcrackedstonebrick": "infested_cracked_stone_bricks", + "trapcrackstonebrick": "infested_cracked_stone_bricks", + "trapcrstonebrick": "infested_cracked_stone_bricks", + "trapcstonebrick": "infested_cracked_stone_bricks", + "sfcrackedstonebrick": "infested_cracked_stone_bricks", + "sfcrackstonebrick": "infested_cracked_stone_bricks", + "sfcrstonebrick": "infested_cracked_stone_bricks", + "sfcstonebrick": "infested_cracked_stone_bricks", + "mecrackedstonebrick": "infested_cracked_stone_bricks", + "mecrackstonebrick": "infested_cracked_stone_bricks", + "mecrstonebrick": "infested_cracked_stone_bricks", + "mecstonebrick": "infested_cracked_stone_bricks", + "silverfishcrackedstonebrickblock": "infested_cracked_stone_bricks", + "silverfishcrackstonebrickblock": "infested_cracked_stone_bricks", + "silverfishcrstonebrickblock": "infested_cracked_stone_bricks", + "silverfishcstonebrickblock": "infested_cracked_stone_bricks", + "sfishcrackedstonebrickblock": "infested_cracked_stone_bricks", + "sfishcrackstonebrickblock": "infested_cracked_stone_bricks", + "sfishcrstonebrickblock": "infested_cracked_stone_bricks", + "sfishcstonebrickblock": "infested_cracked_stone_bricks", + "fishcrackedstonebrickblock": "infested_cracked_stone_bricks", + "fishcrackstonebrickblock": "infested_cracked_stone_bricks", + "fishcrstonebrickblock": "infested_cracked_stone_bricks", + "fishcstonebrickblock": "infested_cracked_stone_bricks", + "infestedcrackedstonebrickblock": "infested_cracked_stone_bricks", + "infestedcrackstonebrickblock": "infested_cracked_stone_bricks", + "infestedcrstonebrickblock": "infested_cracked_stone_bricks", + "infestedcstonebrickblock": "infested_cracked_stone_bricks", + "monstereggcrackedstonebrickblock": "infested_cracked_stone_bricks", + "monstereggcrackstonebrickblock": "infested_cracked_stone_bricks", + "monstereggcrstonebrickblock": "infested_cracked_stone_bricks", + "monstereggcstonebrickblock": "infested_cracked_stone_bricks", + "meggcrackedstonebrickblock": "infested_cracked_stone_bricks", + "meggcrackstonebrickblock": "infested_cracked_stone_bricks", + "meggcrstonebrickblock": "infested_cracked_stone_bricks", + "meggcstonebrickblock": "infested_cracked_stone_bricks", + "trapcrackedstonebrickblock": "infested_cracked_stone_bricks", + "trapcrackstonebrickblock": "infested_cracked_stone_bricks", + "trapcrstonebrickblock": "infested_cracked_stone_bricks", + "trapcstonebrickblock": "infested_cracked_stone_bricks", + "sfcrackedstonebrickblock": "infested_cracked_stone_bricks", + "sfcrackstonebrickblock": "infested_cracked_stone_bricks", + "sfcrstonebrickblock": "infested_cracked_stone_bricks", + "sfcstonebrickblock": "infested_cracked_stone_bricks", + "mecrackedstonebrickblock": "infested_cracked_stone_bricks", + "mecrackstonebrickblock": "infested_cracked_stone_bricks", + "mecrstonebrickblock": "infested_cracked_stone_bricks", + "mecstonebrickblock": "infested_cracked_stone_bricks", + "silverfishcrackedstonebb": "infested_cracked_stone_bricks", + "silverfishcrackstonebb": "infested_cracked_stone_bricks", + "silverfishcrstonebb": "infested_cracked_stone_bricks", + "silverfishcstonebb": "infested_cracked_stone_bricks", + "sfishcrackedstonebb": "infested_cracked_stone_bricks", + "sfishcrackstonebb": "infested_cracked_stone_bricks", + "sfishcrstonebb": "infested_cracked_stone_bricks", + "sfishcstonebb": "infested_cracked_stone_bricks", + "fishcrackedstonebb": "infested_cracked_stone_bricks", + "fishcrackstonebb": "infested_cracked_stone_bricks", + "fishcrstonebb": "infested_cracked_stone_bricks", + "fishcstonebb": "infested_cracked_stone_bricks", + "infestedcrackedstonebb": "infested_cracked_stone_bricks", + "infestedcrackstonebb": "infested_cracked_stone_bricks", + "infestedcrstonebb": "infested_cracked_stone_bricks", + "infestedcstonebb": "infested_cracked_stone_bricks", + "monstereggcrackedstonebb": "infested_cracked_stone_bricks", + "monstereggcrackstonebb": "infested_cracked_stone_bricks", + "monstereggcrstonebb": "infested_cracked_stone_bricks", + "monstereggcstonebb": "infested_cracked_stone_bricks", + "meggcrackedstonebb": "infested_cracked_stone_bricks", + "meggcrackstonebb": "infested_cracked_stone_bricks", + "meggcrstonebb": "infested_cracked_stone_bricks", + "meggcstonebb": "infested_cracked_stone_bricks", + "trapcrackedstonebb": "infested_cracked_stone_bricks", + "trapcrackstonebb": "infested_cracked_stone_bricks", + "trapcrstonebb": "infested_cracked_stone_bricks", + "trapcstonebb": "infested_cracked_stone_bricks", + "sfcrackedstonebb": "infested_cracked_stone_bricks", + "sfcrackstonebb": "infested_cracked_stone_bricks", + "sfcrstonebb": "infested_cracked_stone_bricks", + "sfcstonebb": "infested_cracked_stone_bricks", + "mecrackedstonebb": "infested_cracked_stone_bricks", + "mecrackstonebb": "infested_cracked_stone_bricks", + "mecrstonebb": "infested_cracked_stone_bricks", + "mecstonebb": "infested_cracked_stone_bricks", + "silverfishcrackedsbrick": "infested_cracked_stone_bricks", + "silverfishcracksbrick": "infested_cracked_stone_bricks", + "silverfishcrsbrick": "infested_cracked_stone_bricks", + "silverfishcsbrick": "infested_cracked_stone_bricks", + "sfishcrackedsbrick": "infested_cracked_stone_bricks", + "sfishcracksbrick": "infested_cracked_stone_bricks", + "sfishcrsbrick": "infested_cracked_stone_bricks", + "sfishcsbrick": "infested_cracked_stone_bricks", + "fishcrackedsbrick": "infested_cracked_stone_bricks", + "fishcracksbrick": "infested_cracked_stone_bricks", + "fishcrsbrick": "infested_cracked_stone_bricks", + "fishcsbrick": "infested_cracked_stone_bricks", + "infestedcrackedsbrick": "infested_cracked_stone_bricks", + "infestedcracksbrick": "infested_cracked_stone_bricks", + "infestedcrsbrick": "infested_cracked_stone_bricks", + "infestedcsbrick": "infested_cracked_stone_bricks", + "monstereggcrackedsbrick": "infested_cracked_stone_bricks", + "monstereggcracksbrick": "infested_cracked_stone_bricks", + "monstereggcrsbrick": "infested_cracked_stone_bricks", + "monstereggcsbrick": "infested_cracked_stone_bricks", + "meggcrackedsbrick": "infested_cracked_stone_bricks", + "meggcracksbrick": "infested_cracked_stone_bricks", + "meggcrsbrick": "infested_cracked_stone_bricks", + "meggcsbrick": "infested_cracked_stone_bricks", + "trapcrackedsbrick": "infested_cracked_stone_bricks", + "trapcracksbrick": "infested_cracked_stone_bricks", + "trapcrsbrick": "infested_cracked_stone_bricks", + "trapcsbrick": "infested_cracked_stone_bricks", + "sfcrackedsbrick": "infested_cracked_stone_bricks", + "sfcracksbrick": "infested_cracked_stone_bricks", + "sfcrsbrick": "infested_cracked_stone_bricks", + "sfcsbrick": "infested_cracked_stone_bricks", + "mecrackedsbrick": "infested_cracked_stone_bricks", + "mecracksbrick": "infested_cracked_stone_bricks", + "mecrsbrick": "infested_cracked_stone_bricks", + "mecsbrick": "infested_cracked_stone_bricks", + "silverfishcrackedsbricks": "infested_cracked_stone_bricks", + "silverfishcracksbricks": "infested_cracked_stone_bricks", + "silverfishcrsbricks": "infested_cracked_stone_bricks", + "silverfishcsbricks": "infested_cracked_stone_bricks", + "sfishcrackedsbricks": "infested_cracked_stone_bricks", + "sfishcracksbricks": "infested_cracked_stone_bricks", + "sfishcrsbricks": "infested_cracked_stone_bricks", + "sfishcsbricks": "infested_cracked_stone_bricks", + "fishcrackedsbricks": "infested_cracked_stone_bricks", + "fishcracksbricks": "infested_cracked_stone_bricks", + "fishcrsbricks": "infested_cracked_stone_bricks", + "fishcsbricks": "infested_cracked_stone_bricks", + "infestedcrackedsbricks": "infested_cracked_stone_bricks", + "infestedcracksbricks": "infested_cracked_stone_bricks", + "infestedcrsbricks": "infested_cracked_stone_bricks", + "infestedcsbricks": "infested_cracked_stone_bricks", + "monstereggcrackedsbricks": "infested_cracked_stone_bricks", + "monstereggcracksbricks": "infested_cracked_stone_bricks", + "monstereggcrsbricks": "infested_cracked_stone_bricks", + "monstereggcsbricks": "infested_cracked_stone_bricks", + "meggcrackedsbricks": "infested_cracked_stone_bricks", + "meggcracksbricks": "infested_cracked_stone_bricks", + "meggcrsbricks": "infested_cracked_stone_bricks", + "meggcsbricks": "infested_cracked_stone_bricks", + "trapcrackedsbricks": "infested_cracked_stone_bricks", + "trapcracksbricks": "infested_cracked_stone_bricks", + "trapcrsbricks": "infested_cracked_stone_bricks", + "trapcsbricks": "infested_cracked_stone_bricks", + "sfcrackedsbricks": "infested_cracked_stone_bricks", + "sfcracksbricks": "infested_cracked_stone_bricks", + "sfcrsbricks": "infested_cracked_stone_bricks", + "sfcsbricks": "infested_cracked_stone_bricks", + "mecrackedsbricks": "infested_cracked_stone_bricks", + "mecracksbricks": "infested_cracked_stone_bricks", + "mecrsbricks": "infested_cracked_stone_bricks", + "mecsbricks": "infested_cracked_stone_bricks", + "silverfishcrackedsbrickblock": "infested_cracked_stone_bricks", + "silverfishcracksbrickblock": "infested_cracked_stone_bricks", + "silverfishcrsbrickblock": "infested_cracked_stone_bricks", + "silverfishcsbrickblock": "infested_cracked_stone_bricks", + "sfishcrackedsbrickblock": "infested_cracked_stone_bricks", + "sfishcracksbrickblock": "infested_cracked_stone_bricks", + "sfishcrsbrickblock": "infested_cracked_stone_bricks", + "sfishcsbrickblock": "infested_cracked_stone_bricks", + "fishcrackedsbrickblock": "infested_cracked_stone_bricks", + "fishcracksbrickblock": "infested_cracked_stone_bricks", + "fishcrsbrickblock": "infested_cracked_stone_bricks", + "fishcsbrickblock": "infested_cracked_stone_bricks", + "infestedcrackedsbrickblock": "infested_cracked_stone_bricks", + "infestedcracksbrickblock": "infested_cracked_stone_bricks", + "infestedcrsbrickblock": "infested_cracked_stone_bricks", + "infestedcsbrickblock": "infested_cracked_stone_bricks", + "monstereggcrackedsbrickblock": "infested_cracked_stone_bricks", + "monstereggcracksbrickblock": "infested_cracked_stone_bricks", + "monstereggcrsbrickblock": "infested_cracked_stone_bricks", + "monstereggcsbrickblock": "infested_cracked_stone_bricks", + "meggcrackedsbrickblock": "infested_cracked_stone_bricks", + "meggcracksbrickblock": "infested_cracked_stone_bricks", + "meggcrsbrickblock": "infested_cracked_stone_bricks", + "meggcsbrickblock": "infested_cracked_stone_bricks", + "trapcrackedsbrickblock": "infested_cracked_stone_bricks", + "trapcracksbrickblock": "infested_cracked_stone_bricks", + "trapcrsbrickblock": "infested_cracked_stone_bricks", + "trapcsbrickblock": "infested_cracked_stone_bricks", + "sfcrackedsbrickblock": "infested_cracked_stone_bricks", + "sfcracksbrickblock": "infested_cracked_stone_bricks", + "sfcrsbrickblock": "infested_cracked_stone_bricks", + "sfcsbrickblock": "infested_cracked_stone_bricks", + "mecrackedsbrickblock": "infested_cracked_stone_bricks", + "mecracksbrickblock": "infested_cracked_stone_bricks", + "mecrsbrickblock": "infested_cracked_stone_bricks", + "mecsbrickblock": "infested_cracked_stone_bricks", + "silverfishcrackedstonebricks": "infested_cracked_stone_bricks", + "silverfishcrackstonebricks": "infested_cracked_stone_bricks", + "silverfishcrstonebricks": "infested_cracked_stone_bricks", + "silverfishcstonebricks": "infested_cracked_stone_bricks", + "sfishcrackedstonebricks": "infested_cracked_stone_bricks", + "sfishcrackstonebricks": "infested_cracked_stone_bricks", + "sfishcrstonebricks": "infested_cracked_stone_bricks", + "sfishcstonebricks": "infested_cracked_stone_bricks", + "fishcrackedstonebricks": "infested_cracked_stone_bricks", + "fishcrackstonebricks": "infested_cracked_stone_bricks", + "fishcrstonebricks": "infested_cracked_stone_bricks", + "fishcstonebricks": "infested_cracked_stone_bricks", + "infestedcrackstonebricks": "infested_cracked_stone_bricks", + "infestedcrstonebricks": "infested_cracked_stone_bricks", + "infestedcstonebricks": "infested_cracked_stone_bricks", + "monstereggcrackedstonebricks": "infested_cracked_stone_bricks", + "monstereggcrackstonebricks": "infested_cracked_stone_bricks", + "monstereggcrstonebricks": "infested_cracked_stone_bricks", + "monstereggcstonebricks": "infested_cracked_stone_bricks", + "meggcrackedstonebricks": "infested_cracked_stone_bricks", + "meggcrackstonebricks": "infested_cracked_stone_bricks", + "meggcrstonebricks": "infested_cracked_stone_bricks", + "meggcstonebricks": "infested_cracked_stone_bricks", + "trapcrackedstonebricks": "infested_cracked_stone_bricks", + "trapcrackstonebricks": "infested_cracked_stone_bricks", + "trapcrstonebricks": "infested_cracked_stone_bricks", + "trapcstonebricks": "infested_cracked_stone_bricks", + "sfcrackedstonebricks": "infested_cracked_stone_bricks", + "sfcrackstonebricks": "infested_cracked_stone_bricks", + "sfcrstonebricks": "infested_cracked_stone_bricks", + "sfcstonebricks": "infested_cracked_stone_bricks", + "mecrackedstonebricks": "infested_cracked_stone_bricks", + "mecrackstonebricks": "infested_cracked_stone_bricks", + "mecrstonebricks": "infested_cracked_stone_bricks", + "mecstonebricks": "infested_cracked_stone_bricks", + "silverfishcrackedsbb": "infested_cracked_stone_bricks", + "silverfishcracksbb": "infested_cracked_stone_bricks", + "silverfishcrsbb": "infested_cracked_stone_bricks", + "silverfishcsbb": "infested_cracked_stone_bricks", + "sfishcrackedsbb": "infested_cracked_stone_bricks", + "sfishcracksbb": "infested_cracked_stone_bricks", + "sfishcrsbb": "infested_cracked_stone_bricks", + "sfishcsbb": "infested_cracked_stone_bricks", + "fishcrackedsbb": "infested_cracked_stone_bricks", + "fishcracksbb": "infested_cracked_stone_bricks", + "fishcrsbb": "infested_cracked_stone_bricks", + "fishcsbb": "infested_cracked_stone_bricks", + "infestedcrackedsbb": "infested_cracked_stone_bricks", + "infestedcracksbb": "infested_cracked_stone_bricks", + "infestedcrsbb": "infested_cracked_stone_bricks", + "infestedcsbb": "infested_cracked_stone_bricks", + "monstereggcrackedsbb": "infested_cracked_stone_bricks", + "monstereggcracksbb": "infested_cracked_stone_bricks", + "monstereggcrsbb": "infested_cracked_stone_bricks", + "monstereggcsbb": "infested_cracked_stone_bricks", + "meggcrackedsbb": "infested_cracked_stone_bricks", + "meggcracksbb": "infested_cracked_stone_bricks", + "meggcrsbb": "infested_cracked_stone_bricks", + "meggcsbb": "infested_cracked_stone_bricks", + "trapcrackedsbb": "infested_cracked_stone_bricks", + "trapcracksbb": "infested_cracked_stone_bricks", + "trapcrsbb": "infested_cracked_stone_bricks", + "trapcsbb": "infested_cracked_stone_bricks", + "sfcrackedsbb": "infested_cracked_stone_bricks", + "sfcracksbb": "infested_cracked_stone_bricks", + "sfcrsbb": "infested_cracked_stone_bricks", + "sfcsbb": "infested_cracked_stone_bricks", + "mecrackedsbb": "infested_cracked_stone_bricks", + "mecracksbb": "infested_cracked_stone_bricks", + "mecrsbb": "infested_cracked_stone_bricks", + "mecsbb": "infested_cracked_stone_bricks", + "infested_mossy_stone_bricks": { + "material": "INFESTED_MOSSY_STONE_BRICKS" + }, + "infestedmossystonebricks": "infested_mossy_stone_bricks", + "silverfishmossystonebrick": "infested_mossy_stone_bricks", + "silverfishmossstonebrick": "infested_mossy_stone_bricks", + "silverfishmstonebrick": "infested_mossy_stone_bricks", + "sfishmossystonebrick": "infested_mossy_stone_bricks", + "sfishmossstonebrick": "infested_mossy_stone_bricks", + "sfishmstonebrick": "infested_mossy_stone_bricks", + "fishmossystonebrick": "infested_mossy_stone_bricks", + "fishmossstonebrick": "infested_mossy_stone_bricks", + "fishmstonebrick": "infested_mossy_stone_bricks", + "infestedmossystonebrick": "infested_mossy_stone_bricks", + "infestedmossstonebrick": "infested_mossy_stone_bricks", + "infestedmstonebrick": "infested_mossy_stone_bricks", + "monstereggmossystonebrick": "infested_mossy_stone_bricks", + "monstereggmossstonebrick": "infested_mossy_stone_bricks", + "monstereggmstonebrick": "infested_mossy_stone_bricks", + "meggmossystonebrick": "infested_mossy_stone_bricks", + "meggmossstonebrick": "infested_mossy_stone_bricks", + "meggmstonebrick": "infested_mossy_stone_bricks", + "trapmossystonebrick": "infested_mossy_stone_bricks", + "trapmossstonebrick": "infested_mossy_stone_bricks", + "trapmstonebrick": "infested_mossy_stone_bricks", + "sfmossystonebrick": "infested_mossy_stone_bricks", + "sfmossstonebrick": "infested_mossy_stone_bricks", + "sfmstonebrick": "infested_mossy_stone_bricks", + "memossystonebrick": "infested_mossy_stone_bricks", + "memossstonebrick": "infested_mossy_stone_bricks", + "memstonebrick": "infested_mossy_stone_bricks", + "silverfishmossystonebrickblock": "infested_mossy_stone_bricks", + "silverfishmossstonebrickblock": "infested_mossy_stone_bricks", + "silverfishmstonebrickblock": "infested_mossy_stone_bricks", + "sfishmossystonebrickblock": "infested_mossy_stone_bricks", + "sfishmossstonebrickblock": "infested_mossy_stone_bricks", + "sfishmstonebrickblock": "infested_mossy_stone_bricks", + "fishmossystonebrickblock": "infested_mossy_stone_bricks", + "fishmossstonebrickblock": "infested_mossy_stone_bricks", + "fishmstonebrickblock": "infested_mossy_stone_bricks", + "infestedmossystonebrickblock": "infested_mossy_stone_bricks", + "infestedmossstonebrickblock": "infested_mossy_stone_bricks", + "infestedmstonebrickblock": "infested_mossy_stone_bricks", + "monstereggmossystonebrickblock": "infested_mossy_stone_bricks", + "monstereggmossstonebrickblock": "infested_mossy_stone_bricks", + "monstereggmstonebrickblock": "infested_mossy_stone_bricks", + "meggmossystonebrickblock": "infested_mossy_stone_bricks", + "meggmossstonebrickblock": "infested_mossy_stone_bricks", + "meggmstonebrickblock": "infested_mossy_stone_bricks", + "trapmossystonebrickblock": "infested_mossy_stone_bricks", + "trapmossstonebrickblock": "infested_mossy_stone_bricks", + "trapmstonebrickblock": "infested_mossy_stone_bricks", + "sfmossystonebrickblock": "infested_mossy_stone_bricks", + "sfmossstonebrickblock": "infested_mossy_stone_bricks", + "sfmstonebrickblock": "infested_mossy_stone_bricks", + "memossystonebrickblock": "infested_mossy_stone_bricks", + "memossstonebrickblock": "infested_mossy_stone_bricks", + "memstonebrickblock": "infested_mossy_stone_bricks", + "silverfishmossystonebb": "infested_mossy_stone_bricks", + "silverfishmossstonebb": "infested_mossy_stone_bricks", + "silverfishmstonebb": "infested_mossy_stone_bricks", + "sfishmossystonebb": "infested_mossy_stone_bricks", + "sfishmossstonebb": "infested_mossy_stone_bricks", + "sfishmstonebb": "infested_mossy_stone_bricks", + "fishmossystonebb": "infested_mossy_stone_bricks", + "fishmossstonebb": "infested_mossy_stone_bricks", + "fishmstonebb": "infested_mossy_stone_bricks", + "infestedmossystonebb": "infested_mossy_stone_bricks", + "infestedmossstonebb": "infested_mossy_stone_bricks", + "infestedmstonebb": "infested_mossy_stone_bricks", + "monstereggmossystonebb": "infested_mossy_stone_bricks", + "monstereggmossstonebb": "infested_mossy_stone_bricks", + "monstereggmstonebb": "infested_mossy_stone_bricks", + "meggmossystonebb": "infested_mossy_stone_bricks", + "meggmossstonebb": "infested_mossy_stone_bricks", + "meggmstonebb": "infested_mossy_stone_bricks", + "trapmossystonebb": "infested_mossy_stone_bricks", + "trapmossstonebb": "infested_mossy_stone_bricks", + "trapmstonebb": "infested_mossy_stone_bricks", + "sfmossystonebb": "infested_mossy_stone_bricks", + "sfmossstonebb": "infested_mossy_stone_bricks", + "sfmstonebb": "infested_mossy_stone_bricks", + "memossystonebb": "infested_mossy_stone_bricks", + "memossstonebb": "infested_mossy_stone_bricks", + "memstonebb": "infested_mossy_stone_bricks", + "silverfishmossysbrick": "infested_mossy_stone_bricks", + "silverfishmosssbrick": "infested_mossy_stone_bricks", + "silverfishmsbrick": "infested_mossy_stone_bricks", + "sfishmossysbrick": "infested_mossy_stone_bricks", + "sfishmosssbrick": "infested_mossy_stone_bricks", + "sfishmsbrick": "infested_mossy_stone_bricks", + "fishmossysbrick": "infested_mossy_stone_bricks", + "fishmosssbrick": "infested_mossy_stone_bricks", + "fishmsbrick": "infested_mossy_stone_bricks", + "infestedmossysbrick": "infested_mossy_stone_bricks", + "infestedmosssbrick": "infested_mossy_stone_bricks", + "infestedmsbrick": "infested_mossy_stone_bricks", + "monstereggmossysbrick": "infested_mossy_stone_bricks", + "monstereggmosssbrick": "infested_mossy_stone_bricks", + "monstereggmsbrick": "infested_mossy_stone_bricks", + "meggmossysbrick": "infested_mossy_stone_bricks", + "meggmosssbrick": "infested_mossy_stone_bricks", + "meggmsbrick": "infested_mossy_stone_bricks", + "trapmossysbrick": "infested_mossy_stone_bricks", + "trapmosssbrick": "infested_mossy_stone_bricks", + "trapmsbrick": "infested_mossy_stone_bricks", + "sfmossysbrick": "infested_mossy_stone_bricks", + "sfmosssbrick": "infested_mossy_stone_bricks", + "sfmsbrick": "infested_mossy_stone_bricks", + "memossysbrick": "infested_mossy_stone_bricks", + "memosssbrick": "infested_mossy_stone_bricks", + "memsbrick": "infested_mossy_stone_bricks", + "silverfishmossysbricks": "infested_mossy_stone_bricks", + "silverfishmosssbricks": "infested_mossy_stone_bricks", + "silverfishmsbricks": "infested_mossy_stone_bricks", + "sfishmossysbricks": "infested_mossy_stone_bricks", + "sfishmosssbricks": "infested_mossy_stone_bricks", + "sfishmsbricks": "infested_mossy_stone_bricks", + "fishmossysbricks": "infested_mossy_stone_bricks", + "fishmosssbricks": "infested_mossy_stone_bricks", + "fishmsbricks": "infested_mossy_stone_bricks", + "infestedmossysbricks": "infested_mossy_stone_bricks", + "infestedmosssbricks": "infested_mossy_stone_bricks", + "infestedmsbricks": "infested_mossy_stone_bricks", + "monstereggmossysbricks": "infested_mossy_stone_bricks", + "monstereggmosssbricks": "infested_mossy_stone_bricks", + "monstereggmsbricks": "infested_mossy_stone_bricks", + "meggmossysbricks": "infested_mossy_stone_bricks", + "meggmosssbricks": "infested_mossy_stone_bricks", + "meggmsbricks": "infested_mossy_stone_bricks", + "trapmossysbricks": "infested_mossy_stone_bricks", + "trapmosssbricks": "infested_mossy_stone_bricks", + "trapmsbricks": "infested_mossy_stone_bricks", + "sfmossysbricks": "infested_mossy_stone_bricks", + "sfmosssbricks": "infested_mossy_stone_bricks", + "sfmsbricks": "infested_mossy_stone_bricks", + "memossysbricks": "infested_mossy_stone_bricks", + "memosssbricks": "infested_mossy_stone_bricks", + "memsbricks": "infested_mossy_stone_bricks", + "silverfishmossysbrickblock": "infested_mossy_stone_bricks", + "silverfishmosssbrickblock": "infested_mossy_stone_bricks", + "silverfishmsbrickblock": "infested_mossy_stone_bricks", + "sfishmossysbrickblock": "infested_mossy_stone_bricks", + "sfishmosssbrickblock": "infested_mossy_stone_bricks", + "sfishmsbrickblock": "infested_mossy_stone_bricks", + "fishmossysbrickblock": "infested_mossy_stone_bricks", + "fishmosssbrickblock": "infested_mossy_stone_bricks", + "fishmsbrickblock": "infested_mossy_stone_bricks", + "infestedmossysbrickblock": "infested_mossy_stone_bricks", + "infestedmosssbrickblock": "infested_mossy_stone_bricks", + "infestedmsbrickblock": "infested_mossy_stone_bricks", + "monstereggmossysbrickblock": "infested_mossy_stone_bricks", + "monstereggmosssbrickblock": "infested_mossy_stone_bricks", + "monstereggmsbrickblock": "infested_mossy_stone_bricks", + "meggmossysbrickblock": "infested_mossy_stone_bricks", + "meggmosssbrickblock": "infested_mossy_stone_bricks", + "meggmsbrickblock": "infested_mossy_stone_bricks", + "trapmossysbrickblock": "infested_mossy_stone_bricks", + "trapmosssbrickblock": "infested_mossy_stone_bricks", + "trapmsbrickblock": "infested_mossy_stone_bricks", + "sfmossysbrickblock": "infested_mossy_stone_bricks", + "sfmosssbrickblock": "infested_mossy_stone_bricks", + "sfmsbrickblock": "infested_mossy_stone_bricks", + "memossysbrickblock": "infested_mossy_stone_bricks", + "memosssbrickblock": "infested_mossy_stone_bricks", + "memsbrickblock": "infested_mossy_stone_bricks", + "silverfishmossystonebricks": "infested_mossy_stone_bricks", + "silverfishmossstonebricks": "infested_mossy_stone_bricks", + "silverfishmstonebricks": "infested_mossy_stone_bricks", + "sfishmossystonebricks": "infested_mossy_stone_bricks", + "sfishmossstonebricks": "infested_mossy_stone_bricks", + "sfishmstonebricks": "infested_mossy_stone_bricks", + "fishmossystonebricks": "infested_mossy_stone_bricks", + "fishmossstonebricks": "infested_mossy_stone_bricks", + "fishmstonebricks": "infested_mossy_stone_bricks", + "infestedmossstonebricks": "infested_mossy_stone_bricks", + "infestedmstonebricks": "infested_mossy_stone_bricks", + "monstereggmossystonebricks": "infested_mossy_stone_bricks", + "monstereggmossstonebricks": "infested_mossy_stone_bricks", + "monstereggmstonebricks": "infested_mossy_stone_bricks", + "meggmossystonebricks": "infested_mossy_stone_bricks", + "meggmossstonebricks": "infested_mossy_stone_bricks", + "meggmstonebricks": "infested_mossy_stone_bricks", + "trapmossystonebricks": "infested_mossy_stone_bricks", + "trapmossstonebricks": "infested_mossy_stone_bricks", + "trapmstonebricks": "infested_mossy_stone_bricks", + "sfmossystonebricks": "infested_mossy_stone_bricks", + "sfmossstonebricks": "infested_mossy_stone_bricks", + "sfmstonebricks": "infested_mossy_stone_bricks", + "memossystonebricks": "infested_mossy_stone_bricks", + "memossstonebricks": "infested_mossy_stone_bricks", + "memstonebricks": "infested_mossy_stone_bricks", + "silverfishmossysbb": "infested_mossy_stone_bricks", + "silverfishmosssbb": "infested_mossy_stone_bricks", + "silverfishmsbb": "infested_mossy_stone_bricks", + "sfishmossysbb": "infested_mossy_stone_bricks", + "sfishmosssbb": "infested_mossy_stone_bricks", + "sfishmsbb": "infested_mossy_stone_bricks", + "fishmossysbb": "infested_mossy_stone_bricks", + "fishmosssbb": "infested_mossy_stone_bricks", + "fishmsbb": "infested_mossy_stone_bricks", + "infestedmossysbb": "infested_mossy_stone_bricks", + "infestedmosssbb": "infested_mossy_stone_bricks", + "infestedmsbb": "infested_mossy_stone_bricks", + "monstereggmossysbb": "infested_mossy_stone_bricks", + "monstereggmosssbb": "infested_mossy_stone_bricks", + "monstereggmsbb": "infested_mossy_stone_bricks", + "meggmossysbb": "infested_mossy_stone_bricks", + "meggmosssbb": "infested_mossy_stone_bricks", + "meggmsbb": "infested_mossy_stone_bricks", + "trapmossysbb": "infested_mossy_stone_bricks", + "trapmosssbb": "infested_mossy_stone_bricks", + "trapmsbb": "infested_mossy_stone_bricks", + "sfmossysbb": "infested_mossy_stone_bricks", + "sfmosssbb": "infested_mossy_stone_bricks", + "sfmsbb": "infested_mossy_stone_bricks", + "memossysbb": "infested_mossy_stone_bricks", + "memosssbb": "infested_mossy_stone_bricks", + "memsbb": "infested_mossy_stone_bricks", + "infested_stone": { + "material": "INFESTED_STONE" + }, + "infestedstone": "infested_stone", + "silverfishstone": "infested_stone", + "sfishstone": "infested_stone", + "fishstone": "infested_stone", + "monstereggstone": "infested_stone", + "meggstone": "infested_stone", + "trapstone": "infested_stone", + "sfstone": "infested_stone", + "mestone": "infested_stone", + "silverfishsmoothstone": "infested_stone", + "sfishsmoothstone": "infested_stone", + "fishsmoothstone": "infested_stone", + "infestedsmoothstone": "infested_stone", + "monstereggsmoothstone": "infested_stone", + "meggsmoothstone": "infested_stone", + "trapsmoothstone": "infested_stone", + "sfsmoothstone": "infested_stone", + "mesmoothstone": "infested_stone", + "silverfishsstone": "infested_stone", + "sfishsstone": "infested_stone", + "fishsstone": "infested_stone", + "infestedsstone": "infested_stone", + "monstereggsstone": "infested_stone", + "meggsstone": "infested_stone", + "trapsstone": "infested_stone", + "sfsstone": "infested_stone", + "messtone": "infested_stone", + "infested_stone_bricks": { + "material": "INFESTED_STONE_BRICKS" + }, + "infestedstonebricks": "infested_stone_bricks", + "silverfishstonebrick": "infested_stone_bricks", + "sfishstonebrick": "infested_stone_bricks", + "fishstonebrick": "infested_stone_bricks", + "infestedstonebrick": "infested_stone_bricks", + "monstereggstonebrick": "infested_stone_bricks", + "meggstonebrick": "infested_stone_bricks", + "trapstonebrick": "infested_stone_bricks", + "sfstonebrick": "infested_stone_bricks", + "mestonebrick": "infested_stone_bricks", + "silverfishstonebrickblock": "infested_stone_bricks", + "sfishstonebrickblock": "infested_stone_bricks", + "fishstonebrickblock": "infested_stone_bricks", + "infestedstonebrickblock": "infested_stone_bricks", + "monstereggstonebrickblock": "infested_stone_bricks", + "meggstonebrickblock": "infested_stone_bricks", + "trapstonebrickblock": "infested_stone_bricks", + "sfstonebrickblock": "infested_stone_bricks", + "mestonebrickblock": "infested_stone_bricks", + "silverfishstonebb": "infested_stone_bricks", + "sfishstonebb": "infested_stone_bricks", + "fishstonebb": "infested_stone_bricks", + "infestedstonebb": "infested_stone_bricks", + "monstereggstonebb": "infested_stone_bricks", + "meggstonebb": "infested_stone_bricks", + "trapstonebb": "infested_stone_bricks", + "sfstonebb": "infested_stone_bricks", + "mestonebb": "infested_stone_bricks", + "silverfishsbrick": "infested_stone_bricks", + "sfishsbrick": "infested_stone_bricks", + "fishsbrick": "infested_stone_bricks", + "infestedsbrick": "infested_stone_bricks", + "monstereggsbrick": "infested_stone_bricks", + "meggsbrick": "infested_stone_bricks", + "trapsbrick": "infested_stone_bricks", + "sfsbrick": "infested_stone_bricks", + "mesbrick": "infested_stone_bricks", + "silverfishsbricks": "infested_stone_bricks", + "sfishsbricks": "infested_stone_bricks", + "fishsbricks": "infested_stone_bricks", + "infestedsbricks": "infested_stone_bricks", + "monstereggsbricks": "infested_stone_bricks", + "meggsbricks": "infested_stone_bricks", + "trapsbricks": "infested_stone_bricks", + "sfsbricks": "infested_stone_bricks", + "mesbricks": "infested_stone_bricks", + "silverfishsbrickblock": "infested_stone_bricks", + "sfishsbrickblock": "infested_stone_bricks", + "fishsbrickblock": "infested_stone_bricks", + "infestedsbrickblock": "infested_stone_bricks", + "monstereggsbrickblock": "infested_stone_bricks", + "meggsbrickblock": "infested_stone_bricks", + "trapsbrickblock": "infested_stone_bricks", + "sfsbrickblock": "infested_stone_bricks", + "mesbrickblock": "infested_stone_bricks", + "silverfishstonebricks": "infested_stone_bricks", + "sfishstonebricks": "infested_stone_bricks", + "fishstonebricks": "infested_stone_bricks", + "monstereggstonebricks": "infested_stone_bricks", + "meggstonebricks": "infested_stone_bricks", + "trapstonebricks": "infested_stone_bricks", + "sfstonebricks": "infested_stone_bricks", + "mestonebricks": "infested_stone_bricks", + "silverfishsbb": "infested_stone_bricks", + "sfishsbb": "infested_stone_bricks", + "fishsbb": "infested_stone_bricks", + "infestedsbb": "infested_stone_bricks", + "monstereggsbb": "infested_stone_bricks", + "meggsbb": "infested_stone_bricks", + "trapsbb": "infested_stone_bricks", + "sfsbb": "infested_stone_bricks", + "mesbb": "infested_stone_bricks", + "ink_sac": { + "material": "INK_SAC" + }, + "inksac": "ink_sac", + "iron_axe": { + "material": "IRON_AXE" + }, + "ironaxe": "iron_axe", + "iaxe": "iron_axe", + "steelaxe": "iron_axe", + "saxe": "stone_axe", + "staxe": "iron_axe", + "iron_bars": { + "material": "IRON_BARS" + }, + "ironbars": "iron_bars", + "ironbarsb": "iron_bars", + "ironbarsblock": "iron_bars", + "ironfence": "iron_bars", + "metalbars": "iron_bars", + "metalbarsb": "iron_bars", + "metalbarsblock": "iron_bars", + "metalfence": "iron_bars", + "jailbars": "iron_bars", + "jailbarsb": "iron_bars", + "jailbarsblock": "iron_bars", + "jailfence": "iron_bars", + "mbars": "iron_bars", + "mbarsb": "iron_bars", + "mbarsblock": "iron_bars", + "mfence": "iron_bars", + "jbars": "iron_bars", + "jbarsb": "iron_bars", + "jbarsblock": "iron_bars", + "ibars": "iron_bars", + "ibarsb": "iron_bars", + "ibarsblock": "iron_bars", + "ifence": "iron_bars", + "iron_block": { + "material": "IRON_BLOCK" + }, + "ironblock": "iron_block", + "blockiron": "iron_block", + "iblock": "iron_block", + "blocki": "iron_block", + "steelblock": "iron_block", + "blocksteel": "iron_block", + "sblock": "iron_block", + "blocks": "iron_block", + "stblock": "iron_block", + "blockst": "iron_block", + "iron_boots": { + "material": "IRON_BOOTS" + }, + "ironboots": "iron_boots", + "ironshoes": "iron_boots", + "iboots": "iron_boots", + "ishoes": "iron_boots", + "steelboots": "iron_boots", + "steelshoes": "iron_boots", + "sboots": "iron_boots", + "sshoes": "iron_boots", + "stboots": "iron_boots", + "stshoes": "iron_boots", + "iron_chestplate": { + "material": "IRON_CHESTPLATE" + }, + "ironchestplate": "iron_chestplate", + "ironplatebody": "iron_chestplate", + "ironplate": "iron_chestplate", + "ironshirt": "iron_chestplate", + "irontunic": "iron_chestplate", + "ichestplate": "iron_chestplate", + "iplatebody": "iron_chestplate", + "iplate": "iron_chestplate", + "ishirt": "iron_chestplate", + "itunic": "iron_chestplate", + "steelchestplate": "iron_chestplate", + "steelplatebody": "iron_chestplate", + "steelplate": "iron_chestplate", + "steelshirt": "iron_chestplate", + "steeltunic": "iron_chestplate", + "schestplate": "iron_chestplate", + "splatebody": "iron_chestplate", + "splate": "stone_pressure_plate", + "sshirt": "iron_chestplate", + "stunic": "iron_chestplate", + "stchestplate": "iron_chestplate", + "stplatebody": "iron_chestplate", + "stplate": "iron_chestplate", + "stshirt": "iron_chestplate", + "sttunic": "iron_chestplate", + "iron_door": { + "material": "IRON_DOOR" + }, + "irondoor": "iron_trapdoor", + "dooriron": "iron_trapdoor", + "idoor": "iron_trapdoor", + "doori": "iron_trapdoor", + "steeldoor": "iron_trapdoor", + "doorsteel": "iron_trapdoor", + "sdoor": "iron_trapdoor", + "doors": "iron_trapdoor", + "stdoor": "spruce_trapdoor", + "doorst": "iron_trapdoor", + "iron_helmet": { + "material": "IRON_HELMET" + }, + "ironhelmet": "iron_helmet", + "ironhelm": "iron_helmet", + "ironhat": "iron_helmet", + "ironcoif": "iron_helmet", + "ihelmet": "iron_helmet", + "ihelm": "iron_helmet", + "ihat": "iron_helmet", + "icoif": "iron_helmet", + "steelhelmet": "iron_helmet", + "steelhelm": "iron_helmet", + "steelhat": "iron_helmet", + "steelcoif": "iron_helmet", + "shelmet": "iron_helmet", + "shelm": "iron_helmet", + "shat": "iron_helmet", + "scoif": "iron_helmet", + "sthelmet": "iron_helmet", + "sthelm": "iron_helmet", + "sthat": "iron_helmet", + "stcoif": "iron_helmet", + "iron_hoe": { + "material": "IRON_HOE" + }, + "ironhoe": "iron_hoe", + "ihoe": "iron_hoe", + "steelhoe": "iron_hoe", + "shoe": "stone_hoe", + "sthoe": "iron_hoe", + "iron_horse_armor": { + "material": "IRON_HORSE_ARMOR" + }, + "ironhorsearmor": "iron_horse_armor", + "ironharmor": "iron_horse_armor", + "ironarmor": "iron_horse_armor", + "ihorsearmor": "iron_horse_armor", + "iharmor": "iron_horse_armor", + "iarmor": "iron_horse_armor", + "steelhorsearmor": "iron_horse_armor", + "steelharmor": "iron_horse_armor", + "steelarmor": "iron_horse_armor", + "shorsearmor": "iron_horse_armor", + "sharmor": "iron_horse_armor", + "sarmor": "iron_horse_armor", + "sthorsearmor": "iron_horse_armor", + "stharmor": "iron_horse_armor", + "starmor": "iron_horse_armor", + "iron_ingot": { + "material": "IRON_INGOT" + }, + "ironingot": "iron_ingot", + "ironbar": "iron_ingot", + "ironi": "iron_ingot", + "ingotiron": "iron_ingot", + "bariron": "iron_ingot", + "iiron": "iron_ingot", + "iingot": "iron_ingot", + "ibar": "iron_ingot", + "ingoti": "iron_ingot", + "bari": "iron_ingot", + "steelingot": "iron_ingot", + "steelbar": "iron_ingot", + "steeli": "iron_ingot", + "ingotsteel": "iron_ingot", + "barsteel": "iron_ingot", + "isteel": "iron_ingot", + "singot": "iron_ingot", + "sbar": "iron_ingot", + "stingot": "iron_ingot", + "stbar": "iron_ingot", + "sti": "iron_ingot", + "ingotst": "iron_ingot", + "barst": "iron_ingot", + "ist": "iron_ingot", + "iron_leggings": { + "material": "IRON_LEGGINGS" + }, + "ironleggings": "iron_leggings", + "ironlegs": "iron_leggings", + "ironpants": "iron_leggings", + "ileggings": "iron_leggings", + "ilegs": "iron_leggings", + "ipants": "iron_leggings", + "steelleggings": "iron_leggings", + "steellegs": "iron_leggings", + "steelpants": "iron_leggings", + "sleggings": "iron_leggings", + "slegs": "iron_leggings", + "spants": "iron_leggings", + "stleggings": "iron_leggings", + "stlegs": "iron_leggings", + "stpants": "iron_leggings", + "iron_nugget": { + "material": "IRON_NUGGET" + }, + "ironnugget": "iron_nugget", + "iron_ore": { + "material": "IRON_ORE" + }, + "ironore": "iron_ore", + "irono": "iron_ore", + "oreiron": "iron_ore", + "oiron": "iron_ore", + "iore": "iron_ore", + "orei": "iron_ore", + "steelore": "iron_ore", + "steelo": "iron_ore", + "oresteel": "iron_ore", + "osteel": "iron_ore", + "sore": "iron_ore", + "ores": "iron_ore", + "store": "iron_ore", + "sto": "iron_ore", + "orest": "iron_ore", + "ost": "iron_ore", + "iron_pickaxe": { + "material": "IRON_PICKAXE" + }, + "ironpickaxe": "iron_pickaxe", + "ironpick": "iron_pickaxe", + "ipickaxe": "iron_pickaxe", + "ipick": "iron_pickaxe", + "steelpickaxe": "iron_pickaxe", + "steelpick": "iron_pickaxe", + "spickaxe": "stone_pickaxe", + "spick": "stone_pickaxe", + "stpickaxe": "iron_pickaxe", + "stpick": "iron_pickaxe", + "iron_shovel": { + "material": "IRON_SHOVEL" + }, + "ironshovel": "iron_shovel", + "ironspade": "iron_shovel", + "ishovel": "iron_shovel", + "ispade": "iron_shovel", + "steelshovel": "iron_shovel", + "steelspade": "iron_shovel", + "sshovel": "stone_shovel", + "sspade": "stone_shovel", + "stshovel": "iron_shovel", + "stspade": "iron_shovel", + "iron_sword": { + "material": "IRON_SWORD" + }, + "ironsword": "iron_sword", + "isword": "iron_sword", + "steelsword": "iron_sword", + "ssword": "stone_sword", + "stsword": "iron_sword", + "iron_trapdoor": { + "material": "IRON_TRAPDOOR" + }, + "irontrapdoor": "iron_trapdoor", + "item_frame": { + "material": "ITEM_FRAME" + }, + "itemframe": "item_frame", + "jack_o_lantern": { + "material": "JACK_O_LANTERN" + }, + "jackolantern": "jack_o_lantern", + "pumpkinlantern": "jack_o_lantern", + "glowingpumpkin": "jack_o_lantern", + "lightpumpkin": "jack_o_lantern", + "jpumpkin": "jack_o_lantern", + "plantren": "jack_o_lantern", + "glowpumpkin": "jack_o_lantern", + "gpumpkin": "jack_o_lantern", + "lpumpkin": "jack_o_lantern", + "jukebox": { + "material": "JUKEBOX" + }, + "jbox": "jukebox", + "jungle_boat": { + "material": "JUNGLE_BOAT" + }, + "jungleboat": "jungle_boat", + "jboat": "jungle_boat", + "forestboat": "jungle_boat", + "fboat": "jungle_boat", + "jungle_button": { + "material": "JUNGLE_BUTTON" + }, + "junglebutton": "jungle_button", + "jungle_door": { + "material": "JUNGLE_DOOR" + }, + "jungledoor": "jungle_door", + "jungle_fence": { + "material": "JUNGLE_FENCE" + }, + "junglefence": "jungle_fence", + "jfence": "jungle_fence", + "forestfence": "jungle_fence", + "ffence": "jungle_fence", + "jungle_fence_gate": { + "material": "JUNGLE_FENCE_GATE" + }, + "junglefencegate": "jungle_fence_gate", + "junglegate": "jungle_fence_gate", + "jfencegate": "jungle_fence_gate", + "jgate": "jungle_fence_gate", + "forestfencegate": "jungle_fence_gate", + "forestgate": "jungle_fence_gate", + "ffencegate": "jungle_fence_gate", + "fgate": "jungle_fence_gate", + "jungle_leaves": { + "material": "JUNGLE_LEAVES" + }, + "jungleleaves": "jungle_leaves", + "jungletreeleaves": "jungle_leaves", + "junglelogleaves": "jungle_leaves", + "jungletrunkleaves": "jungle_leaves", + "junglewoodleaves": "jungle_leaves", + "jungletreeleaf": "jungle_leaves", + "junglelogleaf": "jungle_leaves", + "jungletrunkleaf": "jungle_leaves", + "junglewoodleaf": "jungle_leaves", + "jungleleaf": "jungle_leaves", + "jungletreeleave": "jungle_leaves", + "junglelogleave": "jungle_leaves", + "jungletrunkleave": "jungle_leaves", + "junglewoodleave": "jungle_leaves", + "jungleleave": "jungle_leaves", + "jtreeleaves": "jungle_leaves", + "jlogleaves": "jungle_leaves", + "jtrunkleaves": "jungle_leaves", + "jwoodleaves": "jungle_leaves", + "jleaves": "jungle_leaves", + "jtreeleaf": "jungle_leaves", + "jlogleaf": "jungle_leaves", + "jtrunkleaf": "jungle_leaves", + "jwoodleaf": "jungle_leaves", + "jleaf": "jungle_leaves", + "jtreeleave": "jungle_leaves", + "jlogleave": "jungle_leaves", + "jtrunkleave": "jungle_leaves", + "jwoodleave": "jungle_leaves", + "jleave": "jungle_leaves", + "foresttreeleaves": "jungle_leaves", + "forestlogleaves": "jungle_leaves", + "foresttrunkleaves": "jungle_leaves", + "forestwoodleaves": "jungle_leaves", + "forestleaves": "jungle_leaves", + "foresttreeleaf": "jungle_leaves", + "forestlogleaf": "jungle_leaves", + "foresttrunkleaf": "jungle_leaves", + "forestwoodleaf": "jungle_leaves", + "forestleaf": "jungle_leaves", + "foresttreeleave": "jungle_leaves", + "forestlogleave": "jungle_leaves", + "foresttrunkleave": "jungle_leaves", + "forestwoodleave": "jungle_leaves", + "forestleave": "jungle_leaves", + "ftreeleaves": "jungle_leaves", + "flogleaves": "jungle_leaves", + "ftrunkleaves": "jungle_leaves", + "fwoodleaves": "jungle_leaves", + "fleaves": "jungle_leaves", + "ftreeleaf": "jungle_leaves", + "flogleaf": "jungle_leaves", + "ftrunkleaf": "jungle_leaves", + "fwoodleaf": "jungle_leaves", + "fleaf": "jungle_leaves", + "ftreeleave": "jungle_leaves", + "flogleave": "jungle_leaves", + "ftrunkleave": "jungle_leaves", + "fwoodleave": "jungle_leaves", + "fleave": "jungle_leaves", + "jungle_log": { + "material": "JUNGLE_LOG" + }, + "junglelog": "jungle_log", + "jungle": "jungle_log", + "logjungle": "jungle_log", + "jungletrunk": "jungle_log", + "jungletree": "jungle_log", + "j": "jungle_log", + "logj": "jungle_log", + "jtrunk": "jungle_log", + "jlog": "jungle_log", + "jtree": "jungle_log", + "forest": "jungle_log", + "logforest": "jungle_log", + "foresttrunk": "jungle_log", + "forestlog": "jungle_log", + "foresttree": "jungle_log", + "f": "jungle_log", + "logf": "jungle_log", + "ftrunk": "jungle_log", + "flog": "jungle_log", + "ftree": "jungle_log", + "jungle_planks": { + "material": "JUNGLE_PLANKS" + }, + "jungleplanks": "jungle_planks", + "junglewoodenplank": "jungle_planks", + "junglewoodplank": "jungle_planks", + "junglewplank": "jungle_planks", + "jungleplankwooden": "jungle_planks", + "jungleplankwood": "jungle_planks", + "jungleplankw": "jungle_planks", + "jungleplank": "jungle_planks", + "jwoodenplank": "jungle_planks", + "jwoodplank": "jungle_planks", + "jwplank": "jungle_planks", + "jplankwooden": "jungle_planks", + "jplankwood": "jungle_planks", + "jplankw": "jungle_planks", + "jplank": "jungle_planks", + "forestwoodenplank": "jungle_planks", + "forestwoodplank": "jungle_planks", + "forestwplank": "jungle_planks", + "forestplankwooden": "jungle_planks", + "forestplankwood": "jungle_planks", + "forestplankw": "jungle_planks", + "forestplank": "jungle_planks", + "fwoodenplank": "jungle_planks", + "fwoodplank": "jungle_planks", + "fwplank": "jungle_planks", + "fplankwooden": "jungle_planks", + "fplankwood": "jungle_planks", + "fplankw": "jungle_planks", + "fplank": "jungle_planks", + "jungle_pressure_plate": { + "material": "JUNGLE_PRESSURE_PLATE" + }, + "junglepressureplate": "jungle_pressure_plate", + "jungle_sapling": { + "material": "JUNGLE_SAPLING" + }, + "junglesapling": "jungle_sapling", + "jungletreesapling": "jungle_sapling", + "junglelogsapling": "jungle_sapling", + "jungletrunksapling": "jungle_sapling", + "junglewoodsapling": "jungle_sapling", + "jsapling": "jungle_sapling", + "jtreesapling": "jungle_sapling", + "jlogsapling": "jungle_sapling", + "jtrunksapling": "jungle_sapling", + "jwoodsapling": "jungle_sapling", + "forestsapling": "jungle_sapling", + "foresttreesapling": "jungle_sapling", + "forestlogsapling": "jungle_sapling", + "foresttrunksapling": "jungle_sapling", + "forestwoodsapling": "jungle_sapling", + "fsapling": "jungle_sapling", + "ftreesapling": "jungle_sapling", + "flogsapling": "jungle_sapling", + "ftrunksapling": "jungle_sapling", + "fwoodsapling": "jungle_sapling", + "jungle_slab": { + "material": "JUNGLE_SLAB" + }, + "jungleslab": "jungle_slab", + "junglewoodenstep": "jungle_slab", + "junglewoodstep": "jungle_slab", + "junglewstep": "jungle_slab", + "junglestep": "jungle_slab", + "junglewoodenslab": "jungle_slab", + "junglewoodslab": "jungle_slab", + "junglewslab": "jungle_slab", + "junglewoodenhalfblock": "jungle_slab", + "junglewoodhalfblock": "jungle_slab", + "junglewhalfblock": "jungle_slab", + "junglehalfblock": "jungle_slab", + "jwoodenstep": "jungle_slab", + "jwoodstep": "jungle_slab", + "jwstep": "jungle_slab", + "jstep": "jungle_slab", + "jwoodenslab": "jungle_slab", + "jwoodslab": "jungle_slab", + "jwslab": "jungle_slab", + "jwoodenhalfblock": "jungle_slab", + "jwoodhalfblock": "jungle_slab", + "jwhalfblock": "jungle_slab", + "jhalfblock": "jungle_slab", + "forestwoodenstep": "jungle_slab", + "forestwoodstep": "jungle_slab", + "forestwstep": "jungle_slab", + "foreststep": "jungle_slab", + "forestwoodenslab": "jungle_slab", + "forestwoodslab": "jungle_slab", + "forestwslab": "jungle_slab", + "forestwoodenhalfblock": "jungle_slab", + "forestwoodhalfblock": "jungle_slab", + "forestwhalfblock": "jungle_slab", + "foresthalfblock": "jungle_slab", + "fwoodenstep": "jungle_slab", + "fwoodstep": "jungle_slab", + "fwstep": "jungle_slab", + "fstep": "jungle_slab", + "fwoodenslab": "jungle_slab", + "fwoodslab": "jungle_slab", + "fwslab": "jungle_slab", + "fwoodenhalfblock": "jungle_slab", + "fwoodhalfblock": "jungle_slab", + "fwhalfblock": "jungle_slab", + "fhalfblock": "jungle_slab", + "jungle_stairs": { + "material": "JUNGLE_STAIRS" + }, + "junglestairs": "jungle_stairs", + "junglewoodenstairs": "jungle_stairs", + "junglewoodstairs": "jungle_stairs", + "junglewstairs": "jungle_stairs", + "junglewoodenstair": "jungle_stairs", + "junglewoodstair": "jungle_stairs", + "junglewstair": "jungle_stairs", + "junglestair": "jungle_stairs", + "jwoodenstairs": "jungle_stairs", + "jwoodstairs": "jungle_stairs", + "jwstairs": "jungle_stairs", + "jwoodenstair": "jungle_stairs", + "jwoodstair": "jungle_stairs", + "jwstair": "jungle_stairs", + "jstair": "jungle_stairs", + "forestwoodenstairs": "jungle_stairs", + "forestwoodstairs": "jungle_stairs", + "forestwstairs": "jungle_stairs", + "forestwoodenstair": "jungle_stairs", + "forestwoodstair": "jungle_stairs", + "forestwstair": "jungle_stairs", + "foreststair": "jungle_stairs", + "fwoodenstairs": "jungle_stairs", + "fwoodstairs": "jungle_stairs", + "fwstairs": "jungle_stairs", + "fwoodenstair": "jungle_stairs", + "fwoodstair": "jungle_stairs", + "fwstair": "jungle_stairs", + "fstair": "jungle_stairs", + "jungle_trapdoor": { + "material": "JUNGLE_TRAPDOOR" + }, + "jungletrapdoor": "jungle_trapdoor", + "jungledoortrap": "jungle_trapdoor", + "junglehatch": "jungle_trapdoor", + "jungletdoor": "jungle_trapdoor", + "jungledoort": "jungle_trapdoor", + "jungletrapd": "jungle_trapdoor", + "jungledtrap": "jungle_trapdoor", + "jtrapdoor": "jungle_trapdoor", + "jdoortrap": "jungle_trapdoor", + "jhatch": "jungle_trapdoor", + "jtdoor": "jungle_trapdoor", + "jdoort": "jungle_trapdoor", + "jtrapd": "jungle_trapdoor", + "jdtrap": "jungle_trapdoor", + "foresttrapdoor": "jungle_trapdoor", + "forestdoortrap": "jungle_trapdoor", + "foresthatch": "jungle_trapdoor", + "foresttdoor": "jungle_trapdoor", + "forestdoort": "jungle_trapdoor", + "foresttrapd": "jungle_trapdoor", + "forestdtrap": "jungle_trapdoor", + "ftrapdoor": "jungle_trapdoor", + "fdoortrap": "jungle_trapdoor", + "fhatch": "jungle_trapdoor", + "ftdoor": "jungle_trapdoor", + "fdoort": "jungle_trapdoor", + "ftrapd": "jungle_trapdoor", + "fdtrap": "jungle_trapdoor", + "jungle_wood": { + "material": "JUNGLE_WOOD" + }, + "junglewood": "jungle_wood", + "junglelogall": "jungle_wood", + "jungletrunkall": "jungle_wood", + "jungletreeall": "jungle_wood", + "jwood": "jungle_wood", + "jlogall": "jungle_wood", + "jtrunkall": "jungle_wood", + "jtreeall": "jungle_wood", + "forestwood": "jungle_wood", + "forestlogall": "jungle_wood", + "foresttrunkall": "jungle_wood", + "foresttreeall": "jungle_wood", + "fwood": "jungle_wood", + "flogall": "jungle_wood", + "ftrunkall": "jungle_wood", + "ftreeall": "jungle_wood", + "kelp": { + "material": "KELP" + }, + "kelp_plant": { + "material": "KELP_PLANT", + "unspawnable": true + }, + "kelpplant": "kelp_plant", + "knowledge_book": { + "material": "KNOWLEDGE_BOOK" + }, + "knowledgebook": "knowledge_book", + "ladder": { + "material": "LADDER" + }, + "lapis_block": { + "material": "LAPIS_BLOCK" + }, + "lapisblock": "lapis_block", + "lapislazuliblock": "lapis_block", + "blocklapislazuli": "lapis_block", + "blocklapis": "lapis_block", + "lblock": "lapis_block", + "blockl": "lapis_block", + "lapis_lazuli": { + "material": "LAPIS_LAZULI" + }, + "lapislazuli": "lapis_lazuli", + "lapis_ore": { + "material": "LAPIS_ORE" + }, + "lapisore": "lapis_ore", + "lapislazuliore": "lapis_ore", + "lapislazulio": "lapis_ore", + "orelapislazuli": "lapis_ore", + "olapislazuli": "lapis_ore", + "lapiso": "lapis_ore", + "orelapis": "lapis_ore", + "olapis": "lapis_ore", + "lore": "lapis_ore", + "lo": "lapis_ore", + "orel": "lapis_ore", + "ol": "lapis_ore", + "large_fern": { + "material": "LARGE_FERN" + }, + "largefern": "large_fern", + "lava": { + "material": "LAVA", + "unspawnable": true + }, + "stationarylava": "lava", + "stilllava": "lava", + "slava": "lava", + "lava_bucket": { + "material": "LAVA_BUCKET" + }, + "lavabucket": "lava_bucket", + "lead": { + "material": "LEAD" + }, + "leather": { + "material": "LEATHER" + }, + "leather_boots": { + "material": "LEATHER_BOOTS" + }, + "leatherboots": "leather_boots", + "leathershoes": "leather_boots", + "lboots": "leather_boots", + "lshoes": "leather_boots", + "leather_chestplate": { + "material": "LEATHER_CHESTPLATE" + }, + "leatherchestplate": "leather_chestplate", + "leatherplatebody": "leather_chestplate", + "leatherplate": "leather_chestplate", + "leathershirt": "leather_chestplate", + "leathertunic": "leather_chestplate", + "lchestplate": "leather_chestplate", + "lplatebody": "leather_chestplate", + "lplate": "leather_chestplate", + "lshirt": "leather_chestplate", + "ltunic": "leather_chestplate", + "leather_helmet": { + "material": "LEATHER_HELMET" + }, + "leatherhelmet": "leather_helmet", + "leatherhelm": "leather_helmet", + "leatherhat": "leather_helmet", + "leathercoif": "leather_helmet", + "lhelmet": "leather_helmet", + "lhelm": "leather_helmet", + "lhat": "leather_helmet", + "lcoif": "leather_helmet", + "leather_leggings": { + "material": "LEATHER_LEGGINGS" + }, + "leatherleggings": "leather_leggings", + "leatherlegs": "leather_leggings", + "leatherpants": "leather_leggings", + "lleggings": "leather_leggings", + "llegs": "leather_leggings", + "lpants": "leather_leggings", + "lever": { + "material": "LEVER" + }, + "light_blue_banner": { + "material": "LIGHT_BLUE_BANNER" + }, + "lightbluebanner": "light_blue_banner", + "lbstandingbanner": "light_blue_banner", + "lbbanner": "light_blue_banner", + "lblustandingbanner": "light_blue_banner", + "lblubanner": "light_blue_banner", + "lightblustandingbanner": "light_blue_banner", + "lightblubanner": "light_blue_banner", + "lbluestandingbanner": "light_blue_banner", + "lbluebanner": "light_blue_banner", + "lightbluestandingbanner": "light_blue_banner", + "light_blue_bed": { + "material": "LIGHT_BLUE_BED" + }, + "lightbluebed": "light_blue_bed", + "lbbed": "light_blue_bed", + "lblubed": "light_blue_bed", + "lightblubed": "light_blue_bed", + "lbluebed": "light_blue_bed", + "light_blue_carpet": { + "material": "LIGHT_BLUE_CARPET" + }, + "lightbluecarpet": "light_blue_carpet", + "lbcarpet": "light_blue_carpet", + "lbfloor": "light_blue_carpet", + "lblucarpet": "light_blue_carpet", + "lblufloor": "light_blue_carpet", + "lightblucarpet": "light_blue_carpet", + "lightblufloor": "light_blue_carpet", + "lbluecarpet": "light_blue_carpet", + "lbluefloor": "light_blue_carpet", + "lightbluefloor": "light_blue_carpet", + "light_blue_concrete": { + "material": "LIGHT_BLUE_CONCRETE" + }, + "lightblueconcrete": "light_blue_concrete", + "lbconcrete": "light_blue_concrete", + "lbluconcrete": "light_blue_concrete", + "lightbluconcrete": "light_blue_concrete", + "lblueconcrete": "light_blue_concrete", + "light_blue_concrete_powder": { + "material": "LIGHT_BLUE_CONCRETE_POWDER" + }, + "lightblueconcretepowder": "light_blue_concrete_powder", + "lbconcretepowder": "light_blue_concrete_powder", + "lbconcretesand": "light_blue_concrete_powder", + "lbcpowder": "light_blue_concrete_powder", + "lbcdust": "light_blue_concrete_powder", + "lbcp": "light_blue_concrete_powder", + "lbluconcretepowder": "light_blue_concrete_powder", + "lbluconcretesand": "light_blue_concrete_powder", + "lblucpowder": "light_blue_concrete_powder", + "lblucdust": "light_blue_concrete_powder", + "lblucp": "light_blue_concrete_powder", + "lightbluconcretepowder": "light_blue_concrete_powder", + "lightbluconcretesand": "light_blue_concrete_powder", + "lightblucpowder": "light_blue_concrete_powder", + "lightblucdust": "light_blue_concrete_powder", + "lightblucp": "light_blue_concrete_powder", + "lblueconcretepowder": "light_blue_concrete_powder", + "lblueconcretesand": "light_blue_concrete_powder", + "lbluecpowder": "light_blue_concrete_powder", + "lbluecdust": "light_blue_concrete_powder", + "lbluecp": "light_blue_concrete_powder", + "lightblueconcretesand": "light_blue_concrete_powder", + "lightbluecpowder": "light_blue_concrete_powder", + "lightbluecdust": "light_blue_concrete_powder", + "lightbluecp": "light_blue_concrete_powder", + "light_blue_dye": { + "material": "LIGHT_BLUE_DYE" + }, + "lightbluedye": "light_blue_dye", + "light_blue_glazed_terracotta": { + "material": "LIGHT_BLUE_GLAZED_TERRACOTTA" + }, + "lightblueglazedterracotta": "light_blue_glazed_terracotta", + "lbglazedtcota": "light_blue_glazed_terracotta", + "lbglazedterra": "light_blue_glazed_terracotta", + "lbglazedterracotta": "light_blue_glazed_terracotta", + "lbglazedterracota": "light_blue_glazed_terracotta", + "lbluglazedtcota": "light_blue_glazed_terracotta", + "lbluglazedterra": "light_blue_glazed_terracotta", + "lbluglazedterracotta": "light_blue_glazed_terracotta", + "lbluglazedterracota": "light_blue_glazed_terracotta", + "lightbluglazedtcota": "light_blue_glazed_terracotta", + "lightbluglazedterra": "light_blue_glazed_terracotta", + "lightbluglazedterracotta": "light_blue_glazed_terracotta", + "lightbluglazedterracota": "light_blue_glazed_terracotta", + "lblueglazedtcota": "light_blue_glazed_terracotta", + "lblueglazedterra": "light_blue_glazed_terracotta", + "lblueglazedterracotta": "light_blue_glazed_terracotta", + "lblueglazedterracota": "light_blue_glazed_terracotta", + "lightblueglazedtcota": "light_blue_glazed_terracotta", + "lightblueglazedterra": "light_blue_glazed_terracotta", + "lightblueglazedterracota": "light_blue_glazed_terracotta", + "light_blue_shulker_box": { + "material": "LIGHT_BLUE_SHULKER_BOX" + }, + "lightblueshulkerbox": "light_blue_shulker_box", + "lbshulkerbox": "light_blue_shulker_box", + "lbchest": "light_blue_shulker_box", + "lblushulkerbox": "light_blue_shulker_box", + "lbluchest": "light_blue_shulker_box", + "lightblushulkerbox": "light_blue_shulker_box", + "lightbluchest": "light_blue_shulker_box", + "lblueshulkerbox": "light_blue_shulker_box", + "lbluechest": "light_blue_shulker_box", + "lightbluechest": "light_blue_shulker_box", + "light_blue_stained_glass": { + "material": "LIGHT_BLUE_STAINED_GLASS" + }, + "lightbluestainedglass": "light_blue_stained_glass", + "lbglass": "light_blue_stained_glass", + "lbsglass": "light_blue_stained_glass", + "lbstainedglass": "light_blue_stained_glass", + "lbluglass": "light_blue_stained_glass", + "lblusglass": "light_blue_stained_glass", + "lblustainedglass": "light_blue_stained_glass", + "lightbluglass": "light_blue_stained_glass", + "lightblusglass": "light_blue_stained_glass", + "lightblustainedglass": "light_blue_stained_glass", + "lblueglass": "light_blue_stained_glass", + "lbluesglass": "light_blue_stained_glass", + "lbluestainedglass": "light_blue_stained_glass", + "lightblueglass": "light_blue_stained_glass", + "lightbluesglass": "light_blue_stained_glass", + "light_blue_stained_glass_pane": { + "material": "LIGHT_BLUE_STAINED_GLASS_PANE" + }, + "lightbluestainedglasspane": "light_blue_stained_glass_pane", + "lbglasspane": "light_blue_stained_glass_pane", + "lbsglasspane": "light_blue_stained_glass_pane", + "lbstainedglasspane": "light_blue_stained_glass_pane", + "lbgpane": "light_blue_stained_glass_pane", + "lbluglasspane": "light_blue_stained_glass_pane", + "lblusglasspane": "light_blue_stained_glass_pane", + "lblustainedglasspane": "light_blue_stained_glass_pane", + "lblugpane": "light_blue_stained_glass_pane", + "lightbluglasspane": "light_blue_stained_glass_pane", + "lightblusglasspane": "light_blue_stained_glass_pane", + "lightblustainedglasspane": "light_blue_stained_glass_pane", + "lightblugpane": "light_blue_stained_glass_pane", + "lblueglasspane": "light_blue_stained_glass_pane", + "lbluesglasspane": "light_blue_stained_glass_pane", + "lbluestainedglasspane": "light_blue_stained_glass_pane", + "lbluegpane": "light_blue_stained_glass_pane", + "lightblueglasspane": "light_blue_stained_glass_pane", + "lightbluesglasspane": "light_blue_stained_glass_pane", + "lightbluegpane": "light_blue_stained_glass_pane", + "light_blue_terracotta": { + "material": "LIGHT_BLUE_TERRACOTTA" + }, + "lightblueterracotta": "light_blue_terracotta", + "lbclay": "light_blue_terracotta", + "lbsclay": "light_blue_terracotta", + "lbstainedclay": "light_blue_terracotta", + "lbterra": "light_blue_terracotta", + "lbtcota": "light_blue_terracotta", + "lbterracota": "light_blue_terracotta", + "lbterracotta": "light_blue_terracotta", + "lbluclay": "light_blue_terracotta", + "lblusclay": "light_blue_terracotta", + "lblustainedclay": "light_blue_terracotta", + "lbluterra": "light_blue_terracotta", + "lblutcota": "light_blue_terracotta", + "lbluterracota": "light_blue_terracotta", + "lbluterracotta": "light_blue_terracotta", + "lightbluclay": "light_blue_terracotta", + "lightblusclay": "light_blue_terracotta", + "lightblustainedclay": "light_blue_terracotta", + "lightbluterra": "light_blue_terracotta", + "lightblutcota": "light_blue_terracotta", + "lightbluterracota": "light_blue_terracotta", + "lightbluterracotta": "light_blue_terracotta", + "lblueclay": "light_blue_terracotta", + "lbluesclay": "light_blue_terracotta", + "lbluestainedclay": "light_blue_terracotta", + "lblueterra": "light_blue_terracotta", + "lbluetcota": "light_blue_terracotta", + "lblueterracota": "light_blue_terracotta", + "lblueterracotta": "light_blue_terracotta", + "lightblueclay": "light_blue_terracotta", + "lightbluesclay": "light_blue_terracotta", + "lightbluestainedclay": "light_blue_terracotta", + "lightblueterra": "light_blue_terracotta", + "lightbluetcota": "light_blue_terracotta", + "lightblueterracota": "light_blue_terracotta", + "light_blue_wall_banner": { + "material": "LIGHT_BLUE_WALL_BANNER", + "unspawnable": true + }, + "lightbluewallbanner": "light_blue_wall_banner", + "light_blue_wool": { + "material": "LIGHT_BLUE_WOOL" + }, + "lightbluewool": "light_blue_wool", + "lbwool": "light_blue_wool", + "lbcloth": "light_blue_wool", + "lbcotton": "light_blue_wool", + "lbluwool": "light_blue_wool", + "lblucloth": "light_blue_wool", + "lblucotton": "light_blue_wool", + "lightbluwool": "light_blue_wool", + "lightblucloth": "light_blue_wool", + "lightblucotton": "light_blue_wool", + "lbluewool": "light_blue_wool", + "lbluecloth": "light_blue_wool", + "lbluecotton": "light_blue_wool", + "lightbluecloth": "light_blue_wool", + "lightbluecotton": "light_blue_wool", + "light_gray_banner": { + "material": "LIGHT_GRAY_BANNER" + }, + "lightgraybanner": "light_gray_banner", + "lgstandingbanner": "light_gray_banner", + "lgbanner": "light_gray_banner", + "lgrastandingbanner": "light_gray_banner", + "lgrabanner": "light_gray_banner", + "lgreystandingbanner": "light_gray_banner", + "lgreybanner": "light_gray_banner", + "lgraystandingbanner": "light_gray_banner", + "lgraybanner": "light_gray_banner", + "lightgrastandingbanner": "light_gray_banner", + "lightgrabanner": "light_gray_banner", + "lightgreystandingbanner": "light_gray_banner", + "lightgreybanner": "light_gray_banner", + "lightgraystandingbanner": "light_gray_banner", + "sistandingbanner": "light_gray_banner", + "sibanner": "light_gray_banner", + "siastandingbanner": "light_gray_banner", + "siabanner": "light_gray_banner", + "silverstandingbanner": "light_gray_banner", + "silverbanner": "light_gray_banner", + "light_gray_bed": { + "material": "LIGHT_GRAY_BED" + }, + "lightgraybed": "light_gray_bed", + "lgbed": "light_gray_bed", + "lgrabed": "light_gray_bed", + "lgreybed": "light_gray_bed", + "lgraybed": "light_gray_bed", + "lightgrabed": "light_gray_bed", + "lightgreybed": "light_gray_bed", + "sibed": "light_gray_bed", + "siabed": "light_gray_bed", + "silverbed": "light_gray_bed", + "light_gray_carpet": { + "material": "LIGHT_GRAY_CARPET" + }, + "lightgraycarpet": "light_gray_carpet", + "lgcarpet": "light_gray_carpet", + "lgfloor": "light_gray_carpet", + "lgracarpet": "light_gray_carpet", + "lgrafloor": "light_gray_carpet", + "lgreycarpet": "light_gray_carpet", + "lgreyfloor": "light_gray_carpet", + "lgraycarpet": "light_gray_carpet", + "lgrayfloor": "light_gray_carpet", + "lightgracarpet": "light_gray_carpet", + "lightgrafloor": "light_gray_carpet", + "lightgreycarpet": "light_gray_carpet", + "lightgreyfloor": "light_gray_carpet", + "lightgrayfloor": "light_gray_carpet", + "sicarpet": "light_gray_carpet", + "sifloor": "light_gray_carpet", + "siacarpet": "light_gray_carpet", + "siafloor": "light_gray_carpet", + "silvercarpet": "light_gray_carpet", + "silverfloor": "light_gray_carpet", + "light_gray_concrete": { + "material": "LIGHT_GRAY_CONCRETE" + }, + "lightgrayconcrete": "light_gray_concrete", + "lgconcrete": "light_gray_concrete", + "lgraconcrete": "light_gray_concrete", + "lgreyconcrete": "light_gray_concrete", + "lgrayconcrete": "light_gray_concrete", + "lightgraconcrete": "light_gray_concrete", + "lightgreyconcrete": "light_gray_concrete", + "siconcrete": "light_gray_concrete", + "siaconcrete": "light_gray_concrete", + "silverconcrete": "light_gray_concrete", + "light_gray_concrete_powder": { + "material": "LIGHT_GRAY_CONCRETE_POWDER" + }, + "lightgrayconcretepowder": "light_gray_concrete_powder", + "lgconcretepowder": "light_gray_concrete_powder", + "lgconcretesand": "light_gray_concrete_powder", + "lgcpowder": "light_gray_concrete_powder", + "lgcdust": "light_gray_concrete_powder", + "lgcp": "light_gray_concrete_powder", + "lgraconcretepowder": "light_gray_concrete_powder", + "lgraconcretesand": "light_gray_concrete_powder", + "lgracpowder": "light_gray_concrete_powder", + "lgracdust": "light_gray_concrete_powder", + "lgracp": "light_gray_concrete_powder", + "lgreyconcretepowder": "light_gray_concrete_powder", + "lgreyconcretesand": "light_gray_concrete_powder", + "lgreycpowder": "light_gray_concrete_powder", + "lgreycdust": "light_gray_concrete_powder", + "lgreycp": "light_gray_concrete_powder", + "lgrayconcretepowder": "light_gray_concrete_powder", + "lgrayconcretesand": "light_gray_concrete_powder", + "lgraycpowder": "light_gray_concrete_powder", + "lgraycdust": "light_gray_concrete_powder", + "lgraycp": "light_gray_concrete_powder", + "lightgraconcretepowder": "light_gray_concrete_powder", + "lightgraconcretesand": "light_gray_concrete_powder", + "lightgracpowder": "light_gray_concrete_powder", + "lightgracdust": "light_gray_concrete_powder", + "lightgracp": "light_gray_concrete_powder", + "lightgreyconcretepowder": "light_gray_concrete_powder", + "lightgreyconcretesand": "light_gray_concrete_powder", + "lightgreycpowder": "light_gray_concrete_powder", + "lightgreycdust": "light_gray_concrete_powder", + "lightgreycp": "light_gray_concrete_powder", + "lightgrayconcretesand": "light_gray_concrete_powder", + "lightgraycpowder": "light_gray_concrete_powder", + "lightgraycdust": "light_gray_concrete_powder", + "lightgraycp": "light_gray_concrete_powder", + "siconcretepowder": "light_gray_concrete_powder", + "siconcretesand": "light_gray_concrete_powder", + "sicpowder": "light_gray_concrete_powder", + "sicdust": "light_gray_concrete_powder", + "sicp": "light_gray_concrete_powder", + "siaconcretepowder": "light_gray_concrete_powder", + "siaconcretesand": "light_gray_concrete_powder", + "siacpowder": "light_gray_concrete_powder", + "siacdust": "light_gray_concrete_powder", + "siacp": "light_gray_concrete_powder", + "silverconcretepowder": "light_gray_concrete_powder", + "silverconcretesand": "light_gray_concrete_powder", + "silvercpowder": "light_gray_concrete_powder", + "silvercdust": "light_gray_concrete_powder", + "silvercp": "light_gray_concrete_powder", + "light_gray_dye": { + "material": "LIGHT_GRAY_DYE" + }, + "lightgraydye": "light_gray_dye", + "light_gray_glazed_terracotta": { + "material": "LIGHT_GRAY_GLAZED_TERRACOTTA" + }, + "lightgrayglazedterracotta": "light_gray_glazed_terracotta", + "lgglazedtcota": "light_gray_glazed_terracotta", + "lgglazedterra": "light_gray_glazed_terracotta", + "lgglazedterracotta": "light_gray_glazed_terracotta", + "lgglazedterracota": "light_gray_glazed_terracotta", + "lgraglazedtcota": "light_gray_glazed_terracotta", + "lgraglazedterra": "light_gray_glazed_terracotta", + "lgraglazedterracotta": "light_gray_glazed_terracotta", + "lgraglazedterracota": "light_gray_glazed_terracotta", + "lgreyglazedtcota": "light_gray_glazed_terracotta", + "lgreyglazedterra": "light_gray_glazed_terracotta", + "lgreyglazedterracotta": "light_gray_glazed_terracotta", + "lgreyglazedterracota": "light_gray_glazed_terracotta", + "lgrayglazedtcota": "light_gray_glazed_terracotta", + "lgrayglazedterra": "light_gray_glazed_terracotta", + "lgrayglazedterracotta": "light_gray_glazed_terracotta", + "lgrayglazedterracota": "light_gray_glazed_terracotta", + "lightgraglazedtcota": "light_gray_glazed_terracotta", + "lightgraglazedterra": "light_gray_glazed_terracotta", + "lightgraglazedterracotta": "light_gray_glazed_terracotta", + "lightgraglazedterracota": "light_gray_glazed_terracotta", + "lightgreyglazedtcota": "light_gray_glazed_terracotta", + "lightgreyglazedterra": "light_gray_glazed_terracotta", + "lightgreyglazedterracotta": "light_gray_glazed_terracotta", + "lightgreyglazedterracota": "light_gray_glazed_terracotta", + "lightgrayglazedtcota": "light_gray_glazed_terracotta", + "lightgrayglazedterra": "light_gray_glazed_terracotta", + "lightgrayglazedterracota": "light_gray_glazed_terracotta", + "siglazedtcota": "light_gray_glazed_terracotta", + "siglazedterra": "light_gray_glazed_terracotta", + "siglazedterracotta": "light_gray_glazed_terracotta", + "siglazedterracota": "light_gray_glazed_terracotta", + "siaglazedtcota": "light_gray_glazed_terracotta", + "siaglazedterra": "light_gray_glazed_terracotta", + "siaglazedterracotta": "light_gray_glazed_terracotta", + "siaglazedterracota": "light_gray_glazed_terracotta", + "silverglazedtcota": "light_gray_glazed_terracotta", + "silverglazedterra": "light_gray_glazed_terracotta", + "silverglazedterracotta": "light_gray_glazed_terracotta", + "silverglazedterracota": "light_gray_glazed_terracotta", + "light_gray_shulker_box": { + "material": "LIGHT_GRAY_SHULKER_BOX" + }, + "lightgrayshulkerbox": "light_gray_shulker_box", + "lgshulkerbox": "light_gray_shulker_box", + "lgchest": "light_gray_shulker_box", + "lgrashulkerbox": "light_gray_shulker_box", + "lgrachest": "light_gray_shulker_box", + "lgreyshulkerbox": "light_gray_shulker_box", + "lgreychest": "light_gray_shulker_box", + "lgrayshulkerbox": "light_gray_shulker_box", + "lgraychest": "light_gray_shulker_box", + "lightgrashulkerbox": "light_gray_shulker_box", + "lightgrachest": "light_gray_shulker_box", + "lightgreyshulkerbox": "light_gray_shulker_box", + "lightgreychest": "light_gray_shulker_box", + "lightgraychest": "light_gray_shulker_box", + "sishulkerbox": "light_gray_shulker_box", + "sichest": "light_gray_shulker_box", + "siashulkerbox": "light_gray_shulker_box", + "siachest": "light_gray_shulker_box", + "silvershulkerbox": "light_gray_shulker_box", + "silverchest": "light_gray_shulker_box", + "light_gray_stained_glass": { + "material": "LIGHT_GRAY_STAINED_GLASS" + }, + "lightgraystainedglass": "light_gray_stained_glass", + "lgglass": "light_gray_stained_glass", + "lgsglass": "light_gray_stained_glass", + "lgstainedglass": "light_gray_stained_glass", + "lgraglass": "light_gray_stained_glass", + "lgrasglass": "light_gray_stained_glass", + "lgrastainedglass": "light_gray_stained_glass", + "lgreyglass": "light_gray_stained_glass", + "lgreysglass": "light_gray_stained_glass", + "lgreystainedglass": "light_gray_stained_glass", + "lgrayglass": "light_gray_stained_glass", + "lgraysglass": "light_gray_stained_glass", + "lgraystainedglass": "light_gray_stained_glass", + "lightgraglass": "light_gray_stained_glass", + "lightgrasglass": "light_gray_stained_glass", + "lightgrastainedglass": "light_gray_stained_glass", + "lightgreyglass": "light_gray_stained_glass", + "lightgreysglass": "light_gray_stained_glass", + "lightgreystainedglass": "light_gray_stained_glass", + "lightgrayglass": "light_gray_stained_glass", + "lightgraysglass": "light_gray_stained_glass", + "siglass": "light_gray_stained_glass", + "sisglass": "light_gray_stained_glass", + "sistainedglass": "light_gray_stained_glass", + "siaglass": "light_gray_stained_glass", + "siasglass": "light_gray_stained_glass", + "siastainedglass": "light_gray_stained_glass", + "silverglass": "light_gray_stained_glass", + "silversglass": "light_gray_stained_glass", + "silverstainedglass": "light_gray_stained_glass", + "light_gray_stained_glass_pane": { + "material": "LIGHT_GRAY_STAINED_GLASS_PANE" + }, + "lightgraystainedglasspane": "light_gray_stained_glass_pane", + "lgglasspane": "light_gray_stained_glass_pane", + "lgsglasspane": "light_gray_stained_glass_pane", + "lgstainedglasspane": "light_gray_stained_glass_pane", + "lggpane": "light_gray_stained_glass_pane", + "lgraglasspane": "light_gray_stained_glass_pane", + "lgrasglasspane": "light_gray_stained_glass_pane", + "lgrastainedglasspane": "light_gray_stained_glass_pane", + "lgragpane": "light_gray_stained_glass_pane", + "lgreyglasspane": "light_gray_stained_glass_pane", + "lgreysglasspane": "light_gray_stained_glass_pane", + "lgreystainedglasspane": "light_gray_stained_glass_pane", + "lgreygpane": "light_gray_stained_glass_pane", + "lgrayglasspane": "light_gray_stained_glass_pane", + "lgraysglasspane": "light_gray_stained_glass_pane", + "lgraystainedglasspane": "light_gray_stained_glass_pane", + "lgraygpane": "light_gray_stained_glass_pane", + "lightgraglasspane": "light_gray_stained_glass_pane", + "lightgrasglasspane": "light_gray_stained_glass_pane", + "lightgrastainedglasspane": "light_gray_stained_glass_pane", + "lightgragpane": "light_gray_stained_glass_pane", + "lightgreyglasspane": "light_gray_stained_glass_pane", + "lightgreysglasspane": "light_gray_stained_glass_pane", + "lightgreystainedglasspane": "light_gray_stained_glass_pane", + "lightgreygpane": "light_gray_stained_glass_pane", + "lightgrayglasspane": "light_gray_stained_glass_pane", + "lightgraysglasspane": "light_gray_stained_glass_pane", + "lightgraygpane": "light_gray_stained_glass_pane", + "siglasspane": "light_gray_stained_glass_pane", + "sisglasspane": "light_gray_stained_glass_pane", + "sistainedglasspane": "light_gray_stained_glass_pane", + "sigpane": "light_gray_stained_glass_pane", + "siaglasspane": "light_gray_stained_glass_pane", + "siasglasspane": "light_gray_stained_glass_pane", + "siastainedglasspane": "light_gray_stained_glass_pane", + "siagpane": "light_gray_stained_glass_pane", + "silverglasspane": "light_gray_stained_glass_pane", + "silversglasspane": "light_gray_stained_glass_pane", + "silverstainedglasspane": "light_gray_stained_glass_pane", + "silvergpane": "light_gray_stained_glass_pane", + "light_gray_terracotta": { + "material": "LIGHT_GRAY_TERRACOTTA" + }, + "lightgrayterracotta": "light_gray_terracotta", + "lgclay": "light_gray_terracotta", + "lgsclay": "light_gray_terracotta", + "lgstainedclay": "light_gray_terracotta", + "lgterra": "light_gray_terracotta", + "lgtcota": "light_gray_terracotta", + "lgterracota": "light_gray_terracotta", + "lgterracotta": "light_gray_terracotta", + "lgraclay": "light_gray_terracotta", + "lgrasclay": "light_gray_terracotta", + "lgrastainedclay": "light_gray_terracotta", + "lgraterra": "light_gray_terracotta", + "lgratcota": "light_gray_terracotta", + "lgraterracota": "light_gray_terracotta", + "lgraterracotta": "light_gray_terracotta", + "lgreyclay": "light_gray_terracotta", + "lgreysclay": "light_gray_terracotta", + "lgreystainedclay": "light_gray_terracotta", + "lgreyterra": "light_gray_terracotta", + "lgreytcota": "light_gray_terracotta", + "lgreyterracota": "light_gray_terracotta", + "lgreyterracotta": "light_gray_terracotta", + "lgrayclay": "light_gray_terracotta", + "lgraysclay": "light_gray_terracotta", + "lgraystainedclay": "light_gray_terracotta", + "lgrayterra": "light_gray_terracotta", + "lgraytcota": "light_gray_terracotta", + "lgrayterracota": "light_gray_terracotta", + "lgrayterracotta": "light_gray_terracotta", + "lightgraclay": "light_gray_terracotta", + "lightgrasclay": "light_gray_terracotta", + "lightgrastainedclay": "light_gray_terracotta", + "lightgraterra": "light_gray_terracotta", + "lightgratcota": "light_gray_terracotta", + "lightgraterracota": "light_gray_terracotta", + "lightgraterracotta": "light_gray_terracotta", + "lightgreyclay": "light_gray_terracotta", + "lightgreysclay": "light_gray_terracotta", + "lightgreystainedclay": "light_gray_terracotta", + "lightgreyterra": "light_gray_terracotta", + "lightgreytcota": "light_gray_terracotta", + "lightgreyterracota": "light_gray_terracotta", + "lightgreyterracotta": "light_gray_terracotta", + "lightgrayclay": "light_gray_terracotta", + "lightgraysclay": "light_gray_terracotta", + "lightgraystainedclay": "light_gray_terracotta", + "lightgrayterra": "light_gray_terracotta", + "lightgraytcota": "light_gray_terracotta", + "lightgrayterracota": "light_gray_terracotta", + "siclay": "light_gray_terracotta", + "sisclay": "light_gray_terracotta", + "sistainedclay": "light_gray_terracotta", + "siterra": "light_gray_terracotta", + "sitcota": "light_gray_terracotta", + "siterracota": "light_gray_terracotta", + "siterracotta": "light_gray_terracotta", + "siaclay": "light_gray_terracotta", + "siasclay": "light_gray_terracotta", + "siastainedclay": "light_gray_terracotta", + "siaterra": "light_gray_terracotta", + "siatcota": "light_gray_terracotta", + "siaterracota": "light_gray_terracotta", + "siaterracotta": "light_gray_terracotta", + "silverclay": "light_gray_terracotta", + "silversclay": "light_gray_terracotta", + "silverstainedclay": "light_gray_terracotta", + "silverterra": "light_gray_terracotta", + "silvertcota": "light_gray_terracotta", + "silverterracota": "light_gray_terracotta", + "silverterracotta": "light_gray_terracotta", + "light_gray_wall_banner": { + "material": "LIGHT_GRAY_WALL_BANNER", + "unspawnable": true + }, + "lightgraywallbanner": "light_gray_wall_banner", + "light_gray_wool": { + "material": "LIGHT_GRAY_WOOL" + }, + "lightgraywool": "light_gray_wool", + "lgwool": "light_gray_wool", + "lgcloth": "light_gray_wool", + "lgcotton": "light_gray_wool", + "lgrawool": "light_gray_wool", + "lgracloth": "light_gray_wool", + "lgracotton": "light_gray_wool", + "lgreywool": "light_gray_wool", + "lgreycloth": "light_gray_wool", + "lgreycotton": "light_gray_wool", + "lgraywool": "light_gray_wool", + "lgraycloth": "light_gray_wool", + "lgraycotton": "light_gray_wool", + "lightgrawool": "light_gray_wool", + "lightgracloth": "light_gray_wool", + "lightgracotton": "light_gray_wool", + "lightgreywool": "light_gray_wool", + "lightgreycloth": "light_gray_wool", + "lightgreycotton": "light_gray_wool", + "lightgraycloth": "light_gray_wool", + "lightgraycotton": "light_gray_wool", + "siwool": "light_gray_wool", + "sicloth": "light_gray_wool", + "sicotton": "light_gray_wool", + "siawool": "light_gray_wool", + "siacloth": "light_gray_wool", + "siacotton": "light_gray_wool", + "silverwool": "light_gray_wool", + "silvercloth": "light_gray_wool", + "silvercotton": "light_gray_wool", + "light_weighted_pressure_plate": { + "material": "LIGHT_WEIGHTED_PRESSURE_PLATE" + }, + "lightweightedpressureplate": "light_weighted_pressure_plate", + "lilac": { + "material": "LILAC" + }, + "lily_pad": { + "material": "LILY_PAD" + }, + "lilypad": "lily_pad", + "waterlily": "lily_pad", + "lily": "lily_pad", + "swamppad": "lily_pad", + "lpad": "lily_pad", + "wlily": "lily_pad", + "lime_banner": { + "material": "LIME_BANNER" + }, + "limebanner": "lime_banner", + "lstandingbanner": "lime_banner", + "lbanner": "lime_banner", + "limestandingbanner": "lime_banner", + "lgrestandingbanner": "lime_banner", + "lgrebanner": "lime_banner", + "lightgrestandingbanner": "lime_banner", + "lightgrebanner": "lime_banner", + "lgreenstandingbanner": "lime_banner", + "lgreenbanner": "lime_banner", + "lightgreenstandingbanner": "lime_banner", + "lightgreenbanner": "lime_banner", + "lime_bed": { + "material": "LIME_BED" + }, + "limebed": "lime_bed", + "lbed": "lime_bed", + "lgrebed": "lime_bed", + "lightgrebed": "lime_bed", + "lgreenbed": "lime_bed", + "lightgreenbed": "lime_bed", + "lime_carpet": { + "material": "LIME_CARPET" + }, + "limecarpet": "lime_carpet", + "lcarpet": "lime_carpet", + "lfloor": "lime_carpet", + "limefloor": "lime_carpet", + "lgrecarpet": "lime_carpet", + "lgrefloor": "lime_carpet", + "lightgrecarpet": "lime_carpet", + "lightgrefloor": "lime_carpet", + "lgreencarpet": "lime_carpet", + "lgreenfloor": "lime_carpet", + "lightgreencarpet": "lime_carpet", + "lightgreenfloor": "lime_carpet", + "lime_concrete": { + "material": "LIME_CONCRETE" + }, + "limeconcrete": "lime_concrete", + "lconcrete": "lime_concrete", + "lgreconcrete": "lime_concrete", + "lightgreconcrete": "lime_concrete", + "lgreenconcrete": "lime_concrete", + "lightgreenconcrete": "lime_concrete", + "lime_concrete_powder": { + "material": "LIME_CONCRETE_POWDER" + }, + "limeconcretepowder": "lime_concrete_powder", + "lconcretepowder": "lime_concrete_powder", + "lconcretesand": "lime_concrete_powder", + "lcpowder": "lime_concrete_powder", + "lcdust": "lime_concrete_powder", + "lcp": "lime_concrete_powder", + "limeconcretesand": "lime_concrete_powder", + "limecpowder": "lime_concrete_powder", + "limecdust": "lime_concrete_powder", + "limecp": "lime_concrete_powder", + "lgreconcretepowder": "lime_concrete_powder", + "lgreconcretesand": "lime_concrete_powder", + "lgrecpowder": "lime_concrete_powder", + "lgrecdust": "lime_concrete_powder", + "lgrecp": "lime_concrete_powder", + "lightgreconcretepowder": "lime_concrete_powder", + "lightgreconcretesand": "lime_concrete_powder", + "lightgrecpowder": "lime_concrete_powder", + "lightgrecdust": "lime_concrete_powder", + "lightgrecp": "lime_concrete_powder", + "lgreenconcretepowder": "lime_concrete_powder", + "lgreenconcretesand": "lime_concrete_powder", + "lgreencpowder": "lime_concrete_powder", + "lgreencdust": "lime_concrete_powder", + "lgreencp": "lime_concrete_powder", + "lightgreenconcretepowder": "lime_concrete_powder", + "lightgreenconcretesand": "lime_concrete_powder", + "lightgreencpowder": "lime_concrete_powder", + "lightgreencdust": "lime_concrete_powder", + "lightgreencp": "lime_concrete_powder", + "lime_dye": { + "material": "LIME_DYE" + }, + "limedye": "lime_dye", + "lime_glazed_terracotta": { + "material": "LIME_GLAZED_TERRACOTTA" + }, + "limeglazedterracotta": "lime_glazed_terracotta", + "lglazedtcota": "lime_glazed_terracotta", + "lglazedterra": "lime_glazed_terracotta", + "lglazedterracotta": "lime_glazed_terracotta", + "lglazedterracota": "lime_glazed_terracotta", + "limeglazedtcota": "lime_glazed_terracotta", + "limeglazedterra": "lime_glazed_terracotta", + "limeglazedterracota": "lime_glazed_terracotta", + "lgreglazedtcota": "lime_glazed_terracotta", + "lgreglazedterra": "lime_glazed_terracotta", + "lgreglazedterracotta": "lime_glazed_terracotta", + "lgreglazedterracota": "lime_glazed_terracotta", + "lightgreglazedtcota": "lime_glazed_terracotta", + "lightgreglazedterra": "lime_glazed_terracotta", + "lightgreglazedterracotta": "lime_glazed_terracotta", + "lightgreglazedterracota": "lime_glazed_terracotta", + "lgreenglazedtcota": "lime_glazed_terracotta", + "lgreenglazedterra": "lime_glazed_terracotta", + "lgreenglazedterracotta": "lime_glazed_terracotta", + "lgreenglazedterracota": "lime_glazed_terracotta", + "lightgreenglazedtcota": "lime_glazed_terracotta", + "lightgreenglazedterra": "lime_glazed_terracotta", + "lightgreenglazedterracotta": "lime_glazed_terracotta", + "lightgreenglazedterracota": "lime_glazed_terracotta", + "lime_shulker_box": { + "material": "LIME_SHULKER_BOX" + }, + "limeshulkerbox": "lime_shulker_box", + "lshulkerbox": "lime_shulker_box", + "lchest": "lime_shulker_box", + "limechest": "lime_shulker_box", + "lgreshulkerbox": "lime_shulker_box", + "lgrechest": "lime_shulker_box", + "lightgreshulkerbox": "lime_shulker_box", + "lightgrechest": "lime_shulker_box", + "lgreenshulkerbox": "lime_shulker_box", + "lgreenchest": "lime_shulker_box", + "lightgreenshulkerbox": "lime_shulker_box", + "lightgreenchest": "lime_shulker_box", + "lime_stained_glass": { + "material": "LIME_STAINED_GLASS" + }, + "limestainedglass": "lime_stained_glass", + "lglass": "lime_stained_glass", + "lsglass": "lime_stained_glass", + "lstainedglass": "lime_stained_glass", + "limeglass": "lime_stained_glass", + "limesglass": "lime_stained_glass", + "lgreglass": "lime_stained_glass", + "lgresglass": "lime_stained_glass", + "lgrestainedglass": "lime_stained_glass", + "lightgreglass": "lime_stained_glass", + "lightgresglass": "lime_stained_glass", + "lightgrestainedglass": "lime_stained_glass", + "lgreenglass": "lime_stained_glass", + "lgreensglass": "lime_stained_glass", + "lgreenstainedglass": "lime_stained_glass", + "lightgreenglass": "lime_stained_glass", + "lightgreensglass": "lime_stained_glass", + "lightgreenstainedglass": "lime_stained_glass", + "lime_stained_glass_pane": { + "material": "LIME_STAINED_GLASS_PANE" + }, + "limestainedglasspane": "lime_stained_glass_pane", + "lglasspane": "lime_stained_glass_pane", + "lsglasspane": "lime_stained_glass_pane", + "lstainedglasspane": "lime_stained_glass_pane", + "lgpane": "lime_stained_glass_pane", + "limeglasspane": "lime_stained_glass_pane", + "limesglasspane": "lime_stained_glass_pane", + "limegpane": "lime_stained_glass_pane", + "lgreglasspane": "lime_stained_glass_pane", + "lgresglasspane": "lime_stained_glass_pane", + "lgrestainedglasspane": "lime_stained_glass_pane", + "lgregpane": "lime_stained_glass_pane", + "lightgreglasspane": "lime_stained_glass_pane", + "lightgresglasspane": "lime_stained_glass_pane", + "lightgrestainedglasspane": "lime_stained_glass_pane", + "lightgregpane": "lime_stained_glass_pane", + "lgreenglasspane": "lime_stained_glass_pane", + "lgreensglasspane": "lime_stained_glass_pane", + "lgreenstainedglasspane": "lime_stained_glass_pane", + "lgreengpane": "lime_stained_glass_pane", + "lightgreenglasspane": "lime_stained_glass_pane", + "lightgreensglasspane": "lime_stained_glass_pane", + "lightgreenstainedglasspane": "lime_stained_glass_pane", + "lightgreengpane": "lime_stained_glass_pane", + "lime_terracotta": { + "material": "LIME_TERRACOTTA" + }, + "limeterracotta": "lime_terracotta", + "lclay": "lime_terracotta", + "lsclay": "lime_terracotta", + "lstainedclay": "lime_terracotta", + "lterra": "lime_terracotta", + "ltcota": "lime_terracotta", + "lterracota": "lime_terracotta", + "lterracotta": "lime_terracotta", + "limeclay": "lime_terracotta", + "limesclay": "lime_terracotta", + "limestainedclay": "lime_terracotta", + "limeterra": "lime_terracotta", + "limetcota": "lime_terracotta", + "limeterracota": "lime_terracotta", + "lgreclay": "lime_terracotta", + "lgresclay": "lime_terracotta", + "lgrestainedclay": "lime_terracotta", + "lgreterra": "lime_terracotta", + "lgretcota": "lime_terracotta", + "lgreterracota": "lime_terracotta", + "lgreterracotta": "lime_terracotta", + "lightgreclay": "lime_terracotta", + "lightgresclay": "lime_terracotta", + "lightgrestainedclay": "lime_terracotta", + "lightgreterra": "lime_terracotta", + "lightgretcota": "lime_terracotta", + "lightgreterracota": "lime_terracotta", + "lightgreterracotta": "lime_terracotta", + "lgreenclay": "lime_terracotta", + "lgreensclay": "lime_terracotta", + "lgreenstainedclay": "lime_terracotta", + "lgreenterra": "lime_terracotta", + "lgreentcota": "lime_terracotta", + "lgreenterracota": "lime_terracotta", + "lgreenterracotta": "lime_terracotta", + "lightgreenclay": "lime_terracotta", + "lightgreensclay": "lime_terracotta", + "lightgreenstainedclay": "lime_terracotta", + "lightgreenterra": "lime_terracotta", + "lightgreentcota": "lime_terracotta", + "lightgreenterracota": "lime_terracotta", + "lightgreenterracotta": "lime_terracotta", + "lime_wall_banner": { + "material": "LIME_WALL_BANNER", + "unspawnable": true + }, + "limewallbanner": "lime_wall_banner", + "lime_wool": { + "material": "LIME_WOOL" + }, + "limewool": "lime_wool", + "lwool": "lime_wool", + "lcloth": "lime_wool", + "lcotton": "lime_wool", + "limecloth": "lime_wool", + "limecotton": "lime_wool", + "lgrewool": "lime_wool", + "lgrecloth": "lime_wool", + "lgrecotton": "lime_wool", + "lightgrewool": "lime_wool", + "lightgrecloth": "lime_wool", + "lightgrecotton": "lime_wool", + "lgreenwool": "lime_wool", + "lgreencloth": "lime_wool", + "lgreencotton": "lime_wool", + "lightgreenwool": "lime_wool", + "lightgreencloth": "lime_wool", + "lightgreencotton": "lime_wool", + "lingering_potion": { + "material": "LINGERING_POTION" + }, + "lingeringpotion": "lingering_potion", + "llama_spawn_egg": { + "material": "LLAMA_SPAWN_EGG" + }, + "llamaspawnegg": "llama_spawn_egg", + "llamaegg": "llama_spawn_egg", + "eggllama": "llama_spawn_egg", + "spawneggllama": "llama_spawn_egg", + "llamaspawn": "llama_spawn_egg", + "spawnllama": "llama_spawn_egg", + "magenta_banner": { + "material": "MAGENTA_BANNER" + }, + "magentabanner": "magenta_banner", + "mstandingbanner": "magenta_banner", + "mbanner": "magenta_banner", + "magentastandingbanner": "magenta_banner", + "magenta_bed": { + "material": "MAGENTA_BED" + }, + "magentabed": "magenta_bed", + "mbed": "magenta_bed", + "magenta_carpet": { + "material": "MAGENTA_CARPET" + }, + "magentacarpet": "magenta_carpet", + "mcarpet": "magenta_carpet", + "mfloor": "magenta_carpet", + "magentafloor": "magenta_carpet", + "magenta_concrete": { + "material": "MAGENTA_CONCRETE" + }, + "magentaconcrete": "magenta_concrete", + "mconcrete": "magenta_concrete", + "magenta_concrete_powder": { + "material": "MAGENTA_CONCRETE_POWDER" + }, + "magentaconcretepowder": "magenta_concrete_powder", + "mconcretepowder": "magenta_concrete_powder", + "mconcretesand": "magenta_concrete_powder", + "mcpowder": "magenta_concrete_powder", + "mcdust": "magenta_concrete_powder", + "mcp": "magenta_concrete_powder", + "magentaconcretesand": "magenta_concrete_powder", + "magentacpowder": "magenta_concrete_powder", + "magentacdust": "magenta_concrete_powder", + "magentacp": "magenta_concrete_powder", + "magenta_dye": { + "material": "MAGENTA_DYE" + }, + "magentadye": "magenta_dye", + "magenta_glazed_terracotta": { + "material": "MAGENTA_GLAZED_TERRACOTTA" + }, + "magentaglazedterracotta": "magenta_glazed_terracotta", + "mglazedtcota": "magenta_glazed_terracotta", + "mglazedterra": "magenta_glazed_terracotta", + "mglazedterracotta": "magenta_glazed_terracotta", + "mglazedterracota": "magenta_glazed_terracotta", + "magentaglazedtcota": "magenta_glazed_terracotta", + "magentaglazedterra": "magenta_glazed_terracotta", + "magentaglazedterracota": "magenta_glazed_terracotta", + "magenta_shulker_box": { + "material": "MAGENTA_SHULKER_BOX" + }, + "magentashulkerbox": "magenta_shulker_box", + "mshulkerbox": "magenta_shulker_box", + "mchest": "magenta_shulker_box", + "magentachest": "magenta_shulker_box", + "magenta_stained_glass": { + "material": "MAGENTA_STAINED_GLASS" + }, + "magentastainedglass": "magenta_stained_glass", + "mglass": "magenta_stained_glass", + "msglass": "magenta_stained_glass", + "mstainedglass": "magenta_stained_glass", + "magentaglass": "magenta_stained_glass", + "magentasglass": "magenta_stained_glass", + "magenta_stained_glass_pane": { + "material": "MAGENTA_STAINED_GLASS_PANE" + }, + "magentastainedglasspane": "magenta_stained_glass_pane", + "mglasspane": "magenta_stained_glass_pane", + "msglasspane": "magenta_stained_glass_pane", + "mstainedglasspane": "magenta_stained_glass_pane", + "mgpane": "magenta_stained_glass_pane", + "magentaglasspane": "magenta_stained_glass_pane", + "magentasglasspane": "magenta_stained_glass_pane", + "magentagpane": "magenta_stained_glass_pane", + "magenta_terracotta": { + "material": "MAGENTA_TERRACOTTA" + }, + "magentaterracotta": "magenta_terracotta", + "mclay": "magenta_terracotta", + "msclay": "magenta_terracotta", + "mstainedclay": "magenta_terracotta", + "mterra": "magenta_terracotta", + "mtcota": "magenta_terracotta", + "mterracota": "magenta_terracotta", + "mterracotta": "magenta_terracotta", + "magentaclay": "magenta_terracotta", + "magentasclay": "magenta_terracotta", + "magentastainedclay": "magenta_terracotta", + "magentaterra": "magenta_terracotta", + "magentatcota": "magenta_terracotta", + "magentaterracota": "magenta_terracotta", + "magenta_wall_banner": { + "material": "MAGENTA_WALL_BANNER", + "unspawnable": true + }, + "magentawallbanner": "magenta_wall_banner", + "magenta_wool": { + "material": "MAGENTA_WOOL" + }, + "magentawool": "magenta_wool", + "mwool": "magenta_wool", + "mcloth": "magenta_wool", + "mcotton": "magenta_wool", + "magentacloth": "magenta_wool", + "magentacotton": "magenta_wool", + "magma_block": { + "material": "MAGMA_BLOCK" + }, + "magmablock": "magma_block", + "magma_cream": { + "material": "MAGMA_CREAM" + }, + "magmacream": "magma_cream", + "magma_cube_spawn_egg": { + "material": "MAGMA_CUBE_SPAWN_EGG" + }, + "magmacubespawnegg": "magma_cube_spawn_egg", + "lavaslimeegg": "magma_cube_spawn_egg", + "egglavaslime": "magma_cube_spawn_egg", + "lavaslimespawnegg": "magma_cube_spawn_egg", + "spawnegglavaslime": "magma_cube_spawn_egg", + "lavaslimespawn": "magma_cube_spawn_egg", + "spawnlavaslime": "magma_cube_spawn_egg", + "lavacubeegg": "magma_cube_spawn_egg", + "egglavacube": "magma_cube_spawn_egg", + "lavacubespawnegg": "magma_cube_spawn_egg", + "spawnegglavacube": "magma_cube_spawn_egg", + "lavacubespawn": "magma_cube_spawn_egg", + "spawnlavacube": "magma_cube_spawn_egg", + "magmacubeegg": "magma_cube_spawn_egg", + "eggmagmacube": "magma_cube_spawn_egg", + "spawneggmagmacube": "magma_cube_spawn_egg", + "magmacubespawn": "magma_cube_spawn_egg", + "spawnmagmacube": "magma_cube_spawn_egg", + "magmaslimeegg": "magma_cube_spawn_egg", + "eggmagmaslime": "magma_cube_spawn_egg", + "magmaslimespawnegg": "magma_cube_spawn_egg", + "spawneggmagmaslime": "magma_cube_spawn_egg", + "magmaslimespawn": "magma_cube_spawn_egg", + "spawnmagmaslime": "magma_cube_spawn_egg", + "map": { + "material": "MAP" + }, + "melon": { + "material": "MELON" + }, + "watermelon": "melon", + "greenmelon": "melon", + "melongreen": "melon", + "melonblock": "melon", + "watermelonblock": "melon", + "greenmelonblock": "melon", + "melon_seeds": { + "material": "MELON_SEEDS" + }, + "melonseeds": "melon_seeds", + "melon_slice": { + "material": "MELON_SLICE" + }, + "melonslice": "melon_slice", + "melon_stem": { + "material": "MELON_STEM", + "unspawnable": true + }, + "melonstem": "melon_stem", + "milk_bucket": { + "material": "MILK_BUCKET" + }, + "milkbucket": "milk_bucket", + "minecart": { + "material": "MINECART" + }, + "mcart": "minecart", + "mc": "minecart", + "cart": "minecart", + "mooshroom_spawn_egg": { + "material": "MOOSHROOM_SPAWN_EGG" + }, + "mooshroomspawnegg": "mooshroom_spawn_egg", + "mooshroomegg": "mooshroom_spawn_egg", + "eggmooshroom": "mooshroom_spawn_egg", + "spawneggmooshroom": "mooshroom_spawn_egg", + "mooshroomspawn": "mooshroom_spawn_egg", + "spawnmooshroom": "mooshroom_spawn_egg", + "mushroomegg": "mooshroom_spawn_egg", + "eggmushroom": "mooshroom_spawn_egg", + "mushroomspawnegg": "mooshroom_spawn_egg", + "spawneggmushroom": "mooshroom_spawn_egg", + "mushroomspawn": "mooshroom_spawn_egg", + "spawnmushroom": "mooshroom_spawn_egg", + "mossy_cobblestone": { + "material": "MOSSY_COBBLESTONE" + }, + "mossycobblestone": "mossy_cobblestone", + "mosscobblestone": "mossy_cobblestone", + "mcobblestone": "mossy_cobblestone", + "mossycstone": "mossy_cobblestone", + "mosscstone": "mossy_cobblestone", + "mcstone": "mossy_cobblestone", + "mossycobble": "mossy_cobblestone", + "mosscobble": "mossy_cobblestone", + "mcobble": "mossy_cobblestone", + "mossy_cobblestone_wall": { + "material": "MOSSY_COBBLESTONE_WALL" + }, + "mossycobblestonewall": "mossy_cobblestone_wall", + "mosscobblestonewall": "mossy_cobblestone_wall", + "mcobblestonewall": "mossy_cobblestone_wall", + "mossycobblewall": "mossy_cobblestone_wall", + "mosscobblewall": "mossy_cobblestone_wall", + "mcobblewall": "mossy_cobblestone_wall", + "mossycstonewall": "mossy_cobblestone_wall", + "mosscstonewall": "mossy_cobblestone_wall", + "mcstonewall": "mossy_cobblestone_wall", + "mossycswall": "mossy_cobblestone_wall", + "mosscswall": "mossy_cobblestone_wall", + "mcswall": "mossy_cobblestone_wall", + "mossycwall": "mossy_cobblestone_wall", + "mosscwall": "mossy_cobblestone_wall", + "mcwall": "mossy_cobblestone_wall", + "mossycobblestonefence": "mossy_cobblestone_wall", + "mosscobblestonefence": "mossy_cobblestone_wall", + "mcobblestonefence": "mossy_cobblestone_wall", + "mossycobblefence": "mossy_cobblestone_wall", + "mosscobblefence": "mossy_cobblestone_wall", + "mcobblefence": "mossy_cobblestone_wall", + "mossycstonefence": "mossy_cobblestone_wall", + "mosscstonefence": "mossy_cobblestone_wall", + "mcstonefence": "mossy_cobblestone_wall", + "mossycsfence": "mossy_cobblestone_wall", + "mosscsfence": "mossy_cobblestone_wall", + "mcsfence": "mossy_cobblestone_wall", + "mossycfence": "mossy_cobblestone_wall", + "mosscfence": "mossy_cobblestone_wall", + "mcfence": "mossy_cobblestone_wall", + "mossystonewall": "mossy_cobblestone_wall", + "mossstonewall": "mossy_cobblestone_wall", + "mstonewall": "mossy_cobblestone_wall", + "mossyswall": "mossy_cobblestone_wall", + "mossswall": "mossy_cobblestone_wall", + "mswall": "mossy_cobblestone_wall", + "mossy_stone_bricks": { + "material": "MOSSY_STONE_BRICKS" + }, + "mossystonebricks": "mossy_stone_bricks", + "mossystonebrick": "mossy_stone_bricks", + "mossstonebrick": "mossy_stone_bricks", + "mstonebrick": "mossy_stone_bricks", + "mossystonebrickblock": "mossy_stone_bricks", + "mossstonebrickblock": "mossy_stone_bricks", + "mstonebrickblock": "mossy_stone_bricks", + "mossystonebb": "mossy_stone_bricks", + "mossstonebb": "mossy_stone_bricks", + "mstonebb": "mossy_stone_bricks", + "mossysbrick": "mossy_stone_bricks", + "mosssbrick": "mossy_stone_bricks", + "msbrick": "mossy_stone_bricks", + "mossysbricks": "mossy_stone_bricks", + "mosssbricks": "mossy_stone_bricks", + "msbricks": "mossy_stone_bricks", + "mossysbrickblock": "mossy_stone_bricks", + "mosssbrickblock": "mossy_stone_bricks", + "msbrickblock": "mossy_stone_bricks", + "mossstonebricks": "mossy_stone_bricks", + "mstonebricks": "mossy_stone_bricks", + "mossysbb": "mossy_stone_bricks", + "mosssbb": "mossy_stone_bricks", + "msbb": "mossy_stone_bricks", + "moving_piston": { + "material": "MOVING_PISTON", + "unspawnable": true + }, + "movingpiston": "moving_piston", + "mule_spawn_egg": { + "material": "MULE_SPAWN_EGG" + }, + "mulespawnegg": "mule_spawn_egg", + "muleegg": "mule_spawn_egg", + "eggmule": "mule_spawn_egg", + "spawneggmule": "mule_spawn_egg", + "mulespawn": "mule_spawn_egg", + "spawnmule": "mule_spawn_egg", + "mushroom_stem": { + "material": "MUSHROOM_STEM" + }, + "mushroomstem": "mushroom_stem", + "mushroom_stew": { + "material": "MUSHROOM_STEW" + }, + "mushroomstew": "mushroom_stew", + "music_disc_11": { + "material": "MUSIC_DISC_11" + }, + "musicdisc11": "music_disc_11", + "11musicrecord": "music_disc_11", + "crackedmusicrecord": "music_disc_11", + "crackmusicrecord": "music_disc_11", + "cmusicrecord": "music_disc_11", + "musicrecord11": "music_disc_11", + "11musicdisk": "music_disc_11", + "crackedmusicdisk": "music_disc_11", + "crackmusicdisk": "music_disc_11", + "cmusicdisk": "music_disc_11", + "musicdisk11": "music_disc_11", + "11musicdisc": "music_disc_11", + "crackedmusicdisc": "music_disc_11", + "crackmusicdisc": "music_disc_11", + "cmusicdisc": "music_disc_11", + "11musiccd": "music_disc_11", + "crackedmusiccd": "music_disc_11", + "crackmusiccd": "music_disc_11", + "cmusiccd": "music_disc_11", + "musiccd11": "music_disc_11", + "11mrecord": "music_disc_11", + "crackedmrecord": "music_disc_11", + "crackmrecord": "music_disc_11", + "cmrecord": "music_disc_11", + "mrecord11": "music_disc_11", + "11mdisk": "music_disc_11", + "crackedmdisk": "music_disc_11", + "crackmdisk": "music_disc_11", + "cmdisk": "music_disc_11", + "mdisk11": "music_disc_11", + "11mdisc": "music_disc_11", + "crackedmdisc": "music_disc_11", + "crackmdisc": "music_disc_11", + "cmdisc": "music_disc_11", + "mdisc11": "music_disc_11", + "11mcd": "music_disc_11", + "crackedmcd": "music_disc_11", + "crackmcd": "music_disc_11", + "cmcd": "music_disc_11", + "mcd11": "music_disc_11", + "11record": "music_disc_11", + "crackedrecord": "music_disc_11", + "crackrecord": "music_disc_11", + "crecord": "music_disc_11", + "record11": "music_disc_11", + "11disk": "music_disc_11", + "crackeddisk": "music_disc_11", + "crackdisk": "music_disc_11", + "cdisk": "music_disc_11", + "disk11": "music_disc_11", + "11disc": "music_disc_11", + "crackeddisc": "music_disc_11", + "crackdisc": "music_disc_11", + "cdisc": "music_disc_11", + "disc11": "music_disc_11", + "11cd": "music_disc_11", + "crackedcd": "music_disc_11", + "crackcd": "music_disc_11", + "ccd": "music_disc_11", + "cd11": "music_disc_11", + "music_disc_13": { + "material": "MUSIC_DISC_13" + }, + "musicdisc13": "music_disc_13", + "13musicrecord": "music_disc_13", + "goldmusicrecord": "music_disc_13", + "gomusicrecord": "music_disc_13", + "musicrecord1": "music_disc_13", + "1musicrecord": "music_disc_13", + "13musicdisk": "music_disc_13", + "goldmusicdisk": "music_disc_13", + "gomusicdisk": "music_disc_13", + "musicdisk1": "music_disc_13", + "1musicdisk": "music_disc_13", + "13musicdisc": "music_disc_13", + "goldmusicdisc": "music_disc_13", + "gomusicdisc": "music_disc_13", + "musicdisc1": "music_disc_13", + "1musicdisc": "music_disc_13", + "13musiccd": "music_disc_13", + "goldmusiccd": "music_disc_13", + "gomusiccd": "music_disc_13", + "musiccd1": "music_disc_13", + "1musiccd": "music_disc_13", + "13mrecord": "music_disc_13", + "goldmrecord": "music_disc_13", + "gomrecord": "music_disc_13", + "mrecord1": "music_disc_13", + "1mrecord": "music_disc_13", + "13mdisk": "music_disc_13", + "goldmdisk": "music_disc_13", + "gomdisk": "music_disc_13", + "mdisk1": "music_disc_13", + "1mdisk": "music_disc_13", + "13mdisc": "music_disc_13", + "goldmdisc": "music_disc_13", + "gomdisc": "music_disc_13", + "mdisc1": "music_disc_13", + "1mdisc": "music_disc_13", + "13mcd": "music_disc_13", + "goldmcd": "music_disc_13", + "gomcd": "music_disc_13", + "mcd1": "music_disc_13", + "1mcd": "music_disc_13", + "13record": "music_disc_13", + "goldrecord": "music_disc_13", + "gorecord": "music_disc_13", + "record1": "music_disc_13", + "1record": "music_disc_13", + "13disk": "music_disc_13", + "golddisk": "music_disc_13", + "godisk": "music_disc_13", + "disk1": "music_disc_13", + "1disk": "music_disc_13", + "13disc": "music_disc_13", + "golddisc": "music_disc_13", + "godisc": "music_disc_13", + "disc1": "music_disc_13", + "1disc": "music_disc_13", + "13cd": "music_disc_13", + "goldcd": "music_disc_13", + "gocd": "music_disc_13", + "cd1": "music_disc_13", + "1cd": "music_disc_13", + "music_disc_blocks": { + "material": "MUSIC_DISC_BLOCKS" + }, + "musicdiscblocks": "music_disc_blocks", + "blocksmusicrecord": "music_disc_blocks", + "orangemusicrecord": "music_disc_blocks", + "ormusicrecord": "music_disc_blocks", + "musicrecord3": "music_disc_blocks", + "3musicrecord": "music_disc_blocks", + "blocksmusicdisk": "music_disc_blocks", + "orangemusicdisk": "music_disc_blocks", + "ormusicdisk": "music_disc_blocks", + "musicdisk3": "music_disc_blocks", + "3musicdisk": "music_disc_blocks", + "blocksmusicdisc": "music_disc_blocks", + "orangemusicdisc": "music_disc_blocks", + "ormusicdisc": "music_disc_blocks", + "musicdisc3": "music_disc_blocks", + "3musicdisc": "music_disc_blocks", + "blocksmusiccd": "music_disc_blocks", + "orangemusiccd": "music_disc_blocks", + "ormusiccd": "music_disc_blocks", + "musiccd3": "music_disc_blocks", + "3musiccd": "music_disc_blocks", + "blocksmrecord": "music_disc_blocks", + "orangemrecord": "music_disc_blocks", + "ormrecord": "music_disc_blocks", + "mrecord3": "music_disc_blocks", + "3mrecord": "music_disc_blocks", + "blocksmdisk": "music_disc_blocks", + "orangemdisk": "music_disc_blocks", + "ormdisk": "music_disc_blocks", + "mdisk3": "music_disc_blocks", + "3mdisk": "music_disc_blocks", + "blocksmdisc": "music_disc_blocks", + "orangemdisc": "music_disc_blocks", + "ormdisc": "music_disc_blocks", + "mdisc3": "music_disc_blocks", + "3mdisc": "music_disc_blocks", + "blocksmcd": "music_disc_blocks", + "orangemcd": "music_disc_blocks", + "ormcd": "music_disc_blocks", + "mcd3": "music_disc_blocks", + "3mcd": "music_disc_blocks", + "blocksrecord": "music_disc_blocks", + "orangerecord": "music_disc_blocks", + "orrecord": "music_disc_blocks", + "record3": "music_disc_blocks", + "3record": "music_disc_blocks", + "blocksdisk": "music_disc_blocks", + "orangedisk": "music_disc_blocks", + "ordisk": "music_disc_blocks", + "disk3": "music_disc_blocks", + "3disk": "music_disc_blocks", + "blocksdisc": "music_disc_blocks", + "orangedisc": "music_disc_blocks", + "ordisc": "music_disc_blocks", + "disc3": "music_disc_blocks", + "3disc": "music_disc_blocks", + "blockscd": "music_disc_blocks", + "orangecd": "music_disc_blocks", + "orcd": "music_disc_blocks", + "cd3": "music_disc_blocks", + "3cd": "music_disc_blocks", + "music_disc_cat": { + "material": "MUSIC_DISC_CAT" + }, + "musicdisccat": "music_disc_cat", + "catmusicrecord": "music_disc_cat", + "greenmusicrecord": "music_disc_cat", + "grmusicrecord": "music_disc_cat", + "musicrecord2": "music_disc_cat", + "2musicrecord": "music_disc_cat", + "catmusicdisk": "music_disc_cat", + "greenmusicdisk": "music_disc_cat", + "grmusicdisk": "music_disc_cat", + "musicdisk2": "music_disc_cat", + "2musicdisk": "music_disc_cat", + "catmusicdisc": "music_disc_cat", + "greenmusicdisc": "music_disc_cat", + "grmusicdisc": "music_disc_cat", + "musicdisc2": "music_disc_cat", + "2musicdisc": "music_disc_cat", + "catmusiccd": "music_disc_cat", + "greenmusiccd": "music_disc_cat", + "grmusiccd": "music_disc_cat", + "musiccd2": "music_disc_cat", + "2musiccd": "music_disc_cat", + "catmrecord": "music_disc_cat", + "greenmrecord": "music_disc_cat", + "grmrecord": "music_disc_cat", + "mrecord2": "music_disc_cat", + "2mrecord": "music_disc_cat", + "catmdisk": "music_disc_cat", + "greenmdisk": "music_disc_cat", + "grmdisk": "music_disc_cat", + "mdisk2": "music_disc_cat", + "2mdisk": "music_disc_cat", + "catmdisc": "music_disc_cat", + "greenmdisc": "music_disc_cat", + "grmdisc": "music_disc_cat", + "mdisc2": "music_disc_cat", + "2mdisc": "music_disc_cat", + "catmcd": "music_disc_cat", + "greenmcd": "music_disc_cat", + "grmcd": "music_disc_cat", + "mcd2": "music_disc_cat", + "2mcd": "music_disc_cat", + "catrecord": "music_disc_cat", + "greenrecord": "music_disc_cat", + "grrecord": "music_disc_cat", + "record2": "music_disc_cat", + "2record": "music_disc_cat", + "catdisk": "music_disc_cat", + "greendisk": "music_disc_cat", + "grdisk": "music_disc_cat", + "disk2": "music_disc_cat", + "2disk": "music_disc_cat", + "catdisc": "music_disc_cat", + "greendisc": "music_disc_cat", + "grdisc": "music_disc_cat", + "disc2": "music_disc_cat", + "2disc": "music_disc_cat", + "catcd": "music_disc_cat", + "greencd": "music_disc_cat", + "grcd": "music_disc_cat", + "cd2": "music_disc_cat", + "2cd": "music_disc_cat", + "music_disc_chirp": { + "material": "MUSIC_DISC_CHIRP" + }, + "musicdiscchirp": "music_disc_chirp", + "chirpmusicrecord": "music_disc_chirp", + "redmusicrecord": "music_disc_chirp", + "remusicrecord": "music_disc_chirp", + "musicrecord4": "music_disc_chirp", + "4musicrecord": "music_disc_chirp", + "chirpmusicdisk": "music_disc_chirp", + "redmusicdisk": "music_disc_chirp", + "remusicdisk": "music_disc_chirp", + "musicdisk4": "music_disc_chirp", + "4musicdisk": "music_disc_chirp", + "chirpmusicdisc": "music_disc_chirp", + "redmusicdisc": "music_disc_chirp", + "remusicdisc": "music_disc_chirp", + "musicdisc4": "music_disc_chirp", + "4musicdisc": "music_disc_chirp", + "chirpmusiccd": "music_disc_chirp", + "redmusiccd": "music_disc_chirp", + "remusiccd": "music_disc_chirp", + "musiccd4": "music_disc_chirp", + "4musiccd": "music_disc_chirp", + "chirpmrecord": "music_disc_chirp", + "redmrecord": "music_disc_chirp", + "remrecord": "music_disc_chirp", + "mrecord4": "music_disc_chirp", + "4mrecord": "music_disc_chirp", + "chirpmdisk": "music_disc_chirp", + "redmdisk": "music_disc_chirp", + "remdisk": "music_disc_chirp", + "mdisk4": "music_disc_chirp", + "4mdisk": "music_disc_chirp", + "chirpmdisc": "music_disc_chirp", + "redmdisc": "music_disc_chirp", + "remdisc": "music_disc_chirp", + "mdisc4": "music_disc_chirp", + "4mdisc": "music_disc_chirp", + "chirpmcd": "music_disc_chirp", + "redmcd": "music_disc_chirp", + "remcd": "music_disc_chirp", + "mcd4": "music_disc_chirp", + "4mcd": "music_disc_chirp", + "chirprecord": "music_disc_chirp", + "redrecord": "music_disc_chirp", + "rerecord": "music_disc_chirp", + "record4": "music_disc_chirp", + "4record": "music_disc_chirp", + "chirpdisk": "music_disc_chirp", + "reddisk": "music_disc_chirp", + "redisk": "music_disc_chirp", + "disk4": "music_disc_chirp", + "4disk": "music_disc_chirp", + "chirpdisc": "music_disc_chirp", + "reddisc": "music_disc_chirp", + "redisc": "music_disc_chirp", + "disc4": "music_disc_chirp", + "4disc": "music_disc_chirp", + "chirpcd": "music_disc_chirp", + "redcd": "music_disc_chirp", + "recd": "music_disc_chirp", + "cd4": "music_disc_chirp", + "4cd": "music_disc_chirp", + "music_disc_far": { + "material": "MUSIC_DISC_FAR" + }, + "musicdiscfar": "music_disc_far", + "farmusicrecord": "music_disc_far", + "lightgreenmusicrecord": "music_disc_far", + "lgreenmusicrecord": "music_disc_far", + "lightgrmusicrecord": "music_disc_far", + "lgrmusicrecord": "music_disc_far", + "musicrecord5": "music_disc_far", + "5musicrecord": "music_disc_far", + "farmusicdisk": "music_disc_far", + "lightgreenmusicdisk": "music_disc_far", + "lgreenmusicdisk": "music_disc_far", + "lightgrmusicdisk": "music_disc_far", + "lgrmusicdisk": "music_disc_far", + "musicdisk5": "music_disc_far", + "5musicdisk": "music_disc_far", + "farmusicdisc": "music_disc_far", + "lightgreenmusicdisc": "music_disc_far", + "lgreenmusicdisc": "music_disc_far", + "lightgrmusicdisc": "music_disc_far", + "lgrmusicdisc": "music_disc_far", + "musicdisc5": "music_disc_far", + "5musicdisc": "music_disc_far", + "farmusiccd": "music_disc_far", + "lightgreenmusiccd": "music_disc_far", + "lgreenmusiccd": "music_disc_far", + "lightgrmusiccd": "music_disc_far", + "lgrmusiccd": "music_disc_far", + "musiccd5": "music_disc_far", + "5musiccd": "music_disc_far", + "farmrecord": "music_disc_far", + "lightgreenmrecord": "music_disc_far", + "lgreenmrecord": "music_disc_far", + "lightgrmrecord": "music_disc_far", + "lgrmrecord": "music_disc_far", + "mrecord5": "music_disc_far", + "5mrecord": "music_disc_far", + "farmdisk": "music_disc_far", + "lightgreenmdisk": "music_disc_far", + "lgreenmdisk": "music_disc_far", + "lightgrmdisk": "music_disc_far", + "lgrmdisk": "music_disc_far", + "mdisk5": "music_disc_far", + "5mdisk": "music_disc_far", + "farmdisc": "music_disc_far", + "lightgreenmdisc": "music_disc_far", + "lgreenmdisc": "music_disc_far", + "lightgrmdisc": "music_disc_far", + "lgrmdisc": "music_disc_far", + "mdisc5": "music_disc_far", + "5mdisc": "music_disc_far", + "farmcd": "music_disc_far", + "lightgreenmcd": "music_disc_far", + "lgreenmcd": "music_disc_far", + "lightgrmcd": "music_disc_far", + "lgrmcd": "music_disc_far", + "mcd5": "music_disc_far", + "5mcd": "music_disc_far", + "farrecord": "music_disc_far", + "lightgreenrecord": "music_disc_far", + "lgreenrecord": "music_disc_far", + "lightgrrecord": "music_disc_far", + "lgrrecord": "music_disc_far", + "record5": "music_disc_far", + "5record": "music_disc_far", + "fardisk": "music_disc_far", + "lightgreendisk": "music_disc_far", + "lgreendisk": "music_disc_far", + "lightgrdisk": "music_disc_far", + "lgrdisk": "music_disc_far", + "disk5": "music_disc_far", + "5disk": "music_disc_far", + "fardisc": "music_disc_far", + "lightgreendisc": "music_disc_far", + "lgreendisc": "music_disc_far", + "lightgrdisc": "music_disc_far", + "lgrdisc": "music_disc_far", + "disc5": "music_disc_far", + "5disc": "music_disc_far", + "farcd": "music_disc_far", + "lightgreencd": "music_disc_far", + "lgreencd": "music_disc_far", + "lightgrcd": "music_disc_far", + "lgrcd": "music_disc_far", + "cd5": "music_disc_far", + "5cd": "music_disc_far", + "music_disc_mall": { + "material": "MUSIC_DISC_MALL" + }, + "musicdiscmall": "music_disc_mall", + "mallmusicrecord": "music_disc_mall", + "purplemusicrecord": "music_disc_mall", + "pumusicrecord": "music_disc_mall", + "musicrecord6": "music_disc_mall", + "6musicrecord": "music_disc_mall", + "mallmusicdisk": "music_disc_mall", + "purplemusicdisk": "music_disc_mall", + "pumusicdisk": "music_disc_mall", + "musicdisk6": "music_disc_mall", + "6musicdisk": "music_disc_mall", + "mallmusicdisc": "music_disc_mall", + "purplemusicdisc": "music_disc_mall", + "pumusicdisc": "music_disc_mall", + "musicdisc6": "music_disc_mall", + "6musicdisc": "music_disc_mall", + "mallmusiccd": "music_disc_mall", + "purplemusiccd": "music_disc_mall", + "pumusiccd": "music_disc_mall", + "musiccd6": "music_disc_mall", + "6musiccd": "music_disc_mall", + "mallmrecord": "music_disc_mall", + "purplemrecord": "music_disc_mall", + "pumrecord": "music_disc_mall", + "mrecord6": "music_disc_mall", + "6mrecord": "music_disc_mall", + "mallmdisk": "music_disc_mall", + "purplemdisk": "music_disc_mall", + "pumdisk": "music_disc_mall", + "mdisk6": "music_disc_mall", + "6mdisk": "music_disc_mall", + "mallmdisc": "music_disc_mall", + "purplemdisc": "music_disc_mall", + "pumdisc": "music_disc_mall", + "mdisc6": "music_disc_mall", + "6mdisc": "music_disc_mall", + "mallmcd": "music_disc_mall", + "purplemcd": "music_disc_mall", + "pumcd": "music_disc_mall", + "mcd6": "music_disc_mall", + "6mcd": "music_disc_mall", + "mallrecord": "music_disc_mall", + "purplerecord": "music_disc_mall", + "purecord": "music_disc_mall", + "record6": "music_disc_mall", + "6record": "music_disc_mall", + "malldisk": "music_disc_mall", + "purpledisk": "music_disc_mall", + "pudisk": "music_disc_mall", + "disk6": "music_disc_mall", + "6disk": "music_disc_mall", + "malldisc": "music_disc_mall", + "purpledisc": "music_disc_mall", + "pudisc": "music_disc_mall", + "disc6": "music_disc_mall", + "6disc": "music_disc_mall", + "mallcd": "music_disc_mall", + "purplecd": "music_disc_mall", + "pucd": "music_disc_mall", + "cd6": "music_disc_mall", + "6cd": "music_disc_mall", + "music_disc_mellohi": { + "material": "MUSIC_DISC_MELLOHI" + }, + "musicdiscmellohi": "music_disc_mellohi", + "mellohimusicrecord": "music_disc_mellohi", + "pinkmusicrecord": "music_disc_mellohi", + "pimusicrecord": "music_disc_mellohi", + "musicrecord7": "music_disc_mellohi", + "7musicrecord": "music_disc_mellohi", + "mellohimusicdisk": "music_disc_mellohi", + "pinkmusicdisk": "music_disc_mellohi", + "pimusicdisk": "music_disc_mellohi", + "musicdisk7": "music_disc_mellohi", + "7musicdisk": "music_disc_mellohi", + "mellohimusicdisc": "music_disc_mellohi", + "pinkmusicdisc": "music_disc_mellohi", + "pimusicdisc": "music_disc_mellohi", + "musicdisc7": "music_disc_mellohi", + "7musicdisc": "music_disc_mellohi", + "mellohimusiccd": "music_disc_mellohi", + "pinkmusiccd": "music_disc_mellohi", + "pimusiccd": "music_disc_mellohi", + "musiccd7": "music_disc_mellohi", + "7musiccd": "music_disc_mellohi", + "mellohimrecord": "music_disc_mellohi", + "pinkmrecord": "music_disc_mellohi", + "pimrecord": "music_disc_mellohi", + "mrecord7": "music_disc_mellohi", + "7mrecord": "music_disc_mellohi", + "mellohimdisk": "music_disc_mellohi", + "pinkmdisk": "music_disc_mellohi", + "pimdisk": "music_disc_mellohi", + "mdisk7": "music_disc_mellohi", + "7mdisk": "music_disc_mellohi", + "mellohimdisc": "music_disc_mellohi", + "pinkmdisc": "music_disc_mellohi", + "pimdisc": "music_disc_mellohi", + "mdisc7": "music_disc_mellohi", + "7mdisc": "music_disc_mellohi", + "mellohimcd": "music_disc_mellohi", + "pinkmcd": "music_disc_mellohi", + "pimcd": "music_disc_mellohi", + "mcd7": "music_disc_mellohi", + "7mcd": "music_disc_mellohi", + "mellohirecord": "music_disc_mellohi", + "pinkrecord": "music_disc_mellohi", + "pirecord": "music_disc_mellohi", + "record7": "music_disc_mellohi", + "7record": "music_disc_mellohi", + "mellohidisk": "music_disc_mellohi", + "pinkdisk": "music_disc_mellohi", + "pidisk": "music_disc_mellohi", + "disk7": "music_disc_mellohi", + "7disk": "music_disc_mellohi", + "mellohidisc": "music_disc_mellohi", + "pinkdisc": "music_disc_mellohi", + "pidisc": "music_disc_mellohi", + "disc7": "music_disc_mellohi", + "7disc": "music_disc_mellohi", + "mellohicd": "music_disc_mellohi", + "pinkcd": "music_disc_mellohi", + "picd": "music_disc_mellohi", + "cd7": "music_disc_mellohi", + "7cd": "music_disc_mellohi", + "music_disc_stal": { + "material": "MUSIC_DISC_STAL" + }, + "musicdiscstal": "music_disc_stal", + "stalmusicrecord": "music_disc_stal", + "blackmusicrecord": "music_disc_stal", + "blmusicrecord": "music_disc_wait", + "musicrecord8": "music_disc_stal", + "8musicrecord": "music_disc_stal", + "stalmusicdisk": "music_disc_stal", + "blackmusicdisk": "music_disc_stal", + "blmusicdisk": "music_disc_wait", + "musicdisk8": "music_disc_stal", + "8musicdisk": "music_disc_stal", + "stalmusicdisc": "music_disc_stal", + "blackmusicdisc": "music_disc_stal", + "blmusicdisc": "music_disc_wait", + "musicdisc8": "music_disc_stal", + "8musicdisc": "music_disc_stal", + "stalmusiccd": "music_disc_stal", + "blackmusiccd": "music_disc_stal", + "blmusiccd": "music_disc_wait", + "musiccd8": "music_disc_stal", + "8musiccd": "music_disc_stal", + "stalmrecord": "music_disc_stal", + "blackmrecord": "music_disc_stal", + "blmrecord": "music_disc_wait", + "mrecord8": "music_disc_stal", + "8mrecord": "music_disc_stal", + "stalmdisk": "music_disc_stal", + "blackmdisk": "music_disc_stal", + "blmdisk": "music_disc_wait", + "mdisk8": "music_disc_stal", + "8mdisk": "music_disc_stal", + "stalmdisc": "music_disc_stal", + "blackmdisc": "music_disc_stal", + "blmdisc": "music_disc_wait", + "mdisc8": "music_disc_stal", + "8mdisc": "music_disc_stal", + "stalmcd": "music_disc_stal", + "blackmcd": "music_disc_stal", + "blmcd": "music_disc_wait", + "mcd8": "music_disc_stal", + "8mcd": "music_disc_stal", + "stalrecord": "music_disc_stal", + "blackrecord": "music_disc_stal", + "blrecord": "music_disc_wait", + "record8": "music_disc_stal", + "8record": "music_disc_stal", + "staldisk": "music_disc_stal", + "blackdisk": "music_disc_stal", + "bldisk": "music_disc_wait", + "disk8": "music_disc_stal", + "8disk": "music_disc_stal", + "staldisc": "music_disc_stal", + "blackdisc": "music_disc_stal", + "bldisc": "music_disc_wait", + "disc8": "music_disc_stal", + "8disc": "music_disc_stal", + "stalcd": "music_disc_stal", + "blackcd": "music_disc_stal", + "blcd": "music_disc_wait", + "cd8": "music_disc_stal", + "8cd": "music_disc_stal", + "music_disc_strad": { + "material": "MUSIC_DISC_STRAD" + }, + "musicdiscstrad": "music_disc_strad", + "stradmusicrecord": "music_disc_strad", + "whitemusicrecord": "music_disc_strad", + "whmusicrecord": "music_disc_strad", + "musicrecord9": "music_disc_strad", + "9musicrecord": "music_disc_strad", + "stradmusicdisk": "music_disc_strad", + "whitemusicdisk": "music_disc_strad", + "whmusicdisk": "music_disc_strad", + "musicdisk9": "music_disc_strad", + "9musicdisk": "music_disc_strad", + "stradmusicdisc": "music_disc_strad", + "whitemusicdisc": "music_disc_strad", + "whmusicdisc": "music_disc_strad", + "musicdisc9": "music_disc_strad", + "9musicdisc": "music_disc_strad", + "stradmusiccd": "music_disc_strad", + "whitemusiccd": "music_disc_strad", + "whmusiccd": "music_disc_strad", + "musiccd9": "music_disc_strad", + "9musiccd": "music_disc_strad", + "stradmrecord": "music_disc_strad", + "whitemrecord": "music_disc_strad", + "whmrecord": "music_disc_strad", + "mrecord9": "music_disc_strad", + "9mrecord": "music_disc_strad", + "stradmdisk": "music_disc_strad", + "whitemdisk": "music_disc_strad", + "whmdisk": "music_disc_strad", + "mdisk9": "music_disc_strad", + "9mdisk": "music_disc_strad", + "stradmdisc": "music_disc_strad", + "whitemdisc": "music_disc_strad", + "whmdisc": "music_disc_strad", + "mdisc9": "music_disc_strad", + "9mdisc": "music_disc_strad", + "stradmcd": "music_disc_strad", + "whitemcd": "music_disc_strad", + "whmcd": "music_disc_strad", + "mcd9": "music_disc_strad", + "9mcd": "music_disc_strad", + "stradrecord": "music_disc_strad", + "whiterecord": "music_disc_strad", + "whrecord": "music_disc_strad", + "record9": "music_disc_strad", + "9record": "music_disc_strad", + "straddisk": "music_disc_strad", + "whitedisk": "music_disc_strad", + "whdisk": "music_disc_strad", + "disk9": "music_disc_strad", + "9disk": "music_disc_strad", + "straddisc": "music_disc_strad", + "whitedisc": "music_disc_strad", + "whdisc": "music_disc_strad", + "disc9": "music_disc_strad", + "9disc": "music_disc_strad", + "stradcd": "music_disc_strad", + "whitecd": "music_disc_strad", + "whcd": "music_disc_strad", + "cd9": "music_disc_strad", + "9cd": "music_disc_strad", + "music_disc_wait": { + "material": "MUSIC_DISC_WAIT" + }, + "musicdiscwait": "music_disc_wait", + "waitmusicrecord": "music_disc_wait", + "bluemusicrecord": "music_disc_wait", + "cyanmusicrecord": "music_disc_wait", + "cymusicrecord": "music_disc_wait", + "musicrecord12": "music_disc_wait", + "12musicrecord": "music_disc_wait", + "waitmusicdisk": "music_disc_wait", + "bluemusicdisk": "music_disc_wait", + "cyanmusicdisk": "music_disc_wait", + "cymusicdisk": "music_disc_wait", + "musicdisk12": "music_disc_wait", + "12musicdisk": "music_disc_wait", + "waitmusicdisc": "music_disc_wait", + "bluemusicdisc": "music_disc_wait", + "cyanmusicdisc": "music_disc_wait", + "cymusicdisc": "music_disc_wait", + "musicdisc12": "music_disc_wait", + "12musicdisc": "music_disc_wait", + "waitmusiccd": "music_disc_wait", + "bluemusiccd": "music_disc_wait", + "cyanmusiccd": "music_disc_wait", + "cymusiccd": "music_disc_wait", + "musiccd12": "music_disc_wait", + "12musiccd": "music_disc_wait", + "waitmrecord": "music_disc_wait", + "bluemrecord": "music_disc_wait", + "cyanmrecord": "music_disc_wait", + "cymrecord": "music_disc_wait", + "mrecord12": "music_disc_wait", + "12mrecord": "music_disc_wait", + "waitmdisk": "music_disc_wait", + "bluemdisk": "music_disc_wait", + "cyanmdisk": "music_disc_wait", + "cymdisk": "music_disc_wait", + "mdisk12": "music_disc_wait", + "12mdisk": "music_disc_wait", + "waitmdisc": "music_disc_wait", + "bluemdisc": "music_disc_wait", + "cyanmdisc": "music_disc_wait", + "cymdisc": "music_disc_wait", + "mdisc12": "music_disc_wait", + "12mdisc": "music_disc_wait", + "waitmcd": "music_disc_wait", + "bluemcd": "music_disc_wait", + "cyanmcd": "music_disc_wait", + "cymcd": "music_disc_wait", + "mcd12": "music_disc_wait", + "12mcd": "music_disc_wait", + "waitrecord": "music_disc_wait", + "bluerecord": "music_disc_wait", + "cyanrecord": "music_disc_wait", + "cyrecord": "music_disc_wait", + "record12": "music_disc_wait", + "12record": "music_disc_wait", + "waitdisk": "music_disc_wait", + "bluedisk": "music_disc_wait", + "cyandisk": "music_disc_wait", + "cydisk": "music_disc_wait", + "disk12": "music_disc_wait", + "12disk": "music_disc_wait", + "waitdisc": "music_disc_wait", + "bluedisc": "music_disc_wait", + "cyandisc": "music_disc_wait", + "cydisc": "music_disc_wait", + "disc12": "music_disc_wait", + "12disc": "music_disc_wait", + "waitcd": "music_disc_wait", + "bluecd": "music_disc_wait", + "cyancd": "music_disc_wait", + "cycd": "music_disc_wait", + "cd12": "music_disc_wait", + "12cd": "music_disc_wait", + "music_disc_ward": { + "material": "MUSIC_DISC_WARD" + }, + "musicdiscward": "music_disc_ward", + "wardmusicrecord": "music_disc_ward", + "darkgreenmusicrecord": "music_disc_ward", + "dgreenmusicrecord": "music_disc_ward", + "darkgrmusicrecord": "music_disc_ward", + "dgrmusicrecord": "music_disc_ward", + "musicrecord10": "music_disc_ward", + "10musicrecord": "music_disc_ward", + "wardmusicdisk": "music_disc_ward", + "darkgreenmusicdisk": "music_disc_ward", + "dgreenmusicdisk": "music_disc_ward", + "darkgrmusicdisk": "music_disc_ward", + "dgrmusicdisk": "music_disc_ward", + "musicdisk10": "music_disc_ward", + "10musicdisk": "music_disc_ward", + "wardmusicdisc": "music_disc_ward", + "darkgreenmusicdisc": "music_disc_ward", + "dgreenmusicdisc": "music_disc_ward", + "darkgrmusicdisc": "music_disc_ward", + "dgrmusicdisc": "music_disc_ward", + "musicdisc10": "music_disc_ward", + "10musicdisc": "music_disc_ward", + "wardmusiccd": "music_disc_ward", + "darkgreenmusiccd": "music_disc_ward", + "dgreenmusiccd": "music_disc_ward", + "darkgrmusiccd": "music_disc_ward", + "dgrmusiccd": "music_disc_ward", + "musiccd10": "music_disc_ward", + "10musiccd": "music_disc_ward", + "wardmrecord": "music_disc_ward", + "darkgreenmrecord": "music_disc_ward", + "dgreenmrecord": "music_disc_ward", + "darkgrmrecord": "music_disc_ward", + "dgrmrecord": "music_disc_ward", + "mrecord10": "music_disc_ward", + "10mrecord": "music_disc_ward", + "wardmdisk": "music_disc_ward", + "darkgreenmdisk": "music_disc_ward", + "dgreenmdisk": "music_disc_ward", + "darkgrmdisk": "music_disc_ward", + "dgrmdisk": "music_disc_ward", + "mdisk10": "music_disc_ward", + "10mdisk": "music_disc_ward", + "wardmdisc": "music_disc_ward", + "darkgreenmdisc": "music_disc_ward", + "dgreenmdisc": "music_disc_ward", + "darkgrmdisc": "music_disc_ward", + "dgrmdisc": "music_disc_ward", + "mdisc10": "music_disc_ward", + "10mdisc": "music_disc_ward", + "wardmcd": "music_disc_ward", + "darkgreenmcd": "music_disc_ward", + "dgreenmcd": "music_disc_ward", + "darkgrmcd": "music_disc_ward", + "dgrmcd": "music_disc_ward", + "mcd10": "music_disc_ward", + "10mcd": "music_disc_ward", + "wardrecord": "music_disc_ward", + "darkgreenrecord": "music_disc_ward", + "dgreenrecord": "music_disc_ward", + "darkgrrecord": "music_disc_ward", + "dgrrecord": "music_disc_ward", + "record10": "music_disc_ward", + "10record": "music_disc_ward", + "warddisk": "music_disc_ward", + "darkgreendisk": "music_disc_ward", + "dgreendisk": "music_disc_ward", + "darkgrdisk": "music_disc_ward", + "dgrdisk": "music_disc_ward", + "disk10": "music_disc_ward", + "10disk": "music_disc_ward", + "warddisc": "music_disc_ward", + "darkgreendisc": "music_disc_ward", + "dgreendisc": "music_disc_ward", + "darkgrdisc": "music_disc_ward", + "dgrdisc": "music_disc_ward", + "disc10": "music_disc_ward", + "10disc": "music_disc_ward", + "wardcd": "music_disc_ward", + "darkgreencd": "music_disc_ward", + "dgreencd": "music_disc_ward", + "darkgrcd": "music_disc_ward", + "dgrcd": "music_disc_ward", + "cd10": "music_disc_ward", + "10cd": "music_disc_ward", + "mutton": { + "material": "MUTTON" + }, + "rawmutton": "mutton", + "rawsheepmeat": "mutton", + "ramutton": "mutton", + "rasheepmeat": "mutton", + "uncookedmutton": "mutton", + "uncookedsheepmeat": "mutton", + "plainmutton": "mutton", + "plainsheepmeat": "mutton", + "sheepmeat": "mutton", + "mycelium": { + "material": "MYCELIUM" + }, + "mycel": "mycelium", + "swampgrass": "mycelium", + "sgrass": "mycelium", + "mushroomgrass": "mycelium", + "mushgrass": "mycelium", + "name_tag": { + "material": "NAME_TAG" + }, + "nametag": "name_tag", + "nautilus_shell": { + "material": "NAUTILUS_SHELL" + }, + "nautilusshell": "nautilus_shell", + "netherrack": { + "material": "NETHERRACK" + }, + "nether_brick": { + "material": "NETHER_BRICK" + }, + "netherbrick": "nether_brick", + "nether_bricks": { + "material": "NETHER_BRICKS" + }, + "netherbricks": "nether_bricks", + "nether_brick_fence": { + "material": "NETHER_BRICK_FENCE" + }, + "netherbrickfence": "nether_brick_fence", + "nether_brick_slab": { + "material": "NETHER_BRICK_SLAB" + }, + "netherbrickslab": "nether_brick_slab", + "nether_brick_stairs": { + "material": "NETHER_BRICK_STAIRS" + }, + "netherbrickstairs": "nether_brick_stairs", + "nether_portal": { + "material": "NETHER_PORTAL", + "unspawnable": true + }, + "netherportal": "nether_portal", + "nether_quartz_ore": { + "material": "NETHER_QUARTZ_ORE" + }, + "netherquartzore": "nether_quartz_ore", + "netherquartzo": "nether_quartz_ore", + "orenetherquartz": "nether_quartz_ore", + "onetherquartz": "nether_quartz_ore", + "hellquartzore": "nether_quartz_ore", + "hellquartzo": "nether_quartz_ore", + "orehellquartz": "nether_quartz_ore", + "ohellquartz": "nether_quartz_ore", + "deathquartzore": "nether_quartz_ore", + "deathquartzo": "nether_quartz_ore", + "oredeathquartz": "nether_quartz_ore", + "odeathquartz": "nether_quartz_ore", + "nquartzore": "nether_quartz_ore", + "nquartzo": "nether_quartz_ore", + "orenquartz": "nether_quartz_ore", + "onquartz": "nether_quartz_ore", + "hquartzore": "nether_quartz_ore", + "hquartzo": "nether_quartz_ore", + "orehquartz": "nether_quartz_ore", + "ohquartz": "nether_quartz_ore", + "dquartzore": "nether_quartz_ore", + "dquartzo": "nether_quartz_ore", + "oredquartz": "nether_quartz_ore", + "odquartz": "nether_quartz_ore", + "quartzore": "nether_quartz_ore", + "quartzo": "nether_quartz_ore", + "orequartz": "nether_quartz_ore", + "oquartz": "nether_quartz_ore", + "netherqore": "nether_quartz_ore", + "netherqo": "nether_quartz_ore", + "orenetherq": "nether_quartz_ore", + "onetherq": "nether_quartz_ore", + "hellqore": "nether_quartz_ore", + "hellqo": "nether_quartz_ore", + "orehellq": "nether_quartz_ore", + "ohellq": "nether_quartz_ore", + "deathqore": "nether_quartz_ore", + "deathqo": "nether_quartz_ore", + "oredeathq": "nether_quartz_ore", + "odeathq": "nether_quartz_ore", + "nqore": "nether_quartz_ore", + "nqo": "nether_quartz_ore", + "orenq": "nether_quartz_ore", + "onq": "nether_quartz_ore", + "hqore": "nether_quartz_ore", + "hqo": "nether_quartz_ore", + "orehq": "nether_quartz_ore", + "ohq": "nether_quartz_ore", + "dqore": "nether_quartz_ore", + "dqo": "nether_quartz_ore", + "oredq": "nether_quartz_ore", + "odq": "nether_quartz_ore", + "qore": "nether_quartz_ore", + "qo": "nether_quartz_ore", + "oreq": "nether_quartz_ore", + "oq": "nether_quartz_ore", + "nether_star": { + "material": "NETHER_STAR" + }, + "netherstar": "nether_star", + "nether_wart": { + "material": "NETHER_WART" + }, + "netherwart": "nether_wart", + "nether_wart_block": { + "material": "NETHER_WART_BLOCK" + }, + "netherwartblock": "nether_wart_block", + "note_block": { + "material": "NOTE_BLOCK" + }, + "noteblock": "note_block", + "musicblock": "note_block", + "nblock": "note_block", + "mblock": "note_block", + "oak_boat": { + "material": "OAK_BOAT" + }, + "oakboat": "oak_boat", + "boat": "oak_boat", + "oboat": "oak_boat", + "oak_button": { + "material": "OAK_BUTTON" + }, + "oakbutton": "oak_button", + "oak_door": { + "material": "OAK_DOOR" + }, + "oakdoor": "oak_door", + "oak_fence": { + "material": "OAK_FENCE" + }, + "oakfence": "oak_fence", + "fence": "oak_fence", + "ofence": "oak_fence", + "oak_fence_gate": { + "material": "OAK_FENCE_GATE" + }, + "oakfencegate": "oak_fence_gate", + "fencegate": "oak_fence_gate", + "gate": "oak_fence_gate", + "oakgate": "oak_fence_gate", + "ofencegate": "oak_fence_gate", + "ogate": "oak_fence_gate", + "oak_leaves": { + "material": "OAK_LEAVES" + }, + "oakleaves": "oak_leaves", + "treeleaves": "oak_leaves", + "logleaves": "oak_leaves", + "trunkleaves": "oak_leaves", + "woodleaves": "oak_leaves", + "leaves": "oak_leaves", + "treeleaf": "oak_leaves", + "logleaf": "oak_leaves", + "trunkleaf": "oak_leaves", + "woodleaf": "oak_leaves", + "leaf": "oak_leaves", + "treeleave": "oak_leaves", + "logleave": "oak_leaves", + "trunkleave": "oak_leaves", + "woodleave": "oak_leaves", + "leave": "oak_leaves", + "oaktreeleaves": "oak_leaves", + "oaklogleaves": "oak_leaves", + "oaktrunkleaves": "oak_leaves", + "oakwoodleaves": "oak_leaves", + "oaktreeleaf": "oak_leaves", + "oaklogleaf": "oak_leaves", + "oaktrunkleaf": "oak_leaves", + "oakwoodleaf": "oak_leaves", + "oakleaf": "oak_leaves", + "oaktreeleave": "oak_leaves", + "oaklogleave": "oak_leaves", + "oaktrunkleave": "oak_leaves", + "oakwoodleave": "oak_leaves", + "oakleave": "oak_leaves", + "otreeleaves": "oak_leaves", + "ologleaves": "oak_leaves", + "otrunkleaves": "oak_leaves", + "owoodleaves": "oak_leaves", + "oleaves": "oak_leaves", + "otreeleaf": "oak_leaves", + "ologleaf": "oak_leaves", + "otrunkleaf": "oak_leaves", + "owoodleaf": "oak_leaves", + "oleaf": "oak_leaves", + "otreeleave": "oak_leaves", + "ologleave": "oak_leaves", + "otrunkleave": "oak_leaves", + "owoodleave": "oak_leaves", + "oleave": "oak_leaves", + "oak_log": { + "material": "OAK_LOG" + }, + "oaklog": "oak_log", + "log": "oak_log", + "trunk": "oak_log", + "tree": "oak_log", + "oak": "oak_log", + "logoak": "oak_log", + "oaktrunk": "oak_log", + "oaktree": "oak_log", + "o": "oak_log", + "logo": "oak_log", + "otrunk": "oak_log", + "olog": "oak_log", + "otree": "oak_log", + "oak_planks": { + "material": "OAK_PLANKS" + }, + "oakplanks": "oak_planks", + "woodenplank": "oak_planks", + "woodplank": "oak_planks", + "plankwooden": "oak_planks", + "plankwood": "oak_planks", + "plankw": "oak_planks", + "plank": "oak_planks", + "oakwoodenplank": "oak_planks", + "oakwoodplank": "oak_planks", + "oakwplank": "oak_planks", + "oakplankwooden": "oak_planks", + "oakplankwood": "oak_planks", + "oakplankw": "oak_planks", + "oakplank": "oak_planks", + "owoodenplank": "oak_planks", + "owoodplank": "oak_planks", + "owplank": "oak_planks", + "oplankwooden": "oak_planks", + "oplankwood": "oak_planks", + "oplankw": "oak_planks", + "oplank": "oak_planks", + "oak_pressure_plate": { + "material": "OAK_PRESSURE_PLATE" + }, + "oakpressureplate": "oak_pressure_plate", + "oak_sapling": { + "material": "OAK_SAPLING" + }, + "oaksapling": "oak_sapling", + "sapling": "oak_sapling", + "treesapling": "oak_sapling", + "logsapling": "oak_sapling", + "trunksapling": "oak_sapling", + "woodsapling": "oak_sapling", + "oaktreesapling": "oak_sapling", + "oaklogsapling": "oak_sapling", + "oaktrunksapling": "oak_sapling", + "oakwoodsapling": "oak_sapling", + "osapling": "oak_sapling", + "otreesapling": "oak_sapling", + "ologsapling": "oak_sapling", + "otrunksapling": "oak_sapling", + "owoodsapling": "oak_sapling", + "oak_slab": { + "material": "OAK_SLAB" + }, + "oakslab": "oak_slab", + "woodenstep": "petrified_oak_slab", + "woodstep": "petrified_oak_slab", + "step": "petrified_oak_slab", + "woodenslab": "petrified_oak_slab", + "woodslab": "petrified_oak_slab", + "wslab": "petrified_oak_slab", + "woodenhalfblock": "petrified_oak_slab", + "woodhalfblock": "petrified_oak_slab", + "halfblock": "petrified_oak_slab", + "oakwoodenstep": "petrified_oak_slab", + "oakwoodstep": "petrified_oak_slab", + "oakwstep": "petrified_oak_slab", + "oakstep": "petrified_oak_slab", + "oakwoodenslab": "petrified_oak_slab", + "oakwoodslab": "petrified_oak_slab", + "oakwslab": "petrified_oak_slab", + "oakwoodenhalfblock": "petrified_oak_slab", + "oakwoodhalfblock": "petrified_oak_slab", + "oakwhalfblock": "petrified_oak_slab", + "oakhalfblock": "petrified_oak_slab", + "owoodenstep": "petrified_oak_slab", + "owoodstep": "petrified_oak_slab", + "owstep": "petrified_oak_slab", + "ostep": "petrified_oak_slab", + "owoodenslab": "petrified_oak_slab", + "owoodslab": "petrified_oak_slab", + "owslab": "petrified_oak_slab", + "owoodenhalfblock": "petrified_oak_slab", + "owoodhalfblock": "petrified_oak_slab", + "owhalfblock": "petrified_oak_slab", + "ohalfblock": "petrified_oak_slab", + "oak_stairs": { + "material": "OAK_STAIRS" + }, + "oakstairs": "oak_stairs", + "woodenstairs": "oak_stairs", + "woodstairs": "oak_stairs", + "wstairs": "oak_stairs", + "woodenstair": "oak_stairs", + "woodstair": "oak_stairs", + "stair": "oak_stairs", + "oakwoodenstairs": "oak_stairs", + "oakwoodstairs": "oak_stairs", + "oakwstairs": "oak_stairs", + "oakwoodenstair": "oak_stairs", + "oakwoodstair": "oak_stairs", + "oakwstair": "oak_stairs", + "oakstair": "oak_stairs", + "owoodenstairs": "oak_stairs", + "owoodstairs": "oak_stairs", + "owstairs": "oak_stairs", + "owoodenstair": "oak_stairs", + "owoodstair": "oak_stairs", + "owstair": "oak_stairs", + "ostair": "oak_stairs", + "oak_trapdoor": { + "material": "OAK_TRAPDOOR" + }, + "oaktrapdoor": "oak_trapdoor", + "trapdoor": "oak_trapdoor", + "doortrap": "oak_trapdoor", + "hatch": "oak_trapdoor", + "tdoor": "oak_trapdoor", + "doort": "oak_trapdoor", + "trapd": "oak_trapdoor", + "dtrap": "oak_trapdoor", + "oakdoortrap": "oak_trapdoor", + "oakhatch": "oak_trapdoor", + "oaktdoor": "oak_trapdoor", + "oakdoort": "oak_trapdoor", + "oaktrapd": "oak_trapdoor", + "oakdtrap": "oak_trapdoor", + "otrapdoor": "oak_trapdoor", + "odoortrap": "oak_trapdoor", + "ohatch": "oak_trapdoor", + "otdoor": "oak_trapdoor", + "odoort": "oak_trapdoor", + "otrapd": "oak_trapdoor", + "odtrap": "oak_trapdoor", + "oak_wood": { + "material": "OAK_WOOD" + }, + "oakwood": "oak_wood", + "wood": "oak_wood", + "logall": "oak_wood", + "trunkall": "oak_wood", + "treeall": "oak_wood", + "oaklogall": "oak_wood", + "oaktrunkall": "oak_wood", + "oaktreeall": "oak_wood", + "owood": "oak_wood", + "ologall": "oak_wood", + "otrunkall": "oak_wood", + "otreeall": "oak_wood", + "observer": { + "material": "OBSERVER" + }, + "obsidian": { + "material": "OBSIDIAN" + }, + "obsi": "obsidian", + "obby": "obsidian", + "ocelot_spawn_egg": { + "material": "OCELOT_SPAWN_EGG" + }, + "ocelotspawnegg": "ocelot_spawn_egg", + "ocelotegg": "ocelot_spawn_egg", + "eggocelot": "ocelot_spawn_egg", + "spawneggocelot": "ocelot_spawn_egg", + "ocelotspawn": "ocelot_spawn_egg", + "spawnocelot": "ocelot_spawn_egg", + "categg": "ocelot_spawn_egg", + "eggcat": "ocelot_spawn_egg", + "catspawnegg": "ocelot_spawn_egg", + "spawneggcat": "ocelot_spawn_egg", + "catspawn": "ocelot_spawn_egg", + "spawncat": "ocelot_spawn_egg", + "orange_banner": { + "material": "ORANGE_BANNER" + }, + "orangebanner": "orange_banner", + "ostandingbanner": "orange_banner", + "obanner": "orange_banner", + "orangestandingbanner": "orange_banner", + "orange_bed": { + "material": "ORANGE_BED" + }, + "orangebed": "orange_bed", + "obed": "orange_bed", + "orange_carpet": { + "material": "ORANGE_CARPET" + }, + "orangecarpet": "orange_carpet", + "ocarpet": "orange_carpet", + "ofloor": "orange_carpet", + "orangefloor": "orange_carpet", + "orange_concrete": { + "material": "ORANGE_CONCRETE" + }, + "orangeconcrete": "orange_concrete", + "oconcrete": "orange_concrete", + "orange_concrete_powder": { + "material": "ORANGE_CONCRETE_POWDER" + }, + "orangeconcretepowder": "orange_concrete_powder", + "oconcretepowder": "orange_concrete_powder", + "oconcretesand": "orange_concrete_powder", + "ocpowder": "orange_concrete_powder", + "ocdust": "orange_concrete_powder", + "ocp": "orange_concrete_powder", + "orangeconcretesand": "orange_concrete_powder", + "orangecpowder": "orange_concrete_powder", + "orangecdust": "orange_concrete_powder", + "orangecp": "orange_concrete_powder", + "orange_dye": { + "material": "ORANGE_DYE" + }, + "orangedye": "orange_dye", + "orange_glazed_terracotta": { + "material": "ORANGE_GLAZED_TERRACOTTA" + }, + "orangeglazedterracotta": "orange_glazed_terracotta", + "oglazedtcota": "orange_glazed_terracotta", + "oglazedterra": "orange_glazed_terracotta", + "oglazedterracotta": "orange_glazed_terracotta", + "oglazedterracota": "orange_glazed_terracotta", + "orangeglazedtcota": "orange_glazed_terracotta", + "orangeglazedterra": "orange_glazed_terracotta", + "orangeglazedterracota": "orange_glazed_terracotta", + "orange_shulker_box": { + "material": "ORANGE_SHULKER_BOX" + }, + "orangeshulkerbox": "orange_shulker_box", + "oshulkerbox": "orange_shulker_box", + "ochest": "orange_shulker_box", + "orangechest": "orange_shulker_box", + "orange_stained_glass": { + "material": "ORANGE_STAINED_GLASS" + }, + "orangestainedglass": "orange_stained_glass", + "oglass": "orange_stained_glass", + "osglass": "orange_stained_glass", + "ostainedglass": "orange_stained_glass", + "orangeglass": "orange_stained_glass", + "orangesglass": "orange_stained_glass", + "orange_stained_glass_pane": { + "material": "ORANGE_STAINED_GLASS_PANE" + }, + "orangestainedglasspane": "orange_stained_glass_pane", + "oglasspane": "orange_stained_glass_pane", + "osglasspane": "orange_stained_glass_pane", + "ostainedglasspane": "orange_stained_glass_pane", + "ogpane": "orange_stained_glass_pane", + "orangeglasspane": "orange_stained_glass_pane", + "orangesglasspane": "orange_stained_glass_pane", + "orangegpane": "orange_stained_glass_pane", + "orange_terracotta": { + "material": "ORANGE_TERRACOTTA" + }, + "orangeterracotta": "orange_terracotta", + "oclay": "orange_terracotta", + "osclay": "orange_terracotta", + "ostainedclay": "orange_terracotta", + "oterra": "orange_terracotta", + "otcota": "orange_terracotta", + "oterracota": "orange_terracotta", + "oterracotta": "orange_terracotta", + "orangeclay": "orange_terracotta", + "orangesclay": "orange_terracotta", + "orangestainedclay": "orange_terracotta", + "orangeterra": "orange_terracotta", + "orangetcota": "orange_terracotta", + "orangeterracota": "orange_terracotta", + "orange_tulip": { + "material": "ORANGE_TULIP" + }, + "orangetulip": "orange_tulip", + "tuliporange": "orange_tulip", + "otulip": "orange_tulip", + "tulipo": "orange_tulip", + "orange_wall_banner": { + "material": "ORANGE_WALL_BANNER", + "unspawnable": true + }, + "orangewallbanner": "orange_wall_banner", + "orange_wool": { + "material": "ORANGE_WOOL" + }, + "orangewool": "orange_wool", + "owool": "orange_wool", + "ocloth": "orange_wool", + "ocotton": "orange_wool", + "orangecloth": "orange_wool", + "orangecotton": "orange_wool", + "oxeye_daisy": { + "material": "OXEYE_DAISY" + }, + "oxeyedaisy": "oxeye_daisy", + "oxeye": "oxeye_daisy", + "daisy": "oxeye_daisy", + "daisyoxeye": "oxeye_daisy", + "moondaisy": "oxeye_daisy", + "daisymoon": "oxeye_daisy", + "lightgrayoxeye": "oxeye_daisy", + "lgrayoxeye": "oxeye_daisy", + "lightgreyoxeye": "oxeye_daisy", + "lgreyoxeye": "oxeye_daisy", + "packed_ice": { + "material": "PACKED_ICE" + }, + "packedice": "packed_ice", + "painting": { + "material": "PAINTING" + }, + "paper": { + "material": "PAPER" + }, + "parrot_spawn_egg": { + "material": "PARROT_SPAWN_EGG" + }, + "parrotspawnegg": "parrot_spawn_egg", + "parrotegg": "parrot_spawn_egg", + "eggparrot": "parrot_spawn_egg", + "spawneggparrot": "parrot_spawn_egg", + "parrotspawn": "parrot_spawn_egg", + "spawnparrot": "parrot_spawn_egg", + "peony": { + "material": "PEONY" + }, + "petrified_oak_slab": { + "material": "PETRIFIED_OAK_SLAB" + }, + "petrifiedoakslab": "petrified_oak_slab", + "phantom_membrane": { + "material": "PHANTOM_MEMBRANE" + }, + "phantommembrane": "phantom_membrane", + "phantom_spawn_egg": { + "material": "PHANTOM_SPAWN_EGG" + }, + "phantomspawnegg": "phantom_spawn_egg", + "phantomegg": "phantom_spawn_egg", + "eggphantom": "phantom_spawn_egg", + "spawneggphantom": "phantom_spawn_egg", + "phantomspawn": "phantom_spawn_egg", + "spawnphantom": "phantom_spawn_egg", + "pig_spawn_egg": { + "material": "PIG_SPAWN_EGG" + }, + "pigspawnegg": "pig_spawn_egg", + "pigegg": "pig_spawn_egg", + "eggpig": "pig_spawn_egg", + "spawneggpig": "pig_spawn_egg", + "pigspawn": "pig_spawn_egg", + "spawnpig": "pig_spawn_egg", + "spawnegg": "pig_spawn_egg", + "spawn": "pig_spawn_egg", + "pink_banner": { + "material": "PINK_BANNER" + }, + "pinkbanner": "pink_banner", + "pistandingbanner": "pink_banner", + "pibanner": "pink_banner", + "pinkstandingbanner": "pink_banner", + "pink_bed": { + "material": "PINK_BED" + }, + "pinkbed": "pink_bed", + "pibed": "pink_bed", + "pink_carpet": { + "material": "PINK_CARPET" + }, + "pinkcarpet": "pink_carpet", + "picarpet": "pink_carpet", + "pifloor": "pink_carpet", + "pinkfloor": "pink_carpet", + "pink_concrete": { + "material": "PINK_CONCRETE" + }, + "pinkconcrete": "pink_concrete", + "piconcrete": "pink_concrete", + "pink_concrete_powder": { + "material": "PINK_CONCRETE_POWDER" + }, + "pinkconcretepowder": "pink_concrete_powder", + "piconcretepowder": "pink_concrete_powder", + "piconcretesand": "pink_concrete_powder", + "picpowder": "pink_concrete_powder", + "picdust": "pink_concrete_powder", + "picp": "pink_concrete_powder", + "pinkconcretesand": "pink_concrete_powder", + "pinkcpowder": "pink_concrete_powder", + "pinkcdust": "pink_concrete_powder", + "pinkcp": "pink_concrete_powder", + "pink_dye": { + "material": "PINK_DYE" + }, + "pinkdye": "pink_dye", + "pink_glazed_terracotta": { + "material": "PINK_GLAZED_TERRACOTTA" + }, + "pinkglazedterracotta": "pink_glazed_terracotta", + "piglazedtcota": "pink_glazed_terracotta", + "piglazedterra": "pink_glazed_terracotta", + "piglazedterracotta": "pink_glazed_terracotta", + "piglazedterracota": "pink_glazed_terracotta", + "pinkglazedtcota": "pink_glazed_terracotta", + "pinkglazedterra": "pink_glazed_terracotta", + "pinkglazedterracota": "pink_glazed_terracotta", + "pink_shulker_box": { + "material": "PINK_SHULKER_BOX" + }, + "pinkshulkerbox": "pink_shulker_box", + "pishulkerbox": "pink_shulker_box", + "pichest": "pink_shulker_box", + "pinkchest": "pink_shulker_box", + "pink_stained_glass": { + "material": "PINK_STAINED_GLASS" + }, + "pinkstainedglass": "pink_stained_glass", + "piglass": "pink_stained_glass", + "pisglass": "pink_stained_glass", + "pistainedglass": "pink_stained_glass", + "pinkglass": "pink_stained_glass", + "pinksglass": "pink_stained_glass", + "pink_stained_glass_pane": { + "material": "PINK_STAINED_GLASS_PANE" + }, + "pinkstainedglasspane": "pink_stained_glass_pane", + "piglasspane": "pink_stained_glass_pane", + "pisglasspane": "pink_stained_glass_pane", + "pistainedglasspane": "pink_stained_glass_pane", + "pigpane": "pink_stained_glass_pane", + "pinkglasspane": "pink_stained_glass_pane", + "pinksglasspane": "pink_stained_glass_pane", + "pinkgpane": "pink_stained_glass_pane", + "pink_terracotta": { + "material": "PINK_TERRACOTTA" + }, + "pinkterracotta": "pink_terracotta", + "piclay": "pink_terracotta", + "pisclay": "pink_terracotta", + "pistainedclay": "pink_terracotta", + "piterra": "pink_terracotta", + "pitcota": "pink_terracotta", + "piterracota": "pink_terracotta", + "piterracotta": "pink_terracotta", + "pinkclay": "pink_terracotta", + "pinksclay": "pink_terracotta", + "pinkstainedclay": "pink_terracotta", + "pinkterra": "pink_terracotta", + "pinktcota": "pink_terracotta", + "pinkterracota": "pink_terracotta", + "pink_tulip": { + "material": "PINK_TULIP" + }, + "pinktulip": "pink_tulip", + "tulippink": "pink_tulip", + "ptulip": "pink_tulip", + "tulipp": "pink_tulip", + "pink_wall_banner": { + "material": "PINK_WALL_BANNER", + "unspawnable": true + }, + "pinkwallbanner": "pink_wall_banner", + "pink_wool": { + "material": "PINK_WOOL" + }, + "pinkwool": "pink_wool", + "piwool": "pink_wool", + "picloth": "pink_wool", + "picotton": "pink_wool", + "pinkcloth": "pink_wool", + "pinkcotton": "pink_wool", + "piston": { + "material": "PISTON" + }, + "piston_head": { + "material": "PISTON_HEAD", + "unspawnable": true + }, + "pistonhead": "piston_head", + "player_head": { + "material": "PLAYER_HEAD" + }, + "playerhead": "player_head", + "head": "player_head", + "skull": "player_head", + "steve": "player_head", + "mask": "player_head", + "headmask": "player_head", + "playerskull": "player_head", + "headplayer": "player_head", + "steveplayer": "player_head", + "playermask": "player_head", + "playerheadmask": "player_head", + "phead": "player_head", + "pskull": "player_head", + "headp": "player_head", + "stevep": "player_head", + "pmask": "player_head", + "pheadmask": "player_head", + "stevehead": "player_head", + "steveskull": "player_head", + "headsteve": "player_head", + "stevesteve": "player_head", + "stevemask": "player_head", + "steveheadmask": "player_head", + "humanhead": "player_head", + "humanskull": "player_head", + "headhuman": "player_head", + "stevehuman": "player_head", + "humanmask": "player_head", + "humanheadmask": "player_head", + "player_wall_head": { + "material": "PLAYER_WALL_HEAD", + "unspawnable": true + }, + "playerwallhead": "player_wall_head", + "podzol": { + "material": "PODZOL" + }, + "poisonous_potato": { + "material": "POISONOUS_POTATO" + }, + "poisonouspotato": "poisonous_potato", + "polar_bear_spawn_egg": { + "material": "POLAR_BEAR_SPAWN_EGG" + }, + "polarbearspawnegg": "polar_bear_spawn_egg", + "polarbearegg": "polar_bear_spawn_egg", + "eggpolarbear": "polar_bear_spawn_egg", + "spawneggpolarbear": "polar_bear_spawn_egg", + "polarbearspawn": "polar_bear_spawn_egg", + "spawnpolarbear": "polar_bear_spawn_egg", + "polaregg": "polar_bear_spawn_egg", + "eggpolar": "polar_bear_spawn_egg", + "polarspawnegg": "polar_bear_spawn_egg", + "spawneggpolar": "polar_bear_spawn_egg", + "polarspawn": "polar_bear_spawn_egg", + "spawnpolar": "polar_bear_spawn_egg", + "bearegg": "polar_bear_spawn_egg", + "eggbear": "polar_bear_spawn_egg", + "bearspawnegg": "polar_bear_spawn_egg", + "spawneggbear": "polar_bear_spawn_egg", + "bearspawn": "polar_bear_spawn_egg", + "spawnbear": "polar_bear_spawn_egg", + "polished_andesite": { + "material": "POLISHED_ANDESITE" + }, + "polishedandesite": "polished_andesite", + "pandesite": "polished_andesite", + "pastone": "polished_andesite", + "polishedastone": "polished_andesite", + "polished_diorite": { + "material": "POLISHED_DIORITE" + }, + "polisheddiorite": "polished_diorite", + "pdiorite": "polished_diorite", + "pdstone": "polished_diorite", + "polisheddstone": "polished_diorite", + "polished_granite": { + "material": "POLISHED_GRANITE" + }, + "polishedgranite": "polished_granite", + "pgranite": "polished_granite", + "pgstone": "polished_granite", + "polishedgstone": "polished_granite", + "popped_chorus_fruit": { + "material": "POPPED_CHORUS_FRUIT" + }, + "poppedchorusfruit": "popped_chorus_fruit", + "pchorus": "popped_chorus_fruit", + "poppedchorus": "popped_chorus_fruit", + "popchorus": "popped_chorus_fruit", + "poppy": { + "material": "POPPY" + }, + "rose": "poppy", + "redrose": "poppy", + "rrose": "poppy", + "redflower": "poppy", + "rflower": "poppy", + "redpoppy": "poppy", + "porkchop": { + "material": "PORKCHOP" + }, + "rawpork": "porkchop", + "rawporkchop": "porkchop", + "rapork": "porkchop", + "raporkchop": "porkchop", + "uncookedpork": "porkchop", + "uncookedporkchop": "porkchop", + "plainpork": "porkchop", + "plainporkchop": "porkchop", + "pork": "porkchop", + "potato": { + "material": "POTATO" + }, + "potatoes": { + "material": "POTATOES", + "unspawnable": true + }, + "potion": { + "material": "POTION" + }, + "potted_acacia_sapling": { + "material": "POTTED_ACACIA_SAPLING", + "unspawnable": true + }, + "pottedacaciasapling": "potted_acacia_sapling", + "potted_allium": { + "material": "POTTED_ALLIUM", + "unspawnable": true + }, + "pottedallium": "potted_allium", + "potted_azure_bluet": { + "material": "POTTED_AZURE_BLUET", + "unspawnable": true + }, + "pottedazurebluet": "potted_azure_bluet", + "potted_birch_sapling": { + "material": "POTTED_BIRCH_SAPLING", + "unspawnable": true + }, + "pottedbirchsapling": "potted_birch_sapling", + "potted_blue_orchid": { + "material": "POTTED_BLUE_ORCHID", + "unspawnable": true + }, + "pottedblueorchid": "potted_blue_orchid", + "potted_brown_mushroom": { + "material": "POTTED_BROWN_MUSHROOM", + "unspawnable": true + }, + "pottedbrownmushroom": "potted_brown_mushroom", + "potted_cactus": { + "material": "POTTED_CACTUS", + "unspawnable": true + }, + "pottedcactus": "potted_cactus", + "potted_dandelion": { + "material": "POTTED_DANDELION", + "unspawnable": true + }, + "potteddandelion": "potted_dandelion", + "potted_dark_oak_sapling": { + "material": "POTTED_DARK_OAK_SAPLING", + "unspawnable": true + }, + "potteddarkoaksapling": "potted_dark_oak_sapling", + "potted_dead_bush": { + "material": "POTTED_DEAD_BUSH", + "unspawnable": true + }, + "potteddeadbush": "potted_dead_bush", + "potted_fern": { + "material": "POTTED_FERN", + "unspawnable": true + }, + "pottedfern": "potted_fern", + "potted_jungle_sapling": { + "material": "POTTED_JUNGLE_SAPLING", + "unspawnable": true + }, + "pottedjunglesapling": "potted_jungle_sapling", + "potted_oak_sapling": { + "material": "POTTED_OAK_SAPLING", + "unspawnable": true + }, + "pottedoaksapling": "potted_oak_sapling", + "potted_orange_tulip": { + "material": "POTTED_ORANGE_TULIP", + "unspawnable": true + }, + "pottedorangetulip": "potted_orange_tulip", + "potted_oxeye_daisy": { + "material": "POTTED_OXEYE_DAISY", + "unspawnable": true + }, + "pottedoxeyedaisy": "potted_oxeye_daisy", + "potted_pink_tulip": { + "material": "POTTED_PINK_TULIP", + "unspawnable": true + }, + "pottedpinktulip": "potted_pink_tulip", + "potted_poppy": { + "material": "POTTED_POPPY", + "unspawnable": true + }, + "pottedpoppy": "potted_poppy", + "potted_red_mushroom": { + "material": "POTTED_RED_MUSHROOM", + "unspawnable": true + }, + "pottedredmushroom": "potted_red_mushroom", + "potted_red_tulip": { + "material": "POTTED_RED_TULIP", + "unspawnable": true + }, + "pottedredtulip": "potted_red_tulip", + "potted_spruce_sapling": { + "material": "POTTED_SPRUCE_SAPLING", + "unspawnable": true + }, + "pottedsprucesapling": "potted_spruce_sapling", + "potted_white_tulip": { + "material": "POTTED_WHITE_TULIP", + "unspawnable": true + }, + "pottedwhitetulip": "potted_white_tulip", + "powered_rail": { + "material": "POWERED_RAIL" + }, + "poweredrail": "powered_rail", + "poweredrails": "powered_rail", + "poweredtrack": "powered_rail", + "boosterrails": "powered_rail", + "boosterrail": "powered_rail", + "boostertrack": "powered_rail", + "powerrails": "powered_rail", + "powerrail": "powered_rail", + "powertrack": "powered_rail", + "boostrails": "powered_rail", + "boostrail": "powered_rail", + "boosttrack": "powered_rail", + "prails": "powered_rail", + "prail": "powered_rail", + "ptrack": "powered_rail", + "brails": "powered_rail", + "brail": "powered_rail", + "btrack": "powered_rail", + "prismarine": { + "material": "PRISMARINE" + }, + "prismarine_bricks": { + "material": "PRISMARINE_BRICKS" + }, + "prismarinebricks": "prismarine_bricks", + "prismarinebrick": "prismarine_bricks", + "prismarinebr": "prismarine_bricks", + "prisbricks": "prismarine_bricks", + "prisbrick": "prismarine_bricks", + "prisbr": "prismarine_bricks", + "seabricks": "prismarine_bricks", + "seabrick": "prismarine_bricks", + "seabr": "prismarine_bricks", + "prismarine_brick_slab": { + "material": "PRISMARINE_BRICK_SLAB" + }, + "prismarinebrickslab": "prismarine_brick_slab", + "prismarinebricksslab": "prismarine_brick_slab", + "prismarinebrickssl": "prismarine_brick_slab", + "prismarinebricksl": "prismarine_brick_slab", + "prismarinebrslab": "prismarine_brick_slab", + "prismarinebrsl": "prismarine_brick_slab", + "prisbricksslab": "prismarine_brick_slab", + "prisbrickssl": "prismarine_brick_slab", + "prisbrickslab": "prismarine_brick_slab", + "prisbricksl": "prismarine_brick_slab", + "prisbrslab": "prismarine_brick_slab", + "prisbrsl": "prismarine_brick_slab", + "seabricksslab": "prismarine_brick_slab", + "seabrickssl": "prismarine_brick_slab", + "seabrickslab": "prismarine_brick_slab", + "seabricksl": "prismarine_brick_slab", + "seabrslab": "prismarine_brick_slab", + "seabrsl": "prismarine_brick_slab", + "prismarine_brick_stairs": { + "material": "PRISMARINE_BRICK_STAIRS" + }, + "prismarinebrickstairs": "prismarine_brick_stairs", + "prismarinebricksstairs": "prismarine_brick_stairs", + "prismarinebricksstair": "prismarine_brick_stairs", + "prismarinebricksst": "prismarine_brick_stairs", + "prismarinebrickstair": "prismarine_brick_stairs", + "prismarinebrickst": "prismarine_brick_stairs", + "prismarinebrstairs": "prismarine_brick_stairs", + "prismarinebrstair": "prismarine_brick_stairs", + "prismarinebrst": "prismarine_brick_stairs", + "prisbricksstairs": "prismarine_brick_stairs", + "prisbricksstair": "prismarine_brick_stairs", + "prisbricksst": "prismarine_brick_stairs", + "prisbrickstairs": "prismarine_brick_stairs", + "prisbrickstair": "prismarine_brick_stairs", + "prisbrickst": "prismarine_brick_stairs", + "prisbrstairs": "prismarine_brick_stairs", + "prisbrstair": "prismarine_brick_stairs", + "prisbrst": "prismarine_brick_stairs", + "seabricksstairs": "prismarine_brick_stairs", + "seabricksstair": "prismarine_brick_stairs", + "seabricksst": "prismarine_brick_stairs", + "seabrickstairs": "prismarine_brick_stairs", + "seabrickstair": "prismarine_brick_stairs", + "seabrickst": "prismarine_brick_stairs", + "seabrstairs": "prismarine_brick_stairs", + "seabrstair": "prismarine_brick_stairs", + "seabrst": "prismarine_brick_stairs", + "prismarine_crystals": { + "material": "PRISMARINE_CRYSTALS" + }, + "prismarinecrystals": "prismarine_crystals", + "prismarinecrystal": "prismarine_crystals", + "priscrystals": "prismarine_crystals", + "priscrystal": "prismarine_crystals", + "seacrystals": "prismarine_crystals", + "seacrystal": "prismarine_crystals", + "prismarine_shard": { + "material": "PRISMARINE_SHARD" + }, + "prismarineshard": "prismarine_shard", + "prismarinefragment": "prismarine_shard", + "prisshard": "prismarine_shard", + "prisfragment": "prismarine_shard", + "seashard": "prismarine_shard", + "seafragment": "prismarine_shard", + "prismarine_slab": { + "material": "PRISMARINE_SLAB" + }, + "prismarineslab": "prismarine_slab", + "prismarinesl": "prismarine_slab", + "prisslab": "prismarine_slab", + "prissl": "prismarine_slab", + "seaslab": "prismarine_slab", + "seasl": "prismarine_slab", + "prismarine_stairs": { + "material": "PRISMARINE_STAIRS" + }, + "prismarinestairs": "prismarine_stairs", + "prismarinestair": "prismarine_stairs", + "prismarinest": "prismarine_stairs", + "prisstairs": "prismarine_stairs", + "prisstair": "prismarine_stairs", + "prisst": "prismarine_stairs", + "seastairs": "prismarine_stairs", + "seastair": "prismarine_stairs", + "seast": "prismarine_stairs", + "pufferfish": { + "material": "PUFFERFISH" + }, + "rawpufferfish": "pufferfish", + "rawpufffish": "pufferfish", + "rawfishpuff": "pufferfish", + "rawpfish": "pufferfish", + "rawfishp": "pufferfish", + "rapufferfish": "pufferfish", + "rapufffish": "pufferfish", + "rafishpuff": "pufferfish", + "rapfish": "pufferfish", + "rafishp": "pufferfish", + "uncookedpufferfish": "pufferfish", + "uncookedpufffish": "pufferfish", + "uncookedfishpuff": "pufferfish", + "uncookedpfish": "pufferfish", + "uncookedfishp": "pufferfish", + "plainpufferfish": "pufferfish", + "plainpufffish": "pufferfish", + "plainfishpuff": "pufferfish", + "plainpfish": "pufferfish", + "plainfishp": "pufferfish", + "pufffish": "pufferfish", + "fishpuff": "pufferfish", + "pfish": "pufferfish", + "fishp": "pufferfish", + "pufferfish_bucket": { + "material": "PUFFERFISH_BUCKET" + }, + "pufferfishbucket": "pufferfish_bucket", + "pufferfishpail": "pufferfish_bucket", + "pufferbucket": "pufferfish_bucket", + "pufferpail": "pufferfish_bucket", + "pfishbucket": "pufferfish_bucket", + "pfishpail": "pufferfish_bucket", + "pufferfish_spawn_egg": { + "material": "PUFFERFISH_SPAWN_EGG" + }, + "pufferfishspawnegg": "pufferfish_spawn_egg", + "pufferfishegg": "pufferfish_spawn_egg", + "eggpufferfish": "pufferfish_spawn_egg", + "spawneggpufferfish": "pufferfish_spawn_egg", + "pufferfishspawn": "pufferfish_spawn_egg", + "spawnpufferfish": "pufferfish_spawn_egg", + "pufferegg": "pufferfish_spawn_egg", + "eggpuffer": "pufferfish_spawn_egg", + "pufferspawnegg": "pufferfish_spawn_egg", + "spawneggpuffer": "pufferfish_spawn_egg", + "pufferspawn": "pufferfish_spawn_egg", + "spawnpuffer": "pufferfish_spawn_egg", + "pfishegg": "pufferfish_spawn_egg", + "eggpfish": "pufferfish_spawn_egg", + "pfishspawnegg": "pufferfish_spawn_egg", + "spawneggpfish": "pufferfish_spawn_egg", + "pfishspawn": "pufferfish_spawn_egg", + "spawnpfish": "pufferfish_spawn_egg", + "pumpkin": { + "material": "PUMPKIN" + }, + "pumpkin_pie": { + "material": "PUMPKIN_PIE" + }, + "pumpkinpie": "pumpkin_pie", + "pumpkin_seeds": { + "material": "PUMPKIN_SEEDS" + }, + "pumpkinseeds": "pumpkin_seeds", + "pumpkin_stem": { + "material": "PUMPKIN_STEM", + "unspawnable": true + }, + "pumpkinstem": "pumpkin_stem", + "purple_banner": { + "material": "PURPLE_BANNER" + }, + "purplebanner": "purple_banner", + "pustandingbanner": "purple_banner", + "pubanner": "purple_banner", + "purplestandingbanner": "purple_banner", + "purple_bed": { + "material": "PURPLE_BED" + }, + "purplebed": "purple_bed", + "pubed": "purple_bed", + "purple_carpet": { + "material": "PURPLE_CARPET" + }, + "purplecarpet": "purple_carpet", + "pucarpet": "purple_carpet", + "pufloor": "purple_carpet", + "purplefloor": "purple_carpet", + "purple_concrete": { + "material": "PURPLE_CONCRETE" + }, + "purpleconcrete": "purple_concrete", + "puconcrete": "purple_concrete", + "purple_concrete_powder": { + "material": "PURPLE_CONCRETE_POWDER" + }, + "purpleconcretepowder": "purple_concrete_powder", + "puconcretepowder": "purple_concrete_powder", + "puconcretesand": "purple_concrete_powder", + "pucpowder": "purple_concrete_powder", + "pucdust": "purple_concrete_powder", + "pucp": "purple_concrete_powder", + "purpleconcretesand": "purple_concrete_powder", + "purplecpowder": "purple_concrete_powder", + "purplecdust": "purple_concrete_powder", + "purplecp": "purple_concrete_powder", + "purple_dye": { + "material": "PURPLE_DYE" + }, + "purpledye": "purple_dye", + "purple_glazed_terracotta": { + "material": "PURPLE_GLAZED_TERRACOTTA" + }, + "purpleglazedterracotta": "purple_glazed_terracotta", + "puglazedtcota": "purple_glazed_terracotta", + "puglazedterra": "purple_glazed_terracotta", + "puglazedterracotta": "purple_glazed_terracotta", + "puglazedterracota": "purple_glazed_terracotta", + "purpleglazedtcota": "purple_glazed_terracotta", + "purpleglazedterra": "purple_glazed_terracotta", + "purpleglazedterracota": "purple_glazed_terracotta", + "purple_shulker_box": { + "material": "PURPLE_SHULKER_BOX" + }, + "purpleshulkerbox": "purple_shulker_box", + "pushulkerbox": "purple_shulker_box", + "puchest": "purple_shulker_box", + "purplechest": "purple_shulker_box", + "purple_stained_glass": { + "material": "PURPLE_STAINED_GLASS" + }, + "purplestainedglass": "purple_stained_glass", + "puglass": "purple_stained_glass", + "pusglass": "purple_stained_glass", + "pustainedglass": "purple_stained_glass", + "purpleglass": "purple_stained_glass", + "purplesglass": "purple_stained_glass", + "purple_stained_glass_pane": { + "material": "PURPLE_STAINED_GLASS_PANE" + }, + "purplestainedglasspane": "purple_stained_glass_pane", + "puglasspane": "purple_stained_glass_pane", + "pusglasspane": "purple_stained_glass_pane", + "pustainedglasspane": "purple_stained_glass_pane", + "pugpane": "purple_stained_glass_pane", + "purpleglasspane": "purple_stained_glass_pane", + "purplesglasspane": "purple_stained_glass_pane", + "purplegpane": "purple_stained_glass_pane", + "purple_terracotta": { + "material": "PURPLE_TERRACOTTA" + }, + "purpleterracotta": "purple_terracotta", + "puclay": "purple_terracotta", + "pusclay": "purple_terracotta", + "pustainedclay": "purple_terracotta", + "puterra": "purple_terracotta", + "putcota": "purple_terracotta", + "puterracota": "purple_terracotta", + "puterracotta": "purple_terracotta", + "purpleclay": "purple_terracotta", + "purplesclay": "purple_terracotta", + "purplestainedclay": "purple_terracotta", + "purpleterra": "purple_terracotta", + "purpletcota": "purple_terracotta", + "purpleterracota": "purple_terracotta", + "purple_wall_banner": { + "material": "PURPLE_WALL_BANNER", + "unspawnable": true + }, + "purplewallbanner": "purple_wall_banner", + "purple_wool": { + "material": "PURPLE_WOOL" + }, + "purplewool": "purple_wool", + "puwool": "purple_wool", + "pucloth": "purple_wool", + "pucotton": "purple_wool", + "purplecloth": "purple_wool", + "purplecotton": "purple_wool", + "purpur_block": { + "material": "PURPUR_BLOCK" + }, + "purpurblock": "purpur_block", + "purpur_pillar": { + "material": "PURPUR_PILLAR" + }, + "purpurpillar": "purpur_pillar", + "purpur_slab": { + "material": "PURPUR_SLAB" + }, + "purpurslab": "purpur_slab", + "purpur_stairs": { + "material": "PURPUR_STAIRS" + }, + "purpurstairs": "purpur_stairs", + "quartz": { + "material": "QUARTZ" + }, + "quartz_block": { + "material": "QUARTZ_BLOCK" + }, + "quartzblock": "quartz_block", + "netherquartzblock": "quartz_block", + "nqblock": "quartz_block", + "qblock": "quartz_block", + "quartz_pillar": { + "material": "QUARTZ_PILLAR" + }, + "quartzpillar": "quartz_pillar", + "quartz_slab": { + "material": "QUARTZ_SLAB" + }, + "quartzslab": "quartz_slab", + "quartz_stairs": { + "material": "QUARTZ_STAIRS" + }, + "quartzstairs": "quartz_stairs", + "rabbit": { + "material": "RABBIT" + }, + "rawrabbit": "rabbit", + "rawhare": "rabbit", + "rawhasenpfeffer": "rabbit", + "rarabbit": "rabbit", + "rahare": "rabbit", + "rahasenpfeffer": "rabbit", + "uncookedrabbit": "rabbit", + "uncookedhare": "rabbit", + "uncookedhasenpfeffer": "rabbit", + "plainrabbit": "rabbit", + "plainhare": "rabbit", + "plainhasenpfeffer": "rabbit", + "hare": "rabbit", + "hasenpfeffer": "rabbit", + "rabbit_foot": { + "material": "RABBIT_FOOT" + }, + "rabbitfoot": "rabbit_foot", + "rabbit_hide": { + "material": "RABBIT_HIDE" + }, + "rabbithide": "rabbit_hide", + "rabbit_spawn_egg": { + "material": "RABBIT_SPAWN_EGG" + }, + "rabbitspawnegg": "rabbit_spawn_egg", + "rabbitegg": "rabbit_spawn_egg", + "eggrabbit": "rabbit_spawn_egg", + "spawneggrabbit": "rabbit_spawn_egg", + "rabbitspawn": "rabbit_spawn_egg", + "spawnrabbit": "rabbit_spawn_egg", + "rabbit_stew": { + "material": "RABBIT_STEW" + }, + "rabbitstew": "rabbit_stew", + "rail": { + "material": "RAIL" + }, + "rails": "rail", + "track": "rail", + "minecartrails": "rail", + "minecartrail": "rail", + "minecarttrack": "rail", + "mcartrails": "rail", + "mcartrail": "rail", + "mcarttrack": "rail", + "mcrails": "rail", + "mcrail": "rail", + "mctrack": "rail", + "redstone": { + "material": "REDSTONE" + }, + "redstone_block": { + "material": "REDSTONE_BLOCK" + }, + "redstoneblock": "redstone_block", + "blockredstone": "redstone_block", + "redsblock": "redstone_block", + "blockreds": "redstone_block", + "redblock": "redstone_block", + "blockred": "redstone_block", + "rstoneblock": "redstone_block", + "blockrstone": "redstone_block", + "rsblock": "redstone_block", + "blockrs": "redstone_block", + "rblock": "redstone_block", + "blockr": "redstone_block", + "redstone_lamp": { + "material": "REDSTONE_LAMP" + }, + "redstonelamp": "redstone_lamp", + "redstone_ore": { + "material": "REDSTONE_ORE" + }, + "redstoneore": "redstone_ore", + "redstoneo": "redstone_ore", + "oreredstone": "redstone_ore", + "oredstone": "redstone_ore", + "redsore": "redstone_ore", + "redso": "redstone_ore", + "orereds": "redstone_ore", + "oreds": "redstone_ore", + "redore": "redstone_ore", + "redo": "redstone_ore", + "orered": "redstone_ore", + "rstoneore": "redstone_ore", + "rstoneo": "redstone_ore", + "orerstone": "redstone_ore", + "orstone": "redstone_ore", + "rsore": "redstone_ore", + "rso": "redstone_ore", + "orers": "redstone_ore", + "ors": "redstone_ore", + "rore": "redstone_ore", + "ro": "redstone_ore", + "orer": "redstone_ore", + "or": "redstone_ore", + "redstone_torch": { + "material": "REDSTONE_TORCH" + }, + "redstonetorch": "redstone_torch", + "rstonetorch": "redstone_torch", + "redstorch": "redstone_torch", + "redtorch": "redstone_torch", + "rstorch": "redstone_torch", + "redstone_wall_torch": { + "material": "REDSTONE_WALL_TORCH", + "unspawnable": true + }, + "redstonewalltorch": "redstone_wall_torch", + "redstone_wire": { + "material": "REDSTONE_WIRE", + "unspawnable": true + }, + "redstonewire": "redstone_wire", + "red_banner": { + "material": "RED_BANNER" + }, + "redbanner": "red_banner", + "rstandingbanner": "red_banner", + "rbanner": "red_banner", + "redstandingbanner": "red_banner", + "red_bed": { + "material": "RED_BED" + }, + "redbed": "red_bed", + "rbed": "red_bed", + "red_carpet": { + "material": "RED_CARPET" + }, + "redcarpet": "red_carpet", + "rcarpet": "red_carpet", + "rfloor": "red_carpet", + "redfloor": "red_carpet", + "red_concrete": { + "material": "RED_CONCRETE" + }, + "redconcrete": "red_concrete", + "rconcrete": "red_concrete", + "red_concrete_powder": { + "material": "RED_CONCRETE_POWDER" + }, + "redconcretepowder": "red_concrete_powder", + "rconcretepowder": "red_concrete_powder", + "rconcretesand": "red_concrete_powder", + "rcpowder": "red_concrete_powder", + "rcdust": "red_concrete_powder", + "rcp": "red_concrete_powder", + "redconcretesand": "red_concrete_powder", + "redcpowder": "red_concrete_powder", + "redcdust": "red_concrete_powder", + "redcp": "red_concrete_powder", + "red_glazed_terracotta": { + "material": "RED_GLAZED_TERRACOTTA" + }, + "redglazedterracotta": "red_glazed_terracotta", + "rglazedtcota": "red_glazed_terracotta", + "rglazedterra": "red_glazed_terracotta", + "rglazedterracotta": "red_glazed_terracotta", + "rglazedterracota": "red_glazed_terracotta", + "redglazedtcota": "red_glazed_terracotta", + "redglazedterra": "red_glazed_terracotta", + "redglazedterracota": "red_glazed_terracotta", + "red_mushroom": { + "material": "RED_MUSHROOM" + }, + "redmushroom": "red_mushroom", + "redmush": "red_mushroom", + "redshroom": "red_mushroom", + "rmushroom": "red_mushroom", + "rmush": "red_mushroom", + "rshroom": "red_mushroom", + "red_mushroom_block": { + "material": "RED_MUSHROOM_BLOCK" + }, + "redmushroomblock": "red_mushroom_block", + "giantredmushroom": "red_mushroom_block", + "giantredmush": "red_mushroom_block", + "gredmushroom": "red_mushroom_block", + "gredmush": "red_mushroom_block", + "hugeredmushroom": "red_mushroom_block", + "hugeredmush": "red_mushroom_block", + "hredmushroom": "red_mushroom_block", + "hredmush": "red_mushroom_block", + "bigredmushroom": "red_mushroom_block", + "bigredmush": "red_mushroom_block", + "bredmushroom": "red_mushroom_block", + "bredmush": "red_mushroom_block", + "giantrmushroom": "red_mushroom_block", + "giantrmush": "red_mushroom_block", + "grmushroom": "red_mushroom_block", + "grmush": "red_mushroom_block", + "hugermushroom": "red_mushroom_block", + "hugermush": "red_mushroom_block", + "hrmushroom": "red_mushroom_block", + "hrmush": "red_mushroom_block", + "bigrmushroom": "red_mushroom_block", + "bigrmush": "red_mushroom_block", + "brmushroom": "red_mushroom_block", + "brmush": "red_mushroom_block", + "red_nether_bricks": { + "material": "RED_NETHER_BRICKS" + }, + "rednetherbricks": "red_nether_bricks", + "red_sand": { + "material": "RED_SAND" + }, + "redsand": "red_sand", + "rsand": "red_sand", + "red_sandstone": { + "material": "RED_SANDSTONE" + }, + "redsandstone": "red_sandstone", + "rsstone": "red_sandstone", + "rsandstone": "red_sandstone", + "rsandst": "red_sandstone", + "rsastone": "red_sandstone", + "red_sandstone_slab": { + "material": "RED_SANDSTONE_SLAB" + }, + "redsandstoneslab": "red_sandstone_slab", + "redsandstonesl": "red_sandstone_slab", + "rsandstoneslab": "red_sandstone_slab", + "rsandstonesl": "red_sandstone_slab", + "rsandstslab": "red_sandstone_slab", + "rsandstsl": "red_sandstone_slab", + "rsastoneslab": "red_sandstone_slab", + "rsastonesl": "red_sandstone_slab", + "red_sandstone_stairs": { + "material": "RED_SANDSTONE_STAIRS" + }, + "redsandstonestairs": "red_sandstone_stairs", + "redsandstonestair": "red_sandstone_stairs", + "redsandstonest": "red_sandstone_stairs", + "rsandstonestair": "red_sandstone_stairs", + "rsandstonestairs": "red_sandstone_stairs", + "rsandstonest": "red_sandstone_stairs", + "rsandststair": "red_sandstone_stairs", + "rsandststairs": "red_sandstone_stairs", + "rsandstst": "red_sandstone_stairs", + "rsastonestair": "red_sandstone_stairs", + "rsastonestairs": "red_sandstone_stairs", + "rsastonest": "red_sandstone_stairs", + "red_shulker_box": { + "material": "RED_SHULKER_BOX" + }, + "redshulkerbox": "red_shulker_box", + "rshulkerbox": "red_shulker_box", + "rchest": "red_shulker_box", + "redchest": "red_shulker_box", + "red_stained_glass": { + "material": "RED_STAINED_GLASS" + }, + "redstainedglass": "red_stained_glass", + "rglass": "red_stained_glass", + "rsglass": "red_stained_glass", + "rstainedglass": "red_stained_glass", + "redglass": "red_stained_glass", + "redsglass": "red_stained_glass", + "red_stained_glass_pane": { + "material": "RED_STAINED_GLASS_PANE" + }, + "redstainedglasspane": "red_stained_glass_pane", + "rglasspane": "red_stained_glass_pane", + "rsglasspane": "red_stained_glass_pane", + "rstainedglasspane": "red_stained_glass_pane", + "rgpane": "red_stained_glass_pane", + "redglasspane": "red_stained_glass_pane", + "redsglasspane": "red_stained_glass_pane", + "redgpane": "red_stained_glass_pane", + "red_terracotta": { + "material": "RED_TERRACOTTA" + }, + "redterracotta": "red_terracotta", + "rclay": "red_terracotta", + "rsclay": "red_terracotta", + "rstainedclay": "red_terracotta", + "rterra": "red_terracotta", + "rtcota": "red_terracotta", + "rterracota": "red_terracotta", + "rterracotta": "red_terracotta", + "redclay": "red_terracotta", + "redsclay": "red_terracotta", + "redstainedclay": "red_terracotta", + "redterra": "red_terracotta", + "redtcota": "red_terracotta", + "redterracota": "red_terracotta", + "red_tulip": { + "material": "RED_TULIP" + }, + "redtulip": "red_tulip", + "tulipred": "red_tulip", + "rtulip": "red_tulip", + "tulipr": "red_tulip", + "red_wall_banner": { + "material": "RED_WALL_BANNER", + "unspawnable": true + }, + "redwallbanner": "red_wall_banner", + "red_wool": { + "material": "RED_WOOL" + }, + "redwool": "red_wool", + "rwool": "red_wool", + "rcloth": "red_wool", + "rcotton": "red_wool", + "redcloth": "red_wool", + "redcotton": "red_wool", + "repeater": { + "material": "REPEATER" + }, + "repeating_command_block": { + "material": "REPEATING_COMMAND_BLOCK" + }, + "repeatingcommandblock": "repeating_command_block", + "rose_bush": { + "material": "ROSE_BUSH" + }, + "rosebush": "rose_bush", + "rose_red": { + "material": "ROSE_RED" + }, + "rosered": "rose_red", + "rotten_flesh": { + "material": "ROTTEN_FLESH" + }, + "rottenflesh": "rotten_flesh", + "saddle": { + "material": "SADDLE" + }, + "salmon": { + "material": "SALMON" + }, + "rawsalmon": "salmon", + "rawsalmonfish": "salmon", + "rawsfish": "salmon", + "rawfishs": "salmon", + "rasalmon": "salmon", + "rasalmonfish": "salmon", + "rasfish": "salmon", + "rafishs": "salmon", + "uncookedsalmon": "salmon", + "uncookedsalmonfish": "salmon", + "uncookedsfish": "salmon", + "uncookedfishs": "salmon", + "plainsalmon": "salmon", + "plainsalmonfish": "salmon", + "plainsfish": "salmon", + "plainfishs": "salmon", + "salmonfish": "salmon", + "sfish": "salmon", + "fishs": "salmon", + "salmon_bucket": { + "material": "SALMON_BUCKET" + }, + "salmonbucket": "salmon_bucket", + "salmonpail": "salmon_bucket", + "salmon_spawn_egg": { + "material": "SALMON_SPAWN_EGG" + }, + "salmonspawnegg": "salmon_spawn_egg", + "salmonegg": "salmon_spawn_egg", + "eggsalmon": "salmon_spawn_egg", + "spawneggsalmon": "salmon_spawn_egg", + "salmonspawn": "salmon_spawn_egg", + "spawnsalmon": "salmon_spawn_egg", + "sand": { + "material": "SAND" + }, + "sandstone": { + "material": "SANDSTONE" + }, + "sastone": "sandstone", + "sandst": "sandstone", + "sandstone_slab": { + "material": "SANDSTONE_SLAB" + }, + "sandstoneslab": "sandstone_slab", + "sandstonesl": "sandstone_slab", + "sandstslab": "sandstone_slab", + "sandstsl": "sandstone_slab", + "sastoneslab": "sandstone_slab", + "sastonesl": "sandstone_slab", + "sandstone_stairs": { + "material": "SANDSTONE_STAIRS" + }, + "sandstonestairs": "sandstone_stairs", + "sandstonestair": "sandstone_stairs", + "sandstonest": "sandstone_stairs", + "sandststair": "sandstone_stairs", + "sandststairs": "sandstone_stairs", + "sandstst": "sandstone_stairs", + "sastonestair": "sandstone_stairs", + "sastonestairs": "sandstone_stairs", + "sastonest": "sandstone_stairs", + "scute": { + "material": "SCUTE" + }, + "seagrass": { + "material": "SEAGRASS" + }, + "sea_lantern": { + "material": "SEA_LANTERN" + }, + "sealantern": "sea_lantern", + "sea_pickle": { + "material": "SEA_PICKLE" + }, + "seapickle": "sea_pickle", + "shears": { + "material": "SHEARS" + }, + "sheep_spawn_egg": { + "material": "SHEEP_SPAWN_EGG" + }, + "sheepspawnegg": "sheep_spawn_egg", + "sheepegg": "sheep_spawn_egg", + "eggsheep": "sheep_spawn_egg", + "spawneggsheep": "sheep_spawn_egg", + "sheepspawn": "sheep_spawn_egg", + "spawnsheep": "sheep_spawn_egg", + "shield": { + "material": "SHIELD" + }, + "handshield": "shield", + "woodshield": "shield", + "woodenshield": "shield", + "shulker_box": { + "material": "SHULKER_BOX" + }, + "shulkerbox": "white_shulker_box", + "shulker_shell": { + "material": "SHULKER_SHELL" + }, + "shulkershell": "shulker_shell", + "shulker_spawn_egg": { + "material": "SHULKER_SPAWN_EGG" + }, + "shulkerspawnegg": "shulker_spawn_egg", + "shulkeregg": "shulker_spawn_egg", + "eggshulker": "shulker_spawn_egg", + "spawneggshulker": "shulker_spawn_egg", + "shulkerspawn": "shulker_spawn_egg", + "spawnshulker": "shulker_spawn_egg", + "shulkegg": "shulker_spawn_egg", + "eggshulk": "shulker_spawn_egg", + "shulkspawnegg": "shulker_spawn_egg", + "spawneggshulk": "shulker_spawn_egg", + "shulkspawn": "shulker_spawn_egg", + "spawnshulk": "shulker_spawn_egg", + "sign": { + "material": "SIGN" + }, + "silverfish_spawn_egg": { + "material": "SILVERFISH_SPAWN_EGG" + }, + "silverfishspawnegg": "silverfish_spawn_egg", + "silverfishegg": "silverfish_spawn_egg", + "eggsilverfish": "silverfish_spawn_egg", + "spawneggsilverfish": "silverfish_spawn_egg", + "silverfishspawn": "silverfish_spawn_egg", + "spawnsilverfish": "silverfish_spawn_egg", + "skeleton_horse_spawn_egg": { + "material": "SKELETON_HORSE_SPAWN_EGG" + }, + "skeletonhorsespawnegg": "skeleton_horse_spawn_egg", + "skeletonhorseegg": "skeleton_horse_spawn_egg", + "eggskeletonhorse": "skeleton_horse_spawn_egg", + "spawneggskeletonhorse": "skeleton_horse_spawn_egg", + "skeletonhorsespawn": "skeleton_horse_spawn_egg", + "spawnskeletonhorse": "skeleton_horse_spawn_egg", + "shorseegg": "skeleton_horse_spawn_egg", + "eggshorse": "skeleton_horse_spawn_egg", + "shorsespawnegg": "skeleton_horse_spawn_egg", + "spawneggshorse": "skeleton_horse_spawn_egg", + "shorsespawn": "skeleton_horse_spawn_egg", + "spawnshorse": "skeleton_horse_spawn_egg", + "bonehorseegg": "skeleton_horse_spawn_egg", + "eggbonehorse": "skeleton_horse_spawn_egg", + "bonehorsespawnegg": "skeleton_horse_spawn_egg", + "spawneggbonehorse": "skeleton_horse_spawn_egg", + "bonehorsespawn": "skeleton_horse_spawn_egg", + "spawnbonehorse": "skeleton_horse_spawn_egg", + "skeleton_skull": { + "material": "SKELETON_SKULL" + }, + "skeletonskull": "skeleton_skull", + "skeletonhead": "skeleton_skull", + "headskeleton": "skeleton_skull", + "steveskeleton": "skeleton_skull", + "skeletonmask": "skeleton_skull", + "skeletonheadmask": "skeleton_skull", + "skhead": "skeleton_skull", + "skskull": "skeleton_skull", + "headsk": "skeleton_skull", + "stevesk": "skeleton_skull", + "skmask": "skeleton_skull", + "skheadmask": "skeleton_skull", + "skeleton_spawn_egg": { + "material": "SKELETON_SPAWN_EGG" + }, + "skeletonspawnegg": "skeleton_spawn_egg", + "skeletonegg": "skeleton_spawn_egg", + "eggskeleton": "skeleton_spawn_egg", + "spawneggskeleton": "skeleton_spawn_egg", + "skeletonspawn": "skeleton_spawn_egg", + "spawnskeleton": "skeleton_spawn_egg", + "skegg": "skeleton_spawn_egg", + "eggsk": "skeleton_spawn_egg", + "skspawnegg": "skeleton_spawn_egg", + "spawneggsk": "skeleton_spawn_egg", + "skspawn": "skeleton_spawn_egg", + "spawnsk": "skeleton_spawn_egg", + "skeleton_wall_skull": { + "material": "SKELETON_WALL_SKULL", + "unspawnable": true + }, + "skeletonwallskull": "skeleton_wall_skull", + "slime_ball": { + "material": "SLIME_BALL" + }, + "slimeball": "slime_ball", + "slime_block": { + "material": "SLIME_BLOCK" + }, + "slimeblock": "slime_block", + "slime_spawn_egg": { + "material": "SLIME_SPAWN_EGG" + }, + "slimespawnegg": "slime_spawn_egg", + "slimeegg": "slime_spawn_egg", + "eggslime": "slime_spawn_egg", + "spawneggslime": "slime_spawn_egg", + "slimespawn": "slime_spawn_egg", + "spawnslime": "slime_spawn_egg", + "smooth_quartz": { + "material": "SMOOTH_QUARTZ" + }, + "smoothquartz": "smooth_quartz", + "smooth_red_sandstone": { + "material": "SMOOTH_RED_SANDSTONE" + }, + "smredsandstone": "smooth_red_sandstone", + "smoothrsandstone": "smooth_red_sandstone", + "smrsandstone": "smooth_red_sandstone", + "smoothrsandst": "smooth_red_sandstone", + "smrsandst": "smooth_red_sandstone", + "smoothrsastone": "smooth_red_sandstone", + "smrsastone": "smooth_red_sandstone", + "smooth_sandstone": { + "material": "SMOOTH_SANDSTONE" + }, + "smoothsandstone": "smooth_sandstone", + "smsandstone": "smooth_sandstone", + "smoothsandst": "smooth_sandstone", + "smsandst": "smooth_sandstone", + "smooth_stone": { + "material": "SMOOTH_STONE" + }, + "smoothstone": "stone", + "smoothsmoothstone": "smooth_stone", + "smsmoothstone": "smooth_stone", + "smoothsstone": "smooth_stone", + "smsstone": "smooth_stone", + "snow": { + "material": "SNOW" + }, + "snowball": { + "material": "SNOWBALL" + }, + "snow_block": { + "material": "SNOW_BLOCK" + }, + "snowblock": "snow_block", + "soul_sand": { + "material": "SOUL_SAND" + }, + "soulsand": "soul_sand", + "spawner": { + "material": "SPAWNER" + }, + "spectral_arrow": { + "material": "SPECTRAL_ARROW" + }, + "spectralarrow": "spectral_arrow", + "spider_eye": { + "material": "SPIDER_EYE" + }, + "spidereye": "spider_eye", + "spider_spawn_egg": { + "material": "SPIDER_SPAWN_EGG" + }, + "spiderspawnegg": "spider_spawn_egg", + "spideregg": "spider_spawn_egg", + "eggspider": "spider_spawn_egg", + "spawneggspider": "spider_spawn_egg", + "spiderspawn": "spider_spawn_egg", + "spawnspider": "spider_spawn_egg", + "splash_potion": { + "material": "SPLASH_POTION" + }, + "splashpotion": "splash_potion", + "sponge": { + "material": "SPONGE" + }, + "spruce_boat": { + "material": "SPRUCE_BOAT" + }, + "spruceboat": "spruce_boat", + "pineboat": "spruce_boat", + "pboat": "spruce_boat", + "darkboat": "spruce_boat", + "dboat": "spruce_boat", + "sboat": "spruce_boat", + "spruce_button": { + "material": "SPRUCE_BUTTON" + }, + "sprucebutton": "spruce_button", + "spruce_door": { + "material": "SPRUCE_DOOR" + }, + "sprucedoor": "spruce_door", + "spruce_fence": { + "material": "SPRUCE_FENCE" + }, + "sprucefence": "spruce_fence", + "pinefence": "spruce_fence", + "pfence": "spruce_fence", + "darkfence": "spruce_fence", + "dfence": "spruce_fence", + "sfence": "spruce_fence", + "spruce_fence_gate": { + "material": "SPRUCE_FENCE_GATE" + }, + "sprucefencegate": "spruce_fence_gate", + "pinefencegate": "spruce_fence_gate", + "pinegate": "spruce_fence_gate", + "pfencegate": "spruce_fence_gate", + "pgate": "spruce_fence_gate", + "darkfencegate": "spruce_fence_gate", + "darkgate": "spruce_fence_gate", + "dfencegate": "spruce_fence_gate", + "dgate": "spruce_fence_gate", + "sprucegate": "spruce_fence_gate", + "sfencegate": "spruce_fence_gate", + "sgate": "spruce_fence_gate", + "spruce_leaves": { + "material": "SPRUCE_LEAVES" + }, + "spruceleaves": "spruce_leaves", + "pinetreeleaves": "spruce_leaves", + "pinelogleaves": "spruce_leaves", + "pinetrunkleaves": "spruce_leaves", + "pinewoodleaves": "spruce_leaves", + "pineleaves": "spruce_leaves", + "pinetreeleaf": "spruce_leaves", + "pinelogleaf": "spruce_leaves", + "pinetrunkleaf": "spruce_leaves", + "pinewoodleaf": "spruce_leaves", + "pineleaf": "spruce_leaves", + "pinetreeleave": "spruce_leaves", + "pinelogleave": "spruce_leaves", + "pinetrunkleave": "spruce_leaves", + "pinewoodleave": "spruce_leaves", + "pineleave": "spruce_leaves", + "ptreeleaves": "spruce_leaves", + "plogleaves": "spruce_leaves", + "ptrunkleaves": "spruce_leaves", + "pwoodleaves": "spruce_leaves", + "pleaves": "spruce_leaves", + "ptreeleaf": "spruce_leaves", + "plogleaf": "spruce_leaves", + "ptrunkleaf": "spruce_leaves", + "pwoodleaf": "spruce_leaves", + "pleaf": "spruce_leaves", + "ptreeleave": "spruce_leaves", + "plogleave": "spruce_leaves", + "ptrunkleave": "spruce_leaves", + "pwoodleave": "spruce_leaves", + "pleave": "spruce_leaves", + "darktreeleaves": "spruce_leaves", + "darklogleaves": "spruce_leaves", + "darktrunkleaves": "spruce_leaves", + "darkwoodleaves": "spruce_leaves", + "darkleaves": "spruce_leaves", + "darktreeleaf": "spruce_leaves", + "darklogleaf": "spruce_leaves", + "darktrunkleaf": "spruce_leaves", + "darkwoodleaf": "spruce_leaves", + "darkleaf": "spruce_leaves", + "darktreeleave": "spruce_leaves", + "darklogleave": "spruce_leaves", + "darktrunkleave": "spruce_leaves", + "darkwoodleave": "spruce_leaves", + "darkleave": "spruce_leaves", + "dtreeleaves": "spruce_leaves", + "dlogleaves": "spruce_leaves", + "dtrunkleaves": "spruce_leaves", + "dwoodleaves": "spruce_leaves", + "dleaves": "spruce_leaves", + "dtreeleaf": "spruce_leaves", + "dlogleaf": "spruce_leaves", + "dtrunkleaf": "spruce_leaves", + "dwoodleaf": "spruce_leaves", + "dleaf": "spruce_leaves", + "dtreeleave": "spruce_leaves", + "dlogleave": "spruce_leaves", + "dtrunkleave": "spruce_leaves", + "dwoodleave": "spruce_leaves", + "dleave": "spruce_leaves", + "sprucetreeleaves": "spruce_leaves", + "sprucelogleaves": "spruce_leaves", + "sprucetrunkleaves": "spruce_leaves", + "sprucewoodleaves": "spruce_leaves", + "sprucetreeleaf": "spruce_leaves", + "sprucelogleaf": "spruce_leaves", + "sprucetrunkleaf": "spruce_leaves", + "sprucewoodleaf": "spruce_leaves", + "spruceleaf": "spruce_leaves", + "sprucetreeleave": "spruce_leaves", + "sprucelogleave": "spruce_leaves", + "sprucetrunkleave": "spruce_leaves", + "sprucewoodleave": "spruce_leaves", + "spruceleave": "spruce_leaves", + "streeleaves": "spruce_leaves", + "slogleaves": "spruce_leaves", + "strunkleaves": "spruce_leaves", + "swoodleaves": "spruce_leaves", + "sleaves": "spruce_leaves", + "streeleaf": "spruce_leaves", + "slogleaf": "spruce_leaves", + "strunkleaf": "spruce_leaves", + "swoodleaf": "spruce_leaves", + "sleaf": "spruce_leaves", + "streeleave": "spruce_leaves", + "slogleave": "spruce_leaves", + "strunkleave": "spruce_leaves", + "swoodleave": "spruce_leaves", + "sleave": "spruce_leaves", + "spruce_log": { + "material": "SPRUCE_LOG" + }, + "sprucelog": "spruce_log", + "pine": "spruce_log", + "logpine": "spruce_log", + "pinetrunk": "spruce_log", + "pinelog": "spruce_log", + "pinetree": "spruce_log", + "p": "spruce_log", + "logp": "spruce_log", + "ptrunk": "spruce_log", + "plog": "spruce_log", + "ptree": "spruce_log", + "dark": "spruce_log", + "logdark": "spruce_log", + "darktrunk": "spruce_log", + "darklog": "spruce_log", + "darktree": "spruce_log", + "d": "spruce_log", + "logd": "spruce_log", + "dtrunk": "spruce_log", + "dlog": "spruce_log", + "dtree": "spruce_log", + "spruce": "spruce_log", + "logspruce": "spruce_log", + "sprucetrunk": "spruce_log", + "sprucetree": "spruce_log", + "s": "spruce_log", + "logs": "spruce_log", + "strunk": "spruce_log", + "slog": "spruce_log", + "stree": "spruce_log", + "spruce_planks": { + "material": "SPRUCE_PLANKS" + }, + "spruceplanks": "spruce_planks", + "pinewoodenplank": "spruce_planks", + "pinewoodplank": "spruce_planks", + "pinewplank": "spruce_planks", + "pineplankwooden": "spruce_planks", + "pineplankwood": "spruce_planks", + "pineplankw": "spruce_planks", + "pineplank": "spruce_planks", + "pwoodenplank": "spruce_planks", + "pwoodplank": "spruce_planks", + "pwplank": "spruce_planks", + "pplankwooden": "spruce_planks", + "pplankwood": "spruce_planks", + "pplankw": "spruce_planks", + "pplank": "spruce_planks", + "darkwoodenplank": "spruce_planks", + "darkwoodplank": "spruce_planks", + "darkwplank": "spruce_planks", + "darkplankwooden": "spruce_planks", + "darkplankwood": "spruce_planks", + "darkplankw": "spruce_planks", + "darkplank": "spruce_planks", + "dwoodenplank": "spruce_planks", + "dwoodplank": "spruce_planks", + "dwplank": "spruce_planks", + "dplankwooden": "spruce_planks", + "dplankwood": "spruce_planks", + "dplankw": "spruce_planks", + "dplank": "spruce_planks", + "sprucewoodenplank": "spruce_planks", + "sprucewoodplank": "spruce_planks", + "sprucewplank": "spruce_planks", + "spruceplankwooden": "spruce_planks", + "spruceplankwood": "spruce_planks", + "spruceplankw": "spruce_planks", + "spruceplank": "spruce_planks", + "swoodenplank": "spruce_planks", + "swoodplank": "spruce_planks", + "swplank": "spruce_planks", + "splankwooden": "spruce_planks", + "splankwood": "spruce_planks", + "splankw": "spruce_planks", + "splank": "spruce_planks", + "spruce_pressure_plate": { + "material": "SPRUCE_PRESSURE_PLATE" + }, + "sprucepressureplate": "spruce_pressure_plate", + "spruce_sapling": { + "material": "SPRUCE_SAPLING" + }, + "sprucesapling": "spruce_sapling", + "pinesapling": "spruce_sapling", + "pinetreesapling": "spruce_sapling", + "pinelogsapling": "spruce_sapling", + "pinetrunksapling": "spruce_sapling", + "pinewoodsapling": "spruce_sapling", + "psapling": "spruce_sapling", + "ptreesapling": "spruce_sapling", + "plogsapling": "spruce_sapling", + "ptrunksapling": "spruce_sapling", + "pwoodsapling": "spruce_sapling", + "darksapling": "spruce_sapling", + "darktreesapling": "spruce_sapling", + "darklogsapling": "spruce_sapling", + "darktrunksapling": "spruce_sapling", + "darkwoodsapling": "spruce_sapling", + "dsapling": "spruce_sapling", + "dtreesapling": "spruce_sapling", + "dlogsapling": "spruce_sapling", + "dtrunksapling": "spruce_sapling", + "dwoodsapling": "spruce_sapling", + "sprucetreesapling": "spruce_sapling", + "sprucelogsapling": "spruce_sapling", + "sprucetrunksapling": "spruce_sapling", + "sprucewoodsapling": "spruce_sapling", + "ssapling": "spruce_sapling", + "streesapling": "spruce_sapling", + "slogsapling": "spruce_sapling", + "strunksapling": "spruce_sapling", + "swoodsapling": "spruce_sapling", + "spruce_slab": { + "material": "SPRUCE_SLAB" + }, + "spruceslab": "spruce_slab", + "pinewoodenstep": "spruce_slab", + "pinewoodstep": "spruce_slab", + "pinewstep": "spruce_slab", + "pinestep": "spruce_slab", + "pinewoodenslab": "spruce_slab", + "pinewoodslab": "spruce_slab", + "pinewslab": "spruce_slab", + "pinewoodenhalfblock": "spruce_slab", + "pinewoodhalfblock": "spruce_slab", + "pinewhalfblock": "spruce_slab", + "pinehalfblock": "spruce_slab", + "pwoodenstep": "spruce_slab", + "pwoodstep": "spruce_slab", + "pwstep": "spruce_slab", + "pstep": "spruce_slab", + "pwoodenslab": "spruce_slab", + "pwoodslab": "spruce_slab", + "pwslab": "spruce_slab", + "pwoodenhalfblock": "spruce_slab", + "pwoodhalfblock": "spruce_slab", + "pwhalfblock": "spruce_slab", + "phalfblock": "spruce_slab", + "darkwoodenstep": "spruce_slab", + "darkwoodstep": "spruce_slab", + "darkwstep": "spruce_slab", + "darkstep": "spruce_slab", + "darkwoodenslab": "spruce_slab", + "darkwoodslab": "spruce_slab", + "darkwslab": "spruce_slab", + "darkwoodenhalfblock": "spruce_slab", + "darkwoodhalfblock": "spruce_slab", + "darkwhalfblock": "spruce_slab", + "darkhalfblock": "spruce_slab", + "dwoodenstep": "spruce_slab", + "dwoodstep": "spruce_slab", + "dwstep": "spruce_slab", + "dstep": "spruce_slab", + "dwoodenslab": "spruce_slab", + "dwoodslab": "spruce_slab", + "dwslab": "spruce_slab", + "dwoodenhalfblock": "spruce_slab", + "dwoodhalfblock": "spruce_slab", + "dwhalfblock": "spruce_slab", + "dhalfblock": "spruce_slab", + "sprucewoodenstep": "spruce_slab", + "sprucewoodstep": "spruce_slab", + "sprucewstep": "spruce_slab", + "sprucestep": "spruce_slab", + "sprucewoodenslab": "spruce_slab", + "sprucewoodslab": "spruce_slab", + "sprucewslab": "spruce_slab", + "sprucewoodenhalfblock": "spruce_slab", + "sprucewoodhalfblock": "spruce_slab", + "sprucewhalfblock": "spruce_slab", + "sprucehalfblock": "spruce_slab", + "swoodenstep": "spruce_slab", + "swoodstep": "spruce_slab", + "swstep": "spruce_slab", + "sstep": "spruce_slab", + "swoodenslab": "spruce_slab", + "swoodslab": "spruce_slab", + "swslab": "spruce_slab", + "swoodenhalfblock": "spruce_slab", + "swoodhalfblock": "spruce_slab", + "swhalfblock": "spruce_slab", + "shalfblock": "spruce_slab", + "spruce_stairs": { + "material": "SPRUCE_STAIRS" + }, + "sprucestairs": "spruce_stairs", + "pinewoodenstairs": "spruce_stairs", + "pinewoodstairs": "spruce_stairs", + "pinewstairs": "spruce_stairs", + "pinewoodenstair": "spruce_stairs", + "pinewoodstair": "spruce_stairs", + "pinewstair": "spruce_stairs", + "pinestair": "spruce_stairs", + "pwoodenstairs": "spruce_stairs", + "pwoodstairs": "spruce_stairs", + "pwstairs": "spruce_stairs", + "pwoodenstair": "spruce_stairs", + "pwoodstair": "spruce_stairs", + "pwstair": "spruce_stairs", + "pstair": "spruce_stairs", + "darkwoodenstairs": "spruce_stairs", + "darkwoodstairs": "spruce_stairs", + "darkwstairs": "spruce_stairs", + "darkwoodenstair": "spruce_stairs", + "darkwoodstair": "spruce_stairs", + "darkwstair": "spruce_stairs", + "darkstair": "spruce_stairs", + "dwoodenstairs": "spruce_stairs", + "dwoodstairs": "spruce_stairs", + "dwstairs": "spruce_stairs", + "dwoodenstair": "spruce_stairs", + "dwoodstair": "spruce_stairs", + "dwstair": "spruce_stairs", + "dstair": "spruce_stairs", + "sprucewoodenstairs": "spruce_stairs", + "sprucewoodstairs": "spruce_stairs", + "sprucewstairs": "spruce_stairs", + "sprucewoodenstair": "spruce_stairs", + "sprucewoodstair": "spruce_stairs", + "sprucewstair": "spruce_stairs", + "sprucestair": "spruce_stairs", + "swoodenstairs": "spruce_stairs", + "swoodstairs": "spruce_stairs", + "swstairs": "spruce_stairs", + "swoodenstair": "spruce_stairs", + "swoodstair": "spruce_stairs", + "swstair": "spruce_stairs", + "sstair": "spruce_stairs", + "spruce_trapdoor": { + "material": "SPRUCE_TRAPDOOR" + }, + "sprucetrapdoor": "spruce_trapdoor", + "pinetrapdoor": "spruce_trapdoor", + "pinedoortrap": "spruce_trapdoor", + "pinehatch": "spruce_trapdoor", + "pinetdoor": "spruce_trapdoor", + "pinedoort": "spruce_trapdoor", + "pinetrapd": "spruce_trapdoor", + "pinedtrap": "spruce_trapdoor", + "ptrapdoor": "spruce_trapdoor", + "pdoortrap": "spruce_trapdoor", + "phatch": "spruce_trapdoor", + "ptdoor": "spruce_trapdoor", + "pdoort": "spruce_trapdoor", + "ptrapd": "spruce_trapdoor", + "pdtrap": "spruce_trapdoor", + "darktrapdoor": "spruce_trapdoor", + "darkdoortrap": "spruce_trapdoor", + "darkhatch": "spruce_trapdoor", + "darktdoor": "spruce_trapdoor", + "darkdoort": "spruce_trapdoor", + "darktrapd": "spruce_trapdoor", + "darkdtrap": "spruce_trapdoor", + "dtrapdoor": "spruce_trapdoor", + "ddoortrap": "spruce_trapdoor", + "dhatch": "spruce_trapdoor", + "dtdoor": "spruce_trapdoor", + "ddoort": "spruce_trapdoor", + "dtrapd": "spruce_trapdoor", + "ddtrap": "spruce_trapdoor", + "sprucedoortrap": "spruce_trapdoor", + "sprucehatch": "spruce_trapdoor", + "sprucetdoor": "spruce_trapdoor", + "sprucedoort": "spruce_trapdoor", + "sprucetrapd": "spruce_trapdoor", + "sprucedtrap": "spruce_trapdoor", + "strapdoor": "spruce_trapdoor", + "sdoortrap": "spruce_trapdoor", + "shatch": "spruce_trapdoor", + "sdoort": "spruce_trapdoor", + "strapd": "spruce_trapdoor", + "sdtrap": "spruce_trapdoor", + "spruce_wood": { + "material": "SPRUCE_WOOD" + }, + "sprucewood": "spruce_wood", + "pinewood": "spruce_wood", + "pinelogall": "spruce_wood", + "pinetrunkall": "spruce_wood", + "pinetreeall": "spruce_wood", + "pwood": "spruce_wood", + "plogall": "spruce_wood", + "ptrunkall": "spruce_wood", + "ptreeall": "spruce_wood", + "darkwood": "spruce_wood", + "darklogall": "spruce_wood", + "darktrunkall": "spruce_wood", + "darktreeall": "spruce_wood", + "dwood": "spruce_wood", + "dlogall": "spruce_wood", + "dtrunkall": "spruce_wood", + "dtreeall": "spruce_wood", + "sprucelogall": "spruce_wood", + "sprucetrunkall": "spruce_wood", + "sprucetreeall": "spruce_wood", + "swood": "spruce_wood", + "slogall": "spruce_wood", + "strunkall": "spruce_wood", + "streeall": "spruce_wood", + "squid_spawn_egg": { + "material": "SQUID_SPAWN_EGG" + }, + "squidspawnegg": "squid_spawn_egg", + "squidegg": "squid_spawn_egg", + "eggsquid": "squid_spawn_egg", + "spawneggsquid": "squid_spawn_egg", + "squidspawn": "squid_spawn_egg", + "spawnsquid": "squid_spawn_egg", + "stick": { + "material": "STICK" + }, + "sticky_piston": { + "material": "STICKY_PISTON" + }, + "stickypiston": "sticky_piston", + "pistonsticky": "sticky_piston", + "stickyp": "sticky_piston", + "psticky": "sticky_piston", + "pistonstickybase": "sticky_piston", + "stickypistonbase": "sticky_piston", + "stickpiston": "sticky_piston", + "pistonstick": "sticky_piston", + "stickp": "sticky_piston", + "pstick": "sticky_piston", + "pistonstickbase": "sticky_piston", + "stickpistonbase": "sticky_piston", + "spiston": "sticky_piston", + "pistons": "sticky_piston", + "pistonsbase": "sticky_piston", + "spistonbase": "sticky_piston", + "stone": { + "material": "STONE" + }, + "sstone": "stone", + "rock": "stone", + "stone_axe": { + "material": "STONE_AXE" + }, + "stoneaxe": "stone_axe", + "cobblestoneaxe": "stone_axe", + "cstoneaxe": "stone_axe", + "csaxe": "stone_axe", + "stone_bricks": { + "material": "STONE_BRICKS" + }, + "stonebricks": "stone_bricks", + "stonebrick": "stone_bricks", + "stonebrickblock": "stone_bricks", + "stonebb": "stone_bricks", + "sbrick": "stone_bricks", + "sbricks": "stone_bricks", + "sbrickblock": "stone_bricks", + "sbb": "stone_bricks", + "stone_brick_slab": { + "material": "STONE_BRICK_SLAB" + }, + "stonebrickslab": "stone_brick_slab", + "stoneslab": "stone_slab", + "stonesl": "stone_slab", + "smoothstoneslab": "stone_slab", + "smoothstonesl": "stone_slab", + "sstoneslab": "stone_slab", + "sstonesl": "stone_slab", + "stone_brick_stairs": { + "material": "STONE_BRICK_STAIRS" + }, + "stonebrickstairs": "stone_brick_stairs", + "stonestair": "stone_brick_stairs", + "stonestairs": "stone_brick_stairs", + "stonest": "stone_brick_stairs", + "smoothstonestair": "stone_brick_stairs", + "smoothstonestairs": "stone_brick_stairs", + "smoothstonest": "stone_brick_stairs", + "sstonestair": "stone_brick_stairs", + "sstonestairs": "stone_brick_stairs", + "sstonest": "stone_brick_stairs", + "stone_button": { + "material": "STONE_BUTTON" + }, + "stonebutton": "stone_button", + "smoothstonebutton": "stone_button", + "sstonebutton": "stone_button", + "sbutton": "stone_button", + "button": "stone_button", + "stone_hoe": { + "material": "STONE_HOE" + }, + "stonehoe": "stone_hoe", + "cobblestonehoe": "stone_hoe", + "cstonehoe": "stone_hoe", + "cshoe": "stone_hoe", + "stone_pickaxe": { + "material": "STONE_PICKAXE" + }, + "stonepickaxe": "stone_pickaxe", + "cobblestonepickaxe": "stone_pickaxe", + "cobblestonepick": "stone_pickaxe", + "cstonepickaxe": "stone_pickaxe", + "cstonepick": "stone_pickaxe", + "cspickaxe": "stone_pickaxe", + "cspick": "stone_pickaxe", + "stonepick": "stone_pickaxe", + "stone_pressure_plate": { + "material": "STONE_PRESSURE_PLATE" + }, + "stonepressureplate": "stone_pressure_plate", + "stonepressplate": "stone_pressure_plate", + "stonepplate": "stone_pressure_plate", + "stoneplate": "stone_pressure_plate", + "spressureplate": "stone_pressure_plate", + "spressplate": "stone_pressure_plate", + "spplate": "stone_pressure_plate", + "smoothstonepressueplate": "stone_pressure_plate", + "smoothstonepressplate": "stone_pressure_plate", + "smoothstonepplate": "stone_pressure_plate", + "smoothstoneplate": "stone_pressure_plate", + "sstonepressureplate": "stone_pressure_plate", + "sstonepressplate": "stone_pressure_plate", + "sstonepplate": "stone_pressure_plate", + "sstoneplate": "stone_pressure_plate", + "stone_shovel": { + "material": "STONE_SHOVEL" + }, + "stoneshovel": "stone_shovel", + "cobblestoneshovel": "stone_shovel", + "cobblestonespade": "stone_shovel", + "cstoneshovel": "stone_shovel", + "cstonespade": "stone_shovel", + "csshovel": "stone_shovel", + "csspade": "stone_shovel", + "stonespade": "stone_shovel", + "stone_slab": { + "material": "STONE_SLAB" + }, + "stone_sword": { + "material": "STONE_SWORD" + }, + "stonesword": "stone_sword", + "cobblestonesword": "stone_sword", + "cstonesword": "stone_sword", + "cssword": "stone_sword", + "stray_spawn_egg": { + "material": "STRAY_SPAWN_EGG" + }, + "strayspawnegg": "stray_spawn_egg", + "strayegg": "stray_spawn_egg", + "eggstray": "stray_spawn_egg", + "spawneggstray": "stray_spawn_egg", + "strayspawn": "stray_spawn_egg", + "spawnstray": "stray_spawn_egg", + "string": { + "material": "STRING" + }, + "stripped_acacia_log": { + "material": "STRIPPED_ACACIA_LOG" + }, + "strippedacacialog": "stripped_acacia_log", + "acaciastrippedlog": "stripped_acacia_log", + "astrippedlog": "stripped_acacia_log", + "acaciabarelog": "stripped_acacia_log", + "abarelog": "stripped_acacia_log", + "strippedacaciatree": "stripped_acacia_log", + "strippedatree": "stripped_acacia_log", + "bareacaciatree": "stripped_acacia_log", + "bareatree": "stripped_acacia_log", + "strippedacaciatrunk": "stripped_acacia_log", + "strippedatrunk": "stripped_acacia_log", + "bareacaciatrunk": "stripped_acacia_log", + "bareatrunk": "stripped_acacia_log", + "stripped_acacia_wood": { + "material": "STRIPPED_ACACIA_WOOD" + }, + "strippedacaciawood": "stripped_acacia_wood", + "acaciastrippedwood": "stripped_acacia_wood", + "astrippedwood": "stripped_acacia_wood", + "acaciabarewood": "stripped_acacia_wood", + "abarewood": "stripped_acacia_wood", + "strippedacacialogall": "stripped_acacia_wood", + "strippedalogall": "stripped_acacia_wood", + "bareacacialogall": "stripped_acacia_wood", + "barealogall": "stripped_acacia_wood", + "strippedacaciatrunkall": "stripped_acacia_wood", + "strippedatrunkall": "stripped_acacia_wood", + "bareacaciatrunkall": "stripped_acacia_wood", + "bareatrunkall": "stripped_acacia_wood", + "strippedacaciatreeall": "stripped_acacia_wood", + "strippedatreeall": "stripped_acacia_wood", + "bareacaciatreeall": "stripped_acacia_wood", + "bareatreeall": "stripped_acacia_wood", + "stripped_birch_log": { + "material": "STRIPPED_BIRCH_LOG" + }, + "strippedbirchlog": "stripped_birch_log", + "birchstrippedlog": "stripped_birch_log", + "bstrippedlog": "stripped_birch_log", + "lightstrippedlog": "stripped_birch_log", + "lstrippedlog": "stripped_birch_log", + "whitestrippedlog": "stripped_birch_log", + "wstrippedlog": "stripped_birch_log", + "birchbarelog": "stripped_birch_log", + "bbarelog": "stripped_birch_log", + "lightbarelog": "stripped_birch_log", + "lbarelog": "stripped_birch_log", + "whitebarelog": "stripped_birch_log", + "wbarelog": "stripped_birch_log", + "strippedbirchtree": "stripped_birch_log", + "strippedbtree": "stripped_birch_log", + "strippedlighttree": "stripped_birch_log", + "strippedltree": "stripped_birch_log", + "strippedwhitetree": "stripped_birch_log", + "strippedwtree": "stripped_birch_log", + "barebirchtree": "stripped_birch_log", + "barebtree": "stripped_birch_log", + "barelighttree": "stripped_birch_log", + "bareltree": "stripped_birch_log", + "barewhitetree": "stripped_birch_log", + "barewtree": "stripped_birch_log", + "strippedbirchtrunk": "stripped_birch_log", + "strippedbtrunk": "stripped_birch_log", + "strippedlighttrunk": "stripped_birch_log", + "strippedltrunk": "stripped_birch_log", + "strippedwhitetrunk": "stripped_birch_log", + "strippedwtrunk": "stripped_birch_log", + "barebirchtrunk": "stripped_birch_log", + "barebtrunk": "stripped_birch_log", + "barelighttrunk": "stripped_birch_log", + "bareltrunk": "stripped_birch_log", + "barewhitetrunk": "stripped_birch_log", + "barewtrunk": "stripped_birch_log", + "stripped_birch_wood": { + "material": "STRIPPED_BIRCH_WOOD" + }, + "strippedbirchwood": "stripped_birch_wood", + "birchstrippedwood": "stripped_birch_wood", + "bstrippedwood": "stripped_birch_wood", + "lightstrippedwood": "stripped_birch_wood", + "lstrippedwood": "stripped_birch_wood", + "whitestrippedwood": "stripped_birch_wood", + "wstrippedwood": "stripped_birch_wood", + "birchbarewood": "stripped_birch_wood", + "bbarewood": "stripped_birch_wood", + "lightbarewood": "stripped_birch_wood", + "lbarewood": "stripped_birch_wood", + "whitebarewood": "stripped_birch_wood", + "wbarewood": "stripped_birch_wood", + "strippedbirchlogall": "stripped_birch_wood", + "strippedblogall": "stripped_birch_wood", + "strippedlightlogall": "stripped_birch_wood", + "strippedllogall": "stripped_birch_wood", + "strippedwhitelogall": "stripped_birch_wood", + "strippedwlogall": "stripped_birch_wood", + "barebirchlogall": "stripped_birch_wood", + "bareblogall": "stripped_birch_wood", + "barelightlogall": "stripped_birch_wood", + "barellogall": "stripped_birch_wood", + "barewhitelogall": "stripped_birch_wood", + "barewlogall": "stripped_birch_wood", + "strippedbirchtrunkall": "stripped_birch_wood", + "strippedbtrunkall": "stripped_birch_wood", + "strippedlighttrunkall": "stripped_birch_wood", + "strippedltrunkall": "stripped_birch_wood", + "strippedwhitetrunkall": "stripped_birch_wood", + "strippedwtrunkall": "stripped_birch_wood", + "barebirchtrunkall": "stripped_birch_wood", + "barebtrunkall": "stripped_birch_wood", + "barelighttrunkall": "stripped_birch_wood", + "bareltrunkall": "stripped_birch_wood", + "barewhitetrunkall": "stripped_birch_wood", + "barewtrunkall": "stripped_birch_wood", + "strippedbirchtreeall": "stripped_birch_wood", + "strippedbtreeall": "stripped_birch_wood", + "strippedlighttreeall": "stripped_birch_wood", + "strippedltreeall": "stripped_birch_wood", + "strippedwhitetreeall": "stripped_birch_wood", + "strippedwtreeall": "stripped_birch_wood", + "barebirchtreeall": "stripped_birch_wood", + "barebtreeall": "stripped_birch_wood", + "barelighttreeall": "stripped_birch_wood", + "bareltreeall": "stripped_birch_wood", + "barewhitetreeall": "stripped_birch_wood", + "barewtreeall": "stripped_birch_wood", + "stripped_dark_oak_log": { + "material": "STRIPPED_DARK_OAK_LOG" + }, + "strippeddarkoaklog": "stripped_dark_oak_log", + "darkoakstrippedlog": "stripped_dark_oak_log", + "doakstrippedlog": "stripped_dark_oak_log", + "dostrippedlog": "stripped_dark_oak_log", + "darkoakbarelog": "stripped_dark_oak_log", + "doakbarelog": "stripped_dark_oak_log", + "dobarelog": "stripped_dark_oak_log", + "strippeddarkoaktree": "stripped_dark_oak_log", + "strippeddoaktree": "stripped_dark_oak_log", + "strippeddotree": "stripped_dark_oak_log", + "baredarkoaktree": "stripped_dark_oak_log", + "baredoaktree": "stripped_dark_oak_log", + "baredotree": "stripped_dark_oak_log", + "strippeddarkoaktrunk": "stripped_dark_oak_log", + "strippeddoaktrunk": "stripped_dark_oak_log", + "strippeddotrunk": "stripped_dark_oak_log", + "baredarkoaktrunk": "stripped_dark_oak_log", + "baredoaktrunk": "stripped_dark_oak_log", + "baredotrunk": "stripped_dark_oak_log", + "stripped_dark_oak_wood": { + "material": "STRIPPED_DARK_OAK_WOOD" + }, + "strippeddarkoakwood": "stripped_dark_oak_wood", + "darkoakstrippedwood": "stripped_dark_oak_wood", + "doakstrippedwood": "stripped_dark_oak_wood", + "dostrippedwood": "stripped_dark_oak_wood", + "darkoakbarewood": "stripped_dark_oak_wood", + "doakbarewood": "stripped_dark_oak_wood", + "dobarewood": "stripped_dark_oak_wood", + "strippeddarkoaklogall": "stripped_dark_oak_wood", + "strippeddoaklogall": "stripped_dark_oak_wood", + "strippeddologall": "stripped_dark_oak_wood", + "baredarkoaklogall": "stripped_dark_oak_wood", + "baredoaklogall": "stripped_dark_oak_wood", + "baredologall": "stripped_dark_oak_wood", + "strippeddarkoaktrunkall": "stripped_dark_oak_wood", + "strippeddoaktrunkall": "stripped_dark_oak_wood", + "strippeddotrunkall": "stripped_dark_oak_wood", + "baredarkoaktrunkall": "stripped_dark_oak_wood", + "baredoaktrunkall": "stripped_dark_oak_wood", + "baredotrunkall": "stripped_dark_oak_wood", + "strippeddarkoaktreeall": "stripped_dark_oak_wood", + "strippeddoaktreeall": "stripped_dark_oak_wood", + "strippeddotreeall": "stripped_dark_oak_wood", + "baredarkoaktreeall": "stripped_dark_oak_wood", + "baredoaktreeall": "stripped_dark_oak_wood", + "baredotreeall": "stripped_dark_oak_wood", + "stripped_jungle_log": { + "material": "STRIPPED_JUNGLE_LOG" + }, + "strippedjunglelog": "stripped_jungle_log", + "junglestrippedlog": "stripped_jungle_log", + "jstrippedlog": "stripped_jungle_log", + "foreststrippedlog": "stripped_jungle_log", + "fstrippedlog": "stripped_jungle_log", + "junglebarelog": "stripped_jungle_log", + "jbarelog": "stripped_jungle_log", + "forestbarelog": "stripped_jungle_log", + "fbarelog": "stripped_jungle_log", + "strippedjungletree": "stripped_jungle_log", + "strippedjtree": "stripped_jungle_log", + "strippedforesttree": "stripped_jungle_log", + "strippedftree": "stripped_jungle_log", + "barejungletree": "stripped_jungle_log", + "barejtree": "stripped_jungle_log", + "bareforesttree": "stripped_jungle_log", + "bareftree": "stripped_jungle_log", + "strippedjungletrunk": "stripped_jungle_log", + "strippedjtrunk": "stripped_jungle_log", + "strippedforesttrunk": "stripped_jungle_log", + "strippedftrunk": "stripped_jungle_log", + "barejungletrunk": "stripped_jungle_log", + "barejtrunk": "stripped_jungle_log", + "bareforesttrunk": "stripped_jungle_log", + "bareftrunk": "stripped_jungle_log", + "stripped_jungle_wood": { + "material": "STRIPPED_JUNGLE_WOOD" + }, + "strippedjunglewood": "stripped_jungle_wood", + "junglestrippedwood": "stripped_jungle_wood", + "jstrippedwood": "stripped_jungle_wood", + "foreststrippedwood": "stripped_jungle_wood", + "fstrippedwood": "stripped_jungle_wood", + "junglebarewood": "stripped_jungle_wood", + "jbarewood": "stripped_jungle_wood", + "forestbarewood": "stripped_jungle_wood", + "fbarewood": "stripped_jungle_wood", + "strippedjunglelogall": "stripped_jungle_wood", + "strippedjlogall": "stripped_jungle_wood", + "strippedforestlogall": "stripped_jungle_wood", + "strippedflogall": "stripped_jungle_wood", + "barejunglelogall": "stripped_jungle_wood", + "barejlogall": "stripped_jungle_wood", + "bareforestlogall": "stripped_jungle_wood", + "bareflogall": "stripped_jungle_wood", + "strippedjungletrunkall": "stripped_jungle_wood", + "strippedjtrunkall": "stripped_jungle_wood", + "strippedforesttrunkall": "stripped_jungle_wood", + "strippedftrunkall": "stripped_jungle_wood", + "barejungletrunkall": "stripped_jungle_wood", + "barejtrunkall": "stripped_jungle_wood", + "bareforesttrunkall": "stripped_jungle_wood", + "bareftrunkall": "stripped_jungle_wood", + "strippedjungletreeall": "stripped_jungle_wood", + "strippedjtreeall": "stripped_jungle_wood", + "strippedforesttreeall": "stripped_jungle_wood", + "strippedftreeall": "stripped_jungle_wood", + "barejungletreeall": "stripped_jungle_wood", + "barejtreeall": "stripped_jungle_wood", + "bareforesttreeall": "stripped_jungle_wood", + "bareftreeall": "stripped_jungle_wood", + "stripped_oak_log": { + "material": "STRIPPED_OAK_LOG" + }, + "strippedoaklog": "stripped_oak_log", + "strippedlog": "stripped_oak_log", + "oakstrippedlog": "stripped_oak_log", + "ostrippedlog": "stripped_oak_log", + "barelog": "stripped_oak_log", + "oakbarelog": "stripped_oak_log", + "obarelog": "stripped_oak_log", + "strippedtree": "stripped_oak_log", + "strippedoaktree": "stripped_oak_log", + "strippedotree": "stripped_oak_log", + "baretree": "stripped_oak_log", + "bareoaktree": "stripped_oak_log", + "bareotree": "stripped_oak_log", + "strippedtrunk": "stripped_oak_log", + "strippedoaktrunk": "stripped_oak_log", + "strippedotrunk": "stripped_oak_log", + "baretrunk": "stripped_oak_log", + "bareoaktrunk": "stripped_oak_log", + "bareotrunk": "stripped_oak_log", + "stripped_oak_wood": { + "material": "STRIPPED_OAK_WOOD" + }, + "strippedoakwood": "stripped_oak_wood", + "strippedwood": "stripped_oak_wood", + "oakstrippedwood": "stripped_oak_wood", + "ostrippedwood": "stripped_oak_wood", + "barewood": "stripped_oak_wood", + "oakbarewood": "stripped_oak_wood", + "obarewood": "stripped_oak_wood", + "strippedlogall": "stripped_oak_wood", + "strippedoaklogall": "stripped_oak_wood", + "strippedologall": "stripped_oak_wood", + "barelogall": "stripped_oak_wood", + "bareoaklogall": "stripped_oak_wood", + "bareologall": "stripped_oak_wood", + "strippedtrunkall": "stripped_oak_wood", + "strippedoaktrunkall": "stripped_oak_wood", + "strippedotrunkall": "stripped_oak_wood", + "baretrunkall": "stripped_oak_wood", + "bareoaktrunkall": "stripped_oak_wood", + "bareotrunkall": "stripped_oak_wood", + "strippedtreeall": "stripped_oak_wood", + "strippedoaktreeall": "stripped_oak_wood", + "strippedotreeall": "stripped_oak_wood", + "baretreeall": "stripped_oak_wood", + "bareoaktreeall": "stripped_oak_wood", + "bareotreeall": "stripped_oak_wood", + "stripped_spruce_log": { + "material": "STRIPPED_SPRUCE_LOG" + }, + "strippedsprucelog": "stripped_spruce_log", + "pinestrippedlog": "stripped_spruce_log", + "pstrippedlog": "stripped_spruce_log", + "darkstrippedlog": "stripped_spruce_log", + "dstrippedlog": "stripped_spruce_log", + "sprucestrippedlog": "stripped_spruce_log", + "sstrippedlog": "stripped_spruce_log", + "pinebarelog": "stripped_spruce_log", + "pbarelog": "stripped_spruce_log", + "darkbarelog": "stripped_spruce_log", + "dbarelog": "stripped_spruce_log", + "sprucebarelog": "stripped_spruce_log", + "sbarelog": "stripped_spruce_log", + "strippedpinetree": "stripped_spruce_log", + "strippedptree": "stripped_spruce_log", + "strippeddarktree": "stripped_spruce_log", + "strippeddtree": "stripped_spruce_log", + "strippedsprucetree": "stripped_spruce_log", + "strippedstree": "stripped_spruce_log", + "barepinetree": "stripped_spruce_log", + "bareptree": "stripped_spruce_log", + "baredarktree": "stripped_spruce_log", + "baredtree": "stripped_spruce_log", + "baresprucetree": "stripped_spruce_log", + "barestree": "stripped_spruce_log", + "strippedpinetrunk": "stripped_spruce_log", + "strippedptrunk": "stripped_spruce_log", + "strippeddarktrunk": "stripped_spruce_log", + "strippeddtrunk": "stripped_spruce_log", + "strippedsprucetrunk": "stripped_spruce_log", + "strippedstrunk": "stripped_spruce_log", + "barepinetrunk": "stripped_spruce_log", + "bareptrunk": "stripped_spruce_log", + "baredarktrunk": "stripped_spruce_log", + "baredtrunk": "stripped_spruce_log", + "baresprucetrunk": "stripped_spruce_log", + "barestrunk": "stripped_spruce_log", + "stripped_spruce_wood": { + "material": "STRIPPED_SPRUCE_WOOD" + }, + "strippedsprucewood": "stripped_spruce_wood", + "pinestrippedwood": "stripped_spruce_wood", + "pstrippedwood": "stripped_spruce_wood", + "darkstrippedwood": "stripped_spruce_wood", + "dstrippedwood": "stripped_spruce_wood", + "sprucestrippedwood": "stripped_spruce_wood", + "sstrippedwood": "stripped_spruce_wood", + "pinebarewood": "stripped_spruce_wood", + "pbarewood": "stripped_spruce_wood", + "darkbarewood": "stripped_spruce_wood", + "dbarewood": "stripped_spruce_wood", + "sprucebarewood": "stripped_spruce_wood", + "sbarewood": "stripped_spruce_wood", + "strippedpinelogall": "stripped_spruce_wood", + "strippedplogall": "stripped_spruce_wood", + "strippeddarklogall": "stripped_spruce_wood", + "strippeddlogall": "stripped_spruce_wood", + "strippedsprucelogall": "stripped_spruce_wood", + "strippedslogall": "stripped_spruce_wood", + "barepinelogall": "stripped_spruce_wood", + "bareplogall": "stripped_spruce_wood", + "baredarklogall": "stripped_spruce_wood", + "baredlogall": "stripped_spruce_wood", + "baresprucelogall": "stripped_spruce_wood", + "bareslogall": "stripped_spruce_wood", + "strippedpinetrunkall": "stripped_spruce_wood", + "strippedptrunkall": "stripped_spruce_wood", + "strippeddarktrunkall": "stripped_spruce_wood", + "strippeddtrunkall": "stripped_spruce_wood", + "strippedsprucetrunkall": "stripped_spruce_wood", + "strippedstrunkall": "stripped_spruce_wood", + "barepinetrunkall": "stripped_spruce_wood", + "bareptrunkall": "stripped_spruce_wood", + "baredarktrunkall": "stripped_spruce_wood", + "baredtrunkall": "stripped_spruce_wood", + "baresprucetrunkall": "stripped_spruce_wood", + "barestrunkall": "stripped_spruce_wood", + "strippedpinetreeall": "stripped_spruce_wood", + "strippedptreeall": "stripped_spruce_wood", + "strippeddarktreeall": "stripped_spruce_wood", + "strippeddtreeall": "stripped_spruce_wood", + "strippedsprucetreeall": "stripped_spruce_wood", + "strippedstreeall": "stripped_spruce_wood", + "barepinetreeall": "stripped_spruce_wood", + "bareptreeall": "stripped_spruce_wood", + "baredarktreeall": "stripped_spruce_wood", + "baredtreeall": "stripped_spruce_wood", + "baresprucetreeall": "stripped_spruce_wood", + "barestreeall": "stripped_spruce_wood", + "structure_block": { + "material": "STRUCTURE_BLOCK" + }, + "structureblock": "structure_block", + "structure_void": { + "material": "STRUCTURE_VOID" + }, + "structurevoid": "structure_void", + "sugar": { + "material": "SUGAR" + }, + "sugar_cane": { + "material": "SUGAR_CANE" + }, + "sugarcane": "sugar_cane", + "sunflower": { + "material": "SUNFLOWER" + }, + "tall_grass": { + "material": "TALL_GRASS" + }, + "tallgrass": "tall_grass", + "longgrass": "tall_grass", + "wildgrass": "tall_grass", + "grasslong": "tall_grass", + "grasstall": "tall_grass", + "grasswild": "tall_grass", + "lgrass": "tall_grass", + "tgrass": "tall_grass", + "wgrass": "tall_grass", + "tall_seagrass": { + "material": "TALL_SEAGRASS", + "unspawnable": true + }, + "tallseagrass": "tall_seagrass", + "terracotta": { + "material": "TERRACOTTA" + }, + "tipped_arrow": { + "material": "TIPPED_ARROW" + }, + "tippedarrow": "tipped_arrow", + "tnt": { + "material": "TNT" + }, + "tntblock": "tnt", + "blocktnt": "tnt", + "bombblock": "tnt", + "blockbomb": "tnt", + "dynamiteblock": "tnt", + "blockdynamite": "tnt", + "bomb": "tnt", + "dynamite": "tnt", + "tnt_minecart": { + "material": "TNT_MINECART" + }, + "tntminecart": "tnt_minecart", + "tntmcart": "tnt_minecart", + "tntmc": "tnt_minecart", + "tntcart": "tnt_minecart", + "dynamiteminecart": "tnt_minecart", + "dynamitemcart": "tnt_minecart", + "dynamitemc": "tnt_minecart", + "dynamitecart": "tnt_minecart", + "bombminecart": "tnt_minecart", + "bombmcart": "tnt_minecart", + "bombmc": "tnt_minecart", + "bombcart": "tnt_minecart", + "tminecart": "tnt_minecart", + "tmcart": "tnt_minecart", + "tmc": "tnt_minecart", + "tcart": "tnt_minecart", + "dminecart": "tnt_minecart", + "dmcart": "tnt_minecart", + "dmc": "tnt_minecart", + "dcart": "tnt_minecart", + "bminecart": "tnt_minecart", + "bmcart": "tnt_minecart", + "bmc": "tnt_minecart", + "bcart": "tnt_minecart", + "torch": { + "material": "TORCH" + }, + "burningstick": "torch", + "burnstick": "torch", + "totem_of_undying": { + "material": "TOTEM_OF_UNDYING" + }, + "totemofundying": "totem_of_undying", + "totem": "totem_of_undying", + "trapped_chest": { + "material": "TRAPPED_CHEST" + }, + "trappedchest": "trapped_chest", + "trapchest": "trapped_chest", + "chesttrapped": "trapped_chest", + "chesttrap": "trapped_chest", + "trident": { + "material": "TRIDENT" + }, + "tripwire": { + "material": "TRIPWIRE", + "unspawnable": true + }, + "tripwire_hook": { + "material": "TRIPWIRE_HOOK" + }, + "tripwirehook": "tripwire_hook", + "trip": "tripwire_hook", + "tripwirelever": "tripwire_hook", + "triphook": "tripwire_hook", + "tropical_fish": { + "material": "TROPICAL_FISH" + }, + "tropicalfish": "tropical_fish", + "rawclownfish": "tropical_fish", + "rawnemo": "tropical_fish", + "rawclfish": "tropical_fish", + "rawfishcl": "tropical_fish", + "rawnfish": "tropical_fish", + "rawfishn": "tropical_fish", + "raclownfish": "tropical_fish", + "ranemo": "tropical_fish", + "raclfish": "tropical_fish", + "rafishcl": "tropical_fish", + "ranfish": "tropical_fish", + "rafishn": "tropical_fish", + "uncookedclownfish": "tropical_fish", + "uncookednemo": "tropical_fish", + "uncookedclfish": "tropical_fish", + "uncookedfishcl": "tropical_fish", + "uncookednfish": "tropical_fish", + "uncookedfishn": "tropical_fish", + "plainclownfish": "tropical_fish", + "plainnemo": "tropical_fish", + "plainclfish": "tropical_fish", + "plainfishcl": "tropical_fish", + "plainnfish": "tropical_fish", + "plainfishn": "tropical_fish", + "clownfish": "tropical_fish", + "nemo": "tropical_fish", + "clfish": "tropical_fish", + "fishcl": "tropical_fish", + "nfish": "tropical_fish", + "fishn": "tropical_fish", + "tropical_fish_bucket": { + "material": "TROPICAL_FISH_BUCKET" + }, + "tropicalfishbucket": "tropical_fish_bucket", + "tropicalfishpail": "tropical_fish_bucket", + "tropicfishbucket": "tropical_fish_bucket", + "tropicfishpail": "tropical_fish_bucket", + "tfishbucket": "tropical_fish_bucket", + "tfishpail": "tropical_fish_bucket", + "tropicalfbucket": "tropical_fish_bucket", + "tropicalfpail": "tropical_fish_bucket", + "tropicfbucket": "tropical_fish_bucket", + "tropicfpail": "tropical_fish_bucket", + "tropical_fish_spawn_egg": { + "material": "TROPICAL_FISH_SPAWN_EGG" + }, + "tropicalfishspawnegg": "tropical_fish_spawn_egg", + "tropicalfishegg": "tropical_fish_spawn_egg", + "eggtropicalfish": "tropical_fish_spawn_egg", + "spawneggtropicalfish": "tropical_fish_spawn_egg", + "tropicalfishspawn": "tropical_fish_spawn_egg", + "spawntropicalfish": "tropical_fish_spawn_egg", + "tropicfishegg": "tropical_fish_spawn_egg", + "eggtropicfish": "tropical_fish_spawn_egg", + "tropicfishspawnegg": "tropical_fish_spawn_egg", + "spawneggtropicfish": "tropical_fish_spawn_egg", + "tropicfishspawn": "tropical_fish_spawn_egg", + "spawntropicfish": "tropical_fish_spawn_egg", + "tfishegg": "tropical_fish_spawn_egg", + "eggtfish": "tropical_fish_spawn_egg", + "tfishspawnegg": "tropical_fish_spawn_egg", + "spawneggtfish": "tropical_fish_spawn_egg", + "tfishspawn": "tropical_fish_spawn_egg", + "spawntfish": "tropical_fish_spawn_egg", + "tropicalfegg": "tropical_fish_spawn_egg", + "eggtropicalf": "tropical_fish_spawn_egg", + "tropicalfspawnegg": "tropical_fish_spawn_egg", + "spawneggtropicalf": "tropical_fish_spawn_egg", + "tropicalfspawn": "tropical_fish_spawn_egg", + "spawntropicalf": "tropical_fish_spawn_egg", + "tropicfegg": "tropical_fish_spawn_egg", + "eggtropicf": "tropical_fish_spawn_egg", + "tropicfspawnegg": "tropical_fish_spawn_egg", + "spawneggtropicf": "tropical_fish_spawn_egg", + "tropicfspawn": "tropical_fish_spawn_egg", + "spawntropicf": "tropical_fish_spawn_egg", + "tube_coral": { + "material": "TUBE_CORAL" + }, + "tubecoral": "tube_coral", + "tube_coral_block": { + "material": "TUBE_CORAL_BLOCK" + }, + "tubecoralblock": "tube_coral_block", + "tube_coral_fan": { + "material": "TUBE_CORAL_FAN" + }, + "tubecoralfan": "tube_coral_fan", + "tube_coral_wall_fan": { + "material": "TUBE_CORAL_WALL_FAN", + "unspawnable": true + }, + "tubecoralwallfan": "tube_coral_wall_fan", + "turtle_egg": { + "material": "TURTLE_EGG" + }, + "turtleegg": "turtle_spawn_egg", + "turtle_helmet": { + "material": "TURTLE_HELMET" + }, + "turtlehelmet": "turtle_helmet", + "turtle_spawn_egg": { + "material": "TURTLE_SPAWN_EGG" + }, + "turtlespawnegg": "turtle_spawn_egg", + "eggturtle": "turtle_spawn_egg", + "spawneggturtle": "turtle_spawn_egg", + "turtlespawn": "turtle_spawn_egg", + "spawnturtle": "turtle_spawn_egg", + "vex_spawn_egg": { + "material": "VEX_SPAWN_EGG" + }, + "vexspawnegg": "vex_spawn_egg", + "vexegg": "vex_spawn_egg", + "eggvex": "vex_spawn_egg", + "spawneggvex": "vex_spawn_egg", + "vexspawn": "vex_spawn_egg", + "spawnvex": "vex_spawn_egg", + "villager_spawn_egg": { + "material": "VILLAGER_SPAWN_EGG" + }, + "villagerspawnegg": "villager_spawn_egg", + "villageregg": "villager_spawn_egg", + "eggvillager": "villager_spawn_egg", + "spawneggvillager": "villager_spawn_egg", + "villagerspawn": "villager_spawn_egg", + "spawnvillager": "villager_spawn_egg", + "vindicator_spawn_egg": { + "material": "VINDICATOR_SPAWN_EGG" + }, + "vindicatorspawnegg": "vindicator_spawn_egg", + "vindicatoregg": "vindicator_spawn_egg", + "eggvindicator": "vindicator_spawn_egg", + "spawneggvindicator": "vindicator_spawn_egg", + "vindicatorspawn": "vindicator_spawn_egg", + "spawnvindicator": "vindicator_spawn_egg", + "vinegg": "vindicator_spawn_egg", + "eggvin": "vindicator_spawn_egg", + "vinspawnegg": "vindicator_spawn_egg", + "spawneggvin": "vindicator_spawn_egg", + "vinspawn": "vindicator_spawn_egg", + "spawnvin": "vindicator_spawn_egg", + "vine": { + "material": "VINE" + }, + "vines": "vine", + "greenvines": "vine", + "greenvine": "vine", + "gardenvines": "vine", + "gardenvine": "vine", + "vinesgreen": "vine", + "vinegreen": "vine", + "vinesgarden": "vine", + "vinegarden": "vine", + "vinesg": "vine", + "vineg": "vine", + "gvines": "vine", + "gvine": "vine", + "void_air": { + "material": "VOID_AIR", + "unspawnable": true + }, + "voidair": "void_air", + "wall_sign": { + "material": "WALL_SIGN", + "unspawnable": true + }, + "wallsign": "wall_sign", + "wall_torch": { + "material": "WALL_TORCH", + "unspawnable": true + }, + "walltorch": "wall_torch", + "water": { + "material": "WATER", + "unspawnable": true + }, + "stationarywater": "water", + "stillwater": "water", + "swater": "water", + "water_bucket": { + "material": "WATER_BUCKET" + }, + "waterbucket": "water_bucket", + "wet_sponge": { + "material": "WET_SPONGE" + }, + "wetsponge": "wet_sponge", + "wheat": { + "material": "WHEAT" + }, + "wheat_seeds": { + "material": "WHEAT_SEEDS" + }, + "wheatseeds": "wheat_seeds", + "white_banner": { + "material": "WHITE_BANNER" + }, + "whitebanner": "white_banner", + "standingbanner": "white_banner", + "banner": "white_banner", + "wstandingbanner": "white_banner", + "wbanner": "white_banner", + "whitestandingbanner": "white_banner", + "white_bed": { + "material": "WHITE_BED" + }, + "whitebed": "white_bed", + "bed": "white_bed", + "wbed": "white_bed", + "white_carpet": { + "material": "WHITE_CARPET" + }, + "whitecarpet": "white_carpet", + "carpet": "white_carpet", + "floor": "white_carpet", + "wcarpet": "white_carpet", + "wfloor": "white_carpet", + "whitefloor": "white_carpet", + "white_concrete": { + "material": "WHITE_CONCRETE" + }, + "whiteconcrete": "white_concrete", + "concrete": "white_concrete", + "wconcrete": "white_concrete", + "white_concrete_powder": { + "material": "WHITE_CONCRETE_POWDER" + }, + "whiteconcretepowder": "white_concrete_powder", + "concretepowder": "white_concrete_powder", + "concretesand": "white_concrete_powder", + "cpowder": "white_concrete_powder", + "cdust": "white_concrete_powder", + "cp": "white_concrete_powder", + "wconcretepowder": "white_concrete_powder", + "wconcretesand": "white_concrete_powder", + "wcpowder": "white_concrete_powder", + "wcdust": "white_concrete_powder", + "wcp": "white_concrete_powder", + "whiteconcretesand": "white_concrete_powder", + "whitecpowder": "white_concrete_powder", + "whitecdust": "white_concrete_powder", + "whitecp": "white_concrete_powder", + "white_glazed_terracotta": { + "material": "WHITE_GLAZED_TERRACOTTA" + }, + "whiteglazedterracotta": "white_glazed_terracotta", + "glazedtcota": "white_glazed_terracotta", + "glazedterra": "white_glazed_terracotta", + "glazedterracotta": "white_glazed_terracotta", + "glazedterracota": "white_glazed_terracotta", + "wglazedtcota": "white_glazed_terracotta", + "wglazedterra": "white_glazed_terracotta", + "wglazedterracotta": "white_glazed_terracotta", + "wglazedterracota": "white_glazed_terracotta", + "whiteglazedtcota": "white_glazed_terracotta", + "whiteglazedterra": "white_glazed_terracotta", + "whiteglazedterracota": "white_glazed_terracotta", + "white_shulker_box": { + "material": "WHITE_SHULKER_BOX" + }, + "whiteshulkerbox": "white_shulker_box", + "wshulkerbox": "white_shulker_box", + "wchest": "white_shulker_box", + "whitechest": "white_shulker_box", + "white_stained_glass": { + "material": "WHITE_STAINED_GLASS" + }, + "whitestainedglass": "white_stained_glass", + "sglass": "white_stained_glass", + "stainedglass": "white_stained_glass", + "wglass": "white_stained_glass", + "wsglass": "white_stained_glass", + "wstainedglass": "white_stained_glass", + "whiteglass": "white_stained_glass", + "whitesglass": "white_stained_glass", + "white_stained_glass_pane": { + "material": "WHITE_STAINED_GLASS_PANE" + }, + "whitestainedglasspane": "white_stained_glass_pane", + "sglasspane": "white_stained_glass_pane", + "stainedglasspane": "white_stained_glass_pane", + "gpane": "white_stained_glass_pane", + "wglasspane": "white_stained_glass_pane", + "wsglasspane": "white_stained_glass_pane", + "wstainedglasspane": "white_stained_glass_pane", + "wgpane": "white_stained_glass_pane", + "whiteglasspane": "white_stained_glass_pane", + "whitesglasspane": "white_stained_glass_pane", + "whitegpane": "white_stained_glass_pane", + "white_terracotta": { + "material": "WHITE_TERRACOTTA" + }, + "whiteterracotta": "white_terracotta", + "sclay": "white_terracotta", + "stainedclay": "white_terracotta", + "terra": "white_terracotta", + "tcota": "white_terracotta", + "terracota": "white_terracotta", + "wclay": "white_terracotta", + "wsclay": "white_terracotta", + "wstainedclay": "white_terracotta", + "wterra": "white_terracotta", + "wtcota": "white_terracotta", + "wterracota": "white_terracotta", + "wterracotta": "white_terracotta", + "whiteclay": "white_terracotta", + "whitesclay": "white_terracotta", + "whitestainedclay": "white_terracotta", + "whiteterra": "white_terracotta", + "whitetcota": "white_terracotta", + "whiteterracota": "white_terracotta", + "white_tulip": { + "material": "WHITE_TULIP" + }, + "whitetulip": "white_tulip", + "tulipwhite": "white_tulip", + "wtulip": "white_tulip", + "tulipw": "white_tulip", + "white_wall_banner": { + "material": "WHITE_WALL_BANNER", + "unspawnable": true + }, + "whitewallbanner": "white_wall_banner", + "white_wool": { + "material": "WHITE_WOOL" + }, + "whitewool": "white_wool", + "wool": "white_wool", + "cloth": "white_wool", + "cotton": "white_wool", + "wwool": "white_wool", + "wcloth": "white_wool", + "wcotton": "white_wool", + "whitecloth": "white_wool", + "whitecotton": "white_wool", + "witch_spawn_egg": { + "material": "WITCH_SPAWN_EGG" + }, + "witchspawnegg": "witch_spawn_egg", + "witchegg": "witch_spawn_egg", + "eggwitch": "witch_spawn_egg", + "spawneggwitch": "witch_spawn_egg", + "witchspawn": "witch_spawn_egg", + "spawnwitch": "witch_spawn_egg", + "wither_skeleton_skull": { + "material": "WITHER_SKELETON_SKULL" + }, + "witherskeletonskull": "wither_skeleton_skull", + "witherskeletonhead": "wither_skeleton_skull", + "headwitherskeleton": "wither_skeleton_skull", + "stevewitherskeleton": "wither_skeleton_skull", + "witherskeletonmask": "wither_skeleton_skull", + "witherskeletonheadmask": "wither_skeleton_skull", + "wskeletonhead": "wither_skeleton_skull", + "wskeletonskull": "wither_skeleton_skull", + "headwskeleton": "wither_skeleton_skull", + "stevewskeleton": "wither_skeleton_skull", + "wskeletonmask": "wither_skeleton_skull", + "wskeletonheadmask": "wither_skeleton_skull", + "witherskhead": "wither_skeleton_skull", + "witherskskull": "wither_skeleton_skull", + "headwithersk": "wither_skeleton_skull", + "stevewithersk": "wither_skeleton_skull", + "witherskmask": "wither_skeleton_skull", + "witherskheadmask": "wither_skeleton_skull", + "wskhead": "wither_skeleton_skull", + "wskskull": "wither_skeleton_skull", + "headwsk": "wither_skeleton_skull", + "stevewsk": "wither_skeleton_skull", + "wskmask": "wither_skeleton_skull", + "wskheadmask": "wither_skeleton_skull", + "witherhead": "wither_skeleton_skull", + "witherskull": "wither_skeleton_skull", + "headwither": "wither_skeleton_skull", + "stevewither": "wither_skeleton_skull", + "withermask": "wither_skeleton_skull", + "witherheadmask": "wither_skeleton_skull", + "wither_skeleton_spawn_egg": { + "material": "WITHER_SKELETON_SPAWN_EGG" + }, + "witherskeletonspawnegg": "wither_skeleton_spawn_egg", + "witherskeletonegg": "wither_skeleton_spawn_egg", + "eggwitherskeleton": "wither_skeleton_spawn_egg", + "spawneggwitherskeleton": "wither_skeleton_spawn_egg", + "witherskeletonspawn": "wither_skeleton_spawn_egg", + "spawnwitherskeleton": "wither_skeleton_spawn_egg", + "wskeletonegg": "wither_skeleton_spawn_egg", + "eggwskeleton": "wither_skeleton_spawn_egg", + "wskeletonspawnegg": "wither_skeleton_spawn_egg", + "spawneggwskeleton": "wither_skeleton_spawn_egg", + "wskeletonspawn": "wither_skeleton_spawn_egg", + "spawnwskeleton": "wither_skeleton_spawn_egg", + "witherskegg": "wither_skeleton_spawn_egg", + "eggwithersk": "wither_skeleton_spawn_egg", + "witherskspawnegg": "wither_skeleton_spawn_egg", + "spawneggwithersk": "wither_skeleton_spawn_egg", + "witherskspawn": "wither_skeleton_spawn_egg", + "spawnwithersk": "wither_skeleton_spawn_egg", + "wskegg": "wither_skeleton_spawn_egg", + "eggwsk": "wither_skeleton_spawn_egg", + "wskspawnegg": "wither_skeleton_spawn_egg", + "spawneggwsk": "wither_skeleton_spawn_egg", + "wskspawn": "wither_skeleton_spawn_egg", + "spawnwsk": "wither_skeleton_spawn_egg", + "witheregg": "wither_skeleton_spawn_egg", + "eggwither": "wither_skeleton_spawn_egg", + "witherspawnegg": "wither_skeleton_spawn_egg", + "spawneggwither": "wither_skeleton_spawn_egg", + "witherspawn": "wither_skeleton_spawn_egg", + "spawnwither": "wither_skeleton_spawn_egg", + "wither_skeleton_wall_skull": { + "material": "WITHER_SKELETON_WALL_SKULL", + "unspawnable": true + }, + "witherskeletonwallskull": "wither_skeleton_wall_skull", + "wolf_spawn_egg": { + "material": "WOLF_SPAWN_EGG" + }, + "wolfspawnegg": "wolf_spawn_egg", + "wolfegg": "wolf_spawn_egg", + "eggwolf": "wolf_spawn_egg", + "spawneggwolf": "wolf_spawn_egg", + "wolfspawn": "wolf_spawn_egg", + "spawnwolf": "wolf_spawn_egg", + "wooden_axe": { + "material": "WOODEN_AXE" + }, + "woodenaxe": "wooden_axe", + "woodaxe": "wooden_axe", + "waxe": "wooden_axe", + "wooden_hoe": { + "material": "WOODEN_HOE" + }, + "woodenhoe": "wooden_hoe", + "woodhoe": "wooden_hoe", + "whoe": "wooden_hoe", + "wooden_pickaxe": { + "material": "WOODEN_PICKAXE" + }, + "woodenpickaxe": "wooden_pickaxe", + "woodenpick": "wooden_pickaxe", + "woodpickaxe": "wooden_pickaxe", + "woodpick": "wooden_pickaxe", + "wpickaxe": "wooden_pickaxe", + "wpick": "wooden_pickaxe", + "wooden_shovel": { + "material": "WOODEN_SHOVEL" + }, + "woodenshovel": "wooden_shovel", + "woodenspade": "wooden_shovel", + "woodshovel": "wooden_shovel", + "woodspade": "wooden_shovel", + "wshovel": "wooden_shovel", + "wspade": "wooden_shovel", + "wooden_sword": { + "material": "WOODEN_SWORD" + }, + "woodensword": "wooden_sword", + "woodsword": "wooden_sword", + "wsword": "wooden_sword", + "writable_book": { + "material": "WRITABLE_BOOK" + }, + "writablebook": "writable_book", + "written_book": { + "material": "WRITTEN_BOOK" + }, + "writtenbook": "written_book", + "yellow_banner": { + "material": "YELLOW_BANNER" + }, + "yellowbanner": "yellow_banner", + "ystandingbanner": "yellow_banner", + "ybanner": "yellow_banner", + "yellowstandingbanner": "yellow_banner", + "yellow_bed": { + "material": "YELLOW_BED" + }, + "yellowbed": "yellow_bed", + "ybed": "yellow_bed", + "yellow_carpet": { + "material": "YELLOW_CARPET" + }, + "yellowcarpet": "yellow_carpet", + "ycarpet": "yellow_carpet", + "yfloor": "yellow_carpet", + "yellowfloor": "yellow_carpet", + "yellow_concrete": { + "material": "YELLOW_CONCRETE" + }, + "yellowconcrete": "yellow_concrete", + "yconcrete": "yellow_concrete", + "yellow_concrete_powder": { + "material": "YELLOW_CONCRETE_POWDER" + }, + "yellowconcretepowder": "yellow_concrete_powder", + "yconcretepowder": "yellow_concrete_powder", + "yconcretesand": "yellow_concrete_powder", + "ycpowder": "yellow_concrete_powder", + "ycdust": "yellow_concrete_powder", + "ycp": "yellow_concrete_powder", + "yellowconcretesand": "yellow_concrete_powder", + "yellowcpowder": "yellow_concrete_powder", + "yellowcdust": "yellow_concrete_powder", + "yellowcp": "yellow_concrete_powder", + "yellow_glazed_terracotta": { + "material": "YELLOW_GLAZED_TERRACOTTA" + }, + "yellowglazedterracotta": "yellow_glazed_terracotta", + "yglazedtcota": "yellow_glazed_terracotta", + "yglazedterra": "yellow_glazed_terracotta", + "yglazedterracotta": "yellow_glazed_terracotta", + "yglazedterracota": "yellow_glazed_terracotta", + "yellowglazedtcota": "yellow_glazed_terracotta", + "yellowglazedterra": "yellow_glazed_terracotta", + "yellowglazedterracota": "yellow_glazed_terracotta", + "yellow_shulker_box": { + "material": "YELLOW_SHULKER_BOX" + }, + "yellowshulkerbox": "yellow_shulker_box", + "yshulkerbox": "yellow_shulker_box", + "ychest": "yellow_shulker_box", + "yellowchest": "yellow_shulker_box", + "yellow_stained_glass": { + "material": "YELLOW_STAINED_GLASS" + }, + "yellowstainedglass": "yellow_stained_glass", + "yglass": "yellow_stained_glass", + "ysglass": "yellow_stained_glass", + "ystainedglass": "yellow_stained_glass", + "yellowglass": "yellow_stained_glass", + "yellowsglass": "yellow_stained_glass", + "yellow_stained_glass_pane": { + "material": "YELLOW_STAINED_GLASS_PANE" + }, + "yellowstainedglasspane": "yellow_stained_glass_pane", + "yglasspane": "yellow_stained_glass_pane", + "ysglasspane": "yellow_stained_glass_pane", + "ystainedglasspane": "yellow_stained_glass_pane", + "ygpane": "yellow_stained_glass_pane", + "yellowglasspane": "yellow_stained_glass_pane", + "yellowsglasspane": "yellow_stained_glass_pane", + "yellowgpane": "yellow_stained_glass_pane", + "yellow_terracotta": { + "material": "YELLOW_TERRACOTTA" + }, + "yellowterracotta": "yellow_terracotta", + "yclay": "yellow_terracotta", + "ysclay": "yellow_terracotta", + "ystainedclay": "yellow_terracotta", + "yterra": "yellow_terracotta", + "ytcota": "yellow_terracotta", + "yterracota": "yellow_terracotta", + "yterracotta": "yellow_terracotta", + "yellowclay": "yellow_terracotta", + "yellowsclay": "yellow_terracotta", + "yellowstainedclay": "yellow_terracotta", + "yellowterra": "yellow_terracotta", + "yellowtcota": "yellow_terracotta", + "yellowterracota": "yellow_terracotta", + "yellow_wall_banner": { + "material": "YELLOW_WALL_BANNER", + "unspawnable": true + }, + "yellowwallbanner": "yellow_wall_banner", + "yellow_wool": { + "material": "YELLOW_WOOL" + }, + "yellowwool": "yellow_wool", + "ywool": "yellow_wool", + "ycloth": "yellow_wool", + "ycotton": "yellow_wool", + "yellowcloth": "yellow_wool", + "yellowcotton": "yellow_wool", + "zombie_head": { + "material": "ZOMBIE_HEAD" + }, + "zombiehead": "zombie_head", + "zombieskull": "zombie_head", + "headzombie": "zombie_head", + "stevezombie": "zombie_head", + "zombiemask": "zombie_head", + "zombieheadmask": "zombie_head", + "zombie_horse_spawn_egg": { + "material": "ZOMBIE_HORSE_SPAWN_EGG" + }, + "zombiehorsespawnegg": "zombie_horse_spawn_egg", + "zombiehorseegg": "zombie_horse_spawn_egg", + "eggzombiehorse": "zombie_horse_spawn_egg", + "spawneggzombiehorse": "zombie_horse_spawn_egg", + "zombiehorsespawn": "zombie_horse_spawn_egg", + "spawnzombiehorse": "zombie_horse_spawn_egg", + "zhorseegg": "zombie_horse_spawn_egg", + "eggzhorse": "zombie_horse_spawn_egg", + "zhorsespawnegg": "zombie_horse_spawn_egg", + "spawneggzhorse": "zombie_horse_spawn_egg", + "zhorsespawn": "zombie_horse_spawn_egg", + "spawnzhorse": "zombie_horse_spawn_egg", + "zombie_pigman_spawn_egg": { + "material": "ZOMBIE_PIGMAN_SPAWN_EGG" + }, + "zombiepigmanspawnegg": "zombie_pigman_spawn_egg", + "zombiepigmanegg": "zombie_pigman_spawn_egg", + "eggzombiepigman": "zombie_pigman_spawn_egg", + "spawneggzombiepigman": "zombie_pigman_spawn_egg", + "zombiepigmanspawn": "zombie_pigman_spawn_egg", + "spawnzombiepigman": "zombie_pigman_spawn_egg", + "zpigmanegg": "zombie_pigman_spawn_egg", + "eggzpigman": "zombie_pigman_spawn_egg", + "zpigmanspawnegg": "zombie_pigman_spawn_egg", + "spawneggzpigman": "zombie_pigman_spawn_egg", + "zpigmanspawn": "zombie_pigman_spawn_egg", + "spawnzpigman": "zombie_pigman_spawn_egg", + "pigmanegg": "zombie_pigman_spawn_egg", + "eggpigman": "zombie_pigman_spawn_egg", + "pigmanspawnegg": "zombie_pigman_spawn_egg", + "spawneggpigman": "zombie_pigman_spawn_egg", + "pigmanspawn": "zombie_pigman_spawn_egg", + "spawnpigman": "zombie_pigman_spawn_egg", + "zombiepmanegg": "zombie_pigman_spawn_egg", + "eggzombiepman": "zombie_pigman_spawn_egg", + "zombiepmanspawnegg": "zombie_pigman_spawn_egg", + "spawneggzombiepman": "zombie_pigman_spawn_egg", + "zombiepmanspawn": "zombie_pigman_spawn_egg", + "spawnzombiepman": "zombie_pigman_spawn_egg", + "zpmanegg": "zombie_pigman_spawn_egg", + "eggzpman": "zombie_pigman_spawn_egg", + "zpmanspawnegg": "zombie_pigman_spawn_egg", + "spawneggzpman": "zombie_pigman_spawn_egg", + "zpmanspawn": "zombie_pigman_spawn_egg", + "spawnzpman": "zombie_pigman_spawn_egg", + "zombiepigmegg": "zombie_pigman_spawn_egg", + "eggzombiepigm": "zombie_pigman_spawn_egg", + "zombiepigmspawnegg": "zombie_pigman_spawn_egg", + "spawneggzombiepigm": "zombie_pigman_spawn_egg", + "zombiepigmspawn": "zombie_pigman_spawn_egg", + "spawnzombiepigm": "zombie_pigman_spawn_egg", + "zpigmegg": "zombie_pigman_spawn_egg", + "eggzpigm": "zombie_pigman_spawn_egg", + "zpigmspawnegg": "zombie_pigman_spawn_egg", + "spawneggzpigm": "zombie_pigman_spawn_egg", + "zpigmspawn": "zombie_pigman_spawn_egg", + "spawnzpigm": "zombie_pigman_spawn_egg", + "zombiepigegg": "zombie_pigman_spawn_egg", + "eggzombiepig": "zombie_pigman_spawn_egg", + "zombiepigspawnegg": "zombie_pigman_spawn_egg", + "spawneggzombiepig": "zombie_pigman_spawn_egg", + "zombiepigspawn": "zombie_pigman_spawn_egg", + "spawnzombiepig": "zombie_pigman_spawn_egg", + "zpigegg": "zombie_pigman_spawn_egg", + "eggzpig": "zombie_pigman_spawn_egg", + "zpigspawnegg": "zombie_pigman_spawn_egg", + "spawneggzpig": "zombie_pigman_spawn_egg", + "zpigspawn": "zombie_pigman_spawn_egg", + "spawnzpig": "zombie_pigman_spawn_egg", + "zombiepmegg": "zombie_pigman_spawn_egg", + "eggzombiepm": "zombie_pigman_spawn_egg", + "zombiepmspawnegg": "zombie_pigman_spawn_egg", + "spawneggzombiepm": "zombie_pigman_spawn_egg", + "zombiepmspawn": "zombie_pigman_spawn_egg", + "spawnzombiepm": "zombie_pigman_spawn_egg", + "zombiepegg": "zombie_pigman_spawn_egg", + "eggzombiep": "zombie_pigman_spawn_egg", + "zombiepspawnegg": "zombie_pigman_spawn_egg", + "spawneggzombiep": "zombie_pigman_spawn_egg", + "zombiepspawn": "zombie_pigman_spawn_egg", + "spawnzombiep": "zombie_pigman_spawn_egg", + "zombie_spawn_egg": { + "material": "ZOMBIE_SPAWN_EGG" + }, + "zombiespawnegg": "zombie_spawn_egg", + "zombieegg": "zombie_spawn_egg", + "eggzombie": "zombie_spawn_egg", + "spawneggzombie": "zombie_spawn_egg", + "zombiespawn": "zombie_spawn_egg", + "spawnzombie": "zombie_spawn_egg", + "zombie_villager_spawn_egg": { + "material": "ZOMBIE_VILLAGER_SPAWN_EGG" + }, + "zombievillagerspawnegg": "zombie_villager_spawn_egg", + "zombievillageregg": "zombie_villager_spawn_egg", + "eggzombievillager": "zombie_villager_spawn_egg", + "spawneggzombievillager": "zombie_villager_spawn_egg", + "zombievillagerspawn": "zombie_villager_spawn_egg", + "spawnzombievillager": "zombie_villager_spawn_egg", + "zvillageregg": "zombie_villager_spawn_egg", + "eggzvillager": "zombie_villager_spawn_egg", + "zvillagerspawnegg": "zombie_villager_spawn_egg", + "spawneggzvillager": "zombie_villager_spawn_egg", + "zvillagerspawn": "zombie_villager_spawn_egg", + "spawnzvillager": "zombie_villager_spawn_egg", + "deadvillageregg": "zombie_villager_spawn_egg", + "eggdeadvillager": "zombie_villager_spawn_egg", + "deadvillagerspawnegg": "zombie_villager_spawn_egg", + "spawneggdeadvillager": "zombie_villager_spawn_egg", + "deadvillagerspawn": "zombie_villager_spawn_egg", + "spawndeadvillager": "zombie_villager_spawn_egg", + "dvillageregg": "zombie_villager_spawn_egg", + "eggdvillager": "zombie_villager_spawn_egg", + "dvillagerspawnegg": "zombie_villager_spawn_egg", + "spawneggdvillager": "zombie_villager_spawn_egg", + "dvillagerspawn": "zombie_villager_spawn_egg", + "spawndvillager": "zombie_villager_spawn_egg", + "zvillegg": "zombie_villager_spawn_egg", + "eggzvill": "zombie_villager_spawn_egg", + "zvillspawnegg": "zombie_villager_spawn_egg", + "spawneggzvill": "zombie_villager_spawn_egg", + "zvillspawn": "zombie_villager_spawn_egg", + "spawnzvill": "zombie_villager_spawn_egg", + "dvillegg": "zombie_villager_spawn_egg", + "eggdvill": "zombie_villager_spawn_egg", + "dvillspawnegg": "zombie_villager_spawn_egg", + "spawneggdvill": "zombie_villager_spawn_egg", + "dvillspawn": "zombie_villager_spawn_egg", + "spawndvill": "zombie_villager_spawn_egg", + "zombie_wall_head": { + "material": "ZOMBIE_WALL_HEAD", + "unspawnable": true + }, + "zombiewallhead": "zombie_wall_head", + "emptypotion": { + "material": "POTION", + "potionData": { + "vanillaType": "empty", + "type": "UNCRAFTABLE", + "upgraded": false, + "extended": false + } + }, + "emptypot": "emptypotion", + "potionofempty": "emptypotion", + "potofempty": "emptypotion", + "splashemptypotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "empty", + "type": "UNCRAFTABLE", + "upgraded": false, + "extended": false + } + }, + "splemptypotion": "splashemptypotion", + "emptysplashpotion": "splashemptypotion", + "splashemptypot": "splashemptypotion", + "splemptypot": "splashemptypotion", + "emptysplashpot": "splashemptypotion", + "lingerpotempty": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "empty", + "type": "UNCRAFTABLE", + "upgraded": false, + "extended": false + } + }, + "emptylingerpot": "lingerpotempty", + "aoepotionempty": "lingerpotempty", + "emptyaoepoiont": "lingerpotempty", + "aoepotempty": "lingerpotempty", + "emptyaoepot": "lingerpotempty", + "areapotionempty": "lingerpotempty", + "emptyareapotion": "lingerpotempty", + "areapotempty": "lingerpotempty", + "emptyareapot": "lingerpotempty", + "cloudpotionempty": "lingerpotempty", + "emptycloudpotion": "lingerpotempty", + "cloudpotempty": "lingerpotempty", + "emptycloudpot": "lingerpotempty", + "arrowempty": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "empty", + "type": "UNCRAFTABLE", + "upgraded": false, + "extended": false + } + }, + "emptyarrow": "arrowempty", + "waterpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "water", + "type": "WATER", + "upgraded": false, + "extended": false + } + }, + "waterpot": "waterpotion", + "potionofwater": "waterpotion", + "potofwater": "waterpotion", + "splashwaterpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "water", + "type": "WATER", + "upgraded": false, + "extended": false + } + }, + "splwaterpotion": "splashwaterpotion", + "watersplashpotion": "splashwaterpotion", + "splashwaterpot": "splashwaterpotion", + "splwaterpot": "splashwaterpotion", + "watersplashpot": "splashwaterpotion", + "lingerpotwater": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "water", + "type": "WATER", + "upgraded": false, + "extended": false + } + }, + "waterlingerpot": "lingerpotwater", + "aoepotionwater": "lingerpotwater", + "wateraoepoiont": "lingerpotwater", + "aoepotwater": "lingerpotwater", + "wateraoepot": "lingerpotwater", + "areapotionwater": "lingerpotwater", + "waterareapotion": "lingerpotwater", + "areapotwater": "lingerpotwater", + "waterareapot": "lingerpotwater", + "cloudpotionwater": "lingerpotwater", + "watercloudpotion": "lingerpotwater", + "cloudpotwater": "lingerpotwater", + "watercloudpot": "lingerpotwater", + "arrowwater": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "water", + "type": "WATER", + "upgraded": false, + "extended": false + } + }, + "waterarrow": "arrowwater", + "mundanepotion": { + "material": "POTION", + "potionData": { + "vanillaType": "mundane", + "type": "MUNDANE", + "upgraded": false, + "extended": false + } + }, + "mundanepot": "mundanepotion", + "potionofmundane": "mundanepotion", + "potofmundane": "mundanepotion", + "splashmundanepotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "mundane", + "type": "MUNDANE", + "upgraded": false, + "extended": false + } + }, + "splmundanepotion": "splashmundanepotion", + "mundanesplashpotion": "splashmundanepotion", + "splashmundanepot": "splashmundanepotion", + "splmundanepot": "splashmundanepotion", + "mundanesplashpot": "splashmundanepotion", + "lingerpotmundane": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "mundane", + "type": "MUNDANE", + "upgraded": false, + "extended": false + } + }, + "mundanelingerpot": "lingerpotmundane", + "aoepotionmundane": "lingerpotmundane", + "mundaneaoepoiont": "lingerpotmundane", + "aoepotmundane": "lingerpotmundane", + "mundaneaoepot": "lingerpotmundane", + "areapotionmundane": "lingerpotmundane", + "mundaneareapotion": "lingerpotmundane", + "areapotmundane": "lingerpotmundane", + "mundaneareapot": "lingerpotmundane", + "cloudpotionmundane": "lingerpotmundane", + "mundanecloudpotion": "lingerpotmundane", + "cloudpotmundane": "lingerpotmundane", + "mundanecloudpot": "lingerpotmundane", + "arrowmundane": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "mundane", + "type": "MUNDANE", + "upgraded": false, + "extended": false + } + }, + "mundanearrow": "arrowmundane", + "thickpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "thick", + "type": "THICK", + "upgraded": false, + "extended": false + } + }, + "thickpot": "thickpotion", + "potionofthick": "thickpotion", + "potofthick": "thickpotion", + "splashthickpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "thick", + "type": "THICK", + "upgraded": false, + "extended": false + } + }, + "splthickpotion": "splashthickpotion", + "thicksplashpotion": "splashthickpotion", + "splashthickpot": "splashthickpotion", + "splthickpot": "splashthickpotion", + "thicksplashpot": "splashthickpotion", + "lingerpotthick": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "thick", + "type": "THICK", + "upgraded": false, + "extended": false + } + }, + "thicklingerpot": "lingerpotthick", + "aoepotionthick": "lingerpotthick", + "thickaoepoiont": "lingerpotthick", + "aoepotthick": "lingerpotthick", + "thickaoepot": "lingerpotthick", + "areapotionthick": "lingerpotthick", + "thickareapotion": "lingerpotthick", + "areapotthick": "lingerpotthick", + "thickareapot": "lingerpotthick", + "cloudpotionthick": "lingerpotthick", + "thickcloudpotion": "lingerpotthick", + "cloudpotthick": "lingerpotthick", + "thickcloudpot": "lingerpotthick", + "arrowthick": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "thick", + "type": "THICK", + "upgraded": false, + "extended": false + } + }, + "thickarrow": "arrowthick", + "awkwardpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "awkward", + "type": "AWKWARD", + "upgraded": false, + "extended": false + } + }, + "awkwardpot": "awkwardpotion", + "potionofawkward": "awkwardpotion", + "potofawkward": "awkwardpotion", + "splashawkwardpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "awkward", + "type": "AWKWARD", + "upgraded": false, + "extended": false + } + }, + "splawkwardpotion": "splashawkwardpotion", + "awkwardsplashpotion": "splashawkwardpotion", + "splashawkwardpot": "splashawkwardpotion", + "splawkwardpot": "splashawkwardpotion", + "awkwardsplashpot": "splashawkwardpotion", + "lingerpotawkward": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "awkward", + "type": "AWKWARD", + "upgraded": false, + "extended": false + } + }, + "awkwardlingerpot": "lingerpotawkward", + "aoepotionawkward": "lingerpotawkward", + "awkwardaoepoiont": "lingerpotawkward", + "aoepotawkward": "lingerpotawkward", + "awkwardaoepot": "lingerpotawkward", + "areapotionawkward": "lingerpotawkward", + "awkwardareapotion": "lingerpotawkward", + "areapotawkward": "lingerpotawkward", + "awkwardareapot": "lingerpotawkward", + "cloudpotionawkward": "lingerpotawkward", + "awkwardcloudpotion": "lingerpotawkward", + "cloudpotawkward": "lingerpotawkward", + "awkwardcloudpot": "lingerpotawkward", + "arrowawkward": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "awkward", + "type": "AWKWARD", + "upgraded": false, + "extended": false + } + }, + "awkwardarrow": "arrowawkward", + "nightvisionpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": false + } + }, + "nvpotion": "nightvisionpotion", + "nvisionpotion": "nightvisionpotion", + "nightvpotion": "nightvisionpotion", + "darkvispotion": "nightvisionpotion", + "dvisionpotion": "nightvisionpotion", + "darkvpotion": "nightvisionpotion", + "nightvisionpot": "nightvisionpotion", + "nvpot": "nightvisionpotion", + "nvisionpot": "nightvisionpotion", + "nightvpot": "nightvisionpotion", + "darkvispot": "nightvisionpotion", + "dvisionpot": "nightvisionpotion", + "darkvpot": "nightvisionpotion", + "potionofnightvision": "nightvisionpotion", + "potionofnv": "nightvisionpotion", + "potionofnvision": "nightvisionpotion", + "potionofnightv": "nightvisionpotion", + "potionofdarkvis": "nightvisionpotion", + "potionofdvision": "nightvisionpotion", + "potionofdarkv": "nightvisionpotion", + "potofnightvision": "nightvisionpotion", + "potofnv": "nightvisionpotion", + "potofnvision": "nightvisionpotion", + "potofnightv": "nightvisionpotion", + "potofdarkvis": "nightvisionpotion", + "potofdvision": "nightvisionpotion", + "potofdarkv": "nightvisionpotion", + "splashnightvisionpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": false + } + }, + "splashnvpotion": "splashnightvisionpotion", + "splashnvisionpotion": "splashnightvisionpotion", + "splashnightvpotion": "splashnightvisionpotion", + "splashdarkvispotion": "splashnightvisionpotion", + "splashdvisionpotion": "splashnightvisionpotion", + "splashdarkvpotion": "splashnightvisionpotion", + "splnightvisionpotion": "splashnightvisionpotion", + "splnvpotion": "splashnightvisionpotion", + "splnvisionpotion": "splashnightvisionpotion", + "splnightvpotion": "splashnightvisionpotion", + "spldarkvispotion": "splashnightvisionpotion", + "spldvisionpotion": "splashnightvisionpotion", + "spldarkvpotion": "splashnightvisionpotion", + "nightvisionsplashpotion": "splashnightvisionpotion", + "nvsplashpotion": "splashnightvisionpotion", + "nvisionsplashpotion": "splashnightvisionpotion", + "nightvsplashpotion": "splashnightvisionpotion", + "darkvissplashpotion": "splashnightvisionpotion", + "dvisionsplashpotion": "splashnightvisionpotion", + "darkvsplashpotion": "splashnightvisionpotion", + "splashnightvisionpot": "splashnightvisionpotion", + "splashnvpot": "splashnightvisionpotion", + "splashnvisionpot": "splashnightvisionpotion", + "splashnightvpot": "splashnightvisionpotion", + "splashdarkvispot": "splashnightvisionpotion", + "splashdvisionpot": "splashnightvisionpotion", + "splashdarkvpot": "splashnightvisionpotion", + "splnightvisionpot": "splashnightvisionpotion", + "splnvpot": "splashnightvisionpotion", + "splnvisionpot": "splashnightvisionpotion", + "splnightvpot": "splashnightvisionpotion", + "spldarkvispot": "splashnightvisionpotion", + "spldvisionpot": "splashnightvisionpotion", + "spldarkvpot": "splashnightvisionpotion", + "nightvisionsplashpot": "splashnightvisionpotion", + "nvsplashpot": "splashnightvisionpotion", + "nvisionsplashpot": "splashnightvisionpotion", + "nightvsplashpot": "splashnightvisionpotion", + "darkvissplashpot": "splashnightvisionpotion", + "dvisionsplashpot": "splashnightvisionpotion", + "darkvsplashpot": "splashnightvisionpotion", + "lingerpotnightvision": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": false + } + }, + "lingerpotnv": "lingerpotnightvision", + "lingerpotnvision": "lingerpotnightvision", + "lingerpotnightv": "lingerpotnightvision", + "lingerpotdarkvis": "lingerpotnightvision", + "lingerpotdvision": "lingerpotnightvision", + "lingerpotdarkv": "lingerpotnightvision", + "nightvisionlingerpot": "lingerpotnightvision", + "nvlingerpot": "lingerpotnightvision", + "nvisionlingerpot": "lingerpotnightvision", + "nightvlingerpot": "lingerpotnightvision", + "darkvislingerpot": "lingerpotnightvision", + "dvisionlingerpot": "lingerpotnightvision", + "darkvlingerpot": "lingerpotnightvision", + "aoepotionnightvision": "lingerpotnightvision", + "aoepotionnv": "lingerpotnightvision", + "aoepotionnvision": "lingerpotnightvision", + "aoepotionnightv": "lingerpotnightvision", + "aoepotiondarkvis": "lingerpotnightvision", + "aoepotiondvision": "lingerpotnightvision", + "aoepotiondarkv": "lingerpotnightvision", + "nightvisionaoepoiont": "lingerpotnightvision", + "nvaoepoiont": "lingerpotnightvision", + "nvisionaoepoiont": "lingerpotnightvision", + "nightvaoepoiont": "lingerpotnightvision", + "darkvisaoepoiont": "lingerpotnightvision", + "dvisionaoepoiont": "lingerpotnightvision", + "darkvaoepoiont": "lingerpotnightvision", + "aoepotnightvision": "lingerpotnightvision", + "aoepotnv": "lingerpotnightvision", + "aoepotnvision": "lingerpotnightvision", + "aoepotnightv": "lingerpotnightvision", + "aoepotdarkvis": "lingerpotnightvision", + "aoepotdvision": "lingerpotnightvision", + "aoepotdarkv": "lingerpotnightvision", + "nightvisionaoepot": "lingerpotnightvision", + "nvaoepot": "lingerpotnightvision", + "nvisionaoepot": "lingerpotnightvision", + "nightvaoepot": "lingerpotnightvision", + "darkvisaoepot": "lingerpotnightvision", + "dvisionaoepot": "lingerpotnightvision", + "darkvaoepot": "lingerpotnightvision", + "areapotionnightvision": "lingerpotnightvision", + "areapotionnv": "lingerpotnightvision", + "areapotionnvision": "lingerpotnightvision", + "areapotionnightv": "lingerpotnightvision", + "areapotiondarkvis": "lingerpotnightvision", + "areapotiondvision": "lingerpotnightvision", + "areapotiondarkv": "lingerpotnightvision", + "nightvisionareapotion": "lingerpotnightvision", + "nvareapotion": "lingerpotnightvision", + "nvisionareapotion": "lingerpotnightvision", + "nightvareapotion": "lingerpotnightvision", + "darkvisareapotion": "lingerpotnightvision", + "dvisionareapotion": "lingerpotnightvision", + "darkvareapotion": "lingerpotnightvision", + "areapotnightvision": "lingerpotnightvision", + "areapotnv": "lingerpotnightvision", + "areapotnvision": "lingerpotnightvision", + "areapotnightv": "lingerpotnightvision", + "areapotdarkvis": "lingerpotnightvision", + "areapotdvision": "lingerpotnightvision", + "areapotdarkv": "lingerpotnightvision", + "nightvisionareapot": "lingerpotnightvision", + "nvareapot": "lingerpotnightvision", + "nvisionareapot": "lingerpotnightvision", + "nightvareapot": "lingerpotnightvision", + "darkvisareapot": "lingerpotnightvision", + "dvisionareapot": "lingerpotnightvision", + "darkvareapot": "lingerpotnightvision", + "cloudpotionnightvision": "lingerpotnightvision", + "cloudpotionnv": "lingerpotnightvision", + "cloudpotionnvision": "lingerpotnightvision", + "cloudpotionnightv": "lingerpotnightvision", + "cloudpotiondarkvis": "lingerpotnightvision", + "cloudpotiondvision": "lingerpotnightvision", + "cloudpotiondarkv": "lingerpotnightvision", + "nightvisioncloudpotion": "lingerpotnightvision", + "nvcloudpotion": "lingerpotnightvision", + "nvisioncloudpotion": "lingerpotnightvision", + "nightvcloudpotion": "lingerpotnightvision", + "darkviscloudpotion": "lingerpotnightvision", + "dvisioncloudpotion": "lingerpotnightvision", + "darkvcloudpotion": "lingerpotnightvision", + "cloudpotnightvision": "lingerpotnightvision", + "cloudpotnv": "lingerpotnightvision", + "cloudpotnvision": "lingerpotnightvision", + "cloudpotnightv": "lingerpotnightvision", + "cloudpotdarkvis": "lingerpotnightvision", + "cloudpotdvision": "lingerpotnightvision", + "cloudpotdarkv": "lingerpotnightvision", + "nightvisioncloudpot": "lingerpotnightvision", + "nvcloudpot": "lingerpotnightvision", + "nvisioncloudpot": "lingerpotnightvision", + "nightvcloudpot": "lingerpotnightvision", + "darkviscloudpot": "lingerpotnightvision", + "dvisioncloudpot": "lingerpotnightvision", + "darkvcloudpot": "lingerpotnightvision", + "arrownightvision": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": false + } + }, + "arrownv": "arrownightvision", + "arrownvision": "arrownightvision", + "arrownightv": "arrownightvision", + "arrowdarkvis": "arrownightvision", + "arrowdvision": "arrownightvision", + "arrowdarkv": "arrownightvision", + "nightvisionarrow": "arrownightvision", + "nvarrow": "arrownightvision", + "nvisionarrow": "arrownightvision", + "nightvarrow": "arrownightvision", + "darkvisarrow": "arrownightvision", + "dvisionarrow": "arrownightvision", + "darkvarrow": "arrownightvision", + "nightvision2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": true + } + }, + "nightvisionlongpotion": "nightvision2potion", + "nightvisionextendedpotion": "nightvision2potion", + "nightvisionexpotion": "nightvision2potion", + "nightvisionlevel2potion": "nightvision2potion", + "nv2potion": "nightvision2potion", + "nvlongpotion": "nightvision2potion", + "nvextendedpotion": "nightvision2potion", + "nvexpotion": "nightvision2potion", + "nvlevel2potion": "nightvision2potion", + "nvision2potion": "nightvision2potion", + "nvisionlongpotion": "nightvision2potion", + "nvisionextendedpotion": "nightvision2potion", + "nvisionexpotion": "nightvision2potion", + "nvisionlevel2potion": "nightvision2potion", + "nightv2potion": "nightvision2potion", + "nightvlongpotion": "nightvision2potion", + "nightvextendedpotion": "nightvision2potion", + "nightvexpotion": "nightvision2potion", + "nightvlevel2potion": "nightvision2potion", + "darkvis2potion": "nightvision2potion", + "darkvislongpotion": "nightvision2potion", + "darkvisextendedpotion": "nightvision2potion", + "darkvisexpotion": "nightvision2potion", + "darkvislevel2potion": "nightvision2potion", + "dvision2potion": "nightvision2potion", + "dvisionlongpotion": "nightvision2potion", + "dvisionextendedpotion": "nightvision2potion", + "dvisionexpotion": "nightvision2potion", + "dvisionlevel2potion": "nightvision2potion", + "darkv2potion": "nightvision2potion", + "darkvlongpotion": "nightvision2potion", + "darkvextendedpotion": "nightvision2potion", + "darkvexpotion": "nightvision2potion", + "darkvlevel2potion": "nightvision2potion", + "nightvision2pot": "nightvision2potion", + "nightvisionlongpot": "nightvision2potion", + "nightvisionextendedpot": "nightvision2potion", + "nightvisionexpot": "nightvision2potion", + "nightvisionlevel2pot": "nightvision2potion", + "nv2pot": "nightvision2potion", + "nvlongpot": "nightvision2potion", + "nvextendedpot": "nightvision2potion", + "nvexpot": "nightvision2potion", + "nvlevel2pot": "nightvision2potion", + "nvision2pot": "nightvision2potion", + "nvisionlongpot": "nightvision2potion", + "nvisionextendedpot": "nightvision2potion", + "nvisionexpot": "nightvision2potion", + "nvisionlevel2pot": "nightvision2potion", + "nightv2pot": "nightvision2potion", + "nightvlongpot": "nightvision2potion", + "nightvextendedpot": "nightvision2potion", + "nightvexpot": "nightvision2potion", + "nightvlevel2pot": "nightvision2potion", + "darkvis2pot": "nightvision2potion", + "darkvislongpot": "nightvision2potion", + "darkvisextendedpot": "nightvision2potion", + "darkvisexpot": "nightvision2potion", + "darkvislevel2pot": "nightvision2potion", + "dvision2pot": "nightvision2potion", + "dvisionlongpot": "nightvision2potion", + "dvisionextendedpot": "nightvision2potion", + "dvisionexpot": "nightvision2potion", + "dvisionlevel2pot": "nightvision2potion", + "darkv2pot": "nightvision2potion", + "darkvlongpot": "nightvision2potion", + "darkvextendedpot": "nightvision2potion", + "darkvexpot": "nightvision2potion", + "darkvlevel2pot": "nightvision2potion", + "potionofnightvision2": "nightvision2potion", + "potionofnightvisionlong": "nightvision2potion", + "potionofnightvisionextended": "nightvision2potion", + "potionofnightvisionex": "nightvision2potion", + "potionofnightvisionlevel2": "nightvision2potion", + "potionofnv2": "nightvision2potion", + "potionofnvlong": "nightvision2potion", + "potionofnvextended": "nightvision2potion", + "potionofnvex": "nightvision2potion", + "potionofnvlevel2": "nightvision2potion", + "potionofnvision2": "nightvision2potion", + "potionofnvisionlong": "nightvision2potion", + "potionofnvisionextended": "nightvision2potion", + "potionofnvisionex": "nightvision2potion", + "potionofnvisionlevel2": "nightvision2potion", + "potionofnightv2": "nightvision2potion", + "potionofnightvlong": "nightvision2potion", + "potionofnightvextended": "nightvision2potion", + "potionofnightvex": "nightvision2potion", + "potionofnightvlevel2": "nightvision2potion", + "potionofdarkvis2": "nightvision2potion", + "potionofdarkvislong": "nightvision2potion", + "potionofdarkvisextended": "nightvision2potion", + "potionofdarkvisex": "nightvision2potion", + "potionofdarkvislevel2": "nightvision2potion", + "potionofdvision2": "nightvision2potion", + "potionofdvisionlong": "nightvision2potion", + "potionofdvisionextended": "nightvision2potion", + "potionofdvisionex": "nightvision2potion", + "potionofdvisionlevel2": "nightvision2potion", + "potionofdarkv2": "nightvision2potion", + "potionofdarkvlong": "nightvision2potion", + "potionofdarkvextended": "nightvision2potion", + "potionofdarkvex": "nightvision2potion", + "potionofdarkvlevel2": "nightvision2potion", + "potofnightvision2": "nightvision2potion", + "potofnightvisionlong": "nightvision2potion", + "potofnightvisionextended": "nightvision2potion", + "potofnightvisionex": "nightvision2potion", + "potofnightvisionlevel2": "nightvision2potion", + "potofnv2": "nightvision2potion", + "potofnvlong": "nightvision2potion", + "potofnvextended": "nightvision2potion", + "potofnvex": "nightvision2potion", + "potofnvlevel2": "nightvision2potion", + "potofnvision2": "nightvision2potion", + "potofnvisionlong": "nightvision2potion", + "potofnvisionextended": "nightvision2potion", + "potofnvisionex": "nightvision2potion", + "potofnvisionlevel2": "nightvision2potion", + "potofnightv2": "nightvision2potion", + "potofnightvlong": "nightvision2potion", + "potofnightvextended": "nightvision2potion", + "potofnightvex": "nightvision2potion", + "potofnightvlevel2": "nightvision2potion", + "potofdarkvis2": "nightvision2potion", + "potofdarkvislong": "nightvision2potion", + "potofdarkvisextended": "nightvision2potion", + "potofdarkvisex": "nightvision2potion", + "potofdarkvislevel2": "nightvision2potion", + "potofdvision2": "nightvision2potion", + "potofdvisionlong": "nightvision2potion", + "potofdvisionextended": "nightvision2potion", + "potofdvisionex": "nightvision2potion", + "potofdvisionlevel2": "nightvision2potion", + "potofdarkv2": "nightvision2potion", + "potofdarkvlong": "nightvision2potion", + "potofdarkvextended": "nightvision2potion", + "potofdarkvex": "nightvision2potion", + "potofdarkvlevel2": "nightvision2potion", + "splashnightvision2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": true + } + }, + "splashnightvisionlongpotion": "splashnightvision2potion", + "splashnightvisionextendedpotion": "splashnightvision2potion", + "splashnightvisionexpotion": "splashnightvision2potion", + "splashnightvisionlevel2potion": "splashnightvision2potion", + "splashnv2potion": "splashnightvision2potion", + "splashnvlongpotion": "splashnightvision2potion", + "splashnvextendedpotion": "splashnightvision2potion", + "splashnvexpotion": "splashnightvision2potion", + "splashnvlevel2potion": "splashnightvision2potion", + "splashnvision2potion": "splashnightvision2potion", + "splashnvisionlongpotion": "splashnightvision2potion", + "splashnvisionextendedpotion": "splashnightvision2potion", + "splashnvisionexpotion": "splashnightvision2potion", + "splashnvisionlevel2potion": "splashnightvision2potion", + "splashnightv2potion": "splashnightvision2potion", + "splashnightvlongpotion": "splashnightvision2potion", + "splashnightvextendedpotion": "splashnightvision2potion", + "splashnightvexpotion": "splashnightvision2potion", + "splashnightvlevel2potion": "splashnightvision2potion", + "splashdarkvis2potion": "splashnightvision2potion", + "splashdarkvislongpotion": "splashnightvision2potion", + "splashdarkvisextendedpotion": "splashnightvision2potion", + "splashdarkvisexpotion": "splashnightvision2potion", + "splashdarkvislevel2potion": "splashnightvision2potion", + "splashdvision2potion": "splashnightvision2potion", + "splashdvisionlongpotion": "splashnightvision2potion", + "splashdvisionextendedpotion": "splashnightvision2potion", + "splashdvisionexpotion": "splashnightvision2potion", + "splashdvisionlevel2potion": "splashnightvision2potion", + "splashdarkv2potion": "splashnightvision2potion", + "splashdarkvlongpotion": "splashnightvision2potion", + "splashdarkvextendedpotion": "splashnightvision2potion", + "splashdarkvexpotion": "splashnightvision2potion", + "splashdarkvlevel2potion": "splashnightvision2potion", + "splnightvision2potion": "splashnightvision2potion", + "splnightvisionlongpotion": "splashnightvision2potion", + "splnightvisionextendedpotion": "splashnightvision2potion", + "splnightvisionexpotion": "splashnightvision2potion", + "splnightvisionlevel2potion": "splashnightvision2potion", + "splnv2potion": "splashnightvision2potion", + "splnvlongpotion": "splashnightvision2potion", + "splnvextendedpotion": "splashnightvision2potion", + "splnvexpotion": "splashnightvision2potion", + "splnvlevel2potion": "splashnightvision2potion", + "splnvision2potion": "splashnightvision2potion", + "splnvisionlongpotion": "splashnightvision2potion", + "splnvisionextendedpotion": "splashnightvision2potion", + "splnvisionexpotion": "splashnightvision2potion", + "splnvisionlevel2potion": "splashnightvision2potion", + "splnightv2potion": "splashnightvision2potion", + "splnightvlongpotion": "splashnightvision2potion", + "splnightvextendedpotion": "splashnightvision2potion", + "splnightvexpotion": "splashnightvision2potion", + "splnightvlevel2potion": "splashnightvision2potion", + "spldarkvis2potion": "splashnightvision2potion", + "spldarkvislongpotion": "splashnightvision2potion", + "spldarkvisextendedpotion": "splashnightvision2potion", + "spldarkvisexpotion": "splashnightvision2potion", + "spldarkvislevel2potion": "splashnightvision2potion", + "spldvision2potion": "splashnightvision2potion", + "spldvisionlongpotion": "splashnightvision2potion", + "spldvisionextendedpotion": "splashnightvision2potion", + "spldvisionexpotion": "splashnightvision2potion", + "spldvisionlevel2potion": "splashnightvision2potion", + "spldarkv2potion": "splashnightvision2potion", + "spldarkvlongpotion": "splashnightvision2potion", + "spldarkvextendedpotion": "splashnightvision2potion", + "spldarkvexpotion": "splashnightvision2potion", + "spldarkvlevel2potion": "splashnightvision2potion", + "nightvision2splashpotion": "splashnightvision2potion", + "nightvisionlongsplashpotion": "splashnightvision2potion", + "nightvisionextendedsplashpotion": "splashnightvision2potion", + "nightvisionexsplashpotion": "splashnightvision2potion", + "nightvisionlevel2splashpotion": "splashnightvision2potion", + "nv2splashpotion": "splashnightvision2potion", + "nvlongsplashpotion": "splashnightvision2potion", + "nvextendedsplashpotion": "splashnightvision2potion", + "nvexsplashpotion": "splashnightvision2potion", + "nvlevel2splashpotion": "splashnightvision2potion", + "nvision2splashpotion": "splashnightvision2potion", + "nvisionlongsplashpotion": "splashnightvision2potion", + "nvisionextendedsplashpotion": "splashnightvision2potion", + "nvisionexsplashpotion": "splashnightvision2potion", + "nvisionlevel2splashpotion": "splashnightvision2potion", + "nightv2splashpotion": "splashnightvision2potion", + "nightvlongsplashpotion": "splashnightvision2potion", + "nightvextendedsplashpotion": "splashnightvision2potion", + "nightvexsplashpotion": "splashnightvision2potion", + "nightvlevel2splashpotion": "splashnightvision2potion", + "darkvis2splashpotion": "splashnightvision2potion", + "darkvislongsplashpotion": "splashnightvision2potion", + "darkvisextendedsplashpotion": "splashnightvision2potion", + "darkvisexsplashpotion": "splashnightvision2potion", + "darkvislevel2splashpotion": "splashnightvision2potion", + "dvision2splashpotion": "splashnightvision2potion", + "dvisionlongsplashpotion": "splashnightvision2potion", + "dvisionextendedsplashpotion": "splashnightvision2potion", + "dvisionexsplashpotion": "splashnightvision2potion", + "dvisionlevel2splashpotion": "splashnightvision2potion", + "darkv2splashpotion": "splashnightvision2potion", + "darkvlongsplashpotion": "splashnightvision2potion", + "darkvextendedsplashpotion": "splashnightvision2potion", + "darkvexsplashpotion": "splashnightvision2potion", + "darkvlevel2splashpotion": "splashnightvision2potion", + "splashnightvision2pot": "splashnightvision2potion", + "splashnightvisionlongpot": "splashnightvision2potion", + "splashnightvisionextendedpot": "splashnightvision2potion", + "splashnightvisionexpot": "splashnightvision2potion", + "splashnightvisionlevel2pot": "splashnightvision2potion", + "splashnv2pot": "splashnightvision2potion", + "splashnvlongpot": "splashnightvision2potion", + "splashnvextendedpot": "splashnightvision2potion", + "splashnvexpot": "splashnightvision2potion", + "splashnvlevel2pot": "splashnightvision2potion", + "splashnvision2pot": "splashnightvision2potion", + "splashnvisionlongpot": "splashnightvision2potion", + "splashnvisionextendedpot": "splashnightvision2potion", + "splashnvisionexpot": "splashnightvision2potion", + "splashnvisionlevel2pot": "splashnightvision2potion", + "splashnightv2pot": "splashnightvision2potion", + "splashnightvlongpot": "splashnightvision2potion", + "splashnightvextendedpot": "splashnightvision2potion", + "splashnightvexpot": "splashnightvision2potion", + "splashnightvlevel2pot": "splashnightvision2potion", + "splashdarkvis2pot": "splashnightvision2potion", + "splashdarkvislongpot": "splashnightvision2potion", + "splashdarkvisextendedpot": "splashnightvision2potion", + "splashdarkvisexpot": "splashnightvision2potion", + "splashdarkvislevel2pot": "splashnightvision2potion", + "splashdvision2pot": "splashnightvision2potion", + "splashdvisionlongpot": "splashnightvision2potion", + "splashdvisionextendedpot": "splashnightvision2potion", + "splashdvisionexpot": "splashnightvision2potion", + "splashdvisionlevel2pot": "splashnightvision2potion", + "splashdarkv2pot": "splashnightvision2potion", + "splashdarkvlongpot": "splashnightvision2potion", + "splashdarkvextendedpot": "splashnightvision2potion", + "splashdarkvexpot": "splashnightvision2potion", + "splashdarkvlevel2pot": "splashnightvision2potion", + "splnightvision2pot": "splashnightvision2potion", + "splnightvisionlongpot": "splashnightvision2potion", + "splnightvisionextendedpot": "splashnightvision2potion", + "splnightvisionexpot": "splashnightvision2potion", + "splnightvisionlevel2pot": "splashnightvision2potion", + "splnv2pot": "splashnightvision2potion", + "splnvlongpot": "splashnightvision2potion", + "splnvextendedpot": "splashnightvision2potion", + "splnvexpot": "splashnightvision2potion", + "splnvlevel2pot": "splashnightvision2potion", + "splnvision2pot": "splashnightvision2potion", + "splnvisionlongpot": "splashnightvision2potion", + "splnvisionextendedpot": "splashnightvision2potion", + "splnvisionexpot": "splashnightvision2potion", + "splnvisionlevel2pot": "splashnightvision2potion", + "splnightv2pot": "splashnightvision2potion", + "splnightvlongpot": "splashnightvision2potion", + "splnightvextendedpot": "splashnightvision2potion", + "splnightvexpot": "splashnightvision2potion", + "splnightvlevel2pot": "splashnightvision2potion", + "spldarkvis2pot": "splashnightvision2potion", + "spldarkvislongpot": "splashnightvision2potion", + "spldarkvisextendedpot": "splashnightvision2potion", + "spldarkvisexpot": "splashnightvision2potion", + "spldarkvislevel2pot": "splashnightvision2potion", + "spldvision2pot": "splashnightvision2potion", + "spldvisionlongpot": "splashnightvision2potion", + "spldvisionextendedpot": "splashnightvision2potion", + "spldvisionexpot": "splashnightvision2potion", + "spldvisionlevel2pot": "splashnightvision2potion", + "spldarkv2pot": "splashnightvision2potion", + "spldarkvlongpot": "splashnightvision2potion", + "spldarkvextendedpot": "splashnightvision2potion", + "spldarkvexpot": "splashnightvision2potion", + "spldarkvlevel2pot": "splashnightvision2potion", + "nightvision2splashpot": "splashnightvision2potion", + "nightvisionlongsplashpot": "splashnightvision2potion", + "nightvisionextendedsplashpot": "splashnightvision2potion", + "nightvisionexsplashpot": "splashnightvision2potion", + "nightvisionlevel2splashpot": "splashnightvision2potion", + "nv2splashpot": "splashnightvision2potion", + "nvlongsplashpot": "splashnightvision2potion", + "nvextendedsplashpot": "splashnightvision2potion", + "nvexsplashpot": "splashnightvision2potion", + "nvlevel2splashpot": "splashnightvision2potion", + "nvision2splashpot": "splashnightvision2potion", + "nvisionlongsplashpot": "splashnightvision2potion", + "nvisionextendedsplashpot": "splashnightvision2potion", + "nvisionexsplashpot": "splashnightvision2potion", + "nvisionlevel2splashpot": "splashnightvision2potion", + "nightv2splashpot": "splashnightvision2potion", + "nightvlongsplashpot": "splashnightvision2potion", + "nightvextendedsplashpot": "splashnightvision2potion", + "nightvexsplashpot": "splashnightvision2potion", + "nightvlevel2splashpot": "splashnightvision2potion", + "darkvis2splashpot": "splashnightvision2potion", + "darkvislongsplashpot": "splashnightvision2potion", + "darkvisextendedsplashpot": "splashnightvision2potion", + "darkvisexsplashpot": "splashnightvision2potion", + "darkvislevel2splashpot": "splashnightvision2potion", + "dvision2splashpot": "splashnightvision2potion", + "dvisionlongsplashpot": "splashnightvision2potion", + "dvisionextendedsplashpot": "splashnightvision2potion", + "dvisionexsplashpot": "splashnightvision2potion", + "dvisionlevel2splashpot": "splashnightvision2potion", + "darkv2splashpot": "splashnightvision2potion", + "darkvlongsplashpot": "splashnightvision2potion", + "darkvextendedsplashpot": "splashnightvision2potion", + "darkvexsplashpot": "splashnightvision2potion", + "darkvlevel2splashpot": "splashnightvision2potion", + "lingerpotnightvision2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": true + } + }, + "lingerpotnightvisionlong": "lingerpotnightvision2", + "lingerpotnightvisionextended": "lingerpotnightvision2", + "lingerpotnightvisionex": "lingerpotnightvision2", + "lingerpotnightvisionlevel2": "lingerpotnightvision2", + "lingerpotnv2": "lingerpotnightvision2", + "lingerpotnvlong": "lingerpotnightvision2", + "lingerpotnvextended": "lingerpotnightvision2", + "lingerpotnvex": "lingerpotnightvision2", + "lingerpotnvlevel2": "lingerpotnightvision2", + "lingerpotnvision2": "lingerpotnightvision2", + "lingerpotnvisionlong": "lingerpotnightvision2", + "lingerpotnvisionextended": "lingerpotnightvision2", + "lingerpotnvisionex": "lingerpotnightvision2", + "lingerpotnvisionlevel2": "lingerpotnightvision2", + "lingerpotnightv2": "lingerpotnightvision2", + "lingerpotnightvlong": "lingerpotnightvision2", + "lingerpotnightvextended": "lingerpotnightvision2", + "lingerpotnightvex": "lingerpotnightvision2", + "lingerpotnightvlevel2": "lingerpotnightvision2", + "lingerpotdarkvis2": "lingerpotnightvision2", + "lingerpotdarkvislong": "lingerpotnightvision2", + "lingerpotdarkvisextended": "lingerpotnightvision2", + "lingerpotdarkvisex": "lingerpotnightvision2", + "lingerpotdarkvislevel2": "lingerpotnightvision2", + "lingerpotdvision2": "lingerpotnightvision2", + "lingerpotdvisionlong": "lingerpotnightvision2", + "lingerpotdvisionextended": "lingerpotnightvision2", + "lingerpotdvisionex": "lingerpotnightvision2", + "lingerpotdvisionlevel2": "lingerpotnightvision2", + "lingerpotdarkv2": "lingerpotnightvision2", + "lingerpotdarkvlong": "lingerpotnightvision2", + "lingerpotdarkvextended": "lingerpotnightvision2", + "lingerpotdarkvex": "lingerpotnightvision2", + "lingerpotdarkvlevel2": "lingerpotnightvision2", + "nightvisionlingerpot2": "lingerpotnightvision2", + "nightvisionlingerpotlong": "lingerpotnightvision2", + "nightvisionlingerpotextended": "lingerpotnightvision2", + "nightvisionlingerpotex": "lingerpotnightvision2", + "nightvisionlingerpotlevel2": "lingerpotnightvision2", + "nvlingerpot2": "lingerpotnightvision2", + "nvlingerpotlong": "lingerpotnightvision2", + "nvlingerpotextended": "lingerpotnightvision2", + "nvlingerpotex": "lingerpotnightvision2", + "nvlingerpotlevel2": "lingerpotnightvision2", + "nvisionlingerpot2": "lingerpotnightvision2", + "nvisionlingerpotlong": "lingerpotnightvision2", + "nvisionlingerpotextended": "lingerpotnightvision2", + "nvisionlingerpotex": "lingerpotnightvision2", + "nvisionlingerpotlevel2": "lingerpotnightvision2", + "nightvlingerpot2": "lingerpotnightvision2", + "nightvlingerpotlong": "lingerpotnightvision2", + "nightvlingerpotextended": "lingerpotnightvision2", + "nightvlingerpotex": "lingerpotnightvision2", + "nightvlingerpotlevel2": "lingerpotnightvision2", + "darkvislingerpot2": "lingerpotnightvision2", + "darkvislingerpotlong": "lingerpotnightvision2", + "darkvislingerpotextended": "lingerpotnightvision2", + "darkvislingerpotex": "lingerpotnightvision2", + "darkvislingerpotlevel2": "lingerpotnightvision2", + "dvisionlingerpot2": "lingerpotnightvision2", + "dvisionlingerpotlong": "lingerpotnightvision2", + "dvisionlingerpotextended": "lingerpotnightvision2", + "dvisionlingerpotex": "lingerpotnightvision2", + "dvisionlingerpotlevel2": "lingerpotnightvision2", + "darkvlingerpot2": "lingerpotnightvision2", + "darkvlingerpotlong": "lingerpotnightvision2", + "darkvlingerpotextended": "lingerpotnightvision2", + "darkvlingerpotex": "lingerpotnightvision2", + "darkvlingerpotlevel2": "lingerpotnightvision2", + "aoepotionnightvision2": "lingerpotnightvision2", + "aoepotionnightvisionlong": "lingerpotnightvision2", + "aoepotionnightvisionextended": "lingerpotnightvision2", + "aoepotionnightvisionex": "lingerpotnightvision2", + "aoepotionnightvisionlevel2": "lingerpotnightvision2", + "aoepotionnv2": "lingerpotnightvision2", + "aoepotionnvlong": "lingerpotnightvision2", + "aoepotionnvextended": "lingerpotnightvision2", + "aoepotionnvex": "lingerpotnightvision2", + "aoepotionnvlevel2": "lingerpotnightvision2", + "aoepotionnvision2": "lingerpotnightvision2", + "aoepotionnvisionlong": "lingerpotnightvision2", + "aoepotionnvisionextended": "lingerpotnightvision2", + "aoepotionnvisionex": "lingerpotnightvision2", + "aoepotionnvisionlevel2": "lingerpotnightvision2", + "aoepotionnightv2": "lingerpotnightvision2", + "aoepotionnightvlong": "lingerpotnightvision2", + "aoepotionnightvextended": "lingerpotnightvision2", + "aoepotionnightvex": "lingerpotnightvision2", + "aoepotionnightvlevel2": "lingerpotnightvision2", + "aoepotiondarkvis2": "lingerpotnightvision2", + "aoepotiondarkvislong": "lingerpotnightvision2", + "aoepotiondarkvisextended": "lingerpotnightvision2", + "aoepotiondarkvisex": "lingerpotnightvision2", + "aoepotiondarkvislevel2": "lingerpotnightvision2", + "aoepotiondvision2": "lingerpotnightvision2", + "aoepotiondvisionlong": "lingerpotnightvision2", + "aoepotiondvisionextended": "lingerpotnightvision2", + "aoepotiondvisionex": "lingerpotnightvision2", + "aoepotiondvisionlevel2": "lingerpotnightvision2", + "aoepotiondarkv2": "lingerpotnightvision2", + "aoepotiondarkvlong": "lingerpotnightvision2", + "aoepotiondarkvextended": "lingerpotnightvision2", + "aoepotiondarkvex": "lingerpotnightvision2", + "aoepotiondarkvlevel2": "lingerpotnightvision2", + "nightvisionaoepoiont2": "lingerpotnightvision2", + "nightvisionaoepoiontlong": "lingerpotnightvision2", + "nightvisionaoepoiontextended": "lingerpotnightvision2", + "nightvisionaoepoiontex": "lingerpotnightvision2", + "nightvisionaoepoiontlevel2": "lingerpotnightvision2", + "nvaoepoiont2": "lingerpotnightvision2", + "nvaoepoiontlong": "lingerpotnightvision2", + "nvaoepoiontextended": "lingerpotnightvision2", + "nvaoepoiontex": "lingerpotnightvision2", + "nvaoepoiontlevel2": "lingerpotnightvision2", + "nvisionaoepoiont2": "lingerpotnightvision2", + "nvisionaoepoiontlong": "lingerpotnightvision2", + "nvisionaoepoiontextended": "lingerpotnightvision2", + "nvisionaoepoiontex": "lingerpotnightvision2", + "nvisionaoepoiontlevel2": "lingerpotnightvision2", + "nightvaoepoiont2": "lingerpotnightvision2", + "nightvaoepoiontlong": "lingerpotnightvision2", + "nightvaoepoiontextended": "lingerpotnightvision2", + "nightvaoepoiontex": "lingerpotnightvision2", + "nightvaoepoiontlevel2": "lingerpotnightvision2", + "darkvisaoepoiont2": "lingerpotnightvision2", + "darkvisaoepoiontlong": "lingerpotnightvision2", + "darkvisaoepoiontextended": "lingerpotnightvision2", + "darkvisaoepoiontex": "lingerpotnightvision2", + "darkvisaoepoiontlevel2": "lingerpotnightvision2", + "dvisionaoepoiont2": "lingerpotnightvision2", + "dvisionaoepoiontlong": "lingerpotnightvision2", + "dvisionaoepoiontextended": "lingerpotnightvision2", + "dvisionaoepoiontex": "lingerpotnightvision2", + "dvisionaoepoiontlevel2": "lingerpotnightvision2", + "darkvaoepoiont2": "lingerpotnightvision2", + "darkvaoepoiontlong": "lingerpotnightvision2", + "darkvaoepoiontextended": "lingerpotnightvision2", + "darkvaoepoiontex": "lingerpotnightvision2", + "darkvaoepoiontlevel2": "lingerpotnightvision2", + "aoepotnightvision2": "lingerpotnightvision2", + "aoepotnightvisionlong": "lingerpotnightvision2", + "aoepotnightvisionextended": "lingerpotnightvision2", + "aoepotnightvisionex": "lingerpotnightvision2", + "aoepotnightvisionlevel2": "lingerpotnightvision2", + "aoepotnv2": "lingerpotnightvision2", + "aoepotnvlong": "lingerpotnightvision2", + "aoepotnvextended": "lingerpotnightvision2", + "aoepotnvex": "lingerpotnightvision2", + "aoepotnvlevel2": "lingerpotnightvision2", + "aoepotnvision2": "lingerpotnightvision2", + "aoepotnvisionlong": "lingerpotnightvision2", + "aoepotnvisionextended": "lingerpotnightvision2", + "aoepotnvisionex": "lingerpotnightvision2", + "aoepotnvisionlevel2": "lingerpotnightvision2", + "aoepotnightv2": "lingerpotnightvision2", + "aoepotnightvlong": "lingerpotnightvision2", + "aoepotnightvextended": "lingerpotnightvision2", + "aoepotnightvex": "lingerpotnightvision2", + "aoepotnightvlevel2": "lingerpotnightvision2", + "aoepotdarkvis2": "lingerpotnightvision2", + "aoepotdarkvislong": "lingerpotnightvision2", + "aoepotdarkvisextended": "lingerpotnightvision2", + "aoepotdarkvisex": "lingerpotnightvision2", + "aoepotdarkvislevel2": "lingerpotnightvision2", + "aoepotdvision2": "lingerpotnightvision2", + "aoepotdvisionlong": "lingerpotnightvision2", + "aoepotdvisionextended": "lingerpotnightvision2", + "aoepotdvisionex": "lingerpotnightvision2", + "aoepotdvisionlevel2": "lingerpotnightvision2", + "aoepotdarkv2": "lingerpotnightvision2", + "aoepotdarkvlong": "lingerpotnightvision2", + "aoepotdarkvextended": "lingerpotnightvision2", + "aoepotdarkvex": "lingerpotnightvision2", + "aoepotdarkvlevel2": "lingerpotnightvision2", + "nightvisionaoepot2": "lingerpotnightvision2", + "nightvisionaoepotlong": "lingerpotnightvision2", + "nightvisionaoepotextended": "lingerpotnightvision2", + "nightvisionaoepotex": "lingerpotnightvision2", + "nightvisionaoepotlevel2": "lingerpotnightvision2", + "nvaoepot2": "lingerpotnightvision2", + "nvaoepotlong": "lingerpotnightvision2", + "nvaoepotextended": "lingerpotnightvision2", + "nvaoepotex": "lingerpotnightvision2", + "nvaoepotlevel2": "lingerpotnightvision2", + "nvisionaoepot2": "lingerpotnightvision2", + "nvisionaoepotlong": "lingerpotnightvision2", + "nvisionaoepotextended": "lingerpotnightvision2", + "nvisionaoepotex": "lingerpotnightvision2", + "nvisionaoepotlevel2": "lingerpotnightvision2", + "nightvaoepot2": "lingerpotnightvision2", + "nightvaoepotlong": "lingerpotnightvision2", + "nightvaoepotextended": "lingerpotnightvision2", + "nightvaoepotex": "lingerpotnightvision2", + "nightvaoepotlevel2": "lingerpotnightvision2", + "darkvisaoepot2": "lingerpotnightvision2", + "darkvisaoepotlong": "lingerpotnightvision2", + "darkvisaoepotextended": "lingerpotnightvision2", + "darkvisaoepotex": "lingerpotnightvision2", + "darkvisaoepotlevel2": "lingerpotnightvision2", + "dvisionaoepot2": "lingerpotnightvision2", + "dvisionaoepotlong": "lingerpotnightvision2", + "dvisionaoepotextended": "lingerpotnightvision2", + "dvisionaoepotex": "lingerpotnightvision2", + "dvisionaoepotlevel2": "lingerpotnightvision2", + "darkvaoepot2": "lingerpotnightvision2", + "darkvaoepotlong": "lingerpotnightvision2", + "darkvaoepotextended": "lingerpotnightvision2", + "darkvaoepotex": "lingerpotnightvision2", + "darkvaoepotlevel2": "lingerpotnightvision2", + "areapotionnightvision2": "lingerpotnightvision2", + "areapotionnightvisionlong": "lingerpotnightvision2", + "areapotionnightvisionextended": "lingerpotnightvision2", + "areapotionnightvisionex": "lingerpotnightvision2", + "areapotionnightvisionlevel2": "lingerpotnightvision2", + "areapotionnv2": "lingerpotnightvision2", + "areapotionnvlong": "lingerpotnightvision2", + "areapotionnvextended": "lingerpotnightvision2", + "areapotionnvex": "lingerpotnightvision2", + "areapotionnvlevel2": "lingerpotnightvision2", + "areapotionnvision2": "lingerpotnightvision2", + "areapotionnvisionlong": "lingerpotnightvision2", + "areapotionnvisionextended": "lingerpotnightvision2", + "areapotionnvisionex": "lingerpotnightvision2", + "areapotionnvisionlevel2": "lingerpotnightvision2", + "areapotionnightv2": "lingerpotnightvision2", + "areapotionnightvlong": "lingerpotnightvision2", + "areapotionnightvextended": "lingerpotnightvision2", + "areapotionnightvex": "lingerpotnightvision2", + "areapotionnightvlevel2": "lingerpotnightvision2", + "areapotiondarkvis2": "lingerpotnightvision2", + "areapotiondarkvislong": "lingerpotnightvision2", + "areapotiondarkvisextended": "lingerpotnightvision2", + "areapotiondarkvisex": "lingerpotnightvision2", + "areapotiondarkvislevel2": "lingerpotnightvision2", + "areapotiondvision2": "lingerpotnightvision2", + "areapotiondvisionlong": "lingerpotnightvision2", + "areapotiondvisionextended": "lingerpotnightvision2", + "areapotiondvisionex": "lingerpotnightvision2", + "areapotiondvisionlevel2": "lingerpotnightvision2", + "areapotiondarkv2": "lingerpotnightvision2", + "areapotiondarkvlong": "lingerpotnightvision2", + "areapotiondarkvextended": "lingerpotnightvision2", + "areapotiondarkvex": "lingerpotnightvision2", + "areapotiondarkvlevel2": "lingerpotnightvision2", + "nightvisionareapotion2": "lingerpotnightvision2", + "nightvisionareapotionlong": "lingerpotnightvision2", + "nightvisionareapotionextended": "lingerpotnightvision2", + "nightvisionareapotionex": "lingerpotnightvision2", + "nightvisionareapotionlevel2": "lingerpotnightvision2", + "nvareapotion2": "lingerpotnightvision2", + "nvareapotionlong": "lingerpotnightvision2", + "nvareapotionextended": "lingerpotnightvision2", + "nvareapotionex": "lingerpotnightvision2", + "nvareapotionlevel2": "lingerpotnightvision2", + "nvisionareapotion2": "lingerpotnightvision2", + "nvisionareapotionlong": "lingerpotnightvision2", + "nvisionareapotionextended": "lingerpotnightvision2", + "nvisionareapotionex": "lingerpotnightvision2", + "nvisionareapotionlevel2": "lingerpotnightvision2", + "nightvareapotion2": "lingerpotnightvision2", + "nightvareapotionlong": "lingerpotnightvision2", + "nightvareapotionextended": "lingerpotnightvision2", + "nightvareapotionex": "lingerpotnightvision2", + "nightvareapotionlevel2": "lingerpotnightvision2", + "darkvisareapotion2": "lingerpotnightvision2", + "darkvisareapotionlong": "lingerpotnightvision2", + "darkvisareapotionextended": "lingerpotnightvision2", + "darkvisareapotionex": "lingerpotnightvision2", + "darkvisareapotionlevel2": "lingerpotnightvision2", + "dvisionareapotion2": "lingerpotnightvision2", + "dvisionareapotionlong": "lingerpotnightvision2", + "dvisionareapotionextended": "lingerpotnightvision2", + "dvisionareapotionex": "lingerpotnightvision2", + "dvisionareapotionlevel2": "lingerpotnightvision2", + "darkvareapotion2": "lingerpotnightvision2", + "darkvareapotionlong": "lingerpotnightvision2", + "darkvareapotionextended": "lingerpotnightvision2", + "darkvareapotionex": "lingerpotnightvision2", + "darkvareapotionlevel2": "lingerpotnightvision2", + "areapotnightvision2": "lingerpotnightvision2", + "areapotnightvisionlong": "lingerpotnightvision2", + "areapotnightvisionextended": "lingerpotnightvision2", + "areapotnightvisionex": "lingerpotnightvision2", + "areapotnightvisionlevel2": "lingerpotnightvision2", + "areapotnv2": "lingerpotnightvision2", + "areapotnvlong": "lingerpotnightvision2", + "areapotnvextended": "lingerpotnightvision2", + "areapotnvex": "lingerpotnightvision2", + "areapotnvlevel2": "lingerpotnightvision2", + "areapotnvision2": "lingerpotnightvision2", + "areapotnvisionlong": "lingerpotnightvision2", + "areapotnvisionextended": "lingerpotnightvision2", + "areapotnvisionex": "lingerpotnightvision2", + "areapotnvisionlevel2": "lingerpotnightvision2", + "areapotnightv2": "lingerpotnightvision2", + "areapotnightvlong": "lingerpotnightvision2", + "areapotnightvextended": "lingerpotnightvision2", + "areapotnightvex": "lingerpotnightvision2", + "areapotnightvlevel2": "lingerpotnightvision2", + "areapotdarkvis2": "lingerpotnightvision2", + "areapotdarkvislong": "lingerpotnightvision2", + "areapotdarkvisextended": "lingerpotnightvision2", + "areapotdarkvisex": "lingerpotnightvision2", + "areapotdarkvislevel2": "lingerpotnightvision2", + "areapotdvision2": "lingerpotnightvision2", + "areapotdvisionlong": "lingerpotnightvision2", + "areapotdvisionextended": "lingerpotnightvision2", + "areapotdvisionex": "lingerpotnightvision2", + "areapotdvisionlevel2": "lingerpotnightvision2", + "areapotdarkv2": "lingerpotnightvision2", + "areapotdarkvlong": "lingerpotnightvision2", + "areapotdarkvextended": "lingerpotnightvision2", + "areapotdarkvex": "lingerpotnightvision2", + "areapotdarkvlevel2": "lingerpotnightvision2", + "nightvisionareapot2": "lingerpotnightvision2", + "nightvisionareapotlong": "lingerpotnightvision2", + "nightvisionareapotextended": "lingerpotnightvision2", + "nightvisionareapotex": "lingerpotnightvision2", + "nightvisionareapotlevel2": "lingerpotnightvision2", + "nvareapot2": "lingerpotnightvision2", + "nvareapotlong": "lingerpotnightvision2", + "nvareapotextended": "lingerpotnightvision2", + "nvareapotex": "lingerpotnightvision2", + "nvareapotlevel2": "lingerpotnightvision2", + "nvisionareapot2": "lingerpotnightvision2", + "nvisionareapotlong": "lingerpotnightvision2", + "nvisionareapotextended": "lingerpotnightvision2", + "nvisionareapotex": "lingerpotnightvision2", + "nvisionareapotlevel2": "lingerpotnightvision2", + "nightvareapot2": "lingerpotnightvision2", + "nightvareapotlong": "lingerpotnightvision2", + "nightvareapotextended": "lingerpotnightvision2", + "nightvareapotex": "lingerpotnightvision2", + "nightvareapotlevel2": "lingerpotnightvision2", + "darkvisareapot2": "lingerpotnightvision2", + "darkvisareapotlong": "lingerpotnightvision2", + "darkvisareapotextended": "lingerpotnightvision2", + "darkvisareapotex": "lingerpotnightvision2", + "darkvisareapotlevel2": "lingerpotnightvision2", + "dvisionareapot2": "lingerpotnightvision2", + "dvisionareapotlong": "lingerpotnightvision2", + "dvisionareapotextended": "lingerpotnightvision2", + "dvisionareapotex": "lingerpotnightvision2", + "dvisionareapotlevel2": "lingerpotnightvision2", + "darkvareapot2": "lingerpotnightvision2", + "darkvareapotlong": "lingerpotnightvision2", + "darkvareapotextended": "lingerpotnightvision2", + "darkvareapotex": "lingerpotnightvision2", + "darkvareapotlevel2": "lingerpotnightvision2", + "cloudpotionnightvision2": "lingerpotnightvision2", + "cloudpotionnightvisionlong": "lingerpotnightvision2", + "cloudpotionnightvisionextended": "lingerpotnightvision2", + "cloudpotionnightvisionex": "lingerpotnightvision2", + "cloudpotionnightvisionlevel2": "lingerpotnightvision2", + "cloudpotionnv2": "lingerpotnightvision2", + "cloudpotionnvlong": "lingerpotnightvision2", + "cloudpotionnvextended": "lingerpotnightvision2", + "cloudpotionnvex": "lingerpotnightvision2", + "cloudpotionnvlevel2": "lingerpotnightvision2", + "cloudpotionnvision2": "lingerpotnightvision2", + "cloudpotionnvisionlong": "lingerpotnightvision2", + "cloudpotionnvisionextended": "lingerpotnightvision2", + "cloudpotionnvisionex": "lingerpotnightvision2", + "cloudpotionnvisionlevel2": "lingerpotnightvision2", + "cloudpotionnightv2": "lingerpotnightvision2", + "cloudpotionnightvlong": "lingerpotnightvision2", + "cloudpotionnightvextended": "lingerpotnightvision2", + "cloudpotionnightvex": "lingerpotnightvision2", + "cloudpotionnightvlevel2": "lingerpotnightvision2", + "cloudpotiondarkvis2": "lingerpotnightvision2", + "cloudpotiondarkvislong": "lingerpotnightvision2", + "cloudpotiondarkvisextended": "lingerpotnightvision2", + "cloudpotiondarkvisex": "lingerpotnightvision2", + "cloudpotiondarkvislevel2": "lingerpotnightvision2", + "cloudpotiondvision2": "lingerpotnightvision2", + "cloudpotiondvisionlong": "lingerpotnightvision2", + "cloudpotiondvisionextended": "lingerpotnightvision2", + "cloudpotiondvisionex": "lingerpotnightvision2", + "cloudpotiondvisionlevel2": "lingerpotnightvision2", + "cloudpotiondarkv2": "lingerpotnightvision2", + "cloudpotiondarkvlong": "lingerpotnightvision2", + "cloudpotiondarkvextended": "lingerpotnightvision2", + "cloudpotiondarkvex": "lingerpotnightvision2", + "cloudpotiondarkvlevel2": "lingerpotnightvision2", + "nightvisioncloudpotion2": "lingerpotnightvision2", + "nightvisioncloudpotionlong": "lingerpotnightvision2", + "nightvisioncloudpotionextended": "lingerpotnightvision2", + "nightvisioncloudpotionex": "lingerpotnightvision2", + "nightvisioncloudpotionlevel2": "lingerpotnightvision2", + "nvcloudpotion2": "lingerpotnightvision2", + "nvcloudpotionlong": "lingerpotnightvision2", + "nvcloudpotionextended": "lingerpotnightvision2", + "nvcloudpotionex": "lingerpotnightvision2", + "nvcloudpotionlevel2": "lingerpotnightvision2", + "nvisioncloudpotion2": "lingerpotnightvision2", + "nvisioncloudpotionlong": "lingerpotnightvision2", + "nvisioncloudpotionextended": "lingerpotnightvision2", + "nvisioncloudpotionex": "lingerpotnightvision2", + "nvisioncloudpotionlevel2": "lingerpotnightvision2", + "nightvcloudpotion2": "lingerpotnightvision2", + "nightvcloudpotionlong": "lingerpotnightvision2", + "nightvcloudpotionextended": "lingerpotnightvision2", + "nightvcloudpotionex": "lingerpotnightvision2", + "nightvcloudpotionlevel2": "lingerpotnightvision2", + "darkviscloudpotion2": "lingerpotnightvision2", + "darkviscloudpotionlong": "lingerpotnightvision2", + "darkviscloudpotionextended": "lingerpotnightvision2", + "darkviscloudpotionex": "lingerpotnightvision2", + "darkviscloudpotionlevel2": "lingerpotnightvision2", + "dvisioncloudpotion2": "lingerpotnightvision2", + "dvisioncloudpotionlong": "lingerpotnightvision2", + "dvisioncloudpotionextended": "lingerpotnightvision2", + "dvisioncloudpotionex": "lingerpotnightvision2", + "dvisioncloudpotionlevel2": "lingerpotnightvision2", + "darkvcloudpotion2": "lingerpotnightvision2", + "darkvcloudpotionlong": "lingerpotnightvision2", + "darkvcloudpotionextended": "lingerpotnightvision2", + "darkvcloudpotionex": "lingerpotnightvision2", + "darkvcloudpotionlevel2": "lingerpotnightvision2", + "cloudpotnightvision2": "lingerpotnightvision2", + "cloudpotnightvisionlong": "lingerpotnightvision2", + "cloudpotnightvisionextended": "lingerpotnightvision2", + "cloudpotnightvisionex": "lingerpotnightvision2", + "cloudpotnightvisionlevel2": "lingerpotnightvision2", + "cloudpotnv2": "lingerpotnightvision2", + "cloudpotnvlong": "lingerpotnightvision2", + "cloudpotnvextended": "lingerpotnightvision2", + "cloudpotnvex": "lingerpotnightvision2", + "cloudpotnvlevel2": "lingerpotnightvision2", + "cloudpotnvision2": "lingerpotnightvision2", + "cloudpotnvisionlong": "lingerpotnightvision2", + "cloudpotnvisionextended": "lingerpotnightvision2", + "cloudpotnvisionex": "lingerpotnightvision2", + "cloudpotnvisionlevel2": "lingerpotnightvision2", + "cloudpotnightv2": "lingerpotnightvision2", + "cloudpotnightvlong": "lingerpotnightvision2", + "cloudpotnightvextended": "lingerpotnightvision2", + "cloudpotnightvex": "lingerpotnightvision2", + "cloudpotnightvlevel2": "lingerpotnightvision2", + "cloudpotdarkvis2": "lingerpotnightvision2", + "cloudpotdarkvislong": "lingerpotnightvision2", + "cloudpotdarkvisextended": "lingerpotnightvision2", + "cloudpotdarkvisex": "lingerpotnightvision2", + "cloudpotdarkvislevel2": "lingerpotnightvision2", + "cloudpotdvision2": "lingerpotnightvision2", + "cloudpotdvisionlong": "lingerpotnightvision2", + "cloudpotdvisionextended": "lingerpotnightvision2", + "cloudpotdvisionex": "lingerpotnightvision2", + "cloudpotdvisionlevel2": "lingerpotnightvision2", + "cloudpotdarkv2": "lingerpotnightvision2", + "cloudpotdarkvlong": "lingerpotnightvision2", + "cloudpotdarkvextended": "lingerpotnightvision2", + "cloudpotdarkvex": "lingerpotnightvision2", + "cloudpotdarkvlevel2": "lingerpotnightvision2", + "nightvisioncloudpot2": "lingerpotnightvision2", + "nightvisioncloudpotlong": "lingerpotnightvision2", + "nightvisioncloudpotextended": "lingerpotnightvision2", + "nightvisioncloudpotex": "lingerpotnightvision2", + "nightvisioncloudpotlevel2": "lingerpotnightvision2", + "nvcloudpot2": "lingerpotnightvision2", + "nvcloudpotlong": "lingerpotnightvision2", + "nvcloudpotextended": "lingerpotnightvision2", + "nvcloudpotex": "lingerpotnightvision2", + "nvcloudpotlevel2": "lingerpotnightvision2", + "nvisioncloudpot2": "lingerpotnightvision2", + "nvisioncloudpotlong": "lingerpotnightvision2", + "nvisioncloudpotextended": "lingerpotnightvision2", + "nvisioncloudpotex": "lingerpotnightvision2", + "nvisioncloudpotlevel2": "lingerpotnightvision2", + "nightvcloudpot2": "lingerpotnightvision2", + "nightvcloudpotlong": "lingerpotnightvision2", + "nightvcloudpotextended": "lingerpotnightvision2", + "nightvcloudpotex": "lingerpotnightvision2", + "nightvcloudpotlevel2": "lingerpotnightvision2", + "darkviscloudpot2": "lingerpotnightvision2", + "darkviscloudpotlong": "lingerpotnightvision2", + "darkviscloudpotextended": "lingerpotnightvision2", + "darkviscloudpotex": "lingerpotnightvision2", + "darkviscloudpotlevel2": "lingerpotnightvision2", + "dvisioncloudpot2": "lingerpotnightvision2", + "dvisioncloudpotlong": "lingerpotnightvision2", + "dvisioncloudpotextended": "lingerpotnightvision2", + "dvisioncloudpotex": "lingerpotnightvision2", + "dvisioncloudpotlevel2": "lingerpotnightvision2", + "darkvcloudpot2": "lingerpotnightvision2", + "darkvcloudpotlong": "lingerpotnightvision2", + "darkvcloudpotextended": "lingerpotnightvision2", + "darkvcloudpotex": "lingerpotnightvision2", + "darkvcloudpotlevel2": "lingerpotnightvision2", + "arrownightvision2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_night_vision", + "type": "NIGHT_VISION", + "upgraded": false, + "extended": true + } + }, + "arrownightvisionlong": "arrownightvision2", + "arrownightvisionextended": "arrownightvision2", + "arrownightvisionex": "arrownightvision2", + "arrownightvisionlevel2": "arrownightvision2", + "arrownv2": "arrownightvision2", + "arrownvlong": "arrownightvision2", + "arrownvextended": "arrownightvision2", + "arrownvex": "arrownightvision2", + "arrownvlevel2": "arrownightvision2", + "arrownvision2": "arrownightvision2", + "arrownvisionlong": "arrownightvision2", + "arrownvisionextended": "arrownightvision2", + "arrownvisionex": "arrownightvision2", + "arrownvisionlevel2": "arrownightvision2", + "arrownightv2": "arrownightvision2", + "arrownightvlong": "arrownightvision2", + "arrownightvextended": "arrownightvision2", + "arrownightvex": "arrownightvision2", + "arrownightvlevel2": "arrownightvision2", + "arrowdarkvis2": "arrownightvision2", + "arrowdarkvislong": "arrownightvision2", + "arrowdarkvisextended": "arrownightvision2", + "arrowdarkvisex": "arrownightvision2", + "arrowdarkvislevel2": "arrownightvision2", + "arrowdvision2": "arrownightvision2", + "arrowdvisionlong": "arrownightvision2", + "arrowdvisionextended": "arrownightvision2", + "arrowdvisionex": "arrownightvision2", + "arrowdvisionlevel2": "arrownightvision2", + "arrowdarkv2": "arrownightvision2", + "arrowdarkvlong": "arrownightvision2", + "arrowdarkvextended": "arrownightvision2", + "arrowdarkvex": "arrownightvision2", + "arrowdarkvlevel2": "arrownightvision2", + "nightvisionarrow2": "arrownightvision2", + "nightvisionarrowlong": "arrownightvision2", + "nightvisionarrowextended": "arrownightvision2", + "nightvisionarrowex": "arrownightvision2", + "nightvisionarrowlevel2": "arrownightvision2", + "nvarrow2": "arrownightvision2", + "nvarrowlong": "arrownightvision2", + "nvarrowextended": "arrownightvision2", + "nvarrowex": "arrownightvision2", + "nvarrowlevel2": "arrownightvision2", + "nvisionarrow2": "arrownightvision2", + "nvisionarrowlong": "arrownightvision2", + "nvisionarrowextended": "arrownightvision2", + "nvisionarrowex": "arrownightvision2", + "nvisionarrowlevel2": "arrownightvision2", + "nightvarrow2": "arrownightvision2", + "nightvarrowlong": "arrownightvision2", + "nightvarrowextended": "arrownightvision2", + "nightvarrowex": "arrownightvision2", + "nightvarrowlevel2": "arrownightvision2", + "darkvisarrow2": "arrownightvision2", + "darkvisarrowlong": "arrownightvision2", + "darkvisarrowextended": "arrownightvision2", + "darkvisarrowex": "arrownightvision2", + "darkvisarrowlevel2": "arrownightvision2", + "dvisionarrow2": "arrownightvision2", + "dvisionarrowlong": "arrownightvision2", + "dvisionarrowextended": "arrownightvision2", + "dvisionarrowex": "arrownightvision2", + "dvisionarrowlevel2": "arrownightvision2", + "darkvarrow2": "arrownightvision2", + "darkvarrowlong": "arrownightvision2", + "darkvarrowextended": "arrownightvision2", + "darkvarrowex": "arrownightvision2", + "darkvarrowlevel2": "arrownightvision2", + "invisibilitypotion": { + "material": "POTION", + "potionData": { + "vanillaType": "invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": false + } + }, + "invispotion": "invisibilitypotion", + "invisiblepotion": "invisibilitypotion", + "invpotion": "invisibilitypotion", + "invisibilitypot": "invisibilitypotion", + "invispot": "invisibilitypotion", + "invisiblepot": "invisibilitypotion", + "invpot": "invisibilitypotion", + "potionofinvisibility": "invisibilitypotion", + "potionofinvis": "invisibilitypotion", + "potionofinvisible": "invisibilitypotion", + "potionofinv": "invisibilitypotion", + "potofinvisibility": "invisibilitypotion", + "potofinvis": "invisibilitypotion", + "potofinvisible": "invisibilitypotion", + "potofinv": "invisibilitypotion", + "splashinvisibilitypotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": false + } + }, + "splashinvispotion": "splashinvisibilitypotion", + "splashinvisiblepotion": "splashinvisibilitypotion", + "splashinvpotion": "splashinvisibilitypotion", + "splinvisibilitypotion": "splashinvisibilitypotion", + "splinvispotion": "splashinvisibilitypotion", + "splinvisiblepotion": "splashinvisibilitypotion", + "splinvpotion": "splashinvisibilitypotion", + "invisibilitysplashpotion": "splashinvisibilitypotion", + "invissplashpotion": "splashinvisibilitypotion", + "invisiblesplashpotion": "splashinvisibilitypotion", + "invsplashpotion": "splashinvisibilitypotion", + "splashinvisibilitypot": "splashinvisibilitypotion", + "splashinvispot": "splashinvisibilitypotion", + "splashinvisiblepot": "splashinvisibilitypotion", + "splashinvpot": "splashinvisibilitypotion", + "splinvisibilitypot": "splashinvisibilitypotion", + "splinvispot": "splashinvisibilitypotion", + "splinvisiblepot": "splashinvisibilitypotion", + "splinvpot": "splashinvisibilitypotion", + "invisibilitysplashpot": "splashinvisibilitypotion", + "invissplashpot": "splashinvisibilitypotion", + "invisiblesplashpot": "splashinvisibilitypotion", + "invsplashpot": "splashinvisibilitypotion", + "lingerpotinvisibility": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": false + } + }, + "lingerpotinvis": "lingerpotinvisibility", + "lingerpotinvisible": "lingerpotinvisibility", + "lingerpotinv": "lingerpotinvisibility", + "invisibilitylingerpot": "lingerpotinvisibility", + "invislingerpot": "lingerpotinvisibility", + "invisiblelingerpot": "lingerpotinvisibility", + "invlingerpot": "lingerpotinvisibility", + "aoepotioninvisibility": "lingerpotinvisibility", + "aoepotioninvis": "lingerpotinvisibility", + "aoepotioninvisible": "lingerpotinvisibility", + "aoepotioninv": "lingerpotinvisibility", + "invisibilityaoepoiont": "lingerpotinvisibility", + "invisaoepoiont": "lingerpotinvisibility", + "invisibleaoepoiont": "lingerpotinvisibility", + "invaoepoiont": "lingerpotinvisibility", + "aoepotinvisibility": "lingerpotinvisibility", + "aoepotinvis": "lingerpotinvisibility", + "aoepotinvisible": "lingerpotinvisibility", + "aoepotinv": "lingerpotinvisibility", + "invisibilityaoepot": "lingerpotinvisibility", + "invisaoepot": "lingerpotinvisibility", + "invisibleaoepot": "lingerpotinvisibility", + "invaoepot": "lingerpotinvisibility", + "areapotioninvisibility": "lingerpotinvisibility", + "areapotioninvis": "lingerpotinvisibility", + "areapotioninvisible": "lingerpotinvisibility", + "areapotioninv": "lingerpotinvisibility", + "invisibilityareapotion": "lingerpotinvisibility", + "invisareapotion": "lingerpotinvisibility", + "invisibleareapotion": "lingerpotinvisibility", + "invareapotion": "lingerpotinvisibility", + "areapotinvisibility": "lingerpotinvisibility", + "areapotinvis": "lingerpotinvisibility", + "areapotinvisible": "lingerpotinvisibility", + "areapotinv": "lingerpotinvisibility", + "invisibilityareapot": "lingerpotinvisibility", + "invisareapot": "lingerpotinvisibility", + "invisibleareapot": "lingerpotinvisibility", + "invareapot": "lingerpotinvisibility", + "cloudpotioninvisibility": "lingerpotinvisibility", + "cloudpotioninvis": "lingerpotinvisibility", + "cloudpotioninvisible": "lingerpotinvisibility", + "cloudpotioninv": "lingerpotinvisibility", + "invisibilitycloudpotion": "lingerpotinvisibility", + "inviscloudpotion": "lingerpotinvisibility", + "invisiblecloudpotion": "lingerpotinvisibility", + "invcloudpotion": "lingerpotinvisibility", + "cloudpotinvisibility": "lingerpotinvisibility", + "cloudpotinvis": "lingerpotinvisibility", + "cloudpotinvisible": "lingerpotinvisibility", + "cloudpotinv": "lingerpotinvisibility", + "invisibilitycloudpot": "lingerpotinvisibility", + "inviscloudpot": "lingerpotinvisibility", + "invisiblecloudpot": "lingerpotinvisibility", + "invcloudpot": "lingerpotinvisibility", + "arrowinvisibility": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": false + } + }, + "arrowinvis": "arrowinvisibility", + "arrowinvisible": "arrowinvisibility", + "arrowinv": "arrowinvisibility", + "invisibilityarrow": "arrowinvisibility", + "invisarrow": "arrowinvisibility", + "invisiblearrow": "arrowinvisibility", + "invarrow": "arrowinvisibility", + "invisibility2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": true + } + }, + "invisibilitylongpotion": "invisibility2potion", + "invisibilityextendedpotion": "invisibility2potion", + "invisibilityexpotion": "invisibility2potion", + "invisibilitylevel2potion": "invisibility2potion", + "invis2potion": "invisibility2potion", + "invislongpotion": "invisibility2potion", + "invisextendedpotion": "invisibility2potion", + "invisexpotion": "invisibility2potion", + "invislevel2potion": "invisibility2potion", + "invisible2potion": "invisibility2potion", + "invisiblelongpotion": "invisibility2potion", + "invisibleextendedpotion": "invisibility2potion", + "invisibleexpotion": "invisibility2potion", + "invisiblelevel2potion": "invisibility2potion", + "inv2potion": "invisibility2potion", + "invlongpotion": "invisibility2potion", + "invextendedpotion": "invisibility2potion", + "invexpotion": "invisibility2potion", + "invlevel2potion": "invisibility2potion", + "invisibility2pot": "invisibility2potion", + "invisibilitylongpot": "invisibility2potion", + "invisibilityextendedpot": "invisibility2potion", + "invisibilityexpot": "invisibility2potion", + "invisibilitylevel2pot": "invisibility2potion", + "invis2pot": "invisibility2potion", + "invislongpot": "invisibility2potion", + "invisextendedpot": "invisibility2potion", + "invisexpot": "invisibility2potion", + "invislevel2pot": "invisibility2potion", + "invisible2pot": "invisibility2potion", + "invisiblelongpot": "invisibility2potion", + "invisibleextendedpot": "invisibility2potion", + "invisibleexpot": "invisibility2potion", + "invisiblelevel2pot": "invisibility2potion", + "inv2pot": "invisibility2potion", + "invlongpot": "invisibility2potion", + "invextendedpot": "invisibility2potion", + "invexpot": "invisibility2potion", + "invlevel2pot": "invisibility2potion", + "potionofinvisibility2": "invisibility2potion", + "potionofinvisibilitylong": "invisibility2potion", + "potionofinvisibilityextended": "invisibility2potion", + "potionofinvisibilityex": "invisibility2potion", + "potionofinvisibilitylevel2": "invisibility2potion", + "potionofinvis2": "invisibility2potion", + "potionofinvislong": "invisibility2potion", + "potionofinvisextended": "invisibility2potion", + "potionofinvisex": "invisibility2potion", + "potionofinvislevel2": "invisibility2potion", + "potionofinvisible2": "invisibility2potion", + "potionofinvisiblelong": "invisibility2potion", + "potionofinvisibleextended": "invisibility2potion", + "potionofinvisibleex": "invisibility2potion", + "potionofinvisiblelevel2": "invisibility2potion", + "potionofinv2": "invisibility2potion", + "potionofinvlong": "invisibility2potion", + "potionofinvextended": "invisibility2potion", + "potionofinvex": "invisibility2potion", + "potionofinvlevel2": "invisibility2potion", + "potofinvisibility2": "invisibility2potion", + "potofinvisibilitylong": "invisibility2potion", + "potofinvisibilityextended": "invisibility2potion", + "potofinvisibilityex": "invisibility2potion", + "potofinvisibilitylevel2": "invisibility2potion", + "potofinvis2": "invisibility2potion", + "potofinvislong": "invisibility2potion", + "potofinvisextended": "invisibility2potion", + "potofinvisex": "invisibility2potion", + "potofinvislevel2": "invisibility2potion", + "potofinvisible2": "invisibility2potion", + "potofinvisiblelong": "invisibility2potion", + "potofinvisibleextended": "invisibility2potion", + "potofinvisibleex": "invisibility2potion", + "potofinvisiblelevel2": "invisibility2potion", + "potofinv2": "invisibility2potion", + "potofinvlong": "invisibility2potion", + "potofinvextended": "invisibility2potion", + "potofinvex": "invisibility2potion", + "potofinvlevel2": "invisibility2potion", + "splashinvisibility2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": true + } + }, + "splashinvisibilitylongpotion": "splashinvisibility2potion", + "splashinvisibilityextendedpotion": "splashinvisibility2potion", + "splashinvisibilityexpotion": "splashinvisibility2potion", + "splashinvisibilitylevel2potion": "splashinvisibility2potion", + "splashinvis2potion": "splashinvisibility2potion", + "splashinvislongpotion": "splashinvisibility2potion", + "splashinvisextendedpotion": "splashinvisibility2potion", + "splashinvisexpotion": "splashinvisibility2potion", + "splashinvislevel2potion": "splashinvisibility2potion", + "splashinvisible2potion": "splashinvisibility2potion", + "splashinvisiblelongpotion": "splashinvisibility2potion", + "splashinvisibleextendedpotion": "splashinvisibility2potion", + "splashinvisibleexpotion": "splashinvisibility2potion", + "splashinvisiblelevel2potion": "splashinvisibility2potion", + "splashinv2potion": "splashinvisibility2potion", + "splashinvlongpotion": "splashinvisibility2potion", + "splashinvextendedpotion": "splashinvisibility2potion", + "splashinvexpotion": "splashinvisibility2potion", + "splashinvlevel2potion": "splashinvisibility2potion", + "splinvisibility2potion": "splashinvisibility2potion", + "splinvisibilitylongpotion": "splashinvisibility2potion", + "splinvisibilityextendedpotion": "splashinvisibility2potion", + "splinvisibilityexpotion": "splashinvisibility2potion", + "splinvisibilitylevel2potion": "splashinvisibility2potion", + "splinvis2potion": "splashinvisibility2potion", + "splinvislongpotion": "splashinvisibility2potion", + "splinvisextendedpotion": "splashinvisibility2potion", + "splinvisexpotion": "splashinvisibility2potion", + "splinvislevel2potion": "splashinvisibility2potion", + "splinvisible2potion": "splashinvisibility2potion", + "splinvisiblelongpotion": "splashinvisibility2potion", + "splinvisibleextendedpotion": "splashinvisibility2potion", + "splinvisibleexpotion": "splashinvisibility2potion", + "splinvisiblelevel2potion": "splashinvisibility2potion", + "splinv2potion": "splashinvisibility2potion", + "splinvlongpotion": "splashinvisibility2potion", + "splinvextendedpotion": "splashinvisibility2potion", + "splinvexpotion": "splashinvisibility2potion", + "splinvlevel2potion": "splashinvisibility2potion", + "invisibility2splashpotion": "splashinvisibility2potion", + "invisibilitylongsplashpotion": "splashinvisibility2potion", + "invisibilityextendedsplashpotion": "splashinvisibility2potion", + "invisibilityexsplashpotion": "splashinvisibility2potion", + "invisibilitylevel2splashpotion": "splashinvisibility2potion", + "invis2splashpotion": "splashinvisibility2potion", + "invislongsplashpotion": "splashinvisibility2potion", + "invisextendedsplashpotion": "splashinvisibility2potion", + "invisexsplashpotion": "splashinvisibility2potion", + "invislevel2splashpotion": "splashinvisibility2potion", + "invisible2splashpotion": "splashinvisibility2potion", + "invisiblelongsplashpotion": "splashinvisibility2potion", + "invisibleextendedsplashpotion": "splashinvisibility2potion", + "invisibleexsplashpotion": "splashinvisibility2potion", + "invisiblelevel2splashpotion": "splashinvisibility2potion", + "inv2splashpotion": "splashinvisibility2potion", + "invlongsplashpotion": "splashinvisibility2potion", + "invextendedsplashpotion": "splashinvisibility2potion", + "invexsplashpotion": "splashinvisibility2potion", + "invlevel2splashpotion": "splashinvisibility2potion", + "splashinvisibility2pot": "splashinvisibility2potion", + "splashinvisibilitylongpot": "splashinvisibility2potion", + "splashinvisibilityextendedpot": "splashinvisibility2potion", + "splashinvisibilityexpot": "splashinvisibility2potion", + "splashinvisibilitylevel2pot": "splashinvisibility2potion", + "splashinvis2pot": "splashinvisibility2potion", + "splashinvislongpot": "splashinvisibility2potion", + "splashinvisextendedpot": "splashinvisibility2potion", + "splashinvisexpot": "splashinvisibility2potion", + "splashinvislevel2pot": "splashinvisibility2potion", + "splashinvisible2pot": "splashinvisibility2potion", + "splashinvisiblelongpot": "splashinvisibility2potion", + "splashinvisibleextendedpot": "splashinvisibility2potion", + "splashinvisibleexpot": "splashinvisibility2potion", + "splashinvisiblelevel2pot": "splashinvisibility2potion", + "splashinv2pot": "splashinvisibility2potion", + "splashinvlongpot": "splashinvisibility2potion", + "splashinvextendedpot": "splashinvisibility2potion", + "splashinvexpot": "splashinvisibility2potion", + "splashinvlevel2pot": "splashinvisibility2potion", + "splinvisibility2pot": "splashinvisibility2potion", + "splinvisibilitylongpot": "splashinvisibility2potion", + "splinvisibilityextendedpot": "splashinvisibility2potion", + "splinvisibilityexpot": "splashinvisibility2potion", + "splinvisibilitylevel2pot": "splashinvisibility2potion", + "splinvis2pot": "splashinvisibility2potion", + "splinvislongpot": "splashinvisibility2potion", + "splinvisextendedpot": "splashinvisibility2potion", + "splinvisexpot": "splashinvisibility2potion", + "splinvislevel2pot": "splashinvisibility2potion", + "splinvisible2pot": "splashinvisibility2potion", + "splinvisiblelongpot": "splashinvisibility2potion", + "splinvisibleextendedpot": "splashinvisibility2potion", + "splinvisibleexpot": "splashinvisibility2potion", + "splinvisiblelevel2pot": "splashinvisibility2potion", + "splinv2pot": "splashinvisibility2potion", + "splinvlongpot": "splashinvisibility2potion", + "splinvextendedpot": "splashinvisibility2potion", + "splinvexpot": "splashinvisibility2potion", + "splinvlevel2pot": "splashinvisibility2potion", + "invisibility2splashpot": "splashinvisibility2potion", + "invisibilitylongsplashpot": "splashinvisibility2potion", + "invisibilityextendedsplashpot": "splashinvisibility2potion", + "invisibilityexsplashpot": "splashinvisibility2potion", + "invisibilitylevel2splashpot": "splashinvisibility2potion", + "invis2splashpot": "splashinvisibility2potion", + "invislongsplashpot": "splashinvisibility2potion", + "invisextendedsplashpot": "splashinvisibility2potion", + "invisexsplashpot": "splashinvisibility2potion", + "invislevel2splashpot": "splashinvisibility2potion", + "invisible2splashpot": "splashinvisibility2potion", + "invisiblelongsplashpot": "splashinvisibility2potion", + "invisibleextendedsplashpot": "splashinvisibility2potion", + "invisibleexsplashpot": "splashinvisibility2potion", + "invisiblelevel2splashpot": "splashinvisibility2potion", + "inv2splashpot": "splashinvisibility2potion", + "invlongsplashpot": "splashinvisibility2potion", + "invextendedsplashpot": "splashinvisibility2potion", + "invexsplashpot": "splashinvisibility2potion", + "invlevel2splashpot": "splashinvisibility2potion", + "lingerpotinvisibility2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": true + } + }, + "lingerpotinvisibilitylong": "lingerpotinvisibility2", + "lingerpotinvisibilityextended": "lingerpotinvisibility2", + "lingerpotinvisibilityex": "lingerpotinvisibility2", + "lingerpotinvisibilitylevel2": "lingerpotinvisibility2", + "lingerpotinvis2": "lingerpotinvisibility2", + "lingerpotinvislong": "lingerpotinvisibility2", + "lingerpotinvisextended": "lingerpotinvisibility2", + "lingerpotinvisex": "lingerpotinvisibility2", + "lingerpotinvislevel2": "lingerpotinvisibility2", + "lingerpotinvisible2": "lingerpotinvisibility2", + "lingerpotinvisiblelong": "lingerpotinvisibility2", + "lingerpotinvisibleextended": "lingerpotinvisibility2", + "lingerpotinvisibleex": "lingerpotinvisibility2", + "lingerpotinvisiblelevel2": "lingerpotinvisibility2", + "lingerpotinv2": "lingerpotinvisibility2", + "lingerpotinvlong": "lingerpotinvisibility2", + "lingerpotinvextended": "lingerpotinvisibility2", + "lingerpotinvex": "lingerpotinvisibility2", + "lingerpotinvlevel2": "lingerpotinvisibility2", + "invisibilitylingerpot2": "lingerpotinvisibility2", + "invisibilitylingerpotlong": "lingerpotinvisibility2", + "invisibilitylingerpotextended": "lingerpotinvisibility2", + "invisibilitylingerpotex": "lingerpotinvisibility2", + "invisibilitylingerpotlevel2": "lingerpotinvisibility2", + "invislingerpot2": "lingerpotinvisibility2", + "invislingerpotlong": "lingerpotinvisibility2", + "invislingerpotextended": "lingerpotinvisibility2", + "invislingerpotex": "lingerpotinvisibility2", + "invislingerpotlevel2": "lingerpotinvisibility2", + "invisiblelingerpot2": "lingerpotinvisibility2", + "invisiblelingerpotlong": "lingerpotinvisibility2", + "invisiblelingerpotextended": "lingerpotinvisibility2", + "invisiblelingerpotex": "lingerpotinvisibility2", + "invisiblelingerpotlevel2": "lingerpotinvisibility2", + "invlingerpot2": "lingerpotinvisibility2", + "invlingerpotlong": "lingerpotinvisibility2", + "invlingerpotextended": "lingerpotinvisibility2", + "invlingerpotex": "lingerpotinvisibility2", + "invlingerpotlevel2": "lingerpotinvisibility2", + "aoepotioninvisibility2": "lingerpotinvisibility2", + "aoepotioninvisibilitylong": "lingerpotinvisibility2", + "aoepotioninvisibilityextended": "lingerpotinvisibility2", + "aoepotioninvisibilityex": "lingerpotinvisibility2", + "aoepotioninvisibilitylevel2": "lingerpotinvisibility2", + "aoepotioninvis2": "lingerpotinvisibility2", + "aoepotioninvislong": "lingerpotinvisibility2", + "aoepotioninvisextended": "lingerpotinvisibility2", + "aoepotioninvisex": "lingerpotinvisibility2", + "aoepotioninvislevel2": "lingerpotinvisibility2", + "aoepotioninvisible2": "lingerpotinvisibility2", + "aoepotioninvisiblelong": "lingerpotinvisibility2", + "aoepotioninvisibleextended": "lingerpotinvisibility2", + "aoepotioninvisibleex": "lingerpotinvisibility2", + "aoepotioninvisiblelevel2": "lingerpotinvisibility2", + "aoepotioninv2": "lingerpotinvisibility2", + "aoepotioninvlong": "lingerpotinvisibility2", + "aoepotioninvextended": "lingerpotinvisibility2", + "aoepotioninvex": "lingerpotinvisibility2", + "aoepotioninvlevel2": "lingerpotinvisibility2", + "invisibilityaoepoiont2": "lingerpotinvisibility2", + "invisibilityaoepoiontlong": "lingerpotinvisibility2", + "invisibilityaoepoiontextended": "lingerpotinvisibility2", + "invisibilityaoepoiontex": "lingerpotinvisibility2", + "invisibilityaoepoiontlevel2": "lingerpotinvisibility2", + "invisaoepoiont2": "lingerpotinvisibility2", + "invisaoepoiontlong": "lingerpotinvisibility2", + "invisaoepoiontextended": "lingerpotinvisibility2", + "invisaoepoiontex": "lingerpotinvisibility2", + "invisaoepoiontlevel2": "lingerpotinvisibility2", + "invisibleaoepoiont2": "lingerpotinvisibility2", + "invisibleaoepoiontlong": "lingerpotinvisibility2", + "invisibleaoepoiontextended": "lingerpotinvisibility2", + "invisibleaoepoiontex": "lingerpotinvisibility2", + "invisibleaoepoiontlevel2": "lingerpotinvisibility2", + "invaoepoiont2": "lingerpotinvisibility2", + "invaoepoiontlong": "lingerpotinvisibility2", + "invaoepoiontextended": "lingerpotinvisibility2", + "invaoepoiontex": "lingerpotinvisibility2", + "invaoepoiontlevel2": "lingerpotinvisibility2", + "aoepotinvisibility2": "lingerpotinvisibility2", + "aoepotinvisibilitylong": "lingerpotinvisibility2", + "aoepotinvisibilityextended": "lingerpotinvisibility2", + "aoepotinvisibilityex": "lingerpotinvisibility2", + "aoepotinvisibilitylevel2": "lingerpotinvisibility2", + "aoepotinvis2": "lingerpotinvisibility2", + "aoepotinvislong": "lingerpotinvisibility2", + "aoepotinvisextended": "lingerpotinvisibility2", + "aoepotinvisex": "lingerpotinvisibility2", + "aoepotinvislevel2": "lingerpotinvisibility2", + "aoepotinvisible2": "lingerpotinvisibility2", + "aoepotinvisiblelong": "lingerpotinvisibility2", + "aoepotinvisibleextended": "lingerpotinvisibility2", + "aoepotinvisibleex": "lingerpotinvisibility2", + "aoepotinvisiblelevel2": "lingerpotinvisibility2", + "aoepotinv2": "lingerpotinvisibility2", + "aoepotinvlong": "lingerpotinvisibility2", + "aoepotinvextended": "lingerpotinvisibility2", + "aoepotinvex": "lingerpotinvisibility2", + "aoepotinvlevel2": "lingerpotinvisibility2", + "invisibilityaoepot2": "lingerpotinvisibility2", + "invisibilityaoepotlong": "lingerpotinvisibility2", + "invisibilityaoepotextended": "lingerpotinvisibility2", + "invisibilityaoepotex": "lingerpotinvisibility2", + "invisibilityaoepotlevel2": "lingerpotinvisibility2", + "invisaoepot2": "lingerpotinvisibility2", + "invisaoepotlong": "lingerpotinvisibility2", + "invisaoepotextended": "lingerpotinvisibility2", + "invisaoepotex": "lingerpotinvisibility2", + "invisaoepotlevel2": "lingerpotinvisibility2", + "invisibleaoepot2": "lingerpotinvisibility2", + "invisibleaoepotlong": "lingerpotinvisibility2", + "invisibleaoepotextended": "lingerpotinvisibility2", + "invisibleaoepotex": "lingerpotinvisibility2", + "invisibleaoepotlevel2": "lingerpotinvisibility2", + "invaoepot2": "lingerpotinvisibility2", + "invaoepotlong": "lingerpotinvisibility2", + "invaoepotextended": "lingerpotinvisibility2", + "invaoepotex": "lingerpotinvisibility2", + "invaoepotlevel2": "lingerpotinvisibility2", + "areapotioninvisibility2": "lingerpotinvisibility2", + "areapotioninvisibilitylong": "lingerpotinvisibility2", + "areapotioninvisibilityextended": "lingerpotinvisibility2", + "areapotioninvisibilityex": "lingerpotinvisibility2", + "areapotioninvisibilitylevel2": "lingerpotinvisibility2", + "areapotioninvis2": "lingerpotinvisibility2", + "areapotioninvislong": "lingerpotinvisibility2", + "areapotioninvisextended": "lingerpotinvisibility2", + "areapotioninvisex": "lingerpotinvisibility2", + "areapotioninvislevel2": "lingerpotinvisibility2", + "areapotioninvisible2": "lingerpotinvisibility2", + "areapotioninvisiblelong": "lingerpotinvisibility2", + "areapotioninvisibleextended": "lingerpotinvisibility2", + "areapotioninvisibleex": "lingerpotinvisibility2", + "areapotioninvisiblelevel2": "lingerpotinvisibility2", + "areapotioninv2": "lingerpotinvisibility2", + "areapotioninvlong": "lingerpotinvisibility2", + "areapotioninvextended": "lingerpotinvisibility2", + "areapotioninvex": "lingerpotinvisibility2", + "areapotioninvlevel2": "lingerpotinvisibility2", + "invisibilityareapotion2": "lingerpotinvisibility2", + "invisibilityareapotionlong": "lingerpotinvisibility2", + "invisibilityareapotionextended": "lingerpotinvisibility2", + "invisibilityareapotionex": "lingerpotinvisibility2", + "invisibilityareapotionlevel2": "lingerpotinvisibility2", + "invisareapotion2": "lingerpotinvisibility2", + "invisareapotionlong": "lingerpotinvisibility2", + "invisareapotionextended": "lingerpotinvisibility2", + "invisareapotionex": "lingerpotinvisibility2", + "invisareapotionlevel2": "lingerpotinvisibility2", + "invisibleareapotion2": "lingerpotinvisibility2", + "invisibleareapotionlong": "lingerpotinvisibility2", + "invisibleareapotionextended": "lingerpotinvisibility2", + "invisibleareapotionex": "lingerpotinvisibility2", + "invisibleareapotionlevel2": "lingerpotinvisibility2", + "invareapotion2": "lingerpotinvisibility2", + "invareapotionlong": "lingerpotinvisibility2", + "invareapotionextended": "lingerpotinvisibility2", + "invareapotionex": "lingerpotinvisibility2", + "invareapotionlevel2": "lingerpotinvisibility2", + "areapotinvisibility2": "lingerpotinvisibility2", + "areapotinvisibilitylong": "lingerpotinvisibility2", + "areapotinvisibilityextended": "lingerpotinvisibility2", + "areapotinvisibilityex": "lingerpotinvisibility2", + "areapotinvisibilitylevel2": "lingerpotinvisibility2", + "areapotinvis2": "lingerpotinvisibility2", + "areapotinvislong": "lingerpotinvisibility2", + "areapotinvisextended": "lingerpotinvisibility2", + "areapotinvisex": "lingerpotinvisibility2", + "areapotinvislevel2": "lingerpotinvisibility2", + "areapotinvisible2": "lingerpotinvisibility2", + "areapotinvisiblelong": "lingerpotinvisibility2", + "areapotinvisibleextended": "lingerpotinvisibility2", + "areapotinvisibleex": "lingerpotinvisibility2", + "areapotinvisiblelevel2": "lingerpotinvisibility2", + "areapotinv2": "lingerpotinvisibility2", + "areapotinvlong": "lingerpotinvisibility2", + "areapotinvextended": "lingerpotinvisibility2", + "areapotinvex": "lingerpotinvisibility2", + "areapotinvlevel2": "lingerpotinvisibility2", + "invisibilityareapot2": "lingerpotinvisibility2", + "invisibilityareapotlong": "lingerpotinvisibility2", + "invisibilityareapotextended": "lingerpotinvisibility2", + "invisibilityareapotex": "lingerpotinvisibility2", + "invisibilityareapotlevel2": "lingerpotinvisibility2", + "invisareapot2": "lingerpotinvisibility2", + "invisareapotlong": "lingerpotinvisibility2", + "invisareapotextended": "lingerpotinvisibility2", + "invisareapotex": "lingerpotinvisibility2", + "invisareapotlevel2": "lingerpotinvisibility2", + "invisibleareapot2": "lingerpotinvisibility2", + "invisibleareapotlong": "lingerpotinvisibility2", + "invisibleareapotextended": "lingerpotinvisibility2", + "invisibleareapotex": "lingerpotinvisibility2", + "invisibleareapotlevel2": "lingerpotinvisibility2", + "invareapot2": "lingerpotinvisibility2", + "invareapotlong": "lingerpotinvisibility2", + "invareapotextended": "lingerpotinvisibility2", + "invareapotex": "lingerpotinvisibility2", + "invareapotlevel2": "lingerpotinvisibility2", + "cloudpotioninvisibility2": "lingerpotinvisibility2", + "cloudpotioninvisibilitylong": "lingerpotinvisibility2", + "cloudpotioninvisibilityextended": "lingerpotinvisibility2", + "cloudpotioninvisibilityex": "lingerpotinvisibility2", + "cloudpotioninvisibilitylevel2": "lingerpotinvisibility2", + "cloudpotioninvis2": "lingerpotinvisibility2", + "cloudpotioninvislong": "lingerpotinvisibility2", + "cloudpotioninvisextended": "lingerpotinvisibility2", + "cloudpotioninvisex": "lingerpotinvisibility2", + "cloudpotioninvislevel2": "lingerpotinvisibility2", + "cloudpotioninvisible2": "lingerpotinvisibility2", + "cloudpotioninvisiblelong": "lingerpotinvisibility2", + "cloudpotioninvisibleextended": "lingerpotinvisibility2", + "cloudpotioninvisibleex": "lingerpotinvisibility2", + "cloudpotioninvisiblelevel2": "lingerpotinvisibility2", + "cloudpotioninv2": "lingerpotinvisibility2", + "cloudpotioninvlong": "lingerpotinvisibility2", + "cloudpotioninvextended": "lingerpotinvisibility2", + "cloudpotioninvex": "lingerpotinvisibility2", + "cloudpotioninvlevel2": "lingerpotinvisibility2", + "invisibilitycloudpotion2": "lingerpotinvisibility2", + "invisibilitycloudpotionlong": "lingerpotinvisibility2", + "invisibilitycloudpotionextended": "lingerpotinvisibility2", + "invisibilitycloudpotionex": "lingerpotinvisibility2", + "invisibilitycloudpotionlevel2": "lingerpotinvisibility2", + "inviscloudpotion2": "lingerpotinvisibility2", + "inviscloudpotionlong": "lingerpotinvisibility2", + "inviscloudpotionextended": "lingerpotinvisibility2", + "inviscloudpotionex": "lingerpotinvisibility2", + "inviscloudpotionlevel2": "lingerpotinvisibility2", + "invisiblecloudpotion2": "lingerpotinvisibility2", + "invisiblecloudpotionlong": "lingerpotinvisibility2", + "invisiblecloudpotionextended": "lingerpotinvisibility2", + "invisiblecloudpotionex": "lingerpotinvisibility2", + "invisiblecloudpotionlevel2": "lingerpotinvisibility2", + "invcloudpotion2": "lingerpotinvisibility2", + "invcloudpotionlong": "lingerpotinvisibility2", + "invcloudpotionextended": "lingerpotinvisibility2", + "invcloudpotionex": "lingerpotinvisibility2", + "invcloudpotionlevel2": "lingerpotinvisibility2", + "cloudpotinvisibility2": "lingerpotinvisibility2", + "cloudpotinvisibilitylong": "lingerpotinvisibility2", + "cloudpotinvisibilityextended": "lingerpotinvisibility2", + "cloudpotinvisibilityex": "lingerpotinvisibility2", + "cloudpotinvisibilitylevel2": "lingerpotinvisibility2", + "cloudpotinvis2": "lingerpotinvisibility2", + "cloudpotinvislong": "lingerpotinvisibility2", + "cloudpotinvisextended": "lingerpotinvisibility2", + "cloudpotinvisex": "lingerpotinvisibility2", + "cloudpotinvislevel2": "lingerpotinvisibility2", + "cloudpotinvisible2": "lingerpotinvisibility2", + "cloudpotinvisiblelong": "lingerpotinvisibility2", + "cloudpotinvisibleextended": "lingerpotinvisibility2", + "cloudpotinvisibleex": "lingerpotinvisibility2", + "cloudpotinvisiblelevel2": "lingerpotinvisibility2", + "cloudpotinv2": "lingerpotinvisibility2", + "cloudpotinvlong": "lingerpotinvisibility2", + "cloudpotinvextended": "lingerpotinvisibility2", + "cloudpotinvex": "lingerpotinvisibility2", + "cloudpotinvlevel2": "lingerpotinvisibility2", + "invisibilitycloudpot2": "lingerpotinvisibility2", + "invisibilitycloudpotlong": "lingerpotinvisibility2", + "invisibilitycloudpotextended": "lingerpotinvisibility2", + "invisibilitycloudpotex": "lingerpotinvisibility2", + "invisibilitycloudpotlevel2": "lingerpotinvisibility2", + "inviscloudpot2": "lingerpotinvisibility2", + "inviscloudpotlong": "lingerpotinvisibility2", + "inviscloudpotextended": "lingerpotinvisibility2", + "inviscloudpotex": "lingerpotinvisibility2", + "inviscloudpotlevel2": "lingerpotinvisibility2", + "invisiblecloudpot2": "lingerpotinvisibility2", + "invisiblecloudpotlong": "lingerpotinvisibility2", + "invisiblecloudpotextended": "lingerpotinvisibility2", + "invisiblecloudpotex": "lingerpotinvisibility2", + "invisiblecloudpotlevel2": "lingerpotinvisibility2", + "invcloudpot2": "lingerpotinvisibility2", + "invcloudpotlong": "lingerpotinvisibility2", + "invcloudpotextended": "lingerpotinvisibility2", + "invcloudpotex": "lingerpotinvisibility2", + "invcloudpotlevel2": "lingerpotinvisibility2", + "arrowinvisibility2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_invisibility", + "type": "INVISIBILITY", + "upgraded": false, + "extended": true + } + }, + "arrowinvisibilitylong": "arrowinvisibility2", + "arrowinvisibilityextended": "arrowinvisibility2", + "arrowinvisibilityex": "arrowinvisibility2", + "arrowinvisibilitylevel2": "arrowinvisibility2", + "arrowinvis2": "arrowinvisibility2", + "arrowinvislong": "arrowinvisibility2", + "arrowinvisextended": "arrowinvisibility2", + "arrowinvisex": "arrowinvisibility2", + "arrowinvislevel2": "arrowinvisibility2", + "arrowinvisible2": "arrowinvisibility2", + "arrowinvisiblelong": "arrowinvisibility2", + "arrowinvisibleextended": "arrowinvisibility2", + "arrowinvisibleex": "arrowinvisibility2", + "arrowinvisiblelevel2": "arrowinvisibility2", + "arrowinv2": "arrowinvisibility2", + "arrowinvlong": "arrowinvisibility2", + "arrowinvextended": "arrowinvisibility2", + "arrowinvex": "arrowinvisibility2", + "arrowinvlevel2": "arrowinvisibility2", + "invisibilityarrow2": "arrowinvisibility2", + "invisibilityarrowlong": "arrowinvisibility2", + "invisibilityarrowextended": "arrowinvisibility2", + "invisibilityarrowex": "arrowinvisibility2", + "invisibilityarrowlevel2": "arrowinvisibility2", + "invisarrow2": "arrowinvisibility2", + "invisarrowlong": "arrowinvisibility2", + "invisarrowextended": "arrowinvisibility2", + "invisarrowex": "arrowinvisibility2", + "invisarrowlevel2": "arrowinvisibility2", + "invisiblearrow2": "arrowinvisibility2", + "invisiblearrowlong": "arrowinvisibility2", + "invisiblearrowextended": "arrowinvisibility2", + "invisiblearrowex": "arrowinvisibility2", + "invisiblearrowlevel2": "arrowinvisibility2", + "invarrow2": "arrowinvisibility2", + "invarrowlong": "arrowinvisibility2", + "invarrowextended": "arrowinvisibility2", + "invarrowex": "arrowinvisibility2", + "invarrowlevel2": "arrowinvisibility2", + "leapingpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "leaping", + "type": "JUMP", + "upgraded": false, + "extended": false + } + }, + "leappotion": "leapingpotion", + "leapingpot": "leapingpotion", + "leappot": "leapingpotion", + "potionofleaping": "leapingpotion", + "potionofleap": "leapingpotion", + "potofleaping": "leapingpotion", + "potofleap": "leapingpotion", + "splashleapingpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "leaping", + "type": "JUMP", + "upgraded": false, + "extended": false + } + }, + "splashleappotion": "splashleapingpotion", + "splleapingpotion": "splashleapingpotion", + "splleappotion": "splashleapingpotion", + "leapingsplashpotion": "splashleapingpotion", + "leapsplashpotion": "splashleapingpotion", + "splashleapingpot": "splashleapingpotion", + "splashleappot": "splashleapingpotion", + "splleapingpot": "splashleapingpotion", + "splleappot": "splashleapingpotion", + "leapingsplashpot": "splashleapingpotion", + "leapsplashpot": "splashleapingpotion", + "lingerpotleaping": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "leaping", + "type": "JUMP", + "upgraded": false, + "extended": false + } + }, + "lingerpotleap": "lingerpotleaping", + "leapinglingerpot": "lingerpotleaping", + "leaplingerpot": "lingerpotleaping", + "aoepotionleaping": "lingerpotleaping", + "aoepotionleap": "lingerpotleaping", + "leapingaoepoiont": "lingerpotleaping", + "leapaoepoiont": "lingerpotleaping", + "aoepotleaping": "lingerpotleaping", + "aoepotleap": "lingerpotleaping", + "leapingaoepot": "lingerpotleaping", + "leapaoepot": "lingerpotleaping", + "areapotionleaping": "lingerpotleaping", + "areapotionleap": "lingerpotleaping", + "leapingareapotion": "lingerpotleaping", + "leapareapotion": "lingerpotleaping", + "areapotleaping": "lingerpotleaping", + "areapotleap": "lingerpotleaping", + "leapingareapot": "lingerpotleaping", + "leapareapot": "lingerpotleaping", + "cloudpotionleaping": "lingerpotleaping", + "cloudpotionleap": "lingerpotleaping", + "leapingcloudpotion": "lingerpotleaping", + "leapcloudpotion": "lingerpotleaping", + "cloudpotleaping": "lingerpotleaping", + "cloudpotleap": "lingerpotleaping", + "leapingcloudpot": "lingerpotleaping", + "leapcloudpot": "lingerpotleaping", + "arrowleaping": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "leaping", + "type": "JUMP", + "upgraded": false, + "extended": false + } + }, + "arrowleap": "arrowleaping", + "leapingarrow": "arrowleaping", + "leaparrow": "arrowleaping", + "leapingiipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_leaping", + "type": "JUMP", + "upgraded": true, + "extended": false + } + }, + "leapingstrongpotion": "leapingiipotion", + "leapingleveliipotion": "leapingiipotion", + "leapiipotion": "leapingiipotion", + "leapstrongpotion": "leapingiipotion", + "leapleveliipotion": "leapingiipotion", + "leapingiipot": "leapingiipotion", + "leapingstrongpot": "leapingiipotion", + "leapingleveliipot": "leapingiipotion", + "leapiipot": "leapingiipotion", + "leapstrongpot": "leapingiipotion", + "leapleveliipot": "leapingiipotion", + "potionofleapingii": "leapingiipotion", + "potionofleapingstrong": "leapingiipotion", + "potionofleapinglevelii": "leapingiipotion", + "potionofleapii": "leapingiipotion", + "potionofleapstrong": "leapingiipotion", + "potionofleaplevelii": "leapingiipotion", + "potofleapingii": "leapingiipotion", + "potofleapingstrong": "leapingiipotion", + "potofleapinglevelii": "leapingiipotion", + "potofleapii": "leapingiipotion", + "potofleapstrong": "leapingiipotion", + "potofleaplevelii": "leapingiipotion", + "splashleapingiipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_leaping", + "type": "JUMP", + "upgraded": true, + "extended": false + } + }, + "splashleapingstrongpotion": "splashleapingiipotion", + "splashleapingleveliipotion": "splashleapingiipotion", + "splashleapiipotion": "splashleapingiipotion", + "splashleapstrongpotion": "splashleapingiipotion", + "splashleapleveliipotion": "splashleapingiipotion", + "splleapingiipotion": "splashleapingiipotion", + "splleapingstrongpotion": "splashleapingiipotion", + "splleapingleveliipotion": "splashleapingiipotion", + "splleapiipotion": "splashleapingiipotion", + "splleapstrongpotion": "splashleapingiipotion", + "splleapleveliipotion": "splashleapingiipotion", + "leapingiisplashpotion": "splashleapingiipotion", + "leapingstrongsplashpotion": "splashleapingiipotion", + "leapingleveliisplashpotion": "splashleapingiipotion", + "leapiisplashpotion": "splashleapingiipotion", + "leapstrongsplashpotion": "splashleapingiipotion", + "leapleveliisplashpotion": "splashleapingiipotion", + "splashleapingiipot": "splashleapingiipotion", + "splashleapingstrongpot": "splashleapingiipotion", + "splashleapingleveliipot": "splashleapingiipotion", + "splashleapiipot": "splashleapingiipotion", + "splashleapstrongpot": "splashleapingiipotion", + "splashleapleveliipot": "splashleapingiipotion", + "splleapingiipot": "splashleapingiipotion", + "splleapingstrongpot": "splashleapingiipotion", + "splleapingleveliipot": "splashleapingiipotion", + "splleapiipot": "splashleapingiipotion", + "splleapstrongpot": "splashleapingiipotion", + "splleapleveliipot": "splashleapingiipotion", + "leapingiisplashpot": "splashleapingiipotion", + "leapingstrongsplashpot": "splashleapingiipotion", + "leapingleveliisplashpot": "splashleapingiipotion", + "leapiisplashpot": "splashleapingiipotion", + "leapstrongsplashpot": "splashleapingiipotion", + "leapleveliisplashpot": "splashleapingiipotion", + "lingerpotleapingii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_leaping", + "type": "JUMP", + "upgraded": true, + "extended": false + } + }, + "lingerpotleapingstrong": "lingerpotleapingii", + "lingerpotleapinglevelii": "lingerpotleapingii", + "lingerpotleapii": "lingerpotleapingii", + "lingerpotleapstrong": "lingerpotleapingii", + "lingerpotleaplevelii": "lingerpotleapingii", + "leapinglingerpotii": "lingerpotleapingii", + "leapinglingerpotstrong": "lingerpotleapingii", + "leapinglingerpotlevelii": "lingerpotleapingii", + "leaplingerpotii": "lingerpotleapingii", + "leaplingerpotstrong": "lingerpotleapingii", + "leaplingerpotlevelii": "lingerpotleapingii", + "aoepotionleapingii": "lingerpotleapingii", + "aoepotionleapingstrong": "lingerpotleapingii", + "aoepotionleapinglevelii": "lingerpotleapingii", + "aoepotionleapii": "lingerpotleapingii", + "aoepotionleapstrong": "lingerpotleapingii", + "aoepotionleaplevelii": "lingerpotleapingii", + "leapingaoepoiontii": "lingerpotleapingii", + "leapingaoepoiontstrong": "lingerpotleapingii", + "leapingaoepoiontlevelii": "lingerpotleapingii", + "leapaoepoiontii": "lingerpotleapingii", + "leapaoepoiontstrong": "lingerpotleapingii", + "leapaoepoiontlevelii": "lingerpotleapingii", + "aoepotleapingii": "lingerpotleapingii", + "aoepotleapingstrong": "lingerpotleapingii", + "aoepotleapinglevelii": "lingerpotleapingii", + "aoepotleapii": "lingerpotleapingii", + "aoepotleapstrong": "lingerpotleapingii", + "aoepotleaplevelii": "lingerpotleapingii", + "leapingaoepotii": "lingerpotleapingii", + "leapingaoepotstrong": "lingerpotleapingii", + "leapingaoepotlevelii": "lingerpotleapingii", + "leapaoepotii": "lingerpotleapingii", + "leapaoepotstrong": "lingerpotleapingii", + "leapaoepotlevelii": "lingerpotleapingii", + "areapotionleapingii": "lingerpotleapingii", + "areapotionleapingstrong": "lingerpotleapingii", + "areapotionleapinglevelii": "lingerpotleapingii", + "areapotionleapii": "lingerpotleapingii", + "areapotionleapstrong": "lingerpotleapingii", + "areapotionleaplevelii": "lingerpotleapingii", + "leapingareapotionii": "lingerpotleapingii", + "leapingareapotionstrong": "lingerpotleapingii", + "leapingareapotionlevelii": "lingerpotleapingii", + "leapareapotionii": "lingerpotleapingii", + "leapareapotionstrong": "lingerpotleapingii", + "leapareapotionlevelii": "lingerpotleapingii", + "areapotleapingii": "lingerpotleapingii", + "areapotleapingstrong": "lingerpotleapingii", + "areapotleapinglevelii": "lingerpotleapingii", + "areapotleapii": "lingerpotleapingii", + "areapotleapstrong": "lingerpotleapingii", + "areapotleaplevelii": "lingerpotleapingii", + "leapingareapotii": "lingerpotleapingii", + "leapingareapotstrong": "lingerpotleapingii", + "leapingareapotlevelii": "lingerpotleapingii", + "leapareapotii": "lingerpotleapingii", + "leapareapotstrong": "lingerpotleapingii", + "leapareapotlevelii": "lingerpotleapingii", + "cloudpotionleapingii": "lingerpotleapingii", + "cloudpotionleapingstrong": "lingerpotleapingii", + "cloudpotionleapinglevelii": "lingerpotleapingii", + "cloudpotionleapii": "lingerpotleapingii", + "cloudpotionleapstrong": "lingerpotleapingii", + "cloudpotionleaplevelii": "lingerpotleapingii", + "leapingcloudpotionii": "lingerpotleapingii", + "leapingcloudpotionstrong": "lingerpotleapingii", + "leapingcloudpotionlevelii": "lingerpotleapingii", + "leapcloudpotionii": "lingerpotleapingii", + "leapcloudpotionstrong": "lingerpotleapingii", + "leapcloudpotionlevelii": "lingerpotleapingii", + "cloudpotleapingii": "lingerpotleapingii", + "cloudpotleapingstrong": "lingerpotleapingii", + "cloudpotleapinglevelii": "lingerpotleapingii", + "cloudpotleapii": "lingerpotleapingii", + "cloudpotleapstrong": "lingerpotleapingii", + "cloudpotleaplevelii": "lingerpotleapingii", + "leapingcloudpotii": "lingerpotleapingii", + "leapingcloudpotstrong": "lingerpotleapingii", + "leapingcloudpotlevelii": "lingerpotleapingii", + "leapcloudpotii": "lingerpotleapingii", + "leapcloudpotstrong": "lingerpotleapingii", + "leapcloudpotlevelii": "lingerpotleapingii", + "arrowleapingii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_leaping", + "type": "JUMP", + "upgraded": true, + "extended": false + } + }, + "arrowleapingstrong": "arrowleapingii", + "arrowleapinglevelii": "arrowleapingii", + "arrowleapii": "arrowleapingii", + "arrowleapstrong": "arrowleapingii", + "arrowleaplevelii": "arrowleapingii", + "leapingarrowii": "arrowleapingii", + "leapingarrowstrong": "arrowleapingii", + "leapingarrowlevelii": "arrowleapingii", + "leaparrowii": "arrowleapingii", + "leaparrowstrong": "arrowleapingii", + "leaparrowlevelii": "arrowleapingii", + "leaping2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_leaping", + "type": "JUMP", + "upgraded": false, + "extended": true + } + }, + "leapinglongpotion": "leaping2potion", + "leapingextendedpotion": "leaping2potion", + "leapingexpotion": "leaping2potion", + "leapinglevel2potion": "leaping2potion", + "leap2potion": "leaping2potion", + "leaplongpotion": "leaping2potion", + "leapextendedpotion": "leaping2potion", + "leapexpotion": "leaping2potion", + "leaplevel2potion": "leaping2potion", + "leaping2pot": "leaping2potion", + "leapinglongpot": "leaping2potion", + "leapingextendedpot": "leaping2potion", + "leapingexpot": "leaping2potion", + "leapinglevel2pot": "leaping2potion", + "leap2pot": "leaping2potion", + "leaplongpot": "leaping2potion", + "leapextendedpot": "leaping2potion", + "leapexpot": "leaping2potion", + "leaplevel2pot": "leaping2potion", + "potionofleaping2": "leaping2potion", + "potionofleapinglong": "leaping2potion", + "potionofleapingextended": "leaping2potion", + "potionofleapingex": "leaping2potion", + "potionofleapinglevel2": "leaping2potion", + "potionofleap2": "leaping2potion", + "potionofleaplong": "leaping2potion", + "potionofleapextended": "leaping2potion", + "potionofleapex": "leaping2potion", + "potionofleaplevel2": "leaping2potion", + "potofleaping2": "leaping2potion", + "potofleapinglong": "leaping2potion", + "potofleapingextended": "leaping2potion", + "potofleapingex": "leaping2potion", + "potofleapinglevel2": "leaping2potion", + "potofleap2": "leaping2potion", + "potofleaplong": "leaping2potion", + "potofleapextended": "leaping2potion", + "potofleapex": "leaping2potion", + "potofleaplevel2": "leaping2potion", + "splashleaping2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_leaping", + "type": "JUMP", + "upgraded": false, + "extended": true + } + }, + "splashleapinglongpotion": "splashleaping2potion", + "splashleapingextendedpotion": "splashleaping2potion", + "splashleapingexpotion": "splashleaping2potion", + "splashleapinglevel2potion": "splashleaping2potion", + "splashleap2potion": "splashleaping2potion", + "splashleaplongpotion": "splashleaping2potion", + "splashleapextendedpotion": "splashleaping2potion", + "splashleapexpotion": "splashleaping2potion", + "splashleaplevel2potion": "splashleaping2potion", + "splleaping2potion": "splashleaping2potion", + "splleapinglongpotion": "splashleaping2potion", + "splleapingextendedpotion": "splashleaping2potion", + "splleapingexpotion": "splashleaping2potion", + "splleapinglevel2potion": "splashleaping2potion", + "splleap2potion": "splashleaping2potion", + "splleaplongpotion": "splashleaping2potion", + "splleapextendedpotion": "splashleaping2potion", + "splleapexpotion": "splashleaping2potion", + "splleaplevel2potion": "splashleaping2potion", + "leaping2splashpotion": "splashleaping2potion", + "leapinglongsplashpotion": "splashleaping2potion", + "leapingextendedsplashpotion": "splashleaping2potion", + "leapingexsplashpotion": "splashleaping2potion", + "leapinglevel2splashpotion": "splashleaping2potion", + "leap2splashpotion": "splashleaping2potion", + "leaplongsplashpotion": "splashleaping2potion", + "leapextendedsplashpotion": "splashleaping2potion", + "leapexsplashpotion": "splashleaping2potion", + "leaplevel2splashpotion": "splashleaping2potion", + "splashleaping2pot": "splashleaping2potion", + "splashleapinglongpot": "splashleaping2potion", + "splashleapingextendedpot": "splashleaping2potion", + "splashleapingexpot": "splashleaping2potion", + "splashleapinglevel2pot": "splashleaping2potion", + "splashleap2pot": "splashleaping2potion", + "splashleaplongpot": "splashleaping2potion", + "splashleapextendedpot": "splashleaping2potion", + "splashleapexpot": "splashleaping2potion", + "splashleaplevel2pot": "splashleaping2potion", + "splleaping2pot": "splashleaping2potion", + "splleapinglongpot": "splashleaping2potion", + "splleapingextendedpot": "splashleaping2potion", + "splleapingexpot": "splashleaping2potion", + "splleapinglevel2pot": "splashleaping2potion", + "splleap2pot": "splashleaping2potion", + "splleaplongpot": "splashleaping2potion", + "splleapextendedpot": "splashleaping2potion", + "splleapexpot": "splashleaping2potion", + "splleaplevel2pot": "splashleaping2potion", + "leaping2splashpot": "splashleaping2potion", + "leapinglongsplashpot": "splashleaping2potion", + "leapingextendedsplashpot": "splashleaping2potion", + "leapingexsplashpot": "splashleaping2potion", + "leapinglevel2splashpot": "splashleaping2potion", + "leap2splashpot": "splashleaping2potion", + "leaplongsplashpot": "splashleaping2potion", + "leapextendedsplashpot": "splashleaping2potion", + "leapexsplashpot": "splashleaping2potion", + "leaplevel2splashpot": "splashleaping2potion", + "lingerpotleaping2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_leaping", + "type": "JUMP", + "upgraded": false, + "extended": true + } + }, + "lingerpotleapinglong": "lingerpotleaping2", + "lingerpotleapingextended": "lingerpotleaping2", + "lingerpotleapingex": "lingerpotleaping2", + "lingerpotleapinglevel2": "lingerpotleaping2", + "lingerpotleap2": "lingerpotleaping2", + "lingerpotleaplong": "lingerpotleaping2", + "lingerpotleapextended": "lingerpotleaping2", + "lingerpotleapex": "lingerpotleaping2", + "lingerpotleaplevel2": "lingerpotleaping2", + "leapinglingerpot2": "lingerpotleaping2", + "leapinglingerpotlong": "lingerpotleaping2", + "leapinglingerpotextended": "lingerpotleaping2", + "leapinglingerpotex": "lingerpotleaping2", + "leapinglingerpotlevel2": "lingerpotleaping2", + "leaplingerpot2": "lingerpotleaping2", + "leaplingerpotlong": "lingerpotleaping2", + "leaplingerpotextended": "lingerpotleaping2", + "leaplingerpotex": "lingerpotleaping2", + "leaplingerpotlevel2": "lingerpotleaping2", + "aoepotionleaping2": "lingerpotleaping2", + "aoepotionleapinglong": "lingerpotleaping2", + "aoepotionleapingextended": "lingerpotleaping2", + "aoepotionleapingex": "lingerpotleaping2", + "aoepotionleapinglevel2": "lingerpotleaping2", + "aoepotionleap2": "lingerpotleaping2", + "aoepotionleaplong": "lingerpotleaping2", + "aoepotionleapextended": "lingerpotleaping2", + "aoepotionleapex": "lingerpotleaping2", + "aoepotionleaplevel2": "lingerpotleaping2", + "leapingaoepoiont2": "lingerpotleaping2", + "leapingaoepoiontlong": "lingerpotleaping2", + "leapingaoepoiontextended": "lingerpotleaping2", + "leapingaoepoiontex": "lingerpotleaping2", + "leapingaoepoiontlevel2": "lingerpotleaping2", + "leapaoepoiont2": "lingerpotleaping2", + "leapaoepoiontlong": "lingerpotleaping2", + "leapaoepoiontextended": "lingerpotleaping2", + "leapaoepoiontex": "lingerpotleaping2", + "leapaoepoiontlevel2": "lingerpotleaping2", + "aoepotleaping2": "lingerpotleaping2", + "aoepotleapinglong": "lingerpotleaping2", + "aoepotleapingextended": "lingerpotleaping2", + "aoepotleapingex": "lingerpotleaping2", + "aoepotleapinglevel2": "lingerpotleaping2", + "aoepotleap2": "lingerpotleaping2", + "aoepotleaplong": "lingerpotleaping2", + "aoepotleapextended": "lingerpotleaping2", + "aoepotleapex": "lingerpotleaping2", + "aoepotleaplevel2": "lingerpotleaping2", + "leapingaoepot2": "lingerpotleaping2", + "leapingaoepotlong": "lingerpotleaping2", + "leapingaoepotextended": "lingerpotleaping2", + "leapingaoepotex": "lingerpotleaping2", + "leapingaoepotlevel2": "lingerpotleaping2", + "leapaoepot2": "lingerpotleaping2", + "leapaoepotlong": "lingerpotleaping2", + "leapaoepotextended": "lingerpotleaping2", + "leapaoepotex": "lingerpotleaping2", + "leapaoepotlevel2": "lingerpotleaping2", + "areapotionleaping2": "lingerpotleaping2", + "areapotionleapinglong": "lingerpotleaping2", + "areapotionleapingextended": "lingerpotleaping2", + "areapotionleapingex": "lingerpotleaping2", + "areapotionleapinglevel2": "lingerpotleaping2", + "areapotionleap2": "lingerpotleaping2", + "areapotionleaplong": "lingerpotleaping2", + "areapotionleapextended": "lingerpotleaping2", + "areapotionleapex": "lingerpotleaping2", + "areapotionleaplevel2": "lingerpotleaping2", + "leapingareapotion2": "lingerpotleaping2", + "leapingareapotionlong": "lingerpotleaping2", + "leapingareapotionextended": "lingerpotleaping2", + "leapingareapotionex": "lingerpotleaping2", + "leapingareapotionlevel2": "lingerpotleaping2", + "leapareapotion2": "lingerpotleaping2", + "leapareapotionlong": "lingerpotleaping2", + "leapareapotionextended": "lingerpotleaping2", + "leapareapotionex": "lingerpotleaping2", + "leapareapotionlevel2": "lingerpotleaping2", + "areapotleaping2": "lingerpotleaping2", + "areapotleapinglong": "lingerpotleaping2", + "areapotleapingextended": "lingerpotleaping2", + "areapotleapingex": "lingerpotleaping2", + "areapotleapinglevel2": "lingerpotleaping2", + "areapotleap2": "lingerpotleaping2", + "areapotleaplong": "lingerpotleaping2", + "areapotleapextended": "lingerpotleaping2", + "areapotleapex": "lingerpotleaping2", + "areapotleaplevel2": "lingerpotleaping2", + "leapingareapot2": "lingerpotleaping2", + "leapingareapotlong": "lingerpotleaping2", + "leapingareapotextended": "lingerpotleaping2", + "leapingareapotex": "lingerpotleaping2", + "leapingareapotlevel2": "lingerpotleaping2", + "leapareapot2": "lingerpotleaping2", + "leapareapotlong": "lingerpotleaping2", + "leapareapotextended": "lingerpotleaping2", + "leapareapotex": "lingerpotleaping2", + "leapareapotlevel2": "lingerpotleaping2", + "cloudpotionleaping2": "lingerpotleaping2", + "cloudpotionleapinglong": "lingerpotleaping2", + "cloudpotionleapingextended": "lingerpotleaping2", + "cloudpotionleapingex": "lingerpotleaping2", + "cloudpotionleapinglevel2": "lingerpotleaping2", + "cloudpotionleap2": "lingerpotleaping2", + "cloudpotionleaplong": "lingerpotleaping2", + "cloudpotionleapextended": "lingerpotleaping2", + "cloudpotionleapex": "lingerpotleaping2", + "cloudpotionleaplevel2": "lingerpotleaping2", + "leapingcloudpotion2": "lingerpotleaping2", + "leapingcloudpotionlong": "lingerpotleaping2", + "leapingcloudpotionextended": "lingerpotleaping2", + "leapingcloudpotionex": "lingerpotleaping2", + "leapingcloudpotionlevel2": "lingerpotleaping2", + "leapcloudpotion2": "lingerpotleaping2", + "leapcloudpotionlong": "lingerpotleaping2", + "leapcloudpotionextended": "lingerpotleaping2", + "leapcloudpotionex": "lingerpotleaping2", + "leapcloudpotionlevel2": "lingerpotleaping2", + "cloudpotleaping2": "lingerpotleaping2", + "cloudpotleapinglong": "lingerpotleaping2", + "cloudpotleapingextended": "lingerpotleaping2", + "cloudpotleapingex": "lingerpotleaping2", + "cloudpotleapinglevel2": "lingerpotleaping2", + "cloudpotleap2": "lingerpotleaping2", + "cloudpotleaplong": "lingerpotleaping2", + "cloudpotleapextended": "lingerpotleaping2", + "cloudpotleapex": "lingerpotleaping2", + "cloudpotleaplevel2": "lingerpotleaping2", + "leapingcloudpot2": "lingerpotleaping2", + "leapingcloudpotlong": "lingerpotleaping2", + "leapingcloudpotextended": "lingerpotleaping2", + "leapingcloudpotex": "lingerpotleaping2", + "leapingcloudpotlevel2": "lingerpotleaping2", + "leapcloudpot2": "lingerpotleaping2", + "leapcloudpotlong": "lingerpotleaping2", + "leapcloudpotextended": "lingerpotleaping2", + "leapcloudpotex": "lingerpotleaping2", + "leapcloudpotlevel2": "lingerpotleaping2", + "arrowleaping2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_leaping", + "type": "JUMP", + "upgraded": false, + "extended": true + } + }, + "arrowleapinglong": "arrowleaping2", + "arrowleapingextended": "arrowleaping2", + "arrowleapingex": "arrowleaping2", + "arrowleapinglevel2": "arrowleaping2", + "arrowleap2": "arrowleaping2", + "arrowleaplong": "arrowleaping2", + "arrowleapextended": "arrowleaping2", + "arrowleapex": "arrowleaping2", + "arrowleaplevel2": "arrowleaping2", + "leapingarrow2": "arrowleaping2", + "leapingarrowlong": "arrowleaping2", + "leapingarrowextended": "arrowleaping2", + "leapingarrowex": "arrowleaping2", + "leapingarrowlevel2": "arrowleaping2", + "leaparrow2": "arrowleaping2", + "leaparrowlong": "arrowleaping2", + "leaparrowextended": "arrowleaping2", + "leaparrowex": "arrowleaping2", + "leaparrowlevel2": "arrowleaping2", + "fireresistpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": false + } + }, + "firerespotion": "fireresistpotion", + "fireresistancepotion": "fireresistpotion", + "fireresistpot": "fireresistpotion", + "firerespot": "fireresistpotion", + "fireresistancepot": "fireresistpotion", + "potionoffireresist": "fireresistpotion", + "potionoffireres": "fireresistpotion", + "potionoffireresistance": "fireresistpotion", + "potoffireresist": "fireresistpotion", + "potoffireres": "fireresistpotion", + "potoffireresistance": "fireresistpotion", + "splashfireresistpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": false + } + }, + "splashfirerespotion": "splashfireresistpotion", + "splashfireresistancepotion": "splashfireresistpotion", + "splfireresistpotion": "splashfireresistpotion", + "splfirerespotion": "splashfireresistpotion", + "splfireresistancepotion": "splashfireresistpotion", + "fireresistsplashpotion": "splashfireresistpotion", + "fireressplashpotion": "splashfireresistpotion", + "fireresistancesplashpotion": "splashfireresistpotion", + "splashfireresistpot": "splashfireresistpotion", + "splashfirerespot": "splashfireresistpotion", + "splashfireresistancepot": "splashfireresistpotion", + "splfireresistpot": "splashfireresistpotion", + "splfirerespot": "splashfireresistpotion", + "splfireresistancepot": "splashfireresistpotion", + "fireresistsplashpot": "splashfireresistpotion", + "fireressplashpot": "splashfireresistpotion", + "fireresistancesplashpot": "splashfireresistpotion", + "lingerpotfireresist": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": false + } + }, + "lingerpotfireres": "lingerpotfireresist", + "lingerpotfireresistance": "lingerpotfireresist", + "fireresistlingerpot": "lingerpotfireresist", + "firereslingerpot": "lingerpotfireresist", + "fireresistancelingerpot": "lingerpotfireresist", + "aoepotionfireresist": "lingerpotfireresist", + "aoepotionfireres": "lingerpotfireresist", + "aoepotionfireresistance": "lingerpotfireresist", + "fireresistaoepoiont": "lingerpotfireresist", + "fireresaoepoiont": "lingerpotfireresist", + "fireresistanceaoepoiont": "lingerpotfireresist", + "aoepotfireresist": "lingerpotfireresist", + "aoepotfireres": "lingerpotfireresist", + "aoepotfireresistance": "lingerpotfireresist", + "fireresistaoepot": "lingerpotfireresist", + "fireresaoepot": "lingerpotfireresist", + "fireresistanceaoepot": "lingerpotfireresist", + "areapotionfireresist": "lingerpotfireresist", + "areapotionfireres": "lingerpotfireresist", + "areapotionfireresistance": "lingerpotfireresist", + "fireresistareapotion": "lingerpotfireresist", + "fireresareapotion": "lingerpotfireresist", + "fireresistanceareapotion": "lingerpotfireresist", + "areapotfireresist": "lingerpotfireresist", + "areapotfireres": "lingerpotfireresist", + "areapotfireresistance": "lingerpotfireresist", + "fireresistareapot": "lingerpotfireresist", + "fireresareapot": "lingerpotfireresist", + "fireresistanceareapot": "lingerpotfireresist", + "cloudpotionfireresist": "lingerpotfireresist", + "cloudpotionfireres": "lingerpotfireresist", + "cloudpotionfireresistance": "lingerpotfireresist", + "fireresistcloudpotion": "lingerpotfireresist", + "firerescloudpotion": "lingerpotfireresist", + "fireresistancecloudpotion": "lingerpotfireresist", + "cloudpotfireresist": "lingerpotfireresist", + "cloudpotfireres": "lingerpotfireresist", + "cloudpotfireresistance": "lingerpotfireresist", + "fireresistcloudpot": "lingerpotfireresist", + "firerescloudpot": "lingerpotfireresist", + "fireresistancecloudpot": "lingerpotfireresist", + "arrowfireresist": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": false + } + }, + "arrowfireres": "arrowfireresist", + "arrowfireresistance": "arrowfireresist", + "fireresistarrow": "arrowfireresist", + "fireresarrow": "arrowfireresist", + "fireresistancearrow": "arrowfireresist", + "fireresist2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": true + } + }, + "fireresistlongpotion": "fireresist2potion", + "fireresistextendedpotion": "fireresist2potion", + "fireresistexpotion": "fireresist2potion", + "fireresistlevel2potion": "fireresist2potion", + "fireres2potion": "fireresist2potion", + "firereslongpotion": "fireresist2potion", + "fireresextendedpotion": "fireresist2potion", + "fireresexpotion": "fireresist2potion", + "firereslevel2potion": "fireresist2potion", + "fireresistance2potion": "fireresist2potion", + "fireresistancelongpotion": "fireresist2potion", + "fireresistanceextendedpotion": "fireresist2potion", + "fireresistanceexpotion": "fireresist2potion", + "fireresistancelevel2potion": "fireresist2potion", + "fireresist2pot": "fireresist2potion", + "fireresistlongpot": "fireresist2potion", + "fireresistextendedpot": "fireresist2potion", + "fireresistexpot": "fireresist2potion", + "fireresistlevel2pot": "fireresist2potion", + "fireres2pot": "fireresist2potion", + "firereslongpot": "fireresist2potion", + "fireresextendedpot": "fireresist2potion", + "fireresexpot": "fireresist2potion", + "firereslevel2pot": "fireresist2potion", + "fireresistance2pot": "fireresist2potion", + "fireresistancelongpot": "fireresist2potion", + "fireresistanceextendedpot": "fireresist2potion", + "fireresistanceexpot": "fireresist2potion", + "fireresistancelevel2pot": "fireresist2potion", + "potionoffireresist2": "fireresist2potion", + "potionoffireresistlong": "fireresist2potion", + "potionoffireresistextended": "fireresist2potion", + "potionoffireresistex": "fireresist2potion", + "potionoffireresistlevel2": "fireresist2potion", + "potionoffireres2": "fireresist2potion", + "potionoffirereslong": "fireresist2potion", + "potionoffireresextended": "fireresist2potion", + "potionoffireresex": "fireresist2potion", + "potionoffirereslevel2": "fireresist2potion", + "potionoffireresistance2": "fireresist2potion", + "potionoffireresistancelong": "fireresist2potion", + "potionoffireresistanceextended": "fireresist2potion", + "potionoffireresistanceex": "fireresist2potion", + "potionoffireresistancelevel2": "fireresist2potion", + "potoffireresist2": "fireresist2potion", + "potoffireresistlong": "fireresist2potion", + "potoffireresistextended": "fireresist2potion", + "potoffireresistex": "fireresist2potion", + "potoffireresistlevel2": "fireresist2potion", + "potoffireres2": "fireresist2potion", + "potoffirereslong": "fireresist2potion", + "potoffireresextended": "fireresist2potion", + "potoffireresex": "fireresist2potion", + "potoffirereslevel2": "fireresist2potion", + "potoffireresistance2": "fireresist2potion", + "potoffireresistancelong": "fireresist2potion", + "potoffireresistanceextended": "fireresist2potion", + "potoffireresistanceex": "fireresist2potion", + "potoffireresistancelevel2": "fireresist2potion", + "splashfireresist2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": true + } + }, + "splashfireresistlongpotion": "splashfireresist2potion", + "splashfireresistextendedpotion": "splashfireresist2potion", + "splashfireresistexpotion": "splashfireresist2potion", + "splashfireresistlevel2potion": "splashfireresist2potion", + "splashfireres2potion": "splashfireresist2potion", + "splashfirereslongpotion": "splashfireresist2potion", + "splashfireresextendedpotion": "splashfireresist2potion", + "splashfireresexpotion": "splashfireresist2potion", + "splashfirereslevel2potion": "splashfireresist2potion", + "splashfireresistance2potion": "splashfireresist2potion", + "splashfireresistancelongpotion": "splashfireresist2potion", + "splashfireresistanceextendedpotion": "splashfireresist2potion", + "splashfireresistanceexpotion": "splashfireresist2potion", + "splashfireresistancelevel2potion": "splashfireresist2potion", + "splfireresist2potion": "splashfireresist2potion", + "splfireresistlongpotion": "splashfireresist2potion", + "splfireresistextendedpotion": "splashfireresist2potion", + "splfireresistexpotion": "splashfireresist2potion", + "splfireresistlevel2potion": "splashfireresist2potion", + "splfireres2potion": "splashfireresist2potion", + "splfirereslongpotion": "splashfireresist2potion", + "splfireresextendedpotion": "splashfireresist2potion", + "splfireresexpotion": "splashfireresist2potion", + "splfirereslevel2potion": "splashfireresist2potion", + "splfireresistance2potion": "splashfireresist2potion", + "splfireresistancelongpotion": "splashfireresist2potion", + "splfireresistanceextendedpotion": "splashfireresist2potion", + "splfireresistanceexpotion": "splashfireresist2potion", + "splfireresistancelevel2potion": "splashfireresist2potion", + "fireresist2splashpotion": "splashfireresist2potion", + "fireresistlongsplashpotion": "splashfireresist2potion", + "fireresistextendedsplashpotion": "splashfireresist2potion", + "fireresistexsplashpotion": "splashfireresist2potion", + "fireresistlevel2splashpotion": "splashfireresist2potion", + "fireres2splashpotion": "splashfireresist2potion", + "firereslongsplashpotion": "splashfireresist2potion", + "fireresextendedsplashpotion": "splashfireresist2potion", + "fireresexsplashpotion": "splashfireresist2potion", + "firereslevel2splashpotion": "splashfireresist2potion", + "fireresistance2splashpotion": "splashfireresist2potion", + "fireresistancelongsplashpotion": "splashfireresist2potion", + "fireresistanceextendedsplashpotion": "splashfireresist2potion", + "fireresistanceexsplashpotion": "splashfireresist2potion", + "fireresistancelevel2splashpotion": "splashfireresist2potion", + "splashfireresist2pot": "splashfireresist2potion", + "splashfireresistlongpot": "splashfireresist2potion", + "splashfireresistextendedpot": "splashfireresist2potion", + "splashfireresistexpot": "splashfireresist2potion", + "splashfireresistlevel2pot": "splashfireresist2potion", + "splashfireres2pot": "splashfireresist2potion", + "splashfirereslongpot": "splashfireresist2potion", + "splashfireresextendedpot": "splashfireresist2potion", + "splashfireresexpot": "splashfireresist2potion", + "splashfirereslevel2pot": "splashfireresist2potion", + "splashfireresistance2pot": "splashfireresist2potion", + "splashfireresistancelongpot": "splashfireresist2potion", + "splashfireresistanceextendedpot": "splashfireresist2potion", + "splashfireresistanceexpot": "splashfireresist2potion", + "splashfireresistancelevel2pot": "splashfireresist2potion", + "splfireresist2pot": "splashfireresist2potion", + "splfireresistlongpot": "splashfireresist2potion", + "splfireresistextendedpot": "splashfireresist2potion", + "splfireresistexpot": "splashfireresist2potion", + "splfireresistlevel2pot": "splashfireresist2potion", + "splfireres2pot": "splashfireresist2potion", + "splfirereslongpot": "splashfireresist2potion", + "splfireresextendedpot": "splashfireresist2potion", + "splfireresexpot": "splashfireresist2potion", + "splfirereslevel2pot": "splashfireresist2potion", + "splfireresistance2pot": "splashfireresist2potion", + "splfireresistancelongpot": "splashfireresist2potion", + "splfireresistanceextendedpot": "splashfireresist2potion", + "splfireresistanceexpot": "splashfireresist2potion", + "splfireresistancelevel2pot": "splashfireresist2potion", + "fireresist2splashpot": "splashfireresist2potion", + "fireresistlongsplashpot": "splashfireresist2potion", + "fireresistextendedsplashpot": "splashfireresist2potion", + "fireresistexsplashpot": "splashfireresist2potion", + "fireresistlevel2splashpot": "splashfireresist2potion", + "fireres2splashpot": "splashfireresist2potion", + "firereslongsplashpot": "splashfireresist2potion", + "fireresextendedsplashpot": "splashfireresist2potion", + "fireresexsplashpot": "splashfireresist2potion", + "firereslevel2splashpot": "splashfireresist2potion", + "fireresistance2splashpot": "splashfireresist2potion", + "fireresistancelongsplashpot": "splashfireresist2potion", + "fireresistanceextendedsplashpot": "splashfireresist2potion", + "fireresistanceexsplashpot": "splashfireresist2potion", + "fireresistancelevel2splashpot": "splashfireresist2potion", + "lingerpotfireresist2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": true + } + }, + "lingerpotfireresistlong": "lingerpotfireresist2", + "lingerpotfireresistextended": "lingerpotfireresist2", + "lingerpotfireresistex": "lingerpotfireresist2", + "lingerpotfireresistlevel2": "lingerpotfireresist2", + "lingerpotfireres2": "lingerpotfireresist2", + "lingerpotfirereslong": "lingerpotfireresist2", + "lingerpotfireresextended": "lingerpotfireresist2", + "lingerpotfireresex": "lingerpotfireresist2", + "lingerpotfirereslevel2": "lingerpotfireresist2", + "lingerpotfireresistance2": "lingerpotfireresist2", + "lingerpotfireresistancelong": "lingerpotfireresist2", + "lingerpotfireresistanceextended": "lingerpotfireresist2", + "lingerpotfireresistanceex": "lingerpotfireresist2", + "lingerpotfireresistancelevel2": "lingerpotfireresist2", + "fireresistlingerpot2": "lingerpotfireresist2", + "fireresistlingerpotlong": "lingerpotfireresist2", + "fireresistlingerpotextended": "lingerpotfireresist2", + "fireresistlingerpotex": "lingerpotfireresist2", + "fireresistlingerpotlevel2": "lingerpotfireresist2", + "firereslingerpot2": "lingerpotfireresist2", + "firereslingerpotlong": "lingerpotfireresist2", + "firereslingerpotextended": "lingerpotfireresist2", + "firereslingerpotex": "lingerpotfireresist2", + "firereslingerpotlevel2": "lingerpotfireresist2", + "fireresistancelingerpot2": "lingerpotfireresist2", + "fireresistancelingerpotlong": "lingerpotfireresist2", + "fireresistancelingerpotextended": "lingerpotfireresist2", + "fireresistancelingerpotex": "lingerpotfireresist2", + "fireresistancelingerpotlevel2": "lingerpotfireresist2", + "aoepotionfireresist2": "lingerpotfireresist2", + "aoepotionfireresistlong": "lingerpotfireresist2", + "aoepotionfireresistextended": "lingerpotfireresist2", + "aoepotionfireresistex": "lingerpotfireresist2", + "aoepotionfireresistlevel2": "lingerpotfireresist2", + "aoepotionfireres2": "lingerpotfireresist2", + "aoepotionfirereslong": "lingerpotfireresist2", + "aoepotionfireresextended": "lingerpotfireresist2", + "aoepotionfireresex": "lingerpotfireresist2", + "aoepotionfirereslevel2": "lingerpotfireresist2", + "aoepotionfireresistance2": "lingerpotfireresist2", + "aoepotionfireresistancelong": "lingerpotfireresist2", + "aoepotionfireresistanceextended": "lingerpotfireresist2", + "aoepotionfireresistanceex": "lingerpotfireresist2", + "aoepotionfireresistancelevel2": "lingerpotfireresist2", + "fireresistaoepoiont2": "lingerpotfireresist2", + "fireresistaoepoiontlong": "lingerpotfireresist2", + "fireresistaoepoiontextended": "lingerpotfireresist2", + "fireresistaoepoiontex": "lingerpotfireresist2", + "fireresistaoepoiontlevel2": "lingerpotfireresist2", + "fireresaoepoiont2": "lingerpotfireresist2", + "fireresaoepoiontlong": "lingerpotfireresist2", + "fireresaoepoiontextended": "lingerpotfireresist2", + "fireresaoepoiontex": "lingerpotfireresist2", + "fireresaoepoiontlevel2": "lingerpotfireresist2", + "fireresistanceaoepoiont2": "lingerpotfireresist2", + "fireresistanceaoepoiontlong": "lingerpotfireresist2", + "fireresistanceaoepoiontextended": "lingerpotfireresist2", + "fireresistanceaoepoiontex": "lingerpotfireresist2", + "fireresistanceaoepoiontlevel2": "lingerpotfireresist2", + "aoepotfireresist2": "lingerpotfireresist2", + "aoepotfireresistlong": "lingerpotfireresist2", + "aoepotfireresistextended": "lingerpotfireresist2", + "aoepotfireresistex": "lingerpotfireresist2", + "aoepotfireresistlevel2": "lingerpotfireresist2", + "aoepotfireres2": "lingerpotfireresist2", + "aoepotfirereslong": "lingerpotfireresist2", + "aoepotfireresextended": "lingerpotfireresist2", + "aoepotfireresex": "lingerpotfireresist2", + "aoepotfirereslevel2": "lingerpotfireresist2", + "aoepotfireresistance2": "lingerpotfireresist2", + "aoepotfireresistancelong": "lingerpotfireresist2", + "aoepotfireresistanceextended": "lingerpotfireresist2", + "aoepotfireresistanceex": "lingerpotfireresist2", + "aoepotfireresistancelevel2": "lingerpotfireresist2", + "fireresistaoepot2": "lingerpotfireresist2", + "fireresistaoepotlong": "lingerpotfireresist2", + "fireresistaoepotextended": "lingerpotfireresist2", + "fireresistaoepotex": "lingerpotfireresist2", + "fireresistaoepotlevel2": "lingerpotfireresist2", + "fireresaoepot2": "lingerpotfireresist2", + "fireresaoepotlong": "lingerpotfireresist2", + "fireresaoepotextended": "lingerpotfireresist2", + "fireresaoepotex": "lingerpotfireresist2", + "fireresaoepotlevel2": "lingerpotfireresist2", + "fireresistanceaoepot2": "lingerpotfireresist2", + "fireresistanceaoepotlong": "lingerpotfireresist2", + "fireresistanceaoepotextended": "lingerpotfireresist2", + "fireresistanceaoepotex": "lingerpotfireresist2", + "fireresistanceaoepotlevel2": "lingerpotfireresist2", + "areapotionfireresist2": "lingerpotfireresist2", + "areapotionfireresistlong": "lingerpotfireresist2", + "areapotionfireresistextended": "lingerpotfireresist2", + "areapotionfireresistex": "lingerpotfireresist2", + "areapotionfireresistlevel2": "lingerpotfireresist2", + "areapotionfireres2": "lingerpotfireresist2", + "areapotionfirereslong": "lingerpotfireresist2", + "areapotionfireresextended": "lingerpotfireresist2", + "areapotionfireresex": "lingerpotfireresist2", + "areapotionfirereslevel2": "lingerpotfireresist2", + "areapotionfireresistance2": "lingerpotfireresist2", + "areapotionfireresistancelong": "lingerpotfireresist2", + "areapotionfireresistanceextended": "lingerpotfireresist2", + "areapotionfireresistanceex": "lingerpotfireresist2", + "areapotionfireresistancelevel2": "lingerpotfireresist2", + "fireresistareapotion2": "lingerpotfireresist2", + "fireresistareapotionlong": "lingerpotfireresist2", + "fireresistareapotionextended": "lingerpotfireresist2", + "fireresistareapotionex": "lingerpotfireresist2", + "fireresistareapotionlevel2": "lingerpotfireresist2", + "fireresareapotion2": "lingerpotfireresist2", + "fireresareapotionlong": "lingerpotfireresist2", + "fireresareapotionextended": "lingerpotfireresist2", + "fireresareapotionex": "lingerpotfireresist2", + "fireresareapotionlevel2": "lingerpotfireresist2", + "fireresistanceareapotion2": "lingerpotfireresist2", + "fireresistanceareapotionlong": "lingerpotfireresist2", + "fireresistanceareapotionextended": "lingerpotfireresist2", + "fireresistanceareapotionex": "lingerpotfireresist2", + "fireresistanceareapotionlevel2": "lingerpotfireresist2", + "areapotfireresist2": "lingerpotfireresist2", + "areapotfireresistlong": "lingerpotfireresist2", + "areapotfireresistextended": "lingerpotfireresist2", + "areapotfireresistex": "lingerpotfireresist2", + "areapotfireresistlevel2": "lingerpotfireresist2", + "areapotfireres2": "lingerpotfireresist2", + "areapotfirereslong": "lingerpotfireresist2", + "areapotfireresextended": "lingerpotfireresist2", + "areapotfireresex": "lingerpotfireresist2", + "areapotfirereslevel2": "lingerpotfireresist2", + "areapotfireresistance2": "lingerpotfireresist2", + "areapotfireresistancelong": "lingerpotfireresist2", + "areapotfireresistanceextended": "lingerpotfireresist2", + "areapotfireresistanceex": "lingerpotfireresist2", + "areapotfireresistancelevel2": "lingerpotfireresist2", + "fireresistareapot2": "lingerpotfireresist2", + "fireresistareapotlong": "lingerpotfireresist2", + "fireresistareapotextended": "lingerpotfireresist2", + "fireresistareapotex": "lingerpotfireresist2", + "fireresistareapotlevel2": "lingerpotfireresist2", + "fireresareapot2": "lingerpotfireresist2", + "fireresareapotlong": "lingerpotfireresist2", + "fireresareapotextended": "lingerpotfireresist2", + "fireresareapotex": "lingerpotfireresist2", + "fireresareapotlevel2": "lingerpotfireresist2", + "fireresistanceareapot2": "lingerpotfireresist2", + "fireresistanceareapotlong": "lingerpotfireresist2", + "fireresistanceareapotextended": "lingerpotfireresist2", + "fireresistanceareapotex": "lingerpotfireresist2", + "fireresistanceareapotlevel2": "lingerpotfireresist2", + "cloudpotionfireresist2": "lingerpotfireresist2", + "cloudpotionfireresistlong": "lingerpotfireresist2", + "cloudpotionfireresistextended": "lingerpotfireresist2", + "cloudpotionfireresistex": "lingerpotfireresist2", + "cloudpotionfireresistlevel2": "lingerpotfireresist2", + "cloudpotionfireres2": "lingerpotfireresist2", + "cloudpotionfirereslong": "lingerpotfireresist2", + "cloudpotionfireresextended": "lingerpotfireresist2", + "cloudpotionfireresex": "lingerpotfireresist2", + "cloudpotionfirereslevel2": "lingerpotfireresist2", + "cloudpotionfireresistance2": "lingerpotfireresist2", + "cloudpotionfireresistancelong": "lingerpotfireresist2", + "cloudpotionfireresistanceextended": "lingerpotfireresist2", + "cloudpotionfireresistanceex": "lingerpotfireresist2", + "cloudpotionfireresistancelevel2": "lingerpotfireresist2", + "fireresistcloudpotion2": "lingerpotfireresist2", + "fireresistcloudpotionlong": "lingerpotfireresist2", + "fireresistcloudpotionextended": "lingerpotfireresist2", + "fireresistcloudpotionex": "lingerpotfireresist2", + "fireresistcloudpotionlevel2": "lingerpotfireresist2", + "firerescloudpotion2": "lingerpotfireresist2", + "firerescloudpotionlong": "lingerpotfireresist2", + "firerescloudpotionextended": "lingerpotfireresist2", + "firerescloudpotionex": "lingerpotfireresist2", + "firerescloudpotionlevel2": "lingerpotfireresist2", + "fireresistancecloudpotion2": "lingerpotfireresist2", + "fireresistancecloudpotionlong": "lingerpotfireresist2", + "fireresistancecloudpotionextended": "lingerpotfireresist2", + "fireresistancecloudpotionex": "lingerpotfireresist2", + "fireresistancecloudpotionlevel2": "lingerpotfireresist2", + "cloudpotfireresist2": "lingerpotfireresist2", + "cloudpotfireresistlong": "lingerpotfireresist2", + "cloudpotfireresistextended": "lingerpotfireresist2", + "cloudpotfireresistex": "lingerpotfireresist2", + "cloudpotfireresistlevel2": "lingerpotfireresist2", + "cloudpotfireres2": "lingerpotfireresist2", + "cloudpotfirereslong": "lingerpotfireresist2", + "cloudpotfireresextended": "lingerpotfireresist2", + "cloudpotfireresex": "lingerpotfireresist2", + "cloudpotfirereslevel2": "lingerpotfireresist2", + "cloudpotfireresistance2": "lingerpotfireresist2", + "cloudpotfireresistancelong": "lingerpotfireresist2", + "cloudpotfireresistanceextended": "lingerpotfireresist2", + "cloudpotfireresistanceex": "lingerpotfireresist2", + "cloudpotfireresistancelevel2": "lingerpotfireresist2", + "fireresistcloudpot2": "lingerpotfireresist2", + "fireresistcloudpotlong": "lingerpotfireresist2", + "fireresistcloudpotextended": "lingerpotfireresist2", + "fireresistcloudpotex": "lingerpotfireresist2", + "fireresistcloudpotlevel2": "lingerpotfireresist2", + "firerescloudpot2": "lingerpotfireresist2", + "firerescloudpotlong": "lingerpotfireresist2", + "firerescloudpotextended": "lingerpotfireresist2", + "firerescloudpotex": "lingerpotfireresist2", + "firerescloudpotlevel2": "lingerpotfireresist2", + "fireresistancecloudpot2": "lingerpotfireresist2", + "fireresistancecloudpotlong": "lingerpotfireresist2", + "fireresistancecloudpotextended": "lingerpotfireresist2", + "fireresistancecloudpotex": "lingerpotfireresist2", + "fireresistancecloudpotlevel2": "lingerpotfireresist2", + "arrowfireresist2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_fire_resistance", + "type": "FIRE_RESISTANCE", + "upgraded": false, + "extended": true + } + }, + "arrowfireresistlong": "arrowfireresist2", + "arrowfireresistextended": "arrowfireresist2", + "arrowfireresistex": "arrowfireresist2", + "arrowfireresistlevel2": "arrowfireresist2", + "arrowfireres2": "arrowfireresist2", + "arrowfirereslong": "arrowfireresist2", + "arrowfireresextended": "arrowfireresist2", + "arrowfireresex": "arrowfireresist2", + "arrowfirereslevel2": "arrowfireresist2", + "arrowfireresistance2": "arrowfireresist2", + "arrowfireresistancelong": "arrowfireresist2", + "arrowfireresistanceextended": "arrowfireresist2", + "arrowfireresistanceex": "arrowfireresist2", + "arrowfireresistancelevel2": "arrowfireresist2", + "fireresistarrow2": "arrowfireresist2", + "fireresistarrowlong": "arrowfireresist2", + "fireresistarrowextended": "arrowfireresist2", + "fireresistarrowex": "arrowfireresist2", + "fireresistarrowlevel2": "arrowfireresist2", + "fireresarrow2": "arrowfireresist2", + "fireresarrowlong": "arrowfireresist2", + "fireresarrowextended": "arrowfireresist2", + "fireresarrowex": "arrowfireresist2", + "fireresarrowlevel2": "arrowfireresist2", + "fireresistancearrow2": "arrowfireresist2", + "fireresistancearrowlong": "arrowfireresist2", + "fireresistancearrowextended": "arrowfireresist2", + "fireresistancearrowex": "arrowfireresist2", + "fireresistancearrowlevel2": "arrowfireresist2", + "swiftnesspotion": { + "material": "POTION", + "potionData": { + "vanillaType": "swiftness", + "type": "SPEED", + "upgraded": false, + "extended": false + } + }, + "swiftpotion": "swiftnesspotion", + "speedpotion": "swiftnesspotion", + "swiftnesspot": "swiftnesspotion", + "swiftpot": "swiftnesspotion", + "speedpot": "swiftnesspotion", + "potionofswiftness": "swiftnesspotion", + "potionofswift": "swiftnesspotion", + "potionofspeed": "swiftnesspotion", + "potofswiftness": "swiftnesspotion", + "potofswift": "swiftnesspotion", + "potofspeed": "swiftnesspotion", + "splashswiftnesspotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "swiftness", + "type": "SPEED", + "upgraded": false, + "extended": false + } + }, + "splashswiftpotion": "splashswiftnesspotion", + "splashspeedpotion": "splashswiftnesspotion", + "splswiftnesspotion": "splashswiftnesspotion", + "splswiftpotion": "splashswiftnesspotion", + "splspeedpotion": "splashswiftnesspotion", + "swiftnesssplashpotion": "splashswiftnesspotion", + "swiftsplashpotion": "splashswiftnesspotion", + "speedsplashpotion": "splashswiftnesspotion", + "splashswiftnesspot": "splashswiftnesspotion", + "splashswiftpot": "splashswiftnesspotion", + "splashspeedpot": "splashswiftnesspotion", + "splswiftnesspot": "splashswiftnesspotion", + "splswiftpot": "splashswiftnesspotion", + "splspeedpot": "splashswiftnesspotion", + "swiftnesssplashpot": "splashswiftnesspotion", + "swiftsplashpot": "splashswiftnesspotion", + "speedsplashpot": "splashswiftnesspotion", + "lingerpotswiftness": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "swiftness", + "type": "SPEED", + "upgraded": false, + "extended": false + } + }, + "lingerpotswift": "lingerpotswiftness", + "lingerpotspeed": "lingerpotswiftness", + "swiftnesslingerpot": "lingerpotswiftness", + "swiftlingerpot": "lingerpotswiftness", + "speedlingerpot": "lingerpotswiftness", + "aoepotionswiftness": "lingerpotswiftness", + "aoepotionswift": "lingerpotswiftness", + "aoepotionspeed": "lingerpotswiftness", + "swiftnessaoepoiont": "lingerpotswiftness", + "swiftaoepoiont": "lingerpotswiftness", + "speedaoepoiont": "lingerpotswiftness", + "aoepotswiftness": "lingerpotswiftness", + "aoepotswift": "lingerpotswiftness", + "aoepotspeed": "lingerpotswiftness", + "swiftnessaoepot": "lingerpotswiftness", + "swiftaoepot": "lingerpotswiftness", + "speedaoepot": "lingerpotswiftness", + "areapotionswiftness": "lingerpotswiftness", + "areapotionswift": "lingerpotswiftness", + "areapotionspeed": "lingerpotswiftness", + "swiftnessareapotion": "lingerpotswiftness", + "swiftareapotion": "lingerpotswiftness", + "speedareapotion": "lingerpotswiftness", + "areapotswiftness": "lingerpotswiftness", + "areapotswift": "lingerpotswiftness", + "areapotspeed": "lingerpotswiftness", + "swiftnessareapot": "lingerpotswiftness", + "swiftareapot": "lingerpotswiftness", + "speedareapot": "lingerpotswiftness", + "cloudpotionswiftness": "lingerpotswiftness", + "cloudpotionswift": "lingerpotswiftness", + "cloudpotionspeed": "lingerpotswiftness", + "swiftnesscloudpotion": "lingerpotswiftness", + "swiftcloudpotion": "lingerpotswiftness", + "speedcloudpotion": "lingerpotswiftness", + "cloudpotswiftness": "lingerpotswiftness", + "cloudpotswift": "lingerpotswiftness", + "cloudpotspeed": "lingerpotswiftness", + "swiftnesscloudpot": "lingerpotswiftness", + "swiftcloudpot": "lingerpotswiftness", + "speedcloudpot": "lingerpotswiftness", + "arrowswiftness": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "swiftness", + "type": "SPEED", + "upgraded": false, + "extended": false + } + }, + "arrowswift": "arrowswiftness", + "arrowspeed": "arrowswiftness", + "swiftnessarrow": "arrowswiftness", + "swiftarrow": "arrowswiftness", + "speedarrow": "arrowswiftness", + "swiftnessiipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_swiftness", + "type": "SPEED", + "upgraded": true, + "extended": false + } + }, + "swiftnessstrongpotion": "swiftnessiipotion", + "swiftnessleveliipotion": "swiftnessiipotion", + "swiftiipotion": "swiftnessiipotion", + "swiftstrongpotion": "swiftnessiipotion", + "swiftleveliipotion": "swiftnessiipotion", + "speediipotion": "swiftnessiipotion", + "speedstrongpotion": "swiftnessiipotion", + "speedleveliipotion": "swiftnessiipotion", + "swiftnessiipot": "swiftnessiipotion", + "swiftnessstrongpot": "swiftnessiipotion", + "swiftnessleveliipot": "swiftnessiipotion", + "swiftiipot": "swiftnessiipotion", + "swiftstrongpot": "swiftnessiipotion", + "swiftleveliipot": "swiftnessiipotion", + "speediipot": "swiftnessiipotion", + "speedstrongpot": "swiftnessiipotion", + "speedleveliipot": "swiftnessiipotion", + "potionofswiftnessii": "swiftnessiipotion", + "potionofswiftnessstrong": "swiftnessiipotion", + "potionofswiftnesslevelii": "swiftnessiipotion", + "potionofswiftii": "swiftnessiipotion", + "potionofswiftstrong": "swiftnessiipotion", + "potionofswiftlevelii": "swiftnessiipotion", + "potionofspeedii": "swiftnessiipotion", + "potionofspeedstrong": "swiftnessiipotion", + "potionofspeedlevelii": "swiftnessiipotion", + "potofswiftnessii": "swiftnessiipotion", + "potofswiftnessstrong": "swiftnessiipotion", + "potofswiftnesslevelii": "swiftnessiipotion", + "potofswiftii": "swiftnessiipotion", + "potofswiftstrong": "swiftnessiipotion", + "potofswiftlevelii": "swiftnessiipotion", + "potofspeedii": "swiftnessiipotion", + "potofspeedstrong": "swiftnessiipotion", + "potofspeedlevelii": "swiftnessiipotion", + "splashswiftnessiipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_swiftness", + "type": "SPEED", + "upgraded": true, + "extended": false + } + }, + "splashswiftnessstrongpotion": "splashswiftnessiipotion", + "splashswiftnessleveliipotion": "splashswiftnessiipotion", + "splashswiftiipotion": "splashswiftnessiipotion", + "splashswiftstrongpotion": "splashswiftnessiipotion", + "splashswiftleveliipotion": "splashswiftnessiipotion", + "splashspeediipotion": "splashswiftnessiipotion", + "splashspeedstrongpotion": "splashswiftnessiipotion", + "splashspeedleveliipotion": "splashswiftnessiipotion", + "splswiftnessiipotion": "splashswiftnessiipotion", + "splswiftnessstrongpotion": "splashswiftnessiipotion", + "splswiftnessleveliipotion": "splashswiftnessiipotion", + "splswiftiipotion": "splashswiftnessiipotion", + "splswiftstrongpotion": "splashswiftnessiipotion", + "splswiftleveliipotion": "splashswiftnessiipotion", + "splspeediipotion": "splashswiftnessiipotion", + "splspeedstrongpotion": "splashswiftnessiipotion", + "splspeedleveliipotion": "splashswiftnessiipotion", + "swiftnessiisplashpotion": "splashswiftnessiipotion", + "swiftnessstrongsplashpotion": "splashswiftnessiipotion", + "swiftnessleveliisplashpotion": "splashswiftnessiipotion", + "swiftiisplashpotion": "splashswiftnessiipotion", + "swiftstrongsplashpotion": "splashswiftnessiipotion", + "swiftleveliisplashpotion": "splashswiftnessiipotion", + "speediisplashpotion": "splashswiftnessiipotion", + "speedstrongsplashpotion": "splashswiftnessiipotion", + "speedleveliisplashpotion": "splashswiftnessiipotion", + "splashswiftnessiipot": "splashswiftnessiipotion", + "splashswiftnessstrongpot": "splashswiftnessiipotion", + "splashswiftnessleveliipot": "splashswiftnessiipotion", + "splashswiftiipot": "splashswiftnessiipotion", + "splashswiftstrongpot": "splashswiftnessiipotion", + "splashswiftleveliipot": "splashswiftnessiipotion", + "splashspeediipot": "splashswiftnessiipotion", + "splashspeedstrongpot": "splashswiftnessiipotion", + "splashspeedleveliipot": "splashswiftnessiipotion", + "splswiftnessiipot": "splashswiftnessiipotion", + "splswiftnessstrongpot": "splashswiftnessiipotion", + "splswiftnessleveliipot": "splashswiftnessiipotion", + "splswiftiipot": "splashswiftnessiipotion", + "splswiftstrongpot": "splashswiftnessiipotion", + "splswiftleveliipot": "splashswiftnessiipotion", + "splspeediipot": "splashswiftnessiipotion", + "splspeedstrongpot": "splashswiftnessiipotion", + "splspeedleveliipot": "splashswiftnessiipotion", + "swiftnessiisplashpot": "splashswiftnessiipotion", + "swiftnessstrongsplashpot": "splashswiftnessiipotion", + "swiftnessleveliisplashpot": "splashswiftnessiipotion", + "swiftiisplashpot": "splashswiftnessiipotion", + "swiftstrongsplashpot": "splashswiftnessiipotion", + "swiftleveliisplashpot": "splashswiftnessiipotion", + "speediisplashpot": "splashswiftnessiipotion", + "speedstrongsplashpot": "splashswiftnessiipotion", + "speedleveliisplashpot": "splashswiftnessiipotion", + "lingerpotswiftnessii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_swiftness", + "type": "SPEED", + "upgraded": true, + "extended": false + } + }, + "lingerpotswiftnessstrong": "lingerpotswiftnessii", + "lingerpotswiftnesslevelii": "lingerpotswiftnessii", + "lingerpotswiftii": "lingerpotswiftnessii", + "lingerpotswiftstrong": "lingerpotswiftnessii", + "lingerpotswiftlevelii": "lingerpotswiftnessii", + "lingerpotspeedii": "lingerpotswiftnessii", + "lingerpotspeedstrong": "lingerpotswiftnessii", + "lingerpotspeedlevelii": "lingerpotswiftnessii", + "swiftnesslingerpotii": "lingerpotswiftnessii", + "swiftnesslingerpotstrong": "lingerpotswiftnessii", + "swiftnesslingerpotlevelii": "lingerpotswiftnessii", + "swiftlingerpotii": "lingerpotswiftnessii", + "swiftlingerpotstrong": "lingerpotswiftnessii", + "swiftlingerpotlevelii": "lingerpotswiftnessii", + "speedlingerpotii": "lingerpotswiftnessii", + "speedlingerpotstrong": "lingerpotswiftnessii", + "speedlingerpotlevelii": "lingerpotswiftnessii", + "aoepotionswiftnessii": "lingerpotswiftnessii", + "aoepotionswiftnessstrong": "lingerpotswiftnessii", + "aoepotionswiftnesslevelii": "lingerpotswiftnessii", + "aoepotionswiftii": "lingerpotswiftnessii", + "aoepotionswiftstrong": "lingerpotswiftnessii", + "aoepotionswiftlevelii": "lingerpotswiftnessii", + "aoepotionspeedii": "lingerpotswiftnessii", + "aoepotionspeedstrong": "lingerpotswiftnessii", + "aoepotionspeedlevelii": "lingerpotswiftnessii", + "swiftnessaoepoiontii": "lingerpotswiftnessii", + "swiftnessaoepoiontstrong": "lingerpotswiftnessii", + "swiftnessaoepoiontlevelii": "lingerpotswiftnessii", + "swiftaoepoiontii": "lingerpotswiftnessii", + "swiftaoepoiontstrong": "lingerpotswiftnessii", + "swiftaoepoiontlevelii": "lingerpotswiftnessii", + "speedaoepoiontii": "lingerpotswiftnessii", + "speedaoepoiontstrong": "lingerpotswiftnessii", + "speedaoepoiontlevelii": "lingerpotswiftnessii", + "aoepotswiftnessii": "lingerpotswiftnessii", + "aoepotswiftnessstrong": "lingerpotswiftnessii", + "aoepotswiftnesslevelii": "lingerpotswiftnessii", + "aoepotswiftii": "lingerpotswiftnessii", + "aoepotswiftstrong": "lingerpotswiftnessii", + "aoepotswiftlevelii": "lingerpotswiftnessii", + "aoepotspeedii": "lingerpotswiftnessii", + "aoepotspeedstrong": "lingerpotswiftnessii", + "aoepotspeedlevelii": "lingerpotswiftnessii", + "swiftnessaoepotii": "lingerpotswiftnessii", + "swiftnessaoepotstrong": "lingerpotswiftnessii", + "swiftnessaoepotlevelii": "lingerpotswiftnessii", + "swiftaoepotii": "lingerpotswiftnessii", + "swiftaoepotstrong": "lingerpotswiftnessii", + "swiftaoepotlevelii": "lingerpotswiftnessii", + "speedaoepotii": "lingerpotswiftnessii", + "speedaoepotstrong": "lingerpotswiftnessii", + "speedaoepotlevelii": "lingerpotswiftnessii", + "areapotionswiftnessii": "lingerpotswiftnessii", + "areapotionswiftnessstrong": "lingerpotswiftnessii", + "areapotionswiftnesslevelii": "lingerpotswiftnessii", + "areapotionswiftii": "lingerpotswiftnessii", + "areapotionswiftstrong": "lingerpotswiftnessii", + "areapotionswiftlevelii": "lingerpotswiftnessii", + "areapotionspeedii": "lingerpotswiftnessii", + "areapotionspeedstrong": "lingerpotswiftnessii", + "areapotionspeedlevelii": "lingerpotswiftnessii", + "swiftnessareapotionii": "lingerpotswiftnessii", + "swiftnessareapotionstrong": "lingerpotswiftnessii", + "swiftnessareapotionlevelii": "lingerpotswiftnessii", + "swiftareapotionii": "lingerpotswiftnessii", + "swiftareapotionstrong": "lingerpotswiftnessii", + "swiftareapotionlevelii": "lingerpotswiftnessii", + "speedareapotionii": "lingerpotswiftnessii", + "speedareapotionstrong": "lingerpotswiftnessii", + "speedareapotionlevelii": "lingerpotswiftnessii", + "areapotswiftnessii": "lingerpotswiftnessii", + "areapotswiftnessstrong": "lingerpotswiftnessii", + "areapotswiftnesslevelii": "lingerpotswiftnessii", + "areapotswiftii": "lingerpotswiftnessii", + "areapotswiftstrong": "lingerpotswiftnessii", + "areapotswiftlevelii": "lingerpotswiftnessii", + "areapotspeedii": "lingerpotswiftnessii", + "areapotspeedstrong": "lingerpotswiftnessii", + "areapotspeedlevelii": "lingerpotswiftnessii", + "swiftnessareapotii": "lingerpotswiftnessii", + "swiftnessareapotstrong": "lingerpotswiftnessii", + "swiftnessareapotlevelii": "lingerpotswiftnessii", + "swiftareapotii": "lingerpotswiftnessii", + "swiftareapotstrong": "lingerpotswiftnessii", + "swiftareapotlevelii": "lingerpotswiftnessii", + "speedareapotii": "lingerpotswiftnessii", + "speedareapotstrong": "lingerpotswiftnessii", + "speedareapotlevelii": "lingerpotswiftnessii", + "cloudpotionswiftnessii": "lingerpotswiftnessii", + "cloudpotionswiftnessstrong": "lingerpotswiftnessii", + "cloudpotionswiftnesslevelii": "lingerpotswiftnessii", + "cloudpotionswiftii": "lingerpotswiftnessii", + "cloudpotionswiftstrong": "lingerpotswiftnessii", + "cloudpotionswiftlevelii": "lingerpotswiftnessii", + "cloudpotionspeedii": "lingerpotswiftnessii", + "cloudpotionspeedstrong": "lingerpotswiftnessii", + "cloudpotionspeedlevelii": "lingerpotswiftnessii", + "swiftnesscloudpotionii": "lingerpotswiftnessii", + "swiftnesscloudpotionstrong": "lingerpotswiftnessii", + "swiftnesscloudpotionlevelii": "lingerpotswiftnessii", + "swiftcloudpotionii": "lingerpotswiftnessii", + "swiftcloudpotionstrong": "lingerpotswiftnessii", + "swiftcloudpotionlevelii": "lingerpotswiftnessii", + "speedcloudpotionii": "lingerpotswiftnessii", + "speedcloudpotionstrong": "lingerpotswiftnessii", + "speedcloudpotionlevelii": "lingerpotswiftnessii", + "cloudpotswiftnessii": "lingerpotswiftnessii", + "cloudpotswiftnessstrong": "lingerpotswiftnessii", + "cloudpotswiftnesslevelii": "lingerpotswiftnessii", + "cloudpotswiftii": "lingerpotswiftnessii", + "cloudpotswiftstrong": "lingerpotswiftnessii", + "cloudpotswiftlevelii": "lingerpotswiftnessii", + "cloudpotspeedii": "lingerpotswiftnessii", + "cloudpotspeedstrong": "lingerpotswiftnessii", + "cloudpotspeedlevelii": "lingerpotswiftnessii", + "swiftnesscloudpotii": "lingerpotswiftnessii", + "swiftnesscloudpotstrong": "lingerpotswiftnessii", + "swiftnesscloudpotlevelii": "lingerpotswiftnessii", + "swiftcloudpotii": "lingerpotswiftnessii", + "swiftcloudpotstrong": "lingerpotswiftnessii", + "swiftcloudpotlevelii": "lingerpotswiftnessii", + "speedcloudpotii": "lingerpotswiftnessii", + "speedcloudpotstrong": "lingerpotswiftnessii", + "speedcloudpotlevelii": "lingerpotswiftnessii", + "arrowswiftnessii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_swiftness", + "type": "SPEED", + "upgraded": true, + "extended": false + } + }, + "arrowswiftnessstrong": "arrowswiftnessii", + "arrowswiftnesslevelii": "arrowswiftnessii", + "arrowswiftii": "arrowswiftnessii", + "arrowswiftstrong": "arrowswiftnessii", + "arrowswiftlevelii": "arrowswiftnessii", + "arrowspeedii": "arrowswiftnessii", + "arrowspeedstrong": "arrowswiftnessii", + "arrowspeedlevelii": "arrowswiftnessii", + "swiftnessarrowii": "arrowswiftnessii", + "swiftnessarrowstrong": "arrowswiftnessii", + "swiftnessarrowlevelii": "arrowswiftnessii", + "swiftarrowii": "arrowswiftnessii", + "swiftarrowstrong": "arrowswiftnessii", + "swiftarrowlevelii": "arrowswiftnessii", + "speedarrowii": "arrowswiftnessii", + "speedarrowstrong": "arrowswiftnessii", + "speedarrowlevelii": "arrowswiftnessii", + "swiftness2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_swiftness", + "type": "SPEED", + "upgraded": false, + "extended": true + } + }, + "swiftnesslongpotion": "swiftness2potion", + "swiftnessextendedpotion": "swiftness2potion", + "swiftnessexpotion": "swiftness2potion", + "swiftnesslevel2potion": "swiftness2potion", + "swift2potion": "swiftness2potion", + "swiftlongpotion": "swiftness2potion", + "swiftextendedpotion": "swiftness2potion", + "swiftexpotion": "swiftness2potion", + "swiftlevel2potion": "swiftness2potion", + "speed2potion": "swiftness2potion", + "speedlongpotion": "swiftness2potion", + "speedextendedpotion": "swiftness2potion", + "speedexpotion": "swiftness2potion", + "speedlevel2potion": "swiftness2potion", + "swiftness2pot": "swiftness2potion", + "swiftnesslongpot": "swiftness2potion", + "swiftnessextendedpot": "swiftness2potion", + "swiftnessexpot": "swiftness2potion", + "swiftnesslevel2pot": "swiftness2potion", + "swift2pot": "swiftness2potion", + "swiftlongpot": "swiftness2potion", + "swiftextendedpot": "swiftness2potion", + "swiftexpot": "swiftness2potion", + "swiftlevel2pot": "swiftness2potion", + "speed2pot": "swiftness2potion", + "speedlongpot": "swiftness2potion", + "speedextendedpot": "swiftness2potion", + "speedexpot": "swiftness2potion", + "speedlevel2pot": "swiftness2potion", + "potionofswiftness2": "swiftness2potion", + "potionofswiftnesslong": "swiftness2potion", + "potionofswiftnessextended": "swiftness2potion", + "potionofswiftnessex": "swiftness2potion", + "potionofswiftnesslevel2": "swiftness2potion", + "potionofswift2": "swiftness2potion", + "potionofswiftlong": "swiftness2potion", + "potionofswiftextended": "swiftness2potion", + "potionofswiftex": "swiftness2potion", + "potionofswiftlevel2": "swiftness2potion", + "potionofspeed2": "swiftness2potion", + "potionofspeedlong": "swiftness2potion", + "potionofspeedextended": "swiftness2potion", + "potionofspeedex": "swiftness2potion", + "potionofspeedlevel2": "swiftness2potion", + "potofswiftness2": "swiftness2potion", + "potofswiftnesslong": "swiftness2potion", + "potofswiftnessextended": "swiftness2potion", + "potofswiftnessex": "swiftness2potion", + "potofswiftnesslevel2": "swiftness2potion", + "potofswift2": "swiftness2potion", + "potofswiftlong": "swiftness2potion", + "potofswiftextended": "swiftness2potion", + "potofswiftex": "swiftness2potion", + "potofswiftlevel2": "swiftness2potion", + "potofspeed2": "swiftness2potion", + "potofspeedlong": "swiftness2potion", + "potofspeedextended": "swiftness2potion", + "potofspeedex": "swiftness2potion", + "potofspeedlevel2": "swiftness2potion", + "splashswiftness2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_swiftness", + "type": "SPEED", + "upgraded": false, + "extended": true + } + }, + "splashswiftnesslongpotion": "splashswiftness2potion", + "splashswiftnessextendedpotion": "splashswiftness2potion", + "splashswiftnessexpotion": "splashswiftness2potion", + "splashswiftnesslevel2potion": "splashswiftness2potion", + "splashswift2potion": "splashswiftness2potion", + "splashswiftlongpotion": "splashswiftness2potion", + "splashswiftextendedpotion": "splashswiftness2potion", + "splashswiftexpotion": "splashswiftness2potion", + "splashswiftlevel2potion": "splashswiftness2potion", + "splashspeed2potion": "splashswiftness2potion", + "splashspeedlongpotion": "splashswiftness2potion", + "splashspeedextendedpotion": "splashswiftness2potion", + "splashspeedexpotion": "splashswiftness2potion", + "splashspeedlevel2potion": "splashswiftness2potion", + "splswiftness2potion": "splashswiftness2potion", + "splswiftnesslongpotion": "splashswiftness2potion", + "splswiftnessextendedpotion": "splashswiftness2potion", + "splswiftnessexpotion": "splashswiftness2potion", + "splswiftnesslevel2potion": "splashswiftness2potion", + "splswift2potion": "splashswiftness2potion", + "splswiftlongpotion": "splashswiftness2potion", + "splswiftextendedpotion": "splashswiftness2potion", + "splswiftexpotion": "splashswiftness2potion", + "splswiftlevel2potion": "splashswiftness2potion", + "splspeed2potion": "splashswiftness2potion", + "splspeedlongpotion": "splashswiftness2potion", + "splspeedextendedpotion": "splashswiftness2potion", + "splspeedexpotion": "splashswiftness2potion", + "splspeedlevel2potion": "splashswiftness2potion", + "swiftness2splashpotion": "splashswiftness2potion", + "swiftnesslongsplashpotion": "splashswiftness2potion", + "swiftnessextendedsplashpotion": "splashswiftness2potion", + "swiftnessexsplashpotion": "splashswiftness2potion", + "swiftnesslevel2splashpotion": "splashswiftness2potion", + "swift2splashpotion": "splashswiftness2potion", + "swiftlongsplashpotion": "splashswiftness2potion", + "swiftextendedsplashpotion": "splashswiftness2potion", + "swiftexsplashpotion": "splashswiftness2potion", + "swiftlevel2splashpotion": "splashswiftness2potion", + "speed2splashpotion": "splashswiftness2potion", + "speedlongsplashpotion": "splashswiftness2potion", + "speedextendedsplashpotion": "splashswiftness2potion", + "speedexsplashpotion": "splashswiftness2potion", + "speedlevel2splashpotion": "splashswiftness2potion", + "splashswiftness2pot": "splashswiftness2potion", + "splashswiftnesslongpot": "splashswiftness2potion", + "splashswiftnessextendedpot": "splashswiftness2potion", + "splashswiftnessexpot": "splashswiftness2potion", + "splashswiftnesslevel2pot": "splashswiftness2potion", + "splashswift2pot": "splashswiftness2potion", + "splashswiftlongpot": "splashswiftness2potion", + "splashswiftextendedpot": "splashswiftness2potion", + "splashswiftexpot": "splashswiftness2potion", + "splashswiftlevel2pot": "splashswiftness2potion", + "splashspeed2pot": "splashswiftness2potion", + "splashspeedlongpot": "splashswiftness2potion", + "splashspeedextendedpot": "splashswiftness2potion", + "splashspeedexpot": "splashswiftness2potion", + "splashspeedlevel2pot": "splashswiftness2potion", + "splswiftness2pot": "splashswiftness2potion", + "splswiftnesslongpot": "splashswiftness2potion", + "splswiftnessextendedpot": "splashswiftness2potion", + "splswiftnessexpot": "splashswiftness2potion", + "splswiftnesslevel2pot": "splashswiftness2potion", + "splswift2pot": "splashswiftness2potion", + "splswiftlongpot": "splashswiftness2potion", + "splswiftextendedpot": "splashswiftness2potion", + "splswiftexpot": "splashswiftness2potion", + "splswiftlevel2pot": "splashswiftness2potion", + "splspeed2pot": "splashswiftness2potion", + "splspeedlongpot": "splashswiftness2potion", + "splspeedextendedpot": "splashswiftness2potion", + "splspeedexpot": "splashswiftness2potion", + "splspeedlevel2pot": "splashswiftness2potion", + "swiftness2splashpot": "splashswiftness2potion", + "swiftnesslongsplashpot": "splashswiftness2potion", + "swiftnessextendedsplashpot": "splashswiftness2potion", + "swiftnessexsplashpot": "splashswiftness2potion", + "swiftnesslevel2splashpot": "splashswiftness2potion", + "swift2splashpot": "splashswiftness2potion", + "swiftlongsplashpot": "splashswiftness2potion", + "swiftextendedsplashpot": "splashswiftness2potion", + "swiftexsplashpot": "splashswiftness2potion", + "swiftlevel2splashpot": "splashswiftness2potion", + "speed2splashpot": "splashswiftness2potion", + "speedlongsplashpot": "splashswiftness2potion", + "speedextendedsplashpot": "splashswiftness2potion", + "speedexsplashpot": "splashswiftness2potion", + "speedlevel2splashpot": "splashswiftness2potion", + "lingerpotswiftness2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_swiftness", + "type": "SPEED", + "upgraded": false, + "extended": true + } + }, + "lingerpotswiftnesslong": "lingerpotswiftness2", + "lingerpotswiftnessextended": "lingerpotswiftness2", + "lingerpotswiftnessex": "lingerpotswiftness2", + "lingerpotswiftnesslevel2": "lingerpotswiftness2", + "lingerpotswift2": "lingerpotswiftness2", + "lingerpotswiftlong": "lingerpotswiftness2", + "lingerpotswiftextended": "lingerpotswiftness2", + "lingerpotswiftex": "lingerpotswiftness2", + "lingerpotswiftlevel2": "lingerpotswiftness2", + "lingerpotspeed2": "lingerpotswiftness2", + "lingerpotspeedlong": "lingerpotswiftness2", + "lingerpotspeedextended": "lingerpotswiftness2", + "lingerpotspeedex": "lingerpotswiftness2", + "lingerpotspeedlevel2": "lingerpotswiftness2", + "swiftnesslingerpot2": "lingerpotswiftness2", + "swiftnesslingerpotlong": "lingerpotswiftness2", + "swiftnesslingerpotextended": "lingerpotswiftness2", + "swiftnesslingerpotex": "lingerpotswiftness2", + "swiftnesslingerpotlevel2": "lingerpotswiftness2", + "swiftlingerpot2": "lingerpotswiftness2", + "swiftlingerpotlong": "lingerpotswiftness2", + "swiftlingerpotextended": "lingerpotswiftness2", + "swiftlingerpotex": "lingerpotswiftness2", + "swiftlingerpotlevel2": "lingerpotswiftness2", + "speedlingerpot2": "lingerpotswiftness2", + "speedlingerpotlong": "lingerpotswiftness2", + "speedlingerpotextended": "lingerpotswiftness2", + "speedlingerpotex": "lingerpotswiftness2", + "speedlingerpotlevel2": "lingerpotswiftness2", + "aoepotionswiftness2": "lingerpotswiftness2", + "aoepotionswiftnesslong": "lingerpotswiftness2", + "aoepotionswiftnessextended": "lingerpotswiftness2", + "aoepotionswiftnessex": "lingerpotswiftness2", + "aoepotionswiftnesslevel2": "lingerpotswiftness2", + "aoepotionswift2": "lingerpotswiftness2", + "aoepotionswiftlong": "lingerpotswiftness2", + "aoepotionswiftextended": "lingerpotswiftness2", + "aoepotionswiftex": "lingerpotswiftness2", + "aoepotionswiftlevel2": "lingerpotswiftness2", + "aoepotionspeed2": "lingerpotswiftness2", + "aoepotionspeedlong": "lingerpotswiftness2", + "aoepotionspeedextended": "lingerpotswiftness2", + "aoepotionspeedex": "lingerpotswiftness2", + "aoepotionspeedlevel2": "lingerpotswiftness2", + "swiftnessaoepoiont2": "lingerpotswiftness2", + "swiftnessaoepoiontlong": "lingerpotswiftness2", + "swiftnessaoepoiontextended": "lingerpotswiftness2", + "swiftnessaoepoiontex": "lingerpotswiftness2", + "swiftnessaoepoiontlevel2": "lingerpotswiftness2", + "swiftaoepoiont2": "lingerpotswiftness2", + "swiftaoepoiontlong": "lingerpotswiftness2", + "swiftaoepoiontextended": "lingerpotswiftness2", + "swiftaoepoiontex": "lingerpotswiftness2", + "swiftaoepoiontlevel2": "lingerpotswiftness2", + "speedaoepoiont2": "lingerpotswiftness2", + "speedaoepoiontlong": "lingerpotswiftness2", + "speedaoepoiontextended": "lingerpotswiftness2", + "speedaoepoiontex": "lingerpotswiftness2", + "speedaoepoiontlevel2": "lingerpotswiftness2", + "aoepotswiftness2": "lingerpotswiftness2", + "aoepotswiftnesslong": "lingerpotswiftness2", + "aoepotswiftnessextended": "lingerpotswiftness2", + "aoepotswiftnessex": "lingerpotswiftness2", + "aoepotswiftnesslevel2": "lingerpotswiftness2", + "aoepotswift2": "lingerpotswiftness2", + "aoepotswiftlong": "lingerpotswiftness2", + "aoepotswiftextended": "lingerpotswiftness2", + "aoepotswiftex": "lingerpotswiftness2", + "aoepotswiftlevel2": "lingerpotswiftness2", + "aoepotspeed2": "lingerpotswiftness2", + "aoepotspeedlong": "lingerpotswiftness2", + "aoepotspeedextended": "lingerpotswiftness2", + "aoepotspeedex": "lingerpotswiftness2", + "aoepotspeedlevel2": "lingerpotswiftness2", + "swiftnessaoepot2": "lingerpotswiftness2", + "swiftnessaoepotlong": "lingerpotswiftness2", + "swiftnessaoepotextended": "lingerpotswiftness2", + "swiftnessaoepotex": "lingerpotswiftness2", + "swiftnessaoepotlevel2": "lingerpotswiftness2", + "swiftaoepot2": "lingerpotswiftness2", + "swiftaoepotlong": "lingerpotswiftness2", + "swiftaoepotextended": "lingerpotswiftness2", + "swiftaoepotex": "lingerpotswiftness2", + "swiftaoepotlevel2": "lingerpotswiftness2", + "speedaoepot2": "lingerpotswiftness2", + "speedaoepotlong": "lingerpotswiftness2", + "speedaoepotextended": "lingerpotswiftness2", + "speedaoepotex": "lingerpotswiftness2", + "speedaoepotlevel2": "lingerpotswiftness2", + "areapotionswiftness2": "lingerpotswiftness2", + "areapotionswiftnesslong": "lingerpotswiftness2", + "areapotionswiftnessextended": "lingerpotswiftness2", + "areapotionswiftnessex": "lingerpotswiftness2", + "areapotionswiftnesslevel2": "lingerpotswiftness2", + "areapotionswift2": "lingerpotswiftness2", + "areapotionswiftlong": "lingerpotswiftness2", + "areapotionswiftextended": "lingerpotswiftness2", + "areapotionswiftex": "lingerpotswiftness2", + "areapotionswiftlevel2": "lingerpotswiftness2", + "areapotionspeed2": "lingerpotswiftness2", + "areapotionspeedlong": "lingerpotswiftness2", + "areapotionspeedextended": "lingerpotswiftness2", + "areapotionspeedex": "lingerpotswiftness2", + "areapotionspeedlevel2": "lingerpotswiftness2", + "swiftnessareapotion2": "lingerpotswiftness2", + "swiftnessareapotionlong": "lingerpotswiftness2", + "swiftnessareapotionextended": "lingerpotswiftness2", + "swiftnessareapotionex": "lingerpotswiftness2", + "swiftnessareapotionlevel2": "lingerpotswiftness2", + "swiftareapotion2": "lingerpotswiftness2", + "swiftareapotionlong": "lingerpotswiftness2", + "swiftareapotionextended": "lingerpotswiftness2", + "swiftareapotionex": "lingerpotswiftness2", + "swiftareapotionlevel2": "lingerpotswiftness2", + "speedareapotion2": "lingerpotswiftness2", + "speedareapotionlong": "lingerpotswiftness2", + "speedareapotionextended": "lingerpotswiftness2", + "speedareapotionex": "lingerpotswiftness2", + "speedareapotionlevel2": "lingerpotswiftness2", + "areapotswiftness2": "lingerpotswiftness2", + "areapotswiftnesslong": "lingerpotswiftness2", + "areapotswiftnessextended": "lingerpotswiftness2", + "areapotswiftnessex": "lingerpotswiftness2", + "areapotswiftnesslevel2": "lingerpotswiftness2", + "areapotswift2": "lingerpotswiftness2", + "areapotswiftlong": "lingerpotswiftness2", + "areapotswiftextended": "lingerpotswiftness2", + "areapotswiftex": "lingerpotswiftness2", + "areapotswiftlevel2": "lingerpotswiftness2", + "areapotspeed2": "lingerpotswiftness2", + "areapotspeedlong": "lingerpotswiftness2", + "areapotspeedextended": "lingerpotswiftness2", + "areapotspeedex": "lingerpotswiftness2", + "areapotspeedlevel2": "lingerpotswiftness2", + "swiftnessareapot2": "lingerpotswiftness2", + "swiftnessareapotlong": "lingerpotswiftness2", + "swiftnessareapotextended": "lingerpotswiftness2", + "swiftnessareapotex": "lingerpotswiftness2", + "swiftnessareapotlevel2": "lingerpotswiftness2", + "swiftareapot2": "lingerpotswiftness2", + "swiftareapotlong": "lingerpotswiftness2", + "swiftareapotextended": "lingerpotswiftness2", + "swiftareapotex": "lingerpotswiftness2", + "swiftareapotlevel2": "lingerpotswiftness2", + "speedareapot2": "lingerpotswiftness2", + "speedareapotlong": "lingerpotswiftness2", + "speedareapotextended": "lingerpotswiftness2", + "speedareapotex": "lingerpotswiftness2", + "speedareapotlevel2": "lingerpotswiftness2", + "cloudpotionswiftness2": "lingerpotswiftness2", + "cloudpotionswiftnesslong": "lingerpotswiftness2", + "cloudpotionswiftnessextended": "lingerpotswiftness2", + "cloudpotionswiftnessex": "lingerpotswiftness2", + "cloudpotionswiftnesslevel2": "lingerpotswiftness2", + "cloudpotionswift2": "lingerpotswiftness2", + "cloudpotionswiftlong": "lingerpotswiftness2", + "cloudpotionswiftextended": "lingerpotswiftness2", + "cloudpotionswiftex": "lingerpotswiftness2", + "cloudpotionswiftlevel2": "lingerpotswiftness2", + "cloudpotionspeed2": "lingerpotswiftness2", + "cloudpotionspeedlong": "lingerpotswiftness2", + "cloudpotionspeedextended": "lingerpotswiftness2", + "cloudpotionspeedex": "lingerpotswiftness2", + "cloudpotionspeedlevel2": "lingerpotswiftness2", + "swiftnesscloudpotion2": "lingerpotswiftness2", + "swiftnesscloudpotionlong": "lingerpotswiftness2", + "swiftnesscloudpotionextended": "lingerpotswiftness2", + "swiftnesscloudpotionex": "lingerpotswiftness2", + "swiftnesscloudpotionlevel2": "lingerpotswiftness2", + "swiftcloudpotion2": "lingerpotswiftness2", + "swiftcloudpotionlong": "lingerpotswiftness2", + "swiftcloudpotionextended": "lingerpotswiftness2", + "swiftcloudpotionex": "lingerpotswiftness2", + "swiftcloudpotionlevel2": "lingerpotswiftness2", + "speedcloudpotion2": "lingerpotswiftness2", + "speedcloudpotionlong": "lingerpotswiftness2", + "speedcloudpotionextended": "lingerpotswiftness2", + "speedcloudpotionex": "lingerpotswiftness2", + "speedcloudpotionlevel2": "lingerpotswiftness2", + "cloudpotswiftness2": "lingerpotswiftness2", + "cloudpotswiftnesslong": "lingerpotswiftness2", + "cloudpotswiftnessextended": "lingerpotswiftness2", + "cloudpotswiftnessex": "lingerpotswiftness2", + "cloudpotswiftnesslevel2": "lingerpotswiftness2", + "cloudpotswift2": "lingerpotswiftness2", + "cloudpotswiftlong": "lingerpotswiftness2", + "cloudpotswiftextended": "lingerpotswiftness2", + "cloudpotswiftex": "lingerpotswiftness2", + "cloudpotswiftlevel2": "lingerpotswiftness2", + "cloudpotspeed2": "lingerpotswiftness2", + "cloudpotspeedlong": "lingerpotswiftness2", + "cloudpotspeedextended": "lingerpotswiftness2", + "cloudpotspeedex": "lingerpotswiftness2", + "cloudpotspeedlevel2": "lingerpotswiftness2", + "swiftnesscloudpot2": "lingerpotswiftness2", + "swiftnesscloudpotlong": "lingerpotswiftness2", + "swiftnesscloudpotextended": "lingerpotswiftness2", + "swiftnesscloudpotex": "lingerpotswiftness2", + "swiftnesscloudpotlevel2": "lingerpotswiftness2", + "swiftcloudpot2": "lingerpotswiftness2", + "swiftcloudpotlong": "lingerpotswiftness2", + "swiftcloudpotextended": "lingerpotswiftness2", + "swiftcloudpotex": "lingerpotswiftness2", + "swiftcloudpotlevel2": "lingerpotswiftness2", + "speedcloudpot2": "lingerpotswiftness2", + "speedcloudpotlong": "lingerpotswiftness2", + "speedcloudpotextended": "lingerpotswiftness2", + "speedcloudpotex": "lingerpotswiftness2", + "speedcloudpotlevel2": "lingerpotswiftness2", + "arrowswiftness2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_swiftness", + "type": "SPEED", + "upgraded": false, + "extended": true + } + }, + "arrowswiftnesslong": "arrowswiftness2", + "arrowswiftnessextended": "arrowswiftness2", + "arrowswiftnessex": "arrowswiftness2", + "arrowswiftnesslevel2": "arrowswiftness2", + "arrowswift2": "arrowswiftness2", + "arrowswiftlong": "arrowswiftness2", + "arrowswiftextended": "arrowswiftness2", + "arrowswiftex": "arrowswiftness2", + "arrowswiftlevel2": "arrowswiftness2", + "arrowspeed2": "arrowswiftness2", + "arrowspeedlong": "arrowswiftness2", + "arrowspeedextended": "arrowswiftness2", + "arrowspeedex": "arrowswiftness2", + "arrowspeedlevel2": "arrowswiftness2", + "swiftnessarrow2": "arrowswiftness2", + "swiftnessarrowlong": "arrowswiftness2", + "swiftnessarrowextended": "arrowswiftness2", + "swiftnessarrowex": "arrowswiftness2", + "swiftnessarrowlevel2": "arrowswiftness2", + "swiftarrow2": "arrowswiftness2", + "swiftarrowlong": "arrowswiftness2", + "swiftarrowextended": "arrowswiftness2", + "swiftarrowex": "arrowswiftness2", + "swiftarrowlevel2": "arrowswiftness2", + "speedarrow2": "arrowswiftness2", + "speedarrowlong": "arrowswiftness2", + "speedarrowextended": "arrowswiftness2", + "speedarrowex": "arrowswiftness2", + "speedarrowlevel2": "arrowswiftness2", + "slownesspotion": { + "material": "POTION", + "potionData": { + "vanillaType": "slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": false + } + }, + "slowpotion": "slownesspotion", + "slownesspot": "slownesspotion", + "slowpot": "slownesspotion", + "potionofslowness": "slownesspotion", + "potionofslow": "slownesspotion", + "potofslowness": "slownesspotion", + "potofslow": "slownesspotion", + "splashslownesspotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": false + } + }, + "splashslowpotion": "splashslownesspotion", + "splslownesspotion": "splashslownesspotion", + "splslowpotion": "splashslownesspotion", + "slownesssplashpotion": "splashslownesspotion", + "slowsplashpotion": "splashslownesspotion", + "splashslownesspot": "splashslownesspotion", + "splashslowpot": "splashslownesspotion", + "splslownesspot": "splashslownesspotion", + "splslowpot": "splashslownesspotion", + "slownesssplashpot": "splashslownesspotion", + "slowsplashpot": "splashslownesspotion", + "lingerpotslowness": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": false + } + }, + "lingerpotslow": "lingerpotslowness", + "slownesslingerpot": "lingerpotslowness", + "slowlingerpot": "lingerpotslowness", + "aoepotionslowness": "lingerpotslowness", + "aoepotionslow": "lingerpotslowness", + "slownessaoepoiont": "lingerpotslowness", + "slowaoepoiont": "lingerpotslowness", + "aoepotslowness": "lingerpotslowness", + "aoepotslow": "lingerpotslowness", + "slownessaoepot": "lingerpotslowness", + "slowaoepot": "lingerpotslowness", + "areapotionslowness": "lingerpotslowness", + "areapotionslow": "lingerpotslowness", + "slownessareapotion": "lingerpotslowness", + "slowareapotion": "lingerpotslowness", + "areapotslowness": "lingerpotslowness", + "areapotslow": "lingerpotslowness", + "slownessareapot": "lingerpotslowness", + "slowareapot": "lingerpotslowness", + "cloudpotionslowness": "lingerpotslowness", + "cloudpotionslow": "lingerpotslowness", + "slownesscloudpotion": "lingerpotslowness", + "slowcloudpotion": "lingerpotslowness", + "cloudpotslowness": "lingerpotslowness", + "cloudpotslow": "lingerpotslowness", + "slownesscloudpot": "lingerpotslowness", + "slowcloudpot": "lingerpotslowness", + "arrowslowness": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": false + } + }, + "arrowslow": "arrowslowness", + "slownessarrow": "arrowslowness", + "slowarrow": "arrowslowness", + "slowness2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": true + } + }, + "slownesslongpotion": "slowness2potion", + "slownessextendedpotion": "slowness2potion", + "slownessexpotion": "slowness2potion", + "slownesslevel2potion": "slowness2potion", + "slow2potion": "slowness2potion", + "slowlongpotion": "slowness2potion", + "slowextendedpotion": "slowness2potion", + "slowexpotion": "slowness2potion", + "slowlevel2potion": "slowness2potion", + "slowness2pot": "slowness2potion", + "slownesslongpot": "slowness2potion", + "slownessextendedpot": "slowness2potion", + "slownessexpot": "slowness2potion", + "slownesslevel2pot": "slowness2potion", + "slow2pot": "slowness2potion", + "slowlongpot": "slowness2potion", + "slowextendedpot": "slowness2potion", + "slowexpot": "slowness2potion", + "slowlevel2pot": "slowness2potion", + "potionofslowness2": "slowness2potion", + "potionofslownesslong": "slowness2potion", + "potionofslownessextended": "slowness2potion", + "potionofslownessex": "slowness2potion", + "potionofslownesslevel2": "slowness2potion", + "potionofslow2": "slowness2potion", + "potionofslowlong": "slowness2potion", + "potionofslowextended": "slowness2potion", + "potionofslowex": "slowness2potion", + "potionofslowlevel2": "slowness2potion", + "potofslowness2": "slowness2potion", + "potofslownesslong": "slowness2potion", + "potofslownessextended": "slowness2potion", + "potofslownessex": "slowness2potion", + "potofslownesslevel2": "slowness2potion", + "potofslow2": "slowness2potion", + "potofslowlong": "slowness2potion", + "potofslowextended": "slowness2potion", + "potofslowex": "slowness2potion", + "potofslowlevel2": "slowness2potion", + "splashslowness2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": true + } + }, + "splashslownesslongpotion": "splashslowness2potion", + "splashslownessextendedpotion": "splashslowness2potion", + "splashslownessexpotion": "splashslowness2potion", + "splashslownesslevel2potion": "splashslowness2potion", + "splashslow2potion": "splashslowness2potion", + "splashslowlongpotion": "splashslowness2potion", + "splashslowextendedpotion": "splashslowness2potion", + "splashslowexpotion": "splashslowness2potion", + "splashslowlevel2potion": "splashslowness2potion", + "splslowness2potion": "splashslowness2potion", + "splslownesslongpotion": "splashslowness2potion", + "splslownessextendedpotion": "splashslowness2potion", + "splslownessexpotion": "splashslowness2potion", + "splslownesslevel2potion": "splashslowness2potion", + "splslow2potion": "splashslowness2potion", + "splslowlongpotion": "splashslowness2potion", + "splslowextendedpotion": "splashslowness2potion", + "splslowexpotion": "splashslowness2potion", + "splslowlevel2potion": "splashslowness2potion", + "slowness2splashpotion": "splashslowness2potion", + "slownesslongsplashpotion": "splashslowness2potion", + "slownessextendedsplashpotion": "splashslowness2potion", + "slownessexsplashpotion": "splashslowness2potion", + "slownesslevel2splashpotion": "splashslowness2potion", + "slow2splashpotion": "splashslowness2potion", + "slowlongsplashpotion": "splashslowness2potion", + "slowextendedsplashpotion": "splashslowness2potion", + "slowexsplashpotion": "splashslowness2potion", + "slowlevel2splashpotion": "splashslowness2potion", + "splashslowness2pot": "splashslowness2potion", + "splashslownesslongpot": "splashslowness2potion", + "splashslownessextendedpot": "splashslowness2potion", + "splashslownessexpot": "splashslowness2potion", + "splashslownesslevel2pot": "splashslowness2potion", + "splashslow2pot": "splashslowness2potion", + "splashslowlongpot": "splashslowness2potion", + "splashslowextendedpot": "splashslowness2potion", + "splashslowexpot": "splashslowness2potion", + "splashslowlevel2pot": "splashslowness2potion", + "splslowness2pot": "splashslowness2potion", + "splslownesslongpot": "splashslowness2potion", + "splslownessextendedpot": "splashslowness2potion", + "splslownessexpot": "splashslowness2potion", + "splslownesslevel2pot": "splashslowness2potion", + "splslow2pot": "splashslowness2potion", + "splslowlongpot": "splashslowness2potion", + "splslowextendedpot": "splashslowness2potion", + "splslowexpot": "splashslowness2potion", + "splslowlevel2pot": "splashslowness2potion", + "slowness2splashpot": "splashslowness2potion", + "slownesslongsplashpot": "splashslowness2potion", + "slownessextendedsplashpot": "splashslowness2potion", + "slownessexsplashpot": "splashslowness2potion", + "slownesslevel2splashpot": "splashslowness2potion", + "slow2splashpot": "splashslowness2potion", + "slowlongsplashpot": "splashslowness2potion", + "slowextendedsplashpot": "splashslowness2potion", + "slowexsplashpot": "splashslowness2potion", + "slowlevel2splashpot": "splashslowness2potion", + "lingerpotslowness2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": true + } + }, + "lingerpotslownesslong": "lingerpotslowness2", + "lingerpotslownessextended": "lingerpotslowness2", + "lingerpotslownessex": "lingerpotslowness2", + "lingerpotslownesslevel2": "lingerpotslowness2", + "lingerpotslow2": "lingerpotslowness2", + "lingerpotslowlong": "lingerpotslowness2", + "lingerpotslowextended": "lingerpotslowness2", + "lingerpotslowex": "lingerpotslowness2", + "lingerpotslowlevel2": "lingerpotslowness2", + "slownesslingerpot2": "lingerpotslowness2", + "slownesslingerpotlong": "lingerpotslowness2", + "slownesslingerpotextended": "lingerpotslowness2", + "slownesslingerpotex": "lingerpotslowness2", + "slownesslingerpotlevel2": "lingerpotslowness2", + "slowlingerpot2": "lingerpotslowness2", + "slowlingerpotlong": "lingerpotslowness2", + "slowlingerpotextended": "lingerpotslowness2", + "slowlingerpotex": "lingerpotslowness2", + "slowlingerpotlevel2": "lingerpotslowness2", + "aoepotionslowness2": "lingerpotslowness2", + "aoepotionslownesslong": "lingerpotslowness2", + "aoepotionslownessextended": "lingerpotslowness2", + "aoepotionslownessex": "lingerpotslowness2", + "aoepotionslownesslevel2": "lingerpotslowness2", + "aoepotionslow2": "lingerpotslowness2", + "aoepotionslowlong": "lingerpotslowness2", + "aoepotionslowextended": "lingerpotslowness2", + "aoepotionslowex": "lingerpotslowness2", + "aoepotionslowlevel2": "lingerpotslowness2", + "slownessaoepoiont2": "lingerpotslowness2", + "slownessaoepoiontlong": "lingerpotslowness2", + "slownessaoepoiontextended": "lingerpotslowness2", + "slownessaoepoiontex": "lingerpotslowness2", + "slownessaoepoiontlevel2": "lingerpotslowness2", + "slowaoepoiont2": "lingerpotslowness2", + "slowaoepoiontlong": "lingerpotslowness2", + "slowaoepoiontextended": "lingerpotslowness2", + "slowaoepoiontex": "lingerpotslowness2", + "slowaoepoiontlevel2": "lingerpotslowness2", + "aoepotslowness2": "lingerpotslowness2", + "aoepotslownesslong": "lingerpotslowness2", + "aoepotslownessextended": "lingerpotslowness2", + "aoepotslownessex": "lingerpotslowness2", + "aoepotslownesslevel2": "lingerpotslowness2", + "aoepotslow2": "lingerpotslowness2", + "aoepotslowlong": "lingerpotslowness2", + "aoepotslowextended": "lingerpotslowness2", + "aoepotslowex": "lingerpotslowness2", + "aoepotslowlevel2": "lingerpotslowness2", + "slownessaoepot2": "lingerpotslowness2", + "slownessaoepotlong": "lingerpotslowness2", + "slownessaoepotextended": "lingerpotslowness2", + "slownessaoepotex": "lingerpotslowness2", + "slownessaoepotlevel2": "lingerpotslowness2", + "slowaoepot2": "lingerpotslowness2", + "slowaoepotlong": "lingerpotslowness2", + "slowaoepotextended": "lingerpotslowness2", + "slowaoepotex": "lingerpotslowness2", + "slowaoepotlevel2": "lingerpotslowness2", + "areapotionslowness2": "lingerpotslowness2", + "areapotionslownesslong": "lingerpotslowness2", + "areapotionslownessextended": "lingerpotslowness2", + "areapotionslownessex": "lingerpotslowness2", + "areapotionslownesslevel2": "lingerpotslowness2", + "areapotionslow2": "lingerpotslowness2", + "areapotionslowlong": "lingerpotslowness2", + "areapotionslowextended": "lingerpotslowness2", + "areapotionslowex": "lingerpotslowness2", + "areapotionslowlevel2": "lingerpotslowness2", + "slownessareapotion2": "lingerpotslowness2", + "slownessareapotionlong": "lingerpotslowness2", + "slownessareapotionextended": "lingerpotslowness2", + "slownessareapotionex": "lingerpotslowness2", + "slownessareapotionlevel2": "lingerpotslowness2", + "slowareapotion2": "lingerpotslowness2", + "slowareapotionlong": "lingerpotslowness2", + "slowareapotionextended": "lingerpotslowness2", + "slowareapotionex": "lingerpotslowness2", + "slowareapotionlevel2": "lingerpotslowness2", + "areapotslowness2": "lingerpotslowness2", + "areapotslownesslong": "lingerpotslowness2", + "areapotslownessextended": "lingerpotslowness2", + "areapotslownessex": "lingerpotslowness2", + "areapotslownesslevel2": "lingerpotslowness2", + "areapotslow2": "lingerpotslowness2", + "areapotslowlong": "lingerpotslowness2", + "areapotslowextended": "lingerpotslowness2", + "areapotslowex": "lingerpotslowness2", + "areapotslowlevel2": "lingerpotslowness2", + "slownessareapot2": "lingerpotslowness2", + "slownessareapotlong": "lingerpotslowness2", + "slownessareapotextended": "lingerpotslowness2", + "slownessareapotex": "lingerpotslowness2", + "slownessareapotlevel2": "lingerpotslowness2", + "slowareapot2": "lingerpotslowness2", + "slowareapotlong": "lingerpotslowness2", + "slowareapotextended": "lingerpotslowness2", + "slowareapotex": "lingerpotslowness2", + "slowareapotlevel2": "lingerpotslowness2", + "cloudpotionslowness2": "lingerpotslowness2", + "cloudpotionslownesslong": "lingerpotslowness2", + "cloudpotionslownessextended": "lingerpotslowness2", + "cloudpotionslownessex": "lingerpotslowness2", + "cloudpotionslownesslevel2": "lingerpotslowness2", + "cloudpotionslow2": "lingerpotslowness2", + "cloudpotionslowlong": "lingerpotslowness2", + "cloudpotionslowextended": "lingerpotslowness2", + "cloudpotionslowex": "lingerpotslowness2", + "cloudpotionslowlevel2": "lingerpotslowness2", + "slownesscloudpotion2": "lingerpotslowness2", + "slownesscloudpotionlong": "lingerpotslowness2", + "slownesscloudpotionextended": "lingerpotslowness2", + "slownesscloudpotionex": "lingerpotslowness2", + "slownesscloudpotionlevel2": "lingerpotslowness2", + "slowcloudpotion2": "lingerpotslowness2", + "slowcloudpotionlong": "lingerpotslowness2", + "slowcloudpotionextended": "lingerpotslowness2", + "slowcloudpotionex": "lingerpotslowness2", + "slowcloudpotionlevel2": "lingerpotslowness2", + "cloudpotslowness2": "lingerpotslowness2", + "cloudpotslownesslong": "lingerpotslowness2", + "cloudpotslownessextended": "lingerpotslowness2", + "cloudpotslownessex": "lingerpotslowness2", + "cloudpotslownesslevel2": "lingerpotslowness2", + "cloudpotslow2": "lingerpotslowness2", + "cloudpotslowlong": "lingerpotslowness2", + "cloudpotslowextended": "lingerpotslowness2", + "cloudpotslowex": "lingerpotslowness2", + "cloudpotslowlevel2": "lingerpotslowness2", + "slownesscloudpot2": "lingerpotslowness2", + "slownesscloudpotlong": "lingerpotslowness2", + "slownesscloudpotextended": "lingerpotslowness2", + "slownesscloudpotex": "lingerpotslowness2", + "slownesscloudpotlevel2": "lingerpotslowness2", + "slowcloudpot2": "lingerpotslowness2", + "slowcloudpotlong": "lingerpotslowness2", + "slowcloudpotextended": "lingerpotslowness2", + "slowcloudpotex": "lingerpotslowness2", + "slowcloudpotlevel2": "lingerpotslowness2", + "arrowslowness2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_slowness", + "type": "SLOWNESS", + "upgraded": false, + "extended": true + } + }, + "arrowslownesslong": "arrowslowness2", + "arrowslownessextended": "arrowslowness2", + "arrowslownessex": "arrowslowness2", + "arrowslownesslevel2": "arrowslowness2", + "arrowslow2": "arrowslowness2", + "arrowslowlong": "arrowslowness2", + "arrowslowextended": "arrowslowness2", + "arrowslowex": "arrowslowness2", + "arrowslowlevel2": "arrowslowness2", + "slownessarrow2": "arrowslowness2", + "slownessarrowlong": "arrowslowness2", + "slownessarrowextended": "arrowslowness2", + "slownessarrowex": "arrowslowness2", + "slownessarrowlevel2": "arrowslowness2", + "slowarrow2": "arrowslowness2", + "slowarrowlong": "arrowslowness2", + "slowarrowextended": "arrowslowness2", + "slowarrowex": "arrowslowness2", + "slowarrowlevel2": "arrowslowness2", + "waterbreathingpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": false + } + }, + "wbpotion": "waterbreathingpotion", + "waterbreathpotion": "waterbreathingpotion", + "breathingpotion": "waterbreathingpotion", + "breathpotion": "waterbreathingpotion", + "waterbreathingpot": "waterbreathingpotion", + "wbpot": "waterbreathingpotion", + "waterbreathpot": "waterbreathingpotion", + "breathingpot": "waterbreathingpotion", + "breathpot": "waterbreathingpotion", + "potionofwaterbreathing": "waterbreathingpotion", + "potionofwb": "waterbreathingpotion", + "potionofwaterbreath": "waterbreathingpotion", + "potionofbreathing": "waterbreathingpotion", + "potionofbreath": "waterbreathingpotion", + "potofwaterbreathing": "waterbreathingpotion", + "potofwb": "waterbreathingpotion", + "potofwaterbreath": "waterbreathingpotion", + "potofbreathing": "waterbreathingpotion", + "potofbreath": "waterbreathingpotion", + "splashwaterbreathingpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": false + } + }, + "splashwbpotion": "splashwaterbreathingpotion", + "splashwaterbreathpotion": "splashwaterbreathingpotion", + "splashbreathingpotion": "splashwaterbreathingpotion", + "splashbreathpotion": "splashwaterbreathingpotion", + "splwaterbreathingpotion": "splashwaterbreathingpotion", + "splwbpotion": "splashwaterbreathingpotion", + "splwaterbreathpotion": "splashwaterbreathingpotion", + "splbreathingpotion": "splashwaterbreathingpotion", + "splbreathpotion": "splashwaterbreathingpotion", + "waterbreathingsplashpotion": "splashwaterbreathingpotion", + "wbsplashpotion": "splashwaterbreathingpotion", + "waterbreathsplashpotion": "splashwaterbreathingpotion", + "breathingsplashpotion": "splashwaterbreathingpotion", + "breathsplashpotion": "splashwaterbreathingpotion", + "splashwaterbreathingpot": "splashwaterbreathingpotion", + "splashwbpot": "splashwaterbreathingpotion", + "splashwaterbreathpot": "splashwaterbreathingpotion", + "splashbreathingpot": "splashwaterbreathingpotion", + "splashbreathpot": "splashwaterbreathingpotion", + "splwaterbreathingpot": "splashwaterbreathingpotion", + "splwbpot": "splashwaterbreathingpotion", + "splwaterbreathpot": "splashwaterbreathingpotion", + "splbreathingpot": "splashwaterbreathingpotion", + "splbreathpot": "splashwaterbreathingpotion", + "waterbreathingsplashpot": "splashwaterbreathingpotion", + "wbsplashpot": "splashwaterbreathingpotion", + "waterbreathsplashpot": "splashwaterbreathingpotion", + "breathingsplashpot": "splashwaterbreathingpotion", + "breathsplashpot": "splashwaterbreathingpotion", + "lingerpotwaterbreathing": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": false + } + }, + "lingerpotwb": "lingerpotwaterbreathing", + "lingerpotwaterbreath": "lingerpotwaterbreathing", + "lingerpotbreathing": "lingerpotwaterbreathing", + "lingerpotbreath": "lingerpotwaterbreathing", + "waterbreathinglingerpot": "lingerpotwaterbreathing", + "wblingerpot": "lingerpotwaterbreathing", + "waterbreathlingerpot": "lingerpotwaterbreathing", + "breathinglingerpot": "lingerpotwaterbreathing", + "breathlingerpot": "lingerpotwaterbreathing", + "aoepotionwaterbreathing": "lingerpotwaterbreathing", + "aoepotionwb": "lingerpotwaterbreathing", + "aoepotionwaterbreath": "lingerpotwaterbreathing", + "aoepotionbreathing": "lingerpotwaterbreathing", + "aoepotionbreath": "lingerpotwaterbreathing", + "waterbreathingaoepoiont": "lingerpotwaterbreathing", + "wbaoepoiont": "lingerpotwaterbreathing", + "waterbreathaoepoiont": "lingerpotwaterbreathing", + "breathingaoepoiont": "lingerpotwaterbreathing", + "breathaoepoiont": "lingerpotwaterbreathing", + "aoepotwaterbreathing": "lingerpotwaterbreathing", + "aoepotwb": "lingerpotwaterbreathing", + "aoepotwaterbreath": "lingerpotwaterbreathing", + "aoepotbreathing": "lingerpotwaterbreathing", + "aoepotbreath": "lingerpotwaterbreathing", + "waterbreathingaoepot": "lingerpotwaterbreathing", + "wbaoepot": "lingerpotwaterbreathing", + "waterbreathaoepot": "lingerpotwaterbreathing", + "breathingaoepot": "lingerpotwaterbreathing", + "breathaoepot": "lingerpotwaterbreathing", + "areapotionwaterbreathing": "lingerpotwaterbreathing", + "areapotionwb": "lingerpotwaterbreathing", + "areapotionwaterbreath": "lingerpotwaterbreathing", + "areapotionbreathing": "lingerpotwaterbreathing", + "areapotionbreath": "lingerpotwaterbreathing", + "waterbreathingareapotion": "lingerpotwaterbreathing", + "wbareapotion": "lingerpotwaterbreathing", + "waterbreathareapotion": "lingerpotwaterbreathing", + "breathingareapotion": "lingerpotwaterbreathing", + "breathareapotion": "lingerpotwaterbreathing", + "areapotwaterbreathing": "lingerpotwaterbreathing", + "areapotwb": "lingerpotwaterbreathing", + "areapotwaterbreath": "lingerpotwaterbreathing", + "areapotbreathing": "lingerpotwaterbreathing", + "areapotbreath": "lingerpotwaterbreathing", + "waterbreathingareapot": "lingerpotwaterbreathing", + "wbareapot": "lingerpotwaterbreathing", + "waterbreathareapot": "lingerpotwaterbreathing", + "breathingareapot": "lingerpotwaterbreathing", + "breathareapot": "lingerpotwaterbreathing", + "cloudpotionwaterbreathing": "lingerpotwaterbreathing", + "cloudpotionwb": "lingerpotwaterbreathing", + "cloudpotionwaterbreath": "lingerpotwaterbreathing", + "cloudpotionbreathing": "lingerpotwaterbreathing", + "cloudpotionbreath": "lingerpotwaterbreathing", + "waterbreathingcloudpotion": "lingerpotwaterbreathing", + "wbcloudpotion": "lingerpotwaterbreathing", + "waterbreathcloudpotion": "lingerpotwaterbreathing", + "breathingcloudpotion": "lingerpotwaterbreathing", + "breathcloudpotion": "lingerpotwaterbreathing", + "cloudpotwaterbreathing": "lingerpotwaterbreathing", + "cloudpotwb": "lingerpotwaterbreathing", + "cloudpotwaterbreath": "lingerpotwaterbreathing", + "cloudpotbreathing": "lingerpotwaterbreathing", + "cloudpotbreath": "lingerpotwaterbreathing", + "waterbreathingcloudpot": "lingerpotwaterbreathing", + "wbcloudpot": "lingerpotwaterbreathing", + "waterbreathcloudpot": "lingerpotwaterbreathing", + "breathingcloudpot": "lingerpotwaterbreathing", + "breathcloudpot": "lingerpotwaterbreathing", + "arrowwaterbreathing": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": false + } + }, + "arrowwb": "arrowwaterbreathing", + "arrowwaterbreath": "arrowwaterbreathing", + "arrowbreathing": "arrowwaterbreathing", + "arrowbreath": "arrowwaterbreathing", + "waterbreathingarrow": "arrowwaterbreathing", + "wbarrow": "arrowwaterbreathing", + "waterbreatharrow": "arrowwaterbreathing", + "breathingarrow": "arrowwaterbreathing", + "breatharrow": "arrowwaterbreathing", + "waterbreathing2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": true + } + }, + "waterbreathinglongpotion": "waterbreathing2potion", + "waterbreathingextendedpotion": "waterbreathing2potion", + "waterbreathingexpotion": "waterbreathing2potion", + "waterbreathinglevel2potion": "waterbreathing2potion", + "wb2potion": "waterbreathing2potion", + "wblongpotion": "waterbreathing2potion", + "wbextendedpotion": "waterbreathing2potion", + "wbexpotion": "waterbreathing2potion", + "wblevel2potion": "waterbreathing2potion", + "waterbreath2potion": "waterbreathing2potion", + "waterbreathlongpotion": "waterbreathing2potion", + "waterbreathextendedpotion": "waterbreathing2potion", + "waterbreathexpotion": "waterbreathing2potion", + "waterbreathlevel2potion": "waterbreathing2potion", + "breathing2potion": "waterbreathing2potion", + "breathinglongpotion": "waterbreathing2potion", + "breathingextendedpotion": "waterbreathing2potion", + "breathingexpotion": "waterbreathing2potion", + "breathinglevel2potion": "waterbreathing2potion", + "breath2potion": "waterbreathing2potion", + "breathlongpotion": "waterbreathing2potion", + "breathextendedpotion": "waterbreathing2potion", + "breathexpotion": "waterbreathing2potion", + "breathlevel2potion": "waterbreathing2potion", + "waterbreathing2pot": "waterbreathing2potion", + "waterbreathinglongpot": "waterbreathing2potion", + "waterbreathingextendedpot": "waterbreathing2potion", + "waterbreathingexpot": "waterbreathing2potion", + "waterbreathinglevel2pot": "waterbreathing2potion", + "wb2pot": "waterbreathing2potion", + "wblongpot": "waterbreathing2potion", + "wbextendedpot": "waterbreathing2potion", + "wbexpot": "waterbreathing2potion", + "wblevel2pot": "waterbreathing2potion", + "waterbreath2pot": "waterbreathing2potion", + "waterbreathlongpot": "waterbreathing2potion", + "waterbreathextendedpot": "waterbreathing2potion", + "waterbreathexpot": "waterbreathing2potion", + "waterbreathlevel2pot": "waterbreathing2potion", + "breathing2pot": "waterbreathing2potion", + "breathinglongpot": "waterbreathing2potion", + "breathingextendedpot": "waterbreathing2potion", + "breathingexpot": "waterbreathing2potion", + "breathinglevel2pot": "waterbreathing2potion", + "breath2pot": "waterbreathing2potion", + "breathlongpot": "waterbreathing2potion", + "breathextendedpot": "waterbreathing2potion", + "breathexpot": "waterbreathing2potion", + "breathlevel2pot": "waterbreathing2potion", + "potionofwaterbreathing2": "waterbreathing2potion", + "potionofwaterbreathinglong": "waterbreathing2potion", + "potionofwaterbreathingextended": "waterbreathing2potion", + "potionofwaterbreathingex": "waterbreathing2potion", + "potionofwaterbreathinglevel2": "waterbreathing2potion", + "potionofwb2": "waterbreathing2potion", + "potionofwblong": "waterbreathing2potion", + "potionofwbextended": "waterbreathing2potion", + "potionofwbex": "waterbreathing2potion", + "potionofwblevel2": "waterbreathing2potion", + "potionofwaterbreath2": "waterbreathing2potion", + "potionofwaterbreathlong": "waterbreathing2potion", + "potionofwaterbreathextended": "waterbreathing2potion", + "potionofwaterbreathex": "waterbreathing2potion", + "potionofwaterbreathlevel2": "waterbreathing2potion", + "potionofbreathing2": "waterbreathing2potion", + "potionofbreathinglong": "waterbreathing2potion", + "potionofbreathingextended": "waterbreathing2potion", + "potionofbreathingex": "waterbreathing2potion", + "potionofbreathinglevel2": "waterbreathing2potion", + "potionofbreath2": "waterbreathing2potion", + "potionofbreathlong": "waterbreathing2potion", + "potionofbreathextended": "waterbreathing2potion", + "potionofbreathex": "waterbreathing2potion", + "potionofbreathlevel2": "waterbreathing2potion", + "potofwaterbreathing2": "waterbreathing2potion", + "potofwaterbreathinglong": "waterbreathing2potion", + "potofwaterbreathingextended": "waterbreathing2potion", + "potofwaterbreathingex": "waterbreathing2potion", + "potofwaterbreathinglevel2": "waterbreathing2potion", + "potofwb2": "waterbreathing2potion", + "potofwblong": "waterbreathing2potion", + "potofwbextended": "waterbreathing2potion", + "potofwbex": "waterbreathing2potion", + "potofwblevel2": "waterbreathing2potion", + "potofwaterbreath2": "waterbreathing2potion", + "potofwaterbreathlong": "waterbreathing2potion", + "potofwaterbreathextended": "waterbreathing2potion", + "potofwaterbreathex": "waterbreathing2potion", + "potofwaterbreathlevel2": "waterbreathing2potion", + "potofbreathing2": "waterbreathing2potion", + "potofbreathinglong": "waterbreathing2potion", + "potofbreathingextended": "waterbreathing2potion", + "potofbreathingex": "waterbreathing2potion", + "potofbreathinglevel2": "waterbreathing2potion", + "potofbreath2": "waterbreathing2potion", + "potofbreathlong": "waterbreathing2potion", + "potofbreathextended": "waterbreathing2potion", + "potofbreathex": "waterbreathing2potion", + "potofbreathlevel2": "waterbreathing2potion", + "splashwaterbreathing2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": true + } + }, + "splashwaterbreathinglongpotion": "splashwaterbreathing2potion", + "splashwaterbreathingextendedpotion": "splashwaterbreathing2potion", + "splashwaterbreathingexpotion": "splashwaterbreathing2potion", + "splashwaterbreathinglevel2potion": "splashwaterbreathing2potion", + "splashwb2potion": "splashwaterbreathing2potion", + "splashwblongpotion": "splashwaterbreathing2potion", + "splashwbextendedpotion": "splashwaterbreathing2potion", + "splashwbexpotion": "splashwaterbreathing2potion", + "splashwblevel2potion": "splashwaterbreathing2potion", + "splashwaterbreath2potion": "splashwaterbreathing2potion", + "splashwaterbreathlongpotion": "splashwaterbreathing2potion", + "splashwaterbreathextendedpotion": "splashwaterbreathing2potion", + "splashwaterbreathexpotion": "splashwaterbreathing2potion", + "splashwaterbreathlevel2potion": "splashwaterbreathing2potion", + "splashbreathing2potion": "splashwaterbreathing2potion", + "splashbreathinglongpotion": "splashwaterbreathing2potion", + "splashbreathingextendedpotion": "splashwaterbreathing2potion", + "splashbreathingexpotion": "splashwaterbreathing2potion", + "splashbreathinglevel2potion": "splashwaterbreathing2potion", + "splashbreath2potion": "splashwaterbreathing2potion", + "splashbreathlongpotion": "splashwaterbreathing2potion", + "splashbreathextendedpotion": "splashwaterbreathing2potion", + "splashbreathexpotion": "splashwaterbreathing2potion", + "splashbreathlevel2potion": "splashwaterbreathing2potion", + "splwaterbreathing2potion": "splashwaterbreathing2potion", + "splwaterbreathinglongpotion": "splashwaterbreathing2potion", + "splwaterbreathingextendedpotion": "splashwaterbreathing2potion", + "splwaterbreathingexpotion": "splashwaterbreathing2potion", + "splwaterbreathinglevel2potion": "splashwaterbreathing2potion", + "splwb2potion": "splashwaterbreathing2potion", + "splwblongpotion": "splashwaterbreathing2potion", + "splwbextendedpotion": "splashwaterbreathing2potion", + "splwbexpotion": "splashwaterbreathing2potion", + "splwblevel2potion": "splashwaterbreathing2potion", + "splwaterbreath2potion": "splashwaterbreathing2potion", + "splwaterbreathlongpotion": "splashwaterbreathing2potion", + "splwaterbreathextendedpotion": "splashwaterbreathing2potion", + "splwaterbreathexpotion": "splashwaterbreathing2potion", + "splwaterbreathlevel2potion": "splashwaterbreathing2potion", + "splbreathing2potion": "splashwaterbreathing2potion", + "splbreathinglongpotion": "splashwaterbreathing2potion", + "splbreathingextendedpotion": "splashwaterbreathing2potion", + "splbreathingexpotion": "splashwaterbreathing2potion", + "splbreathinglevel2potion": "splashwaterbreathing2potion", + "splbreath2potion": "splashwaterbreathing2potion", + "splbreathlongpotion": "splashwaterbreathing2potion", + "splbreathextendedpotion": "splashwaterbreathing2potion", + "splbreathexpotion": "splashwaterbreathing2potion", + "splbreathlevel2potion": "splashwaterbreathing2potion", + "waterbreathing2splashpotion": "splashwaterbreathing2potion", + "waterbreathinglongsplashpotion": "splashwaterbreathing2potion", + "waterbreathingextendedsplashpotion": "splashwaterbreathing2potion", + "waterbreathingexsplashpotion": "splashwaterbreathing2potion", + "waterbreathinglevel2splashpotion": "splashwaterbreathing2potion", + "wb2splashpotion": "splashwaterbreathing2potion", + "wblongsplashpotion": "splashwaterbreathing2potion", + "wbextendedsplashpotion": "splashwaterbreathing2potion", + "wbexsplashpotion": "splashwaterbreathing2potion", + "wblevel2splashpotion": "splashwaterbreathing2potion", + "waterbreath2splashpotion": "splashwaterbreathing2potion", + "waterbreathlongsplashpotion": "splashwaterbreathing2potion", + "waterbreathextendedsplashpotion": "splashwaterbreathing2potion", + "waterbreathexsplashpotion": "splashwaterbreathing2potion", + "waterbreathlevel2splashpotion": "splashwaterbreathing2potion", + "breathing2splashpotion": "splashwaterbreathing2potion", + "breathinglongsplashpotion": "splashwaterbreathing2potion", + "breathingextendedsplashpotion": "splashwaterbreathing2potion", + "breathingexsplashpotion": "splashwaterbreathing2potion", + "breathinglevel2splashpotion": "splashwaterbreathing2potion", + "breath2splashpotion": "splashwaterbreathing2potion", + "breathlongsplashpotion": "splashwaterbreathing2potion", + "breathextendedsplashpotion": "splashwaterbreathing2potion", + "breathexsplashpotion": "splashwaterbreathing2potion", + "breathlevel2splashpotion": "splashwaterbreathing2potion", + "splashwaterbreathing2pot": "splashwaterbreathing2potion", + "splashwaterbreathinglongpot": "splashwaterbreathing2potion", + "splashwaterbreathingextendedpot": "splashwaterbreathing2potion", + "splashwaterbreathingexpot": "splashwaterbreathing2potion", + "splashwaterbreathinglevel2pot": "splashwaterbreathing2potion", + "splashwb2pot": "splashwaterbreathing2potion", + "splashwblongpot": "splashwaterbreathing2potion", + "splashwbextendedpot": "splashwaterbreathing2potion", + "splashwbexpot": "splashwaterbreathing2potion", + "splashwblevel2pot": "splashwaterbreathing2potion", + "splashwaterbreath2pot": "splashwaterbreathing2potion", + "splashwaterbreathlongpot": "splashwaterbreathing2potion", + "splashwaterbreathextendedpot": "splashwaterbreathing2potion", + "splashwaterbreathexpot": "splashwaterbreathing2potion", + "splashwaterbreathlevel2pot": "splashwaterbreathing2potion", + "splashbreathing2pot": "splashwaterbreathing2potion", + "splashbreathinglongpot": "splashwaterbreathing2potion", + "splashbreathingextendedpot": "splashwaterbreathing2potion", + "splashbreathingexpot": "splashwaterbreathing2potion", + "splashbreathinglevel2pot": "splashwaterbreathing2potion", + "splashbreath2pot": "splashwaterbreathing2potion", + "splashbreathlongpot": "splashwaterbreathing2potion", + "splashbreathextendedpot": "splashwaterbreathing2potion", + "splashbreathexpot": "splashwaterbreathing2potion", + "splashbreathlevel2pot": "splashwaterbreathing2potion", + "splwaterbreathing2pot": "splashwaterbreathing2potion", + "splwaterbreathinglongpot": "splashwaterbreathing2potion", + "splwaterbreathingextendedpot": "splashwaterbreathing2potion", + "splwaterbreathingexpot": "splashwaterbreathing2potion", + "splwaterbreathinglevel2pot": "splashwaterbreathing2potion", + "splwb2pot": "splashwaterbreathing2potion", + "splwblongpot": "splashwaterbreathing2potion", + "splwbextendedpot": "splashwaterbreathing2potion", + "splwbexpot": "splashwaterbreathing2potion", + "splwblevel2pot": "splashwaterbreathing2potion", + "splwaterbreath2pot": "splashwaterbreathing2potion", + "splwaterbreathlongpot": "splashwaterbreathing2potion", + "splwaterbreathextendedpot": "splashwaterbreathing2potion", + "splwaterbreathexpot": "splashwaterbreathing2potion", + "splwaterbreathlevel2pot": "splashwaterbreathing2potion", + "splbreathing2pot": "splashwaterbreathing2potion", + "splbreathinglongpot": "splashwaterbreathing2potion", + "splbreathingextendedpot": "splashwaterbreathing2potion", + "splbreathingexpot": "splashwaterbreathing2potion", + "splbreathinglevel2pot": "splashwaterbreathing2potion", + "splbreath2pot": "splashwaterbreathing2potion", + "splbreathlongpot": "splashwaterbreathing2potion", + "splbreathextendedpot": "splashwaterbreathing2potion", + "splbreathexpot": "splashwaterbreathing2potion", + "splbreathlevel2pot": "splashwaterbreathing2potion", + "waterbreathing2splashpot": "splashwaterbreathing2potion", + "waterbreathinglongsplashpot": "splashwaterbreathing2potion", + "waterbreathingextendedsplashpot": "splashwaterbreathing2potion", + "waterbreathingexsplashpot": "splashwaterbreathing2potion", + "waterbreathinglevel2splashpot": "splashwaterbreathing2potion", + "wb2splashpot": "splashwaterbreathing2potion", + "wblongsplashpot": "splashwaterbreathing2potion", + "wbextendedsplashpot": "splashwaterbreathing2potion", + "wbexsplashpot": "splashwaterbreathing2potion", + "wblevel2splashpot": "splashwaterbreathing2potion", + "waterbreath2splashpot": "splashwaterbreathing2potion", + "waterbreathlongsplashpot": "splashwaterbreathing2potion", + "waterbreathextendedsplashpot": "splashwaterbreathing2potion", + "waterbreathexsplashpot": "splashwaterbreathing2potion", + "waterbreathlevel2splashpot": "splashwaterbreathing2potion", + "breathing2splashpot": "splashwaterbreathing2potion", + "breathinglongsplashpot": "splashwaterbreathing2potion", + "breathingextendedsplashpot": "splashwaterbreathing2potion", + "breathingexsplashpot": "splashwaterbreathing2potion", + "breathinglevel2splashpot": "splashwaterbreathing2potion", + "breath2splashpot": "splashwaterbreathing2potion", + "breathlongsplashpot": "splashwaterbreathing2potion", + "breathextendedsplashpot": "splashwaterbreathing2potion", + "breathexsplashpot": "splashwaterbreathing2potion", + "breathlevel2splashpot": "splashwaterbreathing2potion", + "lingerpotwaterbreathing2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": true + } + }, + "lingerpotwaterbreathinglong": "lingerpotwaterbreathing2", + "lingerpotwaterbreathingextended": "lingerpotwaterbreathing2", + "lingerpotwaterbreathingex": "lingerpotwaterbreathing2", + "lingerpotwaterbreathinglevel2": "lingerpotwaterbreathing2", + "lingerpotwb2": "lingerpotwaterbreathing2", + "lingerpotwblong": "lingerpotwaterbreathing2", + "lingerpotwbextended": "lingerpotwaterbreathing2", + "lingerpotwbex": "lingerpotwaterbreathing2", + "lingerpotwblevel2": "lingerpotwaterbreathing2", + "lingerpotwaterbreath2": "lingerpotwaterbreathing2", + "lingerpotwaterbreathlong": "lingerpotwaterbreathing2", + "lingerpotwaterbreathextended": "lingerpotwaterbreathing2", + "lingerpotwaterbreathex": "lingerpotwaterbreathing2", + "lingerpotwaterbreathlevel2": "lingerpotwaterbreathing2", + "lingerpotbreathing2": "lingerpotwaterbreathing2", + "lingerpotbreathinglong": "lingerpotwaterbreathing2", + "lingerpotbreathingextended": "lingerpotwaterbreathing2", + "lingerpotbreathingex": "lingerpotwaterbreathing2", + "lingerpotbreathinglevel2": "lingerpotwaterbreathing2", + "lingerpotbreath2": "lingerpotwaterbreathing2", + "lingerpotbreathlong": "lingerpotwaterbreathing2", + "lingerpotbreathextended": "lingerpotwaterbreathing2", + "lingerpotbreathex": "lingerpotwaterbreathing2", + "lingerpotbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathinglingerpot2": "lingerpotwaterbreathing2", + "waterbreathinglingerpotlong": "lingerpotwaterbreathing2", + "waterbreathinglingerpotextended": "lingerpotwaterbreathing2", + "waterbreathinglingerpotex": "lingerpotwaterbreathing2", + "waterbreathinglingerpotlevel2": "lingerpotwaterbreathing2", + "wblingerpot2": "lingerpotwaterbreathing2", + "wblingerpotlong": "lingerpotwaterbreathing2", + "wblingerpotextended": "lingerpotwaterbreathing2", + "wblingerpotex": "lingerpotwaterbreathing2", + "wblingerpotlevel2": "lingerpotwaterbreathing2", + "waterbreathlingerpot2": "lingerpotwaterbreathing2", + "waterbreathlingerpotlong": "lingerpotwaterbreathing2", + "waterbreathlingerpotextended": "lingerpotwaterbreathing2", + "waterbreathlingerpotex": "lingerpotwaterbreathing2", + "waterbreathlingerpotlevel2": "lingerpotwaterbreathing2", + "breathinglingerpot2": "lingerpotwaterbreathing2", + "breathinglingerpotlong": "lingerpotwaterbreathing2", + "breathinglingerpotextended": "lingerpotwaterbreathing2", + "breathinglingerpotex": "lingerpotwaterbreathing2", + "breathinglingerpotlevel2": "lingerpotwaterbreathing2", + "breathlingerpot2": "lingerpotwaterbreathing2", + "breathlingerpotlong": "lingerpotwaterbreathing2", + "breathlingerpotextended": "lingerpotwaterbreathing2", + "breathlingerpotex": "lingerpotwaterbreathing2", + "breathlingerpotlevel2": "lingerpotwaterbreathing2", + "aoepotionwaterbreathing2": "lingerpotwaterbreathing2", + "aoepotionwaterbreathinglong": "lingerpotwaterbreathing2", + "aoepotionwaterbreathingextended": "lingerpotwaterbreathing2", + "aoepotionwaterbreathingex": "lingerpotwaterbreathing2", + "aoepotionwaterbreathinglevel2": "lingerpotwaterbreathing2", + "aoepotionwb2": "lingerpotwaterbreathing2", + "aoepotionwblong": "lingerpotwaterbreathing2", + "aoepotionwbextended": "lingerpotwaterbreathing2", + "aoepotionwbex": "lingerpotwaterbreathing2", + "aoepotionwblevel2": "lingerpotwaterbreathing2", + "aoepotionwaterbreath2": "lingerpotwaterbreathing2", + "aoepotionwaterbreathlong": "lingerpotwaterbreathing2", + "aoepotionwaterbreathextended": "lingerpotwaterbreathing2", + "aoepotionwaterbreathex": "lingerpotwaterbreathing2", + "aoepotionwaterbreathlevel2": "lingerpotwaterbreathing2", + "aoepotionbreathing2": "lingerpotwaterbreathing2", + "aoepotionbreathinglong": "lingerpotwaterbreathing2", + "aoepotionbreathingextended": "lingerpotwaterbreathing2", + "aoepotionbreathingex": "lingerpotwaterbreathing2", + "aoepotionbreathinglevel2": "lingerpotwaterbreathing2", + "aoepotionbreath2": "lingerpotwaterbreathing2", + "aoepotionbreathlong": "lingerpotwaterbreathing2", + "aoepotionbreathextended": "lingerpotwaterbreathing2", + "aoepotionbreathex": "lingerpotwaterbreathing2", + "aoepotionbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathingaoepoiont2": "lingerpotwaterbreathing2", + "waterbreathingaoepoiontlong": "lingerpotwaterbreathing2", + "waterbreathingaoepoiontextended": "lingerpotwaterbreathing2", + "waterbreathingaoepoiontex": "lingerpotwaterbreathing2", + "waterbreathingaoepoiontlevel2": "lingerpotwaterbreathing2", + "wbaoepoiont2": "lingerpotwaterbreathing2", + "wbaoepoiontlong": "lingerpotwaterbreathing2", + "wbaoepoiontextended": "lingerpotwaterbreathing2", + "wbaoepoiontex": "lingerpotwaterbreathing2", + "wbaoepoiontlevel2": "lingerpotwaterbreathing2", + "waterbreathaoepoiont2": "lingerpotwaterbreathing2", + "waterbreathaoepoiontlong": "lingerpotwaterbreathing2", + "waterbreathaoepoiontextended": "lingerpotwaterbreathing2", + "waterbreathaoepoiontex": "lingerpotwaterbreathing2", + "waterbreathaoepoiontlevel2": "lingerpotwaterbreathing2", + "breathingaoepoiont2": "lingerpotwaterbreathing2", + "breathingaoepoiontlong": "lingerpotwaterbreathing2", + "breathingaoepoiontextended": "lingerpotwaterbreathing2", + "breathingaoepoiontex": "lingerpotwaterbreathing2", + "breathingaoepoiontlevel2": "lingerpotwaterbreathing2", + "breathaoepoiont2": "lingerpotwaterbreathing2", + "breathaoepoiontlong": "lingerpotwaterbreathing2", + "breathaoepoiontextended": "lingerpotwaterbreathing2", + "breathaoepoiontex": "lingerpotwaterbreathing2", + "breathaoepoiontlevel2": "lingerpotwaterbreathing2", + "aoepotwaterbreathing2": "lingerpotwaterbreathing2", + "aoepotwaterbreathinglong": "lingerpotwaterbreathing2", + "aoepotwaterbreathingextended": "lingerpotwaterbreathing2", + "aoepotwaterbreathingex": "lingerpotwaterbreathing2", + "aoepotwaterbreathinglevel2": "lingerpotwaterbreathing2", + "aoepotwb2": "lingerpotwaterbreathing2", + "aoepotwblong": "lingerpotwaterbreathing2", + "aoepotwbextended": "lingerpotwaterbreathing2", + "aoepotwbex": "lingerpotwaterbreathing2", + "aoepotwblevel2": "lingerpotwaterbreathing2", + "aoepotwaterbreath2": "lingerpotwaterbreathing2", + "aoepotwaterbreathlong": "lingerpotwaterbreathing2", + "aoepotwaterbreathextended": "lingerpotwaterbreathing2", + "aoepotwaterbreathex": "lingerpotwaterbreathing2", + "aoepotwaterbreathlevel2": "lingerpotwaterbreathing2", + "aoepotbreathing2": "lingerpotwaterbreathing2", + "aoepotbreathinglong": "lingerpotwaterbreathing2", + "aoepotbreathingextended": "lingerpotwaterbreathing2", + "aoepotbreathingex": "lingerpotwaterbreathing2", + "aoepotbreathinglevel2": "lingerpotwaterbreathing2", + "aoepotbreath2": "lingerpotwaterbreathing2", + "aoepotbreathlong": "lingerpotwaterbreathing2", + "aoepotbreathextended": "lingerpotwaterbreathing2", + "aoepotbreathex": "lingerpotwaterbreathing2", + "aoepotbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathingaoepot2": "lingerpotwaterbreathing2", + "waterbreathingaoepotlong": "lingerpotwaterbreathing2", + "waterbreathingaoepotextended": "lingerpotwaterbreathing2", + "waterbreathingaoepotex": "lingerpotwaterbreathing2", + "waterbreathingaoepotlevel2": "lingerpotwaterbreathing2", + "wbaoepot2": "lingerpotwaterbreathing2", + "wbaoepotlong": "lingerpotwaterbreathing2", + "wbaoepotextended": "lingerpotwaterbreathing2", + "wbaoepotex": "lingerpotwaterbreathing2", + "wbaoepotlevel2": "lingerpotwaterbreathing2", + "waterbreathaoepot2": "lingerpotwaterbreathing2", + "waterbreathaoepotlong": "lingerpotwaterbreathing2", + "waterbreathaoepotextended": "lingerpotwaterbreathing2", + "waterbreathaoepotex": "lingerpotwaterbreathing2", + "waterbreathaoepotlevel2": "lingerpotwaterbreathing2", + "breathingaoepot2": "lingerpotwaterbreathing2", + "breathingaoepotlong": "lingerpotwaterbreathing2", + "breathingaoepotextended": "lingerpotwaterbreathing2", + "breathingaoepotex": "lingerpotwaterbreathing2", + "breathingaoepotlevel2": "lingerpotwaterbreathing2", + "breathaoepot2": "lingerpotwaterbreathing2", + "breathaoepotlong": "lingerpotwaterbreathing2", + "breathaoepotextended": "lingerpotwaterbreathing2", + "breathaoepotex": "lingerpotwaterbreathing2", + "breathaoepotlevel2": "lingerpotwaterbreathing2", + "areapotionwaterbreathing2": "lingerpotwaterbreathing2", + "areapotionwaterbreathinglong": "lingerpotwaterbreathing2", + "areapotionwaterbreathingextended": "lingerpotwaterbreathing2", + "areapotionwaterbreathingex": "lingerpotwaterbreathing2", + "areapotionwaterbreathinglevel2": "lingerpotwaterbreathing2", + "areapotionwb2": "lingerpotwaterbreathing2", + "areapotionwblong": "lingerpotwaterbreathing2", + "areapotionwbextended": "lingerpotwaterbreathing2", + "areapotionwbex": "lingerpotwaterbreathing2", + "areapotionwblevel2": "lingerpotwaterbreathing2", + "areapotionwaterbreath2": "lingerpotwaterbreathing2", + "areapotionwaterbreathlong": "lingerpotwaterbreathing2", + "areapotionwaterbreathextended": "lingerpotwaterbreathing2", + "areapotionwaterbreathex": "lingerpotwaterbreathing2", + "areapotionwaterbreathlevel2": "lingerpotwaterbreathing2", + "areapotionbreathing2": "lingerpotwaterbreathing2", + "areapotionbreathinglong": "lingerpotwaterbreathing2", + "areapotionbreathingextended": "lingerpotwaterbreathing2", + "areapotionbreathingex": "lingerpotwaterbreathing2", + "areapotionbreathinglevel2": "lingerpotwaterbreathing2", + "areapotionbreath2": "lingerpotwaterbreathing2", + "areapotionbreathlong": "lingerpotwaterbreathing2", + "areapotionbreathextended": "lingerpotwaterbreathing2", + "areapotionbreathex": "lingerpotwaterbreathing2", + "areapotionbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathingareapotion2": "lingerpotwaterbreathing2", + "waterbreathingareapotionlong": "lingerpotwaterbreathing2", + "waterbreathingareapotionextended": "lingerpotwaterbreathing2", + "waterbreathingareapotionex": "lingerpotwaterbreathing2", + "waterbreathingareapotionlevel2": "lingerpotwaterbreathing2", + "wbareapotion2": "lingerpotwaterbreathing2", + "wbareapotionlong": "lingerpotwaterbreathing2", + "wbareapotionextended": "lingerpotwaterbreathing2", + "wbareapotionex": "lingerpotwaterbreathing2", + "wbareapotionlevel2": "lingerpotwaterbreathing2", + "waterbreathareapotion2": "lingerpotwaterbreathing2", + "waterbreathareapotionlong": "lingerpotwaterbreathing2", + "waterbreathareapotionextended": "lingerpotwaterbreathing2", + "waterbreathareapotionex": "lingerpotwaterbreathing2", + "waterbreathareapotionlevel2": "lingerpotwaterbreathing2", + "breathingareapotion2": "lingerpotwaterbreathing2", + "breathingareapotionlong": "lingerpotwaterbreathing2", + "breathingareapotionextended": "lingerpotwaterbreathing2", + "breathingareapotionex": "lingerpotwaterbreathing2", + "breathingareapotionlevel2": "lingerpotwaterbreathing2", + "breathareapotion2": "lingerpotwaterbreathing2", + "breathareapotionlong": "lingerpotwaterbreathing2", + "breathareapotionextended": "lingerpotwaterbreathing2", + "breathareapotionex": "lingerpotwaterbreathing2", + "breathareapotionlevel2": "lingerpotwaterbreathing2", + "areapotwaterbreathing2": "lingerpotwaterbreathing2", + "areapotwaterbreathinglong": "lingerpotwaterbreathing2", + "areapotwaterbreathingextended": "lingerpotwaterbreathing2", + "areapotwaterbreathingex": "lingerpotwaterbreathing2", + "areapotwaterbreathinglevel2": "lingerpotwaterbreathing2", + "areapotwb2": "lingerpotwaterbreathing2", + "areapotwblong": "lingerpotwaterbreathing2", + "areapotwbextended": "lingerpotwaterbreathing2", + "areapotwbex": "lingerpotwaterbreathing2", + "areapotwblevel2": "lingerpotwaterbreathing2", + "areapotwaterbreath2": "lingerpotwaterbreathing2", + "areapotwaterbreathlong": "lingerpotwaterbreathing2", + "areapotwaterbreathextended": "lingerpotwaterbreathing2", + "areapotwaterbreathex": "lingerpotwaterbreathing2", + "areapotwaterbreathlevel2": "lingerpotwaterbreathing2", + "areapotbreathing2": "lingerpotwaterbreathing2", + "areapotbreathinglong": "lingerpotwaterbreathing2", + "areapotbreathingextended": "lingerpotwaterbreathing2", + "areapotbreathingex": "lingerpotwaterbreathing2", + "areapotbreathinglevel2": "lingerpotwaterbreathing2", + "areapotbreath2": "lingerpotwaterbreathing2", + "areapotbreathlong": "lingerpotwaterbreathing2", + "areapotbreathextended": "lingerpotwaterbreathing2", + "areapotbreathex": "lingerpotwaterbreathing2", + "areapotbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathingareapot2": "lingerpotwaterbreathing2", + "waterbreathingareapotlong": "lingerpotwaterbreathing2", + "waterbreathingareapotextended": "lingerpotwaterbreathing2", + "waterbreathingareapotex": "lingerpotwaterbreathing2", + "waterbreathingareapotlevel2": "lingerpotwaterbreathing2", + "wbareapot2": "lingerpotwaterbreathing2", + "wbareapotlong": "lingerpotwaterbreathing2", + "wbareapotextended": "lingerpotwaterbreathing2", + "wbareapotex": "lingerpotwaterbreathing2", + "wbareapotlevel2": "lingerpotwaterbreathing2", + "waterbreathareapot2": "lingerpotwaterbreathing2", + "waterbreathareapotlong": "lingerpotwaterbreathing2", + "waterbreathareapotextended": "lingerpotwaterbreathing2", + "waterbreathareapotex": "lingerpotwaterbreathing2", + "waterbreathareapotlevel2": "lingerpotwaterbreathing2", + "breathingareapot2": "lingerpotwaterbreathing2", + "breathingareapotlong": "lingerpotwaterbreathing2", + "breathingareapotextended": "lingerpotwaterbreathing2", + "breathingareapotex": "lingerpotwaterbreathing2", + "breathingareapotlevel2": "lingerpotwaterbreathing2", + "breathareapot2": "lingerpotwaterbreathing2", + "breathareapotlong": "lingerpotwaterbreathing2", + "breathareapotextended": "lingerpotwaterbreathing2", + "breathareapotex": "lingerpotwaterbreathing2", + "breathareapotlevel2": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathing2": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathinglong": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathingextended": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathingex": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathinglevel2": "lingerpotwaterbreathing2", + "cloudpotionwb2": "lingerpotwaterbreathing2", + "cloudpotionwblong": "lingerpotwaterbreathing2", + "cloudpotionwbextended": "lingerpotwaterbreathing2", + "cloudpotionwbex": "lingerpotwaterbreathing2", + "cloudpotionwblevel2": "lingerpotwaterbreathing2", + "cloudpotionwaterbreath2": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathlong": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathextended": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathex": "lingerpotwaterbreathing2", + "cloudpotionwaterbreathlevel2": "lingerpotwaterbreathing2", + "cloudpotionbreathing2": "lingerpotwaterbreathing2", + "cloudpotionbreathinglong": "lingerpotwaterbreathing2", + "cloudpotionbreathingextended": "lingerpotwaterbreathing2", + "cloudpotionbreathingex": "lingerpotwaterbreathing2", + "cloudpotionbreathinglevel2": "lingerpotwaterbreathing2", + "cloudpotionbreath2": "lingerpotwaterbreathing2", + "cloudpotionbreathlong": "lingerpotwaterbreathing2", + "cloudpotionbreathextended": "lingerpotwaterbreathing2", + "cloudpotionbreathex": "lingerpotwaterbreathing2", + "cloudpotionbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathingcloudpotion2": "lingerpotwaterbreathing2", + "waterbreathingcloudpotionlong": "lingerpotwaterbreathing2", + "waterbreathingcloudpotionextended": "lingerpotwaterbreathing2", + "waterbreathingcloudpotionex": "lingerpotwaterbreathing2", + "waterbreathingcloudpotionlevel2": "lingerpotwaterbreathing2", + "wbcloudpotion2": "lingerpotwaterbreathing2", + "wbcloudpotionlong": "lingerpotwaterbreathing2", + "wbcloudpotionextended": "lingerpotwaterbreathing2", + "wbcloudpotionex": "lingerpotwaterbreathing2", + "wbcloudpotionlevel2": "lingerpotwaterbreathing2", + "waterbreathcloudpotion2": "lingerpotwaterbreathing2", + "waterbreathcloudpotionlong": "lingerpotwaterbreathing2", + "waterbreathcloudpotionextended": "lingerpotwaterbreathing2", + "waterbreathcloudpotionex": "lingerpotwaterbreathing2", + "waterbreathcloudpotionlevel2": "lingerpotwaterbreathing2", + "breathingcloudpotion2": "lingerpotwaterbreathing2", + "breathingcloudpotionlong": "lingerpotwaterbreathing2", + "breathingcloudpotionextended": "lingerpotwaterbreathing2", + "breathingcloudpotionex": "lingerpotwaterbreathing2", + "breathingcloudpotionlevel2": "lingerpotwaterbreathing2", + "breathcloudpotion2": "lingerpotwaterbreathing2", + "breathcloudpotionlong": "lingerpotwaterbreathing2", + "breathcloudpotionextended": "lingerpotwaterbreathing2", + "breathcloudpotionex": "lingerpotwaterbreathing2", + "breathcloudpotionlevel2": "lingerpotwaterbreathing2", + "cloudpotwaterbreathing2": "lingerpotwaterbreathing2", + "cloudpotwaterbreathinglong": "lingerpotwaterbreathing2", + "cloudpotwaterbreathingextended": "lingerpotwaterbreathing2", + "cloudpotwaterbreathingex": "lingerpotwaterbreathing2", + "cloudpotwaterbreathinglevel2": "lingerpotwaterbreathing2", + "cloudpotwb2": "lingerpotwaterbreathing2", + "cloudpotwblong": "lingerpotwaterbreathing2", + "cloudpotwbextended": "lingerpotwaterbreathing2", + "cloudpotwbex": "lingerpotwaterbreathing2", + "cloudpotwblevel2": "lingerpotwaterbreathing2", + "cloudpotwaterbreath2": "lingerpotwaterbreathing2", + "cloudpotwaterbreathlong": "lingerpotwaterbreathing2", + "cloudpotwaterbreathextended": "lingerpotwaterbreathing2", + "cloudpotwaterbreathex": "lingerpotwaterbreathing2", + "cloudpotwaterbreathlevel2": "lingerpotwaterbreathing2", + "cloudpotbreathing2": "lingerpotwaterbreathing2", + "cloudpotbreathinglong": "lingerpotwaterbreathing2", + "cloudpotbreathingextended": "lingerpotwaterbreathing2", + "cloudpotbreathingex": "lingerpotwaterbreathing2", + "cloudpotbreathinglevel2": "lingerpotwaterbreathing2", + "cloudpotbreath2": "lingerpotwaterbreathing2", + "cloudpotbreathlong": "lingerpotwaterbreathing2", + "cloudpotbreathextended": "lingerpotwaterbreathing2", + "cloudpotbreathex": "lingerpotwaterbreathing2", + "cloudpotbreathlevel2": "lingerpotwaterbreathing2", + "waterbreathingcloudpot2": "lingerpotwaterbreathing2", + "waterbreathingcloudpotlong": "lingerpotwaterbreathing2", + "waterbreathingcloudpotextended": "lingerpotwaterbreathing2", + "waterbreathingcloudpotex": "lingerpotwaterbreathing2", + "waterbreathingcloudpotlevel2": "lingerpotwaterbreathing2", + "wbcloudpot2": "lingerpotwaterbreathing2", + "wbcloudpotlong": "lingerpotwaterbreathing2", + "wbcloudpotextended": "lingerpotwaterbreathing2", + "wbcloudpotex": "lingerpotwaterbreathing2", + "wbcloudpotlevel2": "lingerpotwaterbreathing2", + "waterbreathcloudpot2": "lingerpotwaterbreathing2", + "waterbreathcloudpotlong": "lingerpotwaterbreathing2", + "waterbreathcloudpotextended": "lingerpotwaterbreathing2", + "waterbreathcloudpotex": "lingerpotwaterbreathing2", + "waterbreathcloudpotlevel2": "lingerpotwaterbreathing2", + "breathingcloudpot2": "lingerpotwaterbreathing2", + "breathingcloudpotlong": "lingerpotwaterbreathing2", + "breathingcloudpotextended": "lingerpotwaterbreathing2", + "breathingcloudpotex": "lingerpotwaterbreathing2", + "breathingcloudpotlevel2": "lingerpotwaterbreathing2", + "breathcloudpot2": "lingerpotwaterbreathing2", + "breathcloudpotlong": "lingerpotwaterbreathing2", + "breathcloudpotextended": "lingerpotwaterbreathing2", + "breathcloudpotex": "lingerpotwaterbreathing2", + "breathcloudpotlevel2": "lingerpotwaterbreathing2", + "arrowwaterbreathing2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_water_breathing", + "type": "WATER_BREATHING", + "upgraded": false, + "extended": true + } + }, + "arrowwaterbreathinglong": "arrowwaterbreathing2", + "arrowwaterbreathingextended": "arrowwaterbreathing2", + "arrowwaterbreathingex": "arrowwaterbreathing2", + "arrowwaterbreathinglevel2": "arrowwaterbreathing2", + "arrowwb2": "arrowwaterbreathing2", + "arrowwblong": "arrowwaterbreathing2", + "arrowwbextended": "arrowwaterbreathing2", + "arrowwbex": "arrowwaterbreathing2", + "arrowwblevel2": "arrowwaterbreathing2", + "arrowwaterbreath2": "arrowwaterbreathing2", + "arrowwaterbreathlong": "arrowwaterbreathing2", + "arrowwaterbreathextended": "arrowwaterbreathing2", + "arrowwaterbreathex": "arrowwaterbreathing2", + "arrowwaterbreathlevel2": "arrowwaterbreathing2", + "arrowbreathing2": "arrowwaterbreathing2", + "arrowbreathinglong": "arrowwaterbreathing2", + "arrowbreathingextended": "arrowwaterbreathing2", + "arrowbreathingex": "arrowwaterbreathing2", + "arrowbreathinglevel2": "arrowwaterbreathing2", + "arrowbreath2": "arrowwaterbreathing2", + "arrowbreathlong": "arrowwaterbreathing2", + "arrowbreathextended": "arrowwaterbreathing2", + "arrowbreathex": "arrowwaterbreathing2", + "arrowbreathlevel2": "arrowwaterbreathing2", + "waterbreathingarrow2": "arrowwaterbreathing2", + "waterbreathingarrowlong": "arrowwaterbreathing2", + "waterbreathingarrowextended": "arrowwaterbreathing2", + "waterbreathingarrowex": "arrowwaterbreathing2", + "waterbreathingarrowlevel2": "arrowwaterbreathing2", + "wbarrow2": "arrowwaterbreathing2", + "wbarrowlong": "arrowwaterbreathing2", + "wbarrowextended": "arrowwaterbreathing2", + "wbarrowex": "arrowwaterbreathing2", + "wbarrowlevel2": "arrowwaterbreathing2", + "waterbreatharrow2": "arrowwaterbreathing2", + "waterbreatharrowlong": "arrowwaterbreathing2", + "waterbreatharrowextended": "arrowwaterbreathing2", + "waterbreatharrowex": "arrowwaterbreathing2", + "waterbreatharrowlevel2": "arrowwaterbreathing2", + "breathingarrow2": "arrowwaterbreathing2", + "breathingarrowlong": "arrowwaterbreathing2", + "breathingarrowextended": "arrowwaterbreathing2", + "breathingarrowex": "arrowwaterbreathing2", + "breathingarrowlevel2": "arrowwaterbreathing2", + "breatharrow2": "arrowwaterbreathing2", + "breatharrowlong": "arrowwaterbreathing2", + "breatharrowextended": "arrowwaterbreathing2", + "breatharrowex": "arrowwaterbreathing2", + "breatharrowlevel2": "arrowwaterbreathing2", + "healingpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "healing", + "type": "INSTANT_HEAL", + "upgraded": false, + "extended": false + } + }, + "healpotion": "healingpotion", + "lifepotion": "healingpotion", + "hpotion": "healingpotion", + "healingpot": "healingpotion", + "healpot": "healingpotion", + "lifepot": "healingpotion", + "hpot": "healingpotion", + "potionofhealing": "healingpotion", + "potionofheal": "healingpotion", + "potionoflife": "healingpotion", + "potionofh": "healingpotion", + "potofhealing": "healingpotion", + "potofheal": "healingpotion", + "potoflife": "healingpotion", + "potofh": "healingpotion", + "splashhealingpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "healing", + "type": "INSTANT_HEAL", + "upgraded": false, + "extended": false + } + }, + "splashhealpotion": "splashhealingpotion", + "splashlifepotion": "splashhealingpotion", + "splashhpotion": "splashhealingpotion", + "splhealingpotion": "splashhealingpotion", + "splhealpotion": "splashhealingpotion", + "spllifepotion": "splashhealingpotion", + "splhpotion": "splashhealingpotion", + "healingsplashpotion": "splashhealingpotion", + "healsplashpotion": "splashhealingpotion", + "lifesplashpotion": "splashhealingpotion", + "hsplashpotion": "splashhealingpotion", + "splashhealingpot": "splashhealingpotion", + "splashhealpot": "splashhealingpotion", + "splashlifepot": "splashhealingpotion", + "splashhpot": "splashhealingpotion", + "splhealingpot": "splashhealingpotion", + "splhealpot": "splashhealingpotion", + "spllifepot": "splashhealingpotion", + "splhpot": "splashhealingpotion", + "healingsplashpot": "splashhealingpotion", + "healsplashpot": "splashhealingpotion", + "lifesplashpot": "splashhealingpotion", + "hsplashpot": "splashhealingpotion", + "lingerpothealing": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "healing", + "type": "INSTANT_HEAL", + "upgraded": false, + "extended": false + } + }, + "lingerpotheal": "lingerpothealing", + "lingerpotlife": "lingerpothealing", + "lingerpoth": "lingerpothealing", + "healinglingerpot": "lingerpothealing", + "heallingerpot": "lingerpothealing", + "lifelingerpot": "lingerpothealing", + "hlingerpot": "lingerpothealing", + "aoepotionhealing": "lingerpothealing", + "aoepotionheal": "lingerpothealing", + "aoepotionlife": "lingerpothealing", + "aoepotionh": "lingerpothealing", + "healingaoepoiont": "lingerpothealing", + "healaoepoiont": "lingerpothealing", + "lifeaoepoiont": "lingerpothealing", + "haoepoiont": "lingerpothealing", + "aoepothealing": "lingerpothealing", + "aoepotheal": "lingerpothealing", + "aoepotlife": "lingerpothealing", + "aoepoth": "lingerpothealing", + "healingaoepot": "lingerpothealing", + "healaoepot": "lingerpothealing", + "lifeaoepot": "lingerpothealing", + "haoepot": "lingerpothealing", + "areapotionhealing": "lingerpothealing", + "areapotionheal": "lingerpothealing", + "areapotionlife": "lingerpothealing", + "areapotionh": "lingerpothealing", + "healingareapotion": "lingerpothealing", + "healareapotion": "lingerpothealing", + "lifeareapotion": "lingerpothealing", + "hareapotion": "lingerpothealing", + "areapothealing": "lingerpothealing", + "areapotheal": "lingerpothealing", + "areapotlife": "lingerpothealing", + "areapoth": "lingerpothealing", + "healingareapot": "lingerpothealing", + "healareapot": "lingerpothealing", + "lifeareapot": "lingerpothealing", + "hareapot": "lingerpothealing", + "cloudpotionhealing": "lingerpothealing", + "cloudpotionheal": "lingerpothealing", + "cloudpotionlife": "lingerpothealing", + "cloudpotionh": "lingerpothealing", + "healingcloudpotion": "lingerpothealing", + "healcloudpotion": "lingerpothealing", + "lifecloudpotion": "lingerpothealing", + "hcloudpotion": "lingerpothealing", + "cloudpothealing": "lingerpothealing", + "cloudpotheal": "lingerpothealing", + "cloudpotlife": "lingerpothealing", + "cloudpoth": "lingerpothealing", + "healingcloudpot": "lingerpothealing", + "healcloudpot": "lingerpothealing", + "lifecloudpot": "lingerpothealing", + "hcloudpot": "lingerpothealing", + "arrowhealing": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "healing", + "type": "INSTANT_HEAL", + "upgraded": false, + "extended": false + } + }, + "arrowheal": "arrowhealing", + "arrowlife": "arrowhealing", + "arrowh": "arrowhealing", + "healingarrow": "arrowhealing", + "healarrow": "arrowhealing", + "lifearrow": "arrowhealing", + "harrow": "arrowhealing", + "healingiipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_healing", + "type": "INSTANT_HEAL", + "upgraded": true, + "extended": false + } + }, + "healingstrongpotion": "healingiipotion", + "healingleveliipotion": "healingiipotion", + "healiipotion": "healingiipotion", + "healstrongpotion": "healingiipotion", + "healleveliipotion": "healingiipotion", + "lifeiipotion": "healingiipotion", + "lifestrongpotion": "healingiipotion", + "lifeleveliipotion": "healingiipotion", + "hiipotion": "healingiipotion", + "hstrongpotion": "healingiipotion", + "hleveliipotion": "healingiipotion", + "healingiipot": "healingiipotion", + "healingstrongpot": "healingiipotion", + "healingleveliipot": "healingiipotion", + "healiipot": "healingiipotion", + "healstrongpot": "healingiipotion", + "healleveliipot": "healingiipotion", + "lifeiipot": "healingiipotion", + "lifestrongpot": "healingiipotion", + "lifeleveliipot": "healingiipotion", + "hiipot": "healingiipotion", + "hstrongpot": "healingiipotion", + "hleveliipot": "healingiipotion", + "potionofhealingii": "healingiipotion", + "potionofhealingstrong": "healingiipotion", + "potionofhealinglevelii": "healingiipotion", + "potionofhealii": "healingiipotion", + "potionofhealstrong": "healingiipotion", + "potionofheallevelii": "healingiipotion", + "potionoflifeii": "healingiipotion", + "potionoflifestrong": "healingiipotion", + "potionoflifelevelii": "healingiipotion", + "potionofhii": "healingiipotion", + "potionofhstrong": "healingiipotion", + "potionofhlevelii": "healingiipotion", + "potofhealingii": "healingiipotion", + "potofhealingstrong": "healingiipotion", + "potofhealinglevelii": "healingiipotion", + "potofhealii": "healingiipotion", + "potofhealstrong": "healingiipotion", + "potofheallevelii": "healingiipotion", + "potoflifeii": "healingiipotion", + "potoflifestrong": "healingiipotion", + "potoflifelevelii": "healingiipotion", + "potofhii": "healingiipotion", + "potofhstrong": "healingiipotion", + "potofhlevelii": "healingiipotion", + "splashhealingiipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_healing", + "type": "INSTANT_HEAL", + "upgraded": true, + "extended": false + } + }, + "splashhealingstrongpotion": "splashhealingiipotion", + "splashhealingleveliipotion": "splashhealingiipotion", + "splashhealiipotion": "splashhealingiipotion", + "splashhealstrongpotion": "splashhealingiipotion", + "splashhealleveliipotion": "splashhealingiipotion", + "splashlifeiipotion": "splashhealingiipotion", + "splashlifestrongpotion": "splashhealingiipotion", + "splashlifeleveliipotion": "splashhealingiipotion", + "splashhiipotion": "splashhealingiipotion", + "splashhstrongpotion": "splashhealingiipotion", + "splashhleveliipotion": "splashhealingiipotion", + "splhealingiipotion": "splashhealingiipotion", + "splhealingstrongpotion": "splashhealingiipotion", + "splhealingleveliipotion": "splashhealingiipotion", + "splhealiipotion": "splashhealingiipotion", + "splhealstrongpotion": "splashhealingiipotion", + "splhealleveliipotion": "splashhealingiipotion", + "spllifeiipotion": "splashhealingiipotion", + "spllifestrongpotion": "splashhealingiipotion", + "spllifeleveliipotion": "splashhealingiipotion", + "splhiipotion": "splashhealingiipotion", + "splhstrongpotion": "splashhealingiipotion", + "splhleveliipotion": "splashhealingiipotion", + "healingiisplashpotion": "splashhealingiipotion", + "healingstrongsplashpotion": "splashhealingiipotion", + "healingleveliisplashpotion": "splashhealingiipotion", + "healiisplashpotion": "splashhealingiipotion", + "healstrongsplashpotion": "splashhealingiipotion", + "healleveliisplashpotion": "splashhealingiipotion", + "lifeiisplashpotion": "splashhealingiipotion", + "lifestrongsplashpotion": "splashhealingiipotion", + "lifeleveliisplashpotion": "splashhealingiipotion", + "hiisplashpotion": "splashhealingiipotion", + "hstrongsplashpotion": "splashhealingiipotion", + "hleveliisplashpotion": "splashhealingiipotion", + "splashhealingiipot": "splashhealingiipotion", + "splashhealingstrongpot": "splashhealingiipotion", + "splashhealingleveliipot": "splashhealingiipotion", + "splashhealiipot": "splashhealingiipotion", + "splashhealstrongpot": "splashhealingiipotion", + "splashhealleveliipot": "splashhealingiipotion", + "splashlifeiipot": "splashhealingiipotion", + "splashlifestrongpot": "splashhealingiipotion", + "splashlifeleveliipot": "splashhealingiipotion", + "splashhiipot": "splashhealingiipotion", + "splashhstrongpot": "splashhealingiipotion", + "splashhleveliipot": "splashhealingiipotion", + "splhealingiipot": "splashhealingiipotion", + "splhealingstrongpot": "splashhealingiipotion", + "splhealingleveliipot": "splashhealingiipotion", + "splhealiipot": "splashhealingiipotion", + "splhealstrongpot": "splashhealingiipotion", + "splhealleveliipot": "splashhealingiipotion", + "spllifeiipot": "splashhealingiipotion", + "spllifestrongpot": "splashhealingiipotion", + "spllifeleveliipot": "splashhealingiipotion", + "splhiipot": "splashhealingiipotion", + "splhstrongpot": "splashhealingiipotion", + "splhleveliipot": "splashhealingiipotion", + "healingiisplashpot": "splashhealingiipotion", + "healingstrongsplashpot": "splashhealingiipotion", + "healingleveliisplashpot": "splashhealingiipotion", + "healiisplashpot": "splashhealingiipotion", + "healstrongsplashpot": "splashhealingiipotion", + "healleveliisplashpot": "splashhealingiipotion", + "lifeiisplashpot": "splashhealingiipotion", + "lifestrongsplashpot": "splashhealingiipotion", + "lifeleveliisplashpot": "splashhealingiipotion", + "hiisplashpot": "splashhealingiipotion", + "hstrongsplashpot": "splashhealingiipotion", + "hleveliisplashpot": "splashhealingiipotion", + "lingerpothealingii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_healing", + "type": "INSTANT_HEAL", + "upgraded": true, + "extended": false + } + }, + "lingerpothealingstrong": "lingerpothealingii", + "lingerpothealinglevelii": "lingerpothealingii", + "lingerpothealii": "lingerpothealingii", + "lingerpothealstrong": "lingerpothealingii", + "lingerpotheallevelii": "lingerpothealingii", + "lingerpotlifeii": "lingerpothealingii", + "lingerpotlifestrong": "lingerpothealingii", + "lingerpotlifelevelii": "lingerpothealingii", + "lingerpothii": "lingerpothealingii", + "lingerpothstrong": "lingerpothealingii", + "lingerpothlevelii": "lingerpothealingii", + "healinglingerpotii": "lingerpothealingii", + "healinglingerpotstrong": "lingerpothealingii", + "healinglingerpotlevelii": "lingerpothealingii", + "heallingerpotii": "lingerpothealingii", + "heallingerpotstrong": "lingerpothealingii", + "heallingerpotlevelii": "lingerpothealingii", + "lifelingerpotii": "lingerpothealingii", + "lifelingerpotstrong": "lingerpothealingii", + "lifelingerpotlevelii": "lingerpothealingii", + "hlingerpotii": "lingerpothealingii", + "hlingerpotstrong": "lingerpothealingii", + "hlingerpotlevelii": "lingerpothealingii", + "aoepotionhealingii": "lingerpothealingii", + "aoepotionhealingstrong": "lingerpothealingii", + "aoepotionhealinglevelii": "lingerpothealingii", + "aoepotionhealii": "lingerpothealingii", + "aoepotionhealstrong": "lingerpothealingii", + "aoepotionheallevelii": "lingerpothealingii", + "aoepotionlifeii": "lingerpothealingii", + "aoepotionlifestrong": "lingerpothealingii", + "aoepotionlifelevelii": "lingerpothealingii", + "aoepotionhii": "lingerpothealingii", + "aoepotionhstrong": "lingerpothealingii", + "aoepotionhlevelii": "lingerpothealingii", + "healingaoepoiontii": "lingerpothealingii", + "healingaoepoiontstrong": "lingerpothealingii", + "healingaoepoiontlevelii": "lingerpothealingii", + "healaoepoiontii": "lingerpothealingii", + "healaoepoiontstrong": "lingerpothealingii", + "healaoepoiontlevelii": "lingerpothealingii", + "lifeaoepoiontii": "lingerpothealingii", + "lifeaoepoiontstrong": "lingerpothealingii", + "lifeaoepoiontlevelii": "lingerpothealingii", + "haoepoiontii": "lingerpothealingii", + "haoepoiontstrong": "lingerpothealingii", + "haoepoiontlevelii": "lingerpothealingii", + "aoepothealingii": "lingerpothealingii", + "aoepothealingstrong": "lingerpothealingii", + "aoepothealinglevelii": "lingerpothealingii", + "aoepothealii": "lingerpothealingii", + "aoepothealstrong": "lingerpothealingii", + "aoepotheallevelii": "lingerpothealingii", + "aoepotlifeii": "lingerpothealingii", + "aoepotlifestrong": "lingerpothealingii", + "aoepotlifelevelii": "lingerpothealingii", + "aoepothii": "lingerpothealingii", + "aoepothstrong": "lingerpothealingii", + "aoepothlevelii": "lingerpothealingii", + "healingaoepotii": "lingerpothealingii", + "healingaoepotstrong": "lingerpothealingii", + "healingaoepotlevelii": "lingerpothealingii", + "healaoepotii": "lingerpothealingii", + "healaoepotstrong": "lingerpothealingii", + "healaoepotlevelii": "lingerpothealingii", + "lifeaoepotii": "lingerpothealingii", + "lifeaoepotstrong": "lingerpothealingii", + "lifeaoepotlevelii": "lingerpothealingii", + "haoepotii": "lingerpothealingii", + "haoepotstrong": "lingerpothealingii", + "haoepotlevelii": "lingerpothealingii", + "areapotionhealingii": "lingerpothealingii", + "areapotionhealingstrong": "lingerpothealingii", + "areapotionhealinglevelii": "lingerpothealingii", + "areapotionhealii": "lingerpothealingii", + "areapotionhealstrong": "lingerpothealingii", + "areapotionheallevelii": "lingerpothealingii", + "areapotionlifeii": "lingerpothealingii", + "areapotionlifestrong": "lingerpothealingii", + "areapotionlifelevelii": "lingerpothealingii", + "areapotionhii": "lingerpothealingii", + "areapotionhstrong": "lingerpothealingii", + "areapotionhlevelii": "lingerpothealingii", + "healingareapotionii": "lingerpothealingii", + "healingareapotionstrong": "lingerpothealingii", + "healingareapotionlevelii": "lingerpothealingii", + "healareapotionii": "lingerpothealingii", + "healareapotionstrong": "lingerpothealingii", + "healareapotionlevelii": "lingerpothealingii", + "lifeareapotionii": "lingerpothealingii", + "lifeareapotionstrong": "lingerpothealingii", + "lifeareapotionlevelii": "lingerpothealingii", + "hareapotionii": "lingerpothealingii", + "hareapotionstrong": "lingerpothealingii", + "hareapotionlevelii": "lingerpothealingii", + "areapothealingii": "lingerpothealingii", + "areapothealingstrong": "lingerpothealingii", + "areapothealinglevelii": "lingerpothealingii", + "areapothealii": "lingerpothealingii", + "areapothealstrong": "lingerpothealingii", + "areapotheallevelii": "lingerpothealingii", + "areapotlifeii": "lingerpothealingii", + "areapotlifestrong": "lingerpothealingii", + "areapotlifelevelii": "lingerpothealingii", + "areapothii": "lingerpothealingii", + "areapothstrong": "lingerpothealingii", + "areapothlevelii": "lingerpothealingii", + "healingareapotii": "lingerpothealingii", + "healingareapotstrong": "lingerpothealingii", + "healingareapotlevelii": "lingerpothealingii", + "healareapotii": "lingerpothealingii", + "healareapotstrong": "lingerpothealingii", + "healareapotlevelii": "lingerpothealingii", + "lifeareapotii": "lingerpothealingii", + "lifeareapotstrong": "lingerpothealingii", + "lifeareapotlevelii": "lingerpothealingii", + "hareapotii": "lingerpothealingii", + "hareapotstrong": "lingerpothealingii", + "hareapotlevelii": "lingerpothealingii", + "cloudpotionhealingii": "lingerpothealingii", + "cloudpotionhealingstrong": "lingerpothealingii", + "cloudpotionhealinglevelii": "lingerpothealingii", + "cloudpotionhealii": "lingerpothealingii", + "cloudpotionhealstrong": "lingerpothealingii", + "cloudpotionheallevelii": "lingerpothealingii", + "cloudpotionlifeii": "lingerpothealingii", + "cloudpotionlifestrong": "lingerpothealingii", + "cloudpotionlifelevelii": "lingerpothealingii", + "cloudpotionhii": "lingerpothealingii", + "cloudpotionhstrong": "lingerpothealingii", + "cloudpotionhlevelii": "lingerpothealingii", + "healingcloudpotionii": "lingerpothealingii", + "healingcloudpotionstrong": "lingerpothealingii", + "healingcloudpotionlevelii": "lingerpothealingii", + "healcloudpotionii": "lingerpothealingii", + "healcloudpotionstrong": "lingerpothealingii", + "healcloudpotionlevelii": "lingerpothealingii", + "lifecloudpotionii": "lingerpothealingii", + "lifecloudpotionstrong": "lingerpothealingii", + "lifecloudpotionlevelii": "lingerpothealingii", + "hcloudpotionii": "lingerpothealingii", + "hcloudpotionstrong": "lingerpothealingii", + "hcloudpotionlevelii": "lingerpothealingii", + "cloudpothealingii": "lingerpothealingii", + "cloudpothealingstrong": "lingerpothealingii", + "cloudpothealinglevelii": "lingerpothealingii", + "cloudpothealii": "lingerpothealingii", + "cloudpothealstrong": "lingerpothealingii", + "cloudpotheallevelii": "lingerpothealingii", + "cloudpotlifeii": "lingerpothealingii", + "cloudpotlifestrong": "lingerpothealingii", + "cloudpotlifelevelii": "lingerpothealingii", + "cloudpothii": "lingerpothealingii", + "cloudpothstrong": "lingerpothealingii", + "cloudpothlevelii": "lingerpothealingii", + "healingcloudpotii": "lingerpothealingii", + "healingcloudpotstrong": "lingerpothealingii", + "healingcloudpotlevelii": "lingerpothealingii", + "healcloudpotii": "lingerpothealingii", + "healcloudpotstrong": "lingerpothealingii", + "healcloudpotlevelii": "lingerpothealingii", + "lifecloudpotii": "lingerpothealingii", + "lifecloudpotstrong": "lingerpothealingii", + "lifecloudpotlevelii": "lingerpothealingii", + "hcloudpotii": "lingerpothealingii", + "hcloudpotstrong": "lingerpothealingii", + "hcloudpotlevelii": "lingerpothealingii", + "arrowhealingii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_healing", + "type": "INSTANT_HEAL", + "upgraded": true, + "extended": false + } + }, + "arrowhealingstrong": "arrowhealingii", + "arrowhealinglevelii": "arrowhealingii", + "arrowhealii": "arrowhealingii", + "arrowhealstrong": "arrowhealingii", + "arrowheallevelii": "arrowhealingii", + "arrowlifeii": "arrowhealingii", + "arrowlifestrong": "arrowhealingii", + "arrowlifelevelii": "arrowhealingii", + "arrowhii": "arrowhealingii", + "arrowhstrong": "arrowhealingii", + "arrowhlevelii": "arrowhealingii", + "healingarrowii": "arrowhealingii", + "healingarrowstrong": "arrowhealingii", + "healingarrowlevelii": "arrowhealingii", + "healarrowii": "arrowhealingii", + "healarrowstrong": "arrowhealingii", + "healarrowlevelii": "arrowhealingii", + "lifearrowii": "arrowhealingii", + "lifearrowstrong": "arrowhealingii", + "lifearrowlevelii": "arrowhealingii", + "harrowii": "arrowhealingii", + "harrowstrong": "arrowhealingii", + "harrowlevelii": "arrowhealingii", + "harmingpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "harming", + "type": "INSTANT_DAMAGE", + "upgraded": false, + "extended": false + } + }, + "damagepotion": "harmingpotion", + "dmgpotion": "harmingpotion", + "dpotion": "harmingpotion", + "harmingpot": "harmingpotion", + "damagepot": "harmingpotion", + "dmgpot": "harmingpotion", + "dpot": "harmingpotion", + "potionofharming": "harmingpotion", + "potionofdamage": "harmingpotion", + "potionofdmg": "harmingpotion", + "potionofd": "harmingpotion", + "potofharming": "harmingpotion", + "potofdamage": "harmingpotion", + "potofdmg": "harmingpotion", + "potofd": "harmingpotion", + "splashharmingpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "harming", + "type": "INSTANT_DAMAGE", + "upgraded": false, + "extended": false + } + }, + "splashdamagepotion": "splashharmingpotion", + "splashdmgpotion": "splashharmingpotion", + "splashdpotion": "splashharmingpotion", + "splharmingpotion": "splashharmingpotion", + "spldamagepotion": "splashharmingpotion", + "spldmgpotion": "splashharmingpotion", + "spldpotion": "splashharmingpotion", + "harmingsplashpotion": "splashharmingpotion", + "damagesplashpotion": "splashharmingpotion", + "dmgsplashpotion": "splashharmingpotion", + "dsplashpotion": "splashharmingpotion", + "splashharmingpot": "splashharmingpotion", + "splashdamagepot": "splashharmingpotion", + "splashdmgpot": "splashharmingpotion", + "splashdpot": "splashharmingpotion", + "splharmingpot": "splashharmingpotion", + "spldamagepot": "splashharmingpotion", + "spldmgpot": "splashharmingpotion", + "spldpot": "splashharmingpotion", + "harmingsplashpot": "splashharmingpotion", + "damagesplashpot": "splashharmingpotion", + "dmgsplashpot": "splashharmingpotion", + "dsplashpot": "splashharmingpotion", + "lingerpotharming": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "harming", + "type": "INSTANT_DAMAGE", + "upgraded": false, + "extended": false + } + }, + "lingerpotdamage": "lingerpotharming", + "lingerpotdmg": "lingerpotharming", + "lingerpotd": "lingerpotharming", + "harminglingerpot": "lingerpotharming", + "damagelingerpot": "lingerpotharming", + "dmglingerpot": "lingerpotharming", + "dlingerpot": "lingerpotharming", + "aoepotionharming": "lingerpotharming", + "aoepotiondamage": "lingerpotharming", + "aoepotiondmg": "lingerpotharming", + "aoepotiond": "lingerpotharming", + "harmingaoepoiont": "lingerpotharming", + "damageaoepoiont": "lingerpotharming", + "dmgaoepoiont": "lingerpotharming", + "daoepoiont": "lingerpotharming", + "aoepotharming": "lingerpotharming", + "aoepotdamage": "lingerpotharming", + "aoepotdmg": "lingerpotharming", + "aoepotd": "lingerpotharming", + "harmingaoepot": "lingerpotharming", + "damageaoepot": "lingerpotharming", + "dmgaoepot": "lingerpotharming", + "daoepot": "lingerpotharming", + "areapotionharming": "lingerpotharming", + "areapotiondamage": "lingerpotharming", + "areapotiondmg": "lingerpotharming", + "areapotiond": "lingerpotharming", + "harmingareapotion": "lingerpotharming", + "damageareapotion": "lingerpotharming", + "dmgareapotion": "lingerpotharming", + "dareapotion": "lingerpotharming", + "areapotharming": "lingerpotharming", + "areapotdamage": "lingerpotharming", + "areapotdmg": "lingerpotharming", + "areapotd": "lingerpotharming", + "harmingareapot": "lingerpotharming", + "damageareapot": "lingerpotharming", + "dmgareapot": "lingerpotharming", + "dareapot": "lingerpotharming", + "cloudpotionharming": "lingerpotharming", + "cloudpotiondamage": "lingerpotharming", + "cloudpotiondmg": "lingerpotharming", + "cloudpotiond": "lingerpotharming", + "harmingcloudpotion": "lingerpotharming", + "damagecloudpotion": "lingerpotharming", + "dmgcloudpotion": "lingerpotharming", + "dcloudpotion": "lingerpotharming", + "cloudpotharming": "lingerpotharming", + "cloudpotdamage": "lingerpotharming", + "cloudpotdmg": "lingerpotharming", + "cloudpotd": "lingerpotharming", + "harmingcloudpot": "lingerpotharming", + "damagecloudpot": "lingerpotharming", + "dmgcloudpot": "lingerpotharming", + "dcloudpot": "lingerpotharming", + "arrowharming": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "harming", + "type": "INSTANT_DAMAGE", + "upgraded": false, + "extended": false + } + }, + "arrowdamage": "arrowharming", + "arrowdmg": "arrowharming", + "arrowd": "arrowharming", + "harmingarrow": "arrowharming", + "damagearrow": "arrowharming", + "dmgarrow": "arrowharming", + "darrow": "arrowharming", + "harmingiipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_harming", + "type": "INSTANT_DAMAGE", + "upgraded": true, + "extended": false + } + }, + "harmingstrongpotion": "harmingiipotion", + "harmingleveliipotion": "harmingiipotion", + "damageiipotion": "harmingiipotion", + "damagestrongpotion": "harmingiipotion", + "damageleveliipotion": "harmingiipotion", + "dmgiipotion": "harmingiipotion", + "dmgstrongpotion": "harmingiipotion", + "dmgleveliipotion": "harmingiipotion", + "diipotion": "harmingiipotion", + "dstrongpotion": "harmingiipotion", + "dleveliipotion": "harmingiipotion", + "harmingiipot": "harmingiipotion", + "harmingstrongpot": "harmingiipotion", + "harmingleveliipot": "harmingiipotion", + "damageiipot": "harmingiipotion", + "damagestrongpot": "harmingiipotion", + "damageleveliipot": "harmingiipotion", + "dmgiipot": "harmingiipotion", + "dmgstrongpot": "harmingiipotion", + "dmgleveliipot": "harmingiipotion", + "diipot": "harmingiipotion", + "dstrongpot": "harmingiipotion", + "dleveliipot": "harmingiipotion", + "potionofharmingii": "harmingiipotion", + "potionofharmingstrong": "harmingiipotion", + "potionofharminglevelii": "harmingiipotion", + "potionofdamageii": "harmingiipotion", + "potionofdamagestrong": "harmingiipotion", + "potionofdamagelevelii": "harmingiipotion", + "potionofdmgii": "harmingiipotion", + "potionofdmgstrong": "harmingiipotion", + "potionofdmglevelii": "harmingiipotion", + "potionofdii": "harmingiipotion", + "potionofdstrong": "harmingiipotion", + "potionofdlevelii": "harmingiipotion", + "potofharmingii": "harmingiipotion", + "potofharmingstrong": "harmingiipotion", + "potofharminglevelii": "harmingiipotion", + "potofdamageii": "harmingiipotion", + "potofdamagestrong": "harmingiipotion", + "potofdamagelevelii": "harmingiipotion", + "potofdmgii": "harmingiipotion", + "potofdmgstrong": "harmingiipotion", + "potofdmglevelii": "harmingiipotion", + "potofdii": "harmingiipotion", + "potofdstrong": "harmingiipotion", + "potofdlevelii": "harmingiipotion", + "splashharmingiipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_harming", + "type": "INSTANT_DAMAGE", + "upgraded": true, + "extended": false + } + }, + "splashharmingstrongpotion": "splashharmingiipotion", + "splashharmingleveliipotion": "splashharmingiipotion", + "splashdamageiipotion": "splashharmingiipotion", + "splashdamagestrongpotion": "splashharmingiipotion", + "splashdamageleveliipotion": "splashharmingiipotion", + "splashdmgiipotion": "splashharmingiipotion", + "splashdmgstrongpotion": "splashharmingiipotion", + "splashdmgleveliipotion": "splashharmingiipotion", + "splashdiipotion": "splashharmingiipotion", + "splashdstrongpotion": "splashharmingiipotion", + "splashdleveliipotion": "splashharmingiipotion", + "splharmingiipotion": "splashharmingiipotion", + "splharmingstrongpotion": "splashharmingiipotion", + "splharmingleveliipotion": "splashharmingiipotion", + "spldamageiipotion": "splashharmingiipotion", + "spldamagestrongpotion": "splashharmingiipotion", + "spldamageleveliipotion": "splashharmingiipotion", + "spldmgiipotion": "splashharmingiipotion", + "spldmgstrongpotion": "splashharmingiipotion", + "spldmgleveliipotion": "splashharmingiipotion", + "spldiipotion": "splashharmingiipotion", + "spldstrongpotion": "splashharmingiipotion", + "spldleveliipotion": "splashharmingiipotion", + "harmingiisplashpotion": "splashharmingiipotion", + "harmingstrongsplashpotion": "splashharmingiipotion", + "harmingleveliisplashpotion": "splashharmingiipotion", + "damageiisplashpotion": "splashharmingiipotion", + "damagestrongsplashpotion": "splashharmingiipotion", + "damageleveliisplashpotion": "splashharmingiipotion", + "dmgiisplashpotion": "splashharmingiipotion", + "dmgstrongsplashpotion": "splashharmingiipotion", + "dmgleveliisplashpotion": "splashharmingiipotion", + "diisplashpotion": "splashharmingiipotion", + "dstrongsplashpotion": "splashharmingiipotion", + "dleveliisplashpotion": "splashharmingiipotion", + "splashharmingiipot": "splashharmingiipotion", + "splashharmingstrongpot": "splashharmingiipotion", + "splashharmingleveliipot": "splashharmingiipotion", + "splashdamageiipot": "splashharmingiipotion", + "splashdamagestrongpot": "splashharmingiipotion", + "splashdamageleveliipot": "splashharmingiipotion", + "splashdmgiipot": "splashharmingiipotion", + "splashdmgstrongpot": "splashharmingiipotion", + "splashdmgleveliipot": "splashharmingiipotion", + "splashdiipot": "splashharmingiipotion", + "splashdstrongpot": "splashharmingiipotion", + "splashdleveliipot": "splashharmingiipotion", + "splharmingiipot": "splashharmingiipotion", + "splharmingstrongpot": "splashharmingiipotion", + "splharmingleveliipot": "splashharmingiipotion", + "spldamageiipot": "splashharmingiipotion", + "spldamagestrongpot": "splashharmingiipotion", + "spldamageleveliipot": "splashharmingiipotion", + "spldmgiipot": "splashharmingiipotion", + "spldmgstrongpot": "splashharmingiipotion", + "spldmgleveliipot": "splashharmingiipotion", + "spldiipot": "splashharmingiipotion", + "spldstrongpot": "splashharmingiipotion", + "spldleveliipot": "splashharmingiipotion", + "harmingiisplashpot": "splashharmingiipotion", + "harmingstrongsplashpot": "splashharmingiipotion", + "harmingleveliisplashpot": "splashharmingiipotion", + "damageiisplashpot": "splashharmingiipotion", + "damagestrongsplashpot": "splashharmingiipotion", + "damageleveliisplashpot": "splashharmingiipotion", + "dmgiisplashpot": "splashharmingiipotion", + "dmgstrongsplashpot": "splashharmingiipotion", + "dmgleveliisplashpot": "splashharmingiipotion", + "diisplashpot": "splashharmingiipotion", + "dstrongsplashpot": "splashharmingiipotion", + "dleveliisplashpot": "splashharmingiipotion", + "lingerpotharmingii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_harming", + "type": "INSTANT_DAMAGE", + "upgraded": true, + "extended": false + } + }, + "lingerpotharmingstrong": "lingerpotharmingii", + "lingerpotharminglevelii": "lingerpotharmingii", + "lingerpotdamageii": "lingerpotharmingii", + "lingerpotdamagestrong": "lingerpotharmingii", + "lingerpotdamagelevelii": "lingerpotharmingii", + "lingerpotdmgii": "lingerpotharmingii", + "lingerpotdmgstrong": "lingerpotharmingii", + "lingerpotdmglevelii": "lingerpotharmingii", + "lingerpotdii": "lingerpotharmingii", + "lingerpotdstrong": "lingerpotharmingii", + "lingerpotdlevelii": "lingerpotharmingii", + "harminglingerpotii": "lingerpotharmingii", + "harminglingerpotstrong": "lingerpotharmingii", + "harminglingerpotlevelii": "lingerpotharmingii", + "damagelingerpotii": "lingerpotharmingii", + "damagelingerpotstrong": "lingerpotharmingii", + "damagelingerpotlevelii": "lingerpotharmingii", + "dmglingerpotii": "lingerpotharmingii", + "dmglingerpotstrong": "lingerpotharmingii", + "dmglingerpotlevelii": "lingerpotharmingii", + "dlingerpotii": "lingerpotharmingii", + "dlingerpotstrong": "lingerpotharmingii", + "dlingerpotlevelii": "lingerpotharmingii", + "aoepotionharmingii": "lingerpotharmingii", + "aoepotionharmingstrong": "lingerpotharmingii", + "aoepotionharminglevelii": "lingerpotharmingii", + "aoepotiondamageii": "lingerpotharmingii", + "aoepotiondamagestrong": "lingerpotharmingii", + "aoepotiondamagelevelii": "lingerpotharmingii", + "aoepotiondmgii": "lingerpotharmingii", + "aoepotiondmgstrong": "lingerpotharmingii", + "aoepotiondmglevelii": "lingerpotharmingii", + "aoepotiondii": "lingerpotharmingii", + "aoepotiondstrong": "lingerpotharmingii", + "aoepotiondlevelii": "lingerpotharmingii", + "harmingaoepoiontii": "lingerpotharmingii", + "harmingaoepoiontstrong": "lingerpotharmingii", + "harmingaoepoiontlevelii": "lingerpotharmingii", + "damageaoepoiontii": "lingerpotharmingii", + "damageaoepoiontstrong": "lingerpotharmingii", + "damageaoepoiontlevelii": "lingerpotharmingii", + "dmgaoepoiontii": "lingerpotharmingii", + "dmgaoepoiontstrong": "lingerpotharmingii", + "dmgaoepoiontlevelii": "lingerpotharmingii", + "daoepoiontii": "lingerpotharmingii", + "daoepoiontstrong": "lingerpotharmingii", + "daoepoiontlevelii": "lingerpotharmingii", + "aoepotharmingii": "lingerpotharmingii", + "aoepotharmingstrong": "lingerpotharmingii", + "aoepotharminglevelii": "lingerpotharmingii", + "aoepotdamageii": "lingerpotharmingii", + "aoepotdamagestrong": "lingerpotharmingii", + "aoepotdamagelevelii": "lingerpotharmingii", + "aoepotdmgii": "lingerpotharmingii", + "aoepotdmgstrong": "lingerpotharmingii", + "aoepotdmglevelii": "lingerpotharmingii", + "aoepotdii": "lingerpotharmingii", + "aoepotdstrong": "lingerpotharmingii", + "aoepotdlevelii": "lingerpotharmingii", + "harmingaoepotii": "lingerpotharmingii", + "harmingaoepotstrong": "lingerpotharmingii", + "harmingaoepotlevelii": "lingerpotharmingii", + "damageaoepotii": "lingerpotharmingii", + "damageaoepotstrong": "lingerpotharmingii", + "damageaoepotlevelii": "lingerpotharmingii", + "dmgaoepotii": "lingerpotharmingii", + "dmgaoepotstrong": "lingerpotharmingii", + "dmgaoepotlevelii": "lingerpotharmingii", + "daoepotii": "lingerpotharmingii", + "daoepotstrong": "lingerpotharmingii", + "daoepotlevelii": "lingerpotharmingii", + "areapotionharmingii": "lingerpotharmingii", + "areapotionharmingstrong": "lingerpotharmingii", + "areapotionharminglevelii": "lingerpotharmingii", + "areapotiondamageii": "lingerpotharmingii", + "areapotiondamagestrong": "lingerpotharmingii", + "areapotiondamagelevelii": "lingerpotharmingii", + "areapotiondmgii": "lingerpotharmingii", + "areapotiondmgstrong": "lingerpotharmingii", + "areapotiondmglevelii": "lingerpotharmingii", + "areapotiondii": "lingerpotharmingii", + "areapotiondstrong": "lingerpotharmingii", + "areapotiondlevelii": "lingerpotharmingii", + "harmingareapotionii": "lingerpotharmingii", + "harmingareapotionstrong": "lingerpotharmingii", + "harmingareapotionlevelii": "lingerpotharmingii", + "damageareapotionii": "lingerpotharmingii", + "damageareapotionstrong": "lingerpotharmingii", + "damageareapotionlevelii": "lingerpotharmingii", + "dmgareapotionii": "lingerpotharmingii", + "dmgareapotionstrong": "lingerpotharmingii", + "dmgareapotionlevelii": "lingerpotharmingii", + "dareapotionii": "lingerpotharmingii", + "dareapotionstrong": "lingerpotharmingii", + "dareapotionlevelii": "lingerpotharmingii", + "areapotharmingii": "lingerpotharmingii", + "areapotharmingstrong": "lingerpotharmingii", + "areapotharminglevelii": "lingerpotharmingii", + "areapotdamageii": "lingerpotharmingii", + "areapotdamagestrong": "lingerpotharmingii", + "areapotdamagelevelii": "lingerpotharmingii", + "areapotdmgii": "lingerpotharmingii", + "areapotdmgstrong": "lingerpotharmingii", + "areapotdmglevelii": "lingerpotharmingii", + "areapotdii": "lingerpotharmingii", + "areapotdstrong": "lingerpotharmingii", + "areapotdlevelii": "lingerpotharmingii", + "harmingareapotii": "lingerpotharmingii", + "harmingareapotstrong": "lingerpotharmingii", + "harmingareapotlevelii": "lingerpotharmingii", + "damageareapotii": "lingerpotharmingii", + "damageareapotstrong": "lingerpotharmingii", + "damageareapotlevelii": "lingerpotharmingii", + "dmgareapotii": "lingerpotharmingii", + "dmgareapotstrong": "lingerpotharmingii", + "dmgareapotlevelii": "lingerpotharmingii", + "dareapotii": "lingerpotharmingii", + "dareapotstrong": "lingerpotharmingii", + "dareapotlevelii": "lingerpotharmingii", + "cloudpotionharmingii": "lingerpotharmingii", + "cloudpotionharmingstrong": "lingerpotharmingii", + "cloudpotionharminglevelii": "lingerpotharmingii", + "cloudpotiondamageii": "lingerpotharmingii", + "cloudpotiondamagestrong": "lingerpotharmingii", + "cloudpotiondamagelevelii": "lingerpotharmingii", + "cloudpotiondmgii": "lingerpotharmingii", + "cloudpotiondmgstrong": "lingerpotharmingii", + "cloudpotiondmglevelii": "lingerpotharmingii", + "cloudpotiondii": "lingerpotharmingii", + "cloudpotiondstrong": "lingerpotharmingii", + "cloudpotiondlevelii": "lingerpotharmingii", + "harmingcloudpotionii": "lingerpotharmingii", + "harmingcloudpotionstrong": "lingerpotharmingii", + "harmingcloudpotionlevelii": "lingerpotharmingii", + "damagecloudpotionii": "lingerpotharmingii", + "damagecloudpotionstrong": "lingerpotharmingii", + "damagecloudpotionlevelii": "lingerpotharmingii", + "dmgcloudpotionii": "lingerpotharmingii", + "dmgcloudpotionstrong": "lingerpotharmingii", + "dmgcloudpotionlevelii": "lingerpotharmingii", + "dcloudpotionii": "lingerpotharmingii", + "dcloudpotionstrong": "lingerpotharmingii", + "dcloudpotionlevelii": "lingerpotharmingii", + "cloudpotharmingii": "lingerpotharmingii", + "cloudpotharmingstrong": "lingerpotharmingii", + "cloudpotharminglevelii": "lingerpotharmingii", + "cloudpotdamageii": "lingerpotharmingii", + "cloudpotdamagestrong": "lingerpotharmingii", + "cloudpotdamagelevelii": "lingerpotharmingii", + "cloudpotdmgii": "lingerpotharmingii", + "cloudpotdmgstrong": "lingerpotharmingii", + "cloudpotdmglevelii": "lingerpotharmingii", + "cloudpotdii": "lingerpotharmingii", + "cloudpotdstrong": "lingerpotharmingii", + "cloudpotdlevelii": "lingerpotharmingii", + "harmingcloudpotii": "lingerpotharmingii", + "harmingcloudpotstrong": "lingerpotharmingii", + "harmingcloudpotlevelii": "lingerpotharmingii", + "damagecloudpotii": "lingerpotharmingii", + "damagecloudpotstrong": "lingerpotharmingii", + "damagecloudpotlevelii": "lingerpotharmingii", + "dmgcloudpotii": "lingerpotharmingii", + "dmgcloudpotstrong": "lingerpotharmingii", + "dmgcloudpotlevelii": "lingerpotharmingii", + "dcloudpotii": "lingerpotharmingii", + "dcloudpotstrong": "lingerpotharmingii", + "dcloudpotlevelii": "lingerpotharmingii", + "arrowharmingii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_harming", + "type": "INSTANT_DAMAGE", + "upgraded": true, + "extended": false + } + }, + "arrowharmingstrong": "arrowharmingii", + "arrowharminglevelii": "arrowharmingii", + "arrowdamageii": "arrowharmingii", + "arrowdamagestrong": "arrowharmingii", + "arrowdamagelevelii": "arrowharmingii", + "arrowdmgii": "arrowharmingii", + "arrowdmgstrong": "arrowharmingii", + "arrowdmglevelii": "arrowharmingii", + "arrowdii": "arrowharmingii", + "arrowdstrong": "arrowharmingii", + "arrowdlevelii": "arrowharmingii", + "harmingarrowii": "arrowharmingii", + "harmingarrowstrong": "arrowharmingii", + "harmingarrowlevelii": "arrowharmingii", + "damagearrowii": "arrowharmingii", + "damagearrowstrong": "arrowharmingii", + "damagearrowlevelii": "arrowharmingii", + "dmgarrowii": "arrowharmingii", + "dmgarrowstrong": "arrowharmingii", + "dmgarrowlevelii": "arrowharmingii", + "darrowii": "arrowharmingii", + "darrowstrong": "arrowharmingii", + "darrowlevelii": "arrowharmingii", + "poisonpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "poison", + "type": "POISON", + "upgraded": false, + "extended": false + } + }, + "acidpotion": "poisonpotion", + "ppotion": "poisonpotion", + "poisonpot": "poisonpotion", + "acidpot": "poisonpotion", + "ppot": "poisonpotion", + "potionofpoison": "poisonpotion", + "potionofacid": "poisonpotion", + "potionofp": "poisonpotion", + "potofpoison": "poisonpotion", + "potofacid": "poisonpotion", + "potofp": "poisonpotion", + "splashpoisonpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "poison", + "type": "POISON", + "upgraded": false, + "extended": false + } + }, + "splashacidpotion": "splashpoisonpotion", + "splashppotion": "splashpoisonpotion", + "splpoisonpotion": "splashpoisonpotion", + "splacidpotion": "splashpoisonpotion", + "splppotion": "splashpoisonpotion", + "poisonsplashpotion": "splashpoisonpotion", + "acidsplashpotion": "splashpoisonpotion", + "psplashpotion": "splashpoisonpotion", + "splashpoisonpot": "splashpoisonpotion", + "splashacidpot": "splashpoisonpotion", + "splashppot": "splashpoisonpotion", + "splpoisonpot": "splashpoisonpotion", + "splacidpot": "splashpoisonpotion", + "splppot": "splashpoisonpotion", + "poisonsplashpot": "splashpoisonpotion", + "acidsplashpot": "splashpoisonpotion", + "psplashpot": "splashpoisonpotion", + "lingerpotpoison": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "poison", + "type": "POISON", + "upgraded": false, + "extended": false + } + }, + "lingerpotacid": "lingerpotpoison", + "lingerpotp": "lingerpotpoison", + "poisonlingerpot": "lingerpotpoison", + "acidlingerpot": "lingerpotpoison", + "plingerpot": "lingerpotpoison", + "aoepotionpoison": "lingerpotpoison", + "aoepotionacid": "lingerpotpoison", + "aoepotionp": "lingerpotpoison", + "poisonaoepoiont": "lingerpotpoison", + "acidaoepoiont": "lingerpotpoison", + "paoepoiont": "lingerpotpoison", + "aoepotpoison": "lingerpotpoison", + "aoepotacid": "lingerpotpoison", + "aoepotp": "lingerpotpoison", + "poisonaoepot": "lingerpotpoison", + "acidaoepot": "lingerpotpoison", + "paoepot": "lingerpotpoison", + "areapotionpoison": "lingerpotpoison", + "areapotionacid": "lingerpotpoison", + "areapotionp": "lingerpotpoison", + "poisonareapotion": "lingerpotpoison", + "acidareapotion": "lingerpotpoison", + "pareapotion": "lingerpotpoison", + "areapotpoison": "lingerpotpoison", + "areapotacid": "lingerpotpoison", + "areapotp": "lingerpotpoison", + "poisonareapot": "lingerpotpoison", + "acidareapot": "lingerpotpoison", + "pareapot": "lingerpotpoison", + "cloudpotionpoison": "lingerpotpoison", + "cloudpotionacid": "lingerpotpoison", + "cloudpotionp": "lingerpotpoison", + "poisoncloudpotion": "lingerpotpoison", + "acidcloudpotion": "lingerpotpoison", + "pcloudpotion": "lingerpotpoison", + "cloudpotpoison": "lingerpotpoison", + "cloudpotacid": "lingerpotpoison", + "cloudpotp": "lingerpotpoison", + "poisoncloudpot": "lingerpotpoison", + "acidcloudpot": "lingerpotpoison", + "pcloudpot": "lingerpotpoison", + "arrowpoison": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "poison", + "type": "POISON", + "upgraded": false, + "extended": false + } + }, + "arrowacid": "arrowpoison", + "arrowp": "arrowpoison", + "poisonarrow": "arrowpoison", + "acidarrow": "arrowpoison", + "parrow": "arrowpoison", + "poisoniipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_poison", + "type": "POISON", + "upgraded": true, + "extended": false + } + }, + "poisonstrongpotion": "poisoniipotion", + "poisonleveliipotion": "poisoniipotion", + "acidiipotion": "poisoniipotion", + "acidstrongpotion": "poisoniipotion", + "acidleveliipotion": "poisoniipotion", + "piipotion": "poisoniipotion", + "pstrongpotion": "poisoniipotion", + "pleveliipotion": "poisoniipotion", + "poisoniipot": "poisoniipotion", + "poisonstrongpot": "poisoniipotion", + "poisonleveliipot": "poisoniipotion", + "acidiipot": "poisoniipotion", + "acidstrongpot": "poisoniipotion", + "acidleveliipot": "poisoniipotion", + "piipot": "poisoniipotion", + "pstrongpot": "poisoniipotion", + "pleveliipot": "poisoniipotion", + "potionofpoisonii": "poisoniipotion", + "potionofpoisonstrong": "poisoniipotion", + "potionofpoisonlevelii": "poisoniipotion", + "potionofacidii": "poisoniipotion", + "potionofacidstrong": "poisoniipotion", + "potionofacidlevelii": "poisoniipotion", + "potionofpii": "poisoniipotion", + "potionofpstrong": "poisoniipotion", + "potionofplevelii": "poisoniipotion", + "potofpoisonii": "poisoniipotion", + "potofpoisonstrong": "poisoniipotion", + "potofpoisonlevelii": "poisoniipotion", + "potofacidii": "poisoniipotion", + "potofacidstrong": "poisoniipotion", + "potofacidlevelii": "poisoniipotion", + "potofpii": "poisoniipotion", + "potofpstrong": "poisoniipotion", + "potofplevelii": "poisoniipotion", + "splashpoisoniipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_poison", + "type": "POISON", + "upgraded": true, + "extended": false + } + }, + "splashpoisonstrongpotion": "splashpoisoniipotion", + "splashpoisonleveliipotion": "splashpoisoniipotion", + "splashacidiipotion": "splashpoisoniipotion", + "splashacidstrongpotion": "splashpoisoniipotion", + "splashacidleveliipotion": "splashpoisoniipotion", + "splashpiipotion": "splashpoisoniipotion", + "splashpstrongpotion": "splashpoisoniipotion", + "splashpleveliipotion": "splashpoisoniipotion", + "splpoisoniipotion": "splashpoisoniipotion", + "splpoisonstrongpotion": "splashpoisoniipotion", + "splpoisonleveliipotion": "splashpoisoniipotion", + "splacidiipotion": "splashpoisoniipotion", + "splacidstrongpotion": "splashpoisoniipotion", + "splacidleveliipotion": "splashpoisoniipotion", + "splpiipotion": "splashpoisoniipotion", + "splpstrongpotion": "splashpoisoniipotion", + "splpleveliipotion": "splashpoisoniipotion", + "poisoniisplashpotion": "splashpoisoniipotion", + "poisonstrongsplashpotion": "splashpoisoniipotion", + "poisonleveliisplashpotion": "splashpoisoniipotion", + "acidiisplashpotion": "splashpoisoniipotion", + "acidstrongsplashpotion": "splashpoisoniipotion", + "acidleveliisplashpotion": "splashpoisoniipotion", + "piisplashpotion": "splashpoisoniipotion", + "pstrongsplashpotion": "splashpoisoniipotion", + "pleveliisplashpotion": "splashpoisoniipotion", + "splashpoisoniipot": "splashpoisoniipotion", + "splashpoisonstrongpot": "splashpoisoniipotion", + "splashpoisonleveliipot": "splashpoisoniipotion", + "splashacidiipot": "splashpoisoniipotion", + "splashacidstrongpot": "splashpoisoniipotion", + "splashacidleveliipot": "splashpoisoniipotion", + "splashpiipot": "splashpoisoniipotion", + "splashpstrongpot": "splashpoisoniipotion", + "splashpleveliipot": "splashpoisoniipotion", + "splpoisoniipot": "splashpoisoniipotion", + "splpoisonstrongpot": "splashpoisoniipotion", + "splpoisonleveliipot": "splashpoisoniipotion", + "splacidiipot": "splashpoisoniipotion", + "splacidstrongpot": "splashpoisoniipotion", + "splacidleveliipot": "splashpoisoniipotion", + "splpiipot": "splashpoisoniipotion", + "splpstrongpot": "splashpoisoniipotion", + "splpleveliipot": "splashpoisoniipotion", + "poisoniisplashpot": "splashpoisoniipotion", + "poisonstrongsplashpot": "splashpoisoniipotion", + "poisonleveliisplashpot": "splashpoisoniipotion", + "acidiisplashpot": "splashpoisoniipotion", + "acidstrongsplashpot": "splashpoisoniipotion", + "acidleveliisplashpot": "splashpoisoniipotion", + "piisplashpot": "splashpoisoniipotion", + "pstrongsplashpot": "splashpoisoniipotion", + "pleveliisplashpot": "splashpoisoniipotion", + "lingerpotpoisonii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_poison", + "type": "POISON", + "upgraded": true, + "extended": false + } + }, + "lingerpotpoisonstrong": "lingerpotpoisonii", + "lingerpotpoisonlevelii": "lingerpotpoisonii", + "lingerpotacidii": "lingerpotpoisonii", + "lingerpotacidstrong": "lingerpotpoisonii", + "lingerpotacidlevelii": "lingerpotpoisonii", + "lingerpotpii": "lingerpotpoisonii", + "lingerpotpstrong": "lingerpotpoisonii", + "lingerpotplevelii": "lingerpotpoisonii", + "poisonlingerpotii": "lingerpotpoisonii", + "poisonlingerpotstrong": "lingerpotpoisonii", + "poisonlingerpotlevelii": "lingerpotpoisonii", + "acidlingerpotii": "lingerpotpoisonii", + "acidlingerpotstrong": "lingerpotpoisonii", + "acidlingerpotlevelii": "lingerpotpoisonii", + "plingerpotii": "lingerpotpoisonii", + "plingerpotstrong": "lingerpotpoisonii", + "plingerpotlevelii": "lingerpotpoisonii", + "aoepotionpoisonii": "lingerpotpoisonii", + "aoepotionpoisonstrong": "lingerpotpoisonii", + "aoepotionpoisonlevelii": "lingerpotpoisonii", + "aoepotionacidii": "lingerpotpoisonii", + "aoepotionacidstrong": "lingerpotpoisonii", + "aoepotionacidlevelii": "lingerpotpoisonii", + "aoepotionpii": "lingerpotpoisonii", + "aoepotionpstrong": "lingerpotpoisonii", + "aoepotionplevelii": "lingerpotpoisonii", + "poisonaoepoiontii": "lingerpotpoisonii", + "poisonaoepoiontstrong": "lingerpotpoisonii", + "poisonaoepoiontlevelii": "lingerpotpoisonii", + "acidaoepoiontii": "lingerpotpoisonii", + "acidaoepoiontstrong": "lingerpotpoisonii", + "acidaoepoiontlevelii": "lingerpotpoisonii", + "paoepoiontii": "lingerpotpoisonii", + "paoepoiontstrong": "lingerpotpoisonii", + "paoepoiontlevelii": "lingerpotpoisonii", + "aoepotpoisonii": "lingerpotpoisonii", + "aoepotpoisonstrong": "lingerpotpoisonii", + "aoepotpoisonlevelii": "lingerpotpoisonii", + "aoepotacidii": "lingerpotpoisonii", + "aoepotacidstrong": "lingerpotpoisonii", + "aoepotacidlevelii": "lingerpotpoisonii", + "aoepotpii": "lingerpotpoisonii", + "aoepotpstrong": "lingerpotpoisonii", + "aoepotplevelii": "lingerpotpoisonii", + "poisonaoepotii": "lingerpotpoisonii", + "poisonaoepotstrong": "lingerpotpoisonii", + "poisonaoepotlevelii": "lingerpotpoisonii", + "acidaoepotii": "lingerpotpoisonii", + "acidaoepotstrong": "lingerpotpoisonii", + "acidaoepotlevelii": "lingerpotpoisonii", + "paoepotii": "lingerpotpoisonii", + "paoepotstrong": "lingerpotpoisonii", + "paoepotlevelii": "lingerpotpoisonii", + "areapotionpoisonii": "lingerpotpoisonii", + "areapotionpoisonstrong": "lingerpotpoisonii", + "areapotionpoisonlevelii": "lingerpotpoisonii", + "areapotionacidii": "lingerpotpoisonii", + "areapotionacidstrong": "lingerpotpoisonii", + "areapotionacidlevelii": "lingerpotpoisonii", + "areapotionpii": "lingerpotpoisonii", + "areapotionpstrong": "lingerpotpoisonii", + "areapotionplevelii": "lingerpotpoisonii", + "poisonareapotionii": "lingerpotpoisonii", + "poisonareapotionstrong": "lingerpotpoisonii", + "poisonareapotionlevelii": "lingerpotpoisonii", + "acidareapotionii": "lingerpotpoisonii", + "acidareapotionstrong": "lingerpotpoisonii", + "acidareapotionlevelii": "lingerpotpoisonii", + "pareapotionii": "lingerpotpoisonii", + "pareapotionstrong": "lingerpotpoisonii", + "pareapotionlevelii": "lingerpotpoisonii", + "areapotpoisonii": "lingerpotpoisonii", + "areapotpoisonstrong": "lingerpotpoisonii", + "areapotpoisonlevelii": "lingerpotpoisonii", + "areapotacidii": "lingerpotpoisonii", + "areapotacidstrong": "lingerpotpoisonii", + "areapotacidlevelii": "lingerpotpoisonii", + "areapotpii": "lingerpotpoisonii", + "areapotpstrong": "lingerpotpoisonii", + "areapotplevelii": "lingerpotpoisonii", + "poisonareapotii": "lingerpotpoisonii", + "poisonareapotstrong": "lingerpotpoisonii", + "poisonareapotlevelii": "lingerpotpoisonii", + "acidareapotii": "lingerpotpoisonii", + "acidareapotstrong": "lingerpotpoisonii", + "acidareapotlevelii": "lingerpotpoisonii", + "pareapotii": "lingerpotpoisonii", + "pareapotstrong": "lingerpotpoisonii", + "pareapotlevelii": "lingerpotpoisonii", + "cloudpotionpoisonii": "lingerpotpoisonii", + "cloudpotionpoisonstrong": "lingerpotpoisonii", + "cloudpotionpoisonlevelii": "lingerpotpoisonii", + "cloudpotionacidii": "lingerpotpoisonii", + "cloudpotionacidstrong": "lingerpotpoisonii", + "cloudpotionacidlevelii": "lingerpotpoisonii", + "cloudpotionpii": "lingerpotpoisonii", + "cloudpotionpstrong": "lingerpotpoisonii", + "cloudpotionplevelii": "lingerpotpoisonii", + "poisoncloudpotionii": "lingerpotpoisonii", + "poisoncloudpotionstrong": "lingerpotpoisonii", + "poisoncloudpotionlevelii": "lingerpotpoisonii", + "acidcloudpotionii": "lingerpotpoisonii", + "acidcloudpotionstrong": "lingerpotpoisonii", + "acidcloudpotionlevelii": "lingerpotpoisonii", + "pcloudpotionii": "lingerpotpoisonii", + "pcloudpotionstrong": "lingerpotpoisonii", + "pcloudpotionlevelii": "lingerpotpoisonii", + "cloudpotpoisonii": "lingerpotpoisonii", + "cloudpotpoisonstrong": "lingerpotpoisonii", + "cloudpotpoisonlevelii": "lingerpotpoisonii", + "cloudpotacidii": "lingerpotpoisonii", + "cloudpotacidstrong": "lingerpotpoisonii", + "cloudpotacidlevelii": "lingerpotpoisonii", + "cloudpotpii": "lingerpotpoisonii", + "cloudpotpstrong": "lingerpotpoisonii", + "cloudpotplevelii": "lingerpotpoisonii", + "poisoncloudpotii": "lingerpotpoisonii", + "poisoncloudpotstrong": "lingerpotpoisonii", + "poisoncloudpotlevelii": "lingerpotpoisonii", + "acidcloudpotii": "lingerpotpoisonii", + "acidcloudpotstrong": "lingerpotpoisonii", + "acidcloudpotlevelii": "lingerpotpoisonii", + "pcloudpotii": "lingerpotpoisonii", + "pcloudpotstrong": "lingerpotpoisonii", + "pcloudpotlevelii": "lingerpotpoisonii", + "arrowpoisonii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_poison", + "type": "POISON", + "upgraded": true, + "extended": false + } + }, + "arrowpoisonstrong": "arrowpoisonii", + "arrowpoisonlevelii": "arrowpoisonii", + "arrowacidii": "arrowpoisonii", + "arrowacidstrong": "arrowpoisonii", + "arrowacidlevelii": "arrowpoisonii", + "arrowpii": "arrowpoisonii", + "arrowpstrong": "arrowpoisonii", + "arrowplevelii": "arrowpoisonii", + "poisonarrowii": "arrowpoisonii", + "poisonarrowstrong": "arrowpoisonii", + "poisonarrowlevelii": "arrowpoisonii", + "acidarrowii": "arrowpoisonii", + "acidarrowstrong": "arrowpoisonii", + "acidarrowlevelii": "arrowpoisonii", + "parrowii": "arrowpoisonii", + "parrowstrong": "arrowpoisonii", + "parrowlevelii": "arrowpoisonii", + "poison2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_poison", + "type": "POISON", + "upgraded": false, + "extended": true + } + }, + "poisonlongpotion": "poison2potion", + "poisonextendedpotion": "poison2potion", + "poisonexpotion": "poison2potion", + "poisonlevel2potion": "poison2potion", + "acid2potion": "poison2potion", + "acidlongpotion": "poison2potion", + "acidextendedpotion": "poison2potion", + "acidexpotion": "poison2potion", + "acidlevel2potion": "poison2potion", + "p2potion": "poison2potion", + "plongpotion": "poison2potion", + "pextendedpotion": "poison2potion", + "pexpotion": "poison2potion", + "plevel2potion": "poison2potion", + "poison2pot": "poison2potion", + "poisonlongpot": "poison2potion", + "poisonextendedpot": "poison2potion", + "poisonexpot": "poison2potion", + "poisonlevel2pot": "poison2potion", + "acid2pot": "poison2potion", + "acidlongpot": "poison2potion", + "acidextendedpot": "poison2potion", + "acidexpot": "poison2potion", + "acidlevel2pot": "poison2potion", + "p2pot": "poison2potion", + "plongpot": "poison2potion", + "pextendedpot": "poison2potion", + "pexpot": "poison2potion", + "plevel2pot": "poison2potion", + "potionofpoison2": "poison2potion", + "potionofpoisonlong": "poison2potion", + "potionofpoisonextended": "poison2potion", + "potionofpoisonex": "poison2potion", + "potionofpoisonlevel2": "poison2potion", + "potionofacid2": "poison2potion", + "potionofacidlong": "poison2potion", + "potionofacidextended": "poison2potion", + "potionofacidex": "poison2potion", + "potionofacidlevel2": "poison2potion", + "potionofp2": "poison2potion", + "potionofplong": "poison2potion", + "potionofpextended": "poison2potion", + "potionofpex": "poison2potion", + "potionofplevel2": "poison2potion", + "potofpoison2": "poison2potion", + "potofpoisonlong": "poison2potion", + "potofpoisonextended": "poison2potion", + "potofpoisonex": "poison2potion", + "potofpoisonlevel2": "poison2potion", + "potofacid2": "poison2potion", + "potofacidlong": "poison2potion", + "potofacidextended": "poison2potion", + "potofacidex": "poison2potion", + "potofacidlevel2": "poison2potion", + "potofp2": "poison2potion", + "potofplong": "poison2potion", + "potofpextended": "poison2potion", + "potofpex": "poison2potion", + "potofplevel2": "poison2potion", + "splashpoison2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_poison", + "type": "POISON", + "upgraded": false, + "extended": true + } + }, + "splashpoisonlongpotion": "splashpoison2potion", + "splashpoisonextendedpotion": "splashpoison2potion", + "splashpoisonexpotion": "splashpoison2potion", + "splashpoisonlevel2potion": "splashpoison2potion", + "splashacid2potion": "splashpoison2potion", + "splashacidlongpotion": "splashpoison2potion", + "splashacidextendedpotion": "splashpoison2potion", + "splashacidexpotion": "splashpoison2potion", + "splashacidlevel2potion": "splashpoison2potion", + "splashp2potion": "splashpoison2potion", + "splashplongpotion": "splashpoison2potion", + "splashpextendedpotion": "splashpoison2potion", + "splashpexpotion": "splashpoison2potion", + "splashplevel2potion": "splashpoison2potion", + "splpoison2potion": "splashpoison2potion", + "splpoisonlongpotion": "splashpoison2potion", + "splpoisonextendedpotion": "splashpoison2potion", + "splpoisonexpotion": "splashpoison2potion", + "splpoisonlevel2potion": "splashpoison2potion", + "splacid2potion": "splashpoison2potion", + "splacidlongpotion": "splashpoison2potion", + "splacidextendedpotion": "splashpoison2potion", + "splacidexpotion": "splashpoison2potion", + "splacidlevel2potion": "splashpoison2potion", + "splp2potion": "splashpoison2potion", + "splplongpotion": "splashpoison2potion", + "splpextendedpotion": "splashpoison2potion", + "splpexpotion": "splashpoison2potion", + "splplevel2potion": "splashpoison2potion", + "poison2splashpotion": "splashpoison2potion", + "poisonlongsplashpotion": "splashpoison2potion", + "poisonextendedsplashpotion": "splashpoison2potion", + "poisonexsplashpotion": "splashpoison2potion", + "poisonlevel2splashpotion": "splashpoison2potion", + "acid2splashpotion": "splashpoison2potion", + "acidlongsplashpotion": "splashpoison2potion", + "acidextendedsplashpotion": "splashpoison2potion", + "acidexsplashpotion": "splashpoison2potion", + "acidlevel2splashpotion": "splashpoison2potion", + "p2splashpotion": "splashpoison2potion", + "plongsplashpotion": "splashpoison2potion", + "pextendedsplashpotion": "splashpoison2potion", + "pexsplashpotion": "splashpoison2potion", + "plevel2splashpotion": "splashpoison2potion", + "splashpoison2pot": "splashpoison2potion", + "splashpoisonlongpot": "splashpoison2potion", + "splashpoisonextendedpot": "splashpoison2potion", + "splashpoisonexpot": "splashpoison2potion", + "splashpoisonlevel2pot": "splashpoison2potion", + "splashacid2pot": "splashpoison2potion", + "splashacidlongpot": "splashpoison2potion", + "splashacidextendedpot": "splashpoison2potion", + "splashacidexpot": "splashpoison2potion", + "splashacidlevel2pot": "splashpoison2potion", + "splashp2pot": "splashpoison2potion", + "splashplongpot": "splashpoison2potion", + "splashpextendedpot": "splashpoison2potion", + "splashpexpot": "splashpoison2potion", + "splashplevel2pot": "splashpoison2potion", + "splpoison2pot": "splashpoison2potion", + "splpoisonlongpot": "splashpoison2potion", + "splpoisonextendedpot": "splashpoison2potion", + "splpoisonexpot": "splashpoison2potion", + "splpoisonlevel2pot": "splashpoison2potion", + "splacid2pot": "splashpoison2potion", + "splacidlongpot": "splashpoison2potion", + "splacidextendedpot": "splashpoison2potion", + "splacidexpot": "splashpoison2potion", + "splacidlevel2pot": "splashpoison2potion", + "splp2pot": "splashpoison2potion", + "splplongpot": "splashpoison2potion", + "splpextendedpot": "splashpoison2potion", + "splpexpot": "splashpoison2potion", + "splplevel2pot": "splashpoison2potion", + "poison2splashpot": "splashpoison2potion", + "poisonlongsplashpot": "splashpoison2potion", + "poisonextendedsplashpot": "splashpoison2potion", + "poisonexsplashpot": "splashpoison2potion", + "poisonlevel2splashpot": "splashpoison2potion", + "acid2splashpot": "splashpoison2potion", + "acidlongsplashpot": "splashpoison2potion", + "acidextendedsplashpot": "splashpoison2potion", + "acidexsplashpot": "splashpoison2potion", + "acidlevel2splashpot": "splashpoison2potion", + "p2splashpot": "splashpoison2potion", + "plongsplashpot": "splashpoison2potion", + "pextendedsplashpot": "splashpoison2potion", + "pexsplashpot": "splashpoison2potion", + "plevel2splashpot": "splashpoison2potion", + "lingerpotpoison2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_poison", + "type": "POISON", + "upgraded": false, + "extended": true + } + }, + "lingerpotpoisonlong": "lingerpotpoison2", + "lingerpotpoisonextended": "lingerpotpoison2", + "lingerpotpoisonex": "lingerpotpoison2", + "lingerpotpoisonlevel2": "lingerpotpoison2", + "lingerpotacid2": "lingerpotpoison2", + "lingerpotacidlong": "lingerpotpoison2", + "lingerpotacidextended": "lingerpotpoison2", + "lingerpotacidex": "lingerpotpoison2", + "lingerpotacidlevel2": "lingerpotpoison2", + "lingerpotp2": "lingerpotpoison2", + "lingerpotplong": "lingerpotpoison2", + "lingerpotpextended": "lingerpotpoison2", + "lingerpotpex": "lingerpotpoison2", + "lingerpotplevel2": "lingerpotpoison2", + "poisonlingerpot2": "lingerpotpoison2", + "poisonlingerpotlong": "lingerpotpoison2", + "poisonlingerpotextended": "lingerpotpoison2", + "poisonlingerpotex": "lingerpotpoison2", + "poisonlingerpotlevel2": "lingerpotpoison2", + "acidlingerpot2": "lingerpotpoison2", + "acidlingerpotlong": "lingerpotpoison2", + "acidlingerpotextended": "lingerpotpoison2", + "acidlingerpotex": "lingerpotpoison2", + "acidlingerpotlevel2": "lingerpotpoison2", + "plingerpot2": "lingerpotpoison2", + "plingerpotlong": "lingerpotpoison2", + "plingerpotextended": "lingerpotpoison2", + "plingerpotex": "lingerpotpoison2", + "plingerpotlevel2": "lingerpotpoison2", + "aoepotionpoison2": "lingerpotpoison2", + "aoepotionpoisonlong": "lingerpotpoison2", + "aoepotionpoisonextended": "lingerpotpoison2", + "aoepotionpoisonex": "lingerpotpoison2", + "aoepotionpoisonlevel2": "lingerpotpoison2", + "aoepotionacid2": "lingerpotpoison2", + "aoepotionacidlong": "lingerpotpoison2", + "aoepotionacidextended": "lingerpotpoison2", + "aoepotionacidex": "lingerpotpoison2", + "aoepotionacidlevel2": "lingerpotpoison2", + "aoepotionp2": "lingerpotpoison2", + "aoepotionplong": "lingerpotpoison2", + "aoepotionpextended": "lingerpotpoison2", + "aoepotionpex": "lingerpotpoison2", + "aoepotionplevel2": "lingerpotpoison2", + "poisonaoepoiont2": "lingerpotpoison2", + "poisonaoepoiontlong": "lingerpotpoison2", + "poisonaoepoiontextended": "lingerpotpoison2", + "poisonaoepoiontex": "lingerpotpoison2", + "poisonaoepoiontlevel2": "lingerpotpoison2", + "acidaoepoiont2": "lingerpotpoison2", + "acidaoepoiontlong": "lingerpotpoison2", + "acidaoepoiontextended": "lingerpotpoison2", + "acidaoepoiontex": "lingerpotpoison2", + "acidaoepoiontlevel2": "lingerpotpoison2", + "paoepoiont2": "lingerpotpoison2", + "paoepoiontlong": "lingerpotpoison2", + "paoepoiontextended": "lingerpotpoison2", + "paoepoiontex": "lingerpotpoison2", + "paoepoiontlevel2": "lingerpotpoison2", + "aoepotpoison2": "lingerpotpoison2", + "aoepotpoisonlong": "lingerpotpoison2", + "aoepotpoisonextended": "lingerpotpoison2", + "aoepotpoisonex": "lingerpotpoison2", + "aoepotpoisonlevel2": "lingerpotpoison2", + "aoepotacid2": "lingerpotpoison2", + "aoepotacidlong": "lingerpotpoison2", + "aoepotacidextended": "lingerpotpoison2", + "aoepotacidex": "lingerpotpoison2", + "aoepotacidlevel2": "lingerpotpoison2", + "aoepotp2": "lingerpotpoison2", + "aoepotplong": "lingerpotpoison2", + "aoepotpextended": "lingerpotpoison2", + "aoepotpex": "lingerpotpoison2", + "aoepotplevel2": "lingerpotpoison2", + "poisonaoepot2": "lingerpotpoison2", + "poisonaoepotlong": "lingerpotpoison2", + "poisonaoepotextended": "lingerpotpoison2", + "poisonaoepotex": "lingerpotpoison2", + "poisonaoepotlevel2": "lingerpotpoison2", + "acidaoepot2": "lingerpotpoison2", + "acidaoepotlong": "lingerpotpoison2", + "acidaoepotextended": "lingerpotpoison2", + "acidaoepotex": "lingerpotpoison2", + "acidaoepotlevel2": "lingerpotpoison2", + "paoepot2": "lingerpotpoison2", + "paoepotlong": "lingerpotpoison2", + "paoepotextended": "lingerpotpoison2", + "paoepotex": "lingerpotpoison2", + "paoepotlevel2": "lingerpotpoison2", + "areapotionpoison2": "lingerpotpoison2", + "areapotionpoisonlong": "lingerpotpoison2", + "areapotionpoisonextended": "lingerpotpoison2", + "areapotionpoisonex": "lingerpotpoison2", + "areapotionpoisonlevel2": "lingerpotpoison2", + "areapotionacid2": "lingerpotpoison2", + "areapotionacidlong": "lingerpotpoison2", + "areapotionacidextended": "lingerpotpoison2", + "areapotionacidex": "lingerpotpoison2", + "areapotionacidlevel2": "lingerpotpoison2", + "areapotionp2": "lingerpotpoison2", + "areapotionplong": "lingerpotpoison2", + "areapotionpextended": "lingerpotpoison2", + "areapotionpex": "lingerpotpoison2", + "areapotionplevel2": "lingerpotpoison2", + "poisonareapotion2": "lingerpotpoison2", + "poisonareapotionlong": "lingerpotpoison2", + "poisonareapotionextended": "lingerpotpoison2", + "poisonareapotionex": "lingerpotpoison2", + "poisonareapotionlevel2": "lingerpotpoison2", + "acidareapotion2": "lingerpotpoison2", + "acidareapotionlong": "lingerpotpoison2", + "acidareapotionextended": "lingerpotpoison2", + "acidareapotionex": "lingerpotpoison2", + "acidareapotionlevel2": "lingerpotpoison2", + "pareapotion2": "lingerpotpoison2", + "pareapotionlong": "lingerpotpoison2", + "pareapotionextended": "lingerpotpoison2", + "pareapotionex": "lingerpotpoison2", + "pareapotionlevel2": "lingerpotpoison2", + "areapotpoison2": "lingerpotpoison2", + "areapotpoisonlong": "lingerpotpoison2", + "areapotpoisonextended": "lingerpotpoison2", + "areapotpoisonex": "lingerpotpoison2", + "areapotpoisonlevel2": "lingerpotpoison2", + "areapotacid2": "lingerpotpoison2", + "areapotacidlong": "lingerpotpoison2", + "areapotacidextended": "lingerpotpoison2", + "areapotacidex": "lingerpotpoison2", + "areapotacidlevel2": "lingerpotpoison2", + "areapotp2": "lingerpotpoison2", + "areapotplong": "lingerpotpoison2", + "areapotpextended": "lingerpotpoison2", + "areapotpex": "lingerpotpoison2", + "areapotplevel2": "lingerpotpoison2", + "poisonareapot2": "lingerpotpoison2", + "poisonareapotlong": "lingerpotpoison2", + "poisonareapotextended": "lingerpotpoison2", + "poisonareapotex": "lingerpotpoison2", + "poisonareapotlevel2": "lingerpotpoison2", + "acidareapot2": "lingerpotpoison2", + "acidareapotlong": "lingerpotpoison2", + "acidareapotextended": "lingerpotpoison2", + "acidareapotex": "lingerpotpoison2", + "acidareapotlevel2": "lingerpotpoison2", + "pareapot2": "lingerpotpoison2", + "pareapotlong": "lingerpotpoison2", + "pareapotextended": "lingerpotpoison2", + "pareapotex": "lingerpotpoison2", + "pareapotlevel2": "lingerpotpoison2", + "cloudpotionpoison2": "lingerpotpoison2", + "cloudpotionpoisonlong": "lingerpotpoison2", + "cloudpotionpoisonextended": "lingerpotpoison2", + "cloudpotionpoisonex": "lingerpotpoison2", + "cloudpotionpoisonlevel2": "lingerpotpoison2", + "cloudpotionacid2": "lingerpotpoison2", + "cloudpotionacidlong": "lingerpotpoison2", + "cloudpotionacidextended": "lingerpotpoison2", + "cloudpotionacidex": "lingerpotpoison2", + "cloudpotionacidlevel2": "lingerpotpoison2", + "cloudpotionp2": "lingerpotpoison2", + "cloudpotionplong": "lingerpotpoison2", + "cloudpotionpextended": "lingerpotpoison2", + "cloudpotionpex": "lingerpotpoison2", + "cloudpotionplevel2": "lingerpotpoison2", + "poisoncloudpotion2": "lingerpotpoison2", + "poisoncloudpotionlong": "lingerpotpoison2", + "poisoncloudpotionextended": "lingerpotpoison2", + "poisoncloudpotionex": "lingerpotpoison2", + "poisoncloudpotionlevel2": "lingerpotpoison2", + "acidcloudpotion2": "lingerpotpoison2", + "acidcloudpotionlong": "lingerpotpoison2", + "acidcloudpotionextended": "lingerpotpoison2", + "acidcloudpotionex": "lingerpotpoison2", + "acidcloudpotionlevel2": "lingerpotpoison2", + "pcloudpotion2": "lingerpotpoison2", + "pcloudpotionlong": "lingerpotpoison2", + "pcloudpotionextended": "lingerpotpoison2", + "pcloudpotionex": "lingerpotpoison2", + "pcloudpotionlevel2": "lingerpotpoison2", + "cloudpotpoison2": "lingerpotpoison2", + "cloudpotpoisonlong": "lingerpotpoison2", + "cloudpotpoisonextended": "lingerpotpoison2", + "cloudpotpoisonex": "lingerpotpoison2", + "cloudpotpoisonlevel2": "lingerpotpoison2", + "cloudpotacid2": "lingerpotpoison2", + "cloudpotacidlong": "lingerpotpoison2", + "cloudpotacidextended": "lingerpotpoison2", + "cloudpotacidex": "lingerpotpoison2", + "cloudpotacidlevel2": "lingerpotpoison2", + "cloudpotp2": "lingerpotpoison2", + "cloudpotplong": "lingerpotpoison2", + "cloudpotpextended": "lingerpotpoison2", + "cloudpotpex": "lingerpotpoison2", + "cloudpotplevel2": "lingerpotpoison2", + "poisoncloudpot2": "lingerpotpoison2", + "poisoncloudpotlong": "lingerpotpoison2", + "poisoncloudpotextended": "lingerpotpoison2", + "poisoncloudpotex": "lingerpotpoison2", + "poisoncloudpotlevel2": "lingerpotpoison2", + "acidcloudpot2": "lingerpotpoison2", + "acidcloudpotlong": "lingerpotpoison2", + "acidcloudpotextended": "lingerpotpoison2", + "acidcloudpotex": "lingerpotpoison2", + "acidcloudpotlevel2": "lingerpotpoison2", + "pcloudpot2": "lingerpotpoison2", + "pcloudpotlong": "lingerpotpoison2", + "pcloudpotextended": "lingerpotpoison2", + "pcloudpotex": "lingerpotpoison2", + "pcloudpotlevel2": "lingerpotpoison2", + "arrowpoison2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_poison", + "type": "POISON", + "upgraded": false, + "extended": true + } + }, + "arrowpoisonlong": "arrowpoison2", + "arrowpoisonextended": "arrowpoison2", + "arrowpoisonex": "arrowpoison2", + "arrowpoisonlevel2": "arrowpoison2", + "arrowacid2": "arrowpoison2", + "arrowacidlong": "arrowpoison2", + "arrowacidextended": "arrowpoison2", + "arrowacidex": "arrowpoison2", + "arrowacidlevel2": "arrowpoison2", + "arrowp2": "arrowpoison2", + "arrowplong": "arrowpoison2", + "arrowpextended": "arrowpoison2", + "arrowpex": "arrowpoison2", + "arrowplevel2": "arrowpoison2", + "poisonarrow2": "arrowpoison2", + "poisonarrowlong": "arrowpoison2", + "poisonarrowextended": "arrowpoison2", + "poisonarrowex": "arrowpoison2", + "poisonarrowlevel2": "arrowpoison2", + "acidarrow2": "arrowpoison2", + "acidarrowlong": "arrowpoison2", + "acidarrowextended": "arrowpoison2", + "acidarrowex": "arrowpoison2", + "acidarrowlevel2": "arrowpoison2", + "parrow2": "arrowpoison2", + "parrowlong": "arrowpoison2", + "parrowextended": "arrowpoison2", + "parrowex": "arrowpoison2", + "parrowlevel2": "arrowpoison2", + "regenerationpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "regeneration", + "type": "REGEN", + "upgraded": false, + "extended": false + } + }, + "regeneratepotion": "regenerationpotion", + "regenpotion": "regenerationpotion", + "regenerationpot": "regenerationpotion", + "regeneratepot": "regenerationpotion", + "regenpot": "regenerationpotion", + "potionofregeneration": "regenerationpotion", + "potionofregenerate": "regenerationpotion", + "potionofregen": "regenerationpotion", + "potofregeneration": "regenerationpotion", + "potofregenerate": "regenerationpotion", + "potofregen": "regenerationpotion", + "splashregenerationpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "regeneration", + "type": "REGEN", + "upgraded": false, + "extended": false + } + }, + "splashregeneratepotion": "splashregenerationpotion", + "splashregenpotion": "splashregenerationpotion", + "splregenerationpotion": "splashregenerationpotion", + "splregeneratepotion": "splashregenerationpotion", + "splregenpotion": "splashregenerationpotion", + "regenerationsplashpotion": "splashregenerationpotion", + "regeneratesplashpotion": "splashregenerationpotion", + "regensplashpotion": "splashregenerationpotion", + "splashregenerationpot": "splashregenerationpotion", + "splashregeneratepot": "splashregenerationpotion", + "splashregenpot": "splashregenerationpotion", + "splregenerationpot": "splashregenerationpotion", + "splregeneratepot": "splashregenerationpotion", + "splregenpot": "splashregenerationpotion", + "regenerationsplashpot": "splashregenerationpotion", + "regeneratesplashpot": "splashregenerationpotion", + "regensplashpot": "splashregenerationpotion", + "lingerpotregeneration": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "regeneration", + "type": "REGEN", + "upgraded": false, + "extended": false + } + }, + "lingerpotregenerate": "lingerpotregeneration", + "lingerpotregen": "lingerpotregeneration", + "regenerationlingerpot": "lingerpotregeneration", + "regeneratelingerpot": "lingerpotregeneration", + "regenlingerpot": "lingerpotregeneration", + "aoepotionregeneration": "lingerpotregeneration", + "aoepotionregenerate": "lingerpotregeneration", + "aoepotionregen": "lingerpotregeneration", + "regenerationaoepoiont": "lingerpotregeneration", + "regenerateaoepoiont": "lingerpotregeneration", + "regenaoepoiont": "lingerpotregeneration", + "aoepotregeneration": "lingerpotregeneration", + "aoepotregenerate": "lingerpotregeneration", + "aoepotregen": "lingerpotregeneration", + "regenerationaoepot": "lingerpotregeneration", + "regenerateaoepot": "lingerpotregeneration", + "regenaoepot": "lingerpotregeneration", + "areapotionregeneration": "lingerpotregeneration", + "areapotionregenerate": "lingerpotregeneration", + "areapotionregen": "lingerpotregeneration", + "regenerationareapotion": "lingerpotregeneration", + "regenerateareapotion": "lingerpotregeneration", + "regenareapotion": "lingerpotregeneration", + "areapotregeneration": "lingerpotregeneration", + "areapotregenerate": "lingerpotregeneration", + "areapotregen": "lingerpotregeneration", + "regenerationareapot": "lingerpotregeneration", + "regenerateareapot": "lingerpotregeneration", + "regenareapot": "lingerpotregeneration", + "cloudpotionregeneration": "lingerpotregeneration", + "cloudpotionregenerate": "lingerpotregeneration", + "cloudpotionregen": "lingerpotregeneration", + "regenerationcloudpotion": "lingerpotregeneration", + "regeneratecloudpotion": "lingerpotregeneration", + "regencloudpotion": "lingerpotregeneration", + "cloudpotregeneration": "lingerpotregeneration", + "cloudpotregenerate": "lingerpotregeneration", + "cloudpotregen": "lingerpotregeneration", + "regenerationcloudpot": "lingerpotregeneration", + "regeneratecloudpot": "lingerpotregeneration", + "regencloudpot": "lingerpotregeneration", + "arrowregeneration": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "regeneration", + "type": "REGEN", + "upgraded": false, + "extended": false + } + }, + "arrowregenerate": "arrowregeneration", + "arrowregen": "arrowregeneration", + "regenerationarrow": "arrowregeneration", + "regeneratearrow": "arrowregeneration", + "regenarrow": "arrowregeneration", + "regenerationiipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_regeneration", + "type": "REGEN", + "upgraded": true, + "extended": false + } + }, + "regenerationstrongpotion": "regenerationiipotion", + "regenerationleveliipotion": "regenerationiipotion", + "regenerateiipotion": "regenerationiipotion", + "regeneratestrongpotion": "regenerationiipotion", + "regenerateleveliipotion": "regenerationiipotion", + "regeniipotion": "regenerationiipotion", + "regenstrongpotion": "regenerationiipotion", + "regenleveliipotion": "regenerationiipotion", + "regenerationiipot": "regenerationiipotion", + "regenerationstrongpot": "regenerationiipotion", + "regenerationleveliipot": "regenerationiipotion", + "regenerateiipot": "regenerationiipotion", + "regeneratestrongpot": "regenerationiipotion", + "regenerateleveliipot": "regenerationiipotion", + "regeniipot": "regenerationiipotion", + "regenstrongpot": "regenerationiipotion", + "regenleveliipot": "regenerationiipotion", + "potionofregenerationii": "regenerationiipotion", + "potionofregenerationstrong": "regenerationiipotion", + "potionofregenerationlevelii": "regenerationiipotion", + "potionofregenerateii": "regenerationiipotion", + "potionofregeneratestrong": "regenerationiipotion", + "potionofregeneratelevelii": "regenerationiipotion", + "potionofregenii": "regenerationiipotion", + "potionofregenstrong": "regenerationiipotion", + "potionofregenlevelii": "regenerationiipotion", + "potofregenerationii": "regenerationiipotion", + "potofregenerationstrong": "regenerationiipotion", + "potofregenerationlevelii": "regenerationiipotion", + "potofregenerateii": "regenerationiipotion", + "potofregeneratestrong": "regenerationiipotion", + "potofregeneratelevelii": "regenerationiipotion", + "potofregenii": "regenerationiipotion", + "potofregenstrong": "regenerationiipotion", + "potofregenlevelii": "regenerationiipotion", + "splashregenerationiipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_regeneration", + "type": "REGEN", + "upgraded": true, + "extended": false + } + }, + "splashregenerationstrongpotion": "splashregenerationiipotion", + "splashregenerationleveliipotion": "splashregenerationiipotion", + "splashregenerateiipotion": "splashregenerationiipotion", + "splashregeneratestrongpotion": "splashregenerationiipotion", + "splashregenerateleveliipotion": "splashregenerationiipotion", + "splashregeniipotion": "splashregenerationiipotion", + "splashregenstrongpotion": "splashregenerationiipotion", + "splashregenleveliipotion": "splashregenerationiipotion", + "splregenerationiipotion": "splashregenerationiipotion", + "splregenerationstrongpotion": "splashregenerationiipotion", + "splregenerationleveliipotion": "splashregenerationiipotion", + "splregenerateiipotion": "splashregenerationiipotion", + "splregeneratestrongpotion": "splashregenerationiipotion", + "splregenerateleveliipotion": "splashregenerationiipotion", + "splregeniipotion": "splashregenerationiipotion", + "splregenstrongpotion": "splashregenerationiipotion", + "splregenleveliipotion": "splashregenerationiipotion", + "regenerationiisplashpotion": "splashregenerationiipotion", + "regenerationstrongsplashpotion": "splashregenerationiipotion", + "regenerationleveliisplashpotion": "splashregenerationiipotion", + "regenerateiisplashpotion": "splashregenerationiipotion", + "regeneratestrongsplashpotion": "splashregenerationiipotion", + "regenerateleveliisplashpotion": "splashregenerationiipotion", + "regeniisplashpotion": "splashregenerationiipotion", + "regenstrongsplashpotion": "splashregenerationiipotion", + "regenleveliisplashpotion": "splashregenerationiipotion", + "splashregenerationiipot": "splashregenerationiipotion", + "splashregenerationstrongpot": "splashregenerationiipotion", + "splashregenerationleveliipot": "splashregenerationiipotion", + "splashregenerateiipot": "splashregenerationiipotion", + "splashregeneratestrongpot": "splashregenerationiipotion", + "splashregenerateleveliipot": "splashregenerationiipotion", + "splashregeniipot": "splashregenerationiipotion", + "splashregenstrongpot": "splashregenerationiipotion", + "splashregenleveliipot": "splashregenerationiipotion", + "splregenerationiipot": "splashregenerationiipotion", + "splregenerationstrongpot": "splashregenerationiipotion", + "splregenerationleveliipot": "splashregenerationiipotion", + "splregenerateiipot": "splashregenerationiipotion", + "splregeneratestrongpot": "splashregenerationiipotion", + "splregenerateleveliipot": "splashregenerationiipotion", + "splregeniipot": "splashregenerationiipotion", + "splregenstrongpot": "splashregenerationiipotion", + "splregenleveliipot": "splashregenerationiipotion", + "regenerationiisplashpot": "splashregenerationiipotion", + "regenerationstrongsplashpot": "splashregenerationiipotion", + "regenerationleveliisplashpot": "splashregenerationiipotion", + "regenerateiisplashpot": "splashregenerationiipotion", + "regeneratestrongsplashpot": "splashregenerationiipotion", + "regenerateleveliisplashpot": "splashregenerationiipotion", + "regeniisplashpot": "splashregenerationiipotion", + "regenstrongsplashpot": "splashregenerationiipotion", + "regenleveliisplashpot": "splashregenerationiipotion", + "lingerpotregenerationii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_regeneration", + "type": "REGEN", + "upgraded": true, + "extended": false + } + }, + "lingerpotregenerationstrong": "lingerpotregenerationii", + "lingerpotregenerationlevelii": "lingerpotregenerationii", + "lingerpotregenerateii": "lingerpotregenerationii", + "lingerpotregeneratestrong": "lingerpotregenerationii", + "lingerpotregeneratelevelii": "lingerpotregenerationii", + "lingerpotregenii": "lingerpotregenerationii", + "lingerpotregenstrong": "lingerpotregenerationii", + "lingerpotregenlevelii": "lingerpotregenerationii", + "regenerationlingerpotii": "lingerpotregenerationii", + "regenerationlingerpotstrong": "lingerpotregenerationii", + "regenerationlingerpotlevelii": "lingerpotregenerationii", + "regeneratelingerpotii": "lingerpotregenerationii", + "regeneratelingerpotstrong": "lingerpotregenerationii", + "regeneratelingerpotlevelii": "lingerpotregenerationii", + "regenlingerpotii": "lingerpotregenerationii", + "regenlingerpotstrong": "lingerpotregenerationii", + "regenlingerpotlevelii": "lingerpotregenerationii", + "aoepotionregenerationii": "lingerpotregenerationii", + "aoepotionregenerationstrong": "lingerpotregenerationii", + "aoepotionregenerationlevelii": "lingerpotregenerationii", + "aoepotionregenerateii": "lingerpotregenerationii", + "aoepotionregeneratestrong": "lingerpotregenerationii", + "aoepotionregeneratelevelii": "lingerpotregenerationii", + "aoepotionregenii": "lingerpotregenerationii", + "aoepotionregenstrong": "lingerpotregenerationii", + "aoepotionregenlevelii": "lingerpotregenerationii", + "regenerationaoepoiontii": "lingerpotregenerationii", + "regenerationaoepoiontstrong": "lingerpotregenerationii", + "regenerationaoepoiontlevelii": "lingerpotregenerationii", + "regenerateaoepoiontii": "lingerpotregenerationii", + "regenerateaoepoiontstrong": "lingerpotregenerationii", + "regenerateaoepoiontlevelii": "lingerpotregenerationii", + "regenaoepoiontii": "lingerpotregenerationii", + "regenaoepoiontstrong": "lingerpotregenerationii", + "regenaoepoiontlevelii": "lingerpotregenerationii", + "aoepotregenerationii": "lingerpotregenerationii", + "aoepotregenerationstrong": "lingerpotregenerationii", + "aoepotregenerationlevelii": "lingerpotregenerationii", + "aoepotregenerateii": "lingerpotregenerationii", + "aoepotregeneratestrong": "lingerpotregenerationii", + "aoepotregeneratelevelii": "lingerpotregenerationii", + "aoepotregenii": "lingerpotregenerationii", + "aoepotregenstrong": "lingerpotregenerationii", + "aoepotregenlevelii": "lingerpotregenerationii", + "regenerationaoepotii": "lingerpotregenerationii", + "regenerationaoepotstrong": "lingerpotregenerationii", + "regenerationaoepotlevelii": "lingerpotregenerationii", + "regenerateaoepotii": "lingerpotregenerationii", + "regenerateaoepotstrong": "lingerpotregenerationii", + "regenerateaoepotlevelii": "lingerpotregenerationii", + "regenaoepotii": "lingerpotregenerationii", + "regenaoepotstrong": "lingerpotregenerationii", + "regenaoepotlevelii": "lingerpotregenerationii", + "areapotionregenerationii": "lingerpotregenerationii", + "areapotionregenerationstrong": "lingerpotregenerationii", + "areapotionregenerationlevelii": "lingerpotregenerationii", + "areapotionregenerateii": "lingerpotregenerationii", + "areapotionregeneratestrong": "lingerpotregenerationii", + "areapotionregeneratelevelii": "lingerpotregenerationii", + "areapotionregenii": "lingerpotregenerationii", + "areapotionregenstrong": "lingerpotregenerationii", + "areapotionregenlevelii": "lingerpotregenerationii", + "regenerationareapotionii": "lingerpotregenerationii", + "regenerationareapotionstrong": "lingerpotregenerationii", + "regenerationareapotionlevelii": "lingerpotregenerationii", + "regenerateareapotionii": "lingerpotregenerationii", + "regenerateareapotionstrong": "lingerpotregenerationii", + "regenerateareapotionlevelii": "lingerpotregenerationii", + "regenareapotionii": "lingerpotregenerationii", + "regenareapotionstrong": "lingerpotregenerationii", + "regenareapotionlevelii": "lingerpotregenerationii", + "areapotregenerationii": "lingerpotregenerationii", + "areapotregenerationstrong": "lingerpotregenerationii", + "areapotregenerationlevelii": "lingerpotregenerationii", + "areapotregenerateii": "lingerpotregenerationii", + "areapotregeneratestrong": "lingerpotregenerationii", + "areapotregeneratelevelii": "lingerpotregenerationii", + "areapotregenii": "lingerpotregenerationii", + "areapotregenstrong": "lingerpotregenerationii", + "areapotregenlevelii": "lingerpotregenerationii", + "regenerationareapotii": "lingerpotregenerationii", + "regenerationareapotstrong": "lingerpotregenerationii", + "regenerationareapotlevelii": "lingerpotregenerationii", + "regenerateareapotii": "lingerpotregenerationii", + "regenerateareapotstrong": "lingerpotregenerationii", + "regenerateareapotlevelii": "lingerpotregenerationii", + "regenareapotii": "lingerpotregenerationii", + "regenareapotstrong": "lingerpotregenerationii", + "regenareapotlevelii": "lingerpotregenerationii", + "cloudpotionregenerationii": "lingerpotregenerationii", + "cloudpotionregenerationstrong": "lingerpotregenerationii", + "cloudpotionregenerationlevelii": "lingerpotregenerationii", + "cloudpotionregenerateii": "lingerpotregenerationii", + "cloudpotionregeneratestrong": "lingerpotregenerationii", + "cloudpotionregeneratelevelii": "lingerpotregenerationii", + "cloudpotionregenii": "lingerpotregenerationii", + "cloudpotionregenstrong": "lingerpotregenerationii", + "cloudpotionregenlevelii": "lingerpotregenerationii", + "regenerationcloudpotionii": "lingerpotregenerationii", + "regenerationcloudpotionstrong": "lingerpotregenerationii", + "regenerationcloudpotionlevelii": "lingerpotregenerationii", + "regeneratecloudpotionii": "lingerpotregenerationii", + "regeneratecloudpotionstrong": "lingerpotregenerationii", + "regeneratecloudpotionlevelii": "lingerpotregenerationii", + "regencloudpotionii": "lingerpotregenerationii", + "regencloudpotionstrong": "lingerpotregenerationii", + "regencloudpotionlevelii": "lingerpotregenerationii", + "cloudpotregenerationii": "lingerpotregenerationii", + "cloudpotregenerationstrong": "lingerpotregenerationii", + "cloudpotregenerationlevelii": "lingerpotregenerationii", + "cloudpotregenerateii": "lingerpotregenerationii", + "cloudpotregeneratestrong": "lingerpotregenerationii", + "cloudpotregeneratelevelii": "lingerpotregenerationii", + "cloudpotregenii": "lingerpotregenerationii", + "cloudpotregenstrong": "lingerpotregenerationii", + "cloudpotregenlevelii": "lingerpotregenerationii", + "regenerationcloudpotii": "lingerpotregenerationii", + "regenerationcloudpotstrong": "lingerpotregenerationii", + "regenerationcloudpotlevelii": "lingerpotregenerationii", + "regeneratecloudpotii": "lingerpotregenerationii", + "regeneratecloudpotstrong": "lingerpotregenerationii", + "regeneratecloudpotlevelii": "lingerpotregenerationii", + "regencloudpotii": "lingerpotregenerationii", + "regencloudpotstrong": "lingerpotregenerationii", + "regencloudpotlevelii": "lingerpotregenerationii", + "arrowregenerationii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_regeneration", + "type": "REGEN", + "upgraded": true, + "extended": false + } + }, + "arrowregenerationstrong": "arrowregenerationii", + "arrowregenerationlevelii": "arrowregenerationii", + "arrowregenerateii": "arrowregenerationii", + "arrowregeneratestrong": "arrowregenerationii", + "arrowregeneratelevelii": "arrowregenerationii", + "arrowregenii": "arrowregenerationii", + "arrowregenstrong": "arrowregenerationii", + "arrowregenlevelii": "arrowregenerationii", + "regenerationarrowii": "arrowregenerationii", + "regenerationarrowstrong": "arrowregenerationii", + "regenerationarrowlevelii": "arrowregenerationii", + "regeneratearrowii": "arrowregenerationii", + "regeneratearrowstrong": "arrowregenerationii", + "regeneratearrowlevelii": "arrowregenerationii", + "regenarrowii": "arrowregenerationii", + "regenarrowstrong": "arrowregenerationii", + "regenarrowlevelii": "arrowregenerationii", + "regeneration2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_regeneration", + "type": "REGEN", + "upgraded": false, + "extended": true + } + }, + "regenerationlongpotion": "regeneration2potion", + "regenerationextendedpotion": "regeneration2potion", + "regenerationexpotion": "regeneration2potion", + "regenerationlevel2potion": "regeneration2potion", + "regenerate2potion": "regeneration2potion", + "regeneratelongpotion": "regeneration2potion", + "regenerateextendedpotion": "regeneration2potion", + "regenerateexpotion": "regeneration2potion", + "regeneratelevel2potion": "regeneration2potion", + "regen2potion": "regeneration2potion", + "regenlongpotion": "regeneration2potion", + "regenextendedpotion": "regeneration2potion", + "regenexpotion": "regeneration2potion", + "regenlevel2potion": "regeneration2potion", + "regeneration2pot": "regeneration2potion", + "regenerationlongpot": "regeneration2potion", + "regenerationextendedpot": "regeneration2potion", + "regenerationexpot": "regeneration2potion", + "regenerationlevel2pot": "regeneration2potion", + "regenerate2pot": "regeneration2potion", + "regeneratelongpot": "regeneration2potion", + "regenerateextendedpot": "regeneration2potion", + "regenerateexpot": "regeneration2potion", + "regeneratelevel2pot": "regeneration2potion", + "regen2pot": "regeneration2potion", + "regenlongpot": "regeneration2potion", + "regenextendedpot": "regeneration2potion", + "regenexpot": "regeneration2potion", + "regenlevel2pot": "regeneration2potion", + "potionofregeneration2": "regeneration2potion", + "potionofregenerationlong": "regeneration2potion", + "potionofregenerationextended": "regeneration2potion", + "potionofregenerationex": "regeneration2potion", + "potionofregenerationlevel2": "regeneration2potion", + "potionofregenerate2": "regeneration2potion", + "potionofregeneratelong": "regeneration2potion", + "potionofregenerateextended": "regeneration2potion", + "potionofregenerateex": "regeneration2potion", + "potionofregeneratelevel2": "regeneration2potion", + "potionofregen2": "regeneration2potion", + "potionofregenlong": "regeneration2potion", + "potionofregenextended": "regeneration2potion", + "potionofregenex": "regeneration2potion", + "potionofregenlevel2": "regeneration2potion", + "potofregeneration2": "regeneration2potion", + "potofregenerationlong": "regeneration2potion", + "potofregenerationextended": "regeneration2potion", + "potofregenerationex": "regeneration2potion", + "potofregenerationlevel2": "regeneration2potion", + "potofregenerate2": "regeneration2potion", + "potofregeneratelong": "regeneration2potion", + "potofregenerateextended": "regeneration2potion", + "potofregenerateex": "regeneration2potion", + "potofregeneratelevel2": "regeneration2potion", + "potofregen2": "regeneration2potion", + "potofregenlong": "regeneration2potion", + "potofregenextended": "regeneration2potion", + "potofregenex": "regeneration2potion", + "potofregenlevel2": "regeneration2potion", + "splashregeneration2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_regeneration", + "type": "REGEN", + "upgraded": false, + "extended": true + } + }, + "splashregenerationlongpotion": "splashregeneration2potion", + "splashregenerationextendedpotion": "splashregeneration2potion", + "splashregenerationexpotion": "splashregeneration2potion", + "splashregenerationlevel2potion": "splashregeneration2potion", + "splashregenerate2potion": "splashregeneration2potion", + "splashregeneratelongpotion": "splashregeneration2potion", + "splashregenerateextendedpotion": "splashregeneration2potion", + "splashregenerateexpotion": "splashregeneration2potion", + "splashregeneratelevel2potion": "splashregeneration2potion", + "splashregen2potion": "splashregeneration2potion", + "splashregenlongpotion": "splashregeneration2potion", + "splashregenextendedpotion": "splashregeneration2potion", + "splashregenexpotion": "splashregeneration2potion", + "splashregenlevel2potion": "splashregeneration2potion", + "splregeneration2potion": "splashregeneration2potion", + "splregenerationlongpotion": "splashregeneration2potion", + "splregenerationextendedpotion": "splashregeneration2potion", + "splregenerationexpotion": "splashregeneration2potion", + "splregenerationlevel2potion": "splashregeneration2potion", + "splregenerate2potion": "splashregeneration2potion", + "splregeneratelongpotion": "splashregeneration2potion", + "splregenerateextendedpotion": "splashregeneration2potion", + "splregenerateexpotion": "splashregeneration2potion", + "splregeneratelevel2potion": "splashregeneration2potion", + "splregen2potion": "splashregeneration2potion", + "splregenlongpotion": "splashregeneration2potion", + "splregenextendedpotion": "splashregeneration2potion", + "splregenexpotion": "splashregeneration2potion", + "splregenlevel2potion": "splashregeneration2potion", + "regeneration2splashpotion": "splashregeneration2potion", + "regenerationlongsplashpotion": "splashregeneration2potion", + "regenerationextendedsplashpotion": "splashregeneration2potion", + "regenerationexsplashpotion": "splashregeneration2potion", + "regenerationlevel2splashpotion": "splashregeneration2potion", + "regenerate2splashpotion": "splashregeneration2potion", + "regeneratelongsplashpotion": "splashregeneration2potion", + "regenerateextendedsplashpotion": "splashregeneration2potion", + "regenerateexsplashpotion": "splashregeneration2potion", + "regeneratelevel2splashpotion": "splashregeneration2potion", + "regen2splashpotion": "splashregeneration2potion", + "regenlongsplashpotion": "splashregeneration2potion", + "regenextendedsplashpotion": "splashregeneration2potion", + "regenexsplashpotion": "splashregeneration2potion", + "regenlevel2splashpotion": "splashregeneration2potion", + "splashregeneration2pot": "splashregeneration2potion", + "splashregenerationlongpot": "splashregeneration2potion", + "splashregenerationextendedpot": "splashregeneration2potion", + "splashregenerationexpot": "splashregeneration2potion", + "splashregenerationlevel2pot": "splashregeneration2potion", + "splashregenerate2pot": "splashregeneration2potion", + "splashregeneratelongpot": "splashregeneration2potion", + "splashregenerateextendedpot": "splashregeneration2potion", + "splashregenerateexpot": "splashregeneration2potion", + "splashregeneratelevel2pot": "splashregeneration2potion", + "splashregen2pot": "splashregeneration2potion", + "splashregenlongpot": "splashregeneration2potion", + "splashregenextendedpot": "splashregeneration2potion", + "splashregenexpot": "splashregeneration2potion", + "splashregenlevel2pot": "splashregeneration2potion", + "splregeneration2pot": "splashregeneration2potion", + "splregenerationlongpot": "splashregeneration2potion", + "splregenerationextendedpot": "splashregeneration2potion", + "splregenerationexpot": "splashregeneration2potion", + "splregenerationlevel2pot": "splashregeneration2potion", + "splregenerate2pot": "splashregeneration2potion", + "splregeneratelongpot": "splashregeneration2potion", + "splregenerateextendedpot": "splashregeneration2potion", + "splregenerateexpot": "splashregeneration2potion", + "splregeneratelevel2pot": "splashregeneration2potion", + "splregen2pot": "splashregeneration2potion", + "splregenlongpot": "splashregeneration2potion", + "splregenextendedpot": "splashregeneration2potion", + "splregenexpot": "splashregeneration2potion", + "splregenlevel2pot": "splashregeneration2potion", + "regeneration2splashpot": "splashregeneration2potion", + "regenerationlongsplashpot": "splashregeneration2potion", + "regenerationextendedsplashpot": "splashregeneration2potion", + "regenerationexsplashpot": "splashregeneration2potion", + "regenerationlevel2splashpot": "splashregeneration2potion", + "regenerate2splashpot": "splashregeneration2potion", + "regeneratelongsplashpot": "splashregeneration2potion", + "regenerateextendedsplashpot": "splashregeneration2potion", + "regenerateexsplashpot": "splashregeneration2potion", + "regeneratelevel2splashpot": "splashregeneration2potion", + "regen2splashpot": "splashregeneration2potion", + "regenlongsplashpot": "splashregeneration2potion", + "regenextendedsplashpot": "splashregeneration2potion", + "regenexsplashpot": "splashregeneration2potion", + "regenlevel2splashpot": "splashregeneration2potion", + "lingerpotregeneration2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_regeneration", + "type": "REGEN", + "upgraded": false, + "extended": true + } + }, + "lingerpotregenerationlong": "lingerpotregeneration2", + "lingerpotregenerationextended": "lingerpotregeneration2", + "lingerpotregenerationex": "lingerpotregeneration2", + "lingerpotregenerationlevel2": "lingerpotregeneration2", + "lingerpotregenerate2": "lingerpotregeneration2", + "lingerpotregeneratelong": "lingerpotregeneration2", + "lingerpotregenerateextended": "lingerpotregeneration2", + "lingerpotregenerateex": "lingerpotregeneration2", + "lingerpotregeneratelevel2": "lingerpotregeneration2", + "lingerpotregen2": "lingerpotregeneration2", + "lingerpotregenlong": "lingerpotregeneration2", + "lingerpotregenextended": "lingerpotregeneration2", + "lingerpotregenex": "lingerpotregeneration2", + "lingerpotregenlevel2": "lingerpotregeneration2", + "regenerationlingerpot2": "lingerpotregeneration2", + "regenerationlingerpotlong": "lingerpotregeneration2", + "regenerationlingerpotextended": "lingerpotregeneration2", + "regenerationlingerpotex": "lingerpotregeneration2", + "regenerationlingerpotlevel2": "lingerpotregeneration2", + "regeneratelingerpot2": "lingerpotregeneration2", + "regeneratelingerpotlong": "lingerpotregeneration2", + "regeneratelingerpotextended": "lingerpotregeneration2", + "regeneratelingerpotex": "lingerpotregeneration2", + "regeneratelingerpotlevel2": "lingerpotregeneration2", + "regenlingerpot2": "lingerpotregeneration2", + "regenlingerpotlong": "lingerpotregeneration2", + "regenlingerpotextended": "lingerpotregeneration2", + "regenlingerpotex": "lingerpotregeneration2", + "regenlingerpotlevel2": "lingerpotregeneration2", + "aoepotionregeneration2": "lingerpotregeneration2", + "aoepotionregenerationlong": "lingerpotregeneration2", + "aoepotionregenerationextended": "lingerpotregeneration2", + "aoepotionregenerationex": "lingerpotregeneration2", + "aoepotionregenerationlevel2": "lingerpotregeneration2", + "aoepotionregenerate2": "lingerpotregeneration2", + "aoepotionregeneratelong": "lingerpotregeneration2", + "aoepotionregenerateextended": "lingerpotregeneration2", + "aoepotionregenerateex": "lingerpotregeneration2", + "aoepotionregeneratelevel2": "lingerpotregeneration2", + "aoepotionregen2": "lingerpotregeneration2", + "aoepotionregenlong": "lingerpotregeneration2", + "aoepotionregenextended": "lingerpotregeneration2", + "aoepotionregenex": "lingerpotregeneration2", + "aoepotionregenlevel2": "lingerpotregeneration2", + "regenerationaoepoiont2": "lingerpotregeneration2", + "regenerationaoepoiontlong": "lingerpotregeneration2", + "regenerationaoepoiontextended": "lingerpotregeneration2", + "regenerationaoepoiontex": "lingerpotregeneration2", + "regenerationaoepoiontlevel2": "lingerpotregeneration2", + "regenerateaoepoiont2": "lingerpotregeneration2", + "regenerateaoepoiontlong": "lingerpotregeneration2", + "regenerateaoepoiontextended": "lingerpotregeneration2", + "regenerateaoepoiontex": "lingerpotregeneration2", + "regenerateaoepoiontlevel2": "lingerpotregeneration2", + "regenaoepoiont2": "lingerpotregeneration2", + "regenaoepoiontlong": "lingerpotregeneration2", + "regenaoepoiontextended": "lingerpotregeneration2", + "regenaoepoiontex": "lingerpotregeneration2", + "regenaoepoiontlevel2": "lingerpotregeneration2", + "aoepotregeneration2": "lingerpotregeneration2", + "aoepotregenerationlong": "lingerpotregeneration2", + "aoepotregenerationextended": "lingerpotregeneration2", + "aoepotregenerationex": "lingerpotregeneration2", + "aoepotregenerationlevel2": "lingerpotregeneration2", + "aoepotregenerate2": "lingerpotregeneration2", + "aoepotregeneratelong": "lingerpotregeneration2", + "aoepotregenerateextended": "lingerpotregeneration2", + "aoepotregenerateex": "lingerpotregeneration2", + "aoepotregeneratelevel2": "lingerpotregeneration2", + "aoepotregen2": "lingerpotregeneration2", + "aoepotregenlong": "lingerpotregeneration2", + "aoepotregenextended": "lingerpotregeneration2", + "aoepotregenex": "lingerpotregeneration2", + "aoepotregenlevel2": "lingerpotregeneration2", + "regenerationaoepot2": "lingerpotregeneration2", + "regenerationaoepotlong": "lingerpotregeneration2", + "regenerationaoepotextended": "lingerpotregeneration2", + "regenerationaoepotex": "lingerpotregeneration2", + "regenerationaoepotlevel2": "lingerpotregeneration2", + "regenerateaoepot2": "lingerpotregeneration2", + "regenerateaoepotlong": "lingerpotregeneration2", + "regenerateaoepotextended": "lingerpotregeneration2", + "regenerateaoepotex": "lingerpotregeneration2", + "regenerateaoepotlevel2": "lingerpotregeneration2", + "regenaoepot2": "lingerpotregeneration2", + "regenaoepotlong": "lingerpotregeneration2", + "regenaoepotextended": "lingerpotregeneration2", + "regenaoepotex": "lingerpotregeneration2", + "regenaoepotlevel2": "lingerpotregeneration2", + "areapotionregeneration2": "lingerpotregeneration2", + "areapotionregenerationlong": "lingerpotregeneration2", + "areapotionregenerationextended": "lingerpotregeneration2", + "areapotionregenerationex": "lingerpotregeneration2", + "areapotionregenerationlevel2": "lingerpotregeneration2", + "areapotionregenerate2": "lingerpotregeneration2", + "areapotionregeneratelong": "lingerpotregeneration2", + "areapotionregenerateextended": "lingerpotregeneration2", + "areapotionregenerateex": "lingerpotregeneration2", + "areapotionregeneratelevel2": "lingerpotregeneration2", + "areapotionregen2": "lingerpotregeneration2", + "areapotionregenlong": "lingerpotregeneration2", + "areapotionregenextended": "lingerpotregeneration2", + "areapotionregenex": "lingerpotregeneration2", + "areapotionregenlevel2": "lingerpotregeneration2", + "regenerationareapotion2": "lingerpotregeneration2", + "regenerationareapotionlong": "lingerpotregeneration2", + "regenerationareapotionextended": "lingerpotregeneration2", + "regenerationareapotionex": "lingerpotregeneration2", + "regenerationareapotionlevel2": "lingerpotregeneration2", + "regenerateareapotion2": "lingerpotregeneration2", + "regenerateareapotionlong": "lingerpotregeneration2", + "regenerateareapotionextended": "lingerpotregeneration2", + "regenerateareapotionex": "lingerpotregeneration2", + "regenerateareapotionlevel2": "lingerpotregeneration2", + "regenareapotion2": "lingerpotregeneration2", + "regenareapotionlong": "lingerpotregeneration2", + "regenareapotionextended": "lingerpotregeneration2", + "regenareapotionex": "lingerpotregeneration2", + "regenareapotionlevel2": "lingerpotregeneration2", + "areapotregeneration2": "lingerpotregeneration2", + "areapotregenerationlong": "lingerpotregeneration2", + "areapotregenerationextended": "lingerpotregeneration2", + "areapotregenerationex": "lingerpotregeneration2", + "areapotregenerationlevel2": "lingerpotregeneration2", + "areapotregenerate2": "lingerpotregeneration2", + "areapotregeneratelong": "lingerpotregeneration2", + "areapotregenerateextended": "lingerpotregeneration2", + "areapotregenerateex": "lingerpotregeneration2", + "areapotregeneratelevel2": "lingerpotregeneration2", + "areapotregen2": "lingerpotregeneration2", + "areapotregenlong": "lingerpotregeneration2", + "areapotregenextended": "lingerpotregeneration2", + "areapotregenex": "lingerpotregeneration2", + "areapotregenlevel2": "lingerpotregeneration2", + "regenerationareapot2": "lingerpotregeneration2", + "regenerationareapotlong": "lingerpotregeneration2", + "regenerationareapotextended": "lingerpotregeneration2", + "regenerationareapotex": "lingerpotregeneration2", + "regenerationareapotlevel2": "lingerpotregeneration2", + "regenerateareapot2": "lingerpotregeneration2", + "regenerateareapotlong": "lingerpotregeneration2", + "regenerateareapotextended": "lingerpotregeneration2", + "regenerateareapotex": "lingerpotregeneration2", + "regenerateareapotlevel2": "lingerpotregeneration2", + "regenareapot2": "lingerpotregeneration2", + "regenareapotlong": "lingerpotregeneration2", + "regenareapotextended": "lingerpotregeneration2", + "regenareapotex": "lingerpotregeneration2", + "regenareapotlevel2": "lingerpotregeneration2", + "cloudpotionregeneration2": "lingerpotregeneration2", + "cloudpotionregenerationlong": "lingerpotregeneration2", + "cloudpotionregenerationextended": "lingerpotregeneration2", + "cloudpotionregenerationex": "lingerpotregeneration2", + "cloudpotionregenerationlevel2": "lingerpotregeneration2", + "cloudpotionregenerate2": "lingerpotregeneration2", + "cloudpotionregeneratelong": "lingerpotregeneration2", + "cloudpotionregenerateextended": "lingerpotregeneration2", + "cloudpotionregenerateex": "lingerpotregeneration2", + "cloudpotionregeneratelevel2": "lingerpotregeneration2", + "cloudpotionregen2": "lingerpotregeneration2", + "cloudpotionregenlong": "lingerpotregeneration2", + "cloudpotionregenextended": "lingerpotregeneration2", + "cloudpotionregenex": "lingerpotregeneration2", + "cloudpotionregenlevel2": "lingerpotregeneration2", + "regenerationcloudpotion2": "lingerpotregeneration2", + "regenerationcloudpotionlong": "lingerpotregeneration2", + "regenerationcloudpotionextended": "lingerpotregeneration2", + "regenerationcloudpotionex": "lingerpotregeneration2", + "regenerationcloudpotionlevel2": "lingerpotregeneration2", + "regeneratecloudpotion2": "lingerpotregeneration2", + "regeneratecloudpotionlong": "lingerpotregeneration2", + "regeneratecloudpotionextended": "lingerpotregeneration2", + "regeneratecloudpotionex": "lingerpotregeneration2", + "regeneratecloudpotionlevel2": "lingerpotregeneration2", + "regencloudpotion2": "lingerpotregeneration2", + "regencloudpotionlong": "lingerpotregeneration2", + "regencloudpotionextended": "lingerpotregeneration2", + "regencloudpotionex": "lingerpotregeneration2", + "regencloudpotionlevel2": "lingerpotregeneration2", + "cloudpotregeneration2": "lingerpotregeneration2", + "cloudpotregenerationlong": "lingerpotregeneration2", + "cloudpotregenerationextended": "lingerpotregeneration2", + "cloudpotregenerationex": "lingerpotregeneration2", + "cloudpotregenerationlevel2": "lingerpotregeneration2", + "cloudpotregenerate2": "lingerpotregeneration2", + "cloudpotregeneratelong": "lingerpotregeneration2", + "cloudpotregenerateextended": "lingerpotregeneration2", + "cloudpotregenerateex": "lingerpotregeneration2", + "cloudpotregeneratelevel2": "lingerpotregeneration2", + "cloudpotregen2": "lingerpotregeneration2", + "cloudpotregenlong": "lingerpotregeneration2", + "cloudpotregenextended": "lingerpotregeneration2", + "cloudpotregenex": "lingerpotregeneration2", + "cloudpotregenlevel2": "lingerpotregeneration2", + "regenerationcloudpot2": "lingerpotregeneration2", + "regenerationcloudpotlong": "lingerpotregeneration2", + "regenerationcloudpotextended": "lingerpotregeneration2", + "regenerationcloudpotex": "lingerpotregeneration2", + "regenerationcloudpotlevel2": "lingerpotregeneration2", + "regeneratecloudpot2": "lingerpotregeneration2", + "regeneratecloudpotlong": "lingerpotregeneration2", + "regeneratecloudpotextended": "lingerpotregeneration2", + "regeneratecloudpotex": "lingerpotregeneration2", + "regeneratecloudpotlevel2": "lingerpotregeneration2", + "regencloudpot2": "lingerpotregeneration2", + "regencloudpotlong": "lingerpotregeneration2", + "regencloudpotextended": "lingerpotregeneration2", + "regencloudpotex": "lingerpotregeneration2", + "regencloudpotlevel2": "lingerpotregeneration2", + "arrowregeneration2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_regeneration", + "type": "REGEN", + "upgraded": false, + "extended": true + } + }, + "arrowregenerationlong": "arrowregeneration2", + "arrowregenerationextended": "arrowregeneration2", + "arrowregenerationex": "arrowregeneration2", + "arrowregenerationlevel2": "arrowregeneration2", + "arrowregenerate2": "arrowregeneration2", + "arrowregeneratelong": "arrowregeneration2", + "arrowregenerateextended": "arrowregeneration2", + "arrowregenerateex": "arrowregeneration2", + "arrowregeneratelevel2": "arrowregeneration2", + "arrowregen2": "arrowregeneration2", + "arrowregenlong": "arrowregeneration2", + "arrowregenextended": "arrowregeneration2", + "arrowregenex": "arrowregeneration2", + "arrowregenlevel2": "arrowregeneration2", + "regenerationarrow2": "arrowregeneration2", + "regenerationarrowlong": "arrowregeneration2", + "regenerationarrowextended": "arrowregeneration2", + "regenerationarrowex": "arrowregeneration2", + "regenerationarrowlevel2": "arrowregeneration2", + "regeneratearrow2": "arrowregeneration2", + "regeneratearrowlong": "arrowregeneration2", + "regeneratearrowextended": "arrowregeneration2", + "regeneratearrowex": "arrowregeneration2", + "regeneratearrowlevel2": "arrowregeneration2", + "regenarrow2": "arrowregeneration2", + "regenarrowlong": "arrowregeneration2", + "regenarrowextended": "arrowregeneration2", + "regenarrowex": "arrowregeneration2", + "regenarrowlevel2": "arrowregeneration2", + "strengthpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strength", + "type": "STRENGTH", + "upgraded": false, + "extended": false + } + }, + "strongpotion": "strengthpotion", + "strpotion": "strengthpotion", + "strengthpot": "strengthpotion", + "strongpot": "strengthpotion", + "strpot": "strengthpotion", + "potionofstrength": "strengthpotion", + "potionofstrong": "strengthpotion", + "potionofstr": "strengthpotion", + "potofstrength": "strengthpotion", + "potofstrong": "strengthpotion", + "potofstr": "strengthpotion", + "splashstrengthpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strength", + "type": "STRENGTH", + "upgraded": false, + "extended": false + } + }, + "splashstrongpotion": "splashstrengthpotion", + "splashstrpotion": "splashstrengthpotion", + "splstrengthpotion": "splashstrengthpotion", + "splstrongpotion": "splashstrengthpotion", + "splstrpotion": "splashstrengthpotion", + "strengthsplashpotion": "splashstrengthpotion", + "strongsplashpotion": "splashstrengthpotion", + "strsplashpotion": "splashstrengthpotion", + "splashstrengthpot": "splashstrengthpotion", + "splashstrongpot": "splashstrengthpotion", + "splashstrpot": "splashstrengthpotion", + "splstrengthpot": "splashstrengthpotion", + "splstrongpot": "splashstrengthpotion", + "splstrpot": "splashstrengthpotion", + "strengthsplashpot": "splashstrengthpotion", + "strongsplashpot": "splashstrengthpotion", + "strsplashpot": "splashstrengthpotion", + "lingerpotstrength": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strength", + "type": "STRENGTH", + "upgraded": false, + "extended": false + } + }, + "lingerpotstrong": "lingerpotstrength", + "lingerpotstr": "lingerpotstrength", + "strengthlingerpot": "lingerpotstrength", + "stronglingerpot": "lingerpotstrength", + "strlingerpot": "lingerpotstrength", + "aoepotionstrength": "lingerpotstrength", + "aoepotionstrong": "lingerpotstrength", + "aoepotionstr": "lingerpotstrength", + "strengthaoepoiont": "lingerpotstrength", + "strongaoepoiont": "lingerpotstrength", + "straoepoiont": "lingerpotstrength", + "aoepotstrength": "lingerpotstrength", + "aoepotstrong": "lingerpotstrength", + "aoepotstr": "lingerpotstrength", + "strengthaoepot": "lingerpotstrength", + "strongaoepot": "lingerpotstrength", + "straoepot": "lingerpotstrength", + "areapotionstrength": "lingerpotstrength", + "areapotionstrong": "lingerpotstrength", + "areapotionstr": "lingerpotstrength", + "strengthareapotion": "lingerpotstrength", + "strongareapotion": "lingerpotstrength", + "strareapotion": "lingerpotstrength", + "areapotstrength": "lingerpotstrength", + "areapotstrong": "lingerpotstrength", + "areapotstr": "lingerpotstrength", + "strengthareapot": "lingerpotstrength", + "strongareapot": "lingerpotstrength", + "strareapot": "lingerpotstrength", + "cloudpotionstrength": "lingerpotstrength", + "cloudpotionstrong": "lingerpotstrength", + "cloudpotionstr": "lingerpotstrength", + "strengthcloudpotion": "lingerpotstrength", + "strongcloudpotion": "lingerpotstrength", + "strcloudpotion": "lingerpotstrength", + "cloudpotstrength": "lingerpotstrength", + "cloudpotstrong": "lingerpotstrength", + "cloudpotstr": "lingerpotstrength", + "strengthcloudpot": "lingerpotstrength", + "strongcloudpot": "lingerpotstrength", + "strcloudpot": "lingerpotstrength", + "arrowstrength": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strength", + "type": "STRENGTH", + "upgraded": false, + "extended": false + } + }, + "arrowstrong": "arrowstrength", + "arrowstr": "arrowstrength", + "strengtharrow": "arrowstrength", + "strongarrow": "arrowstrength", + "strarrow": "arrowstrength", + "strengthiipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_strength", + "type": "STRENGTH", + "upgraded": true, + "extended": false + } + }, + "strengthstrongpotion": "strengthiipotion", + "strengthleveliipotion": "strengthiipotion", + "strongiipotion": "strengthiipotion", + "strongstrongpotion": "strengthiipotion", + "strongleveliipotion": "strengthiipotion", + "striipotion": "strengthiipotion", + "strstrongpotion": "strengthiipotion", + "strleveliipotion": "strengthiipotion", + "strengthiipot": "strengthiipotion", + "strengthstrongpot": "strengthiipotion", + "strengthleveliipot": "strengthiipotion", + "strongiipot": "strengthiipotion", + "strongstrongpot": "strengthiipotion", + "strongleveliipot": "strengthiipotion", + "striipot": "strengthiipotion", + "strstrongpot": "strengthiipotion", + "strleveliipot": "strengthiipotion", + "potionofstrengthii": "strengthiipotion", + "potionofstrengthstrong": "strengthiipotion", + "potionofstrengthlevelii": "strengthiipotion", + "potionofstrongii": "strengthiipotion", + "potionofstrongstrong": "strengthiipotion", + "potionofstronglevelii": "strengthiipotion", + "potionofstrii": "strengthiipotion", + "potionofstrstrong": "strengthiipotion", + "potionofstrlevelii": "strengthiipotion", + "potofstrengthii": "strengthiipotion", + "potofstrengthstrong": "strengthiipotion", + "potofstrengthlevelii": "strengthiipotion", + "potofstrongii": "strengthiipotion", + "potofstrongstrong": "strengthiipotion", + "potofstronglevelii": "strengthiipotion", + "potofstrii": "strengthiipotion", + "potofstrstrong": "strengthiipotion", + "potofstrlevelii": "strengthiipotion", + "splashstrengthiipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_strength", + "type": "STRENGTH", + "upgraded": true, + "extended": false + } + }, + "splashstrengthstrongpotion": "splashstrengthiipotion", + "splashstrengthleveliipotion": "splashstrengthiipotion", + "splashstrongiipotion": "splashstrengthiipotion", + "splashstrongstrongpotion": "splashstrengthiipotion", + "splashstrongleveliipotion": "splashstrengthiipotion", + "splashstriipotion": "splashstrengthiipotion", + "splashstrstrongpotion": "splashstrengthiipotion", + "splashstrleveliipotion": "splashstrengthiipotion", + "splstrengthiipotion": "splashstrengthiipotion", + "splstrengthstrongpotion": "splashstrengthiipotion", + "splstrengthleveliipotion": "splashstrengthiipotion", + "splstrongiipotion": "splashstrengthiipotion", + "splstrongstrongpotion": "splashstrengthiipotion", + "splstrongleveliipotion": "splashstrengthiipotion", + "splstriipotion": "splashstrengthiipotion", + "splstrstrongpotion": "splashstrengthiipotion", + "splstrleveliipotion": "splashstrengthiipotion", + "strengthiisplashpotion": "splashstrengthiipotion", + "strengthstrongsplashpotion": "splashstrengthiipotion", + "strengthleveliisplashpotion": "splashstrengthiipotion", + "strongiisplashpotion": "splashstrengthiipotion", + "strongstrongsplashpotion": "splashstrengthiipotion", + "strongleveliisplashpotion": "splashstrengthiipotion", + "striisplashpotion": "splashstrengthiipotion", + "strstrongsplashpotion": "splashstrengthiipotion", + "strleveliisplashpotion": "splashstrengthiipotion", + "splashstrengthiipot": "splashstrengthiipotion", + "splashstrengthstrongpot": "splashstrengthiipotion", + "splashstrengthleveliipot": "splashstrengthiipotion", + "splashstrongiipot": "splashstrengthiipotion", + "splashstrongstrongpot": "splashstrengthiipotion", + "splashstrongleveliipot": "splashstrengthiipotion", + "splashstriipot": "splashstrengthiipotion", + "splashstrstrongpot": "splashstrengthiipotion", + "splashstrleveliipot": "splashstrengthiipotion", + "splstrengthiipot": "splashstrengthiipotion", + "splstrengthstrongpot": "splashstrengthiipotion", + "splstrengthleveliipot": "splashstrengthiipotion", + "splstrongiipot": "splashstrengthiipotion", + "splstrongstrongpot": "splashstrengthiipotion", + "splstrongleveliipot": "splashstrengthiipotion", + "splstriipot": "splashstrengthiipotion", + "splstrstrongpot": "splashstrengthiipotion", + "splstrleveliipot": "splashstrengthiipotion", + "strengthiisplashpot": "splashstrengthiipotion", + "strengthstrongsplashpot": "splashstrengthiipotion", + "strengthleveliisplashpot": "splashstrengthiipotion", + "strongiisplashpot": "splashstrengthiipotion", + "strongstrongsplashpot": "splashstrengthiipotion", + "strongleveliisplashpot": "splashstrengthiipotion", + "striisplashpot": "splashstrengthiipotion", + "strstrongsplashpot": "splashstrengthiipotion", + "strleveliisplashpot": "splashstrengthiipotion", + "lingerpotstrengthii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_strength", + "type": "STRENGTH", + "upgraded": true, + "extended": false + } + }, + "lingerpotstrengthstrong": "lingerpotstrengthii", + "lingerpotstrengthlevelii": "lingerpotstrengthii", + "lingerpotstrongii": "lingerpotstrengthii", + "lingerpotstrongstrong": "lingerpotstrengthii", + "lingerpotstronglevelii": "lingerpotstrengthii", + "lingerpotstrii": "lingerpotstrengthii", + "lingerpotstrstrong": "lingerpotstrengthii", + "lingerpotstrlevelii": "lingerpotstrengthii", + "strengthlingerpotii": "lingerpotstrengthii", + "strengthlingerpotstrong": "lingerpotstrengthii", + "strengthlingerpotlevelii": "lingerpotstrengthii", + "stronglingerpotii": "lingerpotstrengthii", + "stronglingerpotstrong": "lingerpotstrengthii", + "stronglingerpotlevelii": "lingerpotstrengthii", + "strlingerpotii": "lingerpotstrengthii", + "strlingerpotstrong": "lingerpotstrengthii", + "strlingerpotlevelii": "lingerpotstrengthii", + "aoepotionstrengthii": "lingerpotstrengthii", + "aoepotionstrengthstrong": "lingerpotstrengthii", + "aoepotionstrengthlevelii": "lingerpotstrengthii", + "aoepotionstrongii": "lingerpotstrengthii", + "aoepotionstrongstrong": "lingerpotstrengthii", + "aoepotionstronglevelii": "lingerpotstrengthii", + "aoepotionstrii": "lingerpotstrengthii", + "aoepotionstrstrong": "lingerpotstrengthii", + "aoepotionstrlevelii": "lingerpotstrengthii", + "strengthaoepoiontii": "lingerpotstrengthii", + "strengthaoepoiontstrong": "lingerpotstrengthii", + "strengthaoepoiontlevelii": "lingerpotstrengthii", + "strongaoepoiontii": "lingerpotstrengthii", + "strongaoepoiontstrong": "lingerpotstrengthii", + "strongaoepoiontlevelii": "lingerpotstrengthii", + "straoepoiontii": "lingerpotstrengthii", + "straoepoiontstrong": "lingerpotstrengthii", + "straoepoiontlevelii": "lingerpotstrengthii", + "aoepotstrengthii": "lingerpotstrengthii", + "aoepotstrengthstrong": "lingerpotstrengthii", + "aoepotstrengthlevelii": "lingerpotstrengthii", + "aoepotstrongii": "lingerpotstrengthii", + "aoepotstrongstrong": "lingerpotstrengthii", + "aoepotstronglevelii": "lingerpotstrengthii", + "aoepotstrii": "lingerpotstrengthii", + "aoepotstrstrong": "lingerpotstrengthii", + "aoepotstrlevelii": "lingerpotstrengthii", + "strengthaoepotii": "lingerpotstrengthii", + "strengthaoepotstrong": "lingerpotstrengthii", + "strengthaoepotlevelii": "lingerpotstrengthii", + "strongaoepotii": "lingerpotstrengthii", + "strongaoepotstrong": "lingerpotstrengthii", + "strongaoepotlevelii": "lingerpotstrengthii", + "straoepotii": "lingerpotstrengthii", + "straoepotstrong": "lingerpotstrengthii", + "straoepotlevelii": "lingerpotstrengthii", + "areapotionstrengthii": "lingerpotstrengthii", + "areapotionstrengthstrong": "lingerpotstrengthii", + "areapotionstrengthlevelii": "lingerpotstrengthii", + "areapotionstrongii": "lingerpotstrengthii", + "areapotionstrongstrong": "lingerpotstrengthii", + "areapotionstronglevelii": "lingerpotstrengthii", + "areapotionstrii": "lingerpotstrengthii", + "areapotionstrstrong": "lingerpotstrengthii", + "areapotionstrlevelii": "lingerpotstrengthii", + "strengthareapotionii": "lingerpotstrengthii", + "strengthareapotionstrong": "lingerpotstrengthii", + "strengthareapotionlevelii": "lingerpotstrengthii", + "strongareapotionii": "lingerpotstrengthii", + "strongareapotionstrong": "lingerpotstrengthii", + "strongareapotionlevelii": "lingerpotstrengthii", + "strareapotionii": "lingerpotstrengthii", + "strareapotionstrong": "lingerpotstrengthii", + "strareapotionlevelii": "lingerpotstrengthii", + "areapotstrengthii": "lingerpotstrengthii", + "areapotstrengthstrong": "lingerpotstrengthii", + "areapotstrengthlevelii": "lingerpotstrengthii", + "areapotstrongii": "lingerpotstrengthii", + "areapotstrongstrong": "lingerpotstrengthii", + "areapotstronglevelii": "lingerpotstrengthii", + "areapotstrii": "lingerpotstrengthii", + "areapotstrstrong": "lingerpotstrengthii", + "areapotstrlevelii": "lingerpotstrengthii", + "strengthareapotii": "lingerpotstrengthii", + "strengthareapotstrong": "lingerpotstrengthii", + "strengthareapotlevelii": "lingerpotstrengthii", + "strongareapotii": "lingerpotstrengthii", + "strongareapotstrong": "lingerpotstrengthii", + "strongareapotlevelii": "lingerpotstrengthii", + "strareapotii": "lingerpotstrengthii", + "strareapotstrong": "lingerpotstrengthii", + "strareapotlevelii": "lingerpotstrengthii", + "cloudpotionstrengthii": "lingerpotstrengthii", + "cloudpotionstrengthstrong": "lingerpotstrengthii", + "cloudpotionstrengthlevelii": "lingerpotstrengthii", + "cloudpotionstrongii": "lingerpotstrengthii", + "cloudpotionstrongstrong": "lingerpotstrengthii", + "cloudpotionstronglevelii": "lingerpotstrengthii", + "cloudpotionstrii": "lingerpotstrengthii", + "cloudpotionstrstrong": "lingerpotstrengthii", + "cloudpotionstrlevelii": "lingerpotstrengthii", + "strengthcloudpotionii": "lingerpotstrengthii", + "strengthcloudpotionstrong": "lingerpotstrengthii", + "strengthcloudpotionlevelii": "lingerpotstrengthii", + "strongcloudpotionii": "lingerpotstrengthii", + "strongcloudpotionstrong": "lingerpotstrengthii", + "strongcloudpotionlevelii": "lingerpotstrengthii", + "strcloudpotionii": "lingerpotstrengthii", + "strcloudpotionstrong": "lingerpotstrengthii", + "strcloudpotionlevelii": "lingerpotstrengthii", + "cloudpotstrengthii": "lingerpotstrengthii", + "cloudpotstrengthstrong": "lingerpotstrengthii", + "cloudpotstrengthlevelii": "lingerpotstrengthii", + "cloudpotstrongii": "lingerpotstrengthii", + "cloudpotstrongstrong": "lingerpotstrengthii", + "cloudpotstronglevelii": "lingerpotstrengthii", + "cloudpotstrii": "lingerpotstrengthii", + "cloudpotstrstrong": "lingerpotstrengthii", + "cloudpotstrlevelii": "lingerpotstrengthii", + "strengthcloudpotii": "lingerpotstrengthii", + "strengthcloudpotstrong": "lingerpotstrengthii", + "strengthcloudpotlevelii": "lingerpotstrengthii", + "strongcloudpotii": "lingerpotstrengthii", + "strongcloudpotstrong": "lingerpotstrengthii", + "strongcloudpotlevelii": "lingerpotstrengthii", + "strcloudpotii": "lingerpotstrengthii", + "strcloudpotstrong": "lingerpotstrengthii", + "strcloudpotlevelii": "lingerpotstrengthii", + "arrowstrengthii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_strength", + "type": "STRENGTH", + "upgraded": true, + "extended": false + } + }, + "arrowstrengthstrong": "arrowstrengthii", + "arrowstrengthlevelii": "arrowstrengthii", + "arrowstrongii": "arrowstrengthii", + "arrowstrongstrong": "arrowstrengthii", + "arrowstronglevelii": "arrowstrengthii", + "arrowstrii": "arrowstrengthii", + "arrowstrstrong": "arrowstrengthii", + "arrowstrlevelii": "arrowstrengthii", + "strengtharrowii": "arrowstrengthii", + "strengtharrowstrong": "arrowstrengthii", + "strengtharrowlevelii": "arrowstrengthii", + "strongarrowii": "arrowstrengthii", + "strongarrowstrong": "arrowstrengthii", + "strongarrowlevelii": "arrowstrengthii", + "strarrowii": "arrowstrengthii", + "strarrowstrong": "arrowstrengthii", + "strarrowlevelii": "arrowstrengthii", + "strength2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_strength", + "type": "STRENGTH", + "upgraded": false, + "extended": true + } + }, + "strengthlongpotion": "strength2potion", + "strengthextendedpotion": "strength2potion", + "strengthexpotion": "strength2potion", + "strengthlevel2potion": "strength2potion", + "strong2potion": "strength2potion", + "stronglongpotion": "strength2potion", + "strongextendedpotion": "strength2potion", + "strongexpotion": "strength2potion", + "stronglevel2potion": "strength2potion", + "str2potion": "strength2potion", + "strlongpotion": "strength2potion", + "strextendedpotion": "strength2potion", + "strexpotion": "strength2potion", + "strlevel2potion": "strength2potion", + "strength2pot": "strength2potion", + "strengthlongpot": "strength2potion", + "strengthextendedpot": "strength2potion", + "strengthexpot": "strength2potion", + "strengthlevel2pot": "strength2potion", + "strong2pot": "strength2potion", + "stronglongpot": "strength2potion", + "strongextendedpot": "strength2potion", + "strongexpot": "strength2potion", + "stronglevel2pot": "strength2potion", + "str2pot": "strength2potion", + "strlongpot": "strength2potion", + "strextendedpot": "strength2potion", + "strexpot": "strength2potion", + "strlevel2pot": "strength2potion", + "potionofstrength2": "strength2potion", + "potionofstrengthlong": "strength2potion", + "potionofstrengthextended": "strength2potion", + "potionofstrengthex": "strength2potion", + "potionofstrengthlevel2": "strength2potion", + "potionofstrong2": "strength2potion", + "potionofstronglong": "strength2potion", + "potionofstrongextended": "strength2potion", + "potionofstrongex": "strength2potion", + "potionofstronglevel2": "strength2potion", + "potionofstr2": "strength2potion", + "potionofstrlong": "strength2potion", + "potionofstrextended": "strength2potion", + "potionofstrex": "strength2potion", + "potionofstrlevel2": "strength2potion", + "potofstrength2": "strength2potion", + "potofstrengthlong": "strength2potion", + "potofstrengthextended": "strength2potion", + "potofstrengthex": "strength2potion", + "potofstrengthlevel2": "strength2potion", + "potofstrong2": "strength2potion", + "potofstronglong": "strength2potion", + "potofstrongextended": "strength2potion", + "potofstrongex": "strength2potion", + "potofstronglevel2": "strength2potion", + "potofstr2": "strength2potion", + "potofstrlong": "strength2potion", + "potofstrextended": "strength2potion", + "potofstrex": "strength2potion", + "potofstrlevel2": "strength2potion", + "splashstrength2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_strength", + "type": "STRENGTH", + "upgraded": false, + "extended": true + } + }, + "splashstrengthlongpotion": "splashstrength2potion", + "splashstrengthextendedpotion": "splashstrength2potion", + "splashstrengthexpotion": "splashstrength2potion", + "splashstrengthlevel2potion": "splashstrength2potion", + "splashstrong2potion": "splashstrength2potion", + "splashstronglongpotion": "splashstrength2potion", + "splashstrongextendedpotion": "splashstrength2potion", + "splashstrongexpotion": "splashstrength2potion", + "splashstronglevel2potion": "splashstrength2potion", + "splashstr2potion": "splashstrength2potion", + "splashstrlongpotion": "splashstrength2potion", + "splashstrextendedpotion": "splashstrength2potion", + "splashstrexpotion": "splashstrength2potion", + "splashstrlevel2potion": "splashstrength2potion", + "splstrength2potion": "splashstrength2potion", + "splstrengthlongpotion": "splashstrength2potion", + "splstrengthextendedpotion": "splashstrength2potion", + "splstrengthexpotion": "splashstrength2potion", + "splstrengthlevel2potion": "splashstrength2potion", + "splstrong2potion": "splashstrength2potion", + "splstronglongpotion": "splashstrength2potion", + "splstrongextendedpotion": "splashstrength2potion", + "splstrongexpotion": "splashstrength2potion", + "splstronglevel2potion": "splashstrength2potion", + "splstr2potion": "splashstrength2potion", + "splstrlongpotion": "splashstrength2potion", + "splstrextendedpotion": "splashstrength2potion", + "splstrexpotion": "splashstrength2potion", + "splstrlevel2potion": "splashstrength2potion", + "strength2splashpotion": "splashstrength2potion", + "strengthlongsplashpotion": "splashstrength2potion", + "strengthextendedsplashpotion": "splashstrength2potion", + "strengthexsplashpotion": "splashstrength2potion", + "strengthlevel2splashpotion": "splashstrength2potion", + "strong2splashpotion": "splashstrength2potion", + "stronglongsplashpotion": "splashstrength2potion", + "strongextendedsplashpotion": "splashstrength2potion", + "strongexsplashpotion": "splashstrength2potion", + "stronglevel2splashpotion": "splashstrength2potion", + "str2splashpotion": "splashstrength2potion", + "strlongsplashpotion": "splashstrength2potion", + "strextendedsplashpotion": "splashstrength2potion", + "strexsplashpotion": "splashstrength2potion", + "strlevel2splashpotion": "splashstrength2potion", + "splashstrength2pot": "splashstrength2potion", + "splashstrengthlongpot": "splashstrength2potion", + "splashstrengthextendedpot": "splashstrength2potion", + "splashstrengthexpot": "splashstrength2potion", + "splashstrengthlevel2pot": "splashstrength2potion", + "splashstrong2pot": "splashstrength2potion", + "splashstronglongpot": "splashstrength2potion", + "splashstrongextendedpot": "splashstrength2potion", + "splashstrongexpot": "splashstrength2potion", + "splashstronglevel2pot": "splashstrength2potion", + "splashstr2pot": "splashstrength2potion", + "splashstrlongpot": "splashstrength2potion", + "splashstrextendedpot": "splashstrength2potion", + "splashstrexpot": "splashstrength2potion", + "splashstrlevel2pot": "splashstrength2potion", + "splstrength2pot": "splashstrength2potion", + "splstrengthlongpot": "splashstrength2potion", + "splstrengthextendedpot": "splashstrength2potion", + "splstrengthexpot": "splashstrength2potion", + "splstrengthlevel2pot": "splashstrength2potion", + "splstrong2pot": "splashstrength2potion", + "splstronglongpot": "splashstrength2potion", + "splstrongextendedpot": "splashstrength2potion", + "splstrongexpot": "splashstrength2potion", + "splstronglevel2pot": "splashstrength2potion", + "splstr2pot": "splashstrength2potion", + "splstrlongpot": "splashstrength2potion", + "splstrextendedpot": "splashstrength2potion", + "splstrexpot": "splashstrength2potion", + "splstrlevel2pot": "splashstrength2potion", + "strength2splashpot": "splashstrength2potion", + "strengthlongsplashpot": "splashstrength2potion", + "strengthextendedsplashpot": "splashstrength2potion", + "strengthexsplashpot": "splashstrength2potion", + "strengthlevel2splashpot": "splashstrength2potion", + "strong2splashpot": "splashstrength2potion", + "stronglongsplashpot": "splashstrength2potion", + "strongextendedsplashpot": "splashstrength2potion", + "strongexsplashpot": "splashstrength2potion", + "stronglevel2splashpot": "splashstrength2potion", + "str2splashpot": "splashstrength2potion", + "strlongsplashpot": "splashstrength2potion", + "strextendedsplashpot": "splashstrength2potion", + "strexsplashpot": "splashstrength2potion", + "strlevel2splashpot": "splashstrength2potion", + "lingerpotstrength2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_strength", + "type": "STRENGTH", + "upgraded": false, + "extended": true + } + }, + "lingerpotstrengthlong": "lingerpotstrength2", + "lingerpotstrengthextended": "lingerpotstrength2", + "lingerpotstrengthex": "lingerpotstrength2", + "lingerpotstrengthlevel2": "lingerpotstrength2", + "lingerpotstrong2": "lingerpotstrength2", + "lingerpotstronglong": "lingerpotstrength2", + "lingerpotstrongextended": "lingerpotstrength2", + "lingerpotstrongex": "lingerpotstrength2", + "lingerpotstronglevel2": "lingerpotstrength2", + "lingerpotstr2": "lingerpotstrength2", + "lingerpotstrlong": "lingerpotstrength2", + "lingerpotstrextended": "lingerpotstrength2", + "lingerpotstrex": "lingerpotstrength2", + "lingerpotstrlevel2": "lingerpotstrength2", + "strengthlingerpot2": "lingerpotstrength2", + "strengthlingerpotlong": "lingerpotstrength2", + "strengthlingerpotextended": "lingerpotstrength2", + "strengthlingerpotex": "lingerpotstrength2", + "strengthlingerpotlevel2": "lingerpotstrength2", + "stronglingerpot2": "lingerpotstrength2", + "stronglingerpotlong": "lingerpotstrength2", + "stronglingerpotextended": "lingerpotstrength2", + "stronglingerpotex": "lingerpotstrength2", + "stronglingerpotlevel2": "lingerpotstrength2", + "strlingerpot2": "lingerpotstrength2", + "strlingerpotlong": "lingerpotstrength2", + "strlingerpotextended": "lingerpotstrength2", + "strlingerpotex": "lingerpotstrength2", + "strlingerpotlevel2": "lingerpotstrength2", + "aoepotionstrength2": "lingerpotstrength2", + "aoepotionstrengthlong": "lingerpotstrength2", + "aoepotionstrengthextended": "lingerpotstrength2", + "aoepotionstrengthex": "lingerpotstrength2", + "aoepotionstrengthlevel2": "lingerpotstrength2", + "aoepotionstrong2": "lingerpotstrength2", + "aoepotionstronglong": "lingerpotstrength2", + "aoepotionstrongextended": "lingerpotstrength2", + "aoepotionstrongex": "lingerpotstrength2", + "aoepotionstronglevel2": "lingerpotstrength2", + "aoepotionstr2": "lingerpotstrength2", + "aoepotionstrlong": "lingerpotstrength2", + "aoepotionstrextended": "lingerpotstrength2", + "aoepotionstrex": "lingerpotstrength2", + "aoepotionstrlevel2": "lingerpotstrength2", + "strengthaoepoiont2": "lingerpotstrength2", + "strengthaoepoiontlong": "lingerpotstrength2", + "strengthaoepoiontextended": "lingerpotstrength2", + "strengthaoepoiontex": "lingerpotstrength2", + "strengthaoepoiontlevel2": "lingerpotstrength2", + "strongaoepoiont2": "lingerpotstrength2", + "strongaoepoiontlong": "lingerpotstrength2", + "strongaoepoiontextended": "lingerpotstrength2", + "strongaoepoiontex": "lingerpotstrength2", + "strongaoepoiontlevel2": "lingerpotstrength2", + "straoepoiont2": "lingerpotstrength2", + "straoepoiontlong": "lingerpotstrength2", + "straoepoiontextended": "lingerpotstrength2", + "straoepoiontex": "lingerpotstrength2", + "straoepoiontlevel2": "lingerpotstrength2", + "aoepotstrength2": "lingerpotstrength2", + "aoepotstrengthlong": "lingerpotstrength2", + "aoepotstrengthextended": "lingerpotstrength2", + "aoepotstrengthex": "lingerpotstrength2", + "aoepotstrengthlevel2": "lingerpotstrength2", + "aoepotstrong2": "lingerpotstrength2", + "aoepotstronglong": "lingerpotstrength2", + "aoepotstrongextended": "lingerpotstrength2", + "aoepotstrongex": "lingerpotstrength2", + "aoepotstronglevel2": "lingerpotstrength2", + "aoepotstr2": "lingerpotstrength2", + "aoepotstrlong": "lingerpotstrength2", + "aoepotstrextended": "lingerpotstrength2", + "aoepotstrex": "lingerpotstrength2", + "aoepotstrlevel2": "lingerpotstrength2", + "strengthaoepot2": "lingerpotstrength2", + "strengthaoepotlong": "lingerpotstrength2", + "strengthaoepotextended": "lingerpotstrength2", + "strengthaoepotex": "lingerpotstrength2", + "strengthaoepotlevel2": "lingerpotstrength2", + "strongaoepot2": "lingerpotstrength2", + "strongaoepotlong": "lingerpotstrength2", + "strongaoepotextended": "lingerpotstrength2", + "strongaoepotex": "lingerpotstrength2", + "strongaoepotlevel2": "lingerpotstrength2", + "straoepot2": "lingerpotstrength2", + "straoepotlong": "lingerpotstrength2", + "straoepotextended": "lingerpotstrength2", + "straoepotex": "lingerpotstrength2", + "straoepotlevel2": "lingerpotstrength2", + "areapotionstrength2": "lingerpotstrength2", + "areapotionstrengthlong": "lingerpotstrength2", + "areapotionstrengthextended": "lingerpotstrength2", + "areapotionstrengthex": "lingerpotstrength2", + "areapotionstrengthlevel2": "lingerpotstrength2", + "areapotionstrong2": "lingerpotstrength2", + "areapotionstronglong": "lingerpotstrength2", + "areapotionstrongextended": "lingerpotstrength2", + "areapotionstrongex": "lingerpotstrength2", + "areapotionstronglevel2": "lingerpotstrength2", + "areapotionstr2": "lingerpotstrength2", + "areapotionstrlong": "lingerpotstrength2", + "areapotionstrextended": "lingerpotstrength2", + "areapotionstrex": "lingerpotstrength2", + "areapotionstrlevel2": "lingerpotstrength2", + "strengthareapotion2": "lingerpotstrength2", + "strengthareapotionlong": "lingerpotstrength2", + "strengthareapotionextended": "lingerpotstrength2", + "strengthareapotionex": "lingerpotstrength2", + "strengthareapotionlevel2": "lingerpotstrength2", + "strongareapotion2": "lingerpotstrength2", + "strongareapotionlong": "lingerpotstrength2", + "strongareapotionextended": "lingerpotstrength2", + "strongareapotionex": "lingerpotstrength2", + "strongareapotionlevel2": "lingerpotstrength2", + "strareapotion2": "lingerpotstrength2", + "strareapotionlong": "lingerpotstrength2", + "strareapotionextended": "lingerpotstrength2", + "strareapotionex": "lingerpotstrength2", + "strareapotionlevel2": "lingerpotstrength2", + "areapotstrength2": "lingerpotstrength2", + "areapotstrengthlong": "lingerpotstrength2", + "areapotstrengthextended": "lingerpotstrength2", + "areapotstrengthex": "lingerpotstrength2", + "areapotstrengthlevel2": "lingerpotstrength2", + "areapotstrong2": "lingerpotstrength2", + "areapotstronglong": "lingerpotstrength2", + "areapotstrongextended": "lingerpotstrength2", + "areapotstrongex": "lingerpotstrength2", + "areapotstronglevel2": "lingerpotstrength2", + "areapotstr2": "lingerpotstrength2", + "areapotstrlong": "lingerpotstrength2", + "areapotstrextended": "lingerpotstrength2", + "areapotstrex": "lingerpotstrength2", + "areapotstrlevel2": "lingerpotstrength2", + "strengthareapot2": "lingerpotstrength2", + "strengthareapotlong": "lingerpotstrength2", + "strengthareapotextended": "lingerpotstrength2", + "strengthareapotex": "lingerpotstrength2", + "strengthareapotlevel2": "lingerpotstrength2", + "strongareapot2": "lingerpotstrength2", + "strongareapotlong": "lingerpotstrength2", + "strongareapotextended": "lingerpotstrength2", + "strongareapotex": "lingerpotstrength2", + "strongareapotlevel2": "lingerpotstrength2", + "strareapot2": "lingerpotstrength2", + "strareapotlong": "lingerpotstrength2", + "strareapotextended": "lingerpotstrength2", + "strareapotex": "lingerpotstrength2", + "strareapotlevel2": "lingerpotstrength2", + "cloudpotionstrength2": "lingerpotstrength2", + "cloudpotionstrengthlong": "lingerpotstrength2", + "cloudpotionstrengthextended": "lingerpotstrength2", + "cloudpotionstrengthex": "lingerpotstrength2", + "cloudpotionstrengthlevel2": "lingerpotstrength2", + "cloudpotionstrong2": "lingerpotstrength2", + "cloudpotionstronglong": "lingerpotstrength2", + "cloudpotionstrongextended": "lingerpotstrength2", + "cloudpotionstrongex": "lingerpotstrength2", + "cloudpotionstronglevel2": "lingerpotstrength2", + "cloudpotionstr2": "lingerpotstrength2", + "cloudpotionstrlong": "lingerpotstrength2", + "cloudpotionstrextended": "lingerpotstrength2", + "cloudpotionstrex": "lingerpotstrength2", + "cloudpotionstrlevel2": "lingerpotstrength2", + "strengthcloudpotion2": "lingerpotstrength2", + "strengthcloudpotionlong": "lingerpotstrength2", + "strengthcloudpotionextended": "lingerpotstrength2", + "strengthcloudpotionex": "lingerpotstrength2", + "strengthcloudpotionlevel2": "lingerpotstrength2", + "strongcloudpotion2": "lingerpotstrength2", + "strongcloudpotionlong": "lingerpotstrength2", + "strongcloudpotionextended": "lingerpotstrength2", + "strongcloudpotionex": "lingerpotstrength2", + "strongcloudpotionlevel2": "lingerpotstrength2", + "strcloudpotion2": "lingerpotstrength2", + "strcloudpotionlong": "lingerpotstrength2", + "strcloudpotionextended": "lingerpotstrength2", + "strcloudpotionex": "lingerpotstrength2", + "strcloudpotionlevel2": "lingerpotstrength2", + "cloudpotstrength2": "lingerpotstrength2", + "cloudpotstrengthlong": "lingerpotstrength2", + "cloudpotstrengthextended": "lingerpotstrength2", + "cloudpotstrengthex": "lingerpotstrength2", + "cloudpotstrengthlevel2": "lingerpotstrength2", + "cloudpotstrong2": "lingerpotstrength2", + "cloudpotstronglong": "lingerpotstrength2", + "cloudpotstrongextended": "lingerpotstrength2", + "cloudpotstrongex": "lingerpotstrength2", + "cloudpotstronglevel2": "lingerpotstrength2", + "cloudpotstr2": "lingerpotstrength2", + "cloudpotstrlong": "lingerpotstrength2", + "cloudpotstrextended": "lingerpotstrength2", + "cloudpotstrex": "lingerpotstrength2", + "cloudpotstrlevel2": "lingerpotstrength2", + "strengthcloudpot2": "lingerpotstrength2", + "strengthcloudpotlong": "lingerpotstrength2", + "strengthcloudpotextended": "lingerpotstrength2", + "strengthcloudpotex": "lingerpotstrength2", + "strengthcloudpotlevel2": "lingerpotstrength2", + "strongcloudpot2": "lingerpotstrength2", + "strongcloudpotlong": "lingerpotstrength2", + "strongcloudpotextended": "lingerpotstrength2", + "strongcloudpotex": "lingerpotstrength2", + "strongcloudpotlevel2": "lingerpotstrength2", + "strcloudpot2": "lingerpotstrength2", + "strcloudpotlong": "lingerpotstrength2", + "strcloudpotextended": "lingerpotstrength2", + "strcloudpotex": "lingerpotstrength2", + "strcloudpotlevel2": "lingerpotstrength2", + "arrowstrength2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_strength", + "type": "STRENGTH", + "upgraded": false, + "extended": true + } + }, + "arrowstrengthlong": "arrowstrength2", + "arrowstrengthextended": "arrowstrength2", + "arrowstrengthex": "arrowstrength2", + "arrowstrengthlevel2": "arrowstrength2", + "arrowstrong2": "arrowstrength2", + "arrowstronglong": "arrowstrength2", + "arrowstrongextended": "arrowstrength2", + "arrowstrongex": "arrowstrength2", + "arrowstronglevel2": "arrowstrength2", + "arrowstr2": "arrowstrength2", + "arrowstrlong": "arrowstrength2", + "arrowstrextended": "arrowstrength2", + "arrowstrex": "arrowstrength2", + "arrowstrlevel2": "arrowstrength2", + "strengtharrow2": "arrowstrength2", + "strengtharrowlong": "arrowstrength2", + "strengtharrowextended": "arrowstrength2", + "strengtharrowex": "arrowstrength2", + "strengtharrowlevel2": "arrowstrength2", + "strongarrow2": "arrowstrength2", + "strongarrowlong": "arrowstrength2", + "strongarrowextended": "arrowstrength2", + "strongarrowex": "arrowstrength2", + "strongarrowlevel2": "arrowstrength2", + "strarrow2": "arrowstrength2", + "strarrowlong": "arrowstrength2", + "strarrowextended": "arrowstrength2", + "strarrowex": "arrowstrength2", + "strarrowlevel2": "arrowstrength2", + "weaknesspotion": { + "material": "POTION", + "potionData": { + "vanillaType": "weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": false + } + }, + "weakpotion": "weaknesspotion", + "wepotion": "weaknesspotion", + "weaknesspot": "weaknesspotion", + "weakpot": "weaknesspotion", + "wepot": "weaknesspotion", + "potionofweakness": "weaknesspotion", + "potionofweak": "weaknesspotion", + "potionofwe": "weaknesspotion", + "potofweakness": "weaknesspotion", + "potofweak": "weaknesspotion", + "potofwe": "weaknesspotion", + "splashweaknesspotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": false + } + }, + "splashweakpotion": "splashweaknesspotion", + "splashwepotion": "splashweaknesspotion", + "splweaknesspotion": "splashweaknesspotion", + "splweakpotion": "splashweaknesspotion", + "splwepotion": "splashweaknesspotion", + "weaknesssplashpotion": "splashweaknesspotion", + "weaksplashpotion": "splashweaknesspotion", + "wesplashpotion": "splashweaknesspotion", + "splashweaknesspot": "splashweaknesspotion", + "splashweakpot": "splashweaknesspotion", + "splashwepot": "splashweaknesspotion", + "splweaknesspot": "splashweaknesspotion", + "splweakpot": "splashweaknesspotion", + "splwepot": "splashweaknesspotion", + "weaknesssplashpot": "splashweaknesspotion", + "weaksplashpot": "splashweaknesspotion", + "wesplashpot": "splashweaknesspotion", + "lingerpotweakness": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": false + } + }, + "lingerpotweak": "lingerpotweakness", + "lingerpotwe": "lingerpotweakness", + "weaknesslingerpot": "lingerpotweakness", + "weaklingerpot": "lingerpotweakness", + "welingerpot": "lingerpotweakness", + "aoepotionweakness": "lingerpotweakness", + "aoepotionweak": "lingerpotweakness", + "aoepotionwe": "lingerpotweakness", + "weaknessaoepoiont": "lingerpotweakness", + "weakaoepoiont": "lingerpotweakness", + "weaoepoiont": "lingerpotweakness", + "aoepotweakness": "lingerpotweakness", + "aoepotweak": "lingerpotweakness", + "aoepotwe": "lingerpotweakness", + "weaknessaoepot": "lingerpotweakness", + "weakaoepot": "lingerpotweakness", + "weaoepot": "lingerpotweakness", + "areapotionweakness": "lingerpotweakness", + "areapotionweak": "lingerpotweakness", + "areapotionwe": "lingerpotweakness", + "weaknessareapotion": "lingerpotweakness", + "weakareapotion": "lingerpotweakness", + "weareapotion": "lingerpotweakness", + "areapotweakness": "lingerpotweakness", + "areapotweak": "lingerpotweakness", + "areapotwe": "lingerpotweakness", + "weaknessareapot": "lingerpotweakness", + "weakareapot": "lingerpotweakness", + "weareapot": "lingerpotweakness", + "cloudpotionweakness": "lingerpotweakness", + "cloudpotionweak": "lingerpotweakness", + "cloudpotionwe": "lingerpotweakness", + "weaknesscloudpotion": "lingerpotweakness", + "weakcloudpotion": "lingerpotweakness", + "wecloudpotion": "lingerpotweakness", + "cloudpotweakness": "lingerpotweakness", + "cloudpotweak": "lingerpotweakness", + "cloudpotwe": "lingerpotweakness", + "weaknesscloudpot": "lingerpotweakness", + "weakcloudpot": "lingerpotweakness", + "wecloudpot": "lingerpotweakness", + "arrowweakness": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": false + } + }, + "arrowweak": "arrowweakness", + "arrowwe": "arrowweakness", + "weaknessarrow": "arrowweakness", + "weakarrow": "arrowweakness", + "wearrow": "arrowweakness", + "weakness2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": true + } + }, + "weaknesslongpotion": "weakness2potion", + "weaknessextendedpotion": "weakness2potion", + "weaknessexpotion": "weakness2potion", + "weaknesslevel2potion": "weakness2potion", + "weak2potion": "weakness2potion", + "weaklongpotion": "weakness2potion", + "weakextendedpotion": "weakness2potion", + "weakexpotion": "weakness2potion", + "weaklevel2potion": "weakness2potion", + "we2potion": "weakness2potion", + "welongpotion": "weakness2potion", + "weextendedpotion": "weakness2potion", + "weexpotion": "weakness2potion", + "welevel2potion": "weakness2potion", + "weakness2pot": "weakness2potion", + "weaknesslongpot": "weakness2potion", + "weaknessextendedpot": "weakness2potion", + "weaknessexpot": "weakness2potion", + "weaknesslevel2pot": "weakness2potion", + "weak2pot": "weakness2potion", + "weaklongpot": "weakness2potion", + "weakextendedpot": "weakness2potion", + "weakexpot": "weakness2potion", + "weaklevel2pot": "weakness2potion", + "we2pot": "weakness2potion", + "welongpot": "weakness2potion", + "weextendedpot": "weakness2potion", + "weexpot": "weakness2potion", + "welevel2pot": "weakness2potion", + "potionofweakness2": "weakness2potion", + "potionofweaknesslong": "weakness2potion", + "potionofweaknessextended": "weakness2potion", + "potionofweaknessex": "weakness2potion", + "potionofweaknesslevel2": "weakness2potion", + "potionofweak2": "weakness2potion", + "potionofweaklong": "weakness2potion", + "potionofweakextended": "weakness2potion", + "potionofweakex": "weakness2potion", + "potionofweaklevel2": "weakness2potion", + "potionofwe2": "weakness2potion", + "potionofwelong": "weakness2potion", + "potionofweextended": "weakness2potion", + "potionofweex": "weakness2potion", + "potionofwelevel2": "weakness2potion", + "potofweakness2": "weakness2potion", + "potofweaknesslong": "weakness2potion", + "potofweaknessextended": "weakness2potion", + "potofweaknessex": "weakness2potion", + "potofweaknesslevel2": "weakness2potion", + "potofweak2": "weakness2potion", + "potofweaklong": "weakness2potion", + "potofweakextended": "weakness2potion", + "potofweakex": "weakness2potion", + "potofweaklevel2": "weakness2potion", + "potofwe2": "weakness2potion", + "potofwelong": "weakness2potion", + "potofweextended": "weakness2potion", + "potofweex": "weakness2potion", + "potofwelevel2": "weakness2potion", + "splashweakness2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": true + } + }, + "splashweaknesslongpotion": "splashweakness2potion", + "splashweaknessextendedpotion": "splashweakness2potion", + "splashweaknessexpotion": "splashweakness2potion", + "splashweaknesslevel2potion": "splashweakness2potion", + "splashweak2potion": "splashweakness2potion", + "splashweaklongpotion": "splashweakness2potion", + "splashweakextendedpotion": "splashweakness2potion", + "splashweakexpotion": "splashweakness2potion", + "splashweaklevel2potion": "splashweakness2potion", + "splashwe2potion": "splashweakness2potion", + "splashwelongpotion": "splashweakness2potion", + "splashweextendedpotion": "splashweakness2potion", + "splashweexpotion": "splashweakness2potion", + "splashwelevel2potion": "splashweakness2potion", + "splweakness2potion": "splashweakness2potion", + "splweaknesslongpotion": "splashweakness2potion", + "splweaknessextendedpotion": "splashweakness2potion", + "splweaknessexpotion": "splashweakness2potion", + "splweaknesslevel2potion": "splashweakness2potion", + "splweak2potion": "splashweakness2potion", + "splweaklongpotion": "splashweakness2potion", + "splweakextendedpotion": "splashweakness2potion", + "splweakexpotion": "splashweakness2potion", + "splweaklevel2potion": "splashweakness2potion", + "splwe2potion": "splashweakness2potion", + "splwelongpotion": "splashweakness2potion", + "splweextendedpotion": "splashweakness2potion", + "splweexpotion": "splashweakness2potion", + "splwelevel2potion": "splashweakness2potion", + "weakness2splashpotion": "splashweakness2potion", + "weaknesslongsplashpotion": "splashweakness2potion", + "weaknessextendedsplashpotion": "splashweakness2potion", + "weaknessexsplashpotion": "splashweakness2potion", + "weaknesslevel2splashpotion": "splashweakness2potion", + "weak2splashpotion": "splashweakness2potion", + "weaklongsplashpotion": "splashweakness2potion", + "weakextendedsplashpotion": "splashweakness2potion", + "weakexsplashpotion": "splashweakness2potion", + "weaklevel2splashpotion": "splashweakness2potion", + "we2splashpotion": "splashweakness2potion", + "welongsplashpotion": "splashweakness2potion", + "weextendedsplashpotion": "splashweakness2potion", + "weexsplashpotion": "splashweakness2potion", + "welevel2splashpotion": "splashweakness2potion", + "splashweakness2pot": "splashweakness2potion", + "splashweaknesslongpot": "splashweakness2potion", + "splashweaknessextendedpot": "splashweakness2potion", + "splashweaknessexpot": "splashweakness2potion", + "splashweaknesslevel2pot": "splashweakness2potion", + "splashweak2pot": "splashweakness2potion", + "splashweaklongpot": "splashweakness2potion", + "splashweakextendedpot": "splashweakness2potion", + "splashweakexpot": "splashweakness2potion", + "splashweaklevel2pot": "splashweakness2potion", + "splashwe2pot": "splashweakness2potion", + "splashwelongpot": "splashweakness2potion", + "splashweextendedpot": "splashweakness2potion", + "splashweexpot": "splashweakness2potion", + "splashwelevel2pot": "splashweakness2potion", + "splweakness2pot": "splashweakness2potion", + "splweaknesslongpot": "splashweakness2potion", + "splweaknessextendedpot": "splashweakness2potion", + "splweaknessexpot": "splashweakness2potion", + "splweaknesslevel2pot": "splashweakness2potion", + "splweak2pot": "splashweakness2potion", + "splweaklongpot": "splashweakness2potion", + "splweakextendedpot": "splashweakness2potion", + "splweakexpot": "splashweakness2potion", + "splweaklevel2pot": "splashweakness2potion", + "splwe2pot": "splashweakness2potion", + "splwelongpot": "splashweakness2potion", + "splweextendedpot": "splashweakness2potion", + "splweexpot": "splashweakness2potion", + "splwelevel2pot": "splashweakness2potion", + "weakness2splashpot": "splashweakness2potion", + "weaknesslongsplashpot": "splashweakness2potion", + "weaknessextendedsplashpot": "splashweakness2potion", + "weaknessexsplashpot": "splashweakness2potion", + "weaknesslevel2splashpot": "splashweakness2potion", + "weak2splashpot": "splashweakness2potion", + "weaklongsplashpot": "splashweakness2potion", + "weakextendedsplashpot": "splashweakness2potion", + "weakexsplashpot": "splashweakness2potion", + "weaklevel2splashpot": "splashweakness2potion", + "we2splashpot": "splashweakness2potion", + "welongsplashpot": "splashweakness2potion", + "weextendedsplashpot": "splashweakness2potion", + "weexsplashpot": "splashweakness2potion", + "welevel2splashpot": "splashweakness2potion", + "lingerpotweakness2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": true + } + }, + "lingerpotweaknesslong": "lingerpotweakness2", + "lingerpotweaknessextended": "lingerpotweakness2", + "lingerpotweaknessex": "lingerpotweakness2", + "lingerpotweaknesslevel2": "lingerpotweakness2", + "lingerpotweak2": "lingerpotweakness2", + "lingerpotweaklong": "lingerpotweakness2", + "lingerpotweakextended": "lingerpotweakness2", + "lingerpotweakex": "lingerpotweakness2", + "lingerpotweaklevel2": "lingerpotweakness2", + "lingerpotwe2": "lingerpotweakness2", + "lingerpotwelong": "lingerpotweakness2", + "lingerpotweextended": "lingerpotweakness2", + "lingerpotweex": "lingerpotweakness2", + "lingerpotwelevel2": "lingerpotweakness2", + "weaknesslingerpot2": "lingerpotweakness2", + "weaknesslingerpotlong": "lingerpotweakness2", + "weaknesslingerpotextended": "lingerpotweakness2", + "weaknesslingerpotex": "lingerpotweakness2", + "weaknesslingerpotlevel2": "lingerpotweakness2", + "weaklingerpot2": "lingerpotweakness2", + "weaklingerpotlong": "lingerpotweakness2", + "weaklingerpotextended": "lingerpotweakness2", + "weaklingerpotex": "lingerpotweakness2", + "weaklingerpotlevel2": "lingerpotweakness2", + "welingerpot2": "lingerpotweakness2", + "welingerpotlong": "lingerpotweakness2", + "welingerpotextended": "lingerpotweakness2", + "welingerpotex": "lingerpotweakness2", + "welingerpotlevel2": "lingerpotweakness2", + "aoepotionweakness2": "lingerpotweakness2", + "aoepotionweaknesslong": "lingerpotweakness2", + "aoepotionweaknessextended": "lingerpotweakness2", + "aoepotionweaknessex": "lingerpotweakness2", + "aoepotionweaknesslevel2": "lingerpotweakness2", + "aoepotionweak2": "lingerpotweakness2", + "aoepotionweaklong": "lingerpotweakness2", + "aoepotionweakextended": "lingerpotweakness2", + "aoepotionweakex": "lingerpotweakness2", + "aoepotionweaklevel2": "lingerpotweakness2", + "aoepotionwe2": "lingerpotweakness2", + "aoepotionwelong": "lingerpotweakness2", + "aoepotionweextended": "lingerpotweakness2", + "aoepotionweex": "lingerpotweakness2", + "aoepotionwelevel2": "lingerpotweakness2", + "weaknessaoepoiont2": "lingerpotweakness2", + "weaknessaoepoiontlong": "lingerpotweakness2", + "weaknessaoepoiontextended": "lingerpotweakness2", + "weaknessaoepoiontex": "lingerpotweakness2", + "weaknessaoepoiontlevel2": "lingerpotweakness2", + "weakaoepoiont2": "lingerpotweakness2", + "weakaoepoiontlong": "lingerpotweakness2", + "weakaoepoiontextended": "lingerpotweakness2", + "weakaoepoiontex": "lingerpotweakness2", + "weakaoepoiontlevel2": "lingerpotweakness2", + "weaoepoiont2": "lingerpotweakness2", + "weaoepoiontlong": "lingerpotweakness2", + "weaoepoiontextended": "lingerpotweakness2", + "weaoepoiontex": "lingerpotweakness2", + "weaoepoiontlevel2": "lingerpotweakness2", + "aoepotweakness2": "lingerpotweakness2", + "aoepotweaknesslong": "lingerpotweakness2", + "aoepotweaknessextended": "lingerpotweakness2", + "aoepotweaknessex": "lingerpotweakness2", + "aoepotweaknesslevel2": "lingerpotweakness2", + "aoepotweak2": "lingerpotweakness2", + "aoepotweaklong": "lingerpotweakness2", + "aoepotweakextended": "lingerpotweakness2", + "aoepotweakex": "lingerpotweakness2", + "aoepotweaklevel2": "lingerpotweakness2", + "aoepotwe2": "lingerpotweakness2", + "aoepotwelong": "lingerpotweakness2", + "aoepotweextended": "lingerpotweakness2", + "aoepotweex": "lingerpotweakness2", + "aoepotwelevel2": "lingerpotweakness2", + "weaknessaoepot2": "lingerpotweakness2", + "weaknessaoepotlong": "lingerpotweakness2", + "weaknessaoepotextended": "lingerpotweakness2", + "weaknessaoepotex": "lingerpotweakness2", + "weaknessaoepotlevel2": "lingerpotweakness2", + "weakaoepot2": "lingerpotweakness2", + "weakaoepotlong": "lingerpotweakness2", + "weakaoepotextended": "lingerpotweakness2", + "weakaoepotex": "lingerpotweakness2", + "weakaoepotlevel2": "lingerpotweakness2", + "weaoepot2": "lingerpotweakness2", + "weaoepotlong": "lingerpotweakness2", + "weaoepotextended": "lingerpotweakness2", + "weaoepotex": "lingerpotweakness2", + "weaoepotlevel2": "lingerpotweakness2", + "areapotionweakness2": "lingerpotweakness2", + "areapotionweaknesslong": "lingerpotweakness2", + "areapotionweaknessextended": "lingerpotweakness2", + "areapotionweaknessex": "lingerpotweakness2", + "areapotionweaknesslevel2": "lingerpotweakness2", + "areapotionweak2": "lingerpotweakness2", + "areapotionweaklong": "lingerpotweakness2", + "areapotionweakextended": "lingerpotweakness2", + "areapotionweakex": "lingerpotweakness2", + "areapotionweaklevel2": "lingerpotweakness2", + "areapotionwe2": "lingerpotweakness2", + "areapotionwelong": "lingerpotweakness2", + "areapotionweextended": "lingerpotweakness2", + "areapotionweex": "lingerpotweakness2", + "areapotionwelevel2": "lingerpotweakness2", + "weaknessareapotion2": "lingerpotweakness2", + "weaknessareapotionlong": "lingerpotweakness2", + "weaknessareapotionextended": "lingerpotweakness2", + "weaknessareapotionex": "lingerpotweakness2", + "weaknessareapotionlevel2": "lingerpotweakness2", + "weakareapotion2": "lingerpotweakness2", + "weakareapotionlong": "lingerpotweakness2", + "weakareapotionextended": "lingerpotweakness2", + "weakareapotionex": "lingerpotweakness2", + "weakareapotionlevel2": "lingerpotweakness2", + "weareapotion2": "lingerpotweakness2", + "weareapotionlong": "lingerpotweakness2", + "weareapotionextended": "lingerpotweakness2", + "weareapotionex": "lingerpotweakness2", + "weareapotionlevel2": "lingerpotweakness2", + "areapotweakness2": "lingerpotweakness2", + "areapotweaknesslong": "lingerpotweakness2", + "areapotweaknessextended": "lingerpotweakness2", + "areapotweaknessex": "lingerpotweakness2", + "areapotweaknesslevel2": "lingerpotweakness2", + "areapotweak2": "lingerpotweakness2", + "areapotweaklong": "lingerpotweakness2", + "areapotweakextended": "lingerpotweakness2", + "areapotweakex": "lingerpotweakness2", + "areapotweaklevel2": "lingerpotweakness2", + "areapotwe2": "lingerpotweakness2", + "areapotwelong": "lingerpotweakness2", + "areapotweextended": "lingerpotweakness2", + "areapotweex": "lingerpotweakness2", + "areapotwelevel2": "lingerpotweakness2", + "weaknessareapot2": "lingerpotweakness2", + "weaknessareapotlong": "lingerpotweakness2", + "weaknessareapotextended": "lingerpotweakness2", + "weaknessareapotex": "lingerpotweakness2", + "weaknessareapotlevel2": "lingerpotweakness2", + "weakareapot2": "lingerpotweakness2", + "weakareapotlong": "lingerpotweakness2", + "weakareapotextended": "lingerpotweakness2", + "weakareapotex": "lingerpotweakness2", + "weakareapotlevel2": "lingerpotweakness2", + "weareapot2": "lingerpotweakness2", + "weareapotlong": "lingerpotweakness2", + "weareapotextended": "lingerpotweakness2", + "weareapotex": "lingerpotweakness2", + "weareapotlevel2": "lingerpotweakness2", + "cloudpotionweakness2": "lingerpotweakness2", + "cloudpotionweaknesslong": "lingerpotweakness2", + "cloudpotionweaknessextended": "lingerpotweakness2", + "cloudpotionweaknessex": "lingerpotweakness2", + "cloudpotionweaknesslevel2": "lingerpotweakness2", + "cloudpotionweak2": "lingerpotweakness2", + "cloudpotionweaklong": "lingerpotweakness2", + "cloudpotionweakextended": "lingerpotweakness2", + "cloudpotionweakex": "lingerpotweakness2", + "cloudpotionweaklevel2": "lingerpotweakness2", + "cloudpotionwe2": "lingerpotweakness2", + "cloudpotionwelong": "lingerpotweakness2", + "cloudpotionweextended": "lingerpotweakness2", + "cloudpotionweex": "lingerpotweakness2", + "cloudpotionwelevel2": "lingerpotweakness2", + "weaknesscloudpotion2": "lingerpotweakness2", + "weaknesscloudpotionlong": "lingerpotweakness2", + "weaknesscloudpotionextended": "lingerpotweakness2", + "weaknesscloudpotionex": "lingerpotweakness2", + "weaknesscloudpotionlevel2": "lingerpotweakness2", + "weakcloudpotion2": "lingerpotweakness2", + "weakcloudpotionlong": "lingerpotweakness2", + "weakcloudpotionextended": "lingerpotweakness2", + "weakcloudpotionex": "lingerpotweakness2", + "weakcloudpotionlevel2": "lingerpotweakness2", + "wecloudpotion2": "lingerpotweakness2", + "wecloudpotionlong": "lingerpotweakness2", + "wecloudpotionextended": "lingerpotweakness2", + "wecloudpotionex": "lingerpotweakness2", + "wecloudpotionlevel2": "lingerpotweakness2", + "cloudpotweakness2": "lingerpotweakness2", + "cloudpotweaknesslong": "lingerpotweakness2", + "cloudpotweaknessextended": "lingerpotweakness2", + "cloudpotweaknessex": "lingerpotweakness2", + "cloudpotweaknesslevel2": "lingerpotweakness2", + "cloudpotweak2": "lingerpotweakness2", + "cloudpotweaklong": "lingerpotweakness2", + "cloudpotweakextended": "lingerpotweakness2", + "cloudpotweakex": "lingerpotweakness2", + "cloudpotweaklevel2": "lingerpotweakness2", + "cloudpotwe2": "lingerpotweakness2", + "cloudpotwelong": "lingerpotweakness2", + "cloudpotweextended": "lingerpotweakness2", + "cloudpotweex": "lingerpotweakness2", + "cloudpotwelevel2": "lingerpotweakness2", + "weaknesscloudpot2": "lingerpotweakness2", + "weaknesscloudpotlong": "lingerpotweakness2", + "weaknesscloudpotextended": "lingerpotweakness2", + "weaknesscloudpotex": "lingerpotweakness2", + "weaknesscloudpotlevel2": "lingerpotweakness2", + "weakcloudpot2": "lingerpotweakness2", + "weakcloudpotlong": "lingerpotweakness2", + "weakcloudpotextended": "lingerpotweakness2", + "weakcloudpotex": "lingerpotweakness2", + "weakcloudpotlevel2": "lingerpotweakness2", + "wecloudpot2": "lingerpotweakness2", + "wecloudpotlong": "lingerpotweakness2", + "wecloudpotextended": "lingerpotweakness2", + "wecloudpotex": "lingerpotweakness2", + "wecloudpotlevel2": "lingerpotweakness2", + "arrowweakness2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_weakness", + "type": "WEAKNESS", + "upgraded": false, + "extended": true + } + }, + "arrowweaknesslong": "arrowweakness2", + "arrowweaknessextended": "arrowweakness2", + "arrowweaknessex": "arrowweakness2", + "arrowweaknesslevel2": "arrowweakness2", + "arrowweak2": "arrowweakness2", + "arrowweaklong": "arrowweakness2", + "arrowweakextended": "arrowweakness2", + "arrowweakex": "arrowweakness2", + "arrowweaklevel2": "arrowweakness2", + "arrowwe2": "arrowweakness2", + "arrowwelong": "arrowweakness2", + "arrowweextended": "arrowweakness2", + "arrowweex": "arrowweakness2", + "arrowwelevel2": "arrowweakness2", + "weaknessarrow2": "arrowweakness2", + "weaknessarrowlong": "arrowweakness2", + "weaknessarrowextended": "arrowweakness2", + "weaknessarrowex": "arrowweakness2", + "weaknessarrowlevel2": "arrowweakness2", + "weakarrow2": "arrowweakness2", + "weakarrowlong": "arrowweakness2", + "weakarrowextended": "arrowweakness2", + "weakarrowex": "arrowweakness2", + "weakarrowlevel2": "arrowweakness2", + "wearrow2": "arrowweakness2", + "wearrowlong": "arrowweakness2", + "wearrowextended": "arrowweakness2", + "wearrowex": "arrowweakness2", + "wearrowlevel2": "arrowweakness2", + "luckpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "luck", + "type": "LUCK", + "upgraded": false, + "extended": false + } + }, + "luckypotion": "luckpotion", + "luckpot": "luckpotion", + "luckypot": "luckpotion", + "potionofluck": "luckpotion", + "potionoflucky": "luckpotion", + "potofluck": "luckpotion", + "potoflucky": "luckpotion", + "splashluckpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "luck", + "type": "LUCK", + "upgraded": false, + "extended": false + } + }, + "splashluckypotion": "splashluckpotion", + "splluckpotion": "splashluckpotion", + "splluckypotion": "splashluckpotion", + "lucksplashpotion": "splashluckpotion", + "luckysplashpotion": "splashluckpotion", + "splashluckpot": "splashluckpotion", + "splashluckypot": "splashluckpotion", + "splluckpot": "splashluckpotion", + "splluckypot": "splashluckpotion", + "lucksplashpot": "splashluckpotion", + "luckysplashpot": "splashluckpotion", + "lingerpotluck": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "luck", + "type": "LUCK", + "upgraded": false, + "extended": false + } + }, + "lingerpotlucky": "lingerpotluck", + "lucklingerpot": "lingerpotluck", + "luckylingerpot": "lingerpotluck", + "aoepotionluck": "lingerpotluck", + "aoepotionlucky": "lingerpotluck", + "luckaoepoiont": "lingerpotluck", + "luckyaoepoiont": "lingerpotluck", + "aoepotluck": "lingerpotluck", + "aoepotlucky": "lingerpotluck", + "luckaoepot": "lingerpotluck", + "luckyaoepot": "lingerpotluck", + "areapotionluck": "lingerpotluck", + "areapotionlucky": "lingerpotluck", + "luckareapotion": "lingerpotluck", + "luckyareapotion": "lingerpotluck", + "areapotluck": "lingerpotluck", + "areapotlucky": "lingerpotluck", + "luckareapot": "lingerpotluck", + "luckyareapot": "lingerpotluck", + "cloudpotionluck": "lingerpotluck", + "cloudpotionlucky": "lingerpotluck", + "luckcloudpotion": "lingerpotluck", + "luckycloudpotion": "lingerpotluck", + "cloudpotluck": "lingerpotluck", + "cloudpotlucky": "lingerpotluck", + "luckcloudpot": "lingerpotluck", + "luckycloudpot": "lingerpotluck", + "arrowluck": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "luck", + "type": "LUCK", + "upgraded": false, + "extended": false + } + }, + "arrowlucky": "arrowluck", + "luckarrow": "arrowluck", + "luckyarrow": "arrowluck", + "turtlemasterpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": false + } + }, + "turtlepotion": "turtlemasterpotion", + "tmpotion": "turtlemasterpotion", + "turtlemasterpot": "turtlemasterpotion", + "turtlepot": "turtlemasterpotion", + "tmpot": "turtlemasterpotion", + "potionofturtlemaster": "turtlemasterpotion", + "potionofturtle": "turtlemasterpotion", + "potionoftm": "turtlemasterpotion", + "potofturtlemaster": "turtlemasterpotion", + "potofturtle": "turtlemasterpotion", + "potoftm": "turtlemasterpotion", + "splashturtlemasterpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": false + } + }, + "splashturtlepotion": "splashturtlemasterpotion", + "splashtmpotion": "splashturtlemasterpotion", + "splturtlemasterpotion": "splashturtlemasterpotion", + "splturtlepotion": "splashturtlemasterpotion", + "spltmpotion": "splashturtlemasterpotion", + "turtlemastersplashpotion": "splashturtlemasterpotion", + "turtlesplashpotion": "splashturtlemasterpotion", + "tmsplashpotion": "splashturtlemasterpotion", + "splashturtlemasterpot": "splashturtlemasterpotion", + "splashturtlepot": "splashturtlemasterpotion", + "splashtmpot": "splashturtlemasterpotion", + "splturtlemasterpot": "splashturtlemasterpotion", + "splturtlepot": "splashturtlemasterpotion", + "spltmpot": "splashturtlemasterpotion", + "turtlemastersplashpot": "splashturtlemasterpotion", + "turtlesplashpot": "splashturtlemasterpotion", + "tmsplashpot": "splashturtlemasterpotion", + "lingerpotturtlemaster": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": false + } + }, + "lingerpotturtle": "lingerpotturtlemaster", + "lingerpottm": "lingerpotturtlemaster", + "turtlemasterlingerpot": "lingerpotturtlemaster", + "turtlelingerpot": "lingerpotturtlemaster", + "tmlingerpot": "lingerpotturtlemaster", + "aoepotionturtlemaster": "lingerpotturtlemaster", + "aoepotionturtle": "lingerpotturtlemaster", + "aoepotiontm": "lingerpotturtlemaster", + "turtlemasteraoepoiont": "lingerpotturtlemaster", + "turtleaoepoiont": "lingerpotturtlemaster", + "tmaoepoiont": "lingerpotturtlemaster", + "aoepotturtlemaster": "lingerpotturtlemaster", + "aoepotturtle": "lingerpotturtlemaster", + "aoepottm": "lingerpotturtlemaster", + "turtlemasteraoepot": "lingerpotturtlemaster", + "turtleaoepot": "lingerpotturtlemaster", + "tmaoepot": "lingerpotturtlemaster", + "areapotionturtlemaster": "lingerpotturtlemaster", + "areapotionturtle": "lingerpotturtlemaster", + "areapotiontm": "lingerpotturtlemaster", + "turtlemasterareapotion": "lingerpotturtlemaster", + "turtleareapotion": "lingerpotturtlemaster", + "tmareapotion": "lingerpotturtlemaster", + "areapotturtlemaster": "lingerpotturtlemaster", + "areapotturtle": "lingerpotturtlemaster", + "areapottm": "lingerpotturtlemaster", + "turtlemasterareapot": "lingerpotturtlemaster", + "turtleareapot": "lingerpotturtlemaster", + "tmareapot": "lingerpotturtlemaster", + "cloudpotionturtlemaster": "lingerpotturtlemaster", + "cloudpotionturtle": "lingerpotturtlemaster", + "cloudpotiontm": "lingerpotturtlemaster", + "turtlemastercloudpotion": "lingerpotturtlemaster", + "turtlecloudpotion": "lingerpotturtlemaster", + "tmcloudpotion": "lingerpotturtlemaster", + "cloudpotturtlemaster": "lingerpotturtlemaster", + "cloudpotturtle": "lingerpotturtlemaster", + "cloudpottm": "lingerpotturtlemaster", + "turtlemastercloudpot": "lingerpotturtlemaster", + "turtlecloudpot": "lingerpotturtlemaster", + "tmcloudpot": "lingerpotturtlemaster", + "arrowturtlemaster": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": false + } + }, + "arrowturtle": "arrowturtlemaster", + "arrowtm": "arrowturtlemaster", + "turtlemasterarrow": "arrowturtlemaster", + "turtlearrow": "arrowturtlemaster", + "tmarrow": "arrowturtlemaster", + "turtlemasteriipotion": { + "material": "POTION", + "potionData": { + "vanillaType": "strong_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": true, + "extended": false + } + }, + "turtlemasterstrongpotion": "turtlemasteriipotion", + "turtlemasterleveliipotion": "turtlemasteriipotion", + "turtleiipotion": "turtlemasteriipotion", + "turtlestrongpotion": "turtlemasteriipotion", + "turtleleveliipotion": "turtlemasteriipotion", + "tmiipotion": "turtlemasteriipotion", + "tmstrongpotion": "turtlemasteriipotion", + "tmleveliipotion": "turtlemasteriipotion", + "turtlemasteriipot": "turtlemasteriipotion", + "turtlemasterstrongpot": "turtlemasteriipotion", + "turtlemasterleveliipot": "turtlemasteriipotion", + "turtleiipot": "turtlemasteriipotion", + "turtlestrongpot": "turtlemasteriipotion", + "turtleleveliipot": "turtlemasteriipotion", + "tmiipot": "turtlemasteriipotion", + "tmstrongpot": "turtlemasteriipotion", + "tmleveliipot": "turtlemasteriipotion", + "potionofturtlemasterii": "turtlemasteriipotion", + "potionofturtlemasterstrong": "turtlemasteriipotion", + "potionofturtlemasterlevelii": "turtlemasteriipotion", + "potionofturtleii": "turtlemasteriipotion", + "potionofturtlestrong": "turtlemasteriipotion", + "potionofturtlelevelii": "turtlemasteriipotion", + "potionoftmii": "turtlemasteriipotion", + "potionoftmstrong": "turtlemasteriipotion", + "potionoftmlevelii": "turtlemasteriipotion", + "potofturtlemasterii": "turtlemasteriipotion", + "potofturtlemasterstrong": "turtlemasteriipotion", + "potofturtlemasterlevelii": "turtlemasteriipotion", + "potofturtleii": "turtlemasteriipotion", + "potofturtlestrong": "turtlemasteriipotion", + "potofturtlelevelii": "turtlemasteriipotion", + "potoftmii": "turtlemasteriipotion", + "potoftmstrong": "turtlemasteriipotion", + "potoftmlevelii": "turtlemasteriipotion", + "splashturtlemasteriipotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "strong_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": true, + "extended": false + } + }, + "splashturtlemasterstrongpotion": "splashturtlemasteriipotion", + "splashturtlemasterleveliipotion": "splashturtlemasteriipotion", + "splashturtleiipotion": "splashturtlemasteriipotion", + "splashturtlestrongpotion": "splashturtlemasteriipotion", + "splashturtleleveliipotion": "splashturtlemasteriipotion", + "splashtmiipotion": "splashturtlemasteriipotion", + "splashtmstrongpotion": "splashturtlemasteriipotion", + "splashtmleveliipotion": "splashturtlemasteriipotion", + "splturtlemasteriipotion": "splashturtlemasteriipotion", + "splturtlemasterstrongpotion": "splashturtlemasteriipotion", + "splturtlemasterleveliipotion": "splashturtlemasteriipotion", + "splturtleiipotion": "splashturtlemasteriipotion", + "splturtlestrongpotion": "splashturtlemasteriipotion", + "splturtleleveliipotion": "splashturtlemasteriipotion", + "spltmiipotion": "splashturtlemasteriipotion", + "spltmstrongpotion": "splashturtlemasteriipotion", + "spltmleveliipotion": "splashturtlemasteriipotion", + "turtlemasteriisplashpotion": "splashturtlemasteriipotion", + "turtlemasterstrongsplashpotion": "splashturtlemasteriipotion", + "turtlemasterleveliisplashpotion": "splashturtlemasteriipotion", + "turtleiisplashpotion": "splashturtlemasteriipotion", + "turtlestrongsplashpotion": "splashturtlemasteriipotion", + "turtleleveliisplashpotion": "splashturtlemasteriipotion", + "tmiisplashpotion": "splashturtlemasteriipotion", + "tmstrongsplashpotion": "splashturtlemasteriipotion", + "tmleveliisplashpotion": "splashturtlemasteriipotion", + "splashturtlemasteriipot": "splashturtlemasteriipotion", + "splashturtlemasterstrongpot": "splashturtlemasteriipotion", + "splashturtlemasterleveliipot": "splashturtlemasteriipotion", + "splashturtleiipot": "splashturtlemasteriipotion", + "splashturtlestrongpot": "splashturtlemasteriipotion", + "splashturtleleveliipot": "splashturtlemasteriipotion", + "splashtmiipot": "splashturtlemasteriipotion", + "splashtmstrongpot": "splashturtlemasteriipotion", + "splashtmleveliipot": "splashturtlemasteriipotion", + "splturtlemasteriipot": "splashturtlemasteriipotion", + "splturtlemasterstrongpot": "splashturtlemasteriipotion", + "splturtlemasterleveliipot": "splashturtlemasteriipotion", + "splturtleiipot": "splashturtlemasteriipotion", + "splturtlestrongpot": "splashturtlemasteriipotion", + "splturtleleveliipot": "splashturtlemasteriipotion", + "spltmiipot": "splashturtlemasteriipotion", + "spltmstrongpot": "splashturtlemasteriipotion", + "spltmleveliipot": "splashturtlemasteriipotion", + "turtlemasteriisplashpot": "splashturtlemasteriipotion", + "turtlemasterstrongsplashpot": "splashturtlemasteriipotion", + "turtlemasterleveliisplashpot": "splashturtlemasteriipotion", + "turtleiisplashpot": "splashturtlemasteriipotion", + "turtlestrongsplashpot": "splashturtlemasteriipotion", + "turtleleveliisplashpot": "splashturtlemasteriipotion", + "tmiisplashpot": "splashturtlemasteriipotion", + "tmstrongsplashpot": "splashturtlemasteriipotion", + "tmleveliisplashpot": "splashturtlemasteriipotion", + "lingerpotturtlemasterii": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "strong_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": true, + "extended": false + } + }, + "lingerpotturtlemasterstrong": "lingerpotturtlemasterii", + "lingerpotturtlemasterlevelii": "lingerpotturtlemasterii", + "lingerpotturtleii": "lingerpotturtlemasterii", + "lingerpotturtlestrong": "lingerpotturtlemasterii", + "lingerpotturtlelevelii": "lingerpotturtlemasterii", + "lingerpottmii": "lingerpotturtlemasterii", + "lingerpottmstrong": "lingerpotturtlemasterii", + "lingerpottmlevelii": "lingerpotturtlemasterii", + "turtlemasterlingerpotii": "lingerpotturtlemasterii", + "turtlemasterlingerpotstrong": "lingerpotturtlemasterii", + "turtlemasterlingerpotlevelii": "lingerpotturtlemasterii", + "turtlelingerpotii": "lingerpotturtlemasterii", + "turtlelingerpotstrong": "lingerpotturtlemasterii", + "turtlelingerpotlevelii": "lingerpotturtlemasterii", + "tmlingerpotii": "lingerpotturtlemasterii", + "tmlingerpotstrong": "lingerpotturtlemasterii", + "tmlingerpotlevelii": "lingerpotturtlemasterii", + "aoepotionturtlemasterii": "lingerpotturtlemasterii", + "aoepotionturtlemasterstrong": "lingerpotturtlemasterii", + "aoepotionturtlemasterlevelii": "lingerpotturtlemasterii", + "aoepotionturtleii": "lingerpotturtlemasterii", + "aoepotionturtlestrong": "lingerpotturtlemasterii", + "aoepotionturtlelevelii": "lingerpotturtlemasterii", + "aoepotiontmii": "lingerpotturtlemasterii", + "aoepotiontmstrong": "lingerpotturtlemasterii", + "aoepotiontmlevelii": "lingerpotturtlemasterii", + "turtlemasteraoepoiontii": "lingerpotturtlemasterii", + "turtlemasteraoepoiontstrong": "lingerpotturtlemasterii", + "turtlemasteraoepoiontlevelii": "lingerpotturtlemasterii", + "turtleaoepoiontii": "lingerpotturtlemasterii", + "turtleaoepoiontstrong": "lingerpotturtlemasterii", + "turtleaoepoiontlevelii": "lingerpotturtlemasterii", + "tmaoepoiontii": "lingerpotturtlemasterii", + "tmaoepoiontstrong": "lingerpotturtlemasterii", + "tmaoepoiontlevelii": "lingerpotturtlemasterii", + "aoepotturtlemasterii": "lingerpotturtlemasterii", + "aoepotturtlemasterstrong": "lingerpotturtlemasterii", + "aoepotturtlemasterlevelii": "lingerpotturtlemasterii", + "aoepotturtleii": "lingerpotturtlemasterii", + "aoepotturtlestrong": "lingerpotturtlemasterii", + "aoepotturtlelevelii": "lingerpotturtlemasterii", + "aoepottmii": "lingerpotturtlemasterii", + "aoepottmstrong": "lingerpotturtlemasterii", + "aoepottmlevelii": "lingerpotturtlemasterii", + "turtlemasteraoepotii": "lingerpotturtlemasterii", + "turtlemasteraoepotstrong": "lingerpotturtlemasterii", + "turtlemasteraoepotlevelii": "lingerpotturtlemasterii", + "turtleaoepotii": "lingerpotturtlemasterii", + "turtleaoepotstrong": "lingerpotturtlemasterii", + "turtleaoepotlevelii": "lingerpotturtlemasterii", + "tmaoepotii": "lingerpotturtlemasterii", + "tmaoepotstrong": "lingerpotturtlemasterii", + "tmaoepotlevelii": "lingerpotturtlemasterii", + "areapotionturtlemasterii": "lingerpotturtlemasterii", + "areapotionturtlemasterstrong": "lingerpotturtlemasterii", + "areapotionturtlemasterlevelii": "lingerpotturtlemasterii", + "areapotionturtleii": "lingerpotturtlemasterii", + "areapotionturtlestrong": "lingerpotturtlemasterii", + "areapotionturtlelevelii": "lingerpotturtlemasterii", + "areapotiontmii": "lingerpotturtlemasterii", + "areapotiontmstrong": "lingerpotturtlemasterii", + "areapotiontmlevelii": "lingerpotturtlemasterii", + "turtlemasterareapotionii": "lingerpotturtlemasterii", + "turtlemasterareapotionstrong": "lingerpotturtlemasterii", + "turtlemasterareapotionlevelii": "lingerpotturtlemasterii", + "turtleareapotionii": "lingerpotturtlemasterii", + "turtleareapotionstrong": "lingerpotturtlemasterii", + "turtleareapotionlevelii": "lingerpotturtlemasterii", + "tmareapotionii": "lingerpotturtlemasterii", + "tmareapotionstrong": "lingerpotturtlemasterii", + "tmareapotionlevelii": "lingerpotturtlemasterii", + "areapotturtlemasterii": "lingerpotturtlemasterii", + "areapotturtlemasterstrong": "lingerpotturtlemasterii", + "areapotturtlemasterlevelii": "lingerpotturtlemasterii", + "areapotturtleii": "lingerpotturtlemasterii", + "areapotturtlestrong": "lingerpotturtlemasterii", + "areapotturtlelevelii": "lingerpotturtlemasterii", + "areapottmii": "lingerpotturtlemasterii", + "areapottmstrong": "lingerpotturtlemasterii", + "areapottmlevelii": "lingerpotturtlemasterii", + "turtlemasterareapotii": "lingerpotturtlemasterii", + "turtlemasterareapotstrong": "lingerpotturtlemasterii", + "turtlemasterareapotlevelii": "lingerpotturtlemasterii", + "turtleareapotii": "lingerpotturtlemasterii", + "turtleareapotstrong": "lingerpotturtlemasterii", + "turtleareapotlevelii": "lingerpotturtlemasterii", + "tmareapotii": "lingerpotturtlemasterii", + "tmareapotstrong": "lingerpotturtlemasterii", + "tmareapotlevelii": "lingerpotturtlemasterii", + "cloudpotionturtlemasterii": "lingerpotturtlemasterii", + "cloudpotionturtlemasterstrong": "lingerpotturtlemasterii", + "cloudpotionturtlemasterlevelii": "lingerpotturtlemasterii", + "cloudpotionturtleii": "lingerpotturtlemasterii", + "cloudpotionturtlestrong": "lingerpotturtlemasterii", + "cloudpotionturtlelevelii": "lingerpotturtlemasterii", + "cloudpotiontmii": "lingerpotturtlemasterii", + "cloudpotiontmstrong": "lingerpotturtlemasterii", + "cloudpotiontmlevelii": "lingerpotturtlemasterii", + "turtlemastercloudpotionii": "lingerpotturtlemasterii", + "turtlemastercloudpotionstrong": "lingerpotturtlemasterii", + "turtlemastercloudpotionlevelii": "lingerpotturtlemasterii", + "turtlecloudpotionii": "lingerpotturtlemasterii", + "turtlecloudpotionstrong": "lingerpotturtlemasterii", + "turtlecloudpotionlevelii": "lingerpotturtlemasterii", + "tmcloudpotionii": "lingerpotturtlemasterii", + "tmcloudpotionstrong": "lingerpotturtlemasterii", + "tmcloudpotionlevelii": "lingerpotturtlemasterii", + "cloudpotturtlemasterii": "lingerpotturtlemasterii", + "cloudpotturtlemasterstrong": "lingerpotturtlemasterii", + "cloudpotturtlemasterlevelii": "lingerpotturtlemasterii", + "cloudpotturtleii": "lingerpotturtlemasterii", + "cloudpotturtlestrong": "lingerpotturtlemasterii", + "cloudpotturtlelevelii": "lingerpotturtlemasterii", + "cloudpottmii": "lingerpotturtlemasterii", + "cloudpottmstrong": "lingerpotturtlemasterii", + "cloudpottmlevelii": "lingerpotturtlemasterii", + "turtlemastercloudpotii": "lingerpotturtlemasterii", + "turtlemastercloudpotstrong": "lingerpotturtlemasterii", + "turtlemastercloudpotlevelii": "lingerpotturtlemasterii", + "turtlecloudpotii": "lingerpotturtlemasterii", + "turtlecloudpotstrong": "lingerpotturtlemasterii", + "turtlecloudpotlevelii": "lingerpotturtlemasterii", + "tmcloudpotii": "lingerpotturtlemasterii", + "tmcloudpotstrong": "lingerpotturtlemasterii", + "tmcloudpotlevelii": "lingerpotturtlemasterii", + "arrowturtlemasterii": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "strong_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": true, + "extended": false + } + }, + "arrowturtlemasterstrong": "arrowturtlemasterii", + "arrowturtlemasterlevelii": "arrowturtlemasterii", + "arrowturtleii": "arrowturtlemasterii", + "arrowturtlestrong": "arrowturtlemasterii", + "arrowturtlelevelii": "arrowturtlemasterii", + "arrowtmii": "arrowturtlemasterii", + "arrowtmstrong": "arrowturtlemasterii", + "arrowtmlevelii": "arrowturtlemasterii", + "turtlemasterarrowii": "arrowturtlemasterii", + "turtlemasterarrowstrong": "arrowturtlemasterii", + "turtlemasterarrowlevelii": "arrowturtlemasterii", + "turtlearrowii": "arrowturtlemasterii", + "turtlearrowstrong": "arrowturtlemasterii", + "turtlearrowlevelii": "arrowturtlemasterii", + "tmarrowii": "arrowturtlemasterii", + "tmarrowstrong": "arrowturtlemasterii", + "tmarrowlevelii": "arrowturtlemasterii", + "turtlemaster2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": true + } + }, + "turtlemasterlongpotion": "turtlemaster2potion", + "turtlemasterextendedpotion": "turtlemaster2potion", + "turtlemasterexpotion": "turtlemaster2potion", + "turtlemasterlevel2potion": "turtlemaster2potion", + "turtle2potion": "turtlemaster2potion", + "turtlelongpotion": "turtlemaster2potion", + "turtleextendedpotion": "turtlemaster2potion", + "turtleexpotion": "turtlemaster2potion", + "turtlelevel2potion": "turtlemaster2potion", + "tm2potion": "turtlemaster2potion", + "tmlongpotion": "turtlemaster2potion", + "tmextendedpotion": "turtlemaster2potion", + "tmexpotion": "turtlemaster2potion", + "tmlevel2potion": "turtlemaster2potion", + "turtlemaster2pot": "turtlemaster2potion", + "turtlemasterlongpot": "turtlemaster2potion", + "turtlemasterextendedpot": "turtlemaster2potion", + "turtlemasterexpot": "turtlemaster2potion", + "turtlemasterlevel2pot": "turtlemaster2potion", + "turtle2pot": "turtlemaster2potion", + "turtlelongpot": "turtlemaster2potion", + "turtleextendedpot": "turtlemaster2potion", + "turtleexpot": "turtlemaster2potion", + "turtlelevel2pot": "turtlemaster2potion", + "tm2pot": "turtlemaster2potion", + "tmlongpot": "turtlemaster2potion", + "tmextendedpot": "turtlemaster2potion", + "tmexpot": "turtlemaster2potion", + "tmlevel2pot": "turtlemaster2potion", + "potionofturtlemaster2": "turtlemaster2potion", + "potionofturtlemasterlong": "turtlemaster2potion", + "potionofturtlemasterextended": "turtlemaster2potion", + "potionofturtlemasterex": "turtlemaster2potion", + "potionofturtlemasterlevel2": "turtlemaster2potion", + "potionofturtle2": "turtlemaster2potion", + "potionofturtlelong": "turtlemaster2potion", + "potionofturtleextended": "turtlemaster2potion", + "potionofturtleex": "turtlemaster2potion", + "potionofturtlelevel2": "turtlemaster2potion", + "potionoftm2": "turtlemaster2potion", + "potionoftmlong": "turtlemaster2potion", + "potionoftmextended": "turtlemaster2potion", + "potionoftmex": "turtlemaster2potion", + "potionoftmlevel2": "turtlemaster2potion", + "potofturtlemaster2": "turtlemaster2potion", + "potofturtlemasterlong": "turtlemaster2potion", + "potofturtlemasterextended": "turtlemaster2potion", + "potofturtlemasterex": "turtlemaster2potion", + "potofturtlemasterlevel2": "turtlemaster2potion", + "potofturtle2": "turtlemaster2potion", + "potofturtlelong": "turtlemaster2potion", + "potofturtleextended": "turtlemaster2potion", + "potofturtleex": "turtlemaster2potion", + "potofturtlelevel2": "turtlemaster2potion", + "potoftm2": "turtlemaster2potion", + "potoftmlong": "turtlemaster2potion", + "potoftmextended": "turtlemaster2potion", + "potoftmex": "turtlemaster2potion", + "potoftmlevel2": "turtlemaster2potion", + "splashturtlemaster2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": true + } + }, + "splashturtlemasterlongpotion": "splashturtlemaster2potion", + "splashturtlemasterextendedpotion": "splashturtlemaster2potion", + "splashturtlemasterexpotion": "splashturtlemaster2potion", + "splashturtlemasterlevel2potion": "splashturtlemaster2potion", + "splashturtle2potion": "splashturtlemaster2potion", + "splashturtlelongpotion": "splashturtlemaster2potion", + "splashturtleextendedpotion": "splashturtlemaster2potion", + "splashturtleexpotion": "splashturtlemaster2potion", + "splashturtlelevel2potion": "splashturtlemaster2potion", + "splashtm2potion": "splashturtlemaster2potion", + "splashtmlongpotion": "splashturtlemaster2potion", + "splashtmextendedpotion": "splashturtlemaster2potion", + "splashtmexpotion": "splashturtlemaster2potion", + "splashtmlevel2potion": "splashturtlemaster2potion", + "splturtlemaster2potion": "splashturtlemaster2potion", + "splturtlemasterlongpotion": "splashturtlemaster2potion", + "splturtlemasterextendedpotion": "splashturtlemaster2potion", + "splturtlemasterexpotion": "splashturtlemaster2potion", + "splturtlemasterlevel2potion": "splashturtlemaster2potion", + "splturtle2potion": "splashturtlemaster2potion", + "splturtlelongpotion": "splashturtlemaster2potion", + "splturtleextendedpotion": "splashturtlemaster2potion", + "splturtleexpotion": "splashturtlemaster2potion", + "splturtlelevel2potion": "splashturtlemaster2potion", + "spltm2potion": "splashturtlemaster2potion", + "spltmlongpotion": "splashturtlemaster2potion", + "spltmextendedpotion": "splashturtlemaster2potion", + "spltmexpotion": "splashturtlemaster2potion", + "spltmlevel2potion": "splashturtlemaster2potion", + "turtlemaster2splashpotion": "splashturtlemaster2potion", + "turtlemasterlongsplashpotion": "splashturtlemaster2potion", + "turtlemasterextendedsplashpotion": "splashturtlemaster2potion", + "turtlemasterexsplashpotion": "splashturtlemaster2potion", + "turtlemasterlevel2splashpotion": "splashturtlemaster2potion", + "turtle2splashpotion": "splashturtlemaster2potion", + "turtlelongsplashpotion": "splashturtlemaster2potion", + "turtleextendedsplashpotion": "splashturtlemaster2potion", + "turtleexsplashpotion": "splashturtlemaster2potion", + "turtlelevel2splashpotion": "splashturtlemaster2potion", + "tm2splashpotion": "splashturtlemaster2potion", + "tmlongsplashpotion": "splashturtlemaster2potion", + "tmextendedsplashpotion": "splashturtlemaster2potion", + "tmexsplashpotion": "splashturtlemaster2potion", + "tmlevel2splashpotion": "splashturtlemaster2potion", + "splashturtlemaster2pot": "splashturtlemaster2potion", + "splashturtlemasterlongpot": "splashturtlemaster2potion", + "splashturtlemasterextendedpot": "splashturtlemaster2potion", + "splashturtlemasterexpot": "splashturtlemaster2potion", + "splashturtlemasterlevel2pot": "splashturtlemaster2potion", + "splashturtle2pot": "splashturtlemaster2potion", + "splashturtlelongpot": "splashturtlemaster2potion", + "splashturtleextendedpot": "splashturtlemaster2potion", + "splashturtleexpot": "splashturtlemaster2potion", + "splashturtlelevel2pot": "splashturtlemaster2potion", + "splashtm2pot": "splashturtlemaster2potion", + "splashtmlongpot": "splashturtlemaster2potion", + "splashtmextendedpot": "splashturtlemaster2potion", + "splashtmexpot": "splashturtlemaster2potion", + "splashtmlevel2pot": "splashturtlemaster2potion", + "splturtlemaster2pot": "splashturtlemaster2potion", + "splturtlemasterlongpot": "splashturtlemaster2potion", + "splturtlemasterextendedpot": "splashturtlemaster2potion", + "splturtlemasterexpot": "splashturtlemaster2potion", + "splturtlemasterlevel2pot": "splashturtlemaster2potion", + "splturtle2pot": "splashturtlemaster2potion", + "splturtlelongpot": "splashturtlemaster2potion", + "splturtleextendedpot": "splashturtlemaster2potion", + "splturtleexpot": "splashturtlemaster2potion", + "splturtlelevel2pot": "splashturtlemaster2potion", + "spltm2pot": "splashturtlemaster2potion", + "spltmlongpot": "splashturtlemaster2potion", + "spltmextendedpot": "splashturtlemaster2potion", + "spltmexpot": "splashturtlemaster2potion", + "spltmlevel2pot": "splashturtlemaster2potion", + "turtlemaster2splashpot": "splashturtlemaster2potion", + "turtlemasterlongsplashpot": "splashturtlemaster2potion", + "turtlemasterextendedsplashpot": "splashturtlemaster2potion", + "turtlemasterexsplashpot": "splashturtlemaster2potion", + "turtlemasterlevel2splashpot": "splashturtlemaster2potion", + "turtle2splashpot": "splashturtlemaster2potion", + "turtlelongsplashpot": "splashturtlemaster2potion", + "turtleextendedsplashpot": "splashturtlemaster2potion", + "turtleexsplashpot": "splashturtlemaster2potion", + "turtlelevel2splashpot": "splashturtlemaster2potion", + "tm2splashpot": "splashturtlemaster2potion", + "tmlongsplashpot": "splashturtlemaster2potion", + "tmextendedsplashpot": "splashturtlemaster2potion", + "tmexsplashpot": "splashturtlemaster2potion", + "tmlevel2splashpot": "splashturtlemaster2potion", + "lingerpotturtlemaster2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": true + } + }, + "lingerpotturtlemasterlong": "lingerpotturtlemaster2", + "lingerpotturtlemasterextended": "lingerpotturtlemaster2", + "lingerpotturtlemasterex": "lingerpotturtlemaster2", + "lingerpotturtlemasterlevel2": "lingerpotturtlemaster2", + "lingerpotturtle2": "lingerpotturtlemaster2", + "lingerpotturtlelong": "lingerpotturtlemaster2", + "lingerpotturtleextended": "lingerpotturtlemaster2", + "lingerpotturtleex": "lingerpotturtlemaster2", + "lingerpotturtlelevel2": "lingerpotturtlemaster2", + "lingerpottm2": "lingerpotturtlemaster2", + "lingerpottmlong": "lingerpotturtlemaster2", + "lingerpottmextended": "lingerpotturtlemaster2", + "lingerpottmex": "lingerpotturtlemaster2", + "lingerpottmlevel2": "lingerpotturtlemaster2", + "turtlemasterlingerpot2": "lingerpotturtlemaster2", + "turtlemasterlingerpotlong": "lingerpotturtlemaster2", + "turtlemasterlingerpotextended": "lingerpotturtlemaster2", + "turtlemasterlingerpotex": "lingerpotturtlemaster2", + "turtlemasterlingerpotlevel2": "lingerpotturtlemaster2", + "turtlelingerpot2": "lingerpotturtlemaster2", + "turtlelingerpotlong": "lingerpotturtlemaster2", + "turtlelingerpotextended": "lingerpotturtlemaster2", + "turtlelingerpotex": "lingerpotturtlemaster2", + "turtlelingerpotlevel2": "lingerpotturtlemaster2", + "tmlingerpot2": "lingerpotturtlemaster2", + "tmlingerpotlong": "lingerpotturtlemaster2", + "tmlingerpotextended": "lingerpotturtlemaster2", + "tmlingerpotex": "lingerpotturtlemaster2", + "tmlingerpotlevel2": "lingerpotturtlemaster2", + "aoepotionturtlemaster2": "lingerpotturtlemaster2", + "aoepotionturtlemasterlong": "lingerpotturtlemaster2", + "aoepotionturtlemasterextended": "lingerpotturtlemaster2", + "aoepotionturtlemasterex": "lingerpotturtlemaster2", + "aoepotionturtlemasterlevel2": "lingerpotturtlemaster2", + "aoepotionturtle2": "lingerpotturtlemaster2", + "aoepotionturtlelong": "lingerpotturtlemaster2", + "aoepotionturtleextended": "lingerpotturtlemaster2", + "aoepotionturtleex": "lingerpotturtlemaster2", + "aoepotionturtlelevel2": "lingerpotturtlemaster2", + "aoepotiontm2": "lingerpotturtlemaster2", + "aoepotiontmlong": "lingerpotturtlemaster2", + "aoepotiontmextended": "lingerpotturtlemaster2", + "aoepotiontmex": "lingerpotturtlemaster2", + "aoepotiontmlevel2": "lingerpotturtlemaster2", + "turtlemasteraoepoiont2": "lingerpotturtlemaster2", + "turtlemasteraoepoiontlong": "lingerpotturtlemaster2", + "turtlemasteraoepoiontextended": "lingerpotturtlemaster2", + "turtlemasteraoepoiontex": "lingerpotturtlemaster2", + "turtlemasteraoepoiontlevel2": "lingerpotturtlemaster2", + "turtleaoepoiont2": "lingerpotturtlemaster2", + "turtleaoepoiontlong": "lingerpotturtlemaster2", + "turtleaoepoiontextended": "lingerpotturtlemaster2", + "turtleaoepoiontex": "lingerpotturtlemaster2", + "turtleaoepoiontlevel2": "lingerpotturtlemaster2", + "tmaoepoiont2": "lingerpotturtlemaster2", + "tmaoepoiontlong": "lingerpotturtlemaster2", + "tmaoepoiontextended": "lingerpotturtlemaster2", + "tmaoepoiontex": "lingerpotturtlemaster2", + "tmaoepoiontlevel2": "lingerpotturtlemaster2", + "aoepotturtlemaster2": "lingerpotturtlemaster2", + "aoepotturtlemasterlong": "lingerpotturtlemaster2", + "aoepotturtlemasterextended": "lingerpotturtlemaster2", + "aoepotturtlemasterex": "lingerpotturtlemaster2", + "aoepotturtlemasterlevel2": "lingerpotturtlemaster2", + "aoepotturtle2": "lingerpotturtlemaster2", + "aoepotturtlelong": "lingerpotturtlemaster2", + "aoepotturtleextended": "lingerpotturtlemaster2", + "aoepotturtleex": "lingerpotturtlemaster2", + "aoepotturtlelevel2": "lingerpotturtlemaster2", + "aoepottm2": "lingerpotturtlemaster2", + "aoepottmlong": "lingerpotturtlemaster2", + "aoepottmextended": "lingerpotturtlemaster2", + "aoepottmex": "lingerpotturtlemaster2", + "aoepottmlevel2": "lingerpotturtlemaster2", + "turtlemasteraoepot2": "lingerpotturtlemaster2", + "turtlemasteraoepotlong": "lingerpotturtlemaster2", + "turtlemasteraoepotextended": "lingerpotturtlemaster2", + "turtlemasteraoepotex": "lingerpotturtlemaster2", + "turtlemasteraoepotlevel2": "lingerpotturtlemaster2", + "turtleaoepot2": "lingerpotturtlemaster2", + "turtleaoepotlong": "lingerpotturtlemaster2", + "turtleaoepotextended": "lingerpotturtlemaster2", + "turtleaoepotex": "lingerpotturtlemaster2", + "turtleaoepotlevel2": "lingerpotturtlemaster2", + "tmaoepot2": "lingerpotturtlemaster2", + "tmaoepotlong": "lingerpotturtlemaster2", + "tmaoepotextended": "lingerpotturtlemaster2", + "tmaoepotex": "lingerpotturtlemaster2", + "tmaoepotlevel2": "lingerpotturtlemaster2", + "areapotionturtlemaster2": "lingerpotturtlemaster2", + "areapotionturtlemasterlong": "lingerpotturtlemaster2", + "areapotionturtlemasterextended": "lingerpotturtlemaster2", + "areapotionturtlemasterex": "lingerpotturtlemaster2", + "areapotionturtlemasterlevel2": "lingerpotturtlemaster2", + "areapotionturtle2": "lingerpotturtlemaster2", + "areapotionturtlelong": "lingerpotturtlemaster2", + "areapotionturtleextended": "lingerpotturtlemaster2", + "areapotionturtleex": "lingerpotturtlemaster2", + "areapotionturtlelevel2": "lingerpotturtlemaster2", + "areapotiontm2": "lingerpotturtlemaster2", + "areapotiontmlong": "lingerpotturtlemaster2", + "areapotiontmextended": "lingerpotturtlemaster2", + "areapotiontmex": "lingerpotturtlemaster2", + "areapotiontmlevel2": "lingerpotturtlemaster2", + "turtlemasterareapotion2": "lingerpotturtlemaster2", + "turtlemasterareapotionlong": "lingerpotturtlemaster2", + "turtlemasterareapotionextended": "lingerpotturtlemaster2", + "turtlemasterareapotionex": "lingerpotturtlemaster2", + "turtlemasterareapotionlevel2": "lingerpotturtlemaster2", + "turtleareapotion2": "lingerpotturtlemaster2", + "turtleareapotionlong": "lingerpotturtlemaster2", + "turtleareapotionextended": "lingerpotturtlemaster2", + "turtleareapotionex": "lingerpotturtlemaster2", + "turtleareapotionlevel2": "lingerpotturtlemaster2", + "tmareapotion2": "lingerpotturtlemaster2", + "tmareapotionlong": "lingerpotturtlemaster2", + "tmareapotionextended": "lingerpotturtlemaster2", + "tmareapotionex": "lingerpotturtlemaster2", + "tmareapotionlevel2": "lingerpotturtlemaster2", + "areapotturtlemaster2": "lingerpotturtlemaster2", + "areapotturtlemasterlong": "lingerpotturtlemaster2", + "areapotturtlemasterextended": "lingerpotturtlemaster2", + "areapotturtlemasterex": "lingerpotturtlemaster2", + "areapotturtlemasterlevel2": "lingerpotturtlemaster2", + "areapotturtle2": "lingerpotturtlemaster2", + "areapotturtlelong": "lingerpotturtlemaster2", + "areapotturtleextended": "lingerpotturtlemaster2", + "areapotturtleex": "lingerpotturtlemaster2", + "areapotturtlelevel2": "lingerpotturtlemaster2", + "areapottm2": "lingerpotturtlemaster2", + "areapottmlong": "lingerpotturtlemaster2", + "areapottmextended": "lingerpotturtlemaster2", + "areapottmex": "lingerpotturtlemaster2", + "areapottmlevel2": "lingerpotturtlemaster2", + "turtlemasterareapot2": "lingerpotturtlemaster2", + "turtlemasterareapotlong": "lingerpotturtlemaster2", + "turtlemasterareapotextended": "lingerpotturtlemaster2", + "turtlemasterareapotex": "lingerpotturtlemaster2", + "turtlemasterareapotlevel2": "lingerpotturtlemaster2", + "turtleareapot2": "lingerpotturtlemaster2", + "turtleareapotlong": "lingerpotturtlemaster2", + "turtleareapotextended": "lingerpotturtlemaster2", + "turtleareapotex": "lingerpotturtlemaster2", + "turtleareapotlevel2": "lingerpotturtlemaster2", + "tmareapot2": "lingerpotturtlemaster2", + "tmareapotlong": "lingerpotturtlemaster2", + "tmareapotextended": "lingerpotturtlemaster2", + "tmareapotex": "lingerpotturtlemaster2", + "tmareapotlevel2": "lingerpotturtlemaster2", + "cloudpotionturtlemaster2": "lingerpotturtlemaster2", + "cloudpotionturtlemasterlong": "lingerpotturtlemaster2", + "cloudpotionturtlemasterextended": "lingerpotturtlemaster2", + "cloudpotionturtlemasterex": "lingerpotturtlemaster2", + "cloudpotionturtlemasterlevel2": "lingerpotturtlemaster2", + "cloudpotionturtle2": "lingerpotturtlemaster2", + "cloudpotionturtlelong": "lingerpotturtlemaster2", + "cloudpotionturtleextended": "lingerpotturtlemaster2", + "cloudpotionturtleex": "lingerpotturtlemaster2", + "cloudpotionturtlelevel2": "lingerpotturtlemaster2", + "cloudpotiontm2": "lingerpotturtlemaster2", + "cloudpotiontmlong": "lingerpotturtlemaster2", + "cloudpotiontmextended": "lingerpotturtlemaster2", + "cloudpotiontmex": "lingerpotturtlemaster2", + "cloudpotiontmlevel2": "lingerpotturtlemaster2", + "turtlemastercloudpotion2": "lingerpotturtlemaster2", + "turtlemastercloudpotionlong": "lingerpotturtlemaster2", + "turtlemastercloudpotionextended": "lingerpotturtlemaster2", + "turtlemastercloudpotionex": "lingerpotturtlemaster2", + "turtlemastercloudpotionlevel2": "lingerpotturtlemaster2", + "turtlecloudpotion2": "lingerpotturtlemaster2", + "turtlecloudpotionlong": "lingerpotturtlemaster2", + "turtlecloudpotionextended": "lingerpotturtlemaster2", + "turtlecloudpotionex": "lingerpotturtlemaster2", + "turtlecloudpotionlevel2": "lingerpotturtlemaster2", + "tmcloudpotion2": "lingerpotturtlemaster2", + "tmcloudpotionlong": "lingerpotturtlemaster2", + "tmcloudpotionextended": "lingerpotturtlemaster2", + "tmcloudpotionex": "lingerpotturtlemaster2", + "tmcloudpotionlevel2": "lingerpotturtlemaster2", + "cloudpotturtlemaster2": "lingerpotturtlemaster2", + "cloudpotturtlemasterlong": "lingerpotturtlemaster2", + "cloudpotturtlemasterextended": "lingerpotturtlemaster2", + "cloudpotturtlemasterex": "lingerpotturtlemaster2", + "cloudpotturtlemasterlevel2": "lingerpotturtlemaster2", + "cloudpotturtle2": "lingerpotturtlemaster2", + "cloudpotturtlelong": "lingerpotturtlemaster2", + "cloudpotturtleextended": "lingerpotturtlemaster2", + "cloudpotturtleex": "lingerpotturtlemaster2", + "cloudpotturtlelevel2": "lingerpotturtlemaster2", + "cloudpottm2": "lingerpotturtlemaster2", + "cloudpottmlong": "lingerpotturtlemaster2", + "cloudpottmextended": "lingerpotturtlemaster2", + "cloudpottmex": "lingerpotturtlemaster2", + "cloudpottmlevel2": "lingerpotturtlemaster2", + "turtlemastercloudpot2": "lingerpotturtlemaster2", + "turtlemastercloudpotlong": "lingerpotturtlemaster2", + "turtlemastercloudpotextended": "lingerpotturtlemaster2", + "turtlemastercloudpotex": "lingerpotturtlemaster2", + "turtlemastercloudpotlevel2": "lingerpotturtlemaster2", + "turtlecloudpot2": "lingerpotturtlemaster2", + "turtlecloudpotlong": "lingerpotturtlemaster2", + "turtlecloudpotextended": "lingerpotturtlemaster2", + "turtlecloudpotex": "lingerpotturtlemaster2", + "turtlecloudpotlevel2": "lingerpotturtlemaster2", + "tmcloudpot2": "lingerpotturtlemaster2", + "tmcloudpotlong": "lingerpotturtlemaster2", + "tmcloudpotextended": "lingerpotturtlemaster2", + "tmcloudpotex": "lingerpotturtlemaster2", + "tmcloudpotlevel2": "lingerpotturtlemaster2", + "arrowturtlemaster2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_turtle_master", + "type": "TURTLE_MASTER", + "upgraded": false, + "extended": true + } + }, + "arrowturtlemasterlong": "arrowturtlemaster2", + "arrowturtlemasterextended": "arrowturtlemaster2", + "arrowturtlemasterex": "arrowturtlemaster2", + "arrowturtlemasterlevel2": "arrowturtlemaster2", + "arrowturtle2": "arrowturtlemaster2", + "arrowturtlelong": "arrowturtlemaster2", + "arrowturtleextended": "arrowturtlemaster2", + "arrowturtleex": "arrowturtlemaster2", + "arrowturtlelevel2": "arrowturtlemaster2", + "arrowtm2": "arrowturtlemaster2", + "arrowtmlong": "arrowturtlemaster2", + "arrowtmextended": "arrowturtlemaster2", + "arrowtmex": "arrowturtlemaster2", + "arrowtmlevel2": "arrowturtlemaster2", + "turtlemasterarrow2": "arrowturtlemaster2", + "turtlemasterarrowlong": "arrowturtlemaster2", + "turtlemasterarrowextended": "arrowturtlemaster2", + "turtlemasterarrowex": "arrowturtlemaster2", + "turtlemasterarrowlevel2": "arrowturtlemaster2", + "turtlearrow2": "arrowturtlemaster2", + "turtlearrowlong": "arrowturtlemaster2", + "turtlearrowextended": "arrowturtlemaster2", + "turtlearrowex": "arrowturtlemaster2", + "turtlearrowlevel2": "arrowturtlemaster2", + "tmarrow2": "arrowturtlemaster2", + "tmarrowlong": "arrowturtlemaster2", + "tmarrowextended": "arrowturtlemaster2", + "tmarrowex": "arrowturtlemaster2", + "tmarrowlevel2": "arrowturtlemaster2", + "slowfallingpotion": { + "material": "POTION", + "potionData": { + "vanillaType": "slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": false + } + }, + "slowfallpotion": "slowfallingpotion", + "sfpotion": "slowfallingpotion", + "slowfallingpot": "slowfallingpotion", + "slowfallpot": "slowfallingpotion", + "sfpot": "slowfallingpotion", + "potionofslowfalling": "slowfallingpotion", + "potionofslowfall": "slowfallingpotion", + "potionofsf": "slowfallingpotion", + "potofslowfalling": "slowfallingpotion", + "potofslowfall": "slowfallingpotion", + "potofsf": "slowfallingpotion", + "splashslowfallingpotion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": false + } + }, + "splashslowfallpotion": "splashslowfallingpotion", + "splashsfpotion": "splashslowfallingpotion", + "splslowfallingpotion": "splashslowfallingpotion", + "splslowfallpotion": "splashslowfallingpotion", + "splsfpotion": "splashslowfallingpotion", + "slowfallingsplashpotion": "splashslowfallingpotion", + "slowfallsplashpotion": "splashslowfallingpotion", + "sfsplashpotion": "splashslowfallingpotion", + "splashslowfallingpot": "splashslowfallingpotion", + "splashslowfallpot": "splashslowfallingpotion", + "splashsfpot": "splashslowfallingpotion", + "splslowfallingpot": "splashslowfallingpotion", + "splslowfallpot": "splashslowfallingpotion", + "splsfpot": "splashslowfallingpotion", + "slowfallingsplashpot": "splashslowfallingpotion", + "slowfallsplashpot": "splashslowfallingpotion", + "sfsplashpot": "splashslowfallingpotion", + "lingerpotslowfalling": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": false + } + }, + "lingerpotslowfall": "lingerpotslowfalling", + "lingerpotsf": "lingerpotslowfalling", + "slowfallinglingerpot": "lingerpotslowfalling", + "slowfalllingerpot": "lingerpotslowfalling", + "sflingerpot": "lingerpotslowfalling", + "aoepotionslowfalling": "lingerpotslowfalling", + "aoepotionslowfall": "lingerpotslowfalling", + "aoepotionsf": "lingerpotslowfalling", + "slowfallingaoepoiont": "lingerpotslowfalling", + "slowfallaoepoiont": "lingerpotslowfalling", + "sfaoepoiont": "lingerpotslowfalling", + "aoepotslowfalling": "lingerpotslowfalling", + "aoepotslowfall": "lingerpotslowfalling", + "aoepotsf": "lingerpotslowfalling", + "slowfallingaoepot": "lingerpotslowfalling", + "slowfallaoepot": "lingerpotslowfalling", + "sfaoepot": "lingerpotslowfalling", + "areapotionslowfalling": "lingerpotslowfalling", + "areapotionslowfall": "lingerpotslowfalling", + "areapotionsf": "lingerpotslowfalling", + "slowfallingareapotion": "lingerpotslowfalling", + "slowfallareapotion": "lingerpotslowfalling", + "sfareapotion": "lingerpotslowfalling", + "areapotslowfalling": "lingerpotslowfalling", + "areapotslowfall": "lingerpotslowfalling", + "areapotsf": "lingerpotslowfalling", + "slowfallingareapot": "lingerpotslowfalling", + "slowfallareapot": "lingerpotslowfalling", + "sfareapot": "lingerpotslowfalling", + "cloudpotionslowfalling": "lingerpotslowfalling", + "cloudpotionslowfall": "lingerpotslowfalling", + "cloudpotionsf": "lingerpotslowfalling", + "slowfallingcloudpotion": "lingerpotslowfalling", + "slowfallcloudpotion": "lingerpotslowfalling", + "sfcloudpotion": "lingerpotslowfalling", + "cloudpotslowfalling": "lingerpotslowfalling", + "cloudpotslowfall": "lingerpotslowfalling", + "cloudpotsf": "lingerpotslowfalling", + "slowfallingcloudpot": "lingerpotslowfalling", + "slowfallcloudpot": "lingerpotslowfalling", + "sfcloudpot": "lingerpotslowfalling", + "arrowslowfalling": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": false + } + }, + "arrowslowfall": "arrowslowfalling", + "arrowsf": "arrowslowfalling", + "slowfallingarrow": "arrowslowfalling", + "slowfallarrow": "arrowslowfalling", + "sfarrow": "arrowslowfalling", + "slowfalling2potion": { + "material": "POTION", + "potionData": { + "vanillaType": "long_slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": true + } + }, + "slowfallinglongpotion": "slowfalling2potion", + "slowfallingextendedpotion": "slowfalling2potion", + "slowfallingexpotion": "slowfalling2potion", + "slowfallinglevel2potion": "slowfalling2potion", + "slowfall2potion": "slowfalling2potion", + "slowfalllongpotion": "slowfalling2potion", + "slowfallextendedpotion": "slowfalling2potion", + "slowfallexpotion": "slowfalling2potion", + "slowfalllevel2potion": "slowfalling2potion", + "sf2potion": "slowfalling2potion", + "sflongpotion": "slowfalling2potion", + "sfextendedpotion": "slowfalling2potion", + "sfexpotion": "slowfalling2potion", + "sflevel2potion": "slowfalling2potion", + "slowfalling2pot": "slowfalling2potion", + "slowfallinglongpot": "slowfalling2potion", + "slowfallingextendedpot": "slowfalling2potion", + "slowfallingexpot": "slowfalling2potion", + "slowfallinglevel2pot": "slowfalling2potion", + "slowfall2pot": "slowfalling2potion", + "slowfalllongpot": "slowfalling2potion", + "slowfallextendedpot": "slowfalling2potion", + "slowfallexpot": "slowfalling2potion", + "slowfalllevel2pot": "slowfalling2potion", + "sf2pot": "slowfalling2potion", + "sflongpot": "slowfalling2potion", + "sfextendedpot": "slowfalling2potion", + "sfexpot": "slowfalling2potion", + "sflevel2pot": "slowfalling2potion", + "potionofslowfalling2": "slowfalling2potion", + "potionofslowfallinglong": "slowfalling2potion", + "potionofslowfallingextended": "slowfalling2potion", + "potionofslowfallingex": "slowfalling2potion", + "potionofslowfallinglevel2": "slowfalling2potion", + "potionofslowfall2": "slowfalling2potion", + "potionofslowfalllong": "slowfalling2potion", + "potionofslowfallextended": "slowfalling2potion", + "potionofslowfallex": "slowfalling2potion", + "potionofslowfalllevel2": "slowfalling2potion", + "potionofsf2": "slowfalling2potion", + "potionofsflong": "slowfalling2potion", + "potionofsfextended": "slowfalling2potion", + "potionofsfex": "slowfalling2potion", + "potionofsflevel2": "slowfalling2potion", + "potofslowfalling2": "slowfalling2potion", + "potofslowfallinglong": "slowfalling2potion", + "potofslowfallingextended": "slowfalling2potion", + "potofslowfallingex": "slowfalling2potion", + "potofslowfallinglevel2": "slowfalling2potion", + "potofslowfall2": "slowfalling2potion", + "potofslowfalllong": "slowfalling2potion", + "potofslowfallextended": "slowfalling2potion", + "potofslowfallex": "slowfalling2potion", + "potofslowfalllevel2": "slowfalling2potion", + "potofsf2": "slowfalling2potion", + "potofsflong": "slowfalling2potion", + "potofsfextended": "slowfalling2potion", + "potofsfex": "slowfalling2potion", + "potofsflevel2": "slowfalling2potion", + "splashslowfalling2potion": { + "material": "SPLASH_POTION", + "potionData": { + "vanillaType": "long_slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": true + } + }, + "splashslowfallinglongpotion": "splashslowfalling2potion", + "splashslowfallingextendedpotion": "splashslowfalling2potion", + "splashslowfallingexpotion": "splashslowfalling2potion", + "splashslowfallinglevel2potion": "splashslowfalling2potion", + "splashslowfall2potion": "splashslowfalling2potion", + "splashslowfalllongpotion": "splashslowfalling2potion", + "splashslowfallextendedpotion": "splashslowfalling2potion", + "splashslowfallexpotion": "splashslowfalling2potion", + "splashslowfalllevel2potion": "splashslowfalling2potion", + "splashsf2potion": "splashslowfalling2potion", + "splashsflongpotion": "splashslowfalling2potion", + "splashsfextendedpotion": "splashslowfalling2potion", + "splashsfexpotion": "splashslowfalling2potion", + "splashsflevel2potion": "splashslowfalling2potion", + "splslowfalling2potion": "splashslowfalling2potion", + "splslowfallinglongpotion": "splashslowfalling2potion", + "splslowfallingextendedpotion": "splashslowfalling2potion", + "splslowfallingexpotion": "splashslowfalling2potion", + "splslowfallinglevel2potion": "splashslowfalling2potion", + "splslowfall2potion": "splashslowfalling2potion", + "splslowfalllongpotion": "splashslowfalling2potion", + "splslowfallextendedpotion": "splashslowfalling2potion", + "splslowfallexpotion": "splashslowfalling2potion", + "splslowfalllevel2potion": "splashslowfalling2potion", + "splsf2potion": "splashslowfalling2potion", + "splsflongpotion": "splashslowfalling2potion", + "splsfextendedpotion": "splashslowfalling2potion", + "splsfexpotion": "splashslowfalling2potion", + "splsflevel2potion": "splashslowfalling2potion", + "slowfalling2splashpotion": "splashslowfalling2potion", + "slowfallinglongsplashpotion": "splashslowfalling2potion", + "slowfallingextendedsplashpotion": "splashslowfalling2potion", + "slowfallingexsplashpotion": "splashslowfalling2potion", + "slowfallinglevel2splashpotion": "splashslowfalling2potion", + "slowfall2splashpotion": "splashslowfalling2potion", + "slowfalllongsplashpotion": "splashslowfalling2potion", + "slowfallextendedsplashpotion": "splashslowfalling2potion", + "slowfallexsplashpotion": "splashslowfalling2potion", + "slowfalllevel2splashpotion": "splashslowfalling2potion", + "sf2splashpotion": "splashslowfalling2potion", + "sflongsplashpotion": "splashslowfalling2potion", + "sfextendedsplashpotion": "splashslowfalling2potion", + "sfexsplashpotion": "splashslowfalling2potion", + "sflevel2splashpotion": "splashslowfalling2potion", + "splashslowfalling2pot": "splashslowfalling2potion", + "splashslowfallinglongpot": "splashslowfalling2potion", + "splashslowfallingextendedpot": "splashslowfalling2potion", + "splashslowfallingexpot": "splashslowfalling2potion", + "splashslowfallinglevel2pot": "splashslowfalling2potion", + "splashslowfall2pot": "splashslowfalling2potion", + "splashslowfalllongpot": "splashslowfalling2potion", + "splashslowfallextendedpot": "splashslowfalling2potion", + "splashslowfallexpot": "splashslowfalling2potion", + "splashslowfalllevel2pot": "splashslowfalling2potion", + "splashsf2pot": "splashslowfalling2potion", + "splashsflongpot": "splashslowfalling2potion", + "splashsfextendedpot": "splashslowfalling2potion", + "splashsfexpot": "splashslowfalling2potion", + "splashsflevel2pot": "splashslowfalling2potion", + "splslowfalling2pot": "splashslowfalling2potion", + "splslowfallinglongpot": "splashslowfalling2potion", + "splslowfallingextendedpot": "splashslowfalling2potion", + "splslowfallingexpot": "splashslowfalling2potion", + "splslowfallinglevel2pot": "splashslowfalling2potion", + "splslowfall2pot": "splashslowfalling2potion", + "splslowfalllongpot": "splashslowfalling2potion", + "splslowfallextendedpot": "splashslowfalling2potion", + "splslowfallexpot": "splashslowfalling2potion", + "splslowfalllevel2pot": "splashslowfalling2potion", + "splsf2pot": "splashslowfalling2potion", + "splsflongpot": "splashslowfalling2potion", + "splsfextendedpot": "splashslowfalling2potion", + "splsfexpot": "splashslowfalling2potion", + "splsflevel2pot": "splashslowfalling2potion", + "slowfalling2splashpot": "splashslowfalling2potion", + "slowfallinglongsplashpot": "splashslowfalling2potion", + "slowfallingextendedsplashpot": "splashslowfalling2potion", + "slowfallingexsplashpot": "splashslowfalling2potion", + "slowfallinglevel2splashpot": "splashslowfalling2potion", + "slowfall2splashpot": "splashslowfalling2potion", + "slowfalllongsplashpot": "splashslowfalling2potion", + "slowfallextendedsplashpot": "splashslowfalling2potion", + "slowfallexsplashpot": "splashslowfalling2potion", + "slowfalllevel2splashpot": "splashslowfalling2potion", + "sf2splashpot": "splashslowfalling2potion", + "sflongsplashpot": "splashslowfalling2potion", + "sfextendedsplashpot": "splashslowfalling2potion", + "sfexsplashpot": "splashslowfalling2potion", + "sflevel2splashpot": "splashslowfalling2potion", + "lingerpotslowfalling2": { + "material": "LINGERING_POTION", + "potionData": { + "vanillaType": "long_slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": true + } + }, + "lingerpotslowfallinglong": "lingerpotslowfalling2", + "lingerpotslowfallingextended": "lingerpotslowfalling2", + "lingerpotslowfallingex": "lingerpotslowfalling2", + "lingerpotslowfallinglevel2": "lingerpotslowfalling2", + "lingerpotslowfall2": "lingerpotslowfalling2", + "lingerpotslowfalllong": "lingerpotslowfalling2", + "lingerpotslowfallextended": "lingerpotslowfalling2", + "lingerpotslowfallex": "lingerpotslowfalling2", + "lingerpotslowfalllevel2": "lingerpotslowfalling2", + "lingerpotsf2": "lingerpotslowfalling2", + "lingerpotsflong": "lingerpotslowfalling2", + "lingerpotsfextended": "lingerpotslowfalling2", + "lingerpotsfex": "lingerpotslowfalling2", + "lingerpotsflevel2": "lingerpotslowfalling2", + "slowfallinglingerpot2": "lingerpotslowfalling2", + "slowfallinglingerpotlong": "lingerpotslowfalling2", + "slowfallinglingerpotextended": "lingerpotslowfalling2", + "slowfallinglingerpotex": "lingerpotslowfalling2", + "slowfallinglingerpotlevel2": "lingerpotslowfalling2", + "slowfalllingerpot2": "lingerpotslowfalling2", + "slowfalllingerpotlong": "lingerpotslowfalling2", + "slowfalllingerpotextended": "lingerpotslowfalling2", + "slowfalllingerpotex": "lingerpotslowfalling2", + "slowfalllingerpotlevel2": "lingerpotslowfalling2", + "sflingerpot2": "lingerpotslowfalling2", + "sflingerpotlong": "lingerpotslowfalling2", + "sflingerpotextended": "lingerpotslowfalling2", + "sflingerpotex": "lingerpotslowfalling2", + "sflingerpotlevel2": "lingerpotslowfalling2", + "aoepotionslowfalling2": "lingerpotslowfalling2", + "aoepotionslowfallinglong": "lingerpotslowfalling2", + "aoepotionslowfallingextended": "lingerpotslowfalling2", + "aoepotionslowfallingex": "lingerpotslowfalling2", + "aoepotionslowfallinglevel2": "lingerpotslowfalling2", + "aoepotionslowfall2": "lingerpotslowfalling2", + "aoepotionslowfalllong": "lingerpotslowfalling2", + "aoepotionslowfallextended": "lingerpotslowfalling2", + "aoepotionslowfallex": "lingerpotslowfalling2", + "aoepotionslowfalllevel2": "lingerpotslowfalling2", + "aoepotionsf2": "lingerpotslowfalling2", + "aoepotionsflong": "lingerpotslowfalling2", + "aoepotionsfextended": "lingerpotslowfalling2", + "aoepotionsfex": "lingerpotslowfalling2", + "aoepotionsflevel2": "lingerpotslowfalling2", + "slowfallingaoepoiont2": "lingerpotslowfalling2", + "slowfallingaoepoiontlong": "lingerpotslowfalling2", + "slowfallingaoepoiontextended": "lingerpotslowfalling2", + "slowfallingaoepoiontex": "lingerpotslowfalling2", + "slowfallingaoepoiontlevel2": "lingerpotslowfalling2", + "slowfallaoepoiont2": "lingerpotslowfalling2", + "slowfallaoepoiontlong": "lingerpotslowfalling2", + "slowfallaoepoiontextended": "lingerpotslowfalling2", + "slowfallaoepoiontex": "lingerpotslowfalling2", + "slowfallaoepoiontlevel2": "lingerpotslowfalling2", + "sfaoepoiont2": "lingerpotslowfalling2", + "sfaoepoiontlong": "lingerpotslowfalling2", + "sfaoepoiontextended": "lingerpotslowfalling2", + "sfaoepoiontex": "lingerpotslowfalling2", + "sfaoepoiontlevel2": "lingerpotslowfalling2", + "aoepotslowfalling2": "lingerpotslowfalling2", + "aoepotslowfallinglong": "lingerpotslowfalling2", + "aoepotslowfallingextended": "lingerpotslowfalling2", + "aoepotslowfallingex": "lingerpotslowfalling2", + "aoepotslowfallinglevel2": "lingerpotslowfalling2", + "aoepotslowfall2": "lingerpotslowfalling2", + "aoepotslowfalllong": "lingerpotslowfalling2", + "aoepotslowfallextended": "lingerpotslowfalling2", + "aoepotslowfallex": "lingerpotslowfalling2", + "aoepotslowfalllevel2": "lingerpotslowfalling2", + "aoepotsf2": "lingerpotslowfalling2", + "aoepotsflong": "lingerpotslowfalling2", + "aoepotsfextended": "lingerpotslowfalling2", + "aoepotsfex": "lingerpotslowfalling2", + "aoepotsflevel2": "lingerpotslowfalling2", + "slowfallingaoepot2": "lingerpotslowfalling2", + "slowfallingaoepotlong": "lingerpotslowfalling2", + "slowfallingaoepotextended": "lingerpotslowfalling2", + "slowfallingaoepotex": "lingerpotslowfalling2", + "slowfallingaoepotlevel2": "lingerpotslowfalling2", + "slowfallaoepot2": "lingerpotslowfalling2", + "slowfallaoepotlong": "lingerpotslowfalling2", + "slowfallaoepotextended": "lingerpotslowfalling2", + "slowfallaoepotex": "lingerpotslowfalling2", + "slowfallaoepotlevel2": "lingerpotslowfalling2", + "sfaoepot2": "lingerpotslowfalling2", + "sfaoepotlong": "lingerpotslowfalling2", + "sfaoepotextended": "lingerpotslowfalling2", + "sfaoepotex": "lingerpotslowfalling2", + "sfaoepotlevel2": "lingerpotslowfalling2", + "areapotionslowfalling2": "lingerpotslowfalling2", + "areapotionslowfallinglong": "lingerpotslowfalling2", + "areapotionslowfallingextended": "lingerpotslowfalling2", + "areapotionslowfallingex": "lingerpotslowfalling2", + "areapotionslowfallinglevel2": "lingerpotslowfalling2", + "areapotionslowfall2": "lingerpotslowfalling2", + "areapotionslowfalllong": "lingerpotslowfalling2", + "areapotionslowfallextended": "lingerpotslowfalling2", + "areapotionslowfallex": "lingerpotslowfalling2", + "areapotionslowfalllevel2": "lingerpotslowfalling2", + "areapotionsf2": "lingerpotslowfalling2", + "areapotionsflong": "lingerpotslowfalling2", + "areapotionsfextended": "lingerpotslowfalling2", + "areapotionsfex": "lingerpotslowfalling2", + "areapotionsflevel2": "lingerpotslowfalling2", + "slowfallingareapotion2": "lingerpotslowfalling2", + "slowfallingareapotionlong": "lingerpotslowfalling2", + "slowfallingareapotionextended": "lingerpotslowfalling2", + "slowfallingareapotionex": "lingerpotslowfalling2", + "slowfallingareapotionlevel2": "lingerpotslowfalling2", + "slowfallareapotion2": "lingerpotslowfalling2", + "slowfallareapotionlong": "lingerpotslowfalling2", + "slowfallareapotionextended": "lingerpotslowfalling2", + "slowfallareapotionex": "lingerpotslowfalling2", + "slowfallareapotionlevel2": "lingerpotslowfalling2", + "sfareapotion2": "lingerpotslowfalling2", + "sfareapotionlong": "lingerpotslowfalling2", + "sfareapotionextended": "lingerpotslowfalling2", + "sfareapotionex": "lingerpotslowfalling2", + "sfareapotionlevel2": "lingerpotslowfalling2", + "areapotslowfalling2": "lingerpotslowfalling2", + "areapotslowfallinglong": "lingerpotslowfalling2", + "areapotslowfallingextended": "lingerpotslowfalling2", + "areapotslowfallingex": "lingerpotslowfalling2", + "areapotslowfallinglevel2": "lingerpotslowfalling2", + "areapotslowfall2": "lingerpotslowfalling2", + "areapotslowfalllong": "lingerpotslowfalling2", + "areapotslowfallextended": "lingerpotslowfalling2", + "areapotslowfallex": "lingerpotslowfalling2", + "areapotslowfalllevel2": "lingerpotslowfalling2", + "areapotsf2": "lingerpotslowfalling2", + "areapotsflong": "lingerpotslowfalling2", + "areapotsfextended": "lingerpotslowfalling2", + "areapotsfex": "lingerpotslowfalling2", + "areapotsflevel2": "lingerpotslowfalling2", + "slowfallingareapot2": "lingerpotslowfalling2", + "slowfallingareapotlong": "lingerpotslowfalling2", + "slowfallingareapotextended": "lingerpotslowfalling2", + "slowfallingareapotex": "lingerpotslowfalling2", + "slowfallingareapotlevel2": "lingerpotslowfalling2", + "slowfallareapot2": "lingerpotslowfalling2", + "slowfallareapotlong": "lingerpotslowfalling2", + "slowfallareapotextended": "lingerpotslowfalling2", + "slowfallareapotex": "lingerpotslowfalling2", + "slowfallareapotlevel2": "lingerpotslowfalling2", + "sfareapot2": "lingerpotslowfalling2", + "sfareapotlong": "lingerpotslowfalling2", + "sfareapotextended": "lingerpotslowfalling2", + "sfareapotex": "lingerpotslowfalling2", + "sfareapotlevel2": "lingerpotslowfalling2", + "cloudpotionslowfalling2": "lingerpotslowfalling2", + "cloudpotionslowfallinglong": "lingerpotslowfalling2", + "cloudpotionslowfallingextended": "lingerpotslowfalling2", + "cloudpotionslowfallingex": "lingerpotslowfalling2", + "cloudpotionslowfallinglevel2": "lingerpotslowfalling2", + "cloudpotionslowfall2": "lingerpotslowfalling2", + "cloudpotionslowfalllong": "lingerpotslowfalling2", + "cloudpotionslowfallextended": "lingerpotslowfalling2", + "cloudpotionslowfallex": "lingerpotslowfalling2", + "cloudpotionslowfalllevel2": "lingerpotslowfalling2", + "cloudpotionsf2": "lingerpotslowfalling2", + "cloudpotionsflong": "lingerpotslowfalling2", + "cloudpotionsfextended": "lingerpotslowfalling2", + "cloudpotionsfex": "lingerpotslowfalling2", + "cloudpotionsflevel2": "lingerpotslowfalling2", + "slowfallingcloudpotion2": "lingerpotslowfalling2", + "slowfallingcloudpotionlong": "lingerpotslowfalling2", + "slowfallingcloudpotionextended": "lingerpotslowfalling2", + "slowfallingcloudpotionex": "lingerpotslowfalling2", + "slowfallingcloudpotionlevel2": "lingerpotslowfalling2", + "slowfallcloudpotion2": "lingerpotslowfalling2", + "slowfallcloudpotionlong": "lingerpotslowfalling2", + "slowfallcloudpotionextended": "lingerpotslowfalling2", + "slowfallcloudpotionex": "lingerpotslowfalling2", + "slowfallcloudpotionlevel2": "lingerpotslowfalling2", + "sfcloudpotion2": "lingerpotslowfalling2", + "sfcloudpotionlong": "lingerpotslowfalling2", + "sfcloudpotionextended": "lingerpotslowfalling2", + "sfcloudpotionex": "lingerpotslowfalling2", + "sfcloudpotionlevel2": "lingerpotslowfalling2", + "cloudpotslowfalling2": "lingerpotslowfalling2", + "cloudpotslowfallinglong": "lingerpotslowfalling2", + "cloudpotslowfallingextended": "lingerpotslowfalling2", + "cloudpotslowfallingex": "lingerpotslowfalling2", + "cloudpotslowfallinglevel2": "lingerpotslowfalling2", + "cloudpotslowfall2": "lingerpotslowfalling2", + "cloudpotslowfalllong": "lingerpotslowfalling2", + "cloudpotslowfallextended": "lingerpotslowfalling2", + "cloudpotslowfallex": "lingerpotslowfalling2", + "cloudpotslowfalllevel2": "lingerpotslowfalling2", + "cloudpotsf2": "lingerpotslowfalling2", + "cloudpotsflong": "lingerpotslowfalling2", + "cloudpotsfextended": "lingerpotslowfalling2", + "cloudpotsfex": "lingerpotslowfalling2", + "cloudpotsflevel2": "lingerpotslowfalling2", + "slowfallingcloudpot2": "lingerpotslowfalling2", + "slowfallingcloudpotlong": "lingerpotslowfalling2", + "slowfallingcloudpotextended": "lingerpotslowfalling2", + "slowfallingcloudpotex": "lingerpotslowfalling2", + "slowfallingcloudpotlevel2": "lingerpotslowfalling2", + "slowfallcloudpot2": "lingerpotslowfalling2", + "slowfallcloudpotlong": "lingerpotslowfalling2", + "slowfallcloudpotextended": "lingerpotslowfalling2", + "slowfallcloudpotex": "lingerpotslowfalling2", + "slowfallcloudpotlevel2": "lingerpotslowfalling2", + "sfcloudpot2": "lingerpotslowfalling2", + "sfcloudpotlong": "lingerpotslowfalling2", + "sfcloudpotextended": "lingerpotslowfalling2", + "sfcloudpotex": "lingerpotslowfalling2", + "sfcloudpotlevel2": "lingerpotslowfalling2", + "arrowslowfalling2": { + "material": "TIPPED_ARROW", + "potionData": { + "vanillaType": "long_slow_falling", + "type": "SLOW_FALLING", + "upgraded": false, + "extended": true + } + }, + "arrowslowfallinglong": "arrowslowfalling2", + "arrowslowfallingextended": "arrowslowfalling2", + "arrowslowfallingex": "arrowslowfalling2", + "arrowslowfallinglevel2": "arrowslowfalling2", + "arrowslowfall2": "arrowslowfalling2", + "arrowslowfalllong": "arrowslowfalling2", + "arrowslowfallextended": "arrowslowfalling2", + "arrowslowfallex": "arrowslowfalling2", + "arrowslowfalllevel2": "arrowslowfalling2", + "arrowsf2": "arrowslowfalling2", + "arrowsflong": "arrowslowfalling2", + "arrowsfextended": "arrowslowfalling2", + "arrowsfex": "arrowslowfalling2", + "arrowsflevel2": "arrowslowfalling2", + "slowfallingarrow2": "arrowslowfalling2", + "slowfallingarrowlong": "arrowslowfalling2", + "slowfallingarrowextended": "arrowslowfalling2", + "slowfallingarrowex": "arrowslowfalling2", + "slowfallingarrowlevel2": "arrowslowfalling2", + "slowfallarrow2": "arrowslowfalling2", + "slowfallarrowlong": "arrowslowfalling2", + "slowfallarrowextended": "arrowslowfalling2", + "slowfallarrowex": "arrowslowfalling2", + "slowfallarrowlevel2": "arrowslowfalling2", + "sfarrow2": "arrowslowfalling2", + "sfarrowlong": "arrowslowfalling2", + "sfarrowextended": "arrowslowfalling2", + "sfarrowex": "arrowslowfalling2", + "sfarrowlevel2": "arrowslowfalling2", + "undefined": { + "material": "SPAWNER", + "entity": "TIPPED_ARROW" + }, + "elderguardianmobspawner": { + "material": "SPAWNER", + "entity": "ELDER_GUARDIAN" + }, + "elderguardianmobcage": "elderguardianmobspawner", + "elderguardianmonsterspawner": "elderguardianmobspawner", + "elderguardianmonstercage": "elderguardianmobspawner", + "elderguardianmspawner": "elderguardianmobspawner", + "elderguardianmcage": "elderguardianmobspawner", + "elderguardianspawner": "elderguardianmobspawner", + "elderguardiancage": "elderguardianmobspawner", + "eguardianmobspawner": "elderguardianmobspawner", + "eguardianmobcage": "elderguardianmobspawner", + "eguardianmonsterspawner": "elderguardianmobspawner", + "eguardianmonstercage": "elderguardianmobspawner", + "eguardianmspawner": "elderguardianmobspawner", + "eguardianmcage": "elderguardianmobspawner", + "eguardianspawner": "elderguardianmobspawner", + "eguardiancage": "elderguardianmobspawner", + "witherskeletonmobspawner": { + "material": "SPAWNER", + "entity": "WITHER_SKELETON" + }, + "witherskeletonmobcage": "witherskeletonmobspawner", + "witherskeletonmonsterspawner": "witherskeletonmobspawner", + "witherskeletonmonstercage": "witherskeletonmobspawner", + "witherskeletonmspawner": "witherskeletonmobspawner", + "witherskeletonmcage": "witherskeletonmobspawner", + "witherskeletonspawner": "witherskeletonmobspawner", + "witherskeletoncage": "witherskeletonmobspawner", + "wskeletonmobspawner": "witherskeletonmobspawner", + "wskeletonmobcage": "witherskeletonmobspawner", + "wskeletonmonsterspawner": "witherskeletonmobspawner", + "wskeletonmonstercage": "witherskeletonmobspawner", + "wskeletonmspawner": "witherskeletonmobspawner", + "wskeletonmcage": "witherskeletonmobspawner", + "wskeletonspawner": "witherskeletonmobspawner", + "wskeletoncage": "witherskeletonmobspawner", + "witherskmobspawner": "witherskeletonmobspawner", + "witherskmobcage": "witherskeletonmobspawner", + "witherskmonsterspawner": "witherskeletonmobspawner", + "witherskmonstercage": "witherskeletonmobspawner", + "witherskmspawner": "witherskeletonmobspawner", + "witherskmcage": "witherskeletonmobspawner", + "witherskspawner": "witherskeletonmobspawner", + "witherskcage": "witherskeletonmobspawner", + "wskmobspawner": "witherskeletonmobspawner", + "wskmobcage": "witherskeletonmobspawner", + "wskmonsterspawner": "witherskeletonmobspawner", + "wskmonstercage": "witherskeletonmobspawner", + "wskmspawner": "witherskeletonmobspawner", + "wskmcage": "witherskeletonmobspawner", + "wskspawner": "witherskeletonmobspawner", + "wskcage": "witherskeletonmobspawner", + "withermobspawner": "witherskeletonmobspawner", + "withermobcage": "witherskeletonmobspawner", + "withermonsterspawner": "witherskeletonmobspawner", + "withermonstercage": "witherskeletonmobspawner", + "withermspawner": "witherskeletonmobspawner", + "withermcage": "witherskeletonmobspawner", + "witherspawner": "witherskeletonmobspawner", + "withercage": "witherskeletonmobspawner", + "straymobspawner": { + "material": "SPAWNER", + "entity": "STRAY" + }, + "straymobcage": "straymobspawner", + "straymonsterspawner": "straymobspawner", + "straymonstercage": "straymobspawner", + "straymspawner": "straymobspawner", + "straymcage": "straymobspawner", + "strayspawner": "straymobspawner", + "straycage": "straymobspawner", + "huskmobspawner": { + "material": "SPAWNER", + "entity": "HUSK" + }, + "huskmobcage": "huskmobspawner", + "huskmonsterspawner": "huskmobspawner", + "huskmonstercage": "huskmobspawner", + "huskmspawner": "huskmobspawner", + "huskmcage": "huskmobspawner", + "huskspawner": "huskmobspawner", + "huskcage": "huskmobspawner", + "zombievillagermobspawner": { + "material": "SPAWNER", + "entity": "ZOMBIE_VILLAGER" + }, + "zombievillagermobcage": "zombievillagermobspawner", + "zombievillagermonsterspawner": "zombievillagermobspawner", + "zombievillagermonstercage": "zombievillagermobspawner", + "zombievillagermspawner": "zombievillagermobspawner", + "zombievillagermcage": "zombievillagermobspawner", + "zombievillagerspawner": "zombievillagermobspawner", + "zombievillagercage": "zombievillagermobspawner", + "zvillagermobspawner": "zombievillagermobspawner", + "zvillagermobcage": "zombievillagermobspawner", + "zvillagermonsterspawner": "zombievillagermobspawner", + "zvillagermonstercage": "zombievillagermobspawner", + "zvillagermspawner": "zombievillagermobspawner", + "zvillagermcage": "zombievillagermobspawner", + "zvillagerspawner": "zombievillagermobspawner", + "zvillagercage": "zombievillagermobspawner", + "deadvillagermobspawner": "zombievillagermobspawner", + "deadvillagermobcage": "zombievillagermobspawner", + "deadvillagermonsterspawner": "zombievillagermobspawner", + "deadvillagermonstercage": "zombievillagermobspawner", + "deadvillagermspawner": "zombievillagermobspawner", + "deadvillagermcage": "zombievillagermobspawner", + "deadvillagerspawner": "zombievillagermobspawner", + "deadvillagercage": "zombievillagermobspawner", + "dvillagermobspawner": "zombievillagermobspawner", + "dvillagermobcage": "zombievillagermobspawner", + "dvillagermonsterspawner": "zombievillagermobspawner", + "dvillagermonstercage": "zombievillagermobspawner", + "dvillagermspawner": "zombievillagermobspawner", + "dvillagermcage": "zombievillagermobspawner", + "dvillagerspawner": "zombievillagermobspawner", + "dvillagercage": "zombievillagermobspawner", + "zvillmobspawner": "zombievillagermobspawner", + "zvillmobcage": "zombievillagermobspawner", + "zvillmonsterspawner": "zombievillagermobspawner", + "zvillmonstercage": "zombievillagermobspawner", + "zvillmspawner": "zombievillagermobspawner", + "zvillmcage": "zombievillagermobspawner", + "zvillspawner": "zombievillagermobspawner", + "zvillcage": "zombievillagermobspawner", + "dvillmobspawner": "zombievillagermobspawner", + "dvillmobcage": "zombievillagermobspawner", + "dvillmonsterspawner": "zombievillagermobspawner", + "dvillmonstercage": "zombievillagermobspawner", + "dvillmspawner": "zombievillagermobspawner", + "dvillmcage": "zombievillagermobspawner", + "dvillspawner": "zombievillagermobspawner", + "dvillcage": "zombievillagermobspawner", + "skeletonhorsemobspawner": { + "material": "SPAWNER", + "entity": "SKELETON_HORSE" + }, + "skeletonhorsemobcage": "skeletonhorsemobspawner", + "skeletonhorsemonsterspawner": "skeletonhorsemobspawner", + "skeletonhorsemonstercage": "skeletonhorsemobspawner", + "skeletonhorsemspawner": "skeletonhorsemobspawner", + "skeletonhorsemcage": "skeletonhorsemobspawner", + "skeletonhorsespawner": "skeletonhorsemobspawner", + "skeletonhorsecage": "skeletonhorsemobspawner", + "shorsemobspawner": "skeletonhorsemobspawner", + "shorsemobcage": "skeletonhorsemobspawner", + "shorsemonsterspawner": "skeletonhorsemobspawner", + "shorsemonstercage": "skeletonhorsemobspawner", + "shorsemspawner": "skeletonhorsemobspawner", + "shorsemcage": "skeletonhorsemobspawner", + "shorsespawner": "skeletonhorsemobspawner", + "shorsecage": "skeletonhorsemobspawner", + "bonehorsemobspawner": "skeletonhorsemobspawner", + "bonehorsemobcage": "skeletonhorsemobspawner", + "bonehorsemonsterspawner": "skeletonhorsemobspawner", + "bonehorsemonstercage": "skeletonhorsemobspawner", + "bonehorsemspawner": "skeletonhorsemobspawner", + "bonehorsemcage": "skeletonhorsemobspawner", + "bonehorsespawner": "skeletonhorsemobspawner", + "bonehorsecage": "skeletonhorsemobspawner", + "zombiehorsemobspawner": { + "material": "SPAWNER", + "entity": "ZOMBIE_HORSE" + }, + "zombiehorsemobcage": "zombiehorsemobspawner", + "zombiehorsemonsterspawner": "zombiehorsemobspawner", + "zombiehorsemonstercage": "zombiehorsemobspawner", + "zombiehorsemspawner": "zombiehorsemobspawner", + "zombiehorsemcage": "zombiehorsemobspawner", + "zombiehorsespawner": "zombiehorsemobspawner", + "zombiehorsecage": "zombiehorsemobspawner", + "zhorsemobspawner": "zombiehorsemobspawner", + "zhorsemobcage": "zombiehorsemobspawner", + "zhorsemonsterspawner": "zombiehorsemobspawner", + "zhorsemonstercage": "zombiehorsemobspawner", + "zhorsemspawner": "zombiehorsemobspawner", + "zhorsemcage": "zombiehorsemobspawner", + "zhorsespawner": "zombiehorsemobspawner", + "zhorsecage": "zombiehorsemobspawner", + "donkeymobspawner": { + "material": "SPAWNER", + "entity": "DONKEY" + }, + "donkeymobcage": "donkeymobspawner", + "donkeymonsterspawner": "donkeymobspawner", + "donkeymonstercage": "donkeymobspawner", + "donkeymspawner": "donkeymobspawner", + "donkeymcage": "donkeymobspawner", + "donkeyspawner": "donkeymobspawner", + "donkeycage": "donkeymobspawner", + "mulemobspawner": { + "material": "SPAWNER", + "entity": "MULE" + }, + "mulemobcage": "mulemobspawner", + "mulemonsterspawner": "mulemobspawner", + "mulemonstercage": "mulemobspawner", + "mulemspawner": "mulemobspawner", + "mulemcage": "mulemobspawner", + "mulespawner": "mulemobspawner", + "mulecage": "mulemobspawner", + "evokermobspawner": { + "material": "SPAWNER", + "entity": "EVOKER" + }, + "evokermobcage": "evokermobspawner", + "evokermonsterspawner": "evokermobspawner", + "evokermonstercage": "evokermobspawner", + "evokermspawner": "evokermobspawner", + "evokermcage": "evokermobspawner", + "evokerspawner": "evokermobspawner", + "evokercage": "evokermobspawner", + "vexmobspawner": { + "material": "SPAWNER", + "entity": "VEX" + }, + "vexmobcage": "vexmobspawner", + "vexmonsterspawner": "vexmobspawner", + "vexmonstercage": "vexmobspawner", + "vexmspawner": "vexmobspawner", + "vexmcage": "vexmobspawner", + "vexspawner": "vexmobspawner", + "vexcage": "vexmobspawner", + "vindicatormobspawner": { + "material": "SPAWNER", + "entity": "VINDICATOR" + }, + "vindicatormobcage": "vindicatormobspawner", + "vindicatormonsterspawner": "vindicatormobspawner", + "vindicatormonstercage": "vindicatormobspawner", + "vindicatormspawner": "vindicatormobspawner", + "vindicatormcage": "vindicatormobspawner", + "vindicatorspawner": "vindicatormobspawner", + "vindicatorcage": "vindicatormobspawner", + "vinmobspawner": "vindicatormobspawner", + "vinmobcage": "vindicatormobspawner", + "vinmonsterspawner": "vindicatormobspawner", + "vinmonstercage": "vindicatormobspawner", + "vinmspawner": "vindicatormobspawner", + "vinmcage": "vindicatormobspawner", + "vinspawner": "vindicatormobspawner", + "vincage": "vindicatormobspawner", + "creepermobspawner": { + "material": "SPAWNER", + "entity": "CREEPER" + }, + "creepermobcage": "creepermobspawner", + "creepermonsterspawner": "creepermobspawner", + "creepermonstercage": "creepermobspawner", + "creepermspawner": "creepermobspawner", + "creepermcage": "creepermobspawner", + "creeperspawner": "creepermobspawner", + "creepercage": "creepermobspawner", + "crmobspawner": "creepermobspawner", + "crmobcage": "creepermobspawner", + "crmonsterspawner": "creepermobspawner", + "crmonstercage": "creepermobspawner", + "crmspawner": "creepermobspawner", + "crmcage": "creepermobspawner", + "crspawner": "creepermobspawner", + "crcage": "creepermobspawner", + "skeletonmobspawner": { + "material": "SPAWNER", + "entity": "SKELETON" + }, + "skeletonmobcage": "skeletonmobspawner", + "skeletonmonsterspawner": "skeletonmobspawner", + "skeletonmonstercage": "skeletonmobspawner", + "skeletonmspawner": "skeletonmobspawner", + "skeletonmcage": "skeletonmobspawner", + "skeletonspawner": "skeletonmobspawner", + "skeletoncage": "skeletonmobspawner", + "skmobspawner": "skeletonmobspawner", + "skmobcage": "skeletonmobspawner", + "skmonsterspawner": "skeletonmobspawner", + "skmonstercage": "skeletonmobspawner", + "skmspawner": "skeletonmobspawner", + "skmcage": "skeletonmobspawner", + "skspawner": "skeletonmobspawner", + "skcage": "skeletonmobspawner", + "spidermobspawner": { + "material": "SPAWNER", + "entity": "SPIDER" + }, + "spidermobcage": "spidermobspawner", + "spidermonsterspawner": "spidermobspawner", + "spidermonstercage": "spidermobspawner", + "spidermspawner": "spidermobspawner", + "spidermcage": "spidermobspawner", + "spiderspawner": "spidermobspawner", + "spidercage": "spidermobspawner", + "giantmobspawner": { + "material": "SPAWNER", + "entity": "GIANT" + }, + "giantmobcage": "giantmobspawner", + "giantmonsterspawner": "giantmobspawner", + "giantmonstercage": "giantmobspawner", + "giantmspawner": "giantmobspawner", + "giantmcage": "giantmobspawner", + "giantspawner": "giantmobspawner", + "giantcage": "giantmobspawner", + "zombiemobspawner": { + "material": "SPAWNER", + "entity": "ZOMBIE" + }, + "zombiemobcage": "zombiemobspawner", + "zombiemonsterspawner": "zombiemobspawner", + "zombiemonstercage": "zombiemobspawner", + "zombiemspawner": "zombiemobspawner", + "zombiemcage": "zombiemobspawner", + "zombiespawner": "zombiemobspawner", + "zombiecage": "zombiemobspawner", + "slimemobspawner": { + "material": "SPAWNER", + "entity": "SLIME" + }, + "slimemobcage": "slimemobspawner", + "slimemonsterspawner": "slimemobspawner", + "slimemonstercage": "slimemobspawner", + "slimemspawner": "slimemobspawner", + "slimemcage": "slimemobspawner", + "slimespawner": "slimemobspawner", + "slimecage": "slimemobspawner", + "ghastmobspawner": { + "material": "SPAWNER", + "entity": "GHAST" + }, + "ghastmobcage": "ghastmobspawner", + "ghastmonsterspawner": "ghastmobspawner", + "ghastmonstercage": "ghastmobspawner", + "ghastmspawner": "ghastmobspawner", + "ghastmcage": "ghastmobspawner", + "ghastspawner": "ghastmobspawner", + "ghastcage": "ghastmobspawner", + "endermanmobspawner": { + "material": "SPAWNER", + "entity": "ENDERMAN" + }, + "endermanmobcage": "endermanmobspawner", + "endermanmonsterspawner": "endermanmobspawner", + "endermanmonstercage": "endermanmobspawner", + "endermanmspawner": "endermanmobspawner", + "endermanmcage": "endermanmobspawner", + "endermanspawner": "endermanmobspawner", + "endermancage": "endermanmobspawner", + "cavespidermobspawner": { + "material": "SPAWNER", + "entity": "CAVE_SPIDER" + }, + "cavespidermobcage": "cavespidermobspawner", + "cavespidermonsterspawner": "cavespidermobspawner", + "cavespidermonstercage": "cavespidermobspawner", + "cavespidermspawner": "cavespidermobspawner", + "cavespidermcage": "cavespidermobspawner", + "cavespiderspawner": "cavespidermobspawner", + "cavespidercage": "cavespidermobspawner", + "silverfishmobspawner": { + "material": "SPAWNER", + "entity": "SILVERFISH" + }, + "silverfishmobcage": "silverfishmobspawner", + "silverfishmonsterspawner": "silverfishmobspawner", + "silverfishmonstercage": "silverfishmobspawner", + "silverfishmspawner": "silverfishmobspawner", + "silverfishmcage": "silverfishmobspawner", + "silverfishspawner": "silverfishmobspawner", + "silverfishcage": "silverfishmobspawner", + "blazemobspawner": { + "material": "SPAWNER", + "entity": "BLAZE" + }, + "blazemobcage": "blazemobspawner", + "blazemonsterspawner": "blazemobspawner", + "blazemonstercage": "blazemobspawner", + "blazemspawner": "blazemobspawner", + "blazemcage": "blazemobspawner", + "blazespawner": "blazemobspawner", + "blazecage": "blazemobspawner", + "lavaslimemobspawner": { + "material": "SPAWNER", + "entity": "MAGMA_CUBE" + }, + "lavaslimemobcage": "lavaslimemobspawner", + "lavaslimemonsterspawner": "lavaslimemobspawner", + "lavaslimemonstercage": "lavaslimemobspawner", + "lavaslimemspawner": "lavaslimemobspawner", + "lavaslimemcage": "lavaslimemobspawner", + "lavaslimespawner": "lavaslimemobspawner", + "lavaslimecage": "lavaslimemobspawner", + "lavacubemobspawner": "lavaslimemobspawner", + "lavacubemobcage": "lavaslimemobspawner", + "lavacubemonsterspawner": "lavaslimemobspawner", + "lavacubemonstercage": "lavaslimemobspawner", + "lavacubemspawner": "lavaslimemobspawner", + "lavacubemcage": "lavaslimemobspawner", + "lavacubespawner": "lavaslimemobspawner", + "lavacubecage": "lavaslimemobspawner", + "magmacubemobspawner": "lavaslimemobspawner", + "magmacubemobcage": "lavaslimemobspawner", + "magmacubemonsterspawner": "lavaslimemobspawner", + "magmacubemonstercage": "lavaslimemobspawner", + "magmacubemspawner": "lavaslimemobspawner", + "magmacubemcage": "lavaslimemobspawner", + "magmacubespawner": "lavaslimemobspawner", + "magmacubecage": "lavaslimemobspawner", + "magmaslimemobspawner": "lavaslimemobspawner", + "magmaslimemobcage": "lavaslimemobspawner", + "magmaslimemonsterspawner": "lavaslimemobspawner", + "magmaslimemonstercage": "lavaslimemobspawner", + "magmaslimemspawner": "lavaslimemobspawner", + "magmaslimemcage": "lavaslimemobspawner", + "magmaslimespawner": "lavaslimemobspawner", + "magmaslimecage": "lavaslimemobspawner", + "batmobspawner": { + "material": "SPAWNER", + "entity": "BAT" + }, + "batmobcage": "batmobspawner", + "batmonsterspawner": "batmobspawner", + "batmonstercage": "batmobspawner", + "batmspawner": "batmobspawner", + "batmcage": "batmobspawner", + "batspawner": "batmobspawner", + "batcage": "batmobspawner", + "witchmobspawner": { + "material": "SPAWNER", + "entity": "WITCH" + }, + "witchmobcage": "witchmobspawner", + "witchmonsterspawner": "witchmobspawner", + "witchmonstercage": "witchmobspawner", + "witchmspawner": "witchmobspawner", + "witchmcage": "witchmobspawner", + "witchspawner": "witchmobspawner", + "witchcage": "witchmobspawner", + "endermitemobspawner": { + "material": "SPAWNER", + "entity": "ENDERMITE" + }, + "endermitemobcage": "endermitemobspawner", + "endermitemonsterspawner": "endermitemobspawner", + "endermitemonstercage": "endermitemobspawner", + "endermitemspawner": "endermitemobspawner", + "endermitemcage": "endermitemobspawner", + "endermitespawner": "endermitemobspawner", + "endermitecage": "endermitemobspawner", + "guardianmobspawner": { + "material": "SPAWNER", + "entity": "GUARDIAN" + }, + "guardianmobcage": "guardianmobspawner", + "guardianmonsterspawner": "guardianmobspawner", + "guardianmonstercage": "guardianmobspawner", + "guardianmspawner": "guardianmobspawner", + "guardianmcage": "guardianmobspawner", + "guardianspawner": "guardianmobspawner", + "guardiancage": "guardianmobspawner", + "shulkermobspawner": { + "material": "SPAWNER", + "entity": "SHULKER" + }, + "shulkermobcage": "shulkermobspawner", + "shulkermonsterspawner": "shulkermobspawner", + "shulkermonstercage": "shulkermobspawner", + "shulkermspawner": "shulkermobspawner", + "shulkermcage": "shulkermobspawner", + "shulkerspawner": "shulkermobspawner", + "shulkercage": "shulkermobspawner", + "shulkmobspawner": "shulkermobspawner", + "shulkmobcage": "shulkermobspawner", + "shulkmonsterspawner": "shulkermobspawner", + "shulkmonstercage": "shulkermobspawner", + "shulkmspawner": "shulkermobspawner", + "shulkmcage": "shulkermobspawner", + "shulkspawner": "shulkermobspawner", + "shulkcage": "shulkermobspawner", + "pigmobspawner": { + "material": "SPAWNER", + "entity": "PIG" + }, + "pigmobcage": "pigmobspawner", + "pigmonsterspawner": "pigmobspawner", + "pigmonstercage": "pigmobspawner", + "pigmspawner": "pigmobspawner", + "pigmcage": "pigmobspawner", + "pigspawner": "pigmobspawner", + "pigcage": "pigmobspawner", + "mobspawner": "pigmobspawner", + "mobcage": "pigmobspawner", + "monsterspawner": "pigmobspawner", + "monstercage": "pigmobspawner", + "mspawner": "pigmobspawner", + "mcage": "pigmobspawner", + "cage": "pigmobspawner", + "sheepmobspawner": { + "material": "SPAWNER", + "entity": "SHEEP" + }, + "sheepmobcage": "sheepmobspawner", + "sheepmonsterspawner": "sheepmobspawner", + "sheepmonstercage": "sheepmobspawner", + "sheepmspawner": "sheepmobspawner", + "sheepmcage": "sheepmobspawner", + "sheepspawner": "sheepmobspawner", + "sheepcage": "sheepmobspawner", + "cowmobspawner": { + "material": "SPAWNER", + "entity": "COW" + }, + "cowmobcage": "cowmobspawner", + "cowmonsterspawner": "cowmobspawner", + "cowmonstercage": "cowmobspawner", + "cowmspawner": "cowmobspawner", + "cowmcage": "cowmobspawner", + "cowspawner": "cowmobspawner", + "cowcage": "cowmobspawner", + "chickenmobspawner": { + "material": "SPAWNER", + "entity": "CHICKEN" + }, + "chickenmobcage": "chickenmobspawner", + "chickenmonsterspawner": "chickenmobspawner", + "chickenmonstercage": "chickenmobspawner", + "chickenmspawner": "chickenmobspawner", + "chickenmcage": "chickenmobspawner", + "chickenspawner": "chickenmobspawner", + "chickencage": "chickenmobspawner", + "squidmobspawner": { + "material": "SPAWNER", + "entity": "SQUID" + }, + "squidmobcage": "squidmobspawner", + "squidmonsterspawner": "squidmobspawner", + "squidmonstercage": "squidmobspawner", + "squidmspawner": "squidmobspawner", + "squidmcage": "squidmobspawner", + "squidspawner": "squidmobspawner", + "squidcage": "squidmobspawner", + "wolfmobspawner": { + "material": "SPAWNER", + "entity": "WOLF" + }, + "wolfmobcage": "wolfmobspawner", + "wolfmonsterspawner": "wolfmobspawner", + "wolfmonstercage": "wolfmobspawner", + "wolfmspawner": "wolfmobspawner", + "wolfmcage": "wolfmobspawner", + "wolfspawner": "wolfmobspawner", + "wolfcage": "wolfmobspawner", + "mooshroommobspawner": { + "material": "SPAWNER", + "entity": "MUSHROOM_COW" + }, + "mooshroommobcage": "mooshroommobspawner", + "mooshroommonsterspawner": "mooshroommobspawner", + "mooshroommonstercage": "mooshroommobspawner", + "mooshroommspawner": "mooshroommobspawner", + "mooshroommcage": "mooshroommobspawner", + "mooshroomspawner": "mooshroommobspawner", + "mooshroomcage": "mooshroommobspawner", + "mushroommobspawner": "mooshroommobspawner", + "mushroommobcage": "mooshroommobspawner", + "mushroommonsterspawner": "mooshroommobspawner", + "mushroommonstercage": "mooshroommobspawner", + "mushroommspawner": "mooshroommobspawner", + "mushroommcage": "mooshroommobspawner", + "mushroomspawner": "mooshroommobspawner", + "mushroomcage": "mooshroommobspawner", + "ocelotmobspawner": { + "material": "SPAWNER", + "entity": "OCELOT" + }, + "ocelotmobcage": "ocelotmobspawner", + "ocelotmonsterspawner": "ocelotmobspawner", + "ocelotmonstercage": "ocelotmobspawner", + "ocelotmspawner": "ocelotmobspawner", + "ocelotmcage": "ocelotmobspawner", + "ocelotspawner": "ocelotmobspawner", + "ocelotcage": "ocelotmobspawner", + "catmobspawner": "ocelotmobspawner", + "catmobcage": "ocelotmobspawner", + "catmonsterspawner": "ocelotmobspawner", + "catmonstercage": "ocelotmobspawner", + "catmspawner": "ocelotmobspawner", + "catmcage": "ocelotmobspawner", + "catspawner": "ocelotmobspawner", + "catcage": "ocelotmobspawner", + "irongolemmobspawner": { + "material": "SPAWNER", + "entity": "IRON_GOLEM" + }, + "irongolemmobcage": "irongolemmobspawner", + "irongolemmonsterspawner": "irongolemmobspawner", + "irongolemmonstercage": "irongolemmobspawner", + "irongolemmspawner": "irongolemmobspawner", + "irongolemmcage": "irongolemmobspawner", + "irongolemspawner": "irongolemmobspawner", + "irongolemcage": "irongolemmobspawner", + "igolemmobspawner": "irongolemmobspawner", + "igolemmobcage": "irongolemmobspawner", + "igolemmonsterspawner": "irongolemmobspawner", + "igolemmonstercage": "irongolemmobspawner", + "igolemmspawner": "irongolemmobspawner", + "igolemmcage": "irongolemmobspawner", + "igolemspawner": "irongolemmobspawner", + "igolemcage": "irongolemmobspawner", + "horsemobspawner": { + "material": "SPAWNER", + "entity": "HORSE" + }, + "horsemobcage": "horsemobspawner", + "horsemonsterspawner": "horsemobspawner", + "horsemonstercage": "horsemobspawner", + "horsemspawner": "horsemobspawner", + "horsemcage": "horsemobspawner", + "horsespawner": "horsemobspawner", + "horsecage": "horsemobspawner", + "rabbitmobspawner": { + "material": "SPAWNER", + "entity": "RABBIT" + }, + "rabbitmobcage": "rabbitmobspawner", + "rabbitmonsterspawner": "rabbitmobspawner", + "rabbitmonstercage": "rabbitmobspawner", + "rabbitmspawner": "rabbitmobspawner", + "rabbitmcage": "rabbitmobspawner", + "rabbitspawner": "rabbitmobspawner", + "rabbitcage": "rabbitmobspawner", + "polarbearmobspawner": { + "material": "SPAWNER", + "entity": "POLAR_BEAR" + }, + "polarbearmobcage": "polarbearmobspawner", + "polarbearmonsterspawner": "polarbearmobspawner", + "polarbearmonstercage": "polarbearmobspawner", + "polarbearmspawner": "polarbearmobspawner", + "polarbearmcage": "polarbearmobspawner", + "polarbearspawner": "polarbearmobspawner", + "polarbearcage": "polarbearmobspawner", + "polarmobspawner": "polarbearmobspawner", + "polarmobcage": "polarbearmobspawner", + "polarmonsterspawner": "polarbearmobspawner", + "polarmonstercage": "polarbearmobspawner", + "polarmspawner": "polarbearmobspawner", + "polarmcage": "polarbearmobspawner", + "polarspawner": "polarbearmobspawner", + "polarcage": "polarbearmobspawner", + "bearmobspawner": "polarbearmobspawner", + "bearmobcage": "polarbearmobspawner", + "bearmonsterspawner": "polarbearmobspawner", + "bearmonstercage": "polarbearmobspawner", + "bearmspawner": "polarbearmobspawner", + "bearmcage": "polarbearmobspawner", + "bearspawner": "polarbearmobspawner", + "bearcage": "polarbearmobspawner", + "llamamobspawner": { + "material": "SPAWNER", + "entity": "LLAMA" + }, + "llamamobcage": "llamamobspawner", + "llamamonsterspawner": "llamamobspawner", + "llamamonstercage": "llamamobspawner", + "llamamspawner": "llamamobspawner", + "llamamcage": "llamamobspawner", + "llamaspawner": "llamamobspawner", + "llamacage": "llamamobspawner", + "parrotmobspawner": { + "material": "SPAWNER", + "entity": "PARROT" + }, + "parrotmobcage": "parrotmobspawner", + "parrotmonsterspawner": "parrotmobspawner", + "parrotmonstercage": "parrotmobspawner", + "parrotmspawner": "parrotmobspawner", + "parrotmcage": "parrotmobspawner", + "parrotspawner": "parrotmobspawner", + "parrotcage": "parrotmobspawner", + "villagermobspawner": { + "material": "SPAWNER", + "entity": "VILLAGER" + }, + "villagermobcage": "villagermobspawner", + "villagermonsterspawner": "villagermobspawner", + "villagermonstercage": "villagermobspawner", + "villagermspawner": "villagermobspawner", + "villagermcage": "villagermobspawner", + "villagerspawner": "villagermobspawner", + "villagercage": "villagermobspawner", + "turtlemobspawner": { + "material": "SPAWNER", + "entity": "TURTLE" + }, + "turtlemobcage": "turtlemobspawner", + "turtlemonsterspawner": "turtlemobspawner", + "turtlemonstercage": "turtlemobspawner", + "turtlemspawner": "turtlemobspawner", + "turtlemcage": "turtlemobspawner", + "turtlespawner": "turtlemobspawner", + "turtlecage": "turtlemobspawner", + "phantommobspawner": { + "material": "SPAWNER", + "entity": "PHANTOM" + }, + "phantommobcage": "phantommobspawner", + "phantommonsterspawner": "phantommobspawner", + "phantommonstercage": "phantommobspawner", + "phantommspawner": "phantommobspawner", + "phantommcage": "phantommobspawner", + "phantomspawner": "phantommobspawner", + "phantomcage": "phantommobspawner", + "codmobspawner": { + "material": "SPAWNER", + "entity": "COD" + }, + "codmobcage": "codmobspawner", + "codmonsterspawner": "codmobspawner", + "codmonstercage": "codmobspawner", + "codmspawner": "codmobspawner", + "codmcage": "codmobspawner", + "codspawner": "codmobspawner", + "codcage": "codmobspawner", + "salmonmobspawner": { + "material": "SPAWNER", + "entity": "SALMON" + }, + "salmonmobcage": "salmonmobspawner", + "salmonmonsterspawner": "salmonmobspawner", + "salmonmonstercage": "salmonmobspawner", + "salmonmspawner": "salmonmobspawner", + "salmonmcage": "salmonmobspawner", + "salmonspawner": "salmonmobspawner", + "salmoncage": "salmonmobspawner", + "pufferfishmobspawner": { + "material": "SPAWNER", + "entity": "PUFFERFISH" + }, + "pufferfishmobcage": "pufferfishmobspawner", + "pufferfishmonsterspawner": "pufferfishmobspawner", + "pufferfishmonstercage": "pufferfishmobspawner", + "pufferfishmspawner": "pufferfishmobspawner", + "pufferfishmcage": "pufferfishmobspawner", + "pufferfishspawner": "pufferfishmobspawner", + "pufferfishcage": "pufferfishmobspawner", + "puffermobspawner": "pufferfishmobspawner", + "puffermobcage": "pufferfishmobspawner", + "puffermonsterspawner": "pufferfishmobspawner", + "puffermonstercage": "pufferfishmobspawner", + "puffermspawner": "pufferfishmobspawner", + "puffermcage": "pufferfishmobspawner", + "pufferspawner": "pufferfishmobspawner", + "puffercage": "pufferfishmobspawner", + "pfishmobspawner": "pufferfishmobspawner", + "pfishmobcage": "pufferfishmobspawner", + "pfishmonsterspawner": "pufferfishmobspawner", + "pfishmonstercage": "pufferfishmobspawner", + "pfishmspawner": "pufferfishmobspawner", + "pfishmcage": "pufferfishmobspawner", + "pfishspawner": "pufferfishmobspawner", + "pfishcage": "pufferfishmobspawner", + "tropicalfishmobspawner": { + "material": "SPAWNER", + "entity": "TROPICAL_FISH" + }, + "tropicalfishmobcage": "tropicalfishmobspawner", + "tropicalfishmonsterspawner": "tropicalfishmobspawner", + "tropicalfishmonstercage": "tropicalfishmobspawner", + "tropicalfishmspawner": "tropicalfishmobspawner", + "tropicalfishmcage": "tropicalfishmobspawner", + "tropicalfishspawner": "tropicalfishmobspawner", + "tropicalfishcage": "tropicalfishmobspawner", + "tropicfishmobspawner": "tropicalfishmobspawner", + "tropicfishmobcage": "tropicalfishmobspawner", + "tropicfishmonsterspawner": "tropicalfishmobspawner", + "tropicfishmonstercage": "tropicalfishmobspawner", + "tropicfishmspawner": "tropicalfishmobspawner", + "tropicfishmcage": "tropicalfishmobspawner", + "tropicfishspawner": "tropicalfishmobspawner", + "tropicfishcage": "tropicalfishmobspawner", + "tfishmobspawner": "tropicalfishmobspawner", + "tfishmobcage": "tropicalfishmobspawner", + "tfishmonsterspawner": "tropicalfishmobspawner", + "tfishmonstercage": "tropicalfishmobspawner", + "tfishmspawner": "tropicalfishmobspawner", + "tfishmcage": "tropicalfishmobspawner", + "tfishspawner": "tropicalfishmobspawner", + "tfishcage": "tropicalfishmobspawner", + "tropicalfmobspawner": "tropicalfishmobspawner", + "tropicalfmobcage": "tropicalfishmobspawner", + "tropicalfmonsterspawner": "tropicalfishmobspawner", + "tropicalfmonstercage": "tropicalfishmobspawner", + "tropicalfmspawner": "tropicalfishmobspawner", + "tropicalfmcage": "tropicalfishmobspawner", + "tropicalfspawner": "tropicalfishmobspawner", + "tropicalfcage": "tropicalfishmobspawner", + "tropicfmobspawner": "tropicalfishmobspawner", + "tropicfmobcage": "tropicalfishmobspawner", + "tropicfmonsterspawner": "tropicalfishmobspawner", + "tropicfmonstercage": "tropicalfishmobspawner", + "tropicfmspawner": "tropicalfishmobspawner", + "tropicfmcage": "tropicalfishmobspawner", + "tropicfspawner": "tropicalfishmobspawner", + "tropicfcage": "tropicalfishmobspawner", + "drownedmobspawner": { + "material": "SPAWNER", + "entity": "DROWNED" + }, + "drownedmobcage": "drownedmobspawner", + "drownedmonsterspawner": "drownedmobspawner", + "drownedmonstercage": "drownedmobspawner", + "drownedmspawner": "drownedmobspawner", + "drownedmcage": "drownedmobspawner", + "drownedspawner": "drownedmobspawner", + "drownedcage": "drownedmobspawner", + "dolphinmobspawner": { + "material": "SPAWNER", + "entity": "DOLPHIN" + }, + "dolphinmobcage": "dolphinmobspawner", + "dolphinmonsterspawner": "dolphinmobspawner", + "dolphinmonstercage": "dolphinmobspawner", + "dolphinmspawner": "dolphinmobspawner", + "dolphinmcage": "dolphinmobspawner", + "dolphinspawner": "dolphinmobspawner", + "dolphincage": "dolphinmobspawner", + "eccomobspawner": "dolphinmobspawner", + "eccomobcage": "dolphinmobspawner", + "eccomonsterspawner": "dolphinmobspawner", + "eccomonstercage": "dolphinmobspawner", + "eccomspawner": "dolphinmobspawner", + "eccomcage": "dolphinmobspawner", + "eccospawner": "dolphinmobspawner", + "eccocage": "dolphinmobspawner" +} \ No newline at end of file diff --git a/Essentials/src/kits.yml b/Essentials/src/kits.yml new file mode 100644 index 000000000..3552fa834 --- /dev/null +++ b/Essentials/src/kits.yml @@ -0,0 +1,39 @@ +# EssentialsX kit configuration. +# If you don't have any kits defined in this file, the plugin will try to copy them from the config.yml + +# Note: All items MUST be followed by a quantity! +# All kit names should be lower case, and will be treated as lower in permissions/costs. +# Syntax: - name[:durability] amount [enchantment:level]... [itemmeta:value]... +# For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta +# 'delay' refers to the cooldown between how often you can use each kit, measured in seconds. +# Set delay to -1 for a one time kit. +# For more information, visit http://wiki.ess3.net/wiki/Kits +kits: + tools: + delay: 10 + items: + - stonesword 1 + - stoneshovel 1 + - stonepickaxe 1 + - stoneaxe 1 + dtools: + delay: 600 + items: + - dpickaxe 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens + - dshovel 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole + - lhelm 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day + - daxe:780 1 + notch: + delay: 6000 + items: + - playerhead 1 player:Notch + color: + delay: 6000 + items: + - writtenbook 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors + firework: + delay: 6000 + items: + - fireworkrocket 1 name:Angry_Creeper color:red fade:green type:creeper power:1 + - fireworkrocket 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1 + - fireworkrocket 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1 diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties index 7ebf94456..d6d7ee63a 100644 --- a/Essentials/src/messages.properties +++ b/Essentials/src/messages.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Could not find template {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Creating config from template\: {0} creatingEmptyConfig=Creating empty config\: {0} creative=creative @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file. disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}. distance=\u00a76Distance\: {0} dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t move. -downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 0.6 MB, city\: 20MB) +downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB) duplicatedUserdata=Duplicated userdata\: {0} and {1}. durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left. +east=E editBookContents=\u00a7eYou may now edit the contents of this book. enabled=enabled enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Invalid charge. invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. invalidHome=\u00a74Home\u00a7c {0} \u00a74doesn''t exist\! invalidHomeName=\u00a74Invalid home name\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Invalid mob type. invalidNumber=Invalid Number. invalidPotion=\u00a74Invalid Potion. @@ -207,7 +209,9 @@ inventoryClearingFromAll=\u00a76Clearing the inventory of all users... inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76. is=is isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74That item cannot be sold to the server. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc. itemNames=\u00a76Item short names\:\u00a7r {0} itemNotEnough1=\u00a74You do not have enough of that item to sell. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each). itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each). itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} -itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Item\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74You do the crime, you do the time. jailNotExist=\u00a74That jail does not exist. jailReleased=\u00a76Player \u00a7c{0}\u00a76 unjailed. @@ -315,6 +320,7 @@ nickChanged=\u00a76Nickname changed. nickDisplayName=\u00a74You have to enable change-displayname in Essentials config. nickInUse=\u00a74That name is already in use. nickNamesAlpha=\u00a74Nicknames must be alphanumeric. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76You no longer have a nickname. nickSet=\u00a76Your nickname is now \u00a7c{0}\u00a76. nickTooLong=\u00a74That nickname is too long. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u noBreakBedrock=\u00a74You are not allowed to destroy bedrock. noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74. noDurability=\u00a74This item does not have a durability. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Warning\! God mode in this world disabled. noHelpFound=\u00a74No matching commands. noHomeSetPlayer=\u00a76Player has not set a home. noIgnored=\u00a76You are not ignoring anyone. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74You do not have access to this kit. noKitPermission=\u00a74You need the \u00a7c{0}\u00a74 permission to use that kit. noKits=\u00a76There are no kits available yet. @@ -363,6 +373,7 @@ onlyDayNight=/time only supports day/night. onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74/weather only supports sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait... oversizedTempban=\u00a74You may not ban a player for this period of time. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. questionFormat=\u00a72[Question]\u00a7r {0} radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}. readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=There is no recipe by that number. @@ -462,6 +474,7 @@ sellBulkPermission=\u00a76You do not have permission to bulk sell. sellHandPermission=\u00a76You do not have permission to hand sell. serverFull=Server is full\! serverTotal=\u00a76Server Total\:\u00a7c {0} +serverUnsupported=You are running an unsupported server version! setBal=\u00a7aYour balance was set to {0}. setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}. setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76. @@ -472,6 +485,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74You are not allowed to create sign here. similarWarpExist=\u00a74A warp with a similar name already exists. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Malformed size. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -535,7 +551,7 @@ typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. typeTpaccept=\u00a76To teleport, type \u00a7c/tpaccept\u00a76. typeTpdeny=\u00a76To deny this request, type \u00a7c/tpdeny\u00a76. typeWorldName=\u00a76You can also type the name of a specific world. -unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74, this is not a spawnable item. +unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74; this is not a spawnable item. unableToSpawnMob=\u00a74Unable to spawn mob. unignorePlayer=\u00a76You are not ignoring player\u00a7c {0} \u00a76anymore. unknownItemId=\u00a74Unknown item id\:\u00a7r {0}\u00a74. @@ -561,6 +577,11 @@ userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined thi usingTempFolderForTesting=Using temp folder for testing\: vanish=\u00a76Vanish for {0}\u00a76\: {1} vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands. +versionOutputVaultMissing=\u00a74Vault is not installed. Chat and permissions may not work. +versionOutputFine=\u00a76{0} version: \u00a7a{1} +versionOutputWarn=\u00a76{0} version: \u00a7c{1} +versionOutputUnsupported=\u00a7d{0} \u00a76version: \u00a7d{1} +versionOutputUnsupportedPlugins=\u00a76You are running \u00a7dunsupported plugins\u00a76! versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version. versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version. voiceSilenced=\u00a76Your voice has been silenced\! @@ -581,6 +602,7 @@ weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00 weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds. weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76. weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Banned\:\u00a7r {0} @@ -609,4 +631,4 @@ worthSet=\u00a76Worth value set year=year years=years youAreHealed=\u00a76You have been healed. -youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail. \ No newline at end of file +youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail. diff --git a/Essentials/src/messages_cs.properties b/Essentials/src/messages_cs.properties index 92361bfa2..9a9a0c669 100644 --- a/Essentials/src/messages_cs.properties +++ b/Essentials/src/messages_cs.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Nelze najit sablonu {0} createdKit=\u00a76Kit vytvoren \u00a7c{0} \u00a76s \u00a7c{1} \u00a76vecmi a spozdenim \u00a7c{2} createKitFailed=\u00a74Chyba pri vytvareni kitu {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Kit vytvoren: \u00a7f{0}\n\u00a76Spozdeni: \u00a7f{1}\n\u00a76Odkaz: \u00a7f{2}\n\u00a76Zkopiruj obsah na odkazu do config.yml. +createKitSuccess=\u00a76Kit vytvoren: \u00a7f{0}\n\u00a76Spozdeni: \u00a7f{1}\n\u00a76Odkaz: \u00a7f{2}\n\u00a76Zkopiruj obsah na odkazu do kits.yml. creatingConfigFromTemplate=Vytvarim config ze sablony\: {0} creatingEmptyConfig=Vytvarim prazdny config\: {0} creative=Creative @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74Spawnuti tohoto moba je zakazno v configuracnim soubor disableUnlimited=\u00a76Zablokovano neomezene pokladani\u00a7c {0} \u00a76hracem {1}. distance=\u00a76Vzdalenost\: {0} dontMoveMessage=\u00a76Teleport bude zahajen za\u00a7c {0}\u00a76. Nehybej se. -downloadingGeoIp=Stahuji GeoIP databazi ... muze to chvilku trvat (staty\: 0.6 MB, mesta\: 20MB) +downloadingGeoIp=Stahuji GeoIP databazi ... muze to chvilku trvat (staty\: 1.7 MB, mesta\: 30MB) duplicatedUserdata=Duplicitni uzivatelska data\: {0} a {1}. durability=\u00a76Tomuto nastroji zbyva \u00a7c{0}\u00a76 pouziti. +east=E editBookContents=\u00a7eNyni muzes upravovat obsah teto knihy. enabled=povoleno enableUnlimited=\u00a76Davam neomezene mnozstvi\u00a7c {0} \u00a76na \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Neplatny poplatek. invalidFireworkFormat=\u00a74Nastaveni \u00a7c{0} \u00a74neni platna hodnota pro \u00a7c{1}\u00a74. invalidHome=\u00a74Domov\u00a7c {0} \u00a74neexistuje\! invalidHomeName=\u00a74Spatny nazev domova\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Neplatny druh moba\! invalidNumber=Neplatne cislo. invalidPotion=\u00a74Spatny lektvar. @@ -207,7 +209,9 @@ inventoryClearingFromAll=\u00a76Promazavam inventare vsech harcu... inventoryClearingStack=\u00a76Odstraneno\u00a7c {0}\u00a76z \u00a7c{1} \u00a76od \u00a7c{2}\u00a76. is=je isIpBanned=\u00a76IP \u00a7c{0} \u00a76je zabanovana. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74Tento predmet nelze prodat serveru. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Predmety musi byt vymeneny ve stacku. itemNames=\u00a76Zkracene nazvy predmetu\:\u00a7r {0} itemNotEnough1=\u00a74Nemas dostatek, aby jsi jej mohl prodat. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74Nemas zadne predmety ktere lze prevest na bloky. itemSold=\u00a7aProdano za \u00a7c{0} \u00a7a({1} {2} za cenu {3} kus) itemSoldConsole=\u00a7a{0} \u00a7aProdano {1} za \u00a7a{2} \u00a7a({3} za cenu {4} kus). itemSpawn=\u00a76Davam\u00a7c {0}\u00a7c {1} -itemType=\u00a76Predmet\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Predmet\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Tento hrace ja jiz uveznen\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74Porusil jsi pravidla, ted si to odsedis\! jailNotExist=\u00a74Toto vezeni neexistuje. jailReleased=\u00a76Hrac \u00a7c{0}\u00a76 byl propusten na svobodu. @@ -315,6 +320,7 @@ nickChanged=\u00a76Jmeno zmeneno. nickDisplayName=\u00a74Musis nejdrive povolit change-displayname v Essentials configu. nickInUse=\u00a74Toto jmeno jiz nekdo ma. nickNamesAlpha=\u00a74Jmeno musi byt alfanumericky. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a74Mas vychozi jmeno. nickSet=\u00a76Tvoje jmeno je nyni \u00a7c{0}\u00a76. nickTooLong=\u00a74Toto jmeno je prilis dlouhe. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74Nemas opravneni k \u00a7c{0}\u00a74. noBreakBedrock=\u00a74Nemas opravneni nicit bedrock. noDestroyPermission=\u00a74Nemas opravneni nicit \u00a7c{0}\u00a74. noDurability=\u00a74Tento predmet nema zadnou vydrz. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Varovani\! God-mode je v tomto svete zakazan. noHelpFound=\u00a74Zadne shodne prikazy. noHomeSetPlayer=\u00a76Hrac nema nastaveny domov. noIgnored=\u00a76Nikoho neignorujes. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Nemas opravneni na tento kit. noKitPermission=\u00a74Potrebujes \u00a7c{0}\u00a74 opravneni, aby jsi mohl/a pouzit tento kit. noKits=\u00a76Nejsou zadne dostupne kity. @@ -363,6 +373,7 @@ onlyDayNight=/time podporuje pouze day/night. onlyPlayers=\u00a74Pouze hraci ve hre mohou pouzit \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Muze nastavit pouze majitel hlavy hrace (\u00a7c397\:3\u00a74). onlySunStorm=/u00a74/weather podporuje pouze sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Usporadavam bohatstvi\u00a7c {0} \u00a76hracu, cekejte ... oversizedTempban=\u00a74Nemuzes potrestat hrace tak dlouhou dobou. payConfirmToggleOff=\u00a76Vyzva k potvrzeni platby zrusena. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Pocasi hrace\u00a7c {1} \u00a76bylo nastaveno na\u00a7c {0}\u questionFormat=\u00a72[Otazka]\u00a7f {0} radiusTooBig=\u00a74Polomer je prilis velky\! Maximalni polomer je \u00a7c{0} bloku\u00a74. readNextPage=\u00a76Napis\u00a7c /{0} {1} \u00a76pro precteni dalsi stranky. +realName=\u00a7f{0}\u00a7r\u00a76 je \u00a7f{1} recentlyForeverAlone=\u00a74{0} v posledni dobe offline. recipe=\u00a76Vypis receptu \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 z \u00a7c{2}\u00a76) recipeBadIndex=Pro toto cislo neexistuje zadny recept. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Nemas opravneni zde vytvaret cedule. similarWarpExist=\u00a74Warp s podobnym jmenem jiz existuje. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Hlava zmenena na \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Velikost zmenena. socialSpy=\u00a76SocialSpy hrace \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76Nastavil jsi \u00a7cbourku\u00a76 v \u00a7c{0}\u00a76. weatherStormFor=\u00a76Nastavil jsi \u00a7cbourku\u00a76 v \u00a7c{0} \u00a76na \u00a7c{1} sekund\u00a76. weatherSun=\u00a76Nastavil jsi slunecne pocasi v \u00a7c{0}\u00a76. weatherSunFor=\u00a76Nastavil jsi slunecne pocasi v \u00a7c{0} \u00a76na \u00a7c{1} sekund\u00a76. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Od {1}) whoisBanned=\u00a76 - Zabanovan\:\u00a7r {0} diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties index 15136aad1..acd427d19 100644 --- a/Essentials/src/messages_da.properties +++ b/Essentials/src/messages_da.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Kunne ikke finde skabelon {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Opretter konfig fra skabelon\: {0} creatingEmptyConfig=Opretter tom konfig\: {0} creative=kreativ @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74Spawning af dette mob er deaktiveret i konfigurationsf disableUnlimited=\u00a76Deaktiverede ubegr\u00e6nset placering af\u00a7c {0} \u00a76i {1}. distance=\u00a76Afstand\: {0} dontMoveMessage=\u00a76Teleportering vil begynde om\u00a7c {0}\u00a76. Bliv st\u00e5ende. -downloadingGeoIp=Downloader GeoIP database... dette tager m\u00e5ske noget tid (land\: 0.6 MB, by\: 20MB) +downloadingGeoIp=Downloader GeoIP database... dette tager m\u00e5ske noget tid (land\: 1.7 MB, by\: 30MB) duplicatedUserdata=Duplikerede brugerdata\: {0} og {1}. durability=\u00a76Dette v\u00e6rkt\u00f8j har \u00a7c{0}\u00a76 anvendelser tilbage. +east=E editBookContents=\u00a7eDu kan nu \u00e6ndre denne bogs indhold. enabled=aktiveret enableUnlimited=\u00a76Giver et ubegr\u00e6nset antal af\u00a7c {0} \u00a76til \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Ugyldig ladning. invalidFireworkFormat=\u00a74Muligheden \u00a7c{0} \u00a74er ikke en gyldig v\u00e6rdi til \u00a7c{1}\u00a74. invalidHome=\u00a74Hjemmet\u00a7c {0} \u00a74eksisterer ikke\! invalidHomeName=\u00a74Ugyldigt navn til dit hjem. +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Ugyldig mob type. invalidNumber=Ugyldigt nummer. invalidPotion=\u00a74Ugyldig eliksir. @@ -200,14 +202,16 @@ invalidSkull=\u00a74Hold venligst et spillerkranie. invalidWarpName=\u00a74Ugyldigt warp navn. invalidWorld=\u00a74Ugyldig verden. inventoryClearFail=\u00a74Spilleren {0} \u00a74har ikke\u00a7c {1} \u00a74af\u00a7c {2}\u00a74. -inventoryClearingAllArmor=\u00a76Rydede alle inventar-elementer og armor fra{0}\u00a76. +inventoryClearingAllArmor=\u00a76Rydede alle inventar-elementer og armor fra{0}\u00a76. inventoryClearingAllItems=\u00a76Ryddede alle inventar-elementer fra {0}\u00a76. inventoryClearingAllStack=\u00a76Ryddede alle\u00a7c {0} \u00a76fra {1}\u00a76. inventoryClearingFromAll=\u00a76Rydder alle spilleres inventar... inventoryClearingStack=\u00a76Fjernede\u00a7c {0} \u00a76af\u00a7c {1} \u00a76fra {2}\u00a76. is=er isIpBanned=\u00a76IP \u00a7c{0} \u00a76er banlyst. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74Det element kan ikke s\u00e6lges til serveren. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Elementet skal forhandles i form at stakke. En m\u00e6ngde af 2s vil v\u00e6re 2 stakke, osv. itemNames=\u00a76Elementforkortelser\:\u00a7r {0} itemNotEnough1=\u00a74Du har ikke nok af det element til at s\u00e6lge det. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7aSolgt for \u00a7c{0} \u00a7a({1} {2} for {3} hver). itemSoldConsole=\u00a7a{0} \u00a7asolgt {1} for \u00a7a{2} \u00a7a({3} elementer for {4} hver). itemSpawn=\u00a76Giver\u00a7c {0} \u00a76af\u00a7c {1} -itemType=\u00a76Element\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Element\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Spilleren er allerede i f\u00e6ngsel\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a7cDu bryder reglerne, du tager straffen. jailNotExist=\u00a74Det f\u00e6ngsel eksisterer ikke. jailReleased=\u00a76Spilleren \u00a7c{0}\u00a76 er fjernet fra f\u00e6ngslet. @@ -315,6 +320,7 @@ nickChanged=\u00a76Kaldenavn \u00e6ndret. nickDisplayName=\u00a74Du skal aktivere change-displayname i Essentials-konfiggen. nickInUse=\u00a74Det navn bruges allerede. nickNamesAlpha=\u00a74Kaldenavne skal v\u00e6re alfanumeriske. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76Du har ikke l\u00e6ngere et kaldenavn. nickSet=\u00a76Dit kaldenavn er nu \u00a7c{0}\u00a76. nickTooLong=\u00a74Det kaldenavn er for langt. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74Du har ikke tilladelse til at bruge den \u00a7c{0}\u00 noBreakBedrock=\u00a74Du er ikke tilladt at \u00f8del\u00e6gge bedrock. noDestroyPermission=\u00a74Du har ikke tilladelse til at \u00f8del\u00e6gge den \u00a7c{0}\u00a74. noDurability=\u00a74Dette element har ingen holdbarhed. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Advarsel\! Gud-tilstand er deaktiveret i denne verden. noHelpFound=\u00a74Ingen matchende kommandoer. noHomeSetPlayer=\u00a76Spilleren har ikke sat et hjem. noIgnored=\u00a76Du ignorerer ingen. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Du har ikke adgang til dette kit. noKitPermission=\u00a74Du mangler f\u00f8lgende tilladelse for at bruge det kit\: \u00a7c{0}\u00a74 noKits=\u00a76Der er ingen tilg\u00e6ngelige kits endnu. @@ -363,6 +373,7 @@ onlyDayNight=/time underst\u00f8tter kun day/night. onlyPlayers=\u00a74Kun spillere p\u00e5 serveren kan bruge \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Du kan kun indstille ejeren af spillerkranier (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74/weather underst\u00f8tter kun sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Tjekker saldi af\u00a7c {0} \u00a76brugere. Vent venligst... oversizedTempban=\u00a74Du kan ikke bandlyse den spiller i det tidsrum. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -436,6 +447,7 @@ recipeNothing=intet recipeShapeless=\u00a76Kombiner \u00a7c{0} recipeWhere=\u00a76Hvor\: {0} removed=\u00a76Fjernede\u00a7c {0} \u00a76enheder. +realName=\u00a7f{0}\u00a7r\u00a76 er \u00a7f{1} repair=\u00a76Du har succesfuldt repareret din\: \u00a7c{0}\u00a76. repairAlreadyFixed=\u00a74Dette element beh\u00f8ver ikke reparation. repairEnchanted=\u00a74Du har ikke tilladelse til at reparere fortryllede elementer. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Du har ikke tilladelse til at lave et skilt her. similarWarpExist=\u00a74Et warp med et lignende navn eksisterer allerede. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Kranie \u00e6ndret til \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Forkert udformet st\u00f8rrelse. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76Du \u00e6ndrede vejret til \u00a7cstorm\u00a76 i\u00a7c {0}\ weatherStormFor=\u00a76Du \u00e6ndrede vejret til \u00a7cstorm\u00a76 i\u00a7c {0} \u00a76i {1} sekunder. weatherSun=\u00a76Du \u00e6ndrede vejret til \u00a7csolrigt\u00a76 i\u00a7c {0}\u00a76. weatherSunFor=\u00a76Du \u00e6ndrede vejret til \u00a7csolrigt\u00a76 i\u00a7c {0} \u00a76i {1} sekunder. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Banlyst\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76V\u00e6rdi \u00e6ndret year=\u00e5r years=\u00e5r youAreHealed=\u00a76Du er blevet helbredt. -youHaveNewMail=\u00a76Du har\u00a7c {0} \u00a76beskeder\! Skriv \u00a7c/mail read\u00a76 for at l\u00e6se dine beskeder. \ No newline at end of file +youHaveNewMail=\u00a76Du har\u00a7c {0} \u00a76beskeder\! Skriv \u00a7c/mail read\u00a76 for at l\u00e6se dine beskeder. diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties index ec27e8fde..f44be2b3f 100644 --- a/Essentials/src/messages_de.properties +++ b/Essentials/src/messages_de.properties @@ -1,12 +1,12 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here -# by: +# Germantranslation by enterih and a lot of other guys. Feel free to donate EssentialsX. action=\u00a75* {0} \u00a75{1} -addedToAccount=\u00a7a{0} wurde zu deinem Konto hinzugef\u00fcgt. -addedToOthersAccount=\u00a7a{0} wurde dem Konto von {1} \u00a7agutgeschrieben. Aktueller Kontostand\: {2} -adventure=Abenteuer +addedToAccount=\u00a7c{0} \u00a7awurden deinem Konto hinzugef\u00fcgt. +addedToOthersAccount=\u00a7aAuf \u00a76{1} \u00A7A´s Konto wurden \u00a7c{0} \u00A7agutgeschrieben. Neuer Kontostand\: \u00A76{2} +adventure=Abenteuermodus alertBroke=zerst\u00f6rt\: alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} bei\: {3} alertPlaced=platziert\: @@ -18,38 +18,38 @@ antiBuildDrop=\u00a74Du darfst \u00a7c {0}\u00a74 nicht wegwerfen. antiBuildInteract=\u00a74Du darfst mit\u00a7c {0}\u00a74 nicht interagieren. antiBuildPlace=\u00a74Du darfst\u00a7c {0} \u00a74hier nicht platzieren. antiBuildUse=\u00a74Du darfst\u00a7c {0} \u00a74nicht benutzen. -autoAfkKickReason=Du wurdest rausgeworfen, weil du f\u00fcr {0} Minuten inaktiv warst. -backAfterDeath=\u00a76Benutze den Befehl /back um zu deinem Todespunkt zur\u00fcck zu kehren. +autoAfkKickReason=Da du l\u00e4nger als {0} Minuten inaktiv bist, haben wir die Verbindung getrennt. +backAfterDeath=\u00a76Verwende den Befehl \u00A7c/back\u00A76, um zu deinem Todespunkt zur\u00fcck zu kehren. backupDisabled=\u00a74Ein externes Backup-Skript wurde nicht konfiguriert. backupFinished=\u00a76Backup beendet. backupStarted=\u00a76Backup gestartet. -backUsageMsg=\u00a76Kehre zur letzten Position zur\u00fcck. +backUsageMsg=\u00a76Du kehrst zur letzten Position zur\u00fcck. balance=\u00a7aKontostand\:\u00a7c {0} balanceOther=\u00a7aKontostand von {0}\u00a7a\:\u00a7c {1} balanceTop=\u00a76Die h\u00f6chsten Kontost\u00e4nde ({0}) banExempt=\u00a74Du kannst diesen Spieler nicht bannen. -banExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht verbannen. +banExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht bannen. banFormat=\u00a74Gebannt\: \u00a7r{0} -banIpJoin=Deine IP-Adresse ist auf diesem Server gebannt. Grund: {0} +banIpJoin=Deine IP-Adresse ist auf diesem Server gesperrt. Grund: {0} banJoin=Du bist von diesem Server gebannt. Grund: {0} bed=\u00a7oBett\u00a7r bedMissing=\u00a74Dein Bett ist entweder nicht gesetzt, fehlt oder ist blockiert. bedNull=\u00a7mBett\u00a7r bedSet=\u00a76Bett-Spawn gesetzt\! -bigTreeFailure=\u00a74Fehler beim Pflanzen eines gro\u00dfen Baums. Versuch es auf Gras oder Dreck. +bigTreeFailure=\u00a74Beim Pflanzen eines grossen Baumes ist ein Fehler aufgetreten. Versuch es auf Gras oder Dreck. bigTreeSuccess=\u00a76Gro\u00dfer Baum gepflanzt. blockList=\u00a76Essentials hat die folgenden Befehle an ein anderes Plugin weiter gegeben\: bookAuthorSet=\u00a76Autor des Buchs auf {0} ge\u00e4ndert. bookLocked=\u00a76Dieses Buch ist jetzt versiegelt. bookTitleSet=\u00a76Buchtitel auf {0} ge\u00e4ndert. broadcast=\u00a7r\u00a76[\u00a74Rundruf\u00a76]\u00a7a {0} -buildAlert=\u00a74Du hast keine Rechte zum Bauen. +buildAlert=\u00a74Du hast keine Bauberechtigung. bukkitFormatChanged=Bukkit-Versionsformat hat sich ge\u00e4ndert. Version nicht kontrolliert. burnMsg=\u00a76Du hast {0} f\u00fcr {1} Sekunden in Brand gesetzt. -cannotStackMob=\u00a74Du hast nicht das Recht, mehrere Mobs zu stapeln. -canTalkAgain=\u00a76Du kannst wieder sprechen. +cannotStackMob=\u00a74Du bist nicht berechtigt, mehrere Mobs zu stapeln. +canTalkAgain=\u00a76Du kannst wieder den Chat ruinieren. cantFindGeoIpDB=Kann GeoIP-Datenbank nicht finden\! -cantGamemode=\u00a74Du hast keine Permission, um zum Spielmodus {0} zu wechseln. +cantGamemode=\u00a74Du hast keine Berechtigung, um zum Spielmodus {0} zu wechseln. cantReadGeoIpDB=Fehler beim Einlesen der GeoIP-Datenbank\! cantSpawnItem=\u00a74Du darfst Gegenstand\u00a7c {0}\u00a74 nicht erzeugen. chatTypeAdmin=[A] @@ -57,130 +57,131 @@ chatTypeLocal=[L] chatTypeSpy=[Spion] cleaned=Spielerdateien geleert. cleaning=S\u00e4ubere Spielerdateien. -clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. -clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. +clearInventoryConfirmToggleOff=\u00a76Du musst ab jetzt nicht mehr best\u00c4tigen, ob du das Inventar leeren m\u00F6chtest. +clearInventoryConfirmToggleOn=\u00a76Du musst ab jetzt best\u00c4tigen, ob du das Inventar leeren m\u00F6chtest. commandCooldown=\u00a7cDu kannst diesen Command nicht ausf\u00FChren f\u00FCr {0}. -commandFailed=Befehl {0} scheiterte\: -commandHelpFailedForPlugin=Fehler beim Abrufen der Hilfe f\u00fcr\: {0} +commandFailed=Befehl {0} ist fehlgeschlagen\: +commandHelpFailedForPlugin=Beim Abruf der Hilfe f\u00fcr\: {0} hat etwas nicht funktioniert. commandNotLoaded=\u00a74Befehl {0} ist nicht richtig geladen. compassBearing=\u00a76Peilung\: {0} ({1} Grad). -configFileMoveError=Fehler beim Verschieben der config.yml in das Backupverzeichnis. -configFileRenameError=Verschieben einer tempor\u00e4ren Datei nach config.yml gescheitert. -confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} -confirmPayment=\u00a77Um die Zahlung in H\u00f6he von \u00a76{0}\u00a77 zu \u00a7lBEST\u00c4TIGEN\u00a77, wiederhole bitte den Befehl: \u00a76{1} +configFileMoveError=Es ist ein Fehler beim Verschieben der config.yml in das Backupverzeichnis aufgetreten. +configFileRenameError=Das Verschieben einer tempor\u00e4ren Datei nach config.yml gescheitert. +confirmClear=\u00a77Um das Inventar zu leeren, musst du zuerst \u00a7lBEST\u00e4TIGEN\u00a77. Wiederhole daf\u00fcr bitte \u00a76{0}\u00a77. +confirmPayment=\u00a77Um die Zahlung in der H\u00f6he von \u00a76{0}\u00a77 zu \u00a7lBEST\u00c4TIGEN\u00a77, wiederhole bitte den Befehl: \u00a76{1} connectedPlayers=\u00a76Verbundene Spieler\u00a7r -connectionFailed=Fehler beim Verbindungsaufbau. +connectionFailed=Beim Verbindungsaufbau ist ein Fehler aufgetreten. cooldownWithMessage=\u00a74Abklingzeit\: {0} coordsKeyword={0}, {1}, {2} corruptNodeInConfig=\u00a74Hinweis\: Deine Konfigurationsdatei hat eine ung\u00fcltige Node {0}. couldNotFindTemplate=\u00a74Vorlage {0} konnte nicht gefunden werden. -createdKit=\u00a76Kit \u00a7c{0} \u00a76erstellt mit \u00a7c{1} \u00a76Eintr\u00E4gen und Verz\u00F6gerung \u00a7c{2} +createdKit=\u00a76Das Kit \u00a7c{0} \u00a76wurde mit \u00a7c{1} \u00a76Eintr\u00E4gen und einer Verz\u00F6gerung von \u00a7c{2} \u00a76erstellt. createKitFailed=\u00a74Beim Erstellen des Kits ist ein Fehler aufgetreten {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Erstelltes Kit: \u00a7f{0}\n\u00a76Verz\u00F6gerung: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopiere Inhalte aus dem oben stehenden Link in deine config.yml. -creatingConfigFromTemplate=Erstelle Konfiguration aus Vorlage\: {0} -creatingEmptyConfig=Erstelle leere Konfiguration\: {0} +createKitSuccess=\u00a76Erstelltes Kit: \u00a7f{0}\n\u00a76Verz\u00F6gerung: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Es werden Inhalte aus dem oben stehenden Link in deine kits.yml kopiert. +creatingConfigFromTemplate=Erstelle Konfiguration aus der Vorlage\: {0} +creatingEmptyConfig=Erstelle eine leere Konfiguration\: {0} creative=Kreativmodus currency={0}{1} currentWorld=\u00a76Aktuelle Welt\:\u00a7c {0} day=Tag days=Tage -defaultBanReason=Der Bann-Hammer hat gesprochen\! -deleteFileError=Konnte Datei nicht l\u00f6schen\: {0} -deleteHome=\u00a76Zuhause\u00a7c {0} \u00a76wurde gel\u00f6scht. -deleteJail=\u00a76Gef\u00e4ngnis\u00a7c {0} \u00a76wurde gel\u00f6scht. -deleteWarp=\u00a76Warp-Punkt \u00a7c{0} \u00a76wurde gel\u00f6scht. +defaultBanReason=B\u00c4\u00c4m, Der Bann-Hammer hat gesprochen.\! +deleteFileError=Die Datei {0} konnte nicht gel\u00f6scht werden.\ +deleteHome=\u00a76Die Heimat\u00a7c {0} \u00a76wurde gel\u00f6scht. +deleteJail=\u00a76Das Gef\u00e4ngnis\u00a7c {0} \u00a76wurde gel\u00f6scht. +deleteWarp=\u00a76Der Warp-Punkt \u00a7c{0} \u00a76wurde gel\u00f6scht. deniedAccessCommand=\u00a7c{0} \u00a74hat keinen Zugriff auf diesen Befehl. denyBookEdit=\u00a74Du kannst dieses Buch nicht entsiegeln. denyChangeAuthor=\u00a74Du kannst den Autor dieses Buches nicht \u00e4ndern. denyChangeTitle=\u00a74Du kannst den Titel dieses Buches nicht \u00e4ndern. -depth=\u00a76Du bist auf Meeresh\u00f6he. -depthAboveSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke \u00fcber Meeresh\u00f6he. -depthBelowSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke unter Meeresh\u00f6he. -destinationNotSet=Ziel nicht gesetzt\! +depth=\u00a76Du bist auf derMeeresh\u00f6he. +depthAboveSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke \u00fcber Meer. +depthBelowSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke unter Meer. +destinationNotSet=Das Ziel ist nicht gesetzt\! disabled=deaktiviert -disabledToSpawnMob=\u00a74Das Spawnen dieses Mobs wurde in der Konfigurationsdatei deaktiviert. -disableUnlimited=\u00a76Deaktiviere unbegrenztes Platzieren von\u00a7c {0} \u00a76f\u00fcr {1}. +disabledToSpawnMob=\u00a74Das Spawnen dieses Mobs ist in der Konfigurationsdatei deaktiviert. +disableUnlimited=\u00a76Das unbegrenzte Platzieren von\u00a7c {0} \u00a76f\u00fcr \u00a7c{1} \u00a76wurde deaktiviert. distance=\u00a76Entfernung\: {0} -dontMoveMessage=\u00a76Teleportvorgang startet in {0}. Bewege dich nicht. -downloadingGeoIp=Lade GeoIP-Datenbank ... dies kann etwas dauern (country\: 0.6 MB, city\: 20MB) +dontMoveMessage=\u00a76Teleportvorgang startet in \u00a7c{0}\u00a76. Eine Bewegung bricht die Teleportation ab. +downloadingGeoIp=GeoIP-Datenbank wird geladen... Das kann einen Moment in Anspruch nehmen. (country\: 1.7 MB, city\: 30MB) duplicatedUserdata=Doppelte Datei in userdata\: {0} und {1}. durability=\u00a76Dieses Werkzeug kann noch \u00a7c{0}\u00a76 mal benutzt werden. -editBookContents=\u00a7eDu darfst jetzt den Inhalt dieses Buches bearbeiten. +east=O +editBookContents=\u00a7eDu darfst den Inhalt dieses Buches jetzt bearbeiten. enabled=aktiviert -enableUnlimited=\u00a76Gebe \u00a7c{1}\u00a76. unendlichen einen Stack\u00a7c {0} \u00a76. +enableUnlimited=\u00a76Du gibst \u00a7c{1}\u00a76 eine unbegrenzte Menge an\u00a7c {0} \u00a76. enchantmentApplied=\u00a76Der Gegenstand in deiner Hand wurde mit\u00a7c {0} \u00a76verzaubert. -enchantmentNotFound=\u00a74Verzauberung nicht gefunden\! -enchantmentPerm=\u00a74Du hast keine Rechte f\u00fcr\u00a7c {0}\u00a74. +enchantmentNotFound=\u00a74Diese Verzauberung konnte nicht gefunden werden\! +enchantmentPerm=\u00a74Du bist f\u00fcr\u00a7c {0}\u00a74 nicht berechtigt. enchantmentRemoved=\u00a76Dem Gegenstand in deiner Hand wurde die Verzauberung\u00a7c {0} \u00a76entfernt. enchantments=\u00a76Verzauberungen\:\u00a7r {0} -errorCallingCommand=Fehler beim Aufrufen des Befehls /{0} +errorCallingCommand=Beim Aufrufen des Befehls {0} ist ein Fehler aufgetreten. errorWithMessage=\u00a7cFehler\:\u00a74 {0} essentialsHelp1=Die Datei ist besch\u00e4digt und Essentials kann sie nicht \u00f6ffnen. Essentials ist jetzt deaktiviert. Wenn du die Datei selbst nicht reparieren kannst, gehe auf http\://tiny.cc/EssentialsChat essentialsHelp2=Die Datei ist besch\u00e4digt und Essentials kann sie nicht \u00f6ffnen. Essentials ist jetzt deaktiviert. Wenn du die Datei selbst nicht reparieren kannst, versuche /essentialshelp oder gehe auf http\://tiny.cc/EssentialsChat -essentialsReload=\u00a76Essentials neu geladen\u00a7c {0}. -exp=\u00a7c{0} \u00a76hat\u00a7c {1} \u00a76Exp (Level\u00a7c {2}\u00a76) und braucht\u00a7c {3} \u00a76Punkte f\u00fcr den n\u00e4chsten Level. +essentialsReload=\u00a76Essentials wurde neu geladen\u00a7c {0}. +exp=\u00a7c{0} \u00a76hat\u00a7c {1} \u00a76Exp (Level\u00a7c {2}\u00a76) und braucht\u00a7c {3} \u00a76Punkte f\u00fcr das n\u00e4chste Level. expSet=\u00a7c{0} \u00a76hat jetzt\u00a7c {1} \u00a76Exp. extinguish=\u00a76Du hast dich selbst gel\u00f6scht. extinguishOthers=\u00a76Du hast {0}\u00a76 gel\u00f6scht. -failedToCloseConfig=Fehler beim Schlie\u00dfen der Konfiguration {0}. -failedToCreateConfig=Fehler beim Erstellen der Konfiguration {0}. -failedToWriteConfig=Fehler beim Schreiben der Konfiguration {0}. -false=\u00a74falsch\u00a7r +failedToCloseConfig=Beim Schliessen der Config ist ein Fehler aufgetreten {0}. +failedToCreateConfig=Beim Erstellen der Config ist ein Fehler aufgetreten {0}. +failedToWriteConfig=Beim Schreiben der Config ist ein Fehler aufgetreten {0}. +false=\u00a74Nein\u00a7r feed=\u00a76Dein Hunger wurde gestillt. -feedOther=\u00a76Du hast dein Hunger von \u00a7c{0}\u00a76gestillt. -fileRenameError=Umbenennen von {0} gescheitert\! -fireworkColor=\u00a74Ung\u00fcltige Feuerwerksparameter angegeben, setze zuerst eine Farbe. -fireworkEffectsCleared=\u00a76Alle Effekte vom Stapel in der Hand entfernt. -fireworkSyntax=\u00a76Feuerwerk-Parameter\:\u00a7c color\: [fade\:] [shape\:

    ] [effect\:]\n\u00a76Um mehrere Farben/Effekte zu benutzen, mit Komma trennen\: \u00a7cred,blue,pink\n\u00a76Formen\:\u00a7c star, ball, large, creeper, burst \u00a76Effekte\:\u00a7c trail, twinkle. +feedOther=\u00a76Du hast den Hunger von \u00a7c{0}\u00a76gestillt. +fileRenameError=\u00a7cDu konntest \u00a7e{0} \u00a7cnicht umbenennen.\! +fireworkColor=\u00a74Ung\u00fcltige Feuerwerksparameter angegeben. Du musst zuerst eine Farbe festlegen. +fireworkEffectsCleared=\u00a76Alle Effekte wurden vom Stapel, den du in der Hand hast, entfernt. +fireworkSyntax=\u00a76Feuerwerk-Parameter\:\u00a7c color\: [fade\:] [shape\:] [effect\:]\n\u00a76Um mehrere Farben/Effekte zu benutzen, musst du sie mit Komma trennen\: \u00a7cred,blue,pink\n\u00a76Formen\:\u00a7c star, ball, large, creeper, burst \u00a76Effekte\:\u00a7c trail, twinkle. flying=fliegt -flyMode=\u00a76Flugmodus\u00a7c {0} \u00a76f\u00fcr {1} \u00a76gesetzt. +flyMode=\u00A76Du hast den Flugmodus bei \u00a7c{1} {0}\u00a76. foreverAlone=\u00a7cDu hast niemanden, dem du antworten kannst. fullStack=\u00a74Du hast bereits einen vollen Stapel. -gameMode=\u00a76Spielmodus\u00a7c {0} \u00a76f\u00fcr {1} \u00a76gesetzt. -gameModeInvalid=\u00a74Sie m\u00fcssen einen g\u00fcltigen Spieler/Modus angeben. +gameMode=\u00a76Du hast \u00a7c{1}\u00a76 in den \u00a7c{0}\u00a76 versetzt. +gameModeInvalid=\u00a74Du m\u00fcsst einen g\u00fcltigen Spieler/Modus angeben. gcfree=\u00a76Freier Speicher\:\u00a7c {0} MB gcmax=\u00a76Maximaler Speicher\:\u00a7c {0} MB gctotal=\u00a76Reservierter Speicher\:\u00a7c {0} MB gcWorld=\u00a76 {0} "\u00a7c {1} \u00a76"\: \u00a7c {2} \u00a76 Chunks, \u00a7c {3} \u00a76 Einheiten, \u00a7c {4} \u00a76 Tiles. -geoipJoinFormat=\u00a76Spieler \u00a7c{0} \u00a76kommt aus \u00a7c{1}\u00a76. +geoipJoinFormat=\u00a7c{0} \u00a76kommt aus \u00a7c{1}\u00a76. geoIpUrlEmpty=GeoIP Download-URL ist leer. geoIpUrlInvalid=GeoIP Download-URL ist ung\u00fcltig. givenSkull=\u00a76Dir wurde der Kopf von \u00a7c{0}\u00a76 gegeben. -giveSpawn=\u00a76Gebe \u00a7c{2} {0}\u00a76x\u00a7c {1}\u00a76. +giveSpawn=\u00a76Du gibst \u00a7c{2} {0}\u00a76x\u00a7c {1}\u00a76. giveSpawnFailure=\u00a74Nicht genug Platz, \u00a7c{0} \u00a7c{1} \u00a74verloren. -godDisabledFor=\u00a7cdeaktiviert\u00a76 f\u00fcr\u00a7c {0} -godEnabledFor=\u00a7aaktiviert\u00a76 f\u00fcr\u00a7c {0} +godDisabledFor=\u00a76f\u00fcr\u00a7c {0}\u00a7cdeaktiviert\u00a76. +godEnabledFor=\u00a76f\u00fcr\u00a7c {0} \u00a7aaktiviert\u00a76. godMode=\u00a76Unsterblichkeit\u00a7c {0}\u00a76. -groupDoesNotExist=\u00a74Kein Mitglied dieser Gruppe ist online\! -groupNumber=\u00a7c{0}\u00a7f online, f\u00fcr die ganze Liste\:\u00a7c /{1} {2} -hatArmor=\u00a74Du kannst diesen Gegenstand nicht als Hut nutzen\! +groupDoesNotExist=\u00a74Von dieser Gruppe ist kein Mitglied online\! +groupNumber=\u00a7c{0}\u00a7f Online. F\u00fcr die ganze Liste\:\u00a7c /{1} {2} +hatArmor=\u00a74Du kannst diesen Gegenstand nicht als Hut verwenden\! hatEmpty=\u00a74Du tr\u00e4gst keinen Hut. hatFail=\u00a74Du musst einen Gegenstand in der Hand halten. hatPlaced=\u00a76Viel Spa\u00df mit deinem neuen Hut\! hatRemoved=\u00a76Dein Hut wurde entfernt. haveBeenReleased=\u00a76Du wurdest frei gelassen. heal=\u00a76Du wurdest geheilt. -healDead=\u00a74Du kannst Tote nicht heilen\! -healOther=\u00a7c{0}\u00a76 geheilt. -helpConsole=Um die Hilfe der Konsole zu sehen, schreibe ?. +healDead=\u00a74Du kannst keine Toten heilen\! +healOther=\u00a7c{0}\u00a76 wurde geheilt. +helpConsole=Damit du die Hilfe der Konsole sehen kannst, muss du ? schreiben. helpFrom=\u00a76Befehle von {0}\: helpLine=\u00a76/{0}\u00a7r\: {1} -helpMatching=\u00a76Befehle \u00e4hnlich zu "\u00a7c{0}\u00a76"\: +helpMatching=\u00a76Befehle \u00e4hnlich wie "\u00a7c{0}\u00a76"\: helpOp=\u00a74[Hilfe]\u00a7r \u00a76{0}\:\u00a7r {1} helpPlugin=\u00a74{0}\u00a7r\: Plugin-Hilfe\: /help {1} holdBook=\u00a74Du hast kein beschreibbares Buch in deiner Hand. -holdFirework=\u00a74Du musst Feuerwerk in deiner Hand halten um einen Effekt hinzuzuf\u00fcgen. -holdPotion=\u00a74Du musst einen Trank in der Hand haben, um ihm Effekte zu geben. -holeInFloor=\u00a74Loch im Boden\! -homes=\u00a76Homes\:\u00a7r {0} -homeSet=\u00a76Zuhause gesetzt. +holdFirework=\u00a74Damit du einen Effekt hinzzuf\u00fcgen kannst, musst du ein Feuerwerk in deiner Hand halten. +holdPotion=\u00a74Du du dem Trank einem Effekt geben kannst, musst du ihn zuerst in der Hand halten. +holeInFloor=\u00a74Wooops... Da ist ein Loch im Boden\! +homes=\u00a76Deine Heimaten\:\u00a7r {0} +homeSet=\u00a76Heimat festgelegt hour=Stunde hours=Stunden ignoredList=\u00a76Ignoriert\:\u00a7r {0} -ignoreExempt=\u00a74Du kannst diesen Spieler nicht ignorieren. -ignorePlayer=\u00a76Du ignorierst ab jetzt Spieler\u00a7c {0}\u00a76. -illegalDate=Ung\u00fcltiges Datumsformat. +ignoreExempt=\u00a74Du kannst den Spieler nicht ignorieren. +ignorePlayer=\u00a76Du ignorierst ab jetzt\u00a7c {0}\u00a76. +illegalDate=Ung\u00fcltiges Datumformat. infoChapter=\u00a76Kapitel ausw\u00e4hlen\: infoChapterPages=\u00a7e---\u00a76 {0} \u00a7e--\u00a76 Seite \u00a7c{1}\u00a76 von \u00a7c{2} \u00a7e--- infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Seite \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e---- @@ -189,8 +190,9 @@ insufficientFunds=\u00a74Nicht genug Guthaben. invalidBanner=\u00a74Ung\u00fcltige Banner-Syntax. invalidCharge=\u00a74Ung\u00fcltige Kosten. invalidFireworkFormat=\u00a76Die Option \u00a74{0} \u00a76ist kein g\u00fcltiger Wert f\u00fcr \u00a74{1}\u00a76. -invalidHome=\u00a74Zuhause\u00a7c {0} \u00a74existiert nicht\! +invalidHome=\u00a74Die Heimat\u00a7c {0} \u00a74existiert nicht\! invalidHomeName=\u00a74Ung\u00fcltiger Name\! +invalidItemFlagMeta=\u00a74Ung\u00fcltige itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Unbekannter Mob-Typ. invalidNumber=Ung\u00fcltige Nummer. invalidPotion=\u00a74Ung\u00fcltiger Trank. @@ -199,29 +201,32 @@ invalidSignLine=\u00a74Die Zeile\u00a7c {0} \u00a74auf dem Schild ist ung\u00fcl invalidSkull=\u00a74Bitte halte einen Spielerkopf in der Hand. invalidWarpName=\u00a74Ung\u00fcltiger Warp-Punkt-Name\! invalidWorld=\u00a74Ung\u00fcltige Welt. -inventoryClearFail=\u00a74Spieler {0} \u00a74hat keine\u00a7c {1} {2}\u00a74. -inventoryClearingAllArmor=\u00a76Alle Gegenst\u00e4nde im Inventar und R\u00fcstung von {0} \u00a76entfernt. -inventoryClearingAllItems=\u00a76Alle Gegenst\u00e4nde im Inventar von {0} \u00a76entfernt. -inventoryClearingAllStack=\u00a76Alle\u00a7c {0} \u00a76von {1} \u00a76entfernt. -inventoryClearingFromAll=\u00a76Leere das Inventar aller Spieler... +inventoryClearFail=\u00a74Der Spieler {0} \u00a74hat keine\u00a7c {1} {2}\u00a74. +inventoryClearingAllArmor=\u00a76Es wurden alle Gegenst\u00e4nde im Inventar sowie die R\u00fcstung von \u00A7c{0} \u00a76entfernt. +inventoryClearingAllItems=\u00a76Es wurden alle Gegenst\u00e4nde im Inventar von \u00A7c{0} \u00a76entfernt. +inventoryClearingAllStack=\u00a76Es wurden alle\u00a7c {0} \u00a76von \u00A7c{1} \u00a76entfernt. +inventoryClearingFromAll=\u00a76Die Inventare aller Spieler wurden geleert... inventoryClearingStack=\u00a7c {0} {1} \u00a76von {2} \u00a76entfernt. is=ist isIpBanned=\u00a76IP \u00a7c{0} \u00a76wurde gesperrt. +internalError=\u00a7cBeim ausf\u00fchren des Befehls ist ein interner Fehler aufgetreten. itemCannotBeSold=\u00a74Dieser Gegenstand kann nicht verkauft werden. -itemMustBeStacked=\u00a74Gegenstand muss als Stapel verkauft werden. Eine Anzahl von 2s verkauft 2 Stapel, usw. +itemId=\u00a76ID\:\u00a7c {0} +itemMustBeStacked=\u00a74Gegenstand muss als Stapel verkauft werden. Eine Anzahl von 2s verkauft 2 Stapel usw. itemNames=\u00a76Kurze Gegenstandsnamen\:\u00a7r {0} -itemNotEnough1=\u00a74Du hast nicht genug Gegenst\u00e4nde zum Verkaufen. -itemNotEnough2=\u00a76Wenn du alles von dieser Art verkaufen m\u00f6chtest, nutze /sell itemname. -itemNotEnough3=\u00a76/sell itemname -1 verkauft alles bis auf eins, usw. -itemsConverted=\u00a76Alle Items in Bl\u00f6cke konvertiert. -itemsCsvNotLoaded=Konnte items.csv nicht laden\! -itemSellAir=Du versuchst Luft zu verkaufen? Nimm einen Gegenstand in die Hand. -itemsNotConverted=\u00a74Du hast keine Items die in Bl\u00f6cke konvertiert werden k\u00f6nnen. +itemNotEnough1=\u00a74Du hast nicht genug Gegenst\u00e4nde zu verkaufen. +itemNotEnough2=\u00a76Wenn du alles von dieser Art verkaufen m\u00f6chtest, solltest du /sell itemname nutzen. +itemNotEnough3=\u00a76/sell itemname -1 verkauft alles bis auf eins usw. +itemsConverted=\u00a76Alle Items wurden in Bl\u00f6cke konvertiert. +itemsCsvNotLoaded=items.csv konnte nicht geladen werden\! +itemSellAir=Du versuchst Luft zu verkaufen?! Nimm einen Gegenstand in die Hand. +itemsNotConverted=\u00a74Du hast keine Items, die in Bl\u00f6cke konvertiert werden k\u00f6nnen. itemSold=\u00a7aVerkauft f\u00fcr \u00a7c{0}\u00a7a ({1} {2} Einheiten je {3}) itemSoldConsole=\u00a7a{0} $averkauft {1} f\u00fcr \u00a7a{2} \u00a7a({3} Einheiten je {4}) -itemSpawn=\u00a76Gebe\u00a7c {0}\u00a76x\u00a7c {1} -itemType=\u00a76Gegenstand\:\u00a7c {0} \u00a76-\u00a7c {1} +itemSpawn=\u00a76Du gibst dir\u00a7c {0}\u00a76x\u00a7c {1} +itemType=\u00a76Gegenstand\:\u00a7c {0} \u00a76 jailAlreadyIncarcerated=\u00a74Spieler ist bereits im Gef\u00e4ngnis\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74Du hast ein Verbrechen begangen, also musst du deine Zeit absitzen. jailNotExist=\u00a74Dieses Gef\u00e4ngnis existiert nicht. jailReleased=\u00a76Spieler \u00a7c{0}\u00a76 wurde freigelassen. @@ -229,73 +234,73 @@ jailReleasedPlayerNotify=\u00a76Du wurdest freigelassen\! jailSentenceExtended=\u00a76Gef\u00e4ngniszeit erweitert auf\: {0} jailSet=\u00a76Gef\u00e4ngnis\u00a7c {0} \u00a76wurde erstellt. jumpError=\u00a74Das w\u00fcrde deinen Computer \u00fcberlasten. -kickDefault=Vom Server geworfen. -kickedAll=\u00a74Alle Spieler vom Server geworfen. +kickDefault=Du wurdest vom Server geworfen. +kickedAll=\u00a74Alle Spieler wurden vom Server geworfen. kickExempt=\u00a74Du kannst diesen Spieler nicht rauswerfen. kill=\u00a7c{0} \u00a76get\u00f6tet. killExempt=\u00a74Du kannst \u00a7c{0}\u00a74 nicht t\u00f6ten. kitContains=\u00a76Ausr\u00fcstung \u00a7c{0} \u00a76enth\u00e4lt: kitCost=\ \u00a77\u00a7o({0})\u00a7r kitDelay=\u00a7m{0}\u00a7r -kitError=\u00a74Es gibt keine g\u00fcltigen Ausr\u00fcstungen. -kitError2=\u00a74Diese Ausr\u00fcstung ist nicht korrekt definiert. Kontaktiere einen Administrator. -kitGiveTo=\u00a76Gebe \u00a7c{1}\u00a76 \u00a7c{0}\u00a76-Ausr\u00fcstung. -kitInvFull=\u00a74Dein Inventar ist voll, lege Ausr\u00fcstung auf den Boden. +kitError=\u00a74Es gibt keine g\u00fcltigen Kits. +kitError2=\u00a74Dieses Kit ist nicht korrekt definiert. Kontaktiere einen Administrator. +kitGiveTo=\u00a76Du gibst \u00a7c{1}\u00a76 \u00a7c{0}\u00a76-Ausr\u00fcstung. +kitInvFull=\u00a74Dein Inventar ist voll. Das Kit wird auf den Boden gelegt. kitItem=\u00a76- \u00a7f{0} -kitNotFound=\u00a74Diese Ausr\u00fcstung gibt es nicht. -kitOnce=\u00a74Du kannst diese Ausr\u00fcstung nicht nochmals bekommen. -kitReceive=\u00a7c{0}\u00a76-Ausr\u00fcstung erhalten. -kits=\u00a76Ausr\u00fcstungen\: \u00a7r{0} -kitTimed=\u00a74Du kannst diese Ausr\u00fcstung nicht innerhalb von\u00a7c {0}\u00a74 anfordern. -leatherSyntax=\u00a76Leder-Farbdefinition\: color\:,, z.B.\: color\:255,0,0. +kitNotFound=\u00a74Dieses Kit gibt es nicht. +kitOnce=\u00a74Du kannst diese Kit nicht nochmals bekommen. +kitReceive=\u00a7c{0}\u00a76-Kit erhalten. +kits=\u00a76Kits\: \u00a7r{0} +kitTimed=\u00a74Du kannst dieses Kit nicht innerhalb von\u00a7c {0}\u00a74 anfordern. +leatherSyntax=\u00a76Leder-Farberkl\u00e4rung\: color\:,, z.B.\: color\:255,0,0. lightningSmited=\u00a76Du wurdest gepeinigt. -lightningUse=\u00a76Peinige {0} +lightningUse=\u00a76Peinige \u00A7c{0} listAfkTag=\u00a77[Abwesend]\u00a7r listAmount=\u00a76Es sind \u00a7c{0}\u00a76 von maximal \u00a7c{1}\u00a76 Spielern online. listAmountHidden=\u00a76Es sind \u00a7c{0}\u00a76/{1}\u00a76 von maximal \u00a7c{2}\u00a76 Spielern online. listGroupTag=\u00a76{0}\u00a7r\: \u00a7r listHiddenTag=\u00a77[Versteckt]\u00a7r -loadWarpError=\u00a74Fehler beim Laden von Warp-Punkt {0}. +loadWarpError=\u00a74Beim Laden vom Warp-Punkt \u00A7c{0}\u00a76 ist ein Fehler aufgetreten. localFormat=[L]<{0}> {1} localNoOne= mailClear=\u00a76Um deine Nachrichten zu l\u00f6schen, schreibe\u00a7c /mail clear. -mailCleared=\u00a76Nachrichten gel\u00f6scht\! +mailCleared=\u00a76Nachrichten wurden gel\u00f6scht\! mailDelay=In der letzten Minute wurden zu viele Mails gesendet. Maximum\: {0} mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} mailMessage={0} -mailSent=\u00a76Nachricht gesendet\! +mailSent=\u00a76Nachricht wurde gesendet\! mailSentTo=\u00a7c{0}\u00a76 wurde diese Mail gesendet\: -mailTooLong=\u00a74Nachricht zu lang. Schreibe nicht mehr als 1000 Zeichen. -markedAsAway=\u00a76Du wirst als abwesend angezeigt. +mailTooLong=\u00a74Die Nachricht ist zu lang. Benutze weniger als 1000 Zeichen. +markedAsAway=\u00a76Du wirst jetzt als abwesend angezeigt. markedAsNotAway=\u00a76Du wirst nicht mehr als abwesend angezeigt. markMailAsRead=\u00a76Um deine Nachrichten zu l\u00f6schen, schreibe\u00a7c /mail clear. matchingIPAddress=\u00a76Die folgenden Spieler haben sich vorher schonmal mit der IP-Adresse eingeloggt\: -maxHomes=\u00a74Du kannst nicht mehr als\u00a7c {0} \u00a74Homes setzen. +maxHomes=\u00a74Du kannst nicht mehr als\u00a7c {0} \u00a74Heimaten setzen. maxMoney=\u00a74Diese \u00dcberweisung \u00fcberschreitet das Limit des Empf\u00e4ngers. mayNotJail=\u00a74Du kannst diese Person nicht einsperren. mayNotJailOffline=\u00a74Du darfst abgemeldete Spieler nicht einsperren. me=Du -minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}. +minimumPayAmount=\u00a7c{0}\u00a74 ist der Mindestbetrag, den du f\u00fcr eine \u00fcberweisung aufbringen musst. minute=Minute minutes=Minuten missingItems=\u00a74Du hast nicht \u00a7c{0}x {1}\u00a74. mobDataList=\u00a76G\u00fcltige Mob Daten\:\u00a7r {0} mobsAvailable=\u00a76Mobs\:\u00a7r {0} -mobSpawnError=\u00a74Fehler beim \u00c4ndern des Monster-Spawner. -mobSpawnLimit=Anzahl an Monster auf Serverlimit beschr\u00e4nkt. +mobSpawnError=\u00a74Beim \u00c4ndern des Monster-Spawners ist ein Fehler aufgetreten. +mobSpawnLimit=Die Anzahl an Monstern wurde auf das festgelegte Limit beschr\u00e4nkt. mobSpawnTarget=\u00a74Zielblock muss ein Monster-Spawner sein. moneyRecievedFrom=\u00a7a{1} \u00a7ahat dir {0} gegeben. -moneySentTo=\u00a7aDu hast {1}\u00a7a {0} gegeben. +moneySentTo=\u00a7aDu hast \u00a76{1} {0} \u00A7agegeben. month=Monat months=Monate moreThanZero=\u00a74Anzahl muss gr\u00f6\u00dfer als 0 sein. -moveSpeed=\u00a76Setze {0}-Geschwindigkeit f\u00fcr \u00a7c{2} \u00a76auf \u00a7c{1}. -msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76. -msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. -msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76. -msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. -msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} -msgIgnore=\u00a7c{0} \u00a74has messages disabled. +moveSpeed=\u00a76Die {0}-Geschwindigkeit f\u00fcr \u00a7c{2} \u00a76wurde auf \u00a7c{1} \u00a76gesetzt. +msgDisabled=\u00a76Das Empfangen von Nachrichten wurde \u00a7cdeaktiviert\u00a76. +msgDisabledFor=\u00a76Das Empfangen von Nachrichten wurde f\u00fcr \u00a7a{0} \u00a7cdeaktiviert\u00a76. +msgEnabled=\u00a76Das Empfangen von Nachrichten wurde \u00a7caktiviert\u00a76. +msgEnabledFor=\u00a76Das Empfangen von Nachrichten wurden \u00fcr\u00a7a{0} \u00a7aktiviert\u00a76. +msgFormat=\u00a76[\u00a7c{0}\u00a76 --> \u00a7c{1}\u00a76] \u00a7r{2} +msgIgnore=\u00a7c{0} \u00a74hat Benachrichtigungen deaktiviert. multipleCharges=\u00a74Du kannst einem Feuerwerk nur einen Feuerwerksstern geben. multiplePotionEffects=\u00a74Du kannst diesem Trank nur einen Effekt geben. mutedPlayer=\u00a76Spieler\u00a7c {0}\u00a76 ist nicht mehr stumm. @@ -303,47 +308,52 @@ mutedPlayerFor=\u00a76Spieler\u00a7c {0} \u00a76ist nun stumm f\u00fcr\u00a7c {1 mutedPlayerForReason=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76. \u00a76Reason: \u00a7c{2} mutedPlayerReason=\u00a76Player\u00a7c {0} \u00a76muted. \u00a76Reason: \u00a7c{1} mutedUserSpeaks={0} versuchte zu sprechen, aber ist stumm geschaltet. -muteExempt=\u00a74Du darfst diesen Spieler nicht muten. +muteExempt=\u00a74Du darfst diesen Spieler nicht stumm schalten. muteExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht stummschalten. muteNotify=\u00a7c{0} \u00a76hat Spieler \u00a7c{1}\u00a76 stumm geschaltet. -muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. +muteNotifyFor=\u00a7c{0} \u00a76hat den Spieler \u00a7c{1}\u00a76 f\u00fcr\u00a7c {2}\u00a76stumm geschaltet. muteNotifyForReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. \u00a76Reason: \u00a7c{3} muteNotifyReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. \u00a76Reason: \u00a7c{2} nearbyPlayers=\u00a76Spieler in der N\u00e4he\:\u00a7r {0} -negativeBalanceError=\u00a74Spieler darf keine Schulden machen. +negativeBalanceError=\u00a74Spieler d\u00fcrfen keine Schulden machen. nickChanged=\u00a76Spitzname ge\u00e4ndert. nickDisplayName=\u00a74Du musst change-displayname in der Essentials-Konfiguration aktivieren. nickInUse=\u00a74Dieser Name wird bereits verwendet. nickNamesAlpha=\u00a74Nicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten. +nickNamesOnlyColorChanges=\u00a74Beim Spitznamen darf nur die Farbe ge\u00e4ndert werden. nickNoMore=\u00a76Du hast keinen Spitznamen mehr. -nickSet=\u00a76Dein Spitzname ist nun \u00a7c{0}. +nickSet=\u00a76Dein Spitzname lautet nun \u00a7c{0}. nickTooLong=\u00a74Dieser Spitzname ist zu lang. -noAccessCommand=\u00a74Du hast keinen Zugriff auf diesen Befehl. -noAccessPermission=\u00a74Du hast keine Rechte, um dies zu betreten \u00a7c{0}\u00a74. +noAccessCommand=\u00a74Dir ist es nicht erlaubt, den Befehl zu verwenden. +noAccessPermission=\u00a74Dir ist es nicht erlaubt, das zu betreten. \u00a7c{0}\u00a74. noBreakBedrock=\u00a74Du darfst Grundgestein nicht zerst\u00f6ren. -noDestroyPermission=\u00a74Du hast keine Rechte, um dies zu zerst\u00f6ren \u00a7c{0}\u00a74. +noDestroyPermission=\u00a74Du bist nicht berechtigt, um dies zu zerst\u00f6ren \u00a7c{0}\u00a74. noDurability=\u00a74Dieser Gegenstand hat keine Haltbarkeit. +northEast=NO +north=N +northWest=NW noGodWorldWarning=\u00a74Warnung\! Unsterblichkeitsmodus ist in dieser Welt deaktiviert. noHelpFound=\u00a74Keine \u00fcbereinstimmenden Befehle. -noHomeSetPlayer=\u00a76Spieler hat kein Zuhause gesetzt. +noHomeSetPlayer=\u00a76Der Spieler hat keine Heimat festgelegt. noIgnored=\u00a76Du ignorierst niemanden. -noKitGroup=\u00a74Du hast auf diese Ausr\u00fcstung keinen Zugriff. -noKitPermission=\u00a74Du brauchst die Berechtigung \u00a7c{0}\u00a74 um diese Ausr\u00fcstung anzufordern. -noKits=\u00a76Es sind keine Ausr\u00fcstungen verf\u00fcgbar. -noLocationFound=\u00a74Keine g\u00fcltige Position gefunden. +noJailsDefined=\u00a76Es ist kein Gef\u00c4ngnis erstellt. +noKitGroup=\u00a74Du hast auf dieses Kit keinen Zugriff. +noKitPermission=\u00a74Du brauchst die Berechtigung \u00a7c{0}\u00a74 um dieses Kit anzufordern. +noKits=\u00a76Es sind keine Kits verf\u00fcgbar. +noLocationFound=\u00a74Es wurde keine g\u00fcltige Position gefunden. noMail=\u00a76Du hast keine Nachrichten. noMatchingPlayers=\u00a76Keine \u00fcbereinstimmenden Spieler gefunden. -noMetaFirework=\u00a74Du darfst keine Berechtigung Feuerwerk-Metadaten zu bearbeiten. +noMetaFirework=\u00a74Du hast keine Berechtigung Feuerwerk-Metadaten zu bearbeiten. noMetaJson=JSON MetaDaten werden in dieser Bukkit-Version nicht unterst\u00fctzt. noMetaPerm=\u00a74Du darfst dem Gegenstand \u00a7c{0}\u00a74 keine Metadaten geben. none=keine noNewMail=\u00a76Du hast keine neue Nachrichten. noPendingRequest=\u00a74Du hast keine Teleportierungsanfragen. noPerm=\u00a74Du hast die Berechtigung \u00a7c{0}\u00a74 nicht. -noPermissionSkull=$4Du hast nicht die Berechtigung diesen Kopf zu \u00e4ndern. +noPermissionSkull=$4Du bist nicht berechtigt, diesen Kopf zu \u00e4ndern. noPermToAFKMessage=\u00a74Du bist nicht berechtigt eine AFK-Nachricht zu setzen. noPermToSpawnMob=\u00a74Du bist nicht berechtigt diesen Mob zu spawnen. -noPlacePermission=\u00a7cDu hast keine Rechte einen Block in der N\u00e4he des Schildes zu platzieren. +noPlacePermission=\u00a7cDu bist nicht berechtigt, einen Block in der N\u00e4he des Schildes zu platzieren. noPotionEffectPerm=\u00a74Du darfst den Zaubertrankeffekt \u00a7c{0} \u00a74diesem Trank nicht hinzuf\u00fcgen. noPowerTools=\u00a76Du hast keine Powertools zugewiesen. notAcceptingPay=\u00a74{0} \u00a74akzeptiert keine Zahlungen. @@ -356,38 +366,39 @@ nothingInHand=\u00a74Du hast nichts in der Hand. notRecommendedBukkit=\u00a74* \! * Die verwendete Bukkit-Version ist nicht f\u00fcr Essentials empfohlen. notSupportedYet=Noch nicht verf\u00fcgbar. now=jetzt -noWarpsDefined=\u00a76Keine Warp-Punkte erstellt. -nuke=\u00a75M\u00f6ge der Tod auf Euch hernieder prasseln\! -numberRequired=Ein Zahl wird ben\u00f6tigt. +noWarpsDefined=\u00a76Es sind keine Warp-Punkte erstellt. +nuke=\u00a75M\u00f6ge der Tod auf Euch hernieder prasseln und euch vernichten :>\! +numberRequired=Du musst eine Zahl angeben. onlyDayNight=/time unterst\u00fctzt nur day und night. onlyPlayers=\u00a74Nur Ingame-Spieler k\u00f6nnen \u00a7c{0} \u00a74benutzen. onlyPlayerSkulls=\u00a74Du kannst nur den Besitzer von Spielerk\u00f6pfen (\u00a7c397\:3\u00a74) \u00e4ndern. onlySunStorm=\u00a74/weather unterst\u00fctzt nur sun und storm. +openingDisposal=\u00a76\u00f6ffne das Entsorgungsmen\u00fc... orderBalances=\u00a76Ordne die Kontost\u00e4nde von\u00a7c {0} \u00a76Benutzern, bitte warten ... oversizedTempban=\u00a74Du darfst einen Spieler nicht f\u00fcr so eine lange Zeit bannen. -payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. -payConfirmToggleOn=\u00a76You will now be prompted to confirm payments. +payConfirmToggleOff=\u00a76Du wirst nicht l\u00c4nger aufgefordert, Zahlungen zu best\u00e4tigen. +payConfirmToggleOn=\u00a76Du wirst ab jetzt aufgefordert, Zahlungen zu best\u00e4tigen. payMustBePositive=\u00a74Du kannst nur positive Betr\u00e4ge \u00FCberweisen. payToggleOff=\u00a76Du akzeptierst keine Zahlungen mehr. payToggleOn=\u00a76Du akzeptierst nun Zahlungen. -pendingTeleportCancelled=\u00a74Laufende Teleportation abgebrochen. +pendingTeleportCancelled=\u00a74Die laufende Teleportation wurde abgebrochen. playerBanIpAddress=\u00a76Spieler\u00a7c {0} \u00a76hat die IP-Adresse\u00a7c {1} \u00a76f\u00fcr\: \u00a7c{2} \u00a76gesperrt. -playerBanned=\u00a76Spieler\u00a7c {0} \u00a76bannte\u00a7c {1} \u00a76wegen\: \u00a7c{2}\u00a76. -playerInJail=\u00a74Spieler ist bereits in Gef\u00e4ngnis\u00a7c {0}\u00a76. +playerBanned=\u00a76Spieler\u00a7c {0} \u00a76hat\u00a7c {1} \u00a76wegen\: \u00a7c{2}\u00a76 gebannt. +playerInJail=\u00a74Spieler ist bereits im Gef\u00e4ngnis\u00a7c {0}\u00a76. playerJailed=\u00a76Spieler\u00a7c {0} \u00a76eingesperrt. -playerJailedFor=\u00a76Spieler\u00a7c {0} \u00a76eingesperrt f\u00fcr {1}. -playerKicked=\u00a76Spieler\u00a7c {0} \u00a76hat\u00a7c {1} \u00a76für \u00a7c {2} \u00a76rausgeworfen. +playerJailedFor=\u00a76Spieler\u00a7c {0} \u00a76wurde f\u00fcr {1} eingesperrt. +playerKicked=\u00a76Spieler\u00a7c {0} \u00a76hat\u00a7c {1} \u00a76f\u00fcr \u00a7c {2} \u00a76rausgeworfen. playerMuted=\u00a76Du bist jetzt stumm\! -playerMutedFor=\u00a76Du bist jetzt stumm f\u00fcr\u00a7c {0}. +playerMutedFor=\u00a76Du bist jetzt f\u00fcr\u00a7c {0} \u00a76stumm. playerMutedForReason=\u00a76You have been muted for\u00a7c {0}. \u00a76Reason: \u00a7c{1} playerMutedReason=\u00a76You have been muted\! \u00a76Reason: \u00a7c{0} playerNeverOnServer=\u00a74Spieler\u00a7c {0} \u00a74war niemals auf diesem Server. playerNotFound=\u00a74Spieler nicht gefunden. -playerTempBanned=\u00a76Spieler \u00a7c{0}\u00a76 hat \u00a7c{1}\u00a76 f\u00fcr \u00a7c{2} \u00a76 gebannt wegen: \u00a7c{3}\u00a76. +playerTempBanned=\u00a76Spieler \u00a7c{0}\u00a76 hat \u00a7c{1}\u00a76 f\u00fcr \u00a7c{2} \u00a76 gebannt. Grund: \u00a7c{3}\u00a76. playerUnbanIpAddress=\u00a76Spieler\u00a7c {0} \u00a76hat die IP-Adresse {1} \u00a76entsperrt. playerUnbanned=\u00a76Spieler\u00a7c {0} \u00a76hat {1}\u00a76 entbannt. playerUnmuted=\u00a76Du bist nicht mehr stumm. -pong=Pong\! +pong=\u00A7b..::\u00a74Pông\u00A7b::..\! posPitch=\u00a76Pitch\: {0} (Neigewinkel) possibleWorlds=\u00a76M\u00f6gliche Welten sind die Nummern \u00a7c0\u00a76 bis \u00a7c{0}\u00a76. posX=\u00a76X\: {0} (+Ost <-> -West) @@ -397,34 +408,35 @@ posZ=\u00a76Z\: {0} (+S\u00fcd <-> -Nord) potions=\u00a76Zaubertr\u00e4nke\:\u00a7r {0}\u00a76. powerToolAir=\u00a74Befehl kann nicht mit Luft verbunden werden. powerToolAlreadySet=\u00a74Der Befehl \u00a7c{0}\u00a74 ist bereits \u00a7c{c{1}\u00a74 zugewiesen. -powerToolAttach=\u00a76Befehl \u00a7c{0}\u00a7f erfolgreich an {1} gebunden. +powerToolAttach=\u00a76Befehl \u00a7c{0}\u00a7f wurde erfolgreich an {1} gebunden. powerToolClearAll=\u00a76Alle Powertoolbefehle wurden entfernt. powerToolList=\u00a76Gegenstand \u00a7c{1} \u00a76hat die folgenden Befehle\: \u00a7c{0}\u00a76. powerToolListEmpty=\u00a74Gegenstand \u00a7c{0} $4hat keinen Befehl. powerToolNoSuchCommandAssigned=\u00a74Der Befehl \u00a7c{0}\u00a74 wurde nicht \u00a7c{1}\u00a74 zugewiesen. powerToolRemove=\u00a76Der Befehl \u00a7c{0}\u00a76 wurde von \u00a7c{1}\u00a76 entfernt. -powerToolRemoveAll=\u00a76Alle Befehle von \u00a7c{0}\u00a76 entfernt. -powerToolsDisabled=\u00a76Alle deine Powertools wurden deaktiviert. -powerToolsEnabled=\u00a76Alle deine Powertools wurden aktiviert. +powerToolRemoveAll=\u00a76Alle Befehle von \u00a7c{0}\u00a76 wurden entfernt. +powerToolsDisabled=\u00a76All deine Powertools wurden deaktiviert. +powerToolsEnabled=\u00a76All deine Powertools wurden aktiviert. pTimeCurrent=\u00a76Die Zeit f\u00fcr\u00a7c {0} \u00a76ist\u00a7c {1}\u00a76. pTimeCurrentFixed=\u00a76Die Zeit f\u00fcr \u00a7c{0}\u00a76 wurde auf \u00a7c{1}\u00a76 gesetzt. pTimeNormal=\u00a76Die Zeit f\u00fcr \u00a7c{0}\u00a76 ist normal und entspricht der Serverzeit. pTimeOthersPermission=\u00a74Du hast keine Berechtigung die Zeit von anderen Spielern zu \u00e4ndern. pTimePlayers=\u00a76Diese Spieler haben ihre eigene Zeit\:\u00a7r -pTimeReset=\u00a76Zeit wurde zur\u00fcckgesetzt f\u00fcr\: \u00a7c{0} -pTimeSet=\u00a76Zeit wurde f\u00fcr \u00a7c{1}\u00a76 auf \u00a7c{0}\u00a76 gesetzt. -pTimeSetFixed=\u00a76Spielerzeit ist festgesetzt auf \u00a7c{0}\u00a76 f\u00fcr\: \u00a7c{1} +pTimeReset=\u00a76Die Zeit wurde f\u00fcr \u00a7c{0} \u00a76zur\u00fcckgesetzt. +pTimeSet=\u00a76DieZeit wurde f\u00fcr \u00a7c{1}\u00a76 auf \u00a7c{0}\u00a76 gesetzt. +pTimeSetFixed=\u00a76Spielerzeit ist f\u00fcr\: \u00a7c{1} auf \u00a7c{0}\u00a76 fixiert. pWeatherCurrent=\u00a76Das Wetter von\u00a7c {0} \u00a76ist\u00a7c {1}\u00a76. pWeatherInvalidAlias=\u00a74Ung\u00fcltiger Wettertyp -pWeatherNormal=\u00a7cDas Wetter von \u00a7c{0}\u00a76 ist normal, wie auf dem Server. -pWeatherOthersPermission=\u00a74Du darfst keinem Spieler das Wetter ver\u00e4ndern. +pWeatherNormal=\u00a7cDas Wetter von \u00a7c{0}\u00a76 ist normal. (Entspricht dem Wetter auf dem Server). +pWeatherOthersPermission=\u00a74Du darfst das Wetter bei Spielern nicht ver\u00e4ndern. pWeatherPlayers=\u00a76Diese Spieler haben ihr eigenes Wetter\:\u00a7r -pWeatherReset=\u00a76Das Spielerwetter wurde zur\u00fcckgesetzt f\u00fcr\: \u00a7c{0} -pWeatherSet=\u00a76Spielerwetter gesetzt auf \u00a7c{0}\u00a76 f\u00fcr\: \u00a7c{1}. +pWeatherReset=\u00a76Das Spielerwetter wurde f\u00fcr\: \u00a7c{0}\u00a76 zur\u00fcckgesetzt. +pWeatherSet=\u00a76Spielerwetter f\u00fcr\: \u00a7c{1}\u00a76 wurde auf \u00a7c{0}\u00a76 gesetzt. questionFormat=\u00a72[Frage]\u00a7r {0} -radiusTooBig=\u00a74Radius ist zu gro\u00df\! Maximaler Radius ist {0}. +radiusTooBig=\u00a74Der Radius ist zu gro\u00df\! Maximaler Radius ist {0}. readNextPage=\u00a76Tippe\u00a7c /{0} {1} \u00a76f\u00fcr die n\u00e4chste Seite. -recentlyForeverAlone=\u00a74{0} ging vor Kurzem offline. +realName=\u00a7f{0}\u00a7r\u00a76 ist \u00a7f{1} +recentlyForeverAlone=\u00a74{0} ging vor kurzem Offline. recipe=\u00a76Rezept f\u00fcr \u00a7c{0}\u00a75 (\u00a7c{1}\u00a76 von \u00a7c{2}\u00a76) recipeBadIndex=Es gibt kein Rezept mit dieser Nummer. recipeFurnace=\u00a76Schmelzen\: \u00a7c{0}\u00a76. @@ -441,117 +453,121 @@ repairAlreadyFixed=\u00a74Dieser Gegenstand ben\u00f6tigt keine Reparatur. repairEnchanted=\u00a74Du darfst keine verzauberten Gegenst\u00e4nde reparieren. repairInvalidType=\u00a74Dieser Gegenstand kann nicht repariert werden. repairNone=\u00a74Es sind keine Gegenst\u00e4nde vorhanden, die repariert werden k\u00f6nnen. -requestAccepted=\u00a77Teleportierungsanfrage akzeptiert. +requestAccepted=\u00a77Du hast die Teleportierungsanfrage \u00a7aangenommen. requestAcceptedFrom=\u00a7c{0} \u00a76hat deine Teleportierungsanfrage angenommen. -requestDenied=\u00a76Teleportierungsanfrage verweigert. +requestDenied=\u00a76Du hast die Teleportierungsanfrage \u00a7cabgelehnt. requestDeniedFrom=\u00a7c{0} \u00a76hat deine Teleportierungsanfrage abgelehnt. -requestSent=\u00a76Anfrage gesendet an\u00a7c {0}\u00a76. +requestSent=\u00a76Eine Anfrage wurde an\u00a7c {0}\u00a76 gesendet. requestSentAlready=\u00a74Du hast {0}\u00a74 bereits eine Teleportierungsanfrage gesendet. -requestTimedOut=\u00a74Teleportierungsanfrage ist abgelaufen. +requestTimedOut=\u00a74Die Teleportierungsanfrage ist abgelaufen. requiredBukkit=\u00a76* \! * Du brauchst mindestens CraftBukkit Build \#{0}, lade es von http\://dl.bukkit.org/downloads/craftbukkit/ -resetBal=\u00a76Kontostand aller Spieler auf dem Server auf \u00a7a{0} \u00a76gesetzt. +resetBal=\u00a76Du hast den Kontostand aller Spieler auf \u00a7a{0} \u00a76gesetzt. resetBalAll=\u00a76Guthaben wurde f\u00fcr alle Spieler auf \u00a7c{0} zur\u00fcckgesetzt. -returnPlayerToJailError=\u00a74Fehler beim zur\u00fccksetzen von\u00a7c {0} \u00a74in Gef\u00e4ngis\: {1}\! +returnPlayerToJailError=\u00a74Fehler beim zur\u00fccksetzen von\u00a7c {0} \u00a74im Gef\u00e4ngis\: {1}\! runningPlayerMatch=\u00a76Suche nach Spielern mit ''\u00a7c{0}\u00a76'' im Namen (das kann etwas dauern) second=Sekunde seconds=Sekunden seenAccounts=\u00a76Spieler ist auch bekannt als\:\u00a7c {0} -seenOffline=\u00a76Spieler\u00a7c {0} \u00a76ist \u00a74offline\u00a76 seit \u00a7c{1}\u00a76. +seenOffline=\u00a76Spieler\u00a7c {0} \u00a76ist seit \u00a7c{1}\u00a74 offline\u00a76. seenOnline=\u00a76Spieler\u00a7c {0} \u00a76ist seit \u00a7c{1}\u00a7a online. -sellBulkPermission=\u00a76Du hast keine Permission, in Massen zu verkaufen. -sellHandPermission=\u00a76Du hast keine Permission, einzeln zu verkaufen. +sellBulkPermission=\u00a76Du hast keine Berechtigung, in Massen zu verkaufen. +sellHandPermission=\u00a76Du hast keine Berechtigung, einzeln zu verkaufen. serverFull=Server ist voll serverTotal=\u00a76Server insgesamt\:\u00a7c {0} -setBal=\u00a7aDein Kontostand wurde auf {0} gesetzt. -setBalOthers=\u00a7aDu hast den Kontostand von {0}\u00a7a auf {1} gesetzt. -setSpawner=\u00a76Mob-Spawner-Typ zu \u00a7c{0}\u00a76 ge\u00e4ndert. +serverUnsupported=\u00a7cDu verwendest eine Serverversion, die nicht unterst\u00fctzt wird! +setBal=\u00a7aDein Kontostand wurde auf \u00a7c{0} \u00a7agesetzt. +setBalOthers=\u00a7aDu hast den Kontostand von \u00A76{0}\u00a7a auf \u00A7c{1} \u00a7a gesetzt. +setSpawner=\u00a76Mob-Spawner-Typ ge\u00e4ndert zu \u00a7c{0}\u00a76. sheepMalformedColor=\u00a74Ung\u00fcltige Farbe. shoutFormat=\u00a76[Schrei]\u00a7r {0} signFormatFail=\u00a74[{0}] signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] -signProtectInvalidLocation=\u00a74Du hast keine Rechte ein Schild hier zu setzen. +signProtectInvalidLocation=\u00a74Du hast keine Berechtigung hier ein Schild zu platzieren. similarWarpExist=\u00a74Ein Warp-Punkt mit einem \u00e4hnlichen Namen existiert bereits. +southEast=SO +south=S +southWest=SW skullChanged=\u00a76Kopf zu \u00a7c{0} \u00a76ge\u00e4ndert. slimeMalformedSize=\u00a74Ung\u00fcltige Gr\u00f6\u00dfe. socialSpy=\u00a76SocialSpy f\u00fcr \u00a7c{0}\u00a76\ \u00a7c{1}\u00a76. -socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} +socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 --> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=\u00a74Das Monster m\u00f6chte allein sein. spawned=erzeugt -spawnSet=\u00a76Spawn-Punkt gesetzt f\u00fcr Gruppe \u00a7c{0}\u00a76. -spectator=Zuschauer -sudoExempt=\u00a74Du kannst f\u00fcr diesen Spieler kein sudo-Kommando ausf\u00fchren. +spawnSet=\u00a76Du hast denSpawn-Punkt f\u00fcr die Gruppe \u00a7c{0}\u00a76 gesetzt. +spectator=Zuschauermodus +sudoExempt=\u00a74Du kannst f\u00fcr diesen Spieler keine Sudo-Befehle ausf\u00fchren. sudoRun=\u00a7c {0} \u00a76 wurde gezwungen \u00a7r /{1} \u00a76auszuf\u00fchren suicideMessage=\u00a76Ad\u00e9, du schn\u00f6de Welt... -suicideSuccess=\u00a76{0} \u00a76hat sich das Leben genommen. +suicideSuccess=\u00a76{0} \u00a76ist von uns gegangen. Rest in Peace :-( survival=\u00dcberleben -takenFromAccount=\u00a7a{0} wurden von deinem Konto abgezogen. -takenFromOthersAccount=\u00a7a{0} genommen von {1}\u00a7a. Neuer Kontostand\: {2}. -teleportAAll=\u00a76Teleportierungsanfrage zu allen Spielern gesendet... -teleportAll=\u00a76Teleportiere alle Spieler... +takenFromAccount=\u00a7aVon deinem Konto wurden \u00a7c{0} \u00a7aabgezogen. +takenFromOthersAccount=\u00A7aDu hast\u00a76 {1} \u00a7c{0} \u00a7aweggenommen. Neuer Kontostand\: \u00a7c{2}. +teleportAAll=\u00a76Du hast an allen Spielern eine Teleportationsanfrage geschickt. +teleportAll=\u00a76Teleportation l\u00e4uft f\u00fcr alle Spieler... teleportationCommencing=\u00a76Teleportation gestartet... teleportationDisabled=\u00a76Teleportation \u00a7cdeaktiviert\u00a76. teleportationDisabledFor=\u00a76Teleportation f\u00fcr \u00a7c{0} deaktiviert\u00a76. teleportationEnabled=\u00a76Teleportation \u00a7caktiviert\u00a76. teleportationEnabledFor=\u00a76Teleportation f\u00fcr \u00a7c{0} aktiviert\u00a76. teleportAtoB=\u00a7c{0}\u00a76 teleportiert dich zu {1}\u00a76. -teleportDisabled=\u00a7c{0} \u00a74verweigert die Teleportierung. -teleportHereRequest=\u00a7c{0}\u00a76 fragt, ob du dich zu ihm teleportierst. -teleporting=\u00a76Teleportiere... +teleportDisabled=\u00a7c{0} \u00a74verweigert die Teleportation. +teleportHereRequest=\u00a7c{0}\u00a76 fragt, ob du dich zu ihm teleportieren m\u00f6chtest. +teleporting=\u00a76Teleportation l\u00e4uft... teleportInvalidLocation=Der Wert der angegebenen Koordinaten darf nicht \u00fcber 30000000 sein teleportNewPlayerError=\u00a74Fehler beim Teleportieren eines neuen Spielers\! teleportRequest=\u00a7c{0}\u00a76 fragt, ob er sich zu dir teleportieren darf. teleportRequestAllCancelled=\u00a76Alle ausstehenden Teleportationsanfragen wurden abgebrochen. -teleportRequestSpecificCancelled=\u00a76Ausstehende Teleportationsanfrage mit {0} wurde abgebrochen. -teleportRequestTimeoutInfo=\u00a76Diese Anfrage wird nach\u00a7c {0} Sekunden\u00a76 ung\u00fcltig. -teleportTop=\u00a76Teleportiere nach oben. -teleportToPlayer=\u00a76teleportieren zu \u00a7c{0}\u00a76. +teleportRequestSpecificCancelled=\u00a76Ausstehende Teleportationsanfrage mit \u00a7c{0}\u00a76 wurde abgebrochen. +teleportRequestTimeoutInfo=\u00a76Diese Anfrage wird nach\u00a7c {0} Sekunden\u00a76 ung\u00fcltig sein. +teleportTop=\u00a76Zum h\u00f6chsten Punkt teleportieren. +teleportToPlayer=\u00a76Du teleportierst dich zu \u00a7c{0}\u00a76. tempbanExempt=\u00a74Du kannst diesen Spieler nicht zeitlich bannen. -tempbanExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht tempor\u00e4r verbannen. -tempbanJoin=You are banned from this server for {0}. Reason: {1} -tempBanned=\u00a7cDu wurdest f\u00fcr {0} verbannt\:\n\u00a7r{2} -thunder=\u00a76Es donnert nun in deiner Welt \u00a7c{0}\u00a76. -thunderDuration=\u00a76Es donnert nun f\u00fcr\u00a7c {1} \u00a76Sekunden in deiner Welt\u00a7c {0}\u00a76. +tempbanExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht zeitlich sperren. +tempbanJoin=\u00a74Du bist auf diesem Server gabennt. \nDauer: {0} \nGrund: {1} +tempBanned=\u00a7cDu wurdest f\u00fcr {0} gebannt. \:\n\u00a7r{2} +thunder=\u00a76Es donnert jetzt in deiner Welt \u00a7c{0}\u00a76. +thunderDuration=\u00a76Es donnert jetzt f\u00fcr\u00a7c {1} \u00a76Sekunden in der Welt\u00a7c {0}\u00a76. timeBeforeHeal=\u00a74Zeit bis zur n\u00e4chsten Heilung\:\u00a7c {0}\u00a76. timeBeforeTeleport=\u00a74Zeit bis zum n\u00e4chsten Teleport\:\u00a7c {0} timeFormat=\u00a7c{0}\u00a76 oder \u00a7c{1}\u00a76 oder \u00a7c{2}\u00a76 timeSetPermission=\u00a74Du hast keine Berechtigung die Zeit zu \u00e4ndern. -timeSetWorldPermission=\u00a74You are not authorized to set the time in world ''{0}''. +timeSetWorldPermission=\u00a74Du bist nicht berechtigt in der Welt \u00a7c''{0}''\u00a74 die Zeit zu \u00e4ndern. timeWorldCurrent=\u00a76Die aktuelle Zeit in\u00a7c {0} \u00a76ist \u00a7c{1} -timeWorldSet=\u00a76Die Zeit in \u00a7c{1}\u00a76 wurde zu \u00a7c{0} \u00a76gesetzt. +timeWorldSet=\u00a76Die Zeit in \u00a7c{1}\u00a76 wurde auf \u00a7c{0} \u00a76gesetzt. totalSellableAll=\u00a7aDer Gesamtwert von allen Bl\u00f6cken und Items ist \u00a7c{1}\u00a7a. totalSellableBlocks=\u00a7aDer Gesamtwert der verkaufbaren Bl\u00f6cke ist \u00a7c{1}\u00a7a. -totalWorthAll=\u00a7aAlle Gegenst\u00e4nde und Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft. -totalWorthBlocks=\u00a7aAlle Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft. +totalWorthAll=\u00a7aDu hast alle Gegenst\u00e4nde und Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft. +totalWorthBlocks=\u00a7aDu hast alle Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft. tps=\u00a76Aktuelle TPS \= {0} tradeSignEmpty=Der Bestand des Trade-Schild ist aufgebraucht. -tradeSignEmptyOwner=Es gibt nichts mehr zu Sammeln von diesem Trade-Schild. +tradeSignEmptyOwner=Es gibt nichts mehr von diesem Trade-Schild zu sammeln. treeFailure=\u00a74Baumpflanzung gescheitert. Versuche es nochmal auf Gras oder Erde. -treeSpawned=\u00a76Baum gepflanzt. +treeSpawned=\u00a76Baum wurde gepflanzt. true=\u00a7aja\u00a7r -typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. -typeTpaccept=\u00a76Um zu teleportieren, schreibe \u00a7c/tpaccept\u00a76. -typeTpdeny=\u00a76Um diese Anfrage abzulehnen, schreibe \u00a7c/tpdeny\u00a76. +typeTpacancel=\u00a76Du kannst die Anfrage mit \u00a7c/tpacancel\u00a76 ablehnen. +typeTpaccept=\u00a76Du kannst die Teleportationsanfrage mit \u00a7c/tpaccept\u00a76 annehmen. +typeTpdeny=\u00a76Du kannst diese Anfrage mit \u00a7c/tpdeny\u00a76 ablehnen. typeWorldName=\u00a76Du kannst auch den Namen der Welt eingeben. -unableToSpawnItem=\u00a74Kann nicht \u00a7c{0}\u00a74 spawnen, es ist ein nicht spawnbares Item. -unableToSpawnMob=\u00a74Fehler beim Erzeugen des Monsters. -unignorePlayer=\u00a76Du ignorierst Spieler\u00a7c {0} \u00a76nicht mehr. +unableToSpawnItem=\u00a7c{0}\u00a74 Kann nicht gespawnt werde, da es ein nicht spawnbares Item ist. +unableToSpawnMob=\u00a74Beim Erschaffen des Monsters ist ein Fehler aufgetreten. +unignorePlayer=\u00a76Du ignorierst \u00a7c {0} \u00a76nicht mehr. unknownItemId=\u00a74Unbekannte Gegenstandsnummer\:\u00a7r {0}\u00a74. -unknownItemInList=\u00a74Unbekannter Gegenstand {0} in Liste {1}. +unknownItemInList=\u00a74Unbekannter Gegenstand {0} in der Liste {1}. unknownItemName=\u00a74Unbekannter Gegenstand\: {0}. -unlimitedItemPermission=\u00a74Keine Permission f\u00fcr unendlich Items \u00a7c{0}\u00a74. +unlimitedItemPermission=\u00a74Keine Berechtigung f\u00fcr unendliche Items \u00a7c{0}\u00a74. unlimitedItems=\u00a76Unbegrenzte Objekte\:\u00a7r unmutedPlayer=\u00a76Spieler\u00a7c {0}\u00a76 ist nicht mehr stumm. unsafeTeleportDestination=\u00a74Das Teleport-Ziel ist nicht sicher und der Teleportschutz ist nicht aktiv. -unvanishedReload=\u00a74Ein Neuladen des Servers hat dich sichtbar gemacht. +unvanishedReload=\u00a74Das Neuladen des Servers hat dich sichtbar gemacht. upgradingFilesError=Fehler beim Aktualisieren der Dateien uptime=\u00a76Laufzeit\:\u00a7c {0} userAFK=\u00a77{0} \u00a75ist gerade nicht da und antwortet wahrscheinlich nicht. userAFKWithMessage=\u00a77{0} \u00a75ist gerade nicht da und antwortet wahrscheinlich nicht. Grund: {1} -userdataMoveBackError=Verschieben von userdata/{0}.tmp nach userdata/{1} gescheitert. -userdataMoveError=Verschieben von userdata/{0} nach userdata/{1}.tmp gescheitert. +userdataMoveBackError=Verschieben von userdata/{0}.tmp nach userdata/{1} ist gescheitert. +userdataMoveError=Verschieben von userdata/{0} nach userdata/{1}.tmp ist gescheitert. userDoesNotExist=\u00a74Spieler\u00a7c {0} \u00a74existiert nicht. userIsAway=\u00a77* {0} \u00a77ist nun abwesend. userIsAwayWithMessage=\u00a77* {0} \u00a77ist nun abwesend. @@ -561,26 +577,32 @@ userUnknown=\u00a74Warnung\: Der Spieler ''\u00a7c{0}\u00a74'' war nie auf diese usingTempFolderForTesting=Benutze tempor\u00e4ren Ordner zum Testen\: vanish=\u00a76Unsichtbar f\u00fcr {0} \u00a76\: {1} vanished=\u00a76Du bist nun vollst\u00e4ndig unsichtbar f\u00fcr normale Benutzer und ihre Befehle. -versionMismatch=\u00a74Versionen nicht identisch\! Bitte aktualisiere {0}. -versionMismatchAll=\u00a74Versionen ungleich\! Bitte aktualisiere alle Essentials jar-Dateien auf die gleiche Version. -voiceSilenced=\u00a76Du bist nun stumm\! +versionOutputVaultMissing=\u00a74Vault ist nicht installiert. Der Chat und die Permission k\u00F6nnten nicht funktionieren. +versionOutputFine=\u00a76{0} Version: \u00a7a{1} +versionOutputWarn=\u00a76{0} Version: \u00a7c{1} +versionOutputUnsupported=\u00a7d{0} \u00a76Version: \u00a7d{1} +versionOutputUnsupportedPlugins=\u00a76Du verwendest Plugins, die \u00A7dnicht \u00a76unterst\u00fctzt werden! +versionMismatch=\u00a74Versionen sind nicht gleich\! Bitte aktualisiere {0}. +versionMismatchAll=\u00a74Versionen sind nicht gleich\! Bitte aktualisiere alle Essentials jar-Dateien auf die gleiche Version. +voiceSilenced=\u00a76Du bist nun stummgeschaltet\! voiceSilencedReason=\u00a76Your voice has been silenced\! \u00a76Reason: \u00a7c{0} walking=gehend -warpDeleteError=\u00a74Fehler beim L\u00f6schen der Warp-Datei. -warpingTo=\u00a76Teleportiere zu Warp-Punkt\u00a7c {0}\u00a76. +warpDeleteError=\u00a74Beim L\u00f6schen der Warp-Datei ist ein Fehler aufgetreten. +warpingTo=\u00a76Du teleportierst dich nach\u00a7c {0}\u00a76. warpList={0} -warpListPermission=\u00a74Du hast keine Berechtigung, die Warp-Punkte anzuzeigen. +warpListPermission=\u00a74Du hast keine Berechtigung die Warp-Punkte anzuzeigen. warpNotExist=\u00a74Warp-Punkt existiert nicht. warpOverwrite=\u00a74Du kannst diesen Warp-Punkt nicht ersetzen. warps=\u00a76Warp-Punkte\:\u00a7r {0} -warpsCount=\u00a76Es existieren\u00a7c {0} \u00a76Warps. Zeige \u00a7c{1} \u00a76von \u00a7c{2}\u00a76. +warpsCount=\u00a76Es existieren\u00a7c {0} \u00a76Warps. Zeige \u00a7c{1} \u00a76von \u00a7c{2}\u00a76 an. warpSet=\u00a76Warp-Punkt\u00a7c {0} \u00a76wurde erstellt. -warpUsePermission=\u00a74Du hast keinen Zugriff f\u00fcr diesen Warp-Punkt. -weatherInvalidWorld=Welt mit dem Namen {0} wurde nicht gefunden\! -weatherStorm=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es nun. -weatherStormFor=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es nun f\u00fcr {1} Sekunden. -weatherSun=\u00a76In \u00a7c{0}\u00a76 scheint nun die \u00a7cSonne\u00a76. -weatherSunFor=\u00a76In \u00a7c{0} \u00a76scheint nun f\u00fcr {1} Sekunden die \u00a7cSonne\u00a76. +warpUsePermission=\u00a74Du bist f\u00fcr diesen Warp-Punkt nicht berechtigt. +weatherInvalidWorld=Die Welt mit dem Namen {0} wurde nicht gefunden\! +weatherStorm=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es jetzt. +weatherStormFor=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es jetzt f\u00fcr {1} Sekunden. +weatherSun=\u00a76In \u00a7c{0}\u00a76 scheint jetzt die \u00a7cSonne\u00a76. +weatherSunFor=\u00a76In \u00a7c{0} \u00a76scheint jetzt f\u00fcr {1} Sekunden die \u00a7cSonne\u00a76. +west=W whoisAFK=\u00a76 - Abwesend\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Seit {1}) whoisBanned=\u00a76 - Gebannt\:\u00a7r {0} @@ -599,14 +621,14 @@ whoisMuted=\u00a76 - Stumm\:\u00a7r {0} whoisMutedReason=\u00a76 - Muted\:\u00a7r {0} \u00a76Reason: \u00a7c{1} whoisNick=\u00a76 - Spitzname\:\u00a7r {0} whoisOp=\u00a76 - OP\:\u00a7r {0} -whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0} +whoisPlaytime=\u00a76 - Spielzeit\:\u00a7r {0} whoisTempBanned=\u00a76 - Bann endet:\u00a7r {0} whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\= whoisUuid=\u00a76 - UUID\:\u00a7r {0} -worth=\u00a7aEin Stapel {0} ist \u00a7c{1}\u00a7a wert ({2} Einheiten je {3}) -worthMeta=\u00a7aEin Stapel von {0} mit Metadaten {1} ist \u00a7c{2}\u00a7a wert. ({3} Einheiten je {4}) +worth=\u00a7aEin Stapel {0} ist \u00a7c{1}\u00a7a wert. ({2} St\u00fcck je {3}) +worthMeta=\u00a7aEin Stapel von {0} mit Metadaten {1} ist \u00a7c{2}\u00a7a wert. ({3} St\u00fcck je {4}) worthSet=\u00a76Wert des Gegenstands gesetzt. year=Jahr years=Jahre youAreHealed=\u00a76Du wurdest geheilt. -youHaveNewMail=\u00a76Du hast \u00a7c{0} \u00a76Nachrichten\! Schreibe \u00a7c/mail read\u00a76 um deine Nachrichten anzuzeigen. \ No newline at end of file +youHaveNewMail=\u00a76Du hast \u00a7c{0} \u00a76Nachrichten\! Schreibe \u00a7c/mail read\u00a76 damit du deine Nachrichten lesen kannst. diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties index 3b80ebc20..6ca0a40eb 100644 --- a/Essentials/src/messages_en.properties +++ b/Essentials/src/messages_en.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -19,6 +19,10 @@ antiBuildInteract=\u00a74You are not permitted to interact with\u00a7c {0}\u00a7 antiBuildPlace=\u00a74You are not permitted to place\u00a7c {0} \u00a74here. antiBuildUse=\u00a74You are not permitted to use\u00a7c {0}\u00a74. autoAfkKickReason=You have been kicked for idling more than {0} minutes. +autoTeleportDisabled=\u00a76You are no longer automatically approving teleport requests. +autoTeleportDisabledFor=\u00a7c{0}\u00a76 is no longer automatically approving teleport requests. +autoTeleportEnabled=\u00a76You are now automatically approving teleport requests. +autoTeleportEnabledFor=\u00a7c{0}\u00a76 is now automatically approving teleport requests. backAfterDeath=\u00a76Use the /back command to return to your death point. backupDisabled=\u00a74An external backup script has not been configured. backupFinished=\u00a76Backup finished. @@ -77,7 +81,7 @@ couldNotFindTemplate=\u00a74Could not find template {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Creating config from template\: {0} creatingEmptyConfig=Creating empty config\: {0} creative=creative @@ -103,9 +107,10 @@ disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file. disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}. distance=\u00a76Distance\: {0} dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t move. -downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 0.6 MB, city\: 20MB) +downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB) duplicatedUserdata=Duplicated userdata\: {0} and {1}. durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left. +east=E editBookContents=\u00a7eYou may now edit the contents of this book. enabled=enabled enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76. @@ -191,6 +196,7 @@ invalidCharge=\u00a74Invalid charge. invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. invalidHome=\u00a74Home\u00a7c {0} \u00a74doesn''t exist\! invalidHomeName=\u00a74Invalid home name\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Invalid mob type. invalidNumber=Invalid Number. invalidPotion=\u00a74Invalid Potion. @@ -207,7 +213,9 @@ inventoryClearingFromAll=\u00a76Clearing the inventory of all users... inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76. is=is isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74That item cannot be sold to the server. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc. itemNames=\u00a76Item short names\:\u00a7r {0} itemNotEnough1=\u00a74You do not have enough of that item to sell. @@ -220,8 +228,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each). itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each). itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} -itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Item\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74You do the crime, you do the time. jailNotExist=\u00a74That jail does not exist. jailReleased=\u00a76Player \u00a7c{0}\u00a76 unjailed. @@ -247,7 +256,7 @@ kitOnce=\u00a74You can''t use that kit again. kitReceive=\u00a76Received kit\u00a7c {0}\u00a76. kits=\u00a76Kits\:\u00a7r {0} kitTimed=\u00a74You can''t use that kit again for another\u00a7c {0}\u00a74. -leatherSyntax=\u00a76Leather color syntax\: color\:,, eg\: color\:255,0,0. +leatherSyntax=\u00a76Leather color syntax\: color\:,, eg\: color\:255,0,0 OR color\: eg\: color\:16777011 lightningSmited=\u00a76Thou hast been smitten\! lightningUse=\u00a76Smiting\u00a7c {0} listAfkTag=\u00a77[AFK]\u00a7r @@ -258,7 +267,7 @@ listHiddenTag=\u00a77[HIDDEN]\u00a7r loadWarpError=\u00a74Failed to load warp {0}. localFormat=[L]<{0}> {1} localNoOne= -mailClear=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76. +mailClear=\u00a76To clear your mail, type\u00a7c /mail clear\u00a76. mailCleared=\u00a76Mail cleared\! mailDelay=Too many mails have been sent within the last minute. Maximum\: {0} mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} @@ -302,7 +311,7 @@ mutedPlayer=\u00a76Player\u00a7c {0} \u00a76muted. mutedPlayerFor=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76. mutedPlayerForReason=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76. \u00a76Reason: \u00a7c{2} mutedPlayerReason=\u00a76Player\u00a7c {0} \u00a76muted. \u00a76Reason: \u00a7c{1} -mutedUserSpeaks={0} tried to speak, but is muted. +mutedUserSpeaks={0} tried to speak, but is muted: {1} muteExempt=\u00a74You may not mute that player. muteExemptOffline=\u00a74You may not mute offline players. muteNotify=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. @@ -315,6 +324,7 @@ nickChanged=\u00a76Nickname changed. nickDisplayName=\u00a74You have to enable change-displayname in Essentials config. nickInUse=\u00a74That name is already in use. nickNamesAlpha=\u00a74Nicknames must be alphanumeric. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76You no longer have a nickname. nickSet=\u00a76Your nickname is now \u00a7c{0}\u00a76. nickTooLong=\u00a74That nickname is too long. @@ -323,10 +333,14 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u noBreakBedrock=\u00a74You are not allowed to destroy bedrock. noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74. noDurability=\u00a74This item does not have a durability. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Warning\! God mode in this world disabled. noHelpFound=\u00a74No matching commands. noHomeSetPlayer=\u00a76Player has not set a home. noIgnored=\u00a76You are not ignoring anyone. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74You do not have access to this kit. noKitPermission=\u00a74You need the \u00a7c{0}\u00a74 permission to use that kit. noKits=\u00a76There are no kits available yet. @@ -363,6 +377,7 @@ onlyDayNight=/time only supports day/night. onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74/weather only supports sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait... oversizedTempban=\u00a74You may not ban a player for this period of time. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +439,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. questionFormat=\u00a72[Question]\u00a7r {0} radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}. readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=There is no recipe by that number. @@ -442,7 +458,9 @@ repairEnchanted=\u00a74You are not allowed to repair enchanted items. repairInvalidType=\u00a74This item cannot be repaired. repairNone=\u00a74There were no items that needed repairing. requestAccepted=\u00a76Teleport request accepted. +requestAcceptedAuto=\u00a76Automatically accepted a teleport request from {0}. requestAcceptedFrom=\u00a7c{0} \u00a76accepted your teleport request. +requestAcceptedFromAuto=\u00a7c{0} \u00a76accepted your teleport request automatically. requestDenied=\u00a76Teleport request denied. requestDeniedFrom=\u00a7c{0} \u00a76denied your teleport request. requestSent=\u00a76Request sent to\u00a7c {0}\u00a76. @@ -462,6 +480,7 @@ sellBulkPermission=\u00a76You do not have permission to bulk sell. sellHandPermission=\u00a76You do not have permission to hand sell. serverFull=Server is full\! serverTotal=\u00a76Server Total\:\u00a7c {0} +serverUnsupported=You are running an unsupported server version! setBal=\u00a7aYour balance was set to {0}. setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}. setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76. @@ -472,6 +491,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74You are not allowed to create sign here. similarWarpExist=\u00a74A warp with a similar name already exists. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Malformed size. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -482,7 +504,7 @@ soloMob=\u00a74That mob likes to be alone. spawned=spawned spawnSet=\u00a76Spawn location set for group\u00a7c {0}\u00a76. spectator=spectator -sudoExempt=\u00a74You cannot sudo this user. +sudoExempt=\u00a74You cannot sudo \u00a7c{0}. sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1} suicideMessage=\u00a76Goodbye cruel world... suicideSuccess=\u00a76Player \u00a7c{0} \u00a76took their own life. @@ -494,6 +516,7 @@ teleportAll=\u00a76Teleporting all players... teleportationCommencing=\u00a76Teleportation commencing... teleportationDisabled=\u00a76Teleportation \u00a7cdisabled\u00a76. teleportationDisabledFor=\u00a76Teleportation \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. +teleportationDisabledWarning=\u00a76You must enable teleportation before other players can teleport to you. teleportationEnabled=\u00a76Teleportation \u00a7cenabled\u00a76. teleportationEnabledFor=\u00a76Teleportation \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. teleportAtoB=\u00a7c{0}\u00a76 teleported you to \u00a7c{1}\u00a76. @@ -535,7 +558,7 @@ typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. typeTpaccept=\u00a76To teleport, type \u00a7c/tpaccept\u00a76. typeTpdeny=\u00a76To deny this request, type \u00a7c/tpdeny\u00a76. typeWorldName=\u00a76You can also type the name of a specific world. -unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74, this is not a spawnable item. +unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74; this is not a spawnable item. unableToSpawnMob=\u00a74Unable to spawn mob. unignorePlayer=\u00a76You are not ignoring player\u00a7c {0} \u00a76anymore. unknownItemId=\u00a74Unknown item id\:\u00a7r {0}\u00a74. @@ -561,6 +584,11 @@ userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined thi usingTempFolderForTesting=Using temp folder for testing\: vanish=\u00a76Vanish for {0}\u00a76\: {1} vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands. +versionOutputVaultMissing=\u00a74Vault is not installed. Chat and permissions may not work. +versionOutputFine=\u00a76{0} version: \u00a7a{1} +versionOutputWarn=\u00a76{0} version: \u00a7c{1} +versionOutputUnsupported=\u00a7d{0} \u00a76version: \u00a7d{1} +versionOutputUnsupportedPlugins=\u00a76You are running \u00a7dunsupported plugins\u00a76! versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version. versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version. voiceSilenced=\u00a76Your voice has been silenced\! @@ -581,6 +609,7 @@ weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00 weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds. weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76. weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Banned\:\u00a7r {0} @@ -609,4 +638,4 @@ worthSet=\u00a76Worth value set year=year years=years youAreHealed=\u00a76You have been healed. -youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail. \ No newline at end of file +youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail. diff --git a/Essentials/src/messages_en_GB.properties b/Essentials/src/messages_en_GB.properties new file mode 100644 index 000000000..ce7d2dd77 --- /dev/null +++ b/Essentials/src/messages_en_GB.properties @@ -0,0 +1,620 @@ +#X-Generator: crowdin.net +#version: ${full.version} +# Single quotes have to be doubled: '' +# Translations start here +# by: +action=\u00a75* {0} \u00a75{1} +addedToAccount=\u00a7a{0} has been added to your account. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance\: {2} +adventure=adventure +alertBroke=broke\: +alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} at\: {3} +alertPlaced=placed\: +alertUsed=used\: +alphaNames=\u00a74Player names can only contain letters, numbers and underscores. +antiBuildBreak=\u00a74You are not permitted to break\u00a7c {0} \u00a74blocks here. +antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74. +antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74. +antiBuildInteract=\u00a74You are not permitted to interact with\u00a7c {0}\u00a74. +antiBuildPlace=\u00a74You are not permitted to place\u00a7c {0} \u00a74here. +antiBuildUse=\u00a74You are not permitted to use\u00a7c {0}\u00a74. +autoAfkKickReason=You have been kicked for idling more than {0} minutes. +backAfterDeath=\u00a76Use the /back command to return to your death point. +backupDisabled=\u00a74An external backup script has not been configured. +backupFinished=\u00a76Backup finished. +backupStarted=\u00a76Backup started. +backUsageMsg=\u00a76Returning to previous location. +balance=\u00a7aBalance\:\u00a7c {0} +balanceOther=\u00a7aBalance of {0}\u00a7a\:\u00a7c {1} +balanceTop=\u00a76Top balances ({0}) +banExempt=\u00a74You cannot ban that player. +banExemptOffline=\u00a74You may not ban offline players. +banFormat=\u00a7cYou have been banned\:\n\u00a7r{0} +banIpJoin=Your IP address is banned from this server. Reason: {0} +banJoin=You are banned from this server. Reason: {0} +bed=\u00a7obed\u00a7r +bedMissing=\u00a74Your bed is either unset, missing or blocked. +bedNull=\u00a7mbed\u00a7r +bedSet=\u00a76Bed spawn set\! +bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt. +bigTreeSuccess=\u00a76Big tree spawned. +blockList=\u00a76Essentials relayed the following commands to another plugin\: +bookAuthorSet=\u00a76Author of the book set to {0}. +bookLocked=\u00a76This book is now locked. +bookTitleSet=\u00a76Title of the book set to {0}. +broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0} +buildAlert=\u00a74You are not permitted to build. +bukkitFormatChanged=Bukkit version format changed. Version not checked. +burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76. +cannotStackMob=\u00a74You do not have permission to stack multiple mobs. +canTalkAgain=\u00a76You can now talk again. +cantFindGeoIpDB=Can''t find GeoIP database\! +cantGamemode=\u00a74You do not have permission to change to gamemode {0} +cantReadGeoIpDB=Failed to read GeoIP database\! +cantSpawnItem=\u00a74You are not allowed to spawn the item\u00a7c {0}\u00a74. +chatTypeAdmin=[A] +chatTypeLocal=[L] +chatTypeSpy=[Spy] +cleaned=Userfiles Cleaned. +cleaning=Cleaning userfiles. +clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. +clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. +commandCooldown=\u00a7cYou cannot type that command for {0}. +commandFailed=Command {0} failed\: +commandHelpFailedForPlugin=Error getting help for plugin\: {0} +commandNotLoaded=\u00a74Command {0} is improperly loaded. +compassBearing=\u00a76Bearing\: {0} ({1} degrees). +configFileMoveError=Failed to move config.yml to backup location. +configFileRenameError=Failed to rename temp file to config.yml. +confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} +confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1} +connectedPlayers=\u00a76Connected players\u00a7r +connectionFailed=Failed to open connection. +cooldownWithMessage=\u00a74Cooldown\: {0} +coordsKeyword={0}, {1}, {2} +corruptNodeInConfig=\u00a74Notice\: Your configuration file has a corrupt {0} node. +couldNotFindTemplate=\u00a74Could not find template {0} +createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} +createKitFailed=\u00a74Error occurred whilst creating kit {0}. +createKitSeparator=\u00a7m----------------------- +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. +creatingConfigFromTemplate=Creating config from template\: {0} +creatingEmptyConfig=Creating empty config\: {0} +creative=creative +currency={0}{1} +currentWorld=\u00a76Current World\:\u00a7c {0} +day=day +days=days +defaultBanReason=The Ban Hammer has spoken\! +deleteFileError=Could not delete file\: {0} +deleteHome=\u00a76Home\u00a7c {0} \u00a76has been removed. +deleteJail=\u00a76Jail\u00a7c {0} \u00a76has been removed. +deleteWarp=\u00a76Warp\u00a7c {0} \u00a76has been removed. +deniedAccessCommand=\u00a7c{0} \u00a74was denied access to command. +denyBookEdit=\u00a74You cannot unlock this book. +denyChangeAuthor=\u00a74You cannot change the author of this book. +denyChangeTitle=\u00a74You cannot change the title of this book. +depth=\u00a76You are at sea level. +depthAboveSea=\u00a76You are\u00a7c {0} \u00a76block(s) above sea level. +depthBelowSea=\u00a76You are\u00a7c {0} \u00a76block(s) below sea level. +destinationNotSet=Destination not set\! +disabled=disabled +disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file. +disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}. +distance=\u00a76Distance\: {0} +dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t move. +downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB) +duplicatedUserdata=Duplicated userdata\: {0} and {1}. +durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left. +east=E +editBookContents=\u00a7eYou may now edit the contents of this book. +enabled=enabled +enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76. +enchantmentApplied=\u00a76The enchantment\u00a7c {0} \u00a76has been applied to your item in hand. +enchantmentNotFound=\u00a74Enchantment not found\! +enchantmentPerm=\u00a74You do not have the permission for\u00a7c {0}\u00a74. +enchantmentRemoved=\u00a76The enchantment\u00a7c {0} \u00a76has been removed from your item in hand. +enchantments=\u00a76Enchantments\:\u00a7r {0} +errorCallingCommand=Error calling the command /{0} +errorWithMessage=\u00a7cError\:\u00a74 {0} +essentialsHelp1=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, go to http\://tiny.cc/EssentialsChat +essentialsHelp2=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, either type /essentialshelp in game or go to http\://tiny.cc/EssentialsChat +essentialsReload=\u00a76Essentials reloaded\u00a7c {0}. +exp=\u00a7c{0} \u00a76has\u00a7c {1} \u00a76exp (level\u00a7c {2}\u00a76) and needs\u00a7c {3} \u00a76more exp to level up. +expSet=\u00a7c{0} \u00a76now has\u00a7c {1} \u00a76exp. +extinguish=\u00a76You extinguished yourself. +extinguishOthers=\u00a76You extinguished {0}\u00a76. +failedToCloseConfig=Failed to close config {0}. +failedToCreateConfig=Failed to create config {0}. +failedToWriteConfig=Failed to write config {0}. +false=\u00a74false\u00a7r +feed=\u00a76Your appetite was sated. +feedOther=\u00a76You satiated the appetite of \u00a7c{0}\u00a76. +fileRenameError=Renaming file {0} failed\! +fireworkColor=\u00a74Invalid firework charge parameters inserted, must set a colour first. +fireworkEffectsCleared=\u00a76Removed all effects from held stack. +fireworkSyntax=\u00a76Firework parameters\:\u00a7c color\: [fade\:] [shape\:] [effect\:]\n\u00a76To use multiple colours/effects, separate values with commas\: \u00a7cred,blue,pink\n\u00a76Shapes\:\u00a7c star, ball, large, creeper, burst \u00a76Effects\:\u00a7c trail, twinkle. +flying=flying +flyMode=\u00a76Set fly mode\u00a7c {0} \u00a76for {1}\u00a76. +foreverAlone=\u00a74You have nobody to whom you can reply. +fullStack=\u00a74You already have a full stack. +gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for \u00a7c{1}\u00a76. +gameModeInvalid=\u00a74You need to specify a valid player/mode. +gcfree=\u00a76Free memory\:\u00a7c {0} MB. +gcmax=\u00a76Maximum memory\:\u00a7c {0} MB. +gctotal=\u00a76Allocated memory\:\u00a7c {0} MB. +gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities, \u00a7c{4}\u00a76 tiles. +geoipJoinFormat=\u00a76Player \u00a7c{0} \u00a76comes from \u00a7c{1}\u00a76. +geoIpUrlEmpty=GeoIP download url is empty. +geoIpUrlInvalid=GeoIP download url is invalid. +givenSkull=\u00a76You have been given the skull of \u00a7c{0}\u00a76. +giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76. +giveSpawnFailure=\u00a74Not enough space, \u00a7c{0} \u00a7c{1} \u00a74was lost. +godDisabledFor=\u00a7cdisabled\u00a76 for\u00a7c {0} +godEnabledFor=\u00a7aenabled\u00a76 for\u00a7c {0} +godMode=\u00a76God mode\u00a7c {0}\u00a76. +groupDoesNotExist=\u00a74There''s no one online in this group\! +groupNumber=\u00a7c{0}\u00a7f online, for the full list\:\u00a7c /{1} {2} +hatArmor=\u00a74You cannot use this item as a hat\! +hatEmpty=\u00a74You are not wearing a hat. +hatFail=\u00a74You must have something to wear in your hand. +hatPlaced=\u00a76Enjoy your new hat\! +hatRemoved=\u00a76Your hat has been removed. +haveBeenReleased=\u00a76You have been released. +heal=\u00a76You have been healed. +healDead=\u00a74You cannot heal someone who is dead\! +healOther=\u00a76Healed\u00a7c {0}\u00a76. +helpConsole=To view help from the console, type ?. +helpFrom=\u00a76Commands from {0}\: +helpLine=\u00a76/{0}\u00a7r\: {1} +helpMatching=\u00a76Commands matching "\u00a7c{0}\u00a76"\: +helpOp=\u00a74[HelpOp]\u00a7r \u00a76{0}\:\u00a7r {1} +helpPlugin=\u00a74{0}\u00a7r\: Plugin Help\: /help {1} +holdBook=\u00a74You are not holding a writable book. +holdFirework=\u00a74You must be holding a firework to add effects. +holdPotion=\u00a74You must be holding a potion to apply effects to it. +holeInFloor=\u00a74Hole in floor\! +homes=\u00a76Homes\:\u00a7r {0} +homeSet=\u00a76Home set to current location. +hour=hour +hours=hours +ignoredList=\u00a76Ignored\:\u00a7r {0} +ignoreExempt=\u00a74You may not ignore that player. +ignorePlayer=\u00a76You ignore player\u00a7c {0} \u00a76from now on. +illegalDate=Illegal date format. +infoChapter=\u00a76Select chapter\: +infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 Page \u00a7c{1}\u00a76 of \u00a7c{2} \u00a7e---- +infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Page \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e---- +infoUnknownChapter=\u00a74Unknown chapter. +insufficientFunds=\u00a74Insufficient funds available. +invalidBanner=\u00a74Invalid banner syntax. +invalidCharge=\u00a74Invalid charge. +invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. +invalidHome=\u00a74Home\u00a7c {0} \u00a74doesn''t exist\! +invalidHomeName=\u00a74Invalid home name\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. +invalidMob=\u00a74Invalid mob type. +invalidNumber=Invalid Number. +invalidPotion=\u00a74Invalid Potion. +invalidPotionMeta=\u00a74Invalid potion meta\: \u00a7c{0}\u00a74. +invalidSignLine=\u00a74Line\u00a7c {0} \u00a74on sign is invalid. +invalidSkull=\u00a74Please hold a player skull. +invalidWarpName=\u00a74Invalid warp name\! +invalidWorld=\u00a74Invalid world. +inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74. +inventoryClearingAllArmor=\u00a76Cleared all inventory items and armour from {0}\u00a76. +inventoryClearingAllItems=\u00a76Cleared all inventory items from {0}\u00a76. +inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76. +inventoryClearingFromAll=\u00a76Clearing the inventory of all users... +inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76. +is=is +isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. +itemCannotBeSold=\u00a74That item cannot be sold to the server. +itemId=\u00a76ID\:\u00a7c {0} +itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc. +itemNames=\u00a76Item short names\:\u00a7r {0} +itemNotEnough1=\u00a74You do not have enough of that item to sell. +itemNotEnough2=\u00a76If you meant to sell all of your items of that type, use /sell itemname. +itemNotEnough3=\u00a76/sell itemname -1 will sell all but one item, etc. +itemsConverted=\u00a76Converted all items into blocks. +itemsCsvNotLoaded=Could not load items.csv\! +itemSellAir=You really tried to sell Air? Put an item in your hand. +itemsNotConverted=\u00a74You have no items that can be converted into blocks. +itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each). +itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each). +itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} +itemType=\u00a76Item\:\u00a7c {0} \u00a76 +jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} +jailMessage=\u00a74You do the crime, you do the time. +jailNotExist=\u00a74That jail does not exist. +jailReleased=\u00a76Player \u00a7c{0}\u00a76 unjailed. +jailReleasedPlayerNotify=\u00a76You have been released\! +jailSentenceExtended=\u00a76Jail time extended to \u00a7c{0}\u00a76. +jailSet=\u00a76Jail\u00a7c {0} \u00a76has been set. +jumpError=\u00a74That would hurt your computer''s brain. +kickDefault=Kicked from server. +kickedAll=\u00a74Kicked all players from server. +kickExempt=\u00a74You cannot kick that person. +kill=\u00a76Killed\u00a7c {0}\u00a76. +killExempt=\u00a74You cannot kill \u00a7c{0}\u00a74. +kitContains=\u00a76Kit \u00a7c{0} \u00a76contains: +kitCost=\ \u00a77\u00a7o({0})\u00a7r +kitDelay=\u00a7m{0}\u00a7r +kitError=\u00a74There are no valid kits. +kitError2=\u00a74That kit is improperly defined. Contact an administrator. +kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to \u00a7c{1}\u00a76. +kitInvFull=\u00a74Your inventory was full, placing kit on the floor. +kitItem=\u00a76- \u00a7f{0} +kitNotFound=\u00a74That kit does not exist. +kitOnce=\u00a74You can''t use that kit again. +kitReceive=\u00a76Received kit\u00a7c {0}\u00a76. +kits=\u00a76Kits\:\u00a7r {0} +kitTimed=\u00a74You can''t use that kit again for another\u00a7c {0}\u00a74. +leatherSyntax=\u00a76Leather colour syntax\: color\:,, eg\: color\:255,0,0. +lightningSmited=\u00a76Thou hast been smitten\! +lightningUse=\u00a76Smiting\u00a7c {0} +listAfkTag=\u00a77[AFK]\u00a7r +listAmount=\u00a76There are \u00a7c{0}\u00a76 out of maximum \u00a7c{1}\u00a76 players online. +listAmountHidden=\u00a76There are \u00a7c{0}\u00a76/{1}\u00a76 out of maximum \u00a7c{2}\u00a76 players online. +listGroupTag=\u00a76{0}\u00a7r\: \u00a7r +listHiddenTag=\u00a77[HIDDEN]\u00a7r +loadWarpError=\u00a74Failed to load warp {0}. +localFormat=[L]<{0}> {1} +localNoOne= +mailClear=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76. +mailCleared=\u00a76Mail cleared\! +mailDelay=Too many mails have been sent within the last minute. Maximum\: {0} +mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} +mailMessage={0} +mailSent=\u00a76Mail sent\! +mailSentTo=\u00a7c{0}\u00a76 has been sent the following mail\: +mailTooLong=\u00a74Mail message too long. Try to keep it below 1000 characters. +markedAsAway=\u00a76You are now marked as away. +markedAsNotAway=\u00a76You are no longer marked as away. +markMailAsRead=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76. +matchingIPAddress=\u00a76The following players previously logged in from that IP address\: +maxHomes=\u00a74You cannot set more than\u00a7c {0} \u00a74homes. +maxMoney=\u00a74This transaction would exceed the balance limit for this account. +mayNotJail=\u00a74You may not jail that person\! +mayNotJailOffline=\u00a74You may not jail offline players. +me=me +minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}. +minute=minute +minutes=minutes +missingItems=\u00a74You do not have \u00a7c{0}x {1}\u00a74. +mobDataList=\u00a76Valid mob data\:\u00a7r {0} +mobsAvailable=\u00a76Mobs\:\u00a7r {0} +mobSpawnError=\u00a74Error while changing mob spawner. +mobSpawnLimit=Mob quantity limited to server limit. +mobSpawnTarget=\u00a74Target block must be a mob spawner. +moneyRecievedFrom=\u00a7a{0} has been received from {1}. +moneySentTo=\u00a7a{0} has been sent to {1}. +month=month +months=months +moreThanZero=\u00a74Quantities must be greater than 0. +moveSpeed=\u00a76Set {0} speed to\u00a7c {1} \u00a76for \u00a7c{2}\u00a76. +msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76. +msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. +msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76. +msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. +msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} +msgIgnore=\u00a7c{0} \u00a74has messages disabled. +multipleCharges=\u00a74You cannot apply more than one charge to this firework. +multiplePotionEffects=\u00a74You cannot apply more than one effect to this potion. +mutedPlayer=\u00a76Player\u00a7c {0} \u00a76muted. +mutedPlayerFor=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76. +mutedUserSpeaks={0} tried to speak, but is muted. +muteExempt=\u00a74You may not mute that player. +muteExemptOffline=\u00a74You may not mute offline players. +muteNotify=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. +muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. +nearbyPlayers=\u00a76Players nearby\:\u00a7r {0} +negativeBalanceError=\u00a74User is not allowed to have a negative balance. +nickChanged=\u00a76Nickname changed. +nickDisplayName=\u00a74You have to enable change-displayname in Essentials config. +nickInUse=\u00a74That name is already in use. +nickNamesAlpha=\u00a74Nicknames must be alphanumeric. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colours changed. +nickNoMore=\u00a76You no longer have a nickname. +nickSet=\u00a76Your nickname is now \u00a7c{0}\u00a76. +nickTooLong=\u00a74That nickname is too long. +noAccessCommand=\u00a74You do not have access to that command. +noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u00a74. +noBreakBedrock=\u00a74You are not allowed to destroy bedrock. +noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74. +noDurability=\u00a74This item does not have a durability. +northEast=NE +north=N +northWest=NW +noGodWorldWarning=\u00a74Warning\! God mode in this world disabled. +noHelpFound=\u00a74No matching commands. +noHomeSetPlayer=\u00a76Player has not set a home. +noIgnored=\u00a76You are not ignoring anyone. +noJailsDefined=\u00a76No jails defined. +noKitGroup=\u00a74You do not have access to this kit. +noKitPermission=\u00a74You need the \u00a7c{0}\u00a74 permission to use that kit. +noKits=\u00a76There are no kits available yet. +noLocationFound=\u00a74No valid location found. +noMail=\u00a76You do not have any mail. +noMatchingPlayers=\u00a76No matching players found. +noMetaFirework=\u00a74You do not have permission to apply firework meta. +noMetaJson=JSON Metadata is not supported in this version of Bukkit. +noMetaPerm=\u00a74You do not have permission to apply \u00a7c{0}\u00a74 meta to this item. +none=none +noNewMail=\u00a76You have no new mail. +noPendingRequest=\u00a74You do not have a pending request. +noPerm=\u00a74You do not have the \u00a7c{0}\u00a74 permission. +noPermissionSkull=\u00a74You do not have permission to modify that skull. +noPermToAFKMessage=\u00a74You don''t have permission to set an AFK message. +noPermToSpawnMob=\u00a74You don''t have permission to spawn this mob. +noPlacePermission=\u00a74You do not have permission to place a block near that sign. +noPotionEffectPerm=\u00a74You do not have permission to apply potion effect \u00a7c{0} \u00a74to this potion. +noPowerTools=\u00a76You have no power tools assigned. +notAcceptingPay=\u00a74{0} \u00a74is not accepting payment. +notAllowedToQuestion=\u00a74You are not authorised to use question. +notAllowedToShout=\u00a74You are not authorised to shout. +notEnoughExperience=\u00a74You do not have enough experience. +notEnoughMoney=\u00a74You do not have sufficient funds. +notFlying=not flying +nothingInHand=\u00a74You have nothing in your hand. +notRecommendedBukkit=\u00a74* \! * Bukkit version is not the recommended build for Essentials. +notSupportedYet=Not supported yet. +now=now +noWarpsDefined=\u00a76No warps defined. +nuke=\u00a75May death rain upon them. +numberRequired=A number goes there, silly. +onlyDayNight=/time only supports day/night. +onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74. +onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74). +onlySunStorm=\u00a74/weather only supports sun/storm. +openingDisposal=\u00a76Opening disposal menu... +orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait... +oversizedTempban=\u00a74You may not ban a player for this period of time. +payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. +payConfirmToggleOn=\u00a76You will now be prompted to confirm payments. +payMustBePositive=\u00a74Amount to pay must be positive. +payToggleOff=\u00a76You are no longer accepting payments. +payToggleOn=\u00a76You are now accepting payments. +pendingTeleportCancelled=\u00a74Pending teleportation request cancelled. +playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76. +playerBanned=\u00a76Player\u00a7c {0} \u00a76banned\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76. +playerInJail=\u00a74Player is already in jail\u00a7c {0}\u00a74. +playerJailed=\u00a76Player\u00a7c {0} \u00a76jailed. +playerJailedFor=\u00a76Player\u00a7c {0} \u00a76jailed for {1}. +playerKicked=\u00a76Player\u00a7c {0} \u00a76kicked {1} for {2}. +playerMuted=\u00a76You have been muted\! +playerMutedFor=\u00a76You have been muted for\u00a7c {0}. +playerNeverOnServer=\u00a74Player\u00a7c {0} \u00a74was never on this server. +playerNotFound=\u00a74Player not found. +playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. +playerUnbanIpAddress=\u00a76Player\u00a7c {0} \u00a76unbanned IP\: {1}. +playerUnbanned=\u00a76Player\u00a7c {0} \u00a76unbanned\u00a7c {1}. +playerUnmuted=\u00a76You have been unmuted. +pong=Pong\! +posPitch=\u00a76Pitch\: {0} (Head angle) +possibleWorlds=\u00a76Possible worlds are the numbers \u00a7c0\u00a76 through \u00a7c{0}\u00a76. +posX=\u00a76X\: {0} (+East <-> -West) +posY=\u00a76Y\: {0} (+Up <-> -Down) +posYaw=\u00a76Yaw\: {0} (Rotation) +posZ=\u00a76Z\: {0} (+South <-> -North) +potions=\u00a76Potions\:\u00a7r {0}\u00a76. +powerToolAir=\u00a74Command can''t be attached to air. +powerToolAlreadySet=\u00a74Command \u00a7c{0}\u00a74 is already assigned to \u00a7c{1}\u00a74. +powerToolAttach=\u00a7c{0}\u00a76 command assigned to {1}. +powerToolClearAll=\u00a76All powertool commands have been cleared. +powerToolList=\u00a76Item \u00a7c{1} \u00a76has the following commands\: \u00a7c{0}\u00a76. +powerToolListEmpty=\u00a74Item \u00a7c{0} \u00a74has no commands assigned. +powerToolNoSuchCommandAssigned=\u00a74Command \u00a7c{0}\u00a74 has not been assigned to \u00a7c{1}\u00a74. +powerToolRemove=\u00a76Command \u00a7c{0}\u00a76 removed from \u00a7c{1}\u00a76. +powerToolRemoveAll=\u00a76All commands removed from \u00a7c{0}\u00a76. +powerToolsDisabled=\u00a76All of your power tools have been disabled. +powerToolsEnabled=\u00a76All of your power tools have been enabled. +pTimeCurrent=\u00a7c{0}\u00a76''s time is\u00a7c {1}\u00a76. +pTimeCurrentFixed=\u00a7c{0}\u00a76''s time is fixed to\u00a7c {1}\u00a76. +pTimeNormal=\u00a7c{0}\u00a76''s time is normal and matches the server. +pTimeOthersPermission=\u00a74You are not authorised to set other players'' time. +pTimePlayers=\u00a76These players have their own time\:\u00a7r +pTimeReset=\u00a76Player time has been reset for\: \u00a7c{0} +pTimeSet=\u00a76Player time is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. +pTimeSetFixed=\u00a76Player time is fixed to \u00a7c{0}\u00a76 for\: \u00a7c{1}. +pWeatherCurrent=\u00a7c{0}\u00a76''s weather is\u00a7c {1}\u00a76. +pWeatherInvalidAlias=\u00a74Invalid weather type +pWeatherNormal=\u00a7c{0}\u00a76''s weather is normal and matches the server. +pWeatherOthersPermission=\u00a74You are not authorised to set other players'' weather. +pWeatherPlayers=\u00a76These players have their own weather\:\u00a7r +pWeatherReset=\u00a76Player weather has been reset for\: \u00a7c{0} +pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. +questionFormat=\u00a72[Question]\u00a7r {0} +radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}. +readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} +recentlyForeverAlone=\u00a74{0} recently went offline. +recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) +recipeBadIndex=There is no recipe by that number. +recipeFurnace=\u00a76Smelt\: \u00a7c{0}\u00a76. +recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\u00a7c{0}X \u00a76is \u00a7c{1} +recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 to see other recipes for \u00a7c{2}\u00a76. +recipeNone=No recipes exist for {0}. +recipeNothing=nothing +recipeShapeless=\u00a76Combine \u00a7c{0} +recipeWhere=\u00a76Where\: {0} +removed=\u00a76Removed\u00a7c {0} \u00a76entities. +repair=\u00a76You have successfully repaired your\: \u00a7c{0}\u00a76. +repairAlreadyFixed=\u00a74This item does not need repairing. +repairEnchanted=\u00a74You are not allowed to repair enchanted items. +repairInvalidType=\u00a74This item cannot be repaired. +repairNone=\u00a74There were no items that needed repairing. +requestAccepted=\u00a76Teleport request accepted. +requestAcceptedFrom=\u00a7c{0} \u00a76accepted your teleport request. +requestDenied=\u00a76Teleport request denied. +requestDeniedFrom=\u00a7c{0} \u00a76denied your teleport request. +requestSent=\u00a76Request sent to\u00a7c {0}\u00a76. +requestSentAlready=\u00a74You have already sent {0}\u00a74 a teleport request. +requestTimedOut=\u00a74Teleport request has timed out. +requiredBukkit=\u00a76* \! * You need at least build {0} of CraftBukkit, download it from http\://dl.bukkit.org/downloads/craftbukkit/ +resetBal=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all online players. +resetBalAll=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all players. +returnPlayerToJailError=\u00a74Error occurred when trying to return player\u00a7c {0} \u00a74to jail\: \u00a7c{1}\u00a74\! +runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while). +second=second +seconds=seconds +seenAccounts=\u00a76Player has also been known as\:\u00a7c {0} +seenOffline=\u00a76Player\u00a7c {0} \u00a76has been \u00a74offline\u00a76 since \u00a7c{1}\u00a76. +seenOnline=\u00a76Player\u00a7c {0} \u00a76has been \u00a7aonline\u00a76 since \u00a7c{1}\u00a76. +sellBulkPermission=\u00a76You do not have permission to bulk sell. +sellHandPermission=\u00a76You do not have permission to hand sell. +serverFull=Server is full\! +serverTotal=\u00a76Server Total\:\u00a7c {0} +setBal=\u00a7aYour balance was set to {0}. +setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}. +setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76. +sheepMalformedColor=\u00a74Malformed colour. +shoutFormat=\u00a76[Shout]\u00a7r {0} +signFormatFail=\u00a74[{0}] +signFormatSuccess=\u00a71[{0}] +signFormatTemplate=[{0}] +signProtectInvalidLocation=\u00a74You are not allowed to create sign here. +similarWarpExist=\u00a74A warp with a similar name already exists. +southEast=SE +south=S +southWest=SW +skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76. +slimeMalformedSize=\u00a74Malformed size. +socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} +socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} +socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r +soloMob=\u00a74That mob likes to be alone. +spawned=spawned +spawnSet=\u00a76Spawn location set for group\u00a7c {0}\u00a76. +spectator=spectator +sudoExempt=\u00a74You cannot sudo this user. +sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1} +suicideMessage=\u00a76Goodbye cruel world... +suicideSuccess=\u00a76Player \u00a7c{0} \u00a76took their own life. +survival=survival +takenFromAccount=\u00a7a{0} has been taken from your account. +takenFromOthersAccount=\u00a7a{0} taken from {1}\u00a7a account. New balance\: {2}. +teleportAAll=\u00a76Teleport request sent to all players... +teleportAll=\u00a76Teleporting all players... +teleportationCommencing=\u00a76Teleportation commencing... +teleportationDisabled=\u00a76Teleportation \u00a7cdisabled\u00a76. +teleportationDisabledFor=\u00a76Teleportation \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. +teleportationEnabled=\u00a76Teleportation \u00a7cenabled\u00a76. +teleportationEnabledFor=\u00a76Teleportation \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. +teleportAtoB=\u00a7c{0}\u00a76 teleported you to \u00a7c{1}\u00a76. +teleportDisabled=\u00a7c{0} \u00a74has teleportation disabled. +teleportHereRequest=\u00a7c{0}\u00a76 has requested that you teleport to them. +teleporting=\u00a76Teleporting... +teleportInvalidLocation=Value of coordinates cannot be over 30000000 +teleportNewPlayerError=\u00a74Failed to teleport new player\! +teleportRequest=\u00a7c{0}\u00a76 has requested to teleport to you. +teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled. +teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled. +teleportRequestTimeoutInfo=\u00a76This request will timeout after\u00a7c {0} seconds\u00a76. +teleportTop=\u00a76Teleporting to top. +teleportToPlayer=\u00a76Teleporting to \u00a7c{0}\u00a76. +tempbanExempt=\u00a74You may not tempban that player. +tempbanExemptOffline=\u00a74You may not tempban offline players. +tempbanJoin=You are banned from this server for {0}. Reason: {1} +tempBanned=\u00a7cYou have been temporarily banned for {0}\:\n\u00a7r{2} +thunder=\u00a76You\u00a7c {0} \u00a76thunder in your world. +thunderDuration=\u00a76You\u00a7c {0} \u00a76thunder in your world for\u00a7c {1} \u00a76seconds. +timeBeforeHeal=\u00a74Time before next heal\:\u00a7c {0}\u00a76. +timeBeforeTeleport=\u00a74Time before next teleport\:\u00a7c {0}\u00a76. +timeFormat=\u00a7c{0}\u00a76 or \u00a7c{1}\u00a76 or \u00a7c{2}\u00a76 +timeSetPermission=\u00a74You are not authorised to set the time. +timeSetWorldPermission=\u00a74You are not authorised to set the time in world ''{0}''. +timeWorldCurrent=\u00a76The current time in\u00a7c {0} \u00a76is \u00a7c{1}\u00a76. +timeWorldSet=\u00a76The time was set to\u00a7c {0} \u00a76in\: \u00a7c{1}\u00a76. +totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a. +totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a. +totalWorthAll=\u00a7aSold all items and blocks for a total worth of \u00a7c{1}\u00a7a. +totalWorthBlocks=\u00a7aSold all blocks for a total worth of \u00a7c{1}\u00a7a. +tps=\u00a76Current TPS \= {0} +tradeSignEmpty=\u00a74The trade sign has nothing available for you. +tradeSignEmptyOwner=\u00a74There is nothing to collect from this trade sign. +treeFailure=\u00a74Tree generation failure. Try again on grass or dirt. +treeSpawned=\u00a76Tree spawned. +true=\u00a7atrue\u00a7r +typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. +typeTpaccept=\u00a76To teleport, type \u00a7c/tpaccept\u00a76. +typeTpdeny=\u00a76To deny this request, type \u00a7c/tpdeny\u00a76. +typeWorldName=\u00a76You can also type the name of a specific world. +unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74; this is not a spawnable item. +unableToSpawnMob=\u00a74Unable to spawn mob. +unignorePlayer=\u00a76You are not ignoring player\u00a7c {0} \u00a76anymore. +unknownItemId=\u00a74Unknown item id\:\u00a7r {0}\u00a74. +unknownItemInList=\u00a74Unknown item {0} in {1} list. +unknownItemName=\u00a74Unknown item name\: {0}. +unlimitedItemPermission=\u00a74No permission for unlimited item \u00a7c{0}\u00a74. +unlimitedItems=\u00a76Unlimited items\:\u00a7r +unmutedPlayer=\u00a76Player\u00a7c {0} \u00a76unmuted. +unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled. +unvanishedReload=\u00a74A reload has forced you to become visible. +upgradingFilesError=Error while upgrading the files. +uptime=\u00a76Uptime\:\u00a7c {0} +userAFK=\u00a77{0} \u00a75is currently AFK and may not respond. +userAFKWithMessage=\u00a77{0} \u00a75is currently AFK and may not respond: {1} +userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}\! +userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp\! +userDoesNotExist=\u00a74The user\u00a7c {0} \u00a74does not exist. +userIsAway=\u00a77* {0} \u00a77is now AFK. +userIsAwayWithMessage=\u00a77* {0} \u00a77is now AFK. +userIsNotAway=\u00a77* {0} \u00a77is no longer AFK. +userJailed=\u00a76You have been jailed\! +userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined this server. +usingTempFolderForTesting=Using temp folder for testing\: +vanish=\u00a76Vanish for {0}\u00a76\: {1} +vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands. +versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version. +versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version. +voiceSilenced=\u00a76Your voice has been silenced\! +walking=walking +warpDeleteError=\u00a74Problem deleting the warp file. +warpingTo=\u00a76Warping to\u00a7c {0}\u00a76. +warpList={0} +warpListPermission=\u00a74You do not have permission to list warps. +warpNotExist=\u00a74That warp does not exist. +warpOverwrite=\u00a74You cannot overwrite that warp. +warps=\u00a76Warps\:\u00a7r {0} +warpsCount=\u00a76There are\u00a7c {0} \u00a76warps. Showing page \u00a7c{1} \u00a76of \u00a7c{2}\u00a76. +warpSet=\u00a76Warp\u00a7c {0} \u00a76set. +warpUsePermission=\u00a74You do not have permission to use that warp. +weatherInvalidWorld=World named {0} not found\! +weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00a76. +weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds. +weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76. +weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds. +west=W +whoisAFK=\u00a76 - AFK\:\u00a7r {0} +whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) +whoisBanned=\u00a76 - Banned\:\u00a7r {0} +whoisExp=\u00a76 - Exp\:\u00a7r {0} (Level {1}) +whoisFly=\u00a76 - Fly mode\:\u00a7r {0} ({1}) +whoisGamemode=\u00a76 - Gamemode\:\u00a7r {0} +whoisGeoLocation=\u00a76 - Location\:\u00a7r {0} +whoisGod=\u00a76 - God mode\:\u00a7r {0} +whoisHealth=\u00a76 - Health\:\u00a7r {0}/20 +whoisHunger=\u00a76 - Hunger\:\u00a7r {0}/20 (+{1} saturation) +whoisIPAddress=\u00a76 - IP Address\:\u00a7r {0} +whoisJail=\u00a76 - Jail\:\u00a7r {0} +whoisLocation=\u00a76 - Location\:\u00a7r ({0}, {1}, {2}, {3}) +whoisMoney=\u00a76 - Money\:\u00a7r {0} +whoisMuted=\u00a76 - Muted\:\u00a7r {0} +whoisNick=\u00a76 - Nick\:\u00a7r {0} +whoisOp=\u00a76 - OP\:\u00a7r {0} +whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0} +whoisTempBanned=\u00a76 - Ban expires:\u00a7r {0} +whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\= +whoisUuid=\u00a76 - UUID\:\u00a7r {0} +worth=\u00a7aStack of {0} worth \u00a7c{1}\u00a7a ({2} item(s) at {3} each) +worthMeta=\u00a7aStack of {0} with metadata of {1} worth \u00a7c{2}\u00a7a ({3} item(s) at {4} each) +worthSet=\u00a76Worth value set +year=year +years=years +youAreHealed=\u00a76You have been healed. +youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail. diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties index 47d0f0fc0..1913d674f 100644 --- a/Essentials/src/messages_es.properties +++ b/Essentials/src/messages_es.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74No se puede encontrar la plantilla\u00a76 {0} createdKit=\u00a76Kit \u00a7c{0} \u00a76creado con \u00a7c{1} \u00a76articulos y un tiempo de espera de \u00a7c{2} createKitFailed=\u00a74Ocurrio un error durante la creacion del kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Kit creado: \u00a7f{0}\n\u00a76Tiempo de espera: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia el contenido del link de arriba en tu archivo config.yml. +createKitSuccess=\u00a76Kit creado: \u00a7f{0}\n\u00a76Tiempo de espera: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia el contenido del link de arriba en tu archivo kits.yml. creatingConfigFromTemplate=Creando configuraci\u00f3n desde la plantilla\: {0} creatingEmptyConfig=Creando configuraci\u00f3n vac\u00eda\: {0} creative=creativo @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74El spawn de este mob est\u00e1 deshabilitado en la con disableUnlimited=\u00a76La colocaci\u00f3n ilimitada de \u00a7c{0} \u00a76ha sido desactivada para {1}\u00a76. distance=\u00a76Distancia\: {0} dontMoveMessage=\u00a76El teletransporte comenzar\u00e1 en\u00a7c {0}\u00a76. Por favor, no te muevas. -downloadingGeoIp=Descargando base de datos de GeoIP... Puede tardar unos minutos (pa\u00edses\: 0.6 MB, ciudades\: 20 MB) +downloadingGeoIp=Descargando base de datos de GeoIP... Puede tardar unos minutos (pa\u00edses\: 1.7 MB, ciudades\: 30 MB) duplicatedUserdata=Datos de usuario duplicados\: {0} y {1} durability=\u00a77Esta herramienta tiene \u00a7c{0}\u00a77 usos restantes. +east=E editBookContents=\u00a7eAhora puedes editar los contenidos de este libro. enabled=activado enableUnlimited=\u00a76Dando cantidad ilimitada de\u00a7c {0} \u00a76a \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Carga no v\u00e1lida. invalidFireworkFormat=\u00a74La opci\u00f3n \u00a7c{0} \u00a74no es un valor v\u00e1lido para \u00a7c{1}\u00a74. invalidHome=\u00a74\u00a1El hogar\u00a7c {0} \u00a74no existe\! invalidHomeName=\u00a74\u00a1Nombre de hogar inv\u00e1lido\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Tipo de mob inv\u00e1lido. invalidNumber=N\u00famero inv\u00e1lido. invalidPotion=\u00a74Poci\u00f3n inv\u00e1lida. @@ -200,7 +202,7 @@ invalidSkull=\u00a74Por favor sost\u00e9n un cr\u00e1neo de un jugador. invalidWarpName=\u00a74\u00a1Nombre del Warp no reconocido\! invalidWorld=\u00a74Mundo erroneo o no cargado. inventoryClearFail=\u00a74El jugador {0} \u00a74no tiene\u00a7c {1} \u00a74de\u00a7c {2}\u00a74. -inventoryClearingAllArmor=\u00a7eLimpiado objetos y armaduras de\u00a7a {0}\u00a7e. +inventoryClearingAllArmor=\u00a7eLimpiado objetos y armaduras de\u00a7a {0}\u00a7e. inventoryClearingAllItems=\u00a76Limpiado todos los objetos del inventario a\u00a76 {0}. inventoryClearingAllStack=\u00a76Inventario limpiado completamente a \u00a7c {0} \u00a76de {1}\u00a76. inventoryClearingFromAll=\u00a77Limpiando el inventario de todos los usuarios... @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76Eliminado\u00a7c {0} \u00a76de\u00a7c {1} \u00a76d is=es isIpBanned=\u00a76IP \u00a7c{0} \u00a76est\u00e1 baneada. itemCannotBeSold=\u00a74\u00a1Ese objeto no puede ser vendido al servidor\! +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=El objeto tiene que ser intercambiado en montones. Una cantidad de 2s ser\u00edan dos montones, etc. itemNames=\u00a76Nombre corto del \u00edtem\:\u00a7r {0} itemNotEnough1=\u00a74No tienes la suficiente cantidad del \u00edtem para venderlo. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74No tienes items que puedan ser convertidos a bloques. itemSold=\u00a77Vendido por \u00a7c {0} \u00a77 ({1} {2} a {3} cada uno). itemSoldConsole={0} Vendio {1} por\u00a77 {2} \u00a77({3} objetos a {4} cada uno) itemSpawn=\u00a76Dando {0} de {1} -itemType=\u00a76Objeto\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Objeto\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Ese jugador ya est\u00e1 en la c\u00e1rcel\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a7c\u00a1Por el crimen hacer, a la c\u00e1rcel ir\u00e1s\! jailNotExist=\u00a74Esa c\u00e1rcel no existe. jailReleased=\u00a76El jugador \u00a7c{0}\u00a76 ha salido de la c\u00e1rcel. @@ -315,6 +320,7 @@ nickChanged=\u00a76Nick cambiado. nickDisplayName=\u00a74Tienes que activar el cambio de nick en la configuraci\u00f3n del plugin Essentials. nickInUse=\u00a74Ese nick ya est\u00e1 en uso. Prueba a usar otro. nickNamesAlpha=\u00a74No puedes usar s\u00edmbolos raros. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76Ya no tienes un nombre personalizado. VUELVES A SER TU. nickSet=\u00a76Tu nick ahora es \u00a7c{0}\u00a76. nickTooLong=\u00a74Ese nick es demasiado largo. @@ -325,8 +331,12 @@ noDestroyPermission=\u00a74No tienes permiso para destruir ese \u00a7c{0}\u00a74 noDurability=\u00a74Este \u00edtem no tiene durabilidad. noGodWorldWarning=\u00a74\u00a1Advertencia\! El modo dios ha sido desactivado en este mundo. noHelpFound=\u00a74No hay comandos relacionados. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=\u00a76El jugador no ha establecido hogares. noIgnored=\u00a76No est\u00e1s ignorando a nadie. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74No tienes acceso a este kit. noKitPermission=\u00a7cNecesitas el permiso \u00a74{0}\u00a7c para usar ese kit. noKits=\u00a77No hay kits disponibles a\u00fan. @@ -363,6 +373,7 @@ onlyDayNight=\u00a76/time \u00a74\u00fanicamente funciona con los valores \u00a7 onlyPlayers=\u00a74Solo jugadores dentro del juego pueden usar \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Solo puedes indicar el propietario de las calaveras de jugadores (\u00a7c397\:3\u00a74). onlySunStorm=\u00a7c/weather \u00a74solo acepta los valores \u00a7csun \u00a74o \u00a7cstorm \u00a74(\u00a76sol\u00a74/\u00a76tormenta\u00a74). +openingDisposal=\u00a76Opening disposal menu... orderBalances=Creando un ranking de {0} usuarios segun su saldo, espera... oversizedTempban=\u00a74No puedes banear por ese periodo de tiempo. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Clima establecido en \u00a7c{0}\u00a76 para\: \u00a7c{1}. questionFormat=\u00a72[Pregunta]\u00a7r {0} radiusTooBig=\u00a74\u00a1Radio demasiado grande\! Lo m\u00e1ximo es {0}. readNextPage=\u00a77Escribe\u00a7c /{0} {1} \u00a77para leer la p\u00e1gina siguiente. +realName=\u00a7f{0}\u00a7r\u00a76 es \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Receta para \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 de \u00a7c{2}\u00a76) recipeBadIndex=No hay ning\u00fan crafteo con ese n\u00famero. @@ -477,6 +489,9 @@ slimeMalformedSize=\u00a74Medidas malformadas. socialSpy=\u00a76Esp\u00eda de chat para \u00a7c{0}\u00a76\: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +southEast=SE +south=S +southWest=SW socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=\u00a74A este mob le gusta estar solo. spawned=nacido @@ -581,6 +596,7 @@ weatherStorm=\u00a77Has establecido el tiempo como tormenta en este mundo. weatherStormFor=\u00a77Has establecido el tiempo como tormenta en {1} durante {0} segundos. weatherSun=\u00a77Has establecido el tiempo como sol en este mundo. weatherSunFor=\u00a77Has establecido el tiempo como sol en {1} durante {0} segundos. +west=W whoisAFK=\u00a77 - Ausente\:\u00a7r {0} whoisAFKSince=\u00a76 - Ausente\:\u00a7r {0} (Desde {1}) whoisBanned=\u00a77 - Baneado\:\u00a7f {0} @@ -609,4 +625,4 @@ worthSet=Establecer valor year=a\u00f1o years=a\u00f1os youAreHealed=\u00a77Has sido curado. -youHaveNewMail=\u00a76\u00a1Tienes\u00a7c {0} \u00a76mensajes\! Escribe \u00a7c/mail read\u00a76 para ver los correos que no has le\u00eddo. \ No newline at end of file +youHaveNewMail=\u00a76\u00a1Tienes\u00a7c {0} \u00a76mensajes\! Escribe \u00a7c/mail read\u00a76 para ver los correos que no has le\u00eddo. diff --git a/Essentials/src/messages_et.properties b/Essentials/src/messages_et.properties index 4a61c8876..d7c2c1de3 100644 --- a/Essentials/src/messages_et.properties +++ b/Essentials/src/messages_et.properties @@ -1,612 +1,634 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: action=\u00a75* {0} \u00a75{1} -addedToAccount=\u00a7a{0} on lisatud teie kontole. -addedToOthersAccount=\u00a7a{0} lisatud {1}\u00a7a kontole. Uus summa\: {2} +addedToAccount=\u00a7a{0} on sinu kontole lisatud. +addedToOthersAccount=\u00a7a{0} on lisatud {1}\u00a7a kontole. Uus summa\: {2} adventure=seiklus alertBroke=l\u00f5hkus\: alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} asukohas\: {3} alertPlaced=asetas\: alertUsed=kasutas\: -alphaNames=\u00a74H\u00fc\u00fcdnimed nimed v\u00f5ivad sisaldada ainult t\u00e4hti, numbreid ning allkriipse. -antiBuildBreak=\u00a74Teil ei ole siin luba lammutada\u00a7c {0} \u00a74plokke. -antiBuildCraft=\u00a74Teil ei ole luba valmistada\u00a7c {0}\u00a74. -antiBuildDrop=\u00a74Teil ei ole luba maha visata\u00a7c {0}\u00a74. -antiBuildInteract=\u00a74Teil ei ole luba suhelda\u00a7c {0}\u00a74''iga. -antiBuildPlace=\u00a74Teil ei ole luba siia asetada\u00a7c {0} \u00a74. -antiBuildUse=\u00a74Teil ei ole luba kasutada\u00a7c {0}\u00a74. -autoAfkKickReason=Teid kickiti, sest olite eemal rohkem kui {0} minutit. -backAfterDeath=\u00a76Kasuta k\u00e4sku /back, et oma surmapaigale naasta. -backupDisabled=\u00a74V\u00e4line backup skript ei ole konfigureeritud. +alphaNames=\u00a74M\u00e4ngijate nimed v\u00f5ivad sisaldada ainult t\u00e4hti, numbreid ja allkriipse. +antiBuildBreak=\u00a74Sul puudub siin plokkide l\u00f5hkumiseks luba. +antiBuildCraft=\u00a74Sul puudub \u00a7c {0}\u00a74 valmistamiseks luba. +antiBuildDrop=\u00a74Sul puudub \u00a7c {0}\u00a74 maha viskamiseks luba. +antiBuildInteract=\u00a74Sul puudub plokiga \u00a7c {0}\u00a74 tegelemiseks luba. +antiBuildPlace=\u00a74Sul puudub siia \u00a7c {0} \u00a74 asetamiseks luba. +antiBuildUse=\u00a74Sul puudub \u00a7c {0}\u00a74 kasutamiseks luba. +autoAfkKickReason=Sind visati v\u00e4lja, sest olid eemal kauem kui {0} minutit. +backAfterDeath=\u00a76Kasuta k\u00e4sklust /back, et oma surmapaigale naasta. +backupDisabled=\u00a74V\u00e4line varundusskript pole seadistatud. backupFinished=\u00a76Varukoopia on valmis. backupStarted=\u00a76Varukoopia tegemine alustatud. -backUsageMsg=\u00a76Tagasi viimine eelmisesse asukohta. -balance=\u00a7aRaha\:\u00a7c {0} -balanceOther=\u00a7aM\u00e4ngijal {0}\u00a7a on raha\:\u00a7c {1} -balanceTop=\u00a76Top rikkaimad({0}) -banExempt=\u00a74Sa ei saa blokeerida seda m\u00e4ngijat. -banExemptOffline=\u00a74Te ei v\u00f5i bannida m\u00e4ngijaid kes ei ole serveris sees. -banFormat=\u00a74Blokeeritud\:\n\u00a7r{0} -banIpJoin=Your IP address is banned from this server. Reason: {0} -banJoin=You are banned from this server. Reason: {0} +backUsageMsg=\u00a76Naased eelmisesse asukohta. +balance=\u00a7aRahasumma\:\u00a7c {0} +balanceOther=\u00a7aM\u00e4ngija {0}\u00a7a rahasumma\:\u00a7c {1} +balanceTop=\u00a76Top rikkaimad ({0}) +banExempt=\u00a74Sa ei saa seda m\u00e4ngijat blokeerida. +banExemptOffline=\u00a74Sa ei tohi blokeerida v\u00f5rgust v\u00e4ljas olevaid m\u00e4ngijaid. +banFormat=\u00a7cSind on blokeeritud\:\n\u00a7r{0} +banIpJoin=Sinu IP-aadress on sellest serverist blokeeritud. P\u00f5hjus: {0} +banJoin=Sa oled sellest serverist blokeeritud. P\u00f5hjus: {0} bed=\u00a7ovoodi\u00a7r -bedMissing=\u00a74Sinu voodi on kas m\u00e4\u00e4ramata, kadunud v\u00f5i takistatud. +bedMissing=\u00a74Sinu voodi on m\u00e4\u00e4ramata, kadunud v\u00f5i takistatud. bedNull=\u00a7mvoodi\u00a7r bedSet=\u00a76Voodikoht m\u00e4\u00e4ratud\! -bigTreeFailure=\u00a74Suure puu generatsiooni viga. Proovige uuesti muru v\u00f5i mulla peal. +bigTreeFailure=\u00a74Suure puu genereerimisel esines viga. Proovi uuesti muru v\u00f5i mulla peal. bigTreeSuccess=\u00a76Suur puu on tekitatud. -blockList=\u00a76Essentials lootis j\u00e4rgnevad k\u00e4sud teisele pluginale\: +blockList=\u00a76Essentials saatis j\u00e4rgnevad k\u00e4sklused edasi teisele pluginale\: bookAuthorSet=\u00a76Raamatu autoriks on m\u00e4\u00e4ratud {0}. bookLocked=\u00a76See raamat on n\u00fc\u00fcd lukus. bookTitleSet=\u00a76Raamatu pealkirjaks on m\u00e4\u00e4ratud "{0}". -broadcast=\u00a7r\u00a76[\u00a74Teade\u00a76]\u00a7a {0} -buildAlert=\u00a74Teil ei ole luba ehitada. -bukkitFormatChanged=Bukkit versiooni formaat muudetud. Versioon ei ole kontrollitud. -burnMsg=\u00a76S\u00fc\u00fctasid m\u00e4ngija\u00a7c {0} \u00a76p\u00f5lema\u00a7c {1} sekundiks\u00a76. -cannotStackMob=\u00a74Sul ei ole luba kihistada mitmeid elukaid. +broadcast=\u00a7r\u00a76[\u00a74Teadaanne\u00a76]\u00a7a {0} +buildAlert=\u00a74Sul puudub ehitamiseks luba. +bukkitFormatChanged=Bukkiti versioonivorming on muutunud. Versiooni ei kontrollitud. +burnMsg=\u00a76S\u00fc\u00fctasid m\u00e4ngija\u00a7c {0} {1} sekundiks\u00a76 p\u00f5lema. +cannotStackMob=\u00a74Sul puudub luba mitme eluka kuhjamiseks. canTalkAgain=\u00a76Sa saad j\u00e4lle r\u00e4\u00e4kida. cantFindGeoIpDB=Ei leia GeoIP andmebaasi\! -cantGamemode=\u00a74You do not have permission to change to gamemode {0} -cantReadGeoIpDB=Tekkis viga lugedes GeoIP andmebaasi\! -cantSpawnItem=\u00a74Sul ei ole luba tekitada eset\u00a7c {0}\u00a74. +cantGamemode=\u00a74Sul puudub luba, vahetamaks oma m\u00e4ngure\u017eiimiks {0} +cantReadGeoIpDB=GeoIP andmebaasi lugemisel esines viga!\! +cantSpawnItem=\u00a74Sul puudub eseme\u00a7c {0}\u00a74 tekitamiseks luba. chatTypeAdmin=[A] -chatTypeLocal=[L] +chatTypeLocal=[K] chatTypeSpy=[Spioon] cleaned=Kasutajafailid puhastatud. -cleaning=Kasutajafailide puhastus. -clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. -clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. -commandCooldown=\u00a7cYou cannot type that command for {0}. -commandFailed=K\u00e4sk {0} eba\u00f5nnestus\: -commandHelpFailedForPlugin=Viga saades abi pluginale\: {0} -commandNotLoaded=\u00a74K\u00e4sk {0} on ebakoheselt laetud. +cleaning=Kasutajafailide puhastamine. +clearInventoryConfirmToggleOff=\u00a76Sinult ei k\u00fcsita enam seljakoti puhastamise kinnitust. +clearInventoryConfirmToggleOn=\u00a76N\u00fc\u00fcdsest sult k\u00fcsitakse seljakoti puhastamise kinnitust. +commandCooldown=\u00a7cSa ei saa veel {0} seda k\u00e4sklust kirjutada. +commandFailed=K\u00e4sklus {0} eba\u00f5nnestus\: +commandHelpFailedForPlugin=Plugina abi saamisel esines viga\: {0} +commandNotLoaded=\u00a74K\u00e4sklus {0} on sobimatult laetud. compassBearing=\u00a76Suund\: {0} ({1} kraadi). -configFileMoveError=Viga liigutades config.yml backup asukohta. -configFileRenameError=Viga temp faili \u00fcmber nimetamisega config.yml-ks. -confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} -confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1} +configFileMoveError=config.yml liigutamine varundusasukohta eba\u00f5nnestus. +configFileRenameError=Ajutise faili \u00fcmbernimetamine config.yml-ks eba\u00f5nnestus. +confirmClear=\u00a77Et \u00a7lKINNITADA\u00a77 seljakoti t\u00fchjendamist, palun korda k\u00e4sklust: \u00a76{0} +confirmPayment=\u00a77Et \u00a7lKINNITADA\u00a77 \u00a76{0}\u00a77 makset, palun korda k\u00e4sklust: \u00a76{1} connectedPlayers=\u00a76\u00dchendatud m\u00e4ngijad\u00a7r connectionFailed=\u00dchenduse avamine eba\u00f5nnestus. -cooldownWithMessage=\u00a74Maha jahtumine\: {0} +cooldownWithMessage=\u00a74Mahajahtumine\: {0} coordsKeyword={0}, {1}, {2} corruptNodeInConfig=\u00a74Teade\: Sinu konfiguratsioonifailis on vigane {0} node. -couldNotFindTemplate=\u00a74Ei leidnud \u0161ablooni {0} -createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} -createKitFailed=\u00a74Error occurred whilst creating kit {0}. +couldNotFindTemplate=\u00a74Malli {0} ei leitud +createdKit=\u00a76Abipakk \u00a7c{0} \u00a76on loodud \u00a7c{1} \u00a76\u00fcksuse ja \u00a7c{2} \u00a76viivitusega +createKitFailed=\u00a74Abipaki {0} loomisel esines viga. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. -creatingConfigFromTemplate=Seadete loomine \u0161abloonist\: {0} -creatingEmptyConfig=Loon t\u00fchja konfiguratsiooni\: {0} +createKitSuccess=\u00a76Abipakk loodud: \u00a7f{0}\n\u00a76Viivitus: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopeeri lingis olev sisu oma kits.yml faili. +creatingConfigFromTemplate=Seadistuse loomine mallist\: {0} +creatingEmptyConfig=Loon t\u00fchja seadistust\: {0} creative=loominguline currency={0}{1} currentWorld=\u00a76Praegune maailm\:\u00a7c {0} day=p\u00e4ev days=p\u00e4eva -defaultBanReason=Blokeerimishaamer on r\u00e4\u00e4kinud\! -deleteFileError=Faili {0} ei saanud kustutada +defaultBanReason=Blokivasar on r\u00e4\u00e4kinud\! +deleteFileError=Faili ei saanud kustutada\: {0} deleteHome=\u00a76Kodu\u00a7c {0} \u00a76on eemaldatud. deleteJail=\u00a76Vangla\u00a7c {0} \u00a76on eemaldatud. -deleteWarp=\u00a76L\u00f5im\u00a7c {0} \u00a76on eemaldatud. -deniedAccessCommand=\u00a74M\u00e4ngijal \u00a7c{0} \u00a74keelati ligip\u00e4\u00e4s k\u00e4sule. -denyBookEdit=\u00a74Sa ei saa avada seda raamatut. +deleteWarp=\u00a76Koold\u00a7c {0} \u00a76on eemaldatud. +deniedAccessCommand=\u00a74M\u00e4ngijal \u00a7c{0} \u00a74keelati k\u00e4sklusele ligip\u00e4\u00e4s. +denyBookEdit=\u00a74Sa ei saa seda raamatut avada. denyChangeAuthor=\u00a74Sa ei saa muuta selle raamatu autorit. denyChangeTitle=\u00a74Sa ei saa muuta selle raamatu pealkirja. depth=\u00a76Sa oled merepinnal. depthAboveSea=\u00a76Sa oled\u00a7c {0} \u00a76plokk(i) merepinnast k\u00f5rgemal. depthBelowSea=\u00a76Sa oled\u00a7c {0} \u00a76plokk(i) merepinnast madalamal. -destinationNotSet=Sihtpaik ei ole m\u00e4\u00e4ratud\! +destinationNotSet=Sihtkoht on m\u00e4\u00e4ramata\! disabled=keelatud -disabledToSpawnMob=\u00a74Selle eluka tekitamine on konfiguratsioonis keelatud. -disableUnlimited=\u00a76Peatatud l\u00f5pmatu plokki asetamine \u00a7c {0} \u00a76m\u00e4ngijale {1}. +disabledToSpawnMob=\u00a74Selle eluka tekitamine on seadistustes keelatud. +disableUnlimited=\u00a76M\u00e4ngijale {1} on keelatud ploki\u00a7c {0} \u00a76 l\u00f5pmatu asetamine. distance=\u00a76Kaugus\: {0} dontMoveMessage=\u00a76Teleportatsioon algab\u00a7c {0}\u00a76 p\u00e4rast. \u00c4ra liigu. -downloadingGeoIp=GeoIP andmebaasi allalaadimine... see v\u00f5ib v\u00f5tta aega (riik\: 0.6 MB, linn\: 20MB) -duplicatedUserdata=Topelt kasutaja andmed\: {0} ja {1}. -durability=\u00a76Sellel esemel on \u00a7c{0}\u00a76 kasutust j\u00e4rel +downloadingGeoIp=Toimub GeoIP andmebaasi allalaadimine... see v\u00f5ib aega v\u00f5tta (riik\: 1.7 MB, linn\: 30MB) +duplicatedUserdata=Topelt kasutajaandmed\: {0} ja {1}. +durability=\u00a76Sellel esemel on \u00a7c{0}\u00a76 kasutust j\u00e4rel. +east=ida editBookContents=\u00a7eSa v\u00f5id n\u00fc\u00fcd muuta selle raamatu sisu. enabled=lubatud -enableUnlimited=\u00a76Annan piiramatus koguses\u00a7c {0} \u00a76m\u00e4ngijale \u00a7c{1}\u00a76. -enchantmentApplied=\u00a76Loits\u00a7c {0} \u00a76on lisatud k\u00e4esolevale esemele. +enableUnlimited=\u00a76Annan m\u00e4ngijale \u00a7c{1}\u00a76 piiramatus koguses\u00a7c {0} \u00a76. +enchantmentApplied=\u00a76Loits\u00a7c {0} \u00a76on rakendatud k\u00e4esolevale esemele. enchantmentNotFound=\u00a74Loitsu ei leitud\! -enchantmentPerm=\u00a74Sul ei ole luba j\u00e4rgnevaks\:\u00a7c {0}\u00a74. -enchantmentRemoved=\u00a76Loits\u00a7c {0} \u00a76on eemaldatud k\u00e4esolevalt esemelt. +enchantmentPerm=\u00a74Sul puudub luba \u00a7c {0}\u00a74 jaoks. +enchantmentRemoved=\u00a76Loits\u00a7c {0} \u00a76on k\u00e4esolevalt esemelt eemaldatud. enchantments=\u00a76Loitsud\:\u00a7r {0} -errorCallingCommand=Viga kutsudes k\u00e4sku /{0} +errorCallingCommand=K\u00e4skluse /{0} kutsumisel esines viga errorWithMessage=\u00a7cViga\:\u00a74 {0} -essentialsHelp1=Fail on katki/vigane ja Essentials ei saa seda avada. Essentials on n\u00fc\u00fcd suletud. Kui te ei suuda faili ise korda teha, siis k\u00fclastage http\://tiny.cc/EssentialsChat -essentialsHelp2=Fail on katki/vigane ja Essentials ei saa seda avada. Essentials on n\u00fc\u00fcd suletud. Kui te ei suuda faili ise korda teha, siis kas kirjutage /essentialshelp m\u00e4ngus v\u00f5i k\u00fclastage http\://tiny.cc/EssentialsChat +essentialsHelp1=Fail on vigane ning Essentials ei saa seda avada. Essentials on n\u00fc\u00fcd keelatud. Kui sa ei suuda seda faili ise parandada, mine aadressile http\://tiny.cc/EssentialsChat +essentialsHelp2=Fail on vigane ning Essentials ei saa seda avada. Essentials on n\u00fc\u00fcd keelatud. Kui sa ei suuda seda faili ise parandada, kirjuta m\u00e4ngus /essentialshelp v\u00f5i mine aadressile http\://tiny.cc/EssentialsChat essentialsReload=\u00a76Essentials taaslaetud\u00a7c {0}. -exp=\u00a7c{0}\u00a76''il on\u00a7c {1} \u00a76exp (level\u00a7c {2}\u00a76) ja vajab veel\u00a7c {3} \u00a76exp j\u00e4rgmiseks leveliks. -expSet=\u00a7c{0}\u00a76''il on n\u00fc\u00fcd\u00a7c {1} \u00a76exp. -extinguish=\u00a76Te kustutasite end. -extinguishOthers=\u00a76Kustutasite m\u00e4ngija {0}\u00a76. -failedToCloseConfig=Esines viga konfiguratsiooni {0} sulgemisega. -failedToCreateConfig=Esines viga konfiguratsiooni {0} loomisel. -failedToWriteConfig=Esines viga kirjutamisega konfiguratsiooni {0}. +exp=\u00a76M\u00e4ngijal \u00a7c{0}\u00a76 on\u00a7c {1} \u00a76kogemuspunkti (tase\u00a7c {2}\u00a76) ning ta vajab j\u00e4rgmise taseme saavutamiseks veel\u00a7c {3} \u00a76kogemuspunkti. +expSet=\u00a76M\u00e4ngijal \u00a7c{0}\u00a76 on n\u00fc\u00fcd\u00a7c {1} \u00a76kogemuspunkti. +extinguish=\u00a76Sa kustutasid endalt tule. +extinguishOthers=\u00a76Sa kustutasid m\u00e4ngija {0} tule\u00a76. +failedToCloseConfig=Seadistuse {0} sulgemisel esines viga. +failedToCreateConfig=Seadistuse {0} loomisel esines viga. +failedToWriteConfig=Seadistuse {0} kirjutamisel esines viga. false=\u00a74false\u00a7r -feed=\u00a76Teie isu on kadunud. -feedOther=\u00a76Rahuldasid \u00a7c{0}\u00a76 isu. +feed=\u00a76Sinu isu on rahuldatud. +feedOther=\u00a76Sa rahuldasid m\u00e4ngija \u00a7c{0}\u00a76 isu. fileRenameError=Faili {0} \u00fcmbernimetamine eba\u00f5nnestus\! -fireworkColor=\u00a74Vigsed ilutulestiku parameetrid sisestatud, peate esmalt v\u00e4rvi paika panema. -fireworkEffectsCleared=\u00a76K\u00f5ik effektid eemaldatud k\u00e4esoleval esemel. -fireworkSyntax=\u00a76Ilutulestiku parameetrid\:\u00a7c v\u00e4rv\: [hajutus\:] [kuju\:] [effekt\:]\n\u00a76Et kasutada mitmeid effekte/v\u00e4rve korraga, eralda nad \u00fcksteisest komaga\: \u00a7cred,blue,pink\n\u00a76Kujud\:\u00a7c star, ball, large, creeper, burst \u00a76Effektid\:\u00a7c trail, twinkle. +fireworkColor=\u00a74Sisestasid sobimatud ilutulestiku laengu parameetrid, eelnevalt tuleb v\u00e4rv valida. +fireworkEffectsCleared=\u00a76K\u00f5ik efektid on k\u00e4esolevalt kuhjalt eemaldatud. +fireworkSyntax=\u00a76Ilutulestiku parameetrid\:\u00a7c color\: [fade\:] [shape\:] [effect\:]\n\u00a76Et kasutada mitmeid efekte/v\u00e4rve korraga, eralda nad \u00fcksteisest komaga\: \u00a7cred,blue,pink\n\u00a76Kujud\:\u00a7c star, ball, large, creeper, burst \u00a76Efektid\:\u00a7c trail, twinkle. flying=lendab -flyMode=\u00a76Lubasid lendamise\u00a7c {0} \u00a76m\u00e4ngijale {1}\u00a76. -foreverAlone=\u00a74Sul ei ole mitte kellelegi vastata. -fullStack=\u00a74Sul on juba t\u00e4is kuhi. -gameMode=\u00a7c{1} \u00a76m\u00e4ngure\u017eiimiks on seatud \u00a7c{0}\u00a76. -gameModeInvalid=\u00a74Sa pead m\u00e4\u00e4rama kehtiva m\u00e4ngija/re\u017eiimi. +flyMode=\u00a76M\u00e4ngija\u00a7c {1} \u00a76lennure\u017eiim on\u00a7c {0}\u00a76. +foreverAlone=\u00a74Sul pole kellelegi vastata. +fullStack=\u00a74Sinu kuhi on juba t\u00e4is. +gameMode=\u00a76M\u00e4ngija \u00a7c{1} \u00a76m\u00e4ngure\u017eiimiks on seatud \u00a7c{0}\u00a76. +gameModeInvalid=\u00a74Sa pead valima sobiva m\u00e4ngija/re\u017eiimi. gcfree=\u00a76Vaba m\u00e4lu\:\u00a7c {0} MB. gcmax=\u00a76Maksimaalne m\u00e4lu\:\u00a7c {0} MB. gctotal=\u00a76M\u00e4\u00e4ratud m\u00e4lu\:\u00a7c {0} MB. -gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 t\u00fckki, \u00a7c{3}\u00a76 \u00fcksust, \u00a7c{4}\u00a76 plaati. +gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 kamakat, \u00a7c{3}\u00a76 olemit, \u00a7c{4}\u00a76 plokki. geoipJoinFormat=\u00a76M\u00e4ngija \u00a7c{0} \u00a76tuleb asukohast \u00a7c{1}\u00a76. -geoIpUrlEmpty=GeoIP allalaadimise url on t\u00fchi. -geoIpUrlInvalid=GeoIP allalaadimise url on vigane. -givenSkull=\u00a76Sulle anti \u00a7c{0} kolju\u00a76. -giveSpawn=\u00a76Annan\u00a7c {0} \u00a7c {1}\u00a76''i\u00a7c m\u00e4ngijale\u00a7c {2}\u00a76. +geoIpUrlEmpty=GeoIP allalaadimise URL on t\u00fchi. +geoIpUrlInvalid=GeoIP allalaadimise URL on vigane. +givenSkull=\u00a76Sulle anti m\u00e4ngija \u00a7c{0}\u00a76 pea. +giveSpawn=\u00a76Annan\u00a7c {0} {1} m\u00e4ngijale\u00a7c {2}\u00a76. giveSpawnFailure=\u00a74Pole piisavalt ruumi, \u00a7c{0} \u00a7c{1} \u00a74j\u00e4i saamata. godDisabledFor=\u00a7ckeelatud\u00a76 m\u00e4ngijale\u00a7c {0} godEnabledFor=\u00a7alubatud\u00a76 m\u00e4ngijal\u00a7c {0} -godMode=\u00a76Jumalare\u017eiim\u00a7c {0}\u00a76. -groupDoesNotExist=\u00a74Selles grupis ei ole mitte kedagi v\u00f5rgus\! +godMode=\u00a76Jumalare\u017eiim on\u00a7c {0}\u00a76. +groupDoesNotExist=\u00a74Selles grupis pole kedagi v\u00f5rgus\! groupNumber=\u00a7c{0}\u00a7f v\u00f5rgus, terve nimekiri\:\u00a7c /{1} {2} -hatArmor=\u00a74K\u00e4esolevat eset ei saa m\u00fctsina kasutada\! +hatArmor=\u00a74Sa ei saa seda eset m\u00fctsina kasutada\! hatEmpty=\u00a74Sa ei kanna m\u00fctsi. -hatFail=\u00a74Teil peab olema k\u00e4es olema midagi mida kanda. +hatFail=\u00a74Sul peab k\u00e4es olema midagi kantavat. hatPlaced=\u00a76Naudi oma uut m\u00fctsi\! -hatRemoved=\u00a76Teie m\u00fcts on eemaldatud. +hatRemoved=\u00a76Sinu m\u00fcts on eemaldatud. haveBeenReleased=\u00a76Sind on vabastatud. heal=\u00a76Sind on tervendatud. healDead=\u00a74Sa ei saa surnuid tervendada\! -healOther=\u00a76Tervendasid\u00a7c {0}\u00a76. -helpConsole=Et vaadata abi konsoolist, kirjuta ?. -helpFrom=\u00a76K\u00e4sud m\u00e4ngijalt {0}\: +healOther=\u00a76Tervendasid m\u00e4ngija\u00a7c {0}\u00a76. +helpConsole=Konsoolis abi vaatamiseks kirjuta ?. +helpFrom=\u00a76K\u00e4sklused pluginalt {0}\: helpLine=\u00a76/{0}\u00a7r\: {1} -helpMatching=\u00a76K\u00e4sud klapivad "\u00a7c{0}\u00a76"\: -helpOp=\u00a74[HelpOp]\u00a7r \u00a76{0}\:\u00a7r {1} -helpPlugin=\u00a74{0}\u00a7r\: Plugina Abi\: /help {1} -holdBook=\u00a74Te ei hoia k\u00e4es raamatut kuhu saaks kirjutada. -holdFirework=\u00a74Te peate k\u00e4es hoidma ilutulestikku, et lisada effekte. -holdPotion=\u00a74Te peate k\u00e4es hoidma n\u00f5iajooki, et sellele lisada effekte. +helpMatching=\u00a76K\u00e4sklused, mis vastavad otsingus\u00f5nale "\u00a7c{0}\u00a76"\: +helpOp=\u00a74[Op-abi]\u00a7r \u00a76{0}\:\u00a7r {1} +helpPlugin=\u00a74{0}\u00a7r\: Plugina abi\: /help {1} +holdBook=\u00a74Sa ei hoia k\u00e4es kirjutatavat raamatut. +holdFirework=\u00a74Efektide lisamiseks pead sa k\u00e4es hoidma ilutulestikku. +holdPotion=\u00a74Efektide lisamiseks pead sa k\u00e4es hoidma v\u00f5lujooki. holeInFloor=\u00a74P\u00f5randas on auk\! homes=\u00a76Kodud\:\u00a7r {0} homeSet=\u00a76Kodu m\u00e4\u00e4ratud. hour=tund hours=tundi ignoredList=\u00a76Ignoreerid\:\u00a7r {0} -ignoreExempt=\u00a74Te ei saa seda m\u00e4ngijat ignoreerida. -ignorePlayer=\u00a76Te ignoreerite m\u00e4ngijat\u00a7c {0}\u00a76. -illegalDate=Vigane kuup\u00e4eva vorming. +ignoreExempt=\u00a74Sa ei tohi seda m\u00e4ngijat ignoreerida. +ignorePlayer=\u00a76N\u00fc\u00fcdsest sa ignoreerid m\u00e4ngijat\u00a7c {0}\u00a76. +illegalDate=Vigane kuup\u00e4evavorming. infoChapter=\u00a76Vali peat\u00fckk\: infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 Leht \u00a7c{1}\u00a76/\u00a7c{2} \u00a7e---- infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Leht \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e---- infoUnknownChapter=\u00a74Tundmatu peat\u00fckk. -insufficientFunds=\u00a74Ebapiisavas koguses raha. -invalidBanner=\u00a74Invalid banner syntax. -invalidCharge=\u00a74Vigane tasu. +insufficientFunds=\u00a74Rahasumma pole piisav. +invalidBanner=\u00a74Sobimatu plakatis\u00fcntaks. +invalidCharge=\u00a74Sobimatu ilutulestikulaeng. invalidFireworkFormat=\u00a74Valik \u00a7c{0} \u00a74ei ole sobiv v\u00e4\u00e4rtus \u00a7c{1}\u00a74 jaoks. -invalidHome=\u00a74Kodu\u00a7c {0} \u00a74ei ole m\u00e4\u00e4ratud\! -invalidHomeName=\u00a74Vigane kodu nimi\! -invalidMob=\u00a74Kehtetu eluka liik. -invalidNumber=Vigane Number. -invalidPotion=\u00a74Vigane n\u00f5iajook. -invalidPotionMeta=\u00a74Vigane n\u00f5iajoogi meta\: \u00a7c{0}\u00a74. -invalidSignLine=\u00a74Rida\u00a7c {0} \u00a74m\u00e4rgil on vigane. -invalidSkull=\u00a74Palun hoia k\u00e4es m\u00e4ngija koljut. -invalidWarpName=\u00a74Vigane l\u00f5imu nimi\! -invalidWorld=\u00a74Vigane maailm. -inventoryClearFail=\u00a74M\u00e4ngijal {0} \u00a74ei ole\u00a7c {1} \u00a74eset\u00a7c {2}\u00a74. -inventoryClearingAllArmor=\u00a76Puhastati k\u00f5ik seljakoti esemed ja armor\: {0}\u00a76. -inventoryClearingAllItems=\u00a76Puhastati k\u00f5ik seljakoti esemed\: {0}\u00a76. -inventoryClearingAllStack=\u00a76Eemaldati k\u00f5ik\u00a7c {0} \u00a76m\u00e4ngijalt {1}\u00a76. -inventoryClearingFromAll=\u00a76T\u00fchjendan k\u00f5ikide m\u00e4ngijate seljakoti... -inventoryClearingStack=\u00a76Eemaldati\u00a7c {0} \u00a76eset\u00a7c {1} \u00a76m\u00e4ngijalt {2}\u00a76. +invalidHome=\u00a74Kodu\u00a7c {0} \u00a74pole m\u00e4\u00e4ratud\! +invalidHomeName=\u00a74Sobimatu kodunimi\! +invalidItemFlagMeta=\u00a74Esemel on sobimatud metaandmed\: \u00a7c{0}\u00a74. +invalidMob=\u00a74Sobimatu elukaliik. +invalidNumber=Sobimatu arv. +invalidPotion=\u00a74Sobimatu v\u00f5lujook. +invalidPotionMeta=\u00a74Sobimatud v\u00f5lujoogi metaandmed\: \u00a7c{0}\u00a74. +invalidSignLine=\u00a74Sildi rida\u00a7c {0} \u00a74 on sobimatu. +invalidSkull=\u00a74Palun hoia k\u00e4es m\u00e4ngija pead. +invalidWarpName=\u00a74Sobimatu koolunimi\! +invalidWorld=\u00a74Sobimatu maailm. +inventoryClearFail=\u00a74M\u00e4ngijal {0} \u00a74pole\u00a7c {1} {2}\u00a74. +inventoryClearingAllArmor=\u00a76M\u00e4ngijalt {0} on eemaldatud k\u00f5ik seljakoti esemed ja r\u00fc\u00fcosad\u00a76. +inventoryClearingAllItems=\u00a76M\u00e4ngijalt {0} on eemaldatud k\u00f5ik seljakoti esemed\u00a76. +inventoryClearingAllStack=\u00a76M\u00e4ngijalt {1} on eemaldatud k\u00f5ik\u00a7c {0}\u00a76. +inventoryClearingFromAll=\u00a76K\u00f5ikide m\u00e4ngijate seljakottide t\u00fchjendamine... +inventoryClearingStack=\u00a76M\u00e4ngijalt {2} eemaldati\u00a7c {0} {1} \u00a76\u00a76. is=on isIpBanned=\u00a76IP \u00a7c{0} \u00a76on blokeeritud. -itemCannotBeSold=\u00a74K\u00e4esolevat eset ei saa serverile m\u00fc\u00fca. -itemMustBeStacked=\u00a74Eset saad vahetada stackina. Kogus 2s oleks kaks stacki, jne. -itemNames=\u00a76Eseme l\u00fchendid\:\u00a7r {0} -itemNotEnough1=\u00a74Sul pole k\u00e4es piisavat hulka eset, et seda m\u00fc\u00fca. -itemNotEnough2=\u00a76Kui teil oli plaanis m\u00fc\u00fca k\u00f5ik oma esemed sellest t\u00fc\u00fcbist, siis kasutage /sell esemenimi. -itemNotEnough3=\u00a76/sell esemenimi -1 m\u00fc\u00fcb k\u00f5ik peale \u00fche, jne. -itemsConverted=\u00a76Converted all items into blocks. -itemsCsvNotLoaded=Viga laadimisel items.csv\! -itemSellAir=Te t\u00f5esti proovisite m\u00fc\u00fca \u00d5hku? V\u00f5tke ese endale k\u00e4tte. -itemsNotConverted=\u00a74You have no items that can be converted into blocks. -itemSold=\u00a7aM\u00fc\u00fcs hinnaga \u00a7c{0} \u00a7a({1} {2} asukohas {3} \u00fche eest). -itemSoldConsole=\u00a7a{0} \u00a7am\u00fc\u00fcs {1} hinnaga \u00a7a{2} \u00a7a({3} eset asukohas {4} \u00fche eest). -itemSpawn=\u00a76Annan\u00a7c {0}\u00a7c {1}\u00a76-i -itemType=\u00a76Ese\:\u00a7c {0} \u00a76-\u00a7c {1} +internalError=\u00a7cSelle k\u00e4skluse t\u00e4itmisel esines sisemine viga. +itemCannotBeSold=\u00a74Seda eset ei saa serverile m\u00fc\u00fca. +itemId=\u00a76ID\:\u00a7c {0} +itemMustBeStacked=\u00a74Eset peab vahetama kuhjadena. N\u00e4iteks kogus 2s oleks kaks kuhja jne. +itemNames=\u00a76Eseme l\u00fchinimed\:\u00a7r {0} +itemNotEnough1=\u00a74Sul pole sellest esemest m\u00fc\u00fcmiseks piisavat hulka. +itemNotEnough2=\u00a76Kui sul oli plaanis m\u00fc\u00fca k\u00f5ik seda t\u00fc\u00fcpi esemed, kasuta /sell esemenimi. +itemNotEnough3=\u00a76/sell esemenimi -1 m\u00fc\u00fcb k\u00f5ik peale \u00fche jne. +itemsConverted=\u00a76K\u00f5ik esemed on plokkideks konverteeritud. +itemsCsvNotLoaded=items.csv laadimisel esines viga\! +itemSellAir=Sa proovisid t\u00f5esti \u00f5hku m\u00fc\u00fca? V\u00f5ta omale \u00fcks ese k\u00e4tte. +itemsNotConverted=\u00a74Sul pole esemeid, mida saaks plokkideks konverteerida. +itemSold=\u00a7aM\u00fc\u00fcdud hinnaga \u00a7c{0} \u00a7a({1} {2} hinnaga {3} t\u00fckk). +itemSoldConsole=\u00a7aM\u00e4ngija {0} \u00a7am\u00fc\u00fcs {1} hinnaga \u00a7a{2} \u00a7a({3} eset hinnaga {4} t\u00fckk). +itemSpawn=\u00a76Annan m\u00e4ngijale\u00a7c {0} {1} +itemType=\u00a76Ese\:\u00a7c {0} \u00a76 jailAlreadyIncarcerated=\u00a74M\u00e4ngija on juba vanglas\:\u00a7c {0} -jailMessage=\u00a74Sooritad kuriteo, oled vangis ka. -jailNotExist=\u00a74Selline vangla ei ole olemas. -jailReleased=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 vabastatud. -jailReleasedPlayerNotify=\u00a76Teid on vabastatud\! +jailList=\u00a76Vanglad\:\u00a7r {0} +jailMessage=\u00a74Sooritasid kuriteo, istud oma aja \u00e4ra. +jailNotExist=\u00a74Sellist vanglat pole olemas. +jailReleased=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 on vanglast vabastatud. +jailReleasedPlayerNotify=\u00a76Sind vabastati vanglast\! jailSentenceExtended=\u00a76Vangi aega pikendati j\u00e4rgnevalt\: {0} jailSet=\u00a76Vangla\u00a7c {0} \u00a76on m\u00e4\u00e4ratud. -jumpError=\u00a74See teeks teie arvuti ajule haiget. +jumpError=\u00a74See teeks su arvuti ajule haiget. kickDefault=Serverist v\u00e4lja visatud. kickedAll=\u00a74K\u00f5ik m\u00e4ngijad on serverist v\u00e4lja visatud. kickExempt=\u00a74Sa ei saa seda m\u00e4ngijat m\u00e4ngust v\u00e4lja visata. -kill=\u00a76Tapsid\u00a7c {0}\u00a76-i. -killExempt=\u00a74Sa ei saa tappa \u00a7c{0}\u00a74. -kitContains=\u00a76Kit \u00a7c{0} \u00a76contains: +kill=\u00a76Hukkasid\u00a7c {0}\u00a76. +killExempt=\u00a74Sa ei saa \u00a7c{0}\u00a74 hukata. +kitContains=\u00a76Abipakk \u00a7c{0} \u00a76sisaldab: kitCost=\ \u00a77\u00a7o({0})\u00a7r kitDelay=\u00a7m{0}\u00a7r -kitError=\u00a74Ei leitud \u00fchtegi abipakki. -kitError2=\u00a74See abipakk on ebakorrektselt seadistatud. Kontakteeru omanikuga. -kitGiveTo=\u00a76Annan abipaki\u00a7c {0}\u00a76 m\u00e4ngijale \u00a7c{1}\u00a76. -kitInvFull=\u00a74Sinu seljakott on t\u00e4is, panime abipaki maha. +kitError=\u00a74Sobivaid abipakke ei leitud. +kitError2=\u00a74See abipakk on ebakorrektselt seadistatud. Kontakteeru administraatoriga. +kitGiveTo=\u00a76Annan m\u00e4ngijale \u00a7c{1}\u00a76 abipaki\u00a7c {0}\u00a76. +kitInvFull=\u00a74Sinu seljakott oli t\u00e4is, asetasime abipaki p\u00f5randale. kitItem=\u00a76- \u00a7f{0} -kitNotFound=\u00a74Antud abipakki ei ole olemas. -kitOnce=\u00a74Te ei saa seda abipakki uuesti kasutada. +kitNotFound=\u00a74Seda abipakki pole olemas. +kitOnce=\u00a74Sa ei saa seda abipakki uuesti kasutada. kitReceive=\u00a76Said abipaki\u00a7c {0}\u00a76. kits=\u00a76Abipakid\:\u00a7r {0} -kitTimed=\u00a74Sa saad seda abipakki kasutada peale\u00a7c {0}\u00a74. -leatherSyntax=\u00a76Nahav\u00e4rvi s\u00fcntaks\: color\:,, eg\: color\:255,0,0. -lightningSmited=\u00a76Pikne on teid l\u00f6\u00f6nud\! -lightningUse=\u00a76Viskad pikse noole m\u00e4ngijale\u00a7c {0} +kitTimed=\u00a74Sa ei saa seda abipakki uuesti kasutada veel\u00a7c {0}\u00a74. +leatherSyntax=\u00a76Naha v\u00e4rvis\u00fcntaks\: color\:,, nt\: color\:255,0,0 VÕI color\: nt\: color\:16777011 +lightningSmited=\u00a76Sind on l\u00f6\u00f6nud v\u00e4lk\! +lightningUse=\u00a76L\u00f6\u00f6d v\u00e4lgunoole m\u00e4ngijasse\u00a7c {0} listAfkTag=\u00a77[Eemal]\u00a7r listAmount=\u00a76V\u00f5rgus on \u00a7c{0}\u00a76/\u00a7c{1}\u00a76 m\u00e4ngijat. listAmountHidden=\u00a76V\u00f5rgus on \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76)/\u00a7c{2}\u00a76 m\u00e4ngijat. listGroupTag=\u00a76{0}\u00a7r\: \u00a7r listHiddenTag=\u00a77[PEIDETUD]\u00a7r -loadWarpError=\u00a74L\u00f5imu {0} laadimisel tekkis viga. -localFormat=[L]<{0}> {1} +loadWarpError=\u00a74Koolu {0} laadimisel esines viga. +localFormat=[K]<{0}> {1} localNoOne= -mailClear=\u00a76Et m\u00e4rkida kirjad loetuks, kirjuta\u00a7c /mail clear\u00a76. -mailCleared=\u00a76Kirjad on puhastatud\! -mailDelay=Saatsid liiga palju kirju viimase minuti jooskul. Maksimaalne kirjade saatmise arv\: {0} +mailClear=\u00a76Postkasti t\u00fchjendamiseks kirjuta\u00a7c /mail clear\u00a76. +mailCleared=\u00a76Postkast t\u00fchjendatud\! +mailDelay=Saatsid viimase minuti jooksul liiga palju kirju. Maksimaalne kirjade saatmise arv\: {0} mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} mailMessage={0} mailSent=\u00a76Kiri saadetud\! -mailSentTo=\u00a7c{0}\u00a76 has been sent the following mail\: -mailTooLong=\u00a74Kiri on liiga pikk. P\u00fc\u00fcdke hoida kirja alla 1000 t\u00e4hem\u00e4rgi. -markedAsAway=\u00a76Teid on m\u00e4rgitud kui eemal. -markedAsNotAway=\u00a76Te ei ole enam m\u00e4rgitud kui eemal. -markMailAsRead=\u00a76Et m\u00e4rkida kirjad loetuks, kirjuta\u00a7c /mail clear\u00a76. -matchingIPAddress=\u00a76J\u00e4rgnevad m\u00e4ngijad on eelnevalt sisse loginud sellelt IP aadressilt\: +mailSentTo=\u00a76M\u00e4ngijale \u00a7c{0}\u00a76 saadeti j\u00e4rgnev kiri\: +mailTooLong=\u00a74Kiri on liiga pikk. P\u00fc\u00fca see hoida alla 1000 t\u00e4hem\u00e4rgi. +markedAsAway=\u00a76Sind on n\u00fc\u00fcd m\u00e4rgitud eemalolijaks. +markedAsNotAway=\u00a76Sa ei ole enam eemalolijaks m\u00e4rgitud. +markMailAsRead=\u00a76Kirjade loetuks m\u00e4rkimiseks kirjuta \u00a7c /mail clear\u00a76. +matchingIPAddress=\u00a76Sellelt IP-aadressilt on eelnevalt sisse loginud j\u00e4rgnevad m\u00e4ngijad\: maxHomes=\u00a74Sa ei saa m\u00e4\u00e4rata rohkem kui\u00a7c {0} \u00a74kodu. -maxMoney=\u00a74See tehing \u00fcletab selle konto liimiti. -mayNotJail=\u00a74Sa ei tohi antud m\u00e4ngijat vangistada\! +maxMoney=\u00a74Antud tehing \u00fcletaks selle konto liimiti. +mayNotJail=\u00a74Sa ei tohi seda m\u00e4ngijat vangistada\! mayNotJailOffline=\u00a74Sa ei tohi vangistada v\u00f5rgust v\u00e4ljas olevaid m\u00e4ngijaid. me=mina -minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}. +minimumPayAmount=\u00a7cMiinimumsumma, mida saad maksta on {0}. minute=minut minutes=minutit -missingItems=\u00a74Sul ei ole \u00a7c{0}x {1}\u00a74. -mobDataList=\u00a76Kehtiv mob data\:\u00a7r {0} +missingItems=\u00a74Sul ei ole \u00a7c{0} {1}\u00a74. +mobDataList=\u00a76Sobivad elukaandmed\:\u00a7r {0} mobsAvailable=\u00a76Elukad\:\u00a7r {0} -mobSpawnError=\u00a74Elukatekitaja vahetamisel tekkis viga. -mobSpawnLimit=Elukate hulk piiratud serveri limiidile. -mobSpawnTarget=\u00a74Sihitud plokk peab olema elukatekitaja. -moneyRecievedFrom=\u00a7a{0} on saadud kasutajalt {1}. -moneySentTo=\u00a7a{0} on saadetud m\u00e4ngijale {1}. +mobSpawnError=\u00a74Elukatekitaja vahetamisel esines viga. +mobSpawnLimit=Elukate hulk on piiratud serveri limiidile. +mobSpawnTarget=\u00a74Sihtplokk peab olema elukatekitaja. +moneyRecievedFrom=\u00a7aM\u00e4ngija {1} saatis sulle {0}. +moneySentTo=\u00a7aSaatsid m\u00e4ngijale {1} {0}. month=kuu months=kuud moreThanZero=\u00a74Kogused peavad olema suuremad kui 0. -moveSpeed=\u00a7c{1} \u00a76{0}kiiruseks on seatud \u00a7c{2}\u00a76. -msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76. -msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. -msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76. -msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. +moveSpeed=\u00a76M\u00e4ngija \u00a7c{2}\u00a76 {0}kiiruseks on seatud\u00a7c {1} \u00a76. +msgDisabled=\u00a76S\u00f5numite vastuv\u00f5tmine on \u00a7ckeelatud\u00a76. +msgDisabledFor=\u00a76S\u00f5numite vastuv\u00f5tmine on m\u00e4ngijale \u00a7c{0} keelatud\u00a76. +msgEnabled=\u00a76S\u00f5numite vastuv\u00f5tmine on \u00a7clubatud\u00a76. +msgEnabledFor=\u00a76S\u00f5numite vastuv\u00f5tmine on m\u00e4ngijale \u00a7c{0} lubatud\u00a76. msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} -msgIgnore=\u00a7c{0} \u00a74has messages disabled. -multipleCharges=\u00a74Te ei saa lisada rohkem kui \u00fche laadimise k\u00e4esolevale ilutulestikule. -multiplePotionEffects=\u00a74Te ei saa lisada rohkem kui \u00fche effekti k\u00e4esolevale n\u00f5iajoogile. +msgIgnore=\u00a74M\u00e4ngijal \u00a7c{0} \u00a74on s\u00f5numid keelatud. +multipleCharges=\u00a74Sa ei saa sellele ilutulestikule lisada rohkemat, kui \u00fcks laeng. +multiplePotionEffects=\u00a74Sa ei saa sellele v\u00f5lujoogile lisada rohkemat, kui \u00fcks efekt. mutedPlayer=\u00a76M\u00e4ngija\u00a7c {0} \u00a76on vaigistatud. mutedPlayerFor=\u00a76M\u00e4ngija\u00a7c {0} \u00a76on vaigistatud\u00a7c {1}\u00a76. mutedPlayerForReason=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76. \u00a76Reason: \u00a7c{2} mutedPlayerReason=\u00a76Player\u00a7c {0} \u00a76muted. \u00a76Reason: \u00a7c{1} -mutedUserSpeaks={0} \u00fcritas r\u00e4\u00e4kida, aga on vaigistatud. -muteExempt=\u00a74Sa ei tohi vaigistada antud m\u00e4ngijat. +mutedUserSpeaks={0} \u00fcritas r\u00e4\u00e4kida, aga on vaigistatud: {1} +muteExempt=\u00a74Sa ei tohi seda m\u00e4ngijat vaigistada. muteExemptOffline=\u00a74Sa ei tohi vaigistada v\u00f5rgust v\u00e4ljas olevaid m\u00e4ngijaid. -muteNotify=\u00a7c{0} \u00a76vaigistas m\u00e4ngija \u00a7c{1}\u00a76. -muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. muteNotifyForReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. \u00a76Reason: \u00a7c{3} muteNotifyReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. \u00a76Reason: \u00a7c{2} -nearbyPlayers=\u00a76M\u00e4ngijad l\u00e4heduses\:\u00a7r {0} -negativeBalanceError=\u00a74Kasutajal ei ole tohi olla negatiivne rahasumma. -nickChanged=\u00a76H\u00fc\u00fcdnimi muudetud. -nickDisplayName=\u00a74Te peate lubama change-displayname Essentials configus. -nickInUse=\u00a74Antud nimi on juba kasutusel. -nickNamesAlpha=\u00a74H\u00fc\u00fcdnimed peavad olema t\u00e4ht-numbrilised. -nickNoMore=\u00a76Teilt eemaldati h\u00fc\u00fcdnimi. +muteNotify=\u00a76M\u00e4ngija \u00a7c{0} \u00a76vaigistas m\u00e4ngija \u00a7c{1}\u00a76. +muteNotifyFor=\u00a76M\u00e4ngija \u00a7c{0} \u00a76vaigistas m\u00e4ngija \u00a7c{1} {2}\u00a76. +nearbyPlayers=\u00a76L\u00e4heduses olevad m\u00e4ngijad\:\u00a7r {0} +negativeBalanceError=\u00a74Kasutajal ei tohi olla negatiivne rahasumma. +nickChanged=\u00a76H\u00fc\u00fcdnimi on muudetud. +nickDisplayName=\u00a74Sa pead lubama Essentialsi seadistustes change-displayname. +nickInUse=\u00a74See nimi on juba kasutusel. +nickNamesAlpha=\u00a74H\u00fc\u00fcdnimed tohivad sisaldada vaid t\u00e4hti ja numbreid. +nickNamesOnlyColorChanges=\u00a74H\u00fc\u00fcdnimedes saab vahetada vaid v\u00e4rvi. +nickNoMore=\u00a76Sul ei ole enam h\u00fc\u00fcdnime. nickSet=\u00a76Sinu h\u00fc\u00fcdnimi on n\u00fc\u00fcd \u00a7c{0}\u00a76. -nickTooLong=\u00a74Antud h\u00fc\u00fcdnimi on liiga pikk. -noAccessCommand=\u00a74Teil ei ole sellele k\u00e4sule juurdep\u00e4\u00e4su. -noAccessPermission=\u00a74Sul pole \u00f5igust \u00a7c{0}\u00a74 avamiseks. -noBreakBedrock=\u00a74Teil ei ole lubatud purustada aluskivi. -noDestroyPermission=\u00a74Sul pole \u00f5igust \u00a7c{0}\u00a74 l\u00f5hkumiseks. -noDurability=\u00a74K\u00e4esoleval esemel puudub vastupidavus. +nickTooLong=\u00a74See h\u00fc\u00fcdnimi on liiga pikk. +noAccessCommand=\u00a74Sul puudub sellele k\u00e4sklusele juurdep\u00e4\u00e4s. +noAccessPermission=\u00a74Sul puudub luba \u00a7c{0}\u00a74 avamiseks. +noBreakBedrock=\u00a74Sul puudub luba aluskivi l\u00f5hkumiseks. +noDestroyPermission=\u00a74Sul puudub luba \u00a7c{0}\u00a74 l\u00f5hkumiseks. +noDurability=\u00a74Sellel esemel puudub vastupidavus. +northEast=kirre +north=p\u00f5hi +northWest=loe noGodWorldWarning=\u00a74Hoiatus\! Jumalare\u017eiim ei ole selles maailmas lubatud. -noHelpFound=\u00a74Klappivaid k\u00e4ske ei ole. -noHomeSetPlayer=\u00a76M\u00e4ngija ei ole m\u00e4\u00e4ranud kodu. -noIgnored=\u00a76Te ei ignoreeri mitte kedagi. -noKitGroup=\u00a74Sul ei ole juurdep\u00e4\u00e4su sellele abipakile. -noKitPermission=\u00a74Te vajate \u00a7c{0}\u00a74 luba, et kasutada seda abipakki. -noKits=\u00a76\u00dchtegi abipakki ei ole hetkel saadaval. -noLocationFound=\u00a74Ei leidnud sobivat asukohta. -noMail=\u00a76Teil ei ole \u00fchtegi kirja. -noMatchingPlayers=\u00a76Klappivaid m\u00e4ngijaid ei leitud. -noMetaFirework=\u00a74Teil ei ole luba, et m\u00e4\u00e4rata ilutulestiku effekte. -noMetaJson=See Bukkiti versioon ei toeta JSON metaandmeid. -noMetaPerm=\u00a74Teil ei ole luba lisada \u00a7c{0}\u00a74 effekte k\u00e4esolevale esemele. +noHelpFound=\u00a74Vastavaid k\u00e4sklusi ei leitud. +noHomeSetPlayer=\u00a76M\u00e4ngija ei ole omale kodu m\u00e4\u00e4ranud. +noIgnored=\u00a76Sa ei ignoreeri kedagi. +noJailsDefined=\u00a76Vanglaid pole m\u00e4\u00e4ratud. +noKitGroup=\u00a74Sul puudub sellele abipakile juurdep\u00e4\u00e4s. +noKitPermission=\u00a74Selle abipaki kasutamiseks on vajalik luba \u00a7c{0}\u00a74. +noKits=\u00a76\u00dchtegi abipakki pole veel saadaval. +noLocationFound=\u00a74Sobivat asukohta ei leitud. +noMail=\u00a76Sul pole \u00fchtegi kirja. +noMatchingPlayers=\u00a76Vastavaid m\u00e4ngijaid ei leitud. +noMetaFirework=\u00a74Sul puudub luba ilutulestiku metaandmete m\u00e4\u00e4ramiseks. +noMetaJson=See Bukkiti versioon ei toeta JSON-metaandmeid. +noMetaPerm=\u00a74Sul puudub luba sellele esemele \u00a7c{0}\u00a74 m\u00e4\u00e4ramiseks. none=mitte \u00fckski -noNewMail=\u00a76Teil ei ole \u00fchtegi uut kirja. -noPendingRequest=\u00a74Teil ei ole ootel taotlust. -noPerm=\u00a74Teil ei ole \u00a7c{0}\u00a74 permissionit. -noPermissionSkull=\u00a74Sul ei ole luba muuta seda koljut. -noPermToAFKMessage=\u00a74You don''t have permission to set an AFK message. -noPermToSpawnMob=\u00a74Sul ei ole luba tekitada antud elukat. -noPlacePermission=\u00a74Teil ei ole luba asetada plokki selle m\u00e4rgi l\u00e4heduses. -noPotionEffectPerm=\u00a74Teil ei ole luba, et lisada n\u00f5iajoogi effekti \u00a7c{0} \u00a74k\u00e4esolevale n\u00f5iajoogile. -noPowerTools=\u00a76Teil ei ole power tool-e m\u00e4\u00e4ratud. -notAcceptingPay=\u00a74{0} \u00a74is not accepting payment. -notAllowedToQuestion=\u00a74Te ei ole autoriseeritud, et kasutada k\u00fcsimust. -notAllowedToShout=\u00a74Te ei ole autoriseeritud, et karjuda. -notEnoughExperience=\u00a74Teil ei ole piisavalt exp-d. -notEnoughMoney=\u00a74Teil pole piisavalt raha. +noNewMail=\u00a76Sul pole uusi kirju. +noPendingRequest=\u00a74Sul pole ootel taotlusi. +noPerm=\u00a74Sul puudub luba \u00a7c{0}\u00a74. +noPermissionSkull=\u00a74Sul puudub luba selle pea muutmiseks. +noPermToAFKMessage=\u00a74Sul puudub luba eemaloleku s\u00f5numi m\u00e4\u00e4ramiseks. +noPermToSpawnMob=\u00a74Sul puudub luba selle eluka tekitamiseks. +noPlacePermission=\u00a74Sul puudub luba selle sildi juurde ploki asetamiseks. +noPotionEffectPerm=\u00a74Sul puudub luba sellele v\u00f5lujoogile efekti \u00a7c{0} \u00a74 rakendamiseks. +noPowerTools=\u00a76Sul puuduvad v\u00f5imut\u00f6\u00f6riistad. +notAcceptingPay=\u00a74M\u00e4ngija \u00a74{0} \u00a74ei v\u00f5ta makseid vastu. +notAllowedToQuestion=\u00a74Sul puudub k\u00fcsimuse kasutamiseks luba. +notAllowedToShout=\u00a74Sul puudub h\u00fc\u00fcdmiseks luba. +notEnoughExperience=\u00a74Sul pole piisavalt kogemuspunkte. +notEnoughMoney=\u00a74Sul pole piisavalt raha. notFlying=ei lenda -nothingInHand=\u00a74Teil ei ole mitte midagi k\u00e4es. -notRecommendedBukkit=\u00a74* \! * Bukkit''i versioon ei ole soovitatud build Essentials''ile. -notSupportedYet=Ei ole veel toetatud. +nothingInHand=\u00a74Sa ei hoia midagi k\u00e4es. +notRecommendedBukkit=\u00a74* \! * Kasutatav Bukkiti versioon ei ole Essentialsi jaoks soovitatud. +notSupportedYet=Pole veel toetatud. now=n\u00fc\u00fcd -noWarpsDefined=\u00a76L\u00f5ime ei ole m\u00e4\u00e4ratud. -nuke=\u00a75Las surm sajab neile peale. -numberRequired=Number l\u00e4heb sinna, rumaluke. -onlyDayNight=/time toetab ainult day/night. -onlyPlayers=\u00a74K\u00e4sku \u00a7c{0}\u00a74 saab kasutada ainult m\u00e4ngusiseselt. -onlyPlayerSkulls=\u00a74Sa saad m\u00e4\u00e4rata ainult m\u00e4ngija kolju (\u00a7c397\:3\u00a74) omaniku. -onlySunStorm=\u00a74/weather toetab ainult sun/storm. -orderBalances=\u00a76J\u00e4rjestan\u00a7c {0} \u00a76m\u00e4ngija raha, palun oota... -oversizedTempban=\u00a74Sa ei saa blokeerida m\u00e4ngijat nii pikaks ajaks. -payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. -payConfirmToggleOn=\u00a76You will now be prompted to confirm payments. -payMustBePositive=\u00a74Amount to pay must be positive. -payToggleOff=\u00a76You are no longer accepting payments. -payToggleOn=\u00a76You are now accepting payments. -pendingTeleportCancelled=\u00a74Ootel teleport kutse h\u00fcljatud. -playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76. -playerBanned=\u00a76M\u00e4ngija\u00a7c {0} \u00a76blokeeris\u00a7c {1} \u00a76p\u00f5hjusega \u00a7c{2}\u00a76. +noWarpsDefined=\u00a76Kooldusid pole m\u00e4\u00e4ratud. +nuke=\u00a75Olgu Jumal neile armuline. +numberRequired=Sinna l\u00e4heb arv, rumaluke. +onlyDayNight=/time toetab vaid valikuid day ja night. +onlyPlayers=\u00a74K\u00e4sklust \u00a7c{0}\u00a74 saab kasutada ainult m\u00e4ngusiseselt. +onlyPlayerSkulls=\u00a74Sa saad m\u00e4\u00e4rata ainult m\u00e4ngija peade (\u00a7c397\:3\u00a74) omanikku. +onlySunStorm=\u00a74/weather toetab vaid valikuid sun ja storm. +openingDisposal=\u00a76H\u00e4vitusmen\u00fc\u00fc avamine... +orderBalances=\u00a76J\u00e4rjestan\u00a7c {0} \u00a76m\u00e4ngija rahasummasid, palun oota... +oversizedTempban=\u00a74Sa ei tohi m\u00e4ngijaid ajutiselt blokeerida nii pikaks ajaks. +payConfirmToggleOff=\u00a76Sinult ei k\u00fcsita enam maksete kinnitusi. +payConfirmToggleOn=\u00a76Sinult n\u00fc\u00fcd k\u00fcsitakse maksete kinnitusi. +payMustBePositive=\u00a74Makstav rahasumma peab olema positiivne. +payToggleOff=\u00a76Sa ei v\u00f5ta enam makseid vastu. +payToggleOn=\u00a76Sa v\u00f5tad n\u00fc\u00fcd makseid vastu. +pendingTeleportCancelled=\u00a74Ootel teleporteerumiskutse on h\u00fcljatud. +playerBanIpAddress=\u00a76M\u00e4ngija\u00a7c {0} \u00a76blokeeris IP-aadressi\u00a7c {1} \u00a76p\u00f5hjusega \u00a7c{2}\u00a76. +playerBanned=\u00a76M\u00e4ngija\u00a7c {0} \u00a76blokeeris m\u00e4ngija\u00a7c {1} \u00a76p\u00f5hjusega \u00a7c{2}\u00a76. playerInJail=\u00a74M\u00e4ngija on juba vangis\u00a7c {0}\u00a74. -playerJailed=\u00a76M\u00e4ngija\u00a7c {0} \u00a76vangistatud. -playerJailedFor=\u00a76M\u00e4ngija\u00a7c {0} \u00a76vangistatud p\u00f5hjusega {1}. +playerJailed=\u00a76M\u00e4ngija\u00a7c {0} \u00a76on vangistatud. +playerJailedFor=\u00a76M\u00e4ngija\u00a7c {0} \u00a76on vangistatud p\u00f5hjusega {1}. playerKicked=\u00a76M\u00e4ngija\u00a7c {0} \u00a76viskas {1} v\u00e4lja p\u00f5hjusega {2}. -playerMuted=\u00a76Sa oled vaigistatud\! -playerMutedFor=\u00a76Sind on vaigistatud m\u00e4\u00e4ratud ajaks\:\u00a7c {0}. +playerMuted=\u00a76Sind on vaigistatud\! +playerMutedFor=\u00a76Sind on vaigistatud \u00a7c {0}. playerMutedForReason=\u00a76You have been muted for\u00a7c {0}. \u00a76Reason: \u00a7c{1} playerMutedReason=\u00a76You have been muted\! \u00a76Reason: \u00a7c{0} -playerNeverOnServer=\u00a74M\u00e4ngija\u00a7c {0} \u00a74ei ole kunagi siin m\u00e4nginud. +playerNeverOnServer=\u00a74M\u00e4ngija\u00a7c {0} \u00a74pole kunagi siin serveris k\u00e4inud. playerNotFound=\u00a74M\u00e4ngijat ei leitud. -playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. +playerTempBanned=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 blokeeris ajutiselt m\u00e4ngija \u00a7c{1}\u00a76 p\u00f5hjusega \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. playerUnbanIpAddress=\u00a76M\u00e4ngija\u00a7c {0} \u00a76eemaldas IP {1} blokeeringu. -playerUnbanned=\u00a76M\u00e4ngija\u00a7c {0} \u00a76eemaldas\u00a7c {1} \u00a76blokeeringu. -playerUnmuted=\u00a76Sinu vaigistus on eemaldatud. +playerUnbanned=\u00a76M\u00e4ngija\u00a7c {0} \u00a76eemaldas m\u00e4ngija\u00a7c {1} \u00a76blokeeringu. +playerUnmuted=\u00a76Sa ei ole enam vaigistatud. pong=Pong\! -posPitch=\u00a76Pitch\: {0} (pea nurk) -possibleWorlds=\u00a76V\u00f5imalikud maailmad on numbrite \u00a7c0\u00a76 kuni \u00a7c{0}\u00a76 vahel. -posX=\u00a76X\: {0} (+Ida <-> -L\u00e4\u00e4s) -posY=\u00a76Y\: {0} (+\u00dcles <-> -Alla) -posYaw=\u00a76Yaw\: {0} (P\u00f6\u00f6re) -posZ=\u00a76Z\: {0} (+L\u00f5una <-> -P\u00f5hi) -potions=\u00a76N\u00f5iajoogid\:\u00a7r {0}\u00a76. -powerToolAir=\u00a74K\u00e4sku ei saa m\u00e4\u00e4rata \u00f5hule. -powerToolAlreadySet=\u00a74K\u00e4sk \u00a7c{0}\u00a74 on juba lisatud esemele \u00a7c{1}\u00a74. -powerToolAttach=\u00a7c{0}\u00a76 k\u00e4sk m\u00e4\u00e4ratud esemele {1}. -powerToolClearAll=\u00a76K\u00f5ik powertool k\u00e4sud puhastatud. -powerToolList=\u00a76Esemel \u00a7c{1} \u00a76on j\u00e4rgnevad k\u00e4sud\: \u00a7c{0}\u00a76. -powerToolListEmpty=\u00a74Esemel \u00a7c{0} \u00a74ei ole m\u00e4\u00e4ratud k\u00e4ske. -powerToolNoSuchCommandAssigned=\u00a74K\u00e4sk \u00a7c{0}\u00a74 ei ole lisatud esemele \u00a7c{1}\u00a74. -powerToolRemove=\u00a76K\u00e4sk \u00a7c{0}\u00a76 eemaldatud esemelt \u00a7c{1}\u00a76. -powerToolRemoveAll=\u00a76K\u00f5ik k\u00e4sud eemaldatud esemelt \u00a7c{0}\u00a76. -powerToolsDisabled=\u00a76K\u00f5ik su power tool-id on disabled. -powerToolsEnabled=\u00a76K\u00f5ik su power tool-id on lubatud. -pTimeCurrent=\u00a7c{0}\u00a76''i aeg on\u00a7c {1}\u00a76. -pTimeCurrentFixed=\u00a7c{0}\u00a76''i aeg on peatatud\u00a7c {1}\u00a76. -pTimeNormal=\u00a7c{0}\u00a76''i aeg on normaalne ja kattub serveriga. -pTimeOthersPermission=\u00a74Te ei ole autoriseeritud, et m\u00e4\u00e4rata teiste m\u00e4ngijate aega. +posPitch=\u00a76Y-p\u00f6\u00f6re\: {0} (pea nurk) +possibleWorlds=\u00a76V\u00f5imalikud maailmad on arvud vahemikus \u00a7c0\u00a76-\u00a7c{0}\u00a76. +posX=\u00a76X\: {0} (+ida <-> -l\u00e4\u00e4s) +posY=\u00a76Y\: {0} (+\u00fcles <-> -alla) +posYaw=\u00a76X-p\u00f6\u00f6re\: {0} (p\u00f6\u00f6re) +posZ=\u00a76Z\: {0} (+l\u00f5una <-> -p\u00f5hi) +potions=\u00a76V\u00f5lujoogid\:\u00a7r {0}\u00a76. +powerToolAir=\u00a74Õhule ei saa k\u00e4sklust lisada. +powerToolAlreadySet=\u00a74K\u00e4sklus \u00a7c{0}\u00a74 on juba m\u00e4\u00e4ratud esemele \u00a7c{1}\u00a74. +powerToolAttach=\u00a76K\u00e4sklus \u00a7c{0}\u00a76 m\u00e4\u00e4ratud esemele {1}. +powerToolClearAll=\u00a76K\u00f5ik v\u00f5imut\u00f6\u00f6riistade k\u00e4sklused on puhastatud. +powerToolList=\u00a76Esemel \u00a7c{1} \u00a76on j\u00e4rgnevad k\u00e4sklused\: \u00a7c{0}\u00a76. +powerToolListEmpty=\u00a74Esemel \u00a7c{0} \u00a74 puuduvad m\u00e4\u00e4ratud k\u00e4sklused. +powerToolNoSuchCommandAssigned=\u00a74K\u00e4sklus \u00a7c{0}\u00a74 pole esemele \u00a7c{1}\u00a74 lisatud. +powerToolRemove=\u00a76K\u00e4sklus \u00a7c{0}\u00a76 on esemelt \u00a7c{1}\u00a76 eemaldatud. +powerToolRemoveAll=\u00a76K\u00f5ik k\u00e4sklused on esemelt \u00a7c{0}\u00a76 eemaldatud. +powerToolsDisabled=\u00a76K\u00f5ik sinu v\u00f5imut\u00f6\u00f6riistad on keelatud. +powerToolsEnabled=\u00a76K\u00f5ik sinu v\u00f5imut\u00f6\u00f6riistad on lubatud. +pTimeCurrent=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 aeg on\u00a7c {1}\u00a76. +pTimeCurrentFixed=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 aeg on fikseeritud v\u00e4\u00e4rtuseks \u00a7c {1}\u00a76. +pTimeNormal=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 aeg on normaalne ja kattub serveri omaga. +pTimeOthersPermission=\u00a74Sul puudub teiste m\u00e4ngijate aja m\u00e4\u00e4ramiseks luba. pTimePlayers=\u00a76Nendel m\u00e4ngijatel on oma aeg\:\u00a7r -pTimeReset=\u00a76M\u00e4ngija aeg on taastatud m\u00e4ngijale\: \u00a7c{0} -pTimeSet=\u00a76M\u00e4ngija aeg on m\u00e4\u00e4ratud \u00a7c{0}\u00a76 m\u00e4ngijale\: \u00a7c{1}. +pTimeReset=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 aeg on normaalseks taastatud. +pTimeSet=\u00a76M\u00e4ngija \u00a7c{1}\u00a76 ajaks on m\u00e4\u00e4ratud \u00a7c{0}\u00a76. pTimeSetFixed=\u00a76M\u00e4ngija aeg on fikseeritud \u00a7c{0}\u00a76 m\u00e4ngijale\: \u00a7c{1}. -pWeatherCurrent=\u00a7c{0}\u00a76''i ilm on\u00a7c {1}\u00a76. -pWeatherInvalidAlias=\u00a74Vigane ilma t\u00fc\u00fcp -pWeatherNormal=\u00a7c{0}\u00a76''i ilm on normaalne ja kattub serveri omaga. -pWeatherOthersPermission=\u00a74Teil ei ole \u00f5igust m\u00e4\u00e4rata teiste m\u00e4ngijate ilma. +pWeatherCurrent=M\u00e4ngija \u00a7c{0}\u00a76 ilm on\u00a7c {1}\u00a76. +pWeatherInvalidAlias=\u00a74Sobimatu ilmat\u00fc\u00fcp +pWeatherNormal=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 ilm on normaalne ja kattub serveri omaga. +pWeatherOthersPermission=\u00a74Sul puudub teiste m\u00e4ngijate ilma m\u00e4\u00e4ramiseks luba. pWeatherPlayers=\u00a76Nendel m\u00e4ngijatel on oma ilm\:\u00a7r -pWeatherReset=\u00a76M\u00e4ngija ilm on taastatud m\u00e4ngjale\: \u00a7c{0} -pWeatherSet=\u00a76M\u00e4ngija ilm on seatud \u00a7c{0}\u00a76 m\u00e4ngijale\: \u00a7c{1}. +pWeatherReset=\u00a76\u00a76M\u00e4ngija \u00a7c{0}\u00a76 ilm on normaalseks taastatud. +pWeatherSet=\u00a76M\u00e4ngija \u00a7c{1}\u00a76 ilmaks on m\u00e4\u00e4ratud \u00a7c{0}\u00a76. questionFormat=\u00a72[K\u00fcsimus]\u00a7r {0} radiusTooBig=\u00a74Raadius on liiga suur\! Maksimaalne raadius on {0}. -readNextPage=\u00a76Kirjuta\u00a7c /{0} {1}\u00a76, et lugeda j\u00e4rgmist lehte. -recentlyForeverAlone=\u00a74{0} recently went offline. -recipe=\u00a76Retsept esemele \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 koguses \u00a7c{2}\u00a76) -recipeBadIndex=Ei leidunud restepti antud numbriga. +readNextPage=\u00a76J\u00e4rgmise lehe lugemiseks kirjuta \u00a7c /{0} {1}\u00a76. +realName=\u00a7f{0}\u00a7r\u00a76 on \u00a7f{1} +recentlyForeverAlone=\u00a74M\u00e4ngija {0} l\u00e4ks hiljuti v\u00f5rgust v\u00e4lja. +recipe=\u00a76Retsept esemele \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76/\u00a7c{2}\u00a76) +recipeBadIndex=Selle arvuga retsepti ei leitud. recipeFurnace=\u00a76Sulata\: \u00a7c{0}\u00a76. recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X recipeGridItem=\u00a7c{0}X \u00a76on \u00a7c{1} -recipeMore=\u00a76Kirjuta /{0} \u00a7c{1}\u00a76 , et n\u00e4ha \u00a7c{2}\u00a76 retsepti. -recipeNone=Mitte \u00fchtegi retsepti ei ole olemas j\u00e4rgnevale esemele\: {0} +recipeMore=\u00a76Kirjuta /{0} \u00a7c{1}\u00a76 et n\u00e4ha teisi retsepte esemele \u00a7c{2}\u00a76. +recipeNone=Esemel {0} puuduvad retseptid. recipeNothing=mitte midagi recipeShapeless=\u00a76Kombineeri \u00a7c{0} recipeWhere=\u00a76Kus\: {0} -removed=\u00a76Eemaldatud\u00a7c {0} \u00a76\u00fcksust. -repair=\u00a76Te olete edukalt parandanud oma\: \u00a7c{0}\u00a76. -repairAlreadyFixed=\u00a74Antud ese ei tarvi parandamist. -repairEnchanted=\u00a74Teil ei ole lubatud parandada loitsitud esemeid. -repairInvalidType=\u00a74K\u00e4esolevat eset ei saa parandada. -repairNone=\u00a74Ei ole \u00fchtegi eset mis vajaksid parandamist. -requestAccepted=\u00a76Teleport kutse vastu v\u00f5etud. -requestAcceptedFrom=\u00a7c{0} \u00a76v\u00f5ttis teie teleport kutse vastu. -requestDenied=\u00a76Teleport kutse h\u00fcljatud. -requestDeniedFrom=\u00a7c{0} \u00a76h\u00fclgas teie teleport kutse. +removed=\u00a7c {0} \u00a76 olemit on eemaldatud. +repair=\u00a76Parandasid edukalt oma \u00a7c{0}\u00a76. +repairAlreadyFixed=\u00a74See ese ei vaja parandamist. +repairEnchanted=\u00a74Sul puudub loitsitud esemete parandamiseks luba. +repairInvalidType=\u00a74Seda eset ei saa parandada. +repairNone=\u00a74Polnud \u00fchtegi eset, mis vajaksid parandamist. +requestAccepted=\u00a76Teleporteerumiskutse vastu v\u00f5etud. +requestAcceptedFrom=\u00a76M\u00e4ngija \u00a7c{0} \u00a76v\u00f5ttis su teleporteerumiskutse vastu. +requestDenied=\u00a76Teleporteerumiskutse h\u00fcljatud. +requestDeniedFrom=\u00a76M\u00e4ngija \u00a7c{0} \u00a76h\u00fclgas su teleporteerumiskutse. requestSent=\u00a76Kutse saadetud m\u00e4ngijale\u00a7c {0}\u00a76. -requestSentAlready=\u00a74You have already sent {0}\u00a74 a teleport request. -requestTimedOut=\u00a74Teleport kutse aegus. -requiredBukkit=\u00a76* \! * Teil on vaja v\u00e4hemalt build {0} CraftBukkit''it, laadige see alla aadressilt http\://dl.bukkit.org/downloads/craftbukkit/ -resetBal=\u00a76Raha on taastatud summaks \u00a7c{0} \u00a76k\u00f5ikidel online m\u00e4ngijatel. -resetBalAll=\u00a76Raha on taastatud summaks \u00a7c{0} \u00a76k\u00f5ikidel m\u00e4ngijatel. -returnPlayerToJailError=\u00a74Tekkis viga tagastades m\u00e4ngija\u00a7c {0} \u00a74vanglasse\: \u00a7c{1}\u00a74\! -runningPlayerMatch=\u00a76Jooksutan otsingu m\u00e4ngjatele ''\u00a7c{0}\u00a76'' (see v\u00f5ib v\u00f5tta aega) +requestSentAlready=\u00a74Sa juba saatsid teleporteerumiskutse m\u00e4ngijale {0}. +requestTimedOut=\u00a74Teleporteerumiskutse aegus. +requiredBukkit=\u00a76* \! * Sul on vaja v\u00e4hemalt {0} versiooni CraftBukkit''ist, laadi see alla aadressilt http\://dl.bukkit.org/downloads/craftbukkit/ +resetBal=\u00a76Rahasumma on taastatud v\u00e4\u00e4rtuseks \u00a7c{0} \u00a76k\u00f5ikidel v\u00f5rgus olevatel m\u00e4ngijatel. +resetBalAll=\u00a76Rahasumma on taastatud v\u00e4\u00e4rtuseks \u00a7c{0} \u00a76k\u00f5ikidel m\u00e4ngijatel. +returnPlayerToJailError=\u00a74M\u00e4ngija\u00a7c {0} \u00a74 vanglasse tagasi saatmisel esines viga\: \u00a7c{1}\u00a74\! +runningPlayerMatch=\u00a76Otsin m\u00e4ngijaid mis vastaksid v\u00e4\u00e4rtusele "\u00a7c{0}\u00a76" (see v\u00f5ib v\u00f5tta aega) second=sekund seconds=sekundit seenAccounts=\u00a76M\u00e4ngija on tuntud ka kui\:\u00a7c {0} seenOffline=\u00a76M\u00e4ngija\u00a7c {0} \u00a76on olnud \u00a74v\u00f5rgust v\u00e4ljas\u00a76 alates \u00a7c{1}\u00a76. seenOnline=\u00a76M\u00e4ngija\u00a7c {0} \u00a76on olnud \u00a7av\u00f5rgus\u00a76 alates \u00a7c{1}\u00a76. -sellBulkPermission=\u00a76You do not have permission to bulk sell. -sellHandPermission=\u00a76You do not have permission to hand sell. +sellBulkPermission=\u00a76Sul puudub hulgim\u00fc\u00fcgi luba. +sellHandPermission=\u00a76Sul puudub k\u00e4sim\u00fc\u00fcgi luba. serverFull=Server on t\u00e4is\! -serverTotal=\u00a76Serveril kokku\:\u00a7c {0} -setBal=\u00a7aTeie raha m\u00e4\u00e4rati j\u00e4rgnevaks\: {0}. -setBalOthers=\u00a7aM\u00e4\u00e4rasite {0}\u00a7a''i raha j\u00e4rgnevaks\: {1}. -setSpawner=\u00a76Muutsid elukatekitaja t\u00fc\u00fcbi j\u00e4rgnevaks\:\u00a7c {0}\u00a76. +serverTotal=\u00a76Serveris kokku\:\u00a7c {0} +serverUnsupported=Sa k\u00e4itad mittetoetatud serveriversiooni! +setBal=\u00a7aSinu rahasummaks on m\u00e4\u00e4ratud\: {0}. +setBalOthers=\u00a7aM\u00e4\u00e4rasid m\u00e4ngija {0}\u00a7a rahasummaks {1}. +setSpawner=\u00a76Muutsid elukatekitaja t\u00fc\u00fcbiks \u00a7c {0}\u00a76. sheepMalformedColor=\u00a74Moondunud v\u00e4rv. shoutFormat=\u00a76[H\u00fc\u00fcd]\u00a7r {0} signFormatFail=\u00a74[{0}] signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] -signProtectInvalidLocation=\u00a74Teil ei ole lubatud siia m\u00e4rki teha. -similarWarpExist=\u00a74L\u00f5im sarnase nimiga on juba olemas. -skullChanged=\u00a76Kolju muudetud\: \u00a7c{0}\u00a76. +signProtectInvalidLocation=\u00a74Sul puudub siia sildi loomiseks luba. +similarWarpExist=\u00a74Sarnase nimega koold on juba olemas. +southEast=kagu +south=l\u00f5una +southWest=edel +skullChanged=\u00a76Pea muudetud\: \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Moondunud suurus. -socialSpy=\u00a76SocialSpy on \u00a7c{1}\u00a76 m\u00e4ngijale \u00a7c{0} +socialSpy=\u00a76SotsiaalneSpioon on \u00a7c{1}\u00a76 m\u00e4ngijale \u00a7c{0} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} -socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(vaigistatud) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r -soloMob=\u00a74Antud elukale meeldib olla \u00fcksi. +soloMob=\u00a74Sellele elukale meeldib olla \u00fcksi. spawned=tekkis -spawnSet=\u00a76Spawn asukoht m\u00e4\u00e4ratud gruppile\u00a7c {0}\u00a76. -spectator=spectator -sudoExempt=\u00a74Te ei saa sudo-da antud kasutajat. -sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1} -suicideMessage=\u00a76Headaega julm maailm... -suicideSuccess=\u00a76{0} \u00a76v\u00f5ttis endalt elu. +spawnSet=\u00a76Grupi \u00a7c {0}\u00a76 tekkekoht on m\u00e4\u00e4ratud. +spectator=pealtvaatamine +sudoExempt=\u00a74Sa ei saa m\u00e4ngijat \u00a7c{0}\u00a74 sundida. +sudoRun=\u00a76Sunnin m\u00e4ngijat\u00a7c {0} \u00a76k\u00e4ivitama k\u00e4sklust \u00a7r /{1} +suicideMessage=\u00a76Head aega, julm maailm... +suicideSuccess=\u00a76M\u00e4ngija \u00a7c{0} \u00a76v\u00f5ttis endalt elu. survival=elluj\u00e4\u00e4mine -takenFromAccount=\u00a7a{0} on v\u00f5etud teie kontolt. -takenFromOthersAccount=\u00a7a{0} v\u00f5etud m\u00e4ngija {1}\u00a7a kontolt. Uus raha summa\: {2}. -teleportAAll=\u00a76Teleporteerumise kutse saadetud k\u00f5igile... -teleportAll=\u00a76Teleporteerun k\u00f5ik m\u00e4ngijad... +takenFromAccount=\u00a7aSinu kontolt on {0} maha v\u00f5etud. +takenFromOthersAccount=\u00a7aM\u00e4ngija {1} kontolt on {1} maha v\u00f5etud\u00a7a. Uus rahasumma\: {2}. +teleportAAll=\u00a76Teleporteerumiskutse saadetud k\u00f5ikidele m\u00e4ngijatele... +teleportAll=\u00a76Teleporteerin k\u00f5ik m\u00e4ngijad... teleportationCommencing=\u00a76Teleporteerumine algab... -teleportationDisabled=\u00a76Teleportimine \u00a7ckeelatud\u00a76. -teleportationDisabledFor=\u00a76Teleporimine \u00a7ckeelatud \u00a76m\u00e4ngijale \u00a7c{0}\u00a76. -teleportationEnabled=\u00a76Teleportimine \u00a7clubatud\u00a76. -teleportationEnabledFor=\u00a76Teleporimine \u00a7clubatud \u00a76m\u00e4ngijale \u00a7c{0}\u00a76. -teleportAtoB=\u00a7c{0}\u00a76 teleportis su \u00a7c{1}\u00a76 juurde. -teleportDisabled=\u00a7c{0}\u00a74-il on teleportimine disabled. -teleportHereRequest=\u00a7c{0}\u00a76 saatis teile kutse, et telepordiksid nende juurde. -teleporting=\u00a76Teleportimine... +teleportationDisabled=\u00a76Teleporteerimine \u00a7ckeelatud\u00a76. +teleportationDisabledFor=\u00a76Teleporteerimine on \u00a7ckeelatud \u00a76m\u00e4ngijal \u00a7c{0}\u00a76. +teleportationEnabled=\u00a76Teleporteerimine \u00a7clubatud\u00a76. +teleportationEnabledFor=\u00a76Teleporteerimine on \u00a7clubatud \u00a76m\u00e4ngijale \u00a7c{0}\u00a76. +teleportAtoB=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 teleporteeris su m\u00e4ngija \u00a7c{1}\u00a76 juurde. +teleportDisabled=\u00a74M\u00e4ngijal \u00a7c{0}\u00a74on teleporteerumine keelatud. +teleportHereRequest=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 kutsus sind enda juurde teleporteeruma. +teleporting=\u00a76Teleporteerumine... teleportInvalidLocation=Koordinaatide v\u00e4\u00e4rtus ei saa olla \u00fcle 30000000 -teleportNewPlayerError=\u00a74Viga teleportimisel uut m\u00e4ngijat\! -teleportRequest=\u00a7c{0}\u00a76 soovib teie juurde teleportida. -teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled. -teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled. +teleportNewPlayerError=\u00a74Uue m\u00e4ngija teleporteerimisel esines viga\! +teleportRequest=\u00a76M\u00e4ngija \u00a7c{0}\u00a76 soovib sinu juurde teleporteeruda. +teleportRequestAllCancelled=\u00a76K\u00f5ik k\u00e4imasolevad teleporteerumiskutsed t\u00fchistatud. +teleportRequestSpecificCancelled=\u00a76K\u00e4imasolev teleporteerumiskutse m\u00e4ngijaga {0} on t\u00fchistatud. teleportRequestTimeoutInfo=\u00a76See kutse aegub peale\u00a7c {0} sekundit\u00a76. teleportTop=\u00a76Teleporteerud \u00fcles. -teleportToPlayer=\u00a76Telepordin \u00a7c{0}\u00a76 juurde. -tempbanExempt=\u00a74Sa ei v\u00f5i seda m\u00e4ngijat ajutiselt blokeerida. +teleportToPlayer=\u00a76Teleporteerun m\u00e4ngija \u00a7c{0}\u00a76 juurde. +tempbanExempt=\u00a74Sa ei tohi seda m\u00e4ngijat ajutiselt blokeerida. tempbanExemptOffline=\u00a74Sa ei tohi ajutiselt blokeerida v\u00f5rgust v\u00e4ljas olevaid m\u00e4ngijaid. -tempbanJoin=You are banned from this server for {0}. Reason: {1} -tempBanned=\u00a7cYou have been temporarily banned for {0}\:\n\u00a7r{2} +tempbanJoin=Sa oled sellest serverist {0} blokeeritud. P\u00f5hjus: {1} +tempBanned=\u00a7cSind blokeeriti sellest serverist ajutiselt {0}\:\n\u00a7r{2} thunder=\u00a76Sa\u00a7c {0} \u00a76\u00e4ikeseliseks oma maailmas. -thunderDuration=\u00a76Sa\u00a7c {0} \u00a76\u00e4ikeliseks oma maailmas\u00a7c {1} \u00a76sekundiks. +thunderDuration=\u00a76Sa\u00a7c {0} \u00a76oma maailmas k\u00f5u\u00a7c {1} \u00a76sekundiks. timeBeforeHeal=\u00a74Aeg enne j\u00e4rgmist elustamist\:\u00a7c {0}\u00a76. -timeBeforeTeleport=\u00a74Aeg enne j\u00e4rgmist teleportimist\:\u00a7c {0}\u00a76. +timeBeforeTeleport=\u00a74Aeg enne j\u00e4rgmist teleporteerumist\:\u00a7c {0}\u00a76. timeFormat=\u00a7c{0}\u00a76, \u00a7c{1}\u00a76 v\u00f5i \u00a7c{2}\u00a76 -timeSetPermission=\u00a74Teil ei ole lubatud aega muuta. -timeSetWorldPermission=\u00a74You are not authorized to set the time in world ''{0}''. -timeWorldCurrent=\u00a76Praegune aeg maailmas\u00a7c {0} \u00a76on \u00a7c{1}\u00a76. -timeWorldSet=\u00a76Aeg on m\u00e4\u00e4ratud j\u00e4rgnevaks\:\u00a7c {0} \u00a76maailmas\: \u00a7c{1}\u00a76. -totalSellableAll=\u00a7aKogusumma k\u00f5ikide m\u00fc\u00fcvate esemete ja plokkide v\u00e4\u00e4rtus on \u00a7c{1}\u00a7a. -totalSellableBlocks=\u00a7aKogusumma k\u00f5ikide m\u00fc\u00fcdavate plokkide v\u00e4\u00e4rtus on \u00a7c{1}\u00a7a. -totalWorthAll=\u00a7aM\u00fc\u00fcsite k\u00f5ik esemed ja plokkid kogusummaga \u00a7c{1}\u00a7a. -totalWorthBlocks=\u00a7aM\u00fc\u00fcsite k\u00f5ik plokkid kogusummaga \u00a7c{1}\u00a7a. -tps=\u00a76Praegune TPS \= {0} -tradeSignEmpty=\u00a74Vahetus m\u00e4rgil ei ole mitte midagi saadaval teile. -tradeSignEmptyOwner=\u00a74Ei ole mitte midagi mida korjata sellelt vahetus m\u00e4rgilt. -treeFailure=\u00a74Puidu generatsiooni viga. Proovi uuesti muru v\u00f5i mulla peal. +timeSetPermission=\u00a74Sul puudub aja m\u00e4\u00e4ramiseks luba. +timeSetWorldPermission=\u00a74Sul puudub maailma "{0}" aja m\u00e4\u00e4ramiseks luba. +timeWorldCurrent=\u00a76Maailma\u00a7c {0} \u00a76hetkeaeg on \u00a7c{1}\u00a76. +timeWorldSet=\u00a76Maailma \u00a7c{1}\u00a76 ajaks on seatud\u00a7c {0} \u00a76. +totalSellableAll=\u00a7aK\u00f5ikide m\u00fc\u00fcdavate esemete ja plokkide koguv\u00e4\u00e4rtus on \u00a7c{1}\u00a7a. +totalSellableBlocks=\u00a7aK\u00f5ikide m\u00fc\u00fcdavate plokkide koguv\u00e4\u00e4rtus on \u00a7c{1}\u00a7a. +totalWorthAll=\u00a7aM\u00fc\u00fcsid k\u00f5ik esemed ja plokid koguv\u00e4\u00e4rtusega \u00a7c{1}\u00a7a. +totalWorthBlocks=\u00a7aM\u00fc\u00fcsid k\u00f5ik plokid koguv\u00e4\u00e4rtusega \u00a7c{1}\u00a7a. +tps=\u00a76Hetkel on serveris {0} tick''i/s +tradeSignEmpty=\u00a74Kauplemissildil pole sulle midagi pakkuda. +tradeSignEmptyOwner=\u00a74Siit kauplemissildilt pole midagi korjata. +treeFailure=\u00a74Puu genereerimisel esines viga. Proovi uuesti muru v\u00f5i mulla peal. treeSpawned=\u00a76Puu on tekitatud. true=\u00a7atrue\u00a7r -typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. -typeTpaccept=\u00a76Et teleportida, kirjuta \u00a7c/tpaccept\u00a76. -typeTpdeny=\u00a76Et h\u00fcljata seda kutset, kirjuta \u00a7c/tpdeny\u00a76. -typeWorldName=\u00a76V\u00f5ite kirjutada ka teatud maailma nime. -unableToSpawnItem=\u00a74Ei saa tekitada \u00a7c{0}\u00a74, see ei ole tekitatav ese. -unableToSpawnMob=\u00a74Eluka tekitamisel tekkis viga. +typeTpacancel=\u00a76Selle taotluse t\u00fchistamiseks kirjuta \u00a7c/tpacancel\u00a76. +typeTpaccept=\u00a76Teleporteerumiseks kirjuta \u00a7c/tpaccept\u00a76. +typeTpdeny=\u00a76Kutse h\u00fclgamiseks kirjuta \u00a7c/tpdeny\u00a76. +typeWorldName=\u00a76V\u00f5id kirjutada ka kindla maailma nime. +unableToSpawnItem=\u00a74Eset \u00a7c{0}\u00a74 ei saanud tekitada, see ei ole tekitatav ese. +unableToSpawnMob=\u00a74Eluka tekitamisel esines viga. unignorePlayer=\u00a76Sa ei ignoreeri enam m\u00e4ngijat\u00a7c {0}\u00a76. -unknownItemId=\u00a74Tundmatu eseme id\:\u00a7r {0}\u00a74. -unknownItemInList=\u00a74Tundmatu ese {0} {1} listis. -unknownItemName=\u00a74Tundmatu eseme nimi\: {0}. -unlimitedItemPermission=\u00a74Puuduvad \u00f5igused l\u00f5pmatu eseme \u00a7c{0}\u00a74 jaoks. +unknownItemId=\u00a74Tundmatu eseme ID\:\u00a7r {0}\u00a74. +unknownItemInList=\u00a74Tundmatu ese {0} nimekirjas {1}. +unknownItemName=\u00a74Tundmatu esemenimi\: {0}. +unlimitedItemPermission=\u00a74Sul puudub luba l\u00f5pmatu eseme \u00a7c{0}\u00a74 jaoks. unlimitedItems=\u00a76L\u00f5pmatud esemed\:\u00a7r unmutedPlayer=\u00a76M\u00e4ngija\u00a7c {0} \u00a76vaigistus eemaldatud. -unsafeTeleportDestination=\u00a75Teleportimise sihtpunkt on ohtlik ja teleportimise-ohutus on maha v\u00f5etud. +unsafeTeleportDestination=\u00a75Teleporteerutav sihtpunkt on ohtlik ning teleporteerimise-ohutus on keelatud. unvanishedReload=\u00a74Taaslaadimine sundis sind muutuma n\u00e4htavaks. -upgradingFilesError=Viga uuendades faile. -uptime=\u00a76Uptime\:\u00a7c {0} +upgradingFilesError=Viga failide t\u00e4iendamisel. +uptime=\u00a76Aktiivaeg\:\u00a7c {0} userAFK=\u00a77{0} \u00a75on hetkel eemal ja ei pruugi vastata. -userAFKWithMessage=\u00a77{0} \u00a75on hetkel eemal ja ei pruugi vastata. {1} -userdataMoveBackError=Viga \u00fcritades liigutada userdata/{0}.tmp asukohta userdata/{1}\! -userdataMoveError=Viga \u00fcritades liigutada userdata/{0} asukohta userdata/{1}.tmp\! -userDoesNotExist=\u00a74Kasutaja\u00a7c {0} \u00a74ei ole olemas. +userAFKWithMessage=\u00a75M\u00e4ngija \u00a77{0} \u00a75on hetkel eemal ja ei pruugi vastata: {1} +userdataMoveBackError=Esines viga userdata/{0}.tmp liigutamisel asukohta userdata/{1}\! +userdataMoveError=Esines viga userdata/{0} liigutamisel asukohta userdata/{1}.tmp\! +userDoesNotExist=\u00a74Kasutajat\u00a7c {0} \u00a74pole olemas. userIsAway=\u00a77* {0} \u00a77on n\u00fc\u00fcd eemal. userIsAwayWithMessage=\u00a77* {0} \u00a77on n\u00fc\u00fcd eemal. -userIsNotAway=\u00a77* {0} \u00a77on tagasi. -userJailed=\u00a76Teid on vangistatud\! -userUnknown=\u00a74Hoiatus\: Kasutaja ''\u00a7c{0}\u00a74'' ei ole kunagi selle serveriga liitunud. -usingTempFolderForTesting=Kasutan temp kausta testimiseks\: -vanish=\u00a76Haihtumine\u00a76 {1} \u00a76 m\u00e4ngijale {0} -vanished=\u00a76Olete n\u00fc\u00fcd t\u00e4iesti n\u00e4htamatu tavakasutajatele, ja peidetud m\u00e4ngusisestest k\u00e4skudest. +userIsNotAway=\u00a77* {0} \u00a77ei ole enam eemal. +userJailed=\u00a76Sind vangistati\! +userUnknown=\u00a74Hoiatus\: kasutaja "\u00a7c{0}\u00a74" pole kunagi selle serveriga liitunud. +usingTempFolderForTesting=Kasutan testimiseks ajutist (temp) kausta\: +vanish=\u00a76Haihtumine on m\u00e4ngijale {0} {1}\u00a76 +vanished=\u00a76\u00a76Oled n\u00fc\u00fcd tavakasutajatele t\u00e4iesti n\u00e4htamatu ning m\u00e4ngusiseste k\u00e4skluste eest varjatud. +versionOutputVaultMissing=\u00a74Vault ei ole paigaldatud. Vestlus ja \u00f5igused ei pruugi t\u00f6\u00f6tada. +versionOutputFine=\u00a76{0} versioon: \u00a7a{1} +versionOutputWarn=\u00a76{0} versioon: \u00a7c{1} +versionOutputUnsupported=\u00a7d{0} \u00a76versioon: \u00a7d{1} +versionOutputUnsupportedPlugins=\u00a76Sa k\u00e4itad \u00a7dmittetoetatud pluginaid\u00a76! versionMismatch=\u00a74Versioon ei kattu\! Palun uuenda {0} samale versioonile. -versionMismatchAll=\u00a74Versioon ei kattu\! Palun uuenda k\u00f5ik Essentials''si jarid samale versioonile. -voiceSilenced=\u00a76Su h\u00e4\u00e4l on vaigistatud\! +versionMismatchAll=\u00a74Versioon ei kattu\! Palun uuenda k\u00f5ik Essentialsi jarid samale versioonile. +voiceSilenced=\u00a76Sinu h\u00e4\u00e4l on vaigistatud\! voiceSilencedReason=\u00a76Your voice has been silenced\! \u00a76Reason: \u00a7c{0} walking=k\u00f5nnib -warpDeleteError=\u00a74Probleem l\u00f5imu faili kustutamisega. -warpingTo=\u00a76Kasutate l\u00f5imu, et liikuda asukohta\:\u00a7c {0}\u00a76. +warpDeleteError=\u00a74Koolufaili kustutamisel esines probleem. +warpingTo=\u00a76Kooldud asukohta\u00a7c {0}\u00a76. warpList={0} -warpListPermission=\u00a74Teil ei ole \u00d5igust, et n\u00e4ha warp listi. -warpNotExist=\u00a74Antud l\u00f5imu ei ole olemas. -warpOverwrite=\u00a74Te ei saa seda warpi \u00fcle kirjutada. -warps=\u00a76L\u00f5imud\:\u00a7r {0} -warpsCount=\u00a76Kokku on\u00a7c {0} \u00a76l\u00f5imu. N\u00e4itan lehte \u00a7c{1}\u00a76/\u00a7c{2}\u00a76. -warpSet=\u00a76L\u00f5im\u00a7c {0} \u00a76m\u00e4\u00e4ratud. -warpUsePermission=\u00a74Teil ei ole \u00d5igust, et seda l\u00f5imu kasutada. +warpListPermission=\u00a74Sul puudub luba koolunimekirja vaatamiseks. +warpNotExist=\u00a74Seda kooldu pole olemas. +warpOverwrite=\u00a74Sa ei saa seda kooldu \u00fcle kirjutada. +warps=\u00a76Koolud\:\u00a7r {0} +warpsCount=\u00a76Kokku on\u00a7c {0} \u00a76kooldu. Kuvan lehte \u00a7c{1}\u00a76/\u00a7c{2}\u00a76. +warpSet=\u00a76Koold\u00a7c {0} \u00a76on m\u00e4\u00e4ratud. +warpUsePermission=\u00a74Sul puudub luba selle koolu kasutamiseks. weatherInvalidWorld=Maailma nimega {0} ei leitud\! -weatherStorm=\u00a76Te m\u00e4\u00e4rasite ilma \u00a7ctormiseks\u00a76 maailmas\u00a7c {0}\u00a76. -weatherStormFor=\u00a76M\u00e4\u00e4rasite ilma \u00a7ctormiseks\u00a76 maailmas\u00a7c {0}\u00a76 {1} sekundiks. -weatherSun=\u00a76M\u00e4\u00e4rasite ilma \u00a7cp\u00e4ikeselisek\u00a76 maailmas\u00a7c {0}\u00a76. -weatherSunFor=\u00a76M\u00e4\u00e4rasite ilma \u00a7cp\u00e4ikeliseks\u00a76 maailmas\u00a7c {0}\u00a76 {1} sekundiks. +weatherStorm=\u00a76Sa m\u00e4\u00e4rasid maailma\u00a7c {0}\u00a76 ilma \u00a7ctormiseks\u00a76. +weatherStormFor=\u00a76Sa m\u00e4\u00e4rasid maailma\u00a7c {0}\u00a76 ilma \u00a7ctormiseks\u00a76 {1} sekundiks. +weatherSun=\u00a76Sa m\u00e4\u00e4rasid maailma\u00a7c {0}\u00a76 ilma \u00a7cp\u00e4ikseliseks\u00a76. +weatherSunFor=\u00a76Sa m\u00e4\u00e4rasid maailma\u00a7c {0}\u00a76 ilma \u00a7cp\u00e4ikseliseks\u00a76 {1} sekundiks. +west=l\u00e4\u00e4s whoisAFK=\u00a76 - Eemal\:\u00a7r {0} -whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) +whoisAFKSince=\u00a76 - Eemal\:\u00a7r {0} (alates {1}) whoisBanned=\u00a76 - Blokeeritud\:\u00a7r {0} -whoisExp=\u00a76 - Exp\:\u00a7r {0} (Level {1}) +whoisExp=\u00a76 - Kogemuspunkte\:\u00a7r {0} (tase {1}) whoisFly=\u00a76 - Lennure\u017eiim\:\u00a7r {0} ({1}) whoisGamemode=\u00a76 - M\u00e4ngure\u017eiim\:\u00a7r {0} whoisGeoLocation=\u00a76 - Asukoht\:\u00a7r {0} whoisGod=\u00a76 - Jumalare\u017eiim\:\u00a7r {0} whoisHealth=\u00a76 - Tervis\:\u00a7r {0}/20 whoisHunger=\u00a76 - N\u00e4lg\:\u00a7r {0}/20 (+{1} k\u00fcllastus) -whoisIPAddress=\u00a76 - IP Aadress\:\u00a7r {0} -whoisJail=\u00a76 - Vangis\:\u00a7r {0} +whoisIPAddress=\u00a76 - IP-aadress\:\u00a7r {0} +whoisJail=\u00a76 - Vangistatud\:\u00a7r {0} whoisLocation=\u00a76 - Asukoht\:\u00a7r ({0}, {1}, {2}, {3}) -whoisMoney=\u00a76 - Raha\:\u00a7r {0} +whoisMoney=\u00a76 - Rahasumma\:\u00a7r {0} whoisMuted=\u00a76 - Vaigistatud\:\u00a7r {0} whoisMutedReason=\u00a76 - Muted\:\u00a7r {0} \u00a76Reason: \u00a7c{1} whoisNick=\u00a76 - H\u00fc\u00fcdnimi\:\u00a7r {0} -whoisOp=\u00a76 - OP\:\u00a7r {0} -whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0} -whoisTempBanned=\u00a76 - Ban expires:\u00a7r {0} -whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\= +whoisOp=\u00a76 - Operaator\:\u00a7r {0} +whoisPlaytime=\u00a76 - M\u00e4nguaeg\:\u00a7r {0} +whoisTempBanned=\u00a76 - Blokeering aegub:\u00a7r {0} +whoisTop=\u00a76 \=\=\=\=\=\= KesOn\:\u00a7c {0} \u00a76\=\=\=\=\=\= whoisUuid=\u00a76 - UUID\:\u00a7r {0} -worth=\u00a7aStack {0}''i on v\u00e4\u00e4rt \u00a7c{1}\u00a7a ({2} ese(t)(s) asukohas {3} \u00fcks) -worthMeta=\u00a7aStack {0}''i metadataga {1} v\u00e4\u00e4rt \u00a7c{2}\u00a7a ({3} ese(t) asukohas {4} \u00fcks) -worthSet=\u00a76V\u00e4\u00e4rtus m\u00e4\u00e4ratud +worth=\u00a7aEseme {0} kuhi on v\u00e4\u00e4rt \u00a7c{1}\u00a7a ({2} ese(t) hinnaga {3} t\u00fckk) +worthMeta=\u00a7aEseme {0} kuhi metaandmetega {1} on v\u00e4\u00e4rt \u00a7c{2}\u00a7a ({3} ese(t) hinnaga {4} t\u00fckk) +worthSet=\u00a76Eseme v\u00e4\u00e4rtus m\u00e4\u00e4ratud year=aasta years=aastat youAreHealed=\u00a76Sind on tervendatud. -youHaveNewMail=\u00a76Teil on\u00a7c {0} \u00a76lugemata s\u00f5numit\! Kirjutage \u00a7c/mail read\u00a76, et lugeda enda kirju. \ No newline at end of file +youHaveNewMail=\u00a76Sul on\u00a7c {0} \u00a76 uut kirja! Oma kirjade lugemiseks kirjuta \u00a7c/mail read\u00a76. diff --git a/Essentials/src/messages_fi.properties b/Essentials/src/messages_fi.properties index 28d5674c1..09012f552 100644 --- a/Essentials/src/messages_fi.properties +++ b/Essentials/src/messages_fi.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=Ei l\u00f6ydetty mallia {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Luodaan config tiedostoa mallista\: {0} creatingEmptyConfig=Luodaan tyhj\u00e4\u00e4 config tiedostoa\: {0} creative=luova @@ -103,9 +103,10 @@ disabledToSpawnMob=T\u00e4m\u00e4n mobin luominen on poistettu k\u00e4yt\u00f6st disableUnlimited=\u00a77Poistettu k\u00e4yt\u00f6st\u00e4 loputon laittaminen tavaralta "{0}", pelaajalta {1}. distance=\u00a76Et\u00e4isyys\: {0} dontMoveMessage=\u00a77Teleportataan {0} kuluttua. \u00c4l\u00e4 liiku. -downloadingGeoIp=Ladataan GeoIP tietokantaa ... t\u00e4m\u00e4 voi vied\u00e4 hetken (maa\: 0.6 MB, kaupunki\: 20MB) +downloadingGeoIp=Ladataan GeoIP tietokantaa ... t\u00e4m\u00e4 voi vied\u00e4 hetken (maa\: 1.7 MB, kaupunki\: 30MB) duplicatedUserdata=Kopioitu k\u00e4ytt\u00e4j\u00e4n tiedot\: {0} ja {1} durability=\u00a77T\u00e4ll\u00e4 ty\u00f6kalulla on \u00a7c{0}\u00a77 k\u00e4ytt\u00f6kertaa j\u00e4ljell\u00e4 +east=E editBookContents=\u00a7eVoit nyt muokata t\u00e4m\u00e4n kirjan sis\u00e4lt\u00f6\u00e4. enabled=k\u00e4yt\u00f6ss\u00e4 enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76. @@ -161,7 +162,7 @@ hatPlaced=\u00a7eNauti uudesta hatustasi\! hatRemoved=\u00a76Hattusi on poistettu. haveBeenReleased=\u00a77Sinut on vapautettu heal=\u00a77Sinut on parannettu. -healDead=\u00a74Et voi parantaa pelaajaa, joka on kuollut\! +healDead=\u00a74Et voi parantaa pelaajaa, joka on kuollut\! healOther=\u00a77Paransit pelaajan {0}. helpConsole=Katsoaksesi apua konsolista, kirjoita ?. helpFrom=\u00a77Komennot {0}\: @@ -191,6 +192,7 @@ invalidCharge=\u00a7cMit\u00e4t\u00f6n m\u00e4\u00e4r\u00e4ys. invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. invalidHome=Kotia {0} ei ole olemassa invalidHomeName=\u00a74Invalid home name\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Invalid mob type. invalidNumber=Virheellinen numero. invalidPotion=\u00a74Invalid Potion. @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76fro is=on isIpBanned=\u00a76IP \u00a7c {0} \u00a76On karkoitettu. itemCannotBeSold=Tuota tavaraa ei voi myyd\u00e4 t\u00e4ll\u00e4 palvelimella. +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=Tavara pit\u00e4\u00e4 vaihtaa pakattuina. M\u00e4\u00e4r\u00e4 2s olisi kaksi pakettia, jne. itemNames=\u00a76Item short names\:\u00a7r {0} itemNotEnough1=\u00a7cSinulla ei ole tarpeeksi tavaraa jota myyd\u00e4. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a77Myy \u00a7c{0} \u00a77({1} {2} hintaan {3} kpl) itemSoldConsole={0} sold {1} for \u00a77{2} \u00a77({3} items at {4} each) itemSpawn=\u00a77Annetaan {0} kpl {1} -itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Item\:\u00a7c {0} jailAlreadyIncarcerated=\u00a7cPelaaja on jo vankilassa\: {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a7cSin\u00e4 teet rikoksen, istut my\u00f6s sen mukaan. jailNotExist=Tuota vankilaa ei ole olemassa. jailReleased=\u00a77Pelaaja \u00a7e{0}\u00a77 vapautettu. @@ -315,6 +320,7 @@ nickChanged=Lempinimi vaihdettu. nickDisplayName=\u00a77Sinun tulee ottaa k\u00e4ytt\u00f6\u00f6n change-displayname Essentialsin config-tiedostosta. nickInUse=\u00a7cSe nimi on jo k\u00e4yt\u00f6ss\u00e4. nickNamesAlpha=\u00a7cLempinimen pit\u00e4\u00e4 olla aakkosista. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a77Sinulla ei ole en\u00e4\u00e4 lempinime\u00e4. nickSet=\u00a77Lempinimesi on nyt \u00a7c{0}. nickTooLong=\u00a74Tuo lempinimi on liian pitk\u00e4. @@ -325,8 +331,12 @@ noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0} noDurability=\u00a7cT\u00e4ll\u00e4 tavaralla ei ole kestoa. noGodWorldWarning=\u00a7cVaroitus\! God muoto ei ole k\u00e4yt\u00f6ss\u00e4 t\u00e4ss\u00e4 maailmassa. noHelpFound=\u00a7cEi komentoja. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=Pelaaja ei ole asettanut kotia. noIgnored=\u00a76You are not ignoring anyone. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74You do not have access to this kit. noKitPermission=\u00a7cTarvitset \u00a7c{0}\u00a7c oikeuden, jotta voit k\u00e4ytt\u00e4\u00e4 tuota pakkausta. noKits=\u00a77Ei pakkauksia saatavilla viel\u00e4 @@ -363,6 +373,7 @@ onlyDayNight=/time tukee vain day/night. onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74). onlySunStorm=/weather tukee vain sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=J\u00e4rjestet\u00e4\u00e4n rahatilanteita {0}, odota... oversizedTempban=\u00a74You may not ban a player for this period of time. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. questionFormat=\u00a77[Question]\u00a7f {0} radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}. readNextPage=Kirjoita /{0} {1} lukeaksesi seuraavan sivun +realName=\u00a7f{0}\u00a7r\u00a76 on \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=There is no recipe by that number. @@ -477,6 +489,9 @@ slimeMalformedSize=Viallinen koko. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +southEast=SE +south=S +southWest=SW socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=Tuo mob tykk\u00e4\u00e4 olevan yksin spawned=luotu @@ -581,6 +596,7 @@ weatherStorm=\u00a77Laitoit myrskyn maailmaan {0} weatherStormFor=\u00a77Laitoit myrskyn maailmaan {0} {1} sekunniksi weatherSun=\u00a77Laitoit auringon paistamaan maailmaan {0} weatherSunFor=\u00a77Laitoit auringon paistamaan maailmaan {0} {1} sekunniksi +west=W whoisAFK=\u00a76 - AFK\:\u00a7f {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Banned\:\u00a7f {0} @@ -609,4 +625,4 @@ worthSet=Arvo asetettu year=vuosi years=vuosia youAreHealed=\u00a77Sinut on parannettu. -youHaveNewMail=\u00a7cSinulla on {0} viesti(\u00e4)\!\u00a7f Kirjoita \u00a77/mail read\u00a7f lukeaksesi viestit. \ No newline at end of file +youHaveNewMail=\u00a7cSinulla on {0} viesti(\u00e4)\!\u00a7f Kirjoita \u00a77/mail read\u00a7f lukeaksesi viestit. diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties index 23d3c7f10..138ab5156 100644 --- a/Essentials/src/messages_fr.properties +++ b/Essentials/src/messages_fr.properties @@ -1,8 +1,8 @@ #X-Generator: crowdin.com -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' -# Translations start here -# by: +# Début des traductions +# EssentialsX a été traduit par la communauté française. action=\u00a75* {0} \u00a75{1} addedToAccount=\u00a7a{0} ont \u00e9t\u00e9 ajout\u00e9s \u00e0 votre compte. addedToOthersAccount=\u00a7a{0} ajout\u00e9s au compte de {1}\u00a7a. Nouveau solde \: {2} @@ -18,7 +18,7 @@ antiBuildDrop=\u00a74Vous n''\u00eates pas autoris\u00e9 \u00e0 jeter\u00a7c {0} antiBuildInteract=\u00a74Vous n''\u00eates pas autoris\u00e9 \u00e0 interagir avec {0}. antiBuildPlace=\u00a74Vous n''\u00eates pas autoris\u00e9 \u00e0 placer\u00a7c {0} \u00a74ici. antiBuildUse=\u00a74Vous n''\u00eates pas autoris\u00e9 \u00e0 utiliser\u00a7c {0}\u00a74. -autoAfkKickReason=Vous avez \u00e9t\u00e9 expuls\u00e9 pour inactivit\u00e9 sup\u00e9rieure \u00e0 {0} minutes. +autoAfkKickReason=Vous avez \u00e9t\u00e9 expuls\u00e9 pour une inactivit\u00e9 sup\u00e9rieure \u00e0 {0} minutes. backAfterDeath=\u00a77Utilisez la commande /back pour retourner \u00e0 l''endroit ou vous \u00eates mort. backupDisabled=Aucun script de backup externe n''a \u00e9t\u00e9 configur\u00e9. backupFinished=\u00a76Sauvegarde termin\u00e9e. @@ -30,8 +30,8 @@ balanceTop=\u00a77Meilleurs soldes au ({0}) banExempt=\u00a77Vous ne pouvez pas bannir ce joueur. banExemptOffline=\u00a74Vous ne pouvez bannir les joueurs d\u00e9connect\u00e9s. banFormat=Banni \: {0} -banIpJoin=Your IP address is banned from this server. Reason: {0} -banJoin=You are banned from this server. Reason: {0} +banIpJoin=Votre adresse IP est bannie du serveur. Raison: {0} +banJoin=Vous \u00ebtes banni de ce serveur. Raison: {0} bed=\u00a7olit\u00a7r bedMissing=\u00a74Votre lit est soit non d\u00e9fini, soit manquant, soit bloqu\u00e9. bedNull=\u00a7mlit\u00a7r @@ -57,8 +57,8 @@ chatTypeLocal=[L] chatTypeSpy=[Espion] cleaned=Fichiers joueurs nettoy\u00e9s. cleaning=Nettoyage des fichiers joueurs... -clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. -clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. +clearInventoryConfirmToggleOff=\u00a76Vous ne recevrez plus les confirmations avant l''effacement de votre inventaire. +clearInventoryConfirmToggleOn=\u00a76Vous recevrez les confirmations avant l''effacement de votre inventaire. commandCooldown=\u00a7cVous ne pouvez pas ex\u00e9cuter cette commande pendant {0}. commandFailed=\u00c9chec de la commande {0} \: commandHelpFailedForPlugin=Erreur d''obtention d''aide pour \: {0} @@ -66,8 +66,8 @@ commandNotLoaded=\u00a7cLa commande {0} a \u00e9t\u00e9 mal charg\u00e9e. compassBearing=\u00a77Orientation \: {0} ({1} degr\u00e9s). configFileMoveError=\u00c9chec du d\u00e9placement de config.yml vers l''emplacement de sauvegarde. configFileRenameError=Impossible de renommer le fichier temporaire en config.yml. -confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} -confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1} +confirmClear=\u00a77To \u00a7lCONFIRMER\u00a77 l''\u00e9ffacement de l'inventaire, r\u00e9p\u00e9tez la commande: \u00a76{0} +confirmPayment=\u00a77To \u00a7lCONFIRMER\u00a77 le paiement \u00e0 \u00a76{0}\u00a77, r\u00e9p\u00e9tez la commande: \u00a76{1} connectedPlayers=\u00a77Joueurs connect\u00e9s\u00a7r connectionFailed=\u00c9chec de la connexion. cooldownWithMessage=\u00a7cR\u00e9utilisation \: {0} @@ -75,9 +75,9 @@ coordsKeyword={0}, {1}, {2} corruptNodeInConfig=\u00a74Annonce \: votre fichier de configuration a un {0} n\u0153ud corrompu. couldNotFindTemplate=Le mod\u00e8le {0} est introuvable createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} -createKitFailed=\u00a74Error occurred whilst creating kit {0}. +createKitFailed=\u00a74Erreur lors de la cr\u00e9ation du kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Cr\u00e9ation du kit: \u00a7f{0}\n\u00a76D\u00e9lai: \u00a7f{1}\n\u00a76Lien: \u00a7f{2}\n\u00a76Vous devez copier le contenu dans le fichier kits.yml. creatingConfigFromTemplate=Cr\u00e9ation de la configuration \u00e0 partir du mod\u00e8le \: {0} creatingEmptyConfig=Cr\u00e9ation d''une configuration vierge \: {0} creative=cr\u00e9atif @@ -103,9 +103,10 @@ disabledToSpawnMob=L''invocation de ce monstre a \u00e9t\u00e9 d\u00e9sactiv\u00 disableUnlimited=\u00a77D\u00e9sactivation du placement illimit\u00e9 de {0} pour {1}. distance=\u00a76Distance \: {0} dontMoveMessage=\u00a77La t\u00e9l\u00e9portation commence dans {0}. Ne bougez pas. -downloadingGeoIp=T\u00e9l\u00e9chargement de la base de donn\u00e9es GeoIP... Cela peut prendre un moment (pays \: 0.6 Mo, villes \: 20 Mo) +downloadingGeoIp=T\u00e9l\u00e9chargement de la base de donn\u00e9es GeoIP... Cela peut prendre un moment (pays \: 1.7 Mo, villes \: 30 MB) duplicatedUserdata=Donn\u00e9es utilisateurs dupliqu\u00e9es \: {0} et {1} durability=\u00a77Cet outil a \u00a7c{0}\u00a77 usage(s) restant(s). +east=E editBookContents=\u00a7eVous pouvez maintenant \u00e9diter le contenu de ce livre. enabled=activ\u00e9 enableUnlimited=&6Don d''une quantit\u00e9 illimit\u00e9e de\u00a7c {0} \u00a76\u00e0 \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a7cCharge invalide. invalidFireworkFormat=\u00a74L''option \u00a7c{0} \u00a74n''est pas une valeur valide pour \u00a7c{1}\u00a74. invalidHome=La r\u00e9sidence {0} n''existe pas invalidHomeName=\u00a74Nom de r\u00e9sindence invalide. +invalidItemFlagMeta=\u00a74Itemflag meta invalide\: \u00a7c{0}\u00a74. invalidMob=\u00a74Type de mob invalide. invalidNumber=\u00a74Nombre invalide. invalidPotion=\u00a74Potion invalide. @@ -200,14 +202,16 @@ invalidSkull=\u00a74Vous devez tenir une t\u00eate de joueur. invalidWarpName=\u00a74Nom de warp invalide. invalidWorld=\u00a7cMonde invalide. inventoryClearFail=\u00a74Le joueur {0} \u00a74n''a pas\u00a7c {1}\u00a7c {2}\u00a74 sur lui. -inventoryClearingAllArmor=\u00a76Tous les items de l''inventaire et l''armure de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s. +inventoryClearingAllArmor=\u00a76Tous les items de l''inventaire et l''armure de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s. inventoryClearingAllItems=\u00a76Tous les items de l''inventaire de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s. inventoryClearingAllStack=\u00a76Tous les\u00a7c {0} \u00a76de l''inventaire de {1}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s. inventoryClearingFromAll=\u00a76Tous les inventaires sont en train d''\u00ea vid\u00e9s... inventoryClearingStack=\u00a7c{0} \u00a7c {1} \u00a76ont \u00e9t\u00e9 supprim\u00e9s de l''inventaire de {2}\u00a76. is=est isIpBanned=\u00a76L''IP \u00a7c{0} \u00a76est bannie. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=Cet objet ne peut \u00eatre vendu au serveur. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=Cet objet doit \u00eatre vendu par 64. Une quantit\u00e9 de 2 serait deux fois 64. itemNames=Noms d''item courts \: {0} itemNotEnough1=\u00a7cVous n''avez pas assez de cet objet pour le vendre. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74Vous n''avez pas d''items pouvant \u00eatre convertis e itemSold=\u00a77Vendu pour \u00a7c{0} \u00a77({1} {2} \u00e0 {3} chacun) itemSoldConsole={0} vendu {1} pour \u00a77{2} \u00a77({3} objet(s) \u00e0 {4} chacun) itemSpawn=\u00a77Donne {0} de {1} -itemType=\u00a76Item \:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Item \:\u00a7c {0} jailAlreadyIncarcerated=\u00a7cJoueur d\u00e9j\u00e0 emprisonn\u00e9 \: {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a7cVous avez commis un crime, vous en payez le prix. jailNotExist=Cette prison n''existe pas. jailReleased=\u00a77Joueur \u00a7e{0}\u00a77 lib\u00e9r\u00e9. @@ -315,6 +320,7 @@ nickChanged=surnom modifi\u00e9. nickDisplayName=\u00a77Vous devez activer change-displayname dans la configuration Essentials. nickInUse=\u00a7cCe nom est d\u00e9j\u00e0 utilis\u00e9. nickNamesAlpha=\u00a7cLes surnoms doivent \u00eatre alphanum\u00e9riques. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a7 Vous n''avez plus de surnom. nickSet=\u00a76Votre surnom est maintenant \u00a7c{0}\u00a76. nickTooLong=\u00a74Ce surnom est trop long. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74Vous n''avez pas la permission d\u2019acc\u00e9der \u0 noBreakBedrock=Vous n''\u00eates pas autoris\u00e9s \u00e0 d\u00e9truire la bedrock. noDestroyPermission=\u00a74Vous n''avez pas la permission de d\u00e9truire ce/cette \u00a7c{0}\u00a74. noDurability=\u00a7cCet item n''a pas de durabilit\u00e9. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a7cAttention \! Le mode dieu est d\u00e9sactiv\u00e9 dans ce monde. noHelpFound=\u00a7cAucune commande correspondante. noHomeSetPlayer=Le joueur n''a pas d\u00e9fini sa r\u00e9sidence. noIgnored=\u00a76Vous n''ignorez personne. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Vous n''avez pas acc\u00e8 \u00e0 ce kit. noKitPermission=\u00a7cVous avez besoin de la permission \u00a7c{0}\u00a7c pour utiliser ce kit. noKits=\u00a77Il n''y a pas encore de kits disponibles. @@ -363,6 +373,7 @@ onlyDayNight=/time ne supporte que day/night (jour/nuit). onlyPlayers=\u00a74Seul les joueurs en jeu peuvent utiliser \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Vous ne pouvez d\u00e9finir que le propri\u00e9taire des t\u00eates de joueurs (\u00a7c397\:3\u00a74). onlySunStorm=/weather ne supporte que (soleil) sun/storm (temp\u00eate). +openingDisposal=\u00a76Opening disposal menu... orderBalances=Classement des soldes des {0} joueurs, patientez... oversizedTempban=\u00a74Vous ne pouvez pas bannir un joueur pour cette p\u00e9riode. payConfirmToggleOff=\u00a76Il ne vous sera plus demand\u00e9 de confirmer les paiements. @@ -424,13 +435,14 @@ pWeatherSet=La m\u00e9t\u00e9o du joueur a \u00e9t\u00e9 r\u00e9gl\u00e9e \u00e0 questionFormat=\u00a72[Question]\u00a7r {0} radiusTooBig=\u00a74Le rayon est trop grand \! Le rayon maximum est {0}. readNextPage=Utilisez /{0} {1} pour lire la page suivante. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} vient de se d\u00e9connecter r\u00e9cemment. recipe=\u00a76Recette pour \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 sur \u00a7c{2}\u00a76) recipeBadIndex=Il n''y a pas de rec\u00eate pour ce num\u00e9ro. recipeFurnace=\u00a76Faire fondre \: \u00a7c{0}\u00a76. recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X recipeGridItem=\u00a7c{0}X \u00a76est \u00a7c{1} -recipeMore=\u00a76Tapez /{0} \u00a7c{1}\u00a76 pour voir les autres rec\u00eates pour \u00a7c{2} +recipeMore=\u00a76Tapez /{0} \u00a7c{1}\u00a76 pour voir les autres rec\u00eates pour \u00a7c{2} recipeNone=Aucune rec\u00eate n''existe pour {0}. recipeNothing=rien recipeShapeless=\u00a76Combiner \u00a7c{0} @@ -472,12 +484,15 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Vous n''avez pas l''autorisation de cr\u00e9er une pancarte ici. similarWarpExist=Un warp avec un nom similaire existe d\u00e9j\u00e0. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76T\u00eate chang\u00e9e en celle de \u00a7c{0}\u00a76. slimeMalformedSize=Taille incorrecte. socialSpy=\u00a76SocialSpy pour \u00a7c{0}\u00a76 \: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r -socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muet) \u00a7r soloMob=Cette cr\u00e9ature pr\u00e9f\u00e8re \u00eatre seule. spawned=invoqu\u00e9(s) spawnSet=\u00a77Le point de d\u00e9part a \u00e9t\u00e9 d\u00e9fini pour le groupe {0}. @@ -531,7 +546,7 @@ tradeSignEmptyOwner=Il n''y a rien \u00e0 collecter de cette pancarte d''\u00e9c treeFailure=\u00a7c\u00c9chec de la g\u00e9n\u00e9ration de l''arbre. Essayez de nouveau sur de l''herbe ou de la terre. treeSpawned=\u00a77Arbre cr\u00e9\u00e9. true=\u00a72oui\u00a7f -typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. +typeTpacancel=\u00a76Pour annuler cette requ\u00ebte, utilise \u00a7c/tpacancel\u00a76. typeTpaccept=\u00a77Pour le t\u00e9l\u00e9porter, utilisez \u00a7c/tpaccept\u00a77 \u00a77ou \u00a7c/tpyes\u00a77. typeTpdeny=\u00a77Pour d\u00e9cliner cette demande, utilisez \u00a7c/tpdeny\u00a77 \u00a77ou \u00a7c/tpno\u00a77. typeWorldName=\u00a77Vous pouvez aussi taper le nom d''un monde sp\u00e9cifique. @@ -581,6 +596,7 @@ weatherStorm=\u00a77Vous avez programm\u00e9 l''orage dans {0}. weatherStormFor=\u00a77Vous avez programm\u00e9 l''orage dans {0} pour {1} seconde(s). weatherSun=\u00a77Vous avez programm\u00e9 le beau temps dans {0}. weatherSunFor=\u00a77Vous avez programm\u00e9 le beau temps dans {0} pour {1} seconde(s). +west=W whoisAFK=\u00a76 - AFK/Absent \:\u00a7f {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Banni \:\u00a7f {0} diff --git a/Essentials/src/messages_hu.properties b/Essentials/src/messages_hu.properties index c50a1448b..591de3a4f 100644 --- a/Essentials/src/messages_hu.properties +++ b/Essentials/src/messages_hu.properties @@ -1,137 +1,138 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here -# by: +# by: montlikadani, gbalint action=\u00a75* {0} \u00a75{1} addedToAccount=\u00a7a{0} hozz\u00e1adva az egyenlegedhez. addedToOthersAccount=\u00a7a{0} hozz\u00e1dva {1}\u00a7a egyenleg\u00e9hez. \u00daj egyenlege\: {2} adventure=kaland alertBroke=t\u00f6r\: -alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} at\: {3} +alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2}\: {3} alertPlaced=letett\: alertUsed=haszn\u00e1lt\: alphaNames=\u00a74A j\u00e1t\u00e9kosok nevei csak bet\u0171ket, sz\u00e1mokat \u00e9s al\u00e1h\u00faz\u00e1st tartalmazhat. antiBuildBreak=\u00a74Nincs jogod, hogy ki\u00fcss egy\u00a7c {0} \u00a74blokkot itt. antiBuildCraft=\u00a74Nincs jogod, hogy a k\u00f6vetkez\u0151t k\u00e9sz\u00edtsd\:\u00a7c {0}\u00a74. antiBuildDrop=\u00a74Nincs jogod, hogy eldobd a k\u00f6vetkez\u0151t\:\u00a7c {0}\u00a74. -antiBuildInteract=\u00a74Nincs jogod, hogy interakci\u00f3ba l\u00e9pj a\u00a7c {0}\u00a74-val/vel. +antiBuildInteract=\u00a74Nincs jogod, hogy interakci\u00f3ba l\u00e9pj a\u00a7c {0}\u00a74-val/-vel. antiBuildPlace=\u00a74Nincs jogod, hogy lehelyezed\u00a7c {0} \u00a74ide. -antiBuildUse=\u00a74NIncs jogod, hogy haszn\u00e1ld a k\u00f6vetkez\u0151t\:\u00a7c {0}\u00a74. +antiBuildUse=\u00a74Nincs jogod, hogy haszn\u00e1ld a k\u00f6vetkez\u0151t\:\u00a7c {0}\u00a74. autoAfkKickReason=Kickelve lett\u00e9l {0} perc AFK miatt\! -backAfterDeath=\u00a76Meghalt\u00e1l\! A \u00a74/back\u00a76 parancssal visszajuthatsz hal\u00e1lod sz\u00ednhely\u00e9re. -backupDisabled=\u00a74A ment\u00e9s nincs k\u00e9sz -backupFinished=\u00a76Biztons\u00e1gi ment\u00e9s k\u00e9sz. -backupStarted=\u00a76Biztons\u00e1gi ment\u00e9s elkezdve. +backAfterDeath=\u00a76Meghalt\u00e1l\! A \u00a74/back\u00a76 paranccsal visszajuthatsz a hal\u00e1lod sz\u00ednhely\u00e9re. +backupDisabled=\u00a74A ment\u00e9s nincs k\u00e9sz. +backupFinished=\u00a76A biztons\u00e1gi ment\u00e9s k\u00e9sz. +backupStarted=\u00a76A biztons\u00e1gi ment\u00e9s elkezdve. backUsageMsg=\u00a76Visszat\u00e9r\u00e9s az el\u0151z\u0151 helyre. balance=\u00a7aEgyenleged\:\u00a7c {0} balanceOther={0}\u00a7a egyenlege\:\u00a7c {1} balanceTop=\u00a76Legmagasabb egyenlegek ({0}) banExempt=\u00a74Nem tilthatod ki ezt a j\u00e1t\u00e9kost. -banExemptOffline=\u00a74Nem bannolhatsz Offline j\u00e1t\u00e9kost. +banExemptOffline=\u00a74Nem bannolhatsz offline j\u00e1t\u00e9kost. banFormat=\u00a74Kitiltva\:\n\u00a7r{0} -banIpJoin=Your IP address is banned from this server. Reason: {0} -banJoin=You are banned from this server. Reason: {0} +banIpJoin=IP c\u00edmedr\u0151l lett\u00e9l kitiltva a szerverr\u0151l. Oka: {0} +banJoin=Ki lett\u00e9l tiltva a szerverr\u0151l. Oka: {0} bed=\u00a7o\u00e1gy\u00a7r bedMissing=\u00a74Az \u00e1gyad nincs be\u00e1ll\u00edtva vagy eltorlaszolt\u00e1k. bedNull=\u00a7m\u00e1gy\u00a7r -bedSet=\u00a76\u00c1gyi kezd\u00f5hely be\u00e1ll\u00edtva\! +bedSet=\u00a76\u00c1gyi kezd\u0151hely be\u00e1ll\u00edtva\! bigTreeFailure=\u00a74Nagy fa gener\u00e1l\u00e1si hiba\! Pr\u00f3b\u00e1ld \u00fajra f\u00fcv\u00f6n vagy f\u00f6ld\u00f6n. -bigTreeSuccess=\u00a76Nagy fa legener\u00e1lva. +bigTreeSuccess=\u00a76Nagy fa gener\u00e1lva. blockList=\u00a76Az Essentials \u00e1tengedte a k\u00f6vetkez\u0151 parancsokat egy m\u00e1sik pluginnak\: bookAuthorSet=\u00a76Mostant\u00f3l a k\u00f6nyv \u00edr\u00f3ja\: {0}. bookLocked=\u00a76K\u00f6nyv lez\u00e1rva. bookTitleSet=\u00a76A k\u00f6nyv c\u00edme mostant\u00f3l\: {0}. broadcast=\u00a7r\u00a76[\u00a74K\u00f6zvet\u00edt\u00e9s\u00a76]\u00a7a {0} buildAlert=\u00a74Nincs jogod, hogy \u00e9p\u00edts. -bukkitFormatChanged=Bukkit version format changed. Version not checked. -burnMsg=\u00a76Be\u00e1ll\u00edtottad\u00a7c {0}\u00a76-nak/nek a t\u00fczet\u00a7c {1} m\u00e1sodpercre\u00a76. -cannotStackMob=\u00a74You do not have permission to stack multiple mobs. +bukkitFormatChanged=A Bukkit verzi\u00f3form\u00e1tuma megv\u00e1ltozott. Nem ellen\u0151rz\u00f6tt verzi\u00f3. +burnMsg=\u00a76Be\u00e1ll\u00edtottad\u00a7c {0}\u00a76-nak/-nek a t\u00fczet\u00a7c {1} m\u00e1sodpercre\u00a76. +cannotStackMob=\u00a74Nincs jogod t\u00f6bb mobot stackelni. canTalkAgain=\u00a76Besz\u00e9lhetsz \u00fajra. cantFindGeoIpDB=A GeoIP adatb\u00e1zisa nem tal\u00e1lhat\u00f3\! -cantGamemode=\u00a74You do not have permission to change to gamemode {0} +cantGamemode=\u00a74Nincs jogod megv\u00e1ltoztani a j\u00e1t\u00e9k m\u00f3dot {0} cantReadGeoIpDB=Nem tudom beolvasni a GeoIP adatb\u00e1zist\! -cantSpawnItem=\u00a74Nincs jogod, hogy lek\u00e9rd a k\u00f6vetkez\u0151 cuccot\:\u00a7c {0}\u00a74. +cantSpawnItem=\u00a74Nincs jogod, hogy lek\u00e9rd a k\u00f6vetkez\u0151 t\u00e1rgyat\:\u00a7c {0}\u00a74. chatTypeAdmin=[A] chatTypeLocal=[L] chatTypeSpy=\u00a72[K\u00e9m]\u00a7r cleaned=J\u00e1t\u00e9kos f\u00e1jlok t\u00f6r\u00f6lve. cleaning=J\u00e1t\u00e9kos f\u00e1jlok tiszt\u00edt\u00e1sa. -clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. -clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. -commandCooldown=\u00a7cYou cannot type that command for {0}. +clearInventoryConfirmToggleOff=\u00a76Az eszk\u00f6zt\u00e1r t\u00f6rl\u00e9se nem lesz \u00e9rv\u00e9nyben. +clearInventoryConfirmToggleOn=\u00a76Most meg kell adnod az eszk\u00f6zt\u00e1r t\u00f6rl\u00e9s\u00e9t. +commandCooldown=\u00a7cEzt a parancsot nem \u00edrhatod {0}. commandFailed=Parancs {0} sikertelen\: -commandHelpFailedForPlugin=Hiba a seg\u00edts\u00e9g lek\u00e9r\u00e9sben a(z) {0} pluginban -commandNotLoaded=\u00a74Parancs {0} nincs bet\u00f6ltve. -compassBearing=\u00a76Ir\u00e1ny\: {0} ({1} fok). -configFileMoveError=Failed to move config.yml to backup location. -configFileRenameError=Failed to rename temp file to config.yml. -confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} -confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1} +commandHelpFailedForPlugin=Hiba a seg\u00edts\u00e9g lek\u00e9r\u00e9sben a(z) {0} pluginban. +commandNotLoaded=\u00a74A parancs {0} nincs bet\u00f6ltve. +compassBearing=\u00a76Ir\u00e1ny\: {0} ({1} fok). +configFileMoveError=Nem siker\u00fclt \u00e1thelyezni a config.yml f\u00e1jlt a ment\u00e9si helyre. +configFileRenameError=Nem siker\u00fclt \u00e1tnevezni a temp f\u00e1jlt a config.yml-be. +confirmClear=\u00a77Az eszk\u00f6zt\u00e1r t\u00f6rl\u00e9s\u00e9hez \u00a7lMEGER\u0150S\u00cdT\u00c9S\u00a77 k\u00e9rlek, ism\u00e9teld meg a parancsot: \u00a76{0} +confirmPayment=\u00a77A \u00a7lMEGER\u0150S\u00cdT\u00a77 fizet\u00e9s \u00a76{0}\u00a77, k\u00e9rlek, ism\u00e9teld meg a parancsot: \u00a76{1} connectedPlayers=\u00a76Csatlakozott j\u00e1t\u00e9kosok\u00a7r -connectionFailed=Failed to open connection. -cooldownWithMessage=\u00a74Cooldown\: {0} +connectionFailed=Nem siker\u00fclt megnyitni a kapcsolatot. +cooldownWithMessage=\u00a74K\u00e9sleltet\u0151\: {0} coordsKeyword={0}, {1}, {2} -corruptNodeInConfig=\u00a74Notice\: Your configuration file has a corrupt {0} node. -couldNotFindTemplate=\u00a74Could not find template {0} -createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} -createKitFailed=\u00a74Error occurred whilst creating kit {0}. +corruptNodeInConfig=\u00a74Megjegyz\u00e9s\: A konfigur\u00e1ci\u00f3s f\u00e1jlod s\u00e9r\u00fclt {0} csom\u00f3ponttal rendelkezik. +couldNotFindTemplate=\u00a74Nem tal\u00e1ltam sablont {0} +createdKit=\u00a76Csomag l\u00e9trehozva \u00a7c{0} \u00a7c{1} \u00a76bejegyz\u00e9s \u00e9s k\u00e9s\u00e9ssel \u00a7c{2} +createKitFailed=\u00a74Hiba t\u00f6rt\u00e9nt a csomag l\u00e9trehoz\u00e1sakor {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. -creatingConfigFromTemplate=Creating config from template\: {0} -creatingEmptyConfig=Creating empty config\: {0} +createKitSuccess=\u00a76Csomag l\u00e9trehozva: \u00a7f{0}\n\u00a76K\u00e9s\u00e9s: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76A fenti hivatkoz\u00e1s tartalm\u00e1nak m\u00e1sol\u00e1sa a kits.yml. +creatingConfigFromTemplate=Konfigur\u00e1l\u00e1s l\u00e9trehoz\u00e1sa sablonb\u00f3l\: {0} +creatingEmptyConfig=\u00dcres konfig l\u00e9trehoz\u00e1sa\: {0} creative=kreat\u00edv currency={0}{1} -currentWorld=\u00a76Current World\:\u00a7c {0} +currentWorld=\u00a76Jelenlegi vil\u00e1g\:\u00a7c {0} day=nap days=nap defaultBanReason=Ki lett\u00e9l tiltva\! -deleteFileError=Could not delete file\: {0} -deleteHome=\u00a76Otthon\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva. +deleteFileError=Nem lehet t\u00f6r\u00f6lni a f\u00e1jlt\: {0} +deleteHome=\u00a76Az otthon\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva. deleteJail=\u00a76B\u00f6rt\u00f6n\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva. deleteWarp=\u00a76Warp\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva. -deniedAccessCommand=\u00a7c{0} \u00a74was denied access to command. -denyBookEdit=\u00a74You cannot unlock this book. -denyChangeAuthor=\u00a74You cannot change the author of this book. -denyChangeTitle=\u00a74You cannot change the title of this book. -depth=\u00a76You are at sea level. -depthAboveSea=\u00a76You are\u00a7c {0} \u00a76block(s) above sea level. -depthBelowSea=\u00a76You are\u00a7c {0} \u00a76block(s) below sea level. -destinationNotSet=Destination not set\! +deniedAccessCommand=\u00a7c{0} \u00a74megtagadva a parancs el\u00e9r\u00e9s\u00e9t. +denyBookEdit=\u00a74Nem tudod kinyitni ezt a k\u00f6nyvet. +denyChangeAuthor=\u00a74Nem m\u00f3dos\u00edthatod a k\u00f6nyv szerz\u0151j\u00e9t. +denyChangeTitle=\u00a74Nem m\u00f3dos\u00edthatod a k\u00f6nyv c\u00edm\u00e9t. +depth=\u00a76Tengeren vagy. +depthAboveSea=\u00a7c {0} \u00a76blokk(ok) a tengerszint felett. +depthBelowSea=\u00a7c {0} \u00a76blokk(ok) a tengerszint alatt. +destinationNotSet=A c\u00e9l nem lett be\u00e1ll\u00edtva\! disabled=letiltva -disabledToSpawnMob=\u00a74Ennek a l\u00e9nynek a leh\u00edv\u00e1sa jelenleg le van tiltva a config f\u00e1jlban. -disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}. +disabledToSpawnMob=\u00a74Ennek a l\u00e9nynek a leh\u00edv\u00e1sa jelenleg le van tiltva a konfig f\u00e1jlban. +disableUnlimited=\u00a76Letiltva korl\u00e1tlan sz\u00e1m\u00fa\u00a7c {0} \u00a76 {1}. distance=\u00a76T\u00e1vols\u00e1g\: {0} -dontMoveMessage=\u00a76A teleport\u00e1l\u00e1s elkezd\u00f5dik\u00a7c {0}\u00a76 bel\u00fcl. Ne mozogj\! -downloadingGeoIp=GeoIP adatb\u00e1zis let\u00f6lt\u00e9se folyamatban... eltarthat egy kis ideig (country\: 0.6 MB, city\: 20MB) +dontMoveMessage=\u00a76A teleport\u00e1l\u00e1s elkezd\u0151dik\u00a7c {0}\u00a76 bel\u00fcl. Ne mozogj\! +downloadingGeoIp=GeoIP adatb\u00e1zis let\u00f6lt\u00e9se folyamatban... Eltarthat egy kis ideig (orsz\u00e1g\: 1.7 MB, v\u00e1ros\: 30MB) duplicatedUserdata=Duplik\u00e1lt felhaszn\u00e1l\u00f3i adatok\: {0} \u00e9s {1}. -durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left +east=K +durability=\u00a76Ez az eszk\u00f6z \u00a7c{0}\u00a76 haszn\u00e1ld balra. editBookContents=\u00a76Mostant\u00f3l tudod szerkeszteni ezt a k\u00f6nyvet. -enabled=bekapcsolva -enableUnlimited=\u00a76Lek\u00e9rve v\u00e9gtelen mennyis\u00e9g\u0171 \u00a7c {0} \u00a76\u00a7c{1}\u00a76-nak/nek. -enchantmentApplied=\u00a76A k\u00f6vetkez\u0151 enchant\:\u00a7c {0} \u00a76sikeresen r\u00e1 lett rakva a kezedbe l\u00e9v\u0151 dologra. -enchantmentNotFound=\u00a74Enchant nem tal\u00e1lhat\u00f3\! -enchantmentPerm=\u00a74Nincs jogod a k\u00f6vetkez\u0151 enchanthoz\:\u00a7c {0}\u00a74. -enchantmentRemoved=\u00a76A k\u00f6vetkez\u0151 enchant\:\u00a7c {0} \u00a76sikeresen le lett v\u00e9ve a kezedbe l\u00e9v\u0151 dologr\u00f3l. -enchantments=\u00a76Enchantok\:\u00a7r {0} +enabled=enged\u00e9lyezve +enableUnlimited=\u00a76Lek\u00e9rve v\u00e9gtelen mennyis\u00e9g\u0171 \u00a7c {0} \u00a76\u00a7c{1}\u00a76-nak/-nek. +enchantmentApplied=\u00a76A k\u00f6vetkez\u0151 var\u00e1zs\:\u00a7c {0} \u00a76sikeresen r\u00e1 lett rakva a kezedbe l\u00e9v\u0151 dologra. +enchantmentNotFound=\u00a74A var\u00e1zslat nem tal\u00e1lhat\u00f3\! +enchantmentPerm=\u00a74Nincs jogod a k\u00f6vetkez\u0151 var\u00e1zslathoz\:\u00a7c {0}\u00a74. +enchantmentRemoved=\u00a76A k\u00f6vetkez\u0151 var\u00e1zslat\:\u00a7c {0} \u00a76sikeresen le lett v\u00e9ve a kezedben l\u00e9v\u0151 dologr\u00f3l. +enchantments=\u00a76Var\u00e1zslatok\:\u00a7r {0} errorCallingCommand=Hiba a parancs h\u00edv\u00e1s\u00e1ban /{0} errorWithMessage=\u00a7cHiba\:\u00a74 {0} -essentialsHelp1=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, go to http\://tiny.cc/EssentialsChat -essentialsHelp2=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, either type /essentialshelp in game or go to http\://tiny.cc/EssentialsChat +essentialsHelp1=A f\u00e1jl t\u00f6r\u00f6tt, \u00e9s az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja kijav\u00edtani a f\u00e1jlt, akkor menjen http\://tiny.cc/EssentialsChat +essentialsHelp2=A f\u00e1jl t\u00f6r\u00f6tt, \u00e9s az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja kijav\u00edtani a f\u00e1jlt, \u00edrja be /essentials help a j\u00e1t\u00e9kban vagy menjen http\://tiny.cc/EssentialsChat essentialsReload=\u00a76Essentials \u00fajrat\u00f6ltve\u00a7c {0}. -exp=\u00a7c{0} \u00a76has\u00a7c {1} \u00a76exp (level\u00a7c {2}\u00a76) and needs\u00a7c {3} \u00a76more exp to level up. -expSet=\u00a7c{0} \u00a76now has\u00a7c {1} \u00a76exp. -extinguish=\u00a76You extinguished yourself. +exp=\u00a7c{0}\u00a7c {1} \u00a76xp (szint\u00a7c {2}\u00a76) \u00e9s kell\u00a7c {3} xp a szintl\u00e9p\u00e9shez. +expSet=\u00a7c{0} \u00a76most van\u00a7c {1} \u00a76xp. +extinguish=\u00a76Eloltottad magad. extinguishOthers=\u00a76Eloltottad {0}\u00a76-t. -failedToCloseConfig=Nem siker\u00fclt bez\u00e1rni a config f\u00e1jlt {0}. -failedToCreateConfig=Nem siker\u00fclt a config f\u00e1ljt l\u00e1trehozni {0}. -failedToWriteConfig=Nem siker\u00fclt a config f\u00e1jlba \u00edrni {0}. +failedToCloseConfig=Nem siker\u00fclt bez\u00e1rni a konfig f\u00e1jlt {0}. +failedToCreateConfig=Nem siker\u00fclt a konfig f\u00e1ljt l\u00e1trehozni {0}. +failedToWriteConfig=Nem siker\u00fclt a konfig f\u00e1jlba \u00edrni {0}. false=\u00a74hamis\u00a7r feed=\u00a76Meg lett\u00e9l etetve. feedOther=\u00a76Megetetted {0}\u00a76-t. fileRenameError=A(z) {0} f\u00e1jlt nem siker\u00fclt \u00e1tnevezni\! fireworkColor=\u00a74Nem val\u00f3s param\u00e9rtert adt\u00e1l meg a t\u00f6ltetnek, el\u0151sz\u00f6r a sz\u00edn kell. -fireworkEffectsCleared=\u00a76Az \u00f6sszes effekt elt\u00e1vol\u00edtva. +fireworkEffectsCleared=\u00a76Az \u00f6sszes hat\u00e1s elt\u00e1vol\u00edtva. fireworkSyntax=\u00a76T\u00fczij\u00e1t\u00e9k param\u00e9terek\:\u00a7c color\: [fade\:] [shape\:] [effect\:]\n\u00a76Ahhoz, hogy t\u00f6bb adatot adj meg, vessz\u0151vel kell elv\u00e1lasztanod. pl\: \u00a7cred,blue,pink\n\u00a76Alakzatok\:\u00a7c star, ball, large, creeper, burst \u00a76Effektek\:\u00a7c trail, twinkle. flying=rep\u00fcl flyMode=\u00a76Rep\u00fcl\u0151 m\u00f3d\u00a7c {0} \u00a76{1} \u00a76j\u00e1t\u00e9kosnak. @@ -142,249 +143,259 @@ gameModeInvalid=\u00a74Meg kell adnod egy \u00e9rv\u00e9nyes j\u00e1t\u00e9kost/ gcfree=\u00a76Szabad mem\u00f3ria\:\u00a7c {0} MB. gcmax=\u00a76Maximum mem\u00f3ria\:\u00a7c {0} MB. gctotal=\u00a76Lefoglalt mem\u00f3ria\:\u00a7c {0} MB. -gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 chunk, \u00a7c{3}\u00a76 entit\u00e1s, \u00a7c{4}\u00a76 blokkok. +gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 darab, \u00a7c{3}\u00a76 entit\u00e1s, \u00a7c{4}\u00a76 blokk. geoipJoinFormat=\u00a7c{0} \u00a76\u00a7c{1}\u00a76-b\u00f3l/b\u0151l csatlakozott. geoIpUrlEmpty=GeoIP let\u00f6lt\u00e9si URL hi\u00e1nyzik. geoIpUrlInvalid=GeoIP let\u00f6lt\u00e9si URL \u00e9rv\u00e9nytelen. givenSkull=\u00a76Megkaptad \u00a7c{0}\u00a76 fej\u00e9t. giveSpawn=\u00a7c{0} \u00a76darab\u00a7c {1} adva\u00a7c {2}\u00a76 j\u00e1t\u00e9kosnak. -giveSpawnFailure=\u00a74Not enough space, \u00a7c{0} \u00a7c{1} \u00a74was lost. -godDisabledFor=\u00a7cletiltva\u00a76\u00a7c {0}\u00a76-nak/nek -godEnabledFor=\u00a74enged\u00e9lyezve\u00a7c {0}\u00a76-nak/nek +giveSpawnFailure=\u00a74Nincs el\u00e9g hely, \u00a7c{0} \u00a7c{1} \u00a74elveszett. +godDisabledFor=\u00a7cletiltva\u00a76\u00a7c {0}\u00a76-nak/-nek +godEnabledFor=\u00a74enged\u00e9lyezve\u00a7c {0}\u00a76-nak/-nek godMode=\u00a76Isten m\u00f3d\u00a7c {0}\u00a76. groupDoesNotExist=\u00a74Ebb\u0151l a csapatb\u00f3l senki sincs fent. groupNumber=\u00a7c{0}\u00a7f van fent, teljes lista\:\u00a7c /{1} {2} hatArmor=\u00a74Ezt nem veheted fel kalapk\u00e9nt\! hatEmpty=\u00a74Nem viselsz kalapot. -hatFail=\u00a74Nincs semmi a kezedben amit felvehetn\u00e9l. +hatFail=\u00a74Nincs semmi a kezedben, amit felvehetn\u00e9l. hatPlaced=\u00a76\u00c9lvezd az \u00faj kalapod\! hatRemoved=\u00a76Kalapod elt\u00e1vol\u00edtva. haveBeenReleased=\u00a76Ki engedtek a b\u00f6rt\u00f6nb\u0151l. heal=\u00a76\u00c9leted felt\u00f6ltve. -healDead=\u00a74Nem t\u00f6lthed fel olyannak az \u00e9let\u00e9t aki halott\! +healDead=\u00a74Nem t\u00f6lthed fel olyannak az \u00e9let\u00e9t, aki halott\! healOther=\u00a7c{0}\u00a76 \u00e9lete felt\u00f6ltve. -helpConsole=Hogy seg\u00edts\u00e9get k\u00e9rj konzolb\u00f3l, \u00edrd be\: ?. +helpConsole=Hogy seg\u00edts\u00e9get k\u00e9rj a konzolb\u00f3l, \u00edrd be\: ?. helpFrom=\u00a76Parancsok {0}-b\u00f3l/b\u0151l\: helpLine=\u00a76/{0}\u00a7r\: {1} helpMatching=\u00a76Egyez\u0151 parancsok "\u00a7c{0}\u00a76"\: helpOp=\u00a74[Seg\u00edts\u00e9g]\u00a7r \u00a76{0}\:\u00a7r {1} helpPlugin=\u00a74{0}\u00a7r\: Plugin seg\u00edts\u00e9g\: /help {1} holdBook=\u00a74Nincs a kezedben \u00edrhat\u00f3 k\u00f6nyv. -holdFirework=\u00a74A kezedben kell tartanod a t\u00fczij\u00e1t\u00e9kot, hogy hozz\u00e1add az effekteket. -holdPotion=\u00a74Egy b\u00e1jitalt kell a kezedben tartanod, hogy effekteket adhass hozz\u00e1. +holdFirework=\u00a74A kezedben kell tartanod a t\u00fczij\u00e1t\u00e9kot, hogy hozz\u00e1add a hat\u00e1st. +holdPotion=\u00a74Egy b\u00e1jitalt kell a kezedben tartanod, hogy hat\u00e1st adhass hozz\u00e1. holeInFloor=\u00a74Lyuk a padl\u00f3ban\! homes=\u00a76Otthonok\:\u00a7r {0} -homeSet=\u00a76Otthon be\u00e1ll\u00edtva. +homeSet=\u00a76Az otthon be\u00e1ll\u00edtva. hour=\u00f3ra hours=\u00f3ra ignoredList=\u00a76Mell\u0151zve\:\u00a7r {0} ignoreExempt=\u00a74Nem hagyhatod figyelmen k\u00edv\u0171l ezt a j\u00e1t\u00e9kost. -ignorePlayer=\u00a76You ignore player\u00a7c {0} \u00a76from now on. -illegalDate=Illegal date format. +ignorePlayer=\u00a76Figyelmen k\u00edv\u0171l hagytad\u00a7c {0} \u00a76mostant\u00f3l. +illegalDate=Illeg\u00e1lis d\u00e1tumform\u00e1tum. infoChapter=\u00a76V\u00e1lassz fejezetet\: infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 Oldal \u00a7c{1}\u00a76 \u00a7c{2}-b\u00f3l/b\u0151l \u00a7e---- infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Oldal \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e---- infoUnknownChapter=\u00a74Ismeretlen fejezet. -insufficientFunds=\u00a74Insufficient funds available. -invalidBanner=\u00a74Invalid banner syntax. -invalidCharge=\u00a74Invalid charge. -invalidFireworkFormat=\u00a76Ez az opci\u00f3\: \u00a74{0} \u00a76nem \u00e9rv\u00e9nyes \u00a74{1}\u00a76-ra/re. -invalidHome=\u00a74Home\u00a7c {0} \u00a74doesn''t exist\! -invalidHomeName=\u00a74Invalid home name\! -invalidMob=\u00a74Hat\u00e1rozatlan mob t\u00edpus -invalidNumber=Invalid Number. -invalidPotion=\u00a74Invalid Potion. -invalidPotionMeta=\u00a74Invalid potion meta\: \u00a7c{0}\u00a74. -invalidSignLine=\u00a74Line\u00a7c {0} \u00a74on sign is invalid. -invalidSkull=\u00a74K\u00e9rlek j\u00e1t\u00e9kos fejet tarts a kezedben. +insufficientFunds=\u00a74Nem \u00e1ll rendelkez\u00e9sre elegend\u0151 forr\u00e1s. +invalidBanner=\u00a74\u00c9rv\u00e9nytelen banner szintaxis. +invalidCharge=\u00a74\u00c9rv\u00e9nytelen d\u00edj. +invalidFireworkFormat=\u00a76Ez az opci\u00f3\: \u00a74{0} \u00a76nem \u00e9rv\u00e9nyes \u00a74{1}\u00a76-ra/-re. +invalidHome=\u00a74Otthon\u00a7c {0} \u00a74nem l\u00e9tezik\! +invalidHomeName=\u00a74\u00c9rv\u00e9nytelen otthon n\u00e9v\! +invalidItemFlagMeta=\u00a74\u00c9rv\u00e9nytelen elem z\u00e1szl\u00f3 meta\: \u00a7c{0}\u00a74. +invalidMob=\u00a74Hat\u00e1rozatlan l\u00e9ny t\u00edpus. +invalidNumber=\u00c9rv\u00e9nytelen sz\u00e1m. +invalidPotion=\u00a74\u00c9rv\u00e9nytelen f\u0151zet. +invalidPotionMeta=\u00a74\u00c9rv\u00e9nytelen f\u0151zet meta\: \u00a7c{0}\u00a74. +invalidSignLine=\u00a74Sor\u00a7c {0} \u00a74a t\u00e1bl\u00e1n \u00e9rv\u00e9nytelen. +invalidSkull=\u00a74K\u00e9rlek, j\u00e1t\u00e9kos fejet tarts a kezedben. invalidWarpName=\u00a74Nincs ilyen warp\! -invalidWorld=\u00a74Invalid world. -inventoryClearFail=\u00a74{0}-nak/nek nincs \u00a7c{1} \u00a74db \u00a7c{2}\u00a74-ja/je. -inventoryClearingAllArmor=\u00a76Az \u00f6sszes cucc \u00e9s felszerel\u00e9s t\u00f6r\u00f6lve lett {0}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l. +invalidWorld=\u00a74\u00c9rv\u00e9nytelen vil\u00e1g. +inventoryClearFail=\u00a74{0}-nak/-nek nincs \u00a7c{1} \u00a74db \u00a7c{2}\u00a74-ja/-je. +inventoryClearingAllArmor=\u00a76Az \u00f6sszes dolog \u00e9s felszerel\u00e9s t\u00f6r\u00f6lve lett {0}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l. inventoryClearingAllItems=\u00a76Az \u00f6sszes dolog t\u00f6r\u00f6lve lett {0} \u00a76eszk\u00f6zt\u00e1r\u00e1b\u00f3l. inventoryClearingAllStack=\u00a76T\u00f6r\u00f6lve minden \u00a7c{0} {1}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l. -inventoryClearingFromAll=\u00a76\u00d6sszes ember eszk\u00f6zt\u00e1r\u00e1nak \u00fcr\u00edt\u00e9se... +inventoryClearingFromAll=\u00a76\u00d6sszes j\u00e1t\u00e9kos eszk\u00f6zt\u00e1r\u00e1nak \u00fcr\u00edt\u00e9se... inventoryClearingStack=\u00a76Elt\u00e1vol\u00edtva \u00a7c{0} \u00a76db \u00a7c{1} \u00a76{2}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l. -is=is -isIpBanned=\u00a76IP \u00a7c{0} \u00a76m\u00e1r ki van bannolva. +is=van +isIpBanned=\u00a76IP \u00a7c{0} \u00a76m\u00e1r ki van tiltva. +internalError=\u00a7cBels\u00f5 hiba t\u00f6rt\u00e9nt a parancs v\u00e9grehajt\u00e1sa k\u00f6zben. itemCannotBeSold=\u00a74Ezt nem adhatod el a szerveren. -itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc. +itemId=\u00a76ID\:\u00a7c {0} +itemMustBeStacked=\u00a74A t\u00e1rgyat k\u00f6tegben kell \u00e9rt\u00e9kes\u00edteni. A 2s mennyis\u00e9ge k\u00e9t stack lenne, stb. itemNames=\u00a76T\u00e1rgy r\u00f6vid nevei\:\u00a7r {0} itemNotEnough1=\u00a74Nincs el\u00e9g eladni val\u00f3 t\u00e1rgyad. -itemNotEnough2=\u00a76Ha elakarod adni az \u00f6sszes ilyen t\u00e1rgyat \u00edrd be /sell t\u00e1rgyn\u00e9v. -itemNotEnough3=\u00a76/sell itemname -1 will sell all but one item, etc. -itemsConverted=\u00a76Converted all items into blocks. -itemsCsvNotLoaded=Could not load items.csv\! -itemSellAir=T\u00e9nyleg elakartad adni a Leveg\u00f5t? Vegy\u00e9l a kezedbe valami t\u00e1rgyat. -itemsNotConverted=\u00a74You have no items that can be converted into blocks. -itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each). -itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each). +itemNotEnough2=\u00a76Ha el szeretn\u00e9d adni az \u00f6sszes ilyen t\u00e1rgyat, \u00edrd be a /sell parancsot. +itemNotEnough3=\u00a76/sell itemname -1 mindet elad, de csak egy elemet, stb. +itemsConverted=\u00a76\u00c1talak\u00edtva minden elemet blokkokk\u00e1. +itemsCsvNotLoaded=Nem siker\u00fclt bet\u00f6lteni az items.csv\! +itemSellAir=T\u00e9nyleg el akartad adni a leveg\u0151t? Vegy\u00e9l a kezedbe valami t\u00e1rgyat. +itemsNotConverted=\u00a74Nincs olyan elem, amely blokk\u00e1 alak\u00edthat\u00f3. +itemSold=\u00a7aEladva \u00a7c{0} \u00a7a({1} {2} {3} minden). +itemSoldConsole=\u00a7a{0} \u00a7aeladva {1} \u00a7a{2} \u00a7a({3} elem {4} minden). itemSpawn=\u00a76Lek\u00e9rt\u00e9l\u00a7c {0} \u00a76db \u00a7c {1}-t -itemType=\u00a76T\u00e1rgy\:\u00a7c {0} \u00a76-\u00a7c {1} -jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0} -jailMessage=\u00a74You do the crime, you do the time. +itemType=\u00a76T\u00e1rgy\:\u00a7c {0} +jailAlreadyIncarcerated=\u00a74A szem\u00e9ly m\u00e1r b\u00f6rt\u00f6nben van\:\u00a7c {0} +jailList=\u00a76B\u00f6rt\u00f6n\u00f6k\:\u00a7r {0} +jailMessage=\u00a74A b\u0171ncselekm\u00e9nyt megteszed, akkor itt az id\u0151. jailNotExist=\u00a74Nincs ilyen b\u00f6rt\u00f6n. -jailReleased=\u00a7c{0}\u00a76 kiengedve a b\u00f6rt\u00f6nb\u00f5l. +jailReleased=\u00a7c{0}\u00a76 kiengedve a b\u00f6rt\u00f6nb\u0151l. jailReleasedPlayerNotify=\u00a76Kiengedtek a b\u00f6rt\u00f6nb\u0151l\! jailSentenceExtended=\u00a76B\u00f6rt\u00f6n ideje mostant\u00f3l\: {0} jailSet=\u00a7c{0} \u00a76 b\u00f6rt\u00f6n be\u00e1ll\u00edtva. -jumpError=\u00a74That would hurt your computer''s brain. +jumpError=\u00a74Ez b\u00e1ntani fogja a sz\u00e1m\u00edt\u00f3g\u00e9p agy\u00e1t. kickDefault=Ki lett\u00e9l kickelve. -kickedAll=\u00a74\u00d6sszes j\u00e1t\u00e9kos kickelve a szerverr\u00f5l. -kickExempt=\u00a74\u00d5t nem kickelheted. +kickedAll=\u00a74\u00d6sszes j\u00e1t\u00e9kos kickelve a szerverr\u0151l. +kickExempt=\u00a74\u0151t nem kickelheted. kill=\u00a7c{0}\u00a76 meg\u00f6lve. killExempt=\u00a74Nem \u00f6lheted meg \u00a7c{0}\u00a74-t. -kitContains=\u00a76Kit \u00a7c{0} \u00a76contains: +kitContains=\u00a76A(z) \u00a7c{0} \u00a76csomag tartalmaz: kitCost=\ \u00a77\u00a7o({0})\u00a7r kitDelay=\u00a7m{0}\u00a7r -kitError=\u00a74There are no valid kits. -kitError2=\u00a74That kit is improperly defined. Contact an administrator. -kitGiveTo=\u00a76A(z)\u00a7c {0}\u00a76 csomag lek\u00e9rve \u00a7c{1}\u00a76-nak/nek. -kitInvFull=\u00a74Az eszk\u00f6zt\u00e1rad televan, \u00edgy a f\u00f6ldre kapod meg a csomagot. +kitError=\u00a74Nincs el\u00e9rhet\u0151 csomag. +kitError2=\u00a74Ez a csomag nem megfelel\u0151. L\u00e9pj kapcsolatba egy adminisztr\u00e1torral. +kitGiveTo=\u00a76A(z)\u00a7c {0}\u00a76 csomag lek\u00e9rve \u00a7c{1}\u00a76-nak/-nek. +kitInvFull=\u00a74Az eszk\u00f6zt\u00e1rad megtelt, \u00edgy a f\u00f6ldre kapod meg a csomagot. kitItem=\u00a76- \u00a7f{0} kitNotFound=\u00a74Nincs ilyen csomag. -kitOnce=\u00a74You can''t use that kit again. +kitOnce=\u00a74Nem tudod \u00fajra haszn\u00e1lni a csomagot. kitReceive=\u00a76Megkaptad a(z)\u00a7c {0}\u00a76 csomagot. kits=\u00a76Csomagok\:\u00a7r {0} kitTimed=\u00a74Ezt a csomagot nem haszn\u00e1hatod m\u00e9g\u00a7c {0}\u00a74-ig. -leatherSyntax=\u00a76Leather Color Syntax\: color\:,, eg\: color\:255,0,0. +leatherSyntax=\u00a76B\u0151rsz\u00edn szintaxis\: color\:,, pl\: color\:255,0,0. lightningSmited=\u00a76A vill\u00e1m les\u00fajtott r\u00e1d\! -lightningUse=\u00a76Vill\u00e1m lesujt\u00e1sa\u00a7c {0}\u00a76-ra/re +lightningUse=\u00a76Vill\u00e1m lesujt\u00e1sa\u00a7c {0}\u00a76-ra/re. listAfkTag=\u00a77[AFK]\u00a7r listAmount=\u00a76Jelenleg \u00a7c{0}\u00a76 j\u00e1t\u00e9kos van fent a maxim\u00e1lis \u00a7c{1}\u00a76 j\u00e1t\u00e9kosb\u00f3l. listAmountHidden=\u00a76Jelenleg \u00a7c{0}\u00a76/{1}\u00a76 j\u00e1t\u00e9kos van fent a maxim\u00e1lis \u00a7c{2}\u00a76 j\u00e1t\u00e9kosb\u00f3l. -listGroupTag={0}\u00a7r\: +listGroupTag={0}\u00a7r\: listHiddenTag=\u00a77[REJTETT]\u00a7r -loadWarpError=\u00a74Failed to load warp {0}. -localFormat=[L]<{0}> {1} +loadWarpError=\u00a74Nem siker\u00fclt a warp bet\u00f6lt\u00e9se {0}. +localFormat=[H]<{0}> {1} localNoOne= -mailClear=\u00a76Hogy megjel\u00f6ld olvasottk\u00e9nt \u00edrd be a\u00a7c /mail clear \u00a76parancsot. +mailClear=\u00a76Hogy t\u00f6r\u00f6ld az \u00fczenetet, \u00edrd be a\u00a7c /mail clear \u00a76parancsot. mailCleared=\u00a76\u00dczenetek t\u00f6r\u00f6lve\! mailDelay=T\u00fal sok lev\u00e9l lett elk\u00fcldve az utols\u00f3 percben. Maximum\: {0} mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} mailMessage={0} mailSent=\u00a76Lev\u00e9l elk\u00fcldve\! -mailSentTo=\u00a7c{0}\u00a76 has been sent the following mail\: +mailSentTo=\u00a7c{0}\u00a76 elk\u00fcldt\u00fck a k\u00f6vetkez\u0151 levelet\: mailTooLong=\u00a74Az \u00fczeneted t\u00fal hossz\u00fa. Pr\u00f3b\u00e1ld 1000 karakter alatt. -markedAsAway=\u00a76You are now marked as away. -markedAsNotAway=\u00a76You are no longer marked as away. -markMailAsRead=\u00a76Hogy megjel\u00f6ld olvasottk\u00e9nt \u00edrd be a\u00a7c /mail clear \u00a76parancsot. +markedAsAway=\u00a76M\u00e1r kijel\u00f6lted, mint t\u00e1vol. +markedAsNotAway=\u00a76M\u00e1r nem jel\u00f6lted ki. +markMailAsRead=\u00a76Hogy t\u00f6r\u00f6ld az \u00fczenetet, \u00edrd be a\u00a7c /mail clear \u00a76parancsot. matchingIPAddress=\u00a76Az al\u00e1bbi j\u00e1t\u00e9kosok csatlakoztak utolj\u00e1ra err\u0151l az IP c\u00edmr\u0151l\: -maxHomes=\u00a74You cannot set more than\u00a7c {0} \u00a74homes. +maxHomes=\u00a74Nem \u00e1ll\u00edthatsz be t\u00f6bb\u00a7c {0} \u00a74otthont. maxMoney=\u00a74Ez a tranzakci\u00f3 meghaladja a be\u00e1ll\u00edtott maxim\u00e1lis tranzakci\u00f3 hat\u00e1r\u00e9rt\u00e9k\u00e9t. -mayNotJail=\u00a74\u00d5t nem rakhatod b\u00f6rt\u00f6nbe\! +mayNotJail=\u00a74\u0151t nem teheted b\u00f6rt\u00f6nbe\! mayNotJailOffline=\u00a74Nem b\u00f6rt\u00f6n\u00f6zhetsz be Offline j\u00e1t\u00e9kost. me=\u00e9n -minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}. +minimumPayAmount=\u00a7cA minim\u00e1lis \u00f6sszeg, amit fizethetsz, {0}. minute=perc minutes=perc missingItems=\u00a74Nincs \u00a7c{0} db {1}\u00a74-od. mobDataList=\u00a76\u00c9rv\u00e9nyes adatok\:\u00a7r {0} -mobsAvailable=\u00a76Mobok\:\u00a7r {0} -mobSpawnError=\u00a74Error while changing mob spawner. -mobSpawnLimit=Mob quantity limited to server limit. -mobSpawnTarget=\u00a74Target block must be a mob spawner. -moneyRecievedFrom=\u00a7a{0}-t kapt\u00e1l {1}\u00a7a-t\u00f3l/t\u00f5l. -moneySentTo=\u00a7a{0}-t k\u00fcldt\u00e9l {1}\u00a7a-nak/nek. +mobsAvailable=\u00a76Enit\u00e1sok\:\u00a7r {0} +mobSpawnError=\u00a74Hiba az entit\u00e1s-id\u00e9z\u0151 megv\u00e1ltoztat\u00e1sa k\u00f6zben. +mobSpawnLimit=A kiszolg\u00e1l\u00f3i limitre korl\u00e1tozott entit\u00e1s mennyis\u00e9g meghaladva. +mobSpawnTarget=\u00a74A c\u00e9lblokknak entit\u00e1s id\u00e9z\u0151nek kell lennie. +moneyRecievedFrom=\u00a7a{0}-t kapt\u00e1l {1}\u00a7a-t\u00f3l/t\u0151l. +moneySentTo=\u00a7a{0}-t k\u00fcldt\u00e9l {1}\u00a7a-nak/-nek. month=h\u00f3nap months=h\u00f3nap -moreThanZero=\u00a74Quantities must be greater than 0. -moveSpeed=\u00a76Sebess\u00e9g tipus\: {0}, Sebess\u00e9g\:\u00a7c {1}\u00a76-re/ra {2}\u00a76-nak/nek. -msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76. -msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. -msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76. -msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. +moreThanZero=\u00a74A mennyis\u00e9geknek 0-n\u00e1l nagyobbnak kell lenni\u00fck. +moveSpeed=\u00a76Sebess\u00e9g t\u00edpus\: {0}, Sebess\u00e9g\:\u00a7c {1}\u00a76-ra/-re {2}\u00a76-nak/-nek. +msgDisabled=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cletiltva\u00a76. +msgDisabledFor=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cletiltva \u00a76 \u00a7c{0}\u00a76. +msgEnabled=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cenged\u00e9lyezve\u00a76. +msgEnabledFor=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cenged\u00e9lyezve \u00a76 \u00a7c{0}\u00a76. msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} -msgIgnore=\u00a7c{0} \u00a74has messages disabled. +msgIgnore=\u00a7c{0} \u00a74az \u00fczenetek letiltva. multipleCharges=\u00a74Nem alkalmazhatsz t\u00f6bb t\u00f6ltetet enn\u00e9l a t\u00fczij\u00e1t\u00e9kn\u00e1l. -multiplePotionEffects=\u00a74You cannot apply more than one effect to this potion. +multiplePotionEffects=\u00a74Ezzel a b\u00e1jitallal t\u00f6bb hat\u00e1s nem alkalmazhat\u00f3. mutedPlayer=\u00a76\u00a7c{0} \u00a76len\u00e9m\u00edtva. -mutedPlayerFor=\u00a76\u00a7c{0} \u00a76len\u00e9m\u00edtva\u00a7c {1}\u00a76-ra/re. +mutedPlayerFor=\u00a76\u00a7c{0} \u00a76len\u00e9m\u00edtva\u00a7c {1}\u00a76-ra/-re. mutedPlayerForReason=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76. \u00a76Reason: \u00a7c{2} mutedPlayerReason=\u00a76Player\u00a7c {0} \u00a76muted. \u00a76Reason: \u00a7c{1} -mutedUserSpeaks={0} tried to speak, but is muted. -muteExempt=\u00a74Nem n\u00e9m\u00edthatod \u00f5t. +mutedUserSpeaks={0} megpr\u00f3b\u00e1lt besz\u00e9lni, de eln\u00e9m\u00edtva: {1} +muteExempt=\u00a74Nem n\u00e9m\u00edthatod \u0151t. muteExemptOffline=\u00a74Nem n\u00e9m\u00edthatsz le Offline j\u00e1t\u00e9kost. muteNotify=\u00a7c{0} \u00a76len\u00e9m\u00edtotta \u00a7c{1}\u00a76-t. -muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. +muteNotifyFor=\u00a7c{0} \u00a76j\u00e1t\u00e9kos eln\u00e9m\u00edtva \u00a7c{1}\u00a76 \u00a7c {2}\u00a76. muteNotifyForReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. \u00a76Reason: \u00a7c{3} muteNotifyReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. \u00a76Reason: \u00a7c{2} nearbyPlayers=\u00a76J\u00e1t\u00e9kosok k\u00f6zelbe\:\u00a7r {0} -negativeBalanceError=\u00a74User is not allowed to have a negative balance. -nickChanged=\u00a76Nick megv\u00e1ltoztatva. -nickDisplayName=\u00a74You have to enable change-displayname in Essentials config. +negativeBalanceError=\u00a74A felhaszn\u00e1l\u00f3 nem jogosult negat\u00edv egyenlegre. +nickChanged=\u00a76A becen\u00e9v megv\u00e1ltoztatva. +nickDisplayName=\u00a74Enged\u00e9lyezned kell a change-displayname az Essentials konfigur\u00e1ci\u00f3ban. nickInUse=\u00a74Ez a n\u00e9v m\u00e1r haszn\u00e1ltban van. -nickNamesAlpha=\u00a74Nicknames must be alphanumeric. -nickNoMore=\u00a76Nincs t\u00f6bb\u00e9 nicked. -nickSet=\u00a76A nicked mostant\u00f3l\: \u00a7c{0}. -nickTooLong=\u00a76Ez a Nickn\u00e9v t\u00fal hossz\u00fa. -noAccessCommand=\u00a74Nincs jogod ehhez\!. +nickNamesAlpha=\u00a74A becenevek alfanumerikus karakterekb\u0151l kell, hogy \u00e1lljanak. +nickNamesOnlyColorChanges=\u00a74A beceneveknek csak a sz\u00edneik v\u00e1ltoznak. +nickNoMore=\u00a76Nincs t\u00f6bb\u00e9 beceneved. +nickSet=\u00a76A beceneved mostant\u00f3l\: \u00a7c{0}. +nickTooLong=\u00a76Ez a becen\u00e9v t\u00fal hossz\u00fa. +noAccessCommand=\u00a74Nincs jogod ehhez\! noAccessPermission=\u00a74Nincs jogod a k\u00f6vetkez\u0151h\u00f6z\: \u00a7c{0}\u00a74. -noBreakBedrock=\u00a74You are not allowed to destroy bedrock. +noBreakBedrock=\u00a74Nincs enged\u00e9lyed kit\u00f6rni az alapk\u0151t. noDestroyPermission=\u00a74Nincs jogod, hogy ki\u00fcsd ezt\: \u00a7c{0}\u00a74. -noDurability=\u00a74This item does not have a durability. -noGodWorldWarning=\u00a74Vigy\u00e1zat\! Az Isten m\u00f3d ebben a vil\u00e1gba le van tiltva\! -noHelpFound=\u00a74No matching commands. -noHomeSetPlayer=\u00a76Player has not set a home. +noDurability=\u00a74Ez az elem nem rendelkezik tart\u00f3ss\u00e1ggal. +northEast=\u00c9K +north=\u00c9 +northWest=\u00c9NY +noGodWorldWarning=\u00a74Vigy\u00e1zat\! Az Isten m\u00f3d ebben a vil\u00e1gban le van tiltva\! +noHelpFound=\u00a74Nincsenek megfelel\u0151 parancsok. +noHomeSetPlayer=\u00a76A j\u00e1t\u00e9kos nem \u00e1ll\u00edtott be otthont. noIgnored=\u00a76Nem hagysz figyelmen k\u00edv\u00fcl senkit. +noJailsDefined=\u00a76Nincsenek b\u00f6rt\u00f6n\u00f6k. noKitGroup=\u00a74Nincs jogod ehhez a csomaghoz. -noKitPermission=\u00a74You need the \u00a7c{0}\u00a74 permission to use that kit. -noKits=\u00a76There are no kits available yet. +noKitPermission=\u00a74Sz\u00fcks\u00e9ged van enged\u00e9lyre \u00a7c{0}\u00a74 a csomag haszn\u00e1lat\u00e1ra. +noKits=\u00a76M\u00e9g nincsenek csomagok. noLocationFound=\u00a74Nincs ilyen \u00e9rv\u00e9nyes hely. noMail=\u00a76Nincs leveled. -noMatchingPlayers=\u00a76No matching players found. +noMatchingPlayers=\u00a76Nincs megfelel\u0151 j\u00e1t\u00e9kos. noMetaFirework=\u00a74Nincs jogod, hogy alkalmazd ezt a t\u00fczij\u00e1t\u00e9k adatot. -noMetaJson=JSON Metadata nem t\u00e1mogatott a Bukkit ezen verzi\u00f3j\u00e1ban. -noMetaPerm=\u00a74You do not have permission to apply \u00a7c{0}\u00a74 meta to this item. -none=none +noMetaJson=A JSON Metadata nem t\u00e1mogatott a Bukkit ezen verzi\u00f3j\u00e1ban. +noMetaPerm=\u00a74Nincs jogod a jelentkez\u00e9shez \u00a7c{0}\u00a74 meta erre az elemre. +none=senki noNewMail=\u00a76Nincs \u00faj leveled. -noPendingRequest=\u00a74You do not have a pending request. -noPerm=\u00a74You do not have the \u00a7c{0}\u00a74 permission. +noPendingRequest=\u00a74Nincs folyamatban l\u00e9v\u0151 k\u00e9relmed. +noPerm=\u00a74Nincs \u00a7c{0}\u00a74 jog. noPermissionSkull=\u00a74Nincs jogod megv\u00e1ltoztatni ezt a fejet. -noPermToAFKMessage=\u00a74You don''t have permission to set an AFK message. -noPermToSpawnMob=\u00a74You don''t have permission to spawn this mob. -noPlacePermission=\u00a74You do not have permission to place a block near that sign. -noPotionEffectPerm=\u00a74You do not have permission to apply potion effect \u00a7c{0} \u00a74to this potion. -noPowerTools=\u00a76You have no power tools assigned. -notAcceptingPay=\u00a74{0} \u00a74is not accepting payment. -notAllowedToQuestion=\u00a74You are not authorized to use question. -notAllowedToShout=\u00a74You are not authorized to shout. -notEnoughExperience=\u00a74You do not have enough experience. +noPermToAFKMessage=\u00a74Nincs jogod AFK \u00fczenet be\u00e1ll\u00edt\u00e1s\u00e1ra. +noPermToSpawnMob=\u00a74Nincs jogod leid\u00e9zni ezt a l\u00e9nyt. +noPlacePermission=\u00a74Nincs jogod egy blokknak a t\u00e1bla melletti elhelyez\u00e9s\u00e9re. +noPotionEffectPerm=\u00a74Nincs jogod a f\u0151zethat\u00e1s alkalmaz\u00e1s\u00e1ra \u00a7c{0} \u00a74enn\u00e9l a f\u0151zetn\u00e9l. +noPowerTools=\u00a76Nincsenek hozz\u00e1rendelve elektromos szersz\u00e1mok. +notAcceptingPay=\u00a74{0} \u00a74nem fogad el fizet\u00e9st. +notAllowedToQuestion=\u00a74Nem vagy jogosult a k\u00e9rd\u00e9s haszn\u00e1lat\u00e1ra. +notAllowedToShout=\u00a74Nincs jogod k\u00f6zvet\u00edteni. +notEnoughExperience=\u00a74Nincs el\u00e9g tapasztalatod. notEnoughMoney=\u00a74Erre nincs p\u00e9nzed. notFlying=nem rep\u00fcl nothingInHand=\u00a74Nincs semmi a kezedben. -notRecommendedBukkit=\u00a74* \! * Bukkit version is not the recommended build for Essentials. -notSupportedYet=Not supported yet. +notRecommendedBukkit=\u00a74* \! * A Bukkit verzi\u00f3 nem az Essentials aj\u00e1nlott \u00e9p\u00edt\u00e9se. +notSupportedYet=M\u00e9g nem t\u00e1mogatott. now=most noWarpsDefined=\u00a76Nincs m\u00e9g egy warp se. -nuke=\u00a75May death rain upon them. -numberRequired=A number goes there, silly. -onlyDayNight=/time only supports day/night. +nuke=\u00a75Lehet hal\u00e1l esni r\u00e1juk. +numberRequired=Egy sz\u00e1m van ott, buta. +onlyDayNight=/az id\u0151 csak day/night t\u00e1mogat. onlyPlayers=\u00a74Csak j\u00e1t\u00e9kon bel\u00fcl haszn\u00e1lhat\u00f3 a \u00a7c{0}\u00a74 parancs. onlyPlayerSkulls=\u00a74Csak j\u00e1t\u00e9kos fejnek tudod be\u00e1ll\u00edtani a tulajdonos\u00e1t (\u00a7c397\:3\u00a74). -onlySunStorm=\u00a74/weather only supports sun/storm. -orderBalances=\u00a76Egyenlegek \u00f6sszegy\u00fcjt\u00e9se\u00a7c {0} \u00a76j\u00e1t\u00e9kost\u00f3l, k\u00e9rlek v\u00e1rj... -oversizedTempban=\u00a74You may not ban a player for this period of time. -payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. -payConfirmToggleOn=\u00a76You will now be prompted to confirm payments. -payMustBePositive=\u00a74Amount to pay must be positive. -payToggleOff=\u00a76You are no longer accepting payments. -payToggleOn=\u00a76You are now accepting payments. +onlySunStorm=\u00a74/az id\u0151j\u00e1r\u00e1s csak a sun/storm t\u00e1mogatja. +openingDisposal=\u00a76Kezel\u00e9si men\u00fc megnyit\u00e1sa... +orderBalances=\u00a76Egyenlegek \u00f6sszegy\u00fcjt\u00e9se\u00a7c {0} \u00a76j\u00e1t\u00e9kost\u00f3l, k\u00e9rlek, v\u00e1rj... +oversizedTempban=\u00a74Nem tilthatsz ki egy j\u00e1t\u00e9kost erre az id\u0151re. +payConfirmToggleOff=\u00a76A tov\u00e1bbiakban nem k\u00e9rik a kifizet\u00e9sek meger\u0151s\u00edt\u00e9s\u00e9t. +payConfirmToggleOn=\u00a76Most a kifizet\u00e9sek meger\u0151s\u00edt\u00e9s\u00e9t k\u00e9ri. +payMustBePositive=\u00a74A fizetend\u0151 \u00f6sszegnek pozit\u00edvnak kell lennie. +payToggleOff=\u00a76M\u00e1r nem fogadod el a kifizet\u00e9seket. +payToggleOn=\u00a76Most elfogadod a kifizet\u00e9seket. pendingTeleportCancelled=\u00a74Folyamatban l\u00e9v\u0151 teleport\u00e1l\u00e1s megszak\u00edtva. -playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76. +playerBanIpAddress=\u00a76A j\u00e1t\u00e9kos\u00a7c {0} \u00a76IP-re tiltva\u00a7c {1} \u00a76\: \u00a7c{2}\u00a76. playerBanned=\u00a7c{0} \u00a76kitiltotta\u00a7c {1}\u00a76-t Indok\: \u00a7c{2}\u00a76. playerInJail=\u00a74M\u00e1r bent van a(z)\u00a7c {0}\u00a74 b\u00f6rt\u00f6nbe. playerJailed=\u00a76\u00a7c{0} \u00a76beb\u00f6tr\u00f6n\u00f6zve. -playerJailedFor=\u00a76\u00a7c{0} \u00a76beb\u00f6rt\u00f6n\u00f6zve {1}-re/ra. +playerJailedFor=\u00a76\u00a7c{0} \u00a76beb\u00f6rt\u00f6n\u00f6zve {1}-ra/-re. playerKicked=\u00a7c{0} \u00a76 kickelte {1}-t. Indok\: {2}. -playerMuted=\u00a76Ellett\u00e9l n\u00e9m\u00edtva\! -playerMutedFor=\u00a76Le lett\u00e9l n\u00e9m\u00edtva\u00a7c {0}-ra/re. +playerMuted=\u00a76El lett\u00e9l n\u00e9m\u00edtva\! +playerMutedFor=\u00a76Le lett\u00e9l n\u00e9m\u00edtva\u00a7c {0}-ra/-re. playerMutedForReason=\u00a76You have been muted for\u00a7c {0}. \u00a76Reason: \u00a7c{1} playerMutedReason=\u00a76You have been muted\! \u00a76Reason: \u00a7c{0} playerNeverOnServer=\u00a7c{0} \u00a74 m\u00e9g sose j\u00e1rt a szerveren. -playerNotFound=\u00a74Nincs ilyen nev\u00fb j\u00e1t\u00e9kos. -playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. -playerUnbanIpAddress=\u00a76\u00a7c{0} \u00a76feloldotta a k\u00f6vetkez\u00f5 IP c\u00edmet\: {1}. +playerNotFound=\u00a74Nincs ilyen nev\u0171 j\u00e1t\u00e9kos. +playerTempBanned=\u00a76A j\u00e1t\u00e9kos \u00a7c{0}\u00a76 ideiglenesen kitiltva \u00a7c{1}\u00a76 \u00a7c{2}\u00a76-ra/-re: \u00a7c{3}\u00a76. +playerUnbanIpAddress=\u00a76\u00a7c{0} \u00a76feloldotta a k\u00f6vetkez\u0151 IP c\u00edmet\: {1}. playerUnbanned=\u00a76\u00a7c{0} \u00a76feloldotta {1}\u00a76-t. playerUnmuted=\u00a76Fel lett oldva a n\u00e9m\u00edt\u00e1sod. pong=Pong\! @@ -395,218 +406,223 @@ posY=\u00a76Y\: {0} (+Fel <-> -Le) posYaw=\u00a76Fordul\u00e1s\: {0} (Forg\u00e1s) posZ=\u00a76Z\: {0} (+D\u00e9l <-> -\u00c9szak) potions=\u00a76Var\u00e1zsitalok\:\u00a7r {0}\u00a76. -powerToolAir=\u00a74Nem csatolhatsz parancsot a leveg\u00f5h\u00f6z. -powerToolAlreadySet=\u00a74A(z)\u00a7c {0}\u00a74 parancs m\u00e1r bevan \u00e1ll\u00edtva \u00a7c{1}\u00a74-hoz/hez. -powerToolAttach=\u00a7c{0}\u00a76 berakva PowerToolnak a(z) {1}-ra/re. +powerToolAir=\u00a74Nem csatolhatsz parancsot leveg\u0151h\u00f6z. +powerToolAlreadySet=\u00a74A(z)\u00a7c {0}\u00a74 parancs m\u00e1r bevan \u00e1ll\u00edtva \u00a7c{1}\u00a74-hoz/-hez. +powerToolAttach=\u00a7c{0}\u00a76 berakva PowerToolnak a(z) {1}-ra/-re. powerToolClearAll=\u00a76\u00d6sszes PowerTool parancs ki\u00fcr\u00edtve. powerToolList=\u00a76\u00a7c{1}\u00a76-n a k\u00f6vetkez\u0151 parancsok vannak\: \u00a7c{0}\u00a76. powerToolListEmpty=\u00a74\u00a7c{0}\u00a74-hoz egy parancs sincs csatolva. -powerToolNoSuchCommandAssigned=\u00a74A(z)\u00a7c {0}\u00a74 parancs nincs be\u00e1ll\u00edtva \u00a7c{1}\u00a74-hoz/hez. -powerToolRemove=\u00a74A(z)\u00a7c {0}\u00a74 parancs lelett szedve \u00a7c{1}\u00a74-r\u00f3l/r\u0151l. -powerToolRemoveAll=\u00a76\u00d6sszes parancs elt\u00e1vol\u00edtva \u00a7c{0}\u00a76-r\u00f3l/r\u0151l. +powerToolNoSuchCommandAssigned=\u00a74A(z)\u00a7c {0}\u00a74 parancs nincs be\u00e1ll\u00edtva \u00a7c{1}\u00a74-hoz/-hez. +powerToolRemove=\u00a74A(z)\u00a7c {0}\u00a74 parancs el lett t\u00e1vol\u00edtva \u00a7c{1}\u00a74-r\u00f3l/-r\u0151l. +powerToolRemoveAll=\u00a76\u00d6sszes parancs elt\u00e1vol\u00edtva \u00a7c{0}\u00a76-r\u00f3l/-r\u0151l. powerToolsDisabled=\u00a76Az \u00f6sszes power tool-os eszk\u00f6z\u00f6d letiltva. powerToolsEnabled=\u00a76Az \u00f6sszes power tool-os eszk\u00f6z\u00f6d enged\u00e9lyezve. -pTimeCurrent=\u00a7c{0}\u00a76''s time is\u00a7c {1}\u00a76. -pTimeCurrentFixed=\u00a7c{0}\u00a76''s time is fixed to\u00a7c {1}\u00a76. -pTimeNormal=\u00a7c{0}\u00a76''s time is normal and matches the server. -pTimeOthersPermission=\u00a74You are not authorized to set other players'' time. -pTimePlayers=\u00a76These players have their own time\:\u00a7r -pTimeReset=\u00a76Player time has been reset for\: \u00a7c{0} -pTimeSet=\u00a76Player time is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. -pTimeSetFixed=\u00a76Player time is fixed to \u00a7c{0}\u00a76 for\: \u00a7c{1}. -pWeatherCurrent=\u00a7c{0}\u00a76''s weather is\u00a7c {1}\u00a76. -pWeatherInvalidAlias=\u00a74Invalid weather type -pWeatherNormal=\u00a7c{0}\u00a76''s weather is normal and matches the server. -pWeatherOthersPermission=\u00a74You are not authorized to set other players'' weather. -pWeatherPlayers=\u00a76These players have their own weather\:\u00a7r -pWeatherReset=\u00a76Player weather has been reset for\: \u00a7c{0} -pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. +pTimeCurrent=\u00a7c{0}\u00a76id\u0151\u00a7c {1}\u00a76. +pTimeCurrentFixed=\u00a7c{0}\u00a76 id\u0151 r\u00f6gz\u00edtve\u00a7c {1}\u00a76. +pTimeNormal=\u00a7c{0}\u00a76 ideje norm\u00e1lis \u00e9s megfelel a kiszolg\u00e1l\u00f3nak. +pTimeOthersPermission=\u00a74Nem vagy jogosult m\u00e1s j\u00e1t\u00e9kosok id\u0151tartam\u00e1ra. +pTimePlayers=\u00a76Ezeknek a j\u00e1t\u00e9kosoknak saj\u00e1t idej\u00fck van\:\u00a7r +pTimeReset=\u00a76A j\u00e1t\u00e9kos ideje vissza lett \u00e1ll\u00edtva\: \u00a7c{0} +pTimeSet=\u00a76A j\u00e1t\u00e9kos ideje be\u00e1ll\u00edtva \u00a7c{0}\u00a76\: \u00a7c{1}. +pTimeSetFixed=\u00a76A j\u00e1t\u00e9kos ideje r\u00f6gz\u00edtett \u00a7c{0}\u00a76\: \u00a7c{1}. +pWeatherCurrent=\u00a7c{0}\u00a76 az id\u0151j\u00e1r\u00e1s\u00a7c {1}\u00a76. +pWeatherInvalidAlias=\u00a74\u00c9rv\u00e9nytelen id\u0151j\u00e1r\u00e1s t\u00edpus. +pWeatherNormal=\u00a7c{0}\u00a76 az id\u0151j\u00e1r\u00e1s norm\u00e1lis \u00e9s megfelel a szervernek. +pWeatherOthersPermission=\u00a74Nem vagy jogosult a t\u00f6bbi j\u00e1t\u00e9kos id\u0151j\u00e1r\u00e1s\u00e1nak be\u00e1ll\u00edt\u00e1s\u00e1ra. +pWeatherPlayers=\u00a76Ezek a j\u00e1t\u00e9kosok saj\u00e1t id\u0151j\u00e1r\u00e1ssal rendelkeznek\:\u00a7r +pWeatherReset=\u00a76A j\u00e1t\u00e9kos id\u0151j\u00e1r\u00e1sa vissza lett \u00e1ll\u00edtva\: \u00a7c{0} +pWeatherSet=\u00a76A j\u00e1t\u00e9kos id\u0151j\u00e1r\u00e1s\u00e1nak be\u00e1ll\u00edt\u00e1sa \u00a7c{0}\u00a76 \: \u00a7c{1}. questionFormat=\u00a72[K\u00e9rd\u00e9s]\u00a7r {0} radiusTooBig=\u00a74Ez a sug\u00e1r t\u00fal nagy\! A maximum\: {0}. -readNextPage=\u00a76\u00cdrd be a\u00a7c /{0} {1} \u00a76 parancsot a k\u00f6vetkez\u00f5 oldal elolvas\u00e1s\u00e1hoz. -recentlyForeverAlone=\u00a74{0} recently went offline. +readNextPage=\u00a76\u00cdrd be a\u00a7c /{0} {1}\u00a76 parancsot a k\u00f6vetkez\u0151 oldal elolvas\u00e1s\u00e1hoz. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} +recentlyForeverAlone=\u00a74{0} a k\u00f6zelm\u00faltban ment. recipe=\u00a76\u00a7c{0}\u00a76 receptje (\u00a7c{1}\u00a76 az \u00a7c{2}\u00a76-b\u00f3l/b\u0151l) recipeBadIndex=Nincs recept ennyihez. recipeFurnace=\u00a76\u00c9gess\: \u00a7c{0}\u00a76-t. recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X recipeGridItem=\u00a7c{0}X \u00a76is \u00a7c{1} recipeMore=\u00a76\u00cdrd be a /{0} \u00a7c{1}\u00a76 parancsot, hogy t\u00f6bb receptet l\u00e1thass \u00a7c{2}\u00a76-hoz. -recipeNone={0}-nak/nek nincs receptje. +recipeNone={0}-nak/-nek nincs receptje. recipeNothing=semmi recipeShapeless=\u00a76Egyes\u00edts \u00a7c{0} recipeWhere=\u00a76Hol\: {0} removed=\u00a76Elt\u00e1vol\u00edtva\u00a7c {0} \u00a76entit\u00e1s. repair=\u00a76Sikeresen megjav\u00edtottad a az al\u00e1bbi dolgaidat\: \u00a7c{0}. repairAlreadyFixed=\u00a74Ezt a t\u00e1rgyat m\u00e9g nem kell jav\u00edtanod. -repairEnchanted=\u00a74Nincs jogod, hogy enchantolt t\u00e1rgyakat jav\u00edts. +repairEnchanted=\u00a74Nincs jogod, hogy var\u00e1zsolt t\u00e1rgyakat jav\u00edts. repairInvalidType=\u00a74Ez a t\u00e1rgy nem jav\u00edthat\u00f3. -repairNone=\u00a74Nincs olyan eszk\u00f6z\u00f6d/felszerel\u00e9sed amit jav\u00edtani k\u00e9ne. -requestAccepted=\u00a76Teleport\u00e1l\u00e1si k\u00e9relem elfogadva. +repairNone=\u00a74Nincs olyan eszk\u00f6z\u00f6d/felszerel\u00e9sed, amit jav\u00edtani k\u00e9ne. +requestAccepted=\u00a76A teleport\u00e1l\u00e1si k\u00e9relem elfogadva. requestAcceptedFrom=\u00a7c{0} \u00a76elfogadta a k\u00e9relmed. requestDenied=\u00a76Teleport\u00e1l\u00e1si k\u00e9relem elutas\u00edtva. requestDeniedFrom=\u00a7c{0} \u00a76elutas\u00edtotta a k\u00e9relmed. requestSent=\u00a76K\u00e9r\u00e9s elk\u00fcldve\u00a7c {0}\u00a76-nak/nek. -requestSentAlready=\u00a74You have already sent {0}\u00a74 a teleport request. -requestTimedOut=\u00a74Teleport k\u00e9relem kifutott az id\u00f5b\u00f5l. -requiredBukkit=\u00a76* \! * You need atleast build {0} of CraftBukkit, download it from http\://dl.bukkit.org/downloads/craftbukkit/ -resetBal=\u00a76Egyenleg vissza \u00e1ll\u00edtva \u00a7a{0}-ra/re \u00a76minden fentl\u00e9v\u0151 j\u00e1t\u00e9kosnak. -resetBalAll=\u00a76Egyenleg vissza\u00e1ll\u00edtva \u00a7a{0}\u00a76-ra/re az \u00f6sszes j\u00e1t\u00e9kosnak. +requestSentAlready=\u00a74M\u00e1r elk\u00fcldted {0}\u00a74 a teleport k\u00e9relmet. +requestTimedOut=\u00a74A teleport\u00e1l\u00e1si k\u00e9relem kifutott az id\u0151b\u0151l. +requiredBukkit=\u00a76* \! * Sz\u00fcks\u00e9ged van a CraftBukkit \u00e9p\u00edt\u00e9s\u00e9hez {0}, let\u00f6lt\u00f6d innen http\://dl.bukkit.org/downloads/craftbukkit/ +resetBal=\u00a76Egyenleg vissza\u00e1ll\u00edtva \u00a7a{0}-ra/-re \u00a76minden fentl\u00e9v\u0151 j\u00e1t\u00e9kosnak. +resetBalAll=\u00a76Egyenleg vissza\u00e1ll\u00edtva \u00a7a{0}\u00a76-ra/-re az \u00f6sszes j\u00e1t\u00e9kosnak. returnPlayerToJailError=\u00a74Hiba t\u00f6rt\u00e9nt amikor\u00a7c {0} \u00a74visszapr\u00f3b\u00e1lt t\u00e9rni a(z) \u00a7c{1}\u00a74 b\u00f6rt\u00f6nbe\! -runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while) +runningPlayerMatch=\u00a76A j\u00e1t\u00e9kosok megfelel\u0151 keres\u00e9s\u00e9nek futtat\u00e1sa ''\u00a7c{0}\u00a76'' (ez eltarthat egy kicsit) second=m\u00e1sodperc seconds=m\u00e1sodperc seenAccounts=\u00a76J\u00e1t\u00e9kos ismerhet\u0151\u00a7c {0} \u00a76n\u00e9ven is seenOffline=\u00a76A \u00a7c{0} \u00a76nev\u0171 j\u00e1t\u00e9kos \u00a74nem el\u00e9rhet\u0151 \u00a76ennyi ideje\: \u00a7c{1}\u00a76. seenOnline=\u00a76A \u00a7c{0} \u00a76nev\u0171 j\u00e1t\u00e9kos \u00a74el\u00e9rhet\u0151 \u00a76ennyi ideje\: \u00a7c{1}\u00a76. -sellBulkPermission=\u00a76You do not have permission to bulk sell. -sellHandPermission=\u00a76You do not have permission to hand sell. +sellBulkPermission=\u00a76Nincs jogod a t\u00f6meges \u00e9rt\u00e9kes\u00edt\u00e9sre. +sellHandPermission=\u00a76Nincs jogod a kezedben l\u00e9v\u0151 t\u00e1rgy elad\u00e1s\u00e1ra. serverFull=A szerver tele van\! serverTotal=\u00a76Szerver \u00f6sszesen\:\u00a7c {0} -setBal=\u00a7aEgyenleged be\u00e1ll\u00edtva {0}-ra. -setBalOthers=\u00a7aBe\u00e1ll\u00edtottad {0}\u00a7a egyenleg\u00e9t {1}-ra. -setSpawner=\u00a76Spawner \u00faj tipusa\:\u00a7c {0}. -sheepMalformedColor=\u00a74Malformed color. +setBal=\u00a7aEgyenleged be\u00e1ll\u00edtva {0}-ra/-re. +setBalOthers=\u00a7aBe\u00e1ll\u00edtottad {0}\u00a7a egyenleg\u00e9t {1}-ra/-re. +setSpawner=\u00a76Id\u00e9z\u0151 \u00faj t\u00edpusa\:\u00a7c {0}. +sheepMalformedColor=\u00a74Rosszform\u00e1zott sz\u00edn. shoutFormat=\u00a76[Ki\u00e1lt]\u00a7r {0} signFormatFail=\u00a74[{0}] signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] -signProtectInvalidLocation=\u00a74You are not allowed to create sign here. -similarWarpExist=\u00a74A warp with a similar name already exists. +signProtectInvalidLocation=\u00a74Nincs jogod egy t\u00e1bl\u00e1t l\u00e9trehozni. +similarWarpExist=\u00a74M\u00e1r l\u00e9tezik hasonl\u00f3 n\u00e9vvel rendelkez\u0151 warp. +southEast=DK +south=D +southWest=DNY skullChanged=\u00a76Fej megv\u00e1ltoztatva \u00a7c{0}\u00a76 fej\u00e9re. -slimeMalformedSize=\u00a74Malformed size. -socialSpy=\u00a76SocialSpy \u00a7c{0}\u00a76-nak/nek\: \u00a7c{1} +slimeMalformedSize=\u00a74Hib\u00e1s m\u00e9ret. +socialSpy=\u00a76SocialSpy \u00a7c{0}\u00a76-nak/-nek\: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} -socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(n\u00e9m\u00edtva) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r -soloMob=\u00a74That mob likes to be alone. -spawned=spawnolva -spawnSet=\u00a76Kezd\u00f5pont be\u00e1ll\u00edtva a \u00a7c{0}\u00a76 csoportnak. -spectator=spectator -sudoExempt=\u00a74Nem k\u00e9nyszer\u00edtheted \u00f5t. -sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1} +soloMob=\u00a74A mobok szeretnek egyed\u00fcl maradni. +spawned=id\u00e9zve +spawnSet=\u00a76Kezd\u0151pont be\u00e1ll\u00edtva a \u00a7c{0}\u00a76 csoportnak. +spectator=n\u00e9z\u0151 +sudoExempt=\u00a74Nem k\u00e9nyszer\u00edtheted \u0151t. +sudoRun=\u00a76Er\u00f6ltet\u00e9se\u00a7c {0} \u00a76futtat\u00e1s\:\u00a7r /{1} suicideMessage=\u00a76Viszl\u00e1t sz\u00e9p vil\u00e1g... suicideSuccess=\u00a76{0} \u00a76feladta az \u00e9let\u00e9t. -survival=t\u00fal\u00e9l\u00f5 -takenFromAccount=\u00a7a{0} lev\u00e9ve az egyenlegedr\u00f5l. -takenFromOthersAccount=\u00a7a{0} lev\u00e9ve {1}\u00a7a egyenleg\u00e9r\u00f5l. \u00daj egyenleg\: {2}. -teleportAAll=\u00a76Teleport\u00e1l\u00e1si k\u00e9relem mindenkinek elk\u00fcldve... +survival=t\u00fal\u00e9l\u0151 +takenFromAccount=\u00a7a{0} lev\u00e9ve az egyenlegedr\u0151l. +takenFromOthersAccount=\u00a7a{0} lev\u00e9ve {1}\u00a7a egyenleg\u00e9r\u0151l. \u00daj egyenleg\: {2}. +teleportAAll=\u00a76A teleport\u00e1l\u00e1si k\u00e9relem mindenkinek elk\u00fcldve... teleportAll=\u00a76\u00d6sszes j\u00e1t\u00e9kos teleport\u00e1l\u00e1sa... teleportationCommencing=\u00a76Teleport\u00e1l\u00e1s megkezd\u00e9se... teleportationDisabled=\u00a76Teleport\u00e1l\u00e1s \u00a7cletiltva\u00a76. teleportationDisabledFor=\u00a76Teleport\u00e1l\u00e1s \u00a7cletiltva \u00a7c{0} \u00a76sz\u00e1m\u00e1ra\u00a76. teleportationEnabled=\u00a76Teleport\u00e1l\u00e1s \u00a7cenged\u00e9lyezve\u00a76. teleportationEnabledFor=\u00a76Teleport\u00e1l\u00e1s \u00a7cenged\u00e9lyezve \u00a7c{0} \u00a76sz\u00e1m\u00e1ra\u00a76. -teleportAtoB=\u00a7c{0}\u00a76 elteleport\u00e1lt t\u00e9ged {1}\u00a76-hoz/hez. +teleportAtoB=\u00a7c{0}\u00a76 elteleport\u00e1lt t\u00e9ged {1}\u00a76-hoz/-hez. teleportDisabled=\u00a7c{0} \u00a74letiltotta, hogy r\u00e1 teleport\u00e1ljanak. teleportHereRequest=\u00a7c{0}\u00a76 szeretn\u00e9, hogy hozz\u00e1 teleport\u00e1lj. teleporting=\u00a76Teleport\u00e1l\u00e1s... teleportInvalidLocation=A koordin\u00e1t\u00e1k \u00e9rt\u00e9ke nem lehet t\u00f6bb 30000000-n\u00e9l -teleportNewPlayerError=\u00a74Failed to teleport new player\! +teleportNewPlayerError=\u00a74Nem siker\u00fclt teleport\u00e1lni az \u00faj j\u00e1t\u00e9kost\! teleportRequest=\u00a7c{0}\u00a76 hozz\u00e1d szeretne teleport\u00e1lni. -teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled. -teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled. +teleportRequestAllCancelled=\u00a76Minden kiemelked\u0151 teleport\u00e1l\u00e1s k\u00e9r\u00e9s t\u00f6r\u00f6lve. +teleportRequestSpecificCancelled=\u00a76Kiemelked\u0151 teleport\u00e1l\u00e1si k\u00e9relem {0} t\u00f6r\u00f6lve. teleportRequestTimeoutInfo=\u00a76\u00a7c{0} m\u00e1sodperced\u00a76 van, hogy ezt elfogadd. teleportTop=\u00a76Teleport\u00e1l\u00e1s a legmagasabb pontra. -teleportToPlayer=\u00a76Teleport\u00e1l\u00e1s \u00a7c{0}\u00a76-hoz/hez. -tempbanExempt=\u00a74Nem tempbannolhatod ezt a szem\u00e9lyt. +teleportToPlayer=\u00a76Teleport\u00e1l\u00e1s \u00a7c{0}\u00a76-hoz/-hez. +tempbanExempt=\u00a74Nem tempbannolhatod ezt a j\u00e1t\u00e9kost. tempbanExemptOffline=\u00a74Nem tempbannolhatsz Offline j\u00e1t\u00e9kost. -tempbanJoin=You are banned from this server for {0}. Reason: {1} -tempBanned=\u00a7cYou have been temporarily banned for {0}\:\n\u00a7r{2} -thunder=\u00a76You\u00a7c {0} \u00a76thunder in your world. -thunderDuration=\u00a76You\u00a7c {0} \u00a76thunder in your world for\u00a7c {1} \u00a76seconds. -timeBeforeHeal=\u00a74Time before next heal\:\u00a7c {0}\u00a76. -timeBeforeTeleport=\u00a74Time before next teleport\:\u00a7c {0}\u00a76. +tempbanJoin=Ki lett\u00e9l tiltva a szerverr\u0151l {0}. Oka: {1} +tempBanned=\u00a7cKi lett\u00e9l tiltva a szerverr\u0151l {0}\:\n\u00a7r{2} +thunder=\u00a7c {0} \u00a76mennyd\u00f6rg\u00e9s a vil\u00e1gban. +thunderDuration=\u00a7c {0} \u00a76mennyd\u00f6rg\u00f6tt a vil\u00e1godban\u00a7c {1} \u00a76m\u00e1sodpercre. +timeBeforeHeal=\u00a74A k\u00f6vetkez\u0151 \u00e9let felt\u00f6lt\u00e9s\:\u00a7c {0}\u00a76. +timeBeforeTeleport=\u00a74A k\u00f6vetkez\u0151 teleport\u00e1l\u00e1s\:\u00a7c {0}\u00a76. timeFormat=\u00a7c{0}\u00a76 vagy \u00a7c{1}\u00a76 vagy \u00a7c{2}\u00a76 -timeSetPermission=\u00a74Nincs jogod, hogy \u00e1ll\u00edtsd az id\u00f5t. -timeSetWorldPermission=\u00a74You are not authorized to set the time in world ''{0}''. -timeWorldCurrent=\u00a76The current time in\u00a7c {0} \u00a76is \u00a7c{1}\u00a76. -timeWorldSet=\u00a76Id\u00f5 be\u00e1ll\u00edtva\u00a7c {0}\u00a76-re a \u00a7c{1}\u00a76 vil\u00e1gban. +timeSetPermission=\u00a74Nincs jogod, hogy \u00e1ll\u00edtsd az id\u0151t. +timeSetWorldPermission=\u00a74Nincs jogod be\u00e1ll\u00edtani az id\u0151t a(z) ''{0}'' vil\u00e1gban. +timeWorldCurrent=\u00a76A jelenlegi id\u0151\u00a7c {0} \u00a7c{1}\u00a76. +timeWorldSet=\u00a76Id\u0151 be\u00e1ll\u00edtva\u00a7c {0}\u00a76-re a(z) \u00a7c{1}\u00a76 vil\u00e1gban. totalSellableAll=\u00a7aAz \u00f6sszes eladhat\u00f3 dolgod\u00e9rt \u00e9s blockjaid\u00e9rt \u00a7c{1}\u00a7a-t kapsz. totalSellableBlocks=\u00a7aAz \u00f6sszes eladhat\u00f3 blockjaid\u00e9rt \u00a7c{1}\u00a7a-t kapsz. -totalWorthAll=\u00a7aSold all items and blocks for a total worth of \u00a7c{1}\u00a7a. -totalWorthBlocks=\u00a7aSold all blocks for a total worth of \u00a7c{1}\u00a7a. +totalWorthAll=\u00a7aMinden t\u00e1rgyat \u00e9s blokkot eladt\u00e1l egy teljes \u00e9rt\u00e9kre \u00a7c{1}\u00a7a. +totalWorthBlocks=\u00a7aEladtad az \u00f6sszes blokkot, \u00f6sszesen \u00e9rt\u00e9kben \u00a7c{1}\u00a7a. tps=\u00a76Jelenlegi TPS \= {0} tradeSignEmpty=\u00a74A t\u00e1bla nem tud neked adni \u00e1rut. tradeSignEmptyOwner=\u00a74A t\u00e1bl\u00e1b\u00f3l m\u00e9g nem v\u00e1s\u00e1rolt senki. -treeFailure=\u00a74Tree generation failure. Try again on grass or dirt. -treeSpawned=\u00a76Fa spawnolva. +treeFailure=\u00a74Fa termel\u00e9si hiba. Pr\u00f3b\u00e1ld \u00fajra a f\u00f6ld\u00f6n. +treeSpawned=\u00a76Fa id\u00e9zve. true=\u00a7aigaz\u00a7r -typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. -typeTpaccept=\u00a76Hogy elfogadd \u00edrd be \u00a7c/tpaccept\u00a76. -typeTpdeny=\u00a76Hogy elutas\u00edtsd \u00edrd be \u00a7c/tpdeny\u00a76. -typeWorldName=\u00a76You can also type the name of a specific world. -unableToSpawnItem=\u00a74Nem lehetett lespawnolni \u00a7c{0}\u00a74-t, mert ez nem spawnolhat\u00f3 t\u00e1rgy. -unableToSpawnMob=\u00a74Unable to spawn mob. -unignorePlayer=\u00a76You are not ignoring player\u00a7c {0} \u00a76anymore. +typeTpacancel=\u00a76A k\u00e9relem t\u00f6rl\u00e9s\u00e9hez \u00edrd be a \u00a7c/tpacancel\u00a76. +typeTpaccept=\u00a76Hogy elfogadd \u00edrd be a \u00a7c/tpaccept\u00a76. +typeTpdeny=\u00a76Hogy elutas\u00edtsd \u00edrd be a \u00a7c/tpdeny\u00a76. +typeWorldName=\u00a76Be\u00edrhatod egy adott vil\u00e1g nev\u00e9t is. +unableToSpawnItem=\u00a74Nem lehetett leid\u00e9zni \u00a7c{0}\u00a74-t, mert ez nem id\u00e9zhet\u0151 t\u00e1rgy. +unableToSpawnMob=\u00a74Nem lehetett a mobot leid\u00e9zni. +unignorePlayer=\u00a76Nem hagyod figyelmen k\u00edv\u00fcl a j\u00e1t\u00e9kosokat\u00a7c {0} \u00a76t\u00f6bb\u00e9. unknownItemId=\u00a74Ismeretlen t\u00e1rgy ID\:\u00a7r {0}\u00a74. -unknownItemInList=\u00a74Unknown item {0} in {1} list. +unknownItemInList=\u00a74Ismeretlen {0} elem a {1} list\u00e1ban. unknownItemName=\u00a74Ismeretlen t\u00e1rgy n\u00e9v\: {0}. unlimitedItemPermission=\u00a74Nincs jogod a v\u00e9gtelens\u00e9gre a k\u00f6vetkez\u0151 t\u00e1rgyn\u00e1l\: \u00a7c{0}\u00a74. unlimitedItems=\u00a76V\u00e9gtelen t\u00e1rgyak\:\u00a7r -unmutedPlayer=\u00a7c {0}\u00a76-r\u00f3l fellett oldva a n\u00e9m\u00edt\u00e1s. -unsafeTeleportDestination=\u00a74Ahova teleport\u00e1lni szeretn\u00e9l nem biztons\u00e1gos \u00e9s a bisztons\u00e1gos teleport kikapcsolva. -unvanishedReload=\u00a74A reload k\u00f6vetkezt\u00e9ben mindenki l\u00e1tni fog. -upgradingFilesError=Error while upgrading the files. -uptime=\u00a76M\u00fbk\u00f6d\u00e9si id\u00f5\:\u00a7c {0} -userAFK=\u00a75{0} \u00a75most AFK \u00e9s nem bisztos hogy fog v\u00e1laszolni. -userAFKWithMessage=\u00a75{0} \u00a75most AFK \u00e9s nem bisztos hogy fog v\u00e1laszolni. {1} -userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}\! -userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp\! -userDoesNotExist=\u00a74The user\u00a7c {0} \u00a74does not exist. +unmutedPlayer=\u00a7c {0}\u00a76-r\u00f3l fel lett oldva a n\u00e9m\u00edt\u00e1s. +unsafeTeleportDestination=\u00a74Ahova teleport\u00e1lni szeretn\u00e9l nem biztons\u00e1gos \u00e9s a biztons\u00e1gos teleport\u00e1l\u00e1s kikapcsolva. +unvanishedReload=\u00a74Az \u00fajrat\u00f6lt\u00e9s k\u00f6vetkezt\u00e9ben mindenki l\u00e1tni fog. +upgradingFilesError=Hiba t\u00f6rt\u00e9nt a f\u00e1jlok friss\u00edt\u00e9se k\u00f6zben. +uptime=\u00a76M\u0171k\u00f6d\u00e9si id\u0151\:\u00a7c {0} +userAFK=\u00a75{0} \u00a75most AFK \u00e9s nem biztos, hogy v\u00e1laszolni fog. +userAFKWithMessage=\u00a75{0} \u00a75most AFK \u00e9s nem biztos, hogy fog v\u00e1laszolni. {1} +userdataMoveBackError=Nem siker\u00fclt az userdata/{0}.tmp \u00e1thelyez\u00e9se a userdata/{1}\! +userdataMoveError=Nem siker\u00fclt az userdata/{0} \u00e1thelyez\u00e9se a userdata/{1}.tmp\! +userDoesNotExist=\u00a74A felhaszn\u00e1l\u00f3\u00a7c {0} \u00a74nem l\u00e9tezik. userIsAway=\u00a77* \u00a75{0}\u00a77 elment a g\u00e9pt\u0151l... userIsAwayWithMessage=\u00a77* \u00a75{0}\u00a77 elment a g\u00e9pt\u0151l... userIsNotAway=\u00a77* \u00a75{0} \u00a77visszaj\u00f6tt... userJailed=\u00a76Beb\u00f6rt\u00f6n\u00f6ztek\! userUnknown=\u00a74Figyelem\: ''\u00a7c{0}\u00a74'' m\u00e9g sose j\u00e1rt a szerveren. -usingTempFolderForTesting=Using temp folder for testing\: -vanish=\u00a76L\u00e1thatatlans\u00e1g {0}\u00a76-nak/nek\: {1} -vanished=\u00a76Sikeresen elt\u00fcnt\u00e9l a norm\u00e1lis j\u00e1t\u00e9kosok el\u00f5l \u00e9s a j\u00e1t\u00e9kbeli parancsokb\u00f3l. -versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version. -versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version. +usingTempFolderForTesting=H\u0151mapp\u00e1k haszn\u00e1lata a tesztel\u00e9shez\: +vanish=\u00a76L\u00e1thatatlans\u00e1g {0}\u00a76-nak/-nek\: {1} +vanished=\u00a76Sikeresen elt\u00fcnt\u00e9l a norm\u00e1lis j\u00e1t\u00e9kosok el\u0151l \u00e9s a j\u00e1t\u00e9kbeli parancsokb\u00f3l. +versionMismatch=\u00a74Verzi\u00f3 elt\u00e9r\u00e9s\! K\u00e9rj\u00fck, friss\u00edtse a(z) {0} a legfrissebb verzi\u00f3ra. +versionMismatchAll=\u00a74Verzi\u00f3 elt\u00e9r\u00e9s\! K\u00e9rj\u00fck, friss\u00edtse az \u00f6sszes Essentials jart a legfrissebb verzi\u00f3ra. voiceSilenced=\u00a76El vagy n\u00e9m\u00edtva\! voiceSilencedReason=\u00a76Your voice has been silenced\! \u00a76Reason: \u00a7c{0} walking=s\u00e9ta -warpDeleteError=\u00a74Problem deleting the warp file. +warpDeleteError=\u00a74Probl\u00e9ma a warp f\u00e1jl t\u00f6rl\u00e9s\u00e9vel. warpingTo=\u00a76Warpol\u00e1s a(z)\u00a7c {0}\u00a76 helyre. warpList={0} -warpListPermission=\u00a74Nincs jogod, hogy ki list\u00e1zd a Warpokat. +warpListPermission=\u00a74Nincs jogod, hogy list\u00e1zd a warpokat. warpNotExist=\u00a74Nincs ilyen warp. -warpOverwrite=\u00a74You cannot overwrite that warp. +warpOverwrite=\u00a74Nem lehet fel\u00fcl\u00edrni a warpot. warps=\u00a76Teleportok\:\u00a7r {0} warpsCount=\u00a76Van\u00a7c {0} \u00a76warp. Ez az \u00a7c{1}.\u00a76 oldal a \u00a7c{2}\u00a76-b\u00f3l/b\u0151l. warpSet=\u00a76Warp\u00a7c {0} \u00a76be\u00e1ll\u00edtva. -warpUsePermission=\u00a74Nincs jogod oda Warpolni. +warpUsePermission=\u00a74Nincs jogod oda warpolni. weatherInvalidWorld=A vil\u00e1g {0} nem tal\u00e1lhat\u00f3\! -weatherStorm=\u00a76Be\u00e1ll\u00edtottad az id\u00f5t \u00a7ces\u00f5sre\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban. -weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds. -weatherSun=\u00a76Be\u00e1ll\u00edtottad az id\u00f5t \u00a7cnaposra\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban. -weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds. +weatherStorm=\u00a76Be\u00e1ll\u00edtottad az id\u0151t \u00a7ces\u0151sre\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban. +weatherStormFor=\u00a76Be\u00e1ll\u00edtottad az id\u0151j\u00e1r\u00e1st \u00a7ces\u0151sre\u00a7c {0}\u00a76 vil\u00e1gban {1} m\u00e1sodpercre. +weatherSun=\u00a76Be\u00e1ll\u00edtottad az id\u0151t \u00a7cnaposra\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban. +weatherSunFor=\u00a76Be\u00e1ll\u00edtottad az id\u0151j\u00e1r\u00e1st \u00a7cnaposra\u00a7c {0}\u00a76 vil\u00e1gban \u00a76 {1} m\u00e1sodpercre. +west=NY whoisAFK=\u00a76 - AFK\:\u00a7r {0} -whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) +whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Mivel {1}) whoisBanned=\u00a76 - Bannolva\:\u00a7r {0} -whoisExp=\u00a76 - Exp\:\u00a7r {0} (Level {1}) +whoisExp=\u00a76 - Exp\:\u00a7r {0} (Szint {1}) whoisFly=\u00a76 - Rep\u00fcl\u00e9s\:\u00a7r {0} ({1}) whoisGamemode=\u00a76 - J\u00e1t\u00e9km\u00f3d\:\u00a7r {0} whoisGeoLocation=\u00a76 - Helyezked\u00e9s\:\u00a7r {0} whoisGod=\u00a76 - Isten m\u00f3d\:\u00a7r {0} whoisHealth=\u00a76 - \u00c9let\:\u00a7r {0}/20 -whoisHunger=\u00a76 - \u00c9hs\u00e9g\:\u00a7r {0}/20 (+{1} saturation) -whoisIPAddress=\u00a76 - IP C\u00edm\:\u00a7r {0} +whoisHunger=\u00a76 - \u00c9hs\u00e9g\:\u00a7r {0}/20 (+{1} tel\u00edtetts\u00e9g) +whoisIPAddress=\u00a76 - IP c\u00edm\:\u00a7r {0} whoisJail=\u00a76 - B\u00f6rt\u00f6n\:\u00a7r {0} whoisLocation=\u00a76 - Helye\:\u00a7r ({0}, {1}, {2}, {3}) whoisMoney=\u00a76 - P\u00e9nz\:\u00a7r {0} whoisMuted=\u00a76 - N\u00e9m\u00edtva\:\u00a7r {0} whoisMutedReason=\u00a76 - Muted\:\u00a7r {0} \u00a76Reason: \u00a7c{1} -whoisNick=\u00a76 - Nick\:\u00a7r {0} +whoisNick=\u00a76 - Becen\u00e9v\:\u00a7r {0} whoisOp=\u00a76 - OP\:\u00a7r {0} -whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0} -whoisTempBanned=\u00a76 - Ban expires:\u00a7r {0} -whoisTop=\u00a76 \=\=\=\=\=\= KiIs\u00d6\:\u00a7c {0} \u00a76\=\=\=\=\=\= +whoisPlaytime=\u00a76 - J\u00e1t\u00e9kid\u0151\:\u00a7r {0} +whoisTempBanned=\u00a76 - Ban lej\u00e1r:\u00a7r {0} +whoisTop=\u00a76 \=\=\=\=\=\= Ki is \u0151:\u00a7c {0} \u00a76\=\=\=\=\=\= whoisUuid=\u00a76 - UUID\:\u00a7r {0} -worth=\u00a7aStack of {0} worth \u00a7c{1}\u00a7a ({2} item(s) at {3} each) -worthMeta=\u00a7aStack of {0} with metadata of {1} worth \u00a7c{2}\u00a7a ({3} item(s) at {4} each) -worthSet=\u00a76\u00c1r be\u00e1ll\u00edtva +worth=\u00a7aStackel\u00e9s {0} \u00e9rdemes \u00a7c{1}\u00a7a ({2} elem(ek) {3} minden) +worthMeta=\u00a7aStackel\u00e9s {0} az {1} \u00e9rt\u00e9k\u0171 metaadatokkal \u00a7c{2}\u00a7a ({3} elem(ek) {4} minden) +worthSet=\u00a76\u00c1r be\u00e1ll\u00edtva. year=\u00e9v years=\u00e9v youAreHealed=\u00a76\u00c9leted felt\u00f6ltve. -youHaveNewMail=\u00a76Van\u00a7c {0} \u00a76\u00fczeneted\! \u00cdrd be a \u00a7c/mail read\u00a76 parancsot, hogy elolvasd \u00f5ket. \ No newline at end of file +youHaveNewMail=\u00a76Van\u00a7c {0} \u00a76\u00fczeneted\! \u00cdrd be a \u00a7c/mail read\u00a76 parancsot, hogy elolvasd \u0151ket. diff --git a/Essentials/src/messages_it.properties b/Essentials/src/messages_it.properties index 45e1d27bf..48a0e33ad 100644 --- a/Essentials/src/messages_it.properties +++ b/Essentials/src/messages_it.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=Impossibile trovare il template {0} createdKit=\u00a76Creato il kit \u00a7c{0} \u00a76con \u00a7c{1} \u00a76inserimenti e attesa \u00a7c{2} createKitFailed=\u00a74Si \u00E8 verificato un errore creando il kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Kit Creato: \u00a7f{0}\n\u00a76Attesa: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia i contenuti nel link sopra nella tua config.yml. +createKitSuccess=\u00a76Kit Creato: \u00a7f{0}\n\u00a76Attesa: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia i contenuti nel link qui sopra nel tuo kits.yml. creatingConfigFromTemplate=Creazione della configurazione dal template\: {0} creatingEmptyConfig=Creazione configurazione vuota\: {0} creative=creativa @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74La creazione di questo mob \u00E8 stata disabilitata n disableUnlimited=\u00a76Piazzamento illimitato di\u00a7c {0} \u00a76disabilitato per {1}. distance=\u00a76Distanza\: {0} dontMoveMessage=\u00a77Il teletrasporto inizier\u00E0 tra {0}. Non muoverti. -downloadingGeoIp=Download del database GeoIP... potrebbe richiedere del tempo (nazione\: 0.6 MB, citt\u00E0\: 20MB) +downloadingGeoIp=Download del database GeoIP... potrebbe richiedere del tempo (nazione\: 1.7 MB, citt\u00E0\: 30MB) duplicatedUserdata=Dati dell''utente duplicati\: {0} e {1} durability=\u00a76Questo attrezzo ha \u00a7c{0}\u00a76 utilizzi rimasti +east=E editBookContents=\u00a7eOra puoi modificare i contenuti di questo libro. enabled=abilitato enableUnlimited=\u00a76Data una quantit\u00e0 illimitata di\u00a7c {0} \u00a76a \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a7cCosto non corretto. invalidFireworkFormat=\u00a74L''opzione \u00a7c{0} \u00a74non \u00e8 un valore valido per \u00a7c{1}\u00a74. invalidHome=La casa {0} non esiste\! invalidHomeName=\u00a74Nome casa non valido\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Tipo mob non valido. invalidNumber=Numero non valido. invalidPotion=\u00a74Pozione non valida. @@ -206,8 +208,10 @@ inventoryClearingAllStack=\u00a76Cancellati tutti i\u00a7c {0} \u00a76da {1}\u00 inventoryClearingFromAll=\u00a76Cancellamento dell''inventario di tutti gli utenti... inventoryClearingStack=\u00a76Rimossi\u00a7c {0} \u00a76di\u00a7c {1} \u00a76da {2}\u00a76. is=\u00E8 -isIpBanned=\u00a76L'' IP \u00a7c{0} \u00a76\u00e8 bannato. +isIpBanned=\u00a76L''IP \u00a7c{0} \u00a76\u00e8 bannato. +internalError=\u00a7cSi \u00e8 verificato un errore durante l''esecuzione di questo comando. itemCannotBeSold=\u00a74Quell''oggetto non pu\u00F2 essere venduto al server. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74L''oggetto deve essere scambiato in stack. Una quantit\u00E0 di 2 sarebbero due stack, etc. itemNames=\u00a76Nomi corti oggetti\:\u00a7r {0} itemNotEnough1=\u00a74Non hai abbastanza di quell''oggetto per venderlo. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74Non hai oggetti che possono essere convertiti in blocch itemSold=\u00a7aVenduto per \u00a7c{0} \u00a7a({1} {2} a {3} l''uno). itemSoldConsole=\u00a7a{0} \u00a7aha venduto {1} per \u00a7a{2} \u00a7a({3} oggetti a {4} l''uno). itemSpawn=\u00a76Dati\u00a7c {0} \u00a76di\u00a7c {1} -itemType=\u00a76Oggetto\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Oggetto\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Giocatore gi\u00E0 in prigione\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74Avrai tempo per riflettere... in prigione. jailNotExist=\u00a74Quella prigione non esiste. jailReleased=\u00a76Il giocatore \u00a7c{0}\u00a76 \u00E8 stato scarcerato. @@ -315,6 +320,7 @@ nickChanged=\u00a76Nickname modificato. nickDisplayName=\u00a74Devi abilitare change-displayname nel file di configurazione di Essentials. nickInUse=\u00a74Quel nickname \u00E8 gi\u00E0 in uso. nickNamesAlpha=\u00a74I nickname devono essere alfanumerici. +nickNamesOnlyColorChanges=\u00a74I nickname possono avere solo i colori modificati. nickNoMore=\u00a76Non disponi pi\u00F9 di un nickname. nickSet=\u00a76Il tuo nickname \u00e8 ora \u00a7c{0}\u00a76. nickTooLong=\u00a74Quel nickname \u00e8 troppo lungo. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74Non hai il permesso di accedere a questo \u00a7c{0}\u0 noBreakBedrock=\u00a74Non hai il permesso di distruggere la roccia di fondo. noDestroyPermission=\u00a74Non hai il permesso di distruggere questo \u00a7c{0}\u00a74. noDurability=\u00a74Questo oggetto non ha durabilit\u00e0. +northEast=NE +north=N +northWest=NO noGodWorldWarning=\u00a74Attenzione\! Modalit\u00E0 Dio disabilitata in questo mondo. noHelpFound=\u00a74Nessun comando corrispondente trovato. noHomeSetPlayer=\u00a76Il giocatore non ha impostato una casa. noIgnored=\u00a76Non stai ignorando nessuno. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Non hai accesso a questo kit kit. noKitPermission=\u00a74Hai bisogno del permesso \u00a7c{0}\u00a74 per utilizzare quel kit. noKits=\u00a76Non \u00E8 ancora disponibile alcun kit. @@ -363,6 +373,7 @@ onlyDayNight=/time supporta solo day/night. onlyPlayers=\u00a74Solo in gioco i giocatori possono usare \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Puoi solo impostare il propetario della testa (\u00a7c397\:3\u00a74). onlySunStorm=/weather supporta solo sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Ordinamento bilanci di\u00a7c {0} \u00a76utenti, attendere prego... oversizedTempban=\u00a74Non puoi bannare giocatori per questo arco di tempo. payConfirmToggleOff=\u00a76Non ti verr\u00e0 pi\u00f9 richiesto di confermare i pagamenti. @@ -371,7 +382,7 @@ payMustBePositive=\u00a74L''importo da pagare deve essere positivo. payToggleOff=\u00a76Non accetti pi\u00F9 pagamenti. payToggleOn=\u00a76Ora accetti pagamenti. pendingTeleportCancelled=\u00a7cRichiesta in sospeso di teletrasporto cancellata. -playerBanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha bannato l'' IP\u00a7c {1} \u00a76per\: \u00a7c{2}\u00a76. +playerBanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha bannato l''IP\u00a7c {1} \u00a76per\: \u00a7c{2}\u00a76. playerBanned=\u00a76Il giocatore\u00a7c {0} \u00a76ha bannato\u00a7c {1} \u00a76per \u00a7c{2}\u00a76. playerInJail=\u00a74Il giocatore \u00e8 gi\u00e0 nella prigione\u00a7c {0}\u00a74. playerJailed=\u00a77Il giocatore {0} \u00E8 stato messo in prigione. @@ -384,7 +395,7 @@ playerMutedReason=\u00a76You have been muted\! \u00a76Reason: \u00a7c{0} playerNeverOnServer=\u00a7cIl giocatore {0} non \u00E8 mai stato in questo server. playerNotFound=\u00a7cGiocatore non trovato. playerTempBanned=\u00a76Il giocatore \u00a7c{0}\u00a76 ha temporaneamente bannato \u00a7c{1}\u00a76 per \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. -playerUnbanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha rimosso il ban dall'' IP\: {1}. +playerUnbanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha rimosso il ban dall''IP\: {1}. playerUnbanned=\u00a76Il giocatore\u00a7c {0} \u00a76ha rimosso il ban da \u00a7c {1}. playerUnmuted=\u00a77Ti \u00e8 stato rimosso il mute\u00e8. pong=Pong\! @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Il meteo del giocatore \u00e8 stato impostato a \u00a7c{0}\u0 questionFormat=\u00a72[Domanda]\u00a7r {0} radiusTooBig=\u00a74Il raggio \u00e8 troppo grande\! Il raggio massimo \u00e8 di {0}. readNextPage=\u00a76Scrivi\u00a7c /{0} {1} \u00a76per la pagina successiva. +realName=\u00a7f{0}\u00a7r\u00a76 \u00e8 \u00a7f{1} recentlyForeverAlone=\u00a74{0} recentemente \u00E8 andato offline. recipe=\u00a76Crafting per \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 di \u00a7c{2}\u00a76) recipeBadIndex=Non c''\u00E8 nessuna ricetta con quel numero. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Non hai il permesso per creare segnaposti qui. similarWarpExist=Il nome del warp \u00E8 stato gi\u00E0 utilizzato. +southEast=SE +south=S +southWest=SO skullChanged=\u00a76Testa modificata a \u00a7c{0}\u00a76. slimeMalformedSize=Dimensione non valida. socialSpy=\u00a76SocialSpy per \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a77Hai impostato il tempo atmosferico a tempesta in {0}. weatherStormFor=\u00a77Hai impostato il tempo atmosferico a tempesta in {0} per {1} secondi. weatherSun=\u00a77Hai impostato il tempo atmosferico a soleggiato in {0}. weatherSunFor=\u00a77Hai impostato il tempo atmosferico a soleggiato in {0} per {1} secondi. +west=O whoisAFK=\u00a76 - AFK\:\u00a7f {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Da {1}) whoisBanned=\u00a76 - Bannato\:\u00a7f {0} diff --git a/Essentials/src/messages_ko.properties b/Essentials/src/messages_ko.properties index 082e7caf9..45d9c3b6b 100644 --- a/Essentials/src/messages_ko.properties +++ b/Essentials/src/messages_ko.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -21,7 +21,7 @@ antiBuildUse=\u00a74\ub2f9\uc2e0\uc740 \u00a7c {0}\u00a74\uc744 \uc0ac\uc6a9\ud5 autoAfkKickReason={0}\ubd84 \uc774\uc0c1\uc758 \uc720\ud734\uc0c1\ud0dc\ub85c \uc788\uc5c8\uae30\uc5d0 \ucd94\ubc29\ub2f9\ud558\uc168\uc2b5\ub2c8\ub2e4. backAfterDeath=\u00a7c/back \u00a76\uba85\ub839\uc5b4\ub85c \uc0ac\ub9dd\ud55c \uc9c0\uc810\uc73c\ub85c \ud154\ub808\ud3ec\ud2b8 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. backupDisabled=\u00a74\uc678\ubd80 \ubc31\uc5c5 \uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. -backupFinished=\u00a76\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +backupFinished=\u00a76\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. backupStarted=\u00a76\ubc31\uc5c5\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4. backUsageMsg=\u00a76\uc774\uc804 \uc7a5\uc18c\ub85c \ub3cc\uc544\uac00\ub294\uc911.. balance=\u00a76\uc794\uace0\:\u00a7c {0} @@ -37,7 +37,7 @@ bedMissing=\u00a74\ub2f9\uc2e0\uc758 \uce68\ub300\uac00 \ub193\uc5ec\uc9c0\uc9c0 bedNull=\u00a7m\uce68\ub300\u00a7r bedSet=\u00a76\uce68\ub300 \uc2a4\ud3f0\uc9c0\uc810\uc774 \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4\! bigTreeFailure=\u00a7c\ud070 \ub098\ubb34 \uc0dd\uc131\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc794\ub514\ub098 \ud759\uc5d0\uc11c \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694. -bigTreeSuccess=\u00a76\ud070 \ub098\ubb34\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4. +bigTreeSuccess=\u00a76\ud070 \ub098\ubb34\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4. blockList=\u00a76\uc5d0\uc13c\uc15c\uc740 \ub2e4\uc74c \ud50c\ub7ec\uadf8\uc778\uc5d0 \uc758\ud574 \ucee4\ub9e8\ub4dc\uac00 \uad50\uccb4\ub429\ub2c8\ub2e4\: bookAuthorSet=\u00a76\ucc45\uc758 \uc800\uc790\ub97c \u00a7c{0}\u00a76\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4. bookLocked=\u00a76\uc774 \ucc45\uc740 \uc7a0\uae34\uc0c1\ud0dc\ub85c \uc804\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4. @@ -72,12 +72,12 @@ connectedPlayers=\u00a76\uc811\uc18d \uc911\uc778 \ud50c\ub808\uc774\uc5b4\u00a7 connectionFailed=\uc5f0\uacb0\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. cooldownWithMessage=\u00a7c\uc7ac\uc0ac\uc6a9 \ub300\uae30\: {0} coordsKeyword={0}, {1}, {2} -corruptNodeInConfig=\u00a7c\uc624\ub958\: \u00a74config.yml \ub0b4 {0} \ub178\ub4dc\uc5d0 \uc624\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4. +corruptNodeInConfig=\u00a7c\uc624\ub958\: \u00a74config.yml \ub0b4 {0} \ub178\ub4dc\uc5d0 \uc624\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4. couldNotFindTemplate=\ud15c\ud50c\ub9bf {0}\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=\ud15c\ud50c\ub9bf\uc744 \uc124\uc815\ud558\uc5ec \ub9cc\ub4ed\ub2c8\ub2e4 \: {0} creatingEmptyConfig=\ube48 \uc124\uc815 \ud30c\uc77c\uc744 \uc0dd\uc131\uc911\: {0} creative=\ud06c\ub9ac\uc5d0\uc774\ud2f0\ube0c @@ -89,23 +89,24 @@ defaultBanReason=\ub2f9\uc2e0\uc740 \uad00\ub9ac\uc790\uc5d0 \uc758\ud574 \uc11c deleteFileError={0} \ud30c\uc77c\uc774 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. deleteHome=\u00a76\uc9d1\u00a7c {0} \uc774 \uc81c\uac70\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. deleteJail=\u00a77{0} \uac10\uc625\uc774 \uc81c\uac70\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -deleteWarp=\u00a76\uc6cc\ud504 {0}\ub294(\uc740) \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +deleteWarp=\u00a76\uc6cc\ud504 {0}\ub294(\uc740) \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. deniedAccessCommand=\u00a7c{0}\ub2d8\uc740 \ud574\ub2f9 \uba85\ub839\uc5b4\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. denyBookEdit=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc7a0\uae08\uc744 \ud574\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. denyChangeAuthor=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc800\uc790\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. denyChangeTitle=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc81c\ubaa9\uc744 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. depth=\u00a77\ub2f9\uc2e0\uc740 \ud574\uc218\uba74\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. depthAboveSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc704\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. -depthBelowSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. +depthBelowSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. destinationNotSet=\ubaa9\uc801\uc9c0\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. disabled=\ube44\ud65c\uc131\ud654\ub428 disabledToSpawnMob=\u00a74\uc774 \ubaac\uc2a4\ud130\uc758 \uc2a4\ud3f0\uc740 \uc124\uc815 \ud30c\uc77c\uc5d0\uc11c \ud574\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. disableUnlimited=\u00a77{1}\ub85c {0}\uc758 \ubb34\ud55c\ubc30\uce58 \ube44\ud65c\uc131\ud654 distance=\u00a76\uac70\ub9ac\: {0} dontMoveMessage=\u00a76{0}\ucd08 \ub4a4\uc5d0 \uc774\ub3d9\ub429\ub2c8\ub2e4. \uc6c0\uc9c1\uc774\uba74 \uc774\ub3d9\uc774 \ucde8\uc18c\ub429\ub2c8\ub2e4. -downloadingGeoIp=GeoIP \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub2e4\uc6b4\ubc1b\ub294 \uc911\uc785\ub2c8\ub2e4.... \uc57d\uac04\uc758 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\uad6d\uac00\: 0.6 MB, \ub3c4\uc2dc\: 20MB) +downloadingGeoIp=GeoIP \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub2e4\uc6b4\ubc1b\ub294 \uc911\uc785\ub2c8\ub2e4.... \uc57d\uac04\uc758 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\uad6d\uac00\: 1.7 MB, \ub3c4\uc2dc\: 30MB) duplicatedUserdata=\uc911\ubcf5\ub41c \uc720\uc800\ub370\uc774\ud130 \: {0} \uc640/\uacfc {1} durability=\u00a76\uc774 \ub3c4\uad6c\ub294 \uc0ac\uc6a9 \uac00\ub2a5 \ud69f\uc218\uac00 s \u00a7c{0}\u00a76\ubc88 \ub0a8\uc558\uc2b5\ub2c8\ub2e4 +east=E editBookContents=\u00a7e\uc774\uc81c \uc774 \ucc45\uc758 \ub0b4\uc6a9\uc744 \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. enabled=\ud65c\uc131\ud654 enableUnlimited=\u00a7c{1} \u00a76\uc544\uc774\ud15c\uc744 \u00a7c{0} \u00a76\uc5d0\uac8c \ubb34\uc81c\ud55c\uc73c\ub85c \uc9c0\uae09\ud588\uc2b5\ub2c8\ub2e4. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Invalid charge. invalidFireworkFormat=\u00a7c{0} \u00a74\uc635\uc158\uc740 \u00a7c{1} \u00a74\ub77c\ub294 \uac12\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. invalidHome=\u00a7c{0}\u00a74 \uc9d1\uc774 \uc874\uc7ac\ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4\! invalidHomeName=\u00a74\uc9d1 \uc774\ub984\uc774 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74\uc798\ubabb\ub41c \ubab9 \ud0c0\uc785\uc785\ub2c8\ub2e4. invalidNumber=\uc798\ubabb\ub41c \uc22b\uc790\uc785\ub2c8\ub2e4. invalidPotion=\u00a74\uc798\ubabb\ub41c \ud3ec\uc158. @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76fro is=\uc740/\ub294 isIpBanned=\u00a76IP \u00a7c{0} \u00a76\ub294 \ucc28\ub2e8 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. itemCannotBeSold=\uadf8 \uc544\uc774\ud15c\uc740 \uc11c\ubc84\uc5d0 \ud314 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=\uc544\uc774\ud15c\uc744 \uac70\ub798\ud558\uae30 \uc704\ud574\uc11c 2\uac1c \uc774\uc0c1\uc758 \uac19\uc740\uc544\uc774\ud15c\uc744 \uac00\uc9c0\uace0\uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4. itemNames=\u00a76\uc9e7\uc740 \uc544\uc774\ud15c \uc774\ub984\:\u00a7r {0} itemNotEnough1=\u00a7c\ub2f9\uc2e0\uc740 \ud310\ub9e4\ud558\uae30\uc704\ud55c \uc544\uc774\ud15c\uc744 \ucda9\ubd84\ud788 \uac00\uc9c0\uace0\uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a77 \u00a7c {0} \u00a77 {{1} \uc640 {2} \uc758 \uc544\uc774\ud15c\uc774 \ud314\ub9ac\ub2e4.) itemSoldConsole={0} \ud310\ub9e4 {1} \uc758 \u00a77 {2} \u00a77 ({3} \uc544\uc774\ud15c\uc758 \ud56d\ubaa9 {4} \uac01\uac01\uc758) itemSpawn=\u00a77\uc544\uc774\ud15c {1}\uc744/\ub97c {0}\uac1c \uc90d\ub2c8\ub2e4. -itemType=\u00a76\uc544\uc774\ud15c\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76\uc544\uc774\ud15c\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74\uc0ac\ub78c\uc774 \uc774\ubbf8 \uac10\uc625\uc5d0 \uc788\uc74c\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a7c\ub2f9\uc2e0\uc740 \ubc94\uc8c4\ub97c \uc800\uc9c0\ub974\uace0\uc788\uc2b5\ub2c8\ub2e4, \ub2f9\uc2e0\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. jailNotExist=\u00a74\ud574\ub2f9 \uac10\uc625\uc740 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. jailReleased=\u00a76\uc720\uc800 \u00a7c{0}\u00a76\ub294 \uac10\uc625\uc5d0\uc11c \uc11d\ubc29\ub418\uc5c8\uc2b5\ub2c8\ub2e4. @@ -315,6 +320,7 @@ nickChanged=\u00a76\ub2c9\ub124\uc784\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8 nickDisplayName=\u00a74You have to enable change-displayname in Essentials config. nickInUse=\u00a74\uc774\ubbf8 \uc0ac\uc6a9\uc911\uc778 \uc774\ub984\uc785\ub2c8\ub2e4. nickNamesAlpha=\u00a74\ub2c9\ub124\uc784\uc740 \ubc18\ub4dc\uc2dc \uc601\uc22b\uc790\uc758 \uc870\ud569\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76\ub2f9\uc2e0\uc740 \uc774\uc81c \ub2c9\ub124\uc784\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. nickSet=\u00a76\uc774\uc81c \ub2f9\uc2e0\uc758 \ub2c9\ub124\uc784\uc740 \u00a7c{0} \u00a76\uc785\ub2c8\ub2e4. nickTooLong=\u00a74\ub2c9\ub124\uc784\uc774 \ub108\ubb34 \uae41\ub2c8\ub2e4. @@ -325,8 +331,12 @@ noDestroyPermission=\u00a74\ub2f9\uc2e0\uc740 \u00a7c{0}\u00a74 \ub97c \ud30c\ua noDurability=\u00a74\uc774 \uc544\uc774\ud15c\uc5d0\ub294 \ub0b4\uad6c\ub3c4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. noGodWorldWarning=\u00a74\uc8fc\uc758\! \uc774 \uc6d4\ub4dc\uc5d0\uc11c \ubb34\uc801 \ubaa8\ub4dc\ub294 \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4. noHelpFound=\u00a74\uc77c\uce58\ud558\ub294 \uba85\ub839\uc5b4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=\ud574\ub2f9 \ud50c\ub808\uc774\uc5b4\ub294 \uc9d1 \uc124\uc815\uc774 \ub418\uc5b4\uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. noIgnored=\u00a76\ub2f9\uc2e0\uc774 \ubb34\uc2dc\ud558\ub294 \uc720\uc800\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ud0b7\uc5d0 \ub300\ud558\uc5ec \uc811\uadfc \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. noKitPermission=\u00a7c\ud574\ub2f9 \ud0a4\ud2b8\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc120 \u00a7c{0}\u00a7c \uad8c\ud55c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. noKits=\u00a77\uc544\uc9c1 \uc0ac\uc6a9\uac00\ub2a5\ud55c \ud0a4\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. @@ -363,6 +373,7 @@ onlyDayNight=\ucee4\ub9e8\ub4dc /time \uc740 \uc2dc\uac04\uc744 \ub0ae, \ubc24\u onlyPlayers=\u00a74\ubc84\ud0b7\uc5d0\uc11c\ub294 \u00a7c{0}\u00a74 \ub97c \uc0ac\uc6a9 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uac8c\uc784\uc5d0 \uc811\uc18d\ud558\uc5ec \uc0ac\uc6a9\ud574\uc8fc\uc138\uc694. onlyPlayerSkulls=&4\ub2f9\uc2e0\uc740 \ud50c\ub808\uc774\uc5b4 \uba38\ub9ac\uc758 \uc18c\uc720\uc790\ub9cc \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 (&c397\:3&4). onlySunStorm=\u00a74/\ub0a0\uc528\ub294 \ub9d1\uc74c/\ud750\ub9bc\ub9cc \uc124\uc815\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait... oversizedTempban=\u00a74You may not \ucc28\ub2e8 a player for this period of time. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -373,7 +384,7 @@ payToggleOn=\u00a76You are now accepting payments. pendingTeleportCancelled=\u00a74\uc21c\uac04\uc774\ub3d9 \uc694\uccad\uc774 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76. playerBanned=\u00a76\ud50c\ub808\uc774\uc5b4\u00a7c {0} \u00a76\ub2d8\uc774\u00a7c {1} \u00a76\ub2d8\uc744 \ubca4\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc0ac\uc720\: \u00a7c{2}\u00a76. -playerInJail=\u00a74\uadf8 \ud50c\ub808\uc774\uc5b4\ub294 \uc774\ubbf8 {0}\u00a74 \uac10\uc625\uc5d0 \uc218\uac10\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4. +playerInJail=\u00a74\uadf8 \ud50c\ub808\uc774\uc5b4\ub294 \uc774\ubbf8 {0}\u00a74 \uac10\uc625\uc5d0 \uc218\uac10\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4. playerJailed=\u00a76{0} \ud50c\ub808\uc774\uc5b4\uac00 \uac10\uae08\ub418\uc5c8\uc2b5\ub2c8\ub2e4. playerJailedFor=\u00a76\ud50c\ub808\uc774\uc5b4 {0}\uc740 {1}\uc5d0 \uac10\uae08\ub418\uc5c8\uc2b5\ub2c8\ub2e4. playerKicked=\u00a76Player\u00a7c {0} \u00a76kicked {1} for {2}. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. questionFormat=\u00a72[\uc9c8\ubb38]\u00a7r {0} radiusTooBig=\u00a74\ubc94\uc704\uac00 \ub108\ubb34 \ud07d\ub2c8\ub2e4\! \ucd5c\ub300 \ubc94\uc704\ub294 {0}\uc785\ub2c8\ub2e4. readNextPage=\u00a7c/{0} {1} \u00a76\ub97c \uc785\ub825\ud558\uc5ec \ub2e4\uc74c \ud398\uc774\uc9c0\ub97c \uc77d\uc73c\uc138\uc694. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a7c{0}\u00a76 (\u00a7c{2}\u00a76\uc758 \u00a7c{1}\u00a76) \uc758 \uc870\ud569\ubc95 recipeBadIndex=\uadf8 \ubc88\ud638\uc5d0 \ub300\ud55c \ub808\uc2dc\ud53c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74\uc5ec\uae30\uc11c\ub294 \ud45c\uc9c0\ud310\uc744 \ub9cc\ub4e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. similarWarpExist=\uc6cc\ud504\uc758 \uc774\ub984\uc740 \uc774\ubbf8 \ube44\uc2b7\ud55c \uc774\ub984\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4 +southEast=SE +south=S +southWest=SW skullChanged=\u00a76\uba38\ub9ac\uac00 \u00a7c{0}\u00a76 (\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. slimeMalformedSize=\uc798\ubabb\ub41c \ud06c\uae30. socialSpy=\u00a7c{0}\u00a76\: \u00a7c{1}\uc5d0 \ub300\ud55c \u00a76SocialSpy @@ -490,7 +505,7 @@ survival=\uc11c\ubc14\uc774\ubc8c takenFromAccount=\u00a7c{0} \ub9cc\ud07c \uc9c0\ubd88\ud558\uc600\uc2b5\ub2c8\ub2e4. takenFromOthersAccount=\u00a7a{1}\u00a7a\uc758 \uacc4\uc815\uc5d0\uc11c {0}\u00a7a\uc744 \uac00\uc838\uc640 \uc794\uace0\uac00 {2}\u00a7a\uc774 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. teleportAAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \ud154\ub808\ud3ec\ud2b8 \uc694\uccad\uc744 \ubcf4\ub0c8\uc2b5\ub2c8\ub2e4... -teleportAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\ub97c \ud154\ub808\ud3ec\ud2b8 \ud558\ub294\uc911.. +teleportAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\ub97c \ud154\ub808\ud3ec\ud2b8 \ud558\ub294\uc911.. teleportationCommencing=\u00a76\ud154\ub808\ud3ec\ud2b8 \uc911... teleportationDisabled=\u00a76\ud154\ub808\ud3ec\ud2b8\uac00 \u00a7c\ube44\ud65c\uc131\ud654\u00a76\ub418\uc5c8\uc2b5\ub2c8\ub2e4. teleportationDisabledFor=\u00a7c{0}\u00a76 \uc5d0 \ub300\ud55c \uc774\ub3d9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. @@ -546,7 +561,7 @@ unlimitedItems=\ubb34\uc81c\ud55c \uc544\uc774\ud15c \ubaa9\ub85d\: unmutedPlayer=\ud50c\ub808\uc774\uc5b4 \u00a7c{0}\u00a76\ub294 \uc774\uc81c \ub9d0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. unsafeTeleportDestination=\u00a74\ud154\ub808\ud3ec\ud2b8 \ub300\uc0c1\uc774 \uc548\uc804\ud558\uace0 \ud154\ub808\ud3ec\ud2b8\uac00 \uc548\uc804 \ube44\ud65c\uc131\ud654 \ub429\ub2c8\ub2e4. unvanishedReload=\u00a74A reload has forced you to become visible. -upgradingFilesError=\ud30c\uc77c\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\ub358 \ub3c4\uc911, \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. +upgradingFilesError=\ud30c\uc77c\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\ub358 \ub3c4\uc911, \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. uptime=\u00a76\uac00\ub3d9 \uc2dc\uac04\:\u00a7c {0} userAFK=\u00a77{0} \u00a75\uc740 \ud604\uc7ac \uc7a0\uc218 \uc0c1\ud0dc\uc774\ubbc0\ub85c \uc751\ub2f5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. userAFKWithMessage=\u00a77{0} \u00a75\uc740 \ud604\uc7ac \uc7a0\uc218 \uc0c1\ud0dc\uc774\ubbc0\ub85c \uc751\ub2f5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. {1} @@ -562,7 +577,7 @@ usingTempFolderForTesting=\ud14c\uc2a4\ud2b8\ub97c \uc704\ud574 temp \ud3f4\ub35 vanish=\u00a76{0}\u00a76\ub2d8\uc758 \uc0ac\ub77c\uc9c0\uae30\uac00 {1}. vanished=\u00a76\ub2f9\uc2e0\uc740 \uc774\uc81c \uc77c\ubc18 \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \ubcf4\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4, \uadf8\ub9ac\uace0 \uac8c\uc784 \ub0b4 \uba85\ub839\uc5b4\ub85c\ubd80\ud130 \uc228\uaca8\uc9d1\ub2c8\ub2e4. versionMismatch=\u00a74\ubc84\uc804 \ubd88\uc77c\uce58\! {0}\uc744 \ub3d9\uc77c\ud55c \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694 -versionMismatchAll=\ubc84\uc804\uc774 \ubd88\uc77c\uce58\ud569\ub2c8\ub2e4\! \ubaa8\ub4e0 Essentials jar \ud30c\uc77c\ub4e4\uc758 \ubc84\uc804\uc744 \uac19\uc740 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694. +versionMismatchAll=\ubc84\uc804\uc774 \ubd88\uc77c\uce58\ud569\ub2c8\ub2e4\! \ubaa8\ub4e0 Essentials jar \ud30c\uc77c\ub4e4\uc758 \ubc84\uc804\uc744 \uac19\uc740 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694. voiceSilenced=\u00a76\ub2f9\uc2e0\uc758 \ubaa9\uc18c\ub9ac\uac00 \uce68\ubb35\ub418\uc5c8\uc2b5\ub2c8\ub2e4 voiceSilencedReason=\u00a76Your voice has been silenced\! \u00a76Reason: \u00a7c{0} walking=\uac77\uae30 @@ -581,6 +596,7 @@ weatherStorm=\u00a76{0}\uc758 \ub0a0\uc528\uac00 \ud3ed\ud48d\uc73c\ub85c \uc124 weatherStormFor=\u00a76{0}\u00a76\uc758 \ub0a0\uc528\uac00 {1}\u00a76\ucd08\uac04 \ucc9c\ub465\ubc88\uac1c\ub85c \uc124\uc815\ub429\ub2c8\ub2e4. weatherSun=\u00a76{0}\u00a76\uc758 \ub0a0\uc528\uac00 \ub9d1\uc74c\uc73c\ub85c \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. weatherSunFor=\u00a77{0}\ucd08\uac04 \ub2f9\uc2e0\uc774 \uc788\ub294 \uc6d4\ub4dc\ub294 \ub9d1\uac8c \uc720\uc9c0\ub429\ub2c8\ub2e4. +west=W whoisAFK=\u00a76 - \uc7a0\uc218\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - \ucc28\ub2e8\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\uac00\uce58 \ubc0f \uac12 \uc124\uc815 year=\ub144(\ub144\ub3c4) years=\ub144 youAreHealed=\u00a77\ub2f9\uc2e0\uc740 \uce58\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -youHaveNewMail=\u00a76\ub2f9\uc2e0\uc740 \u00a7c{0}\u00a76\uac1c\uc758 \uba54\uc77c\uc774 \uc788\uc2b5\ub2c8\ub2e4. \u00a7c/mail read\u00a76 \uba85\ub839\uc5b4\ub97c \ud1b5\ud574 \uba54\uc77c\uc744 \ud655\uc778\ud574\uc8fc\uc138\uc694. \ No newline at end of file +youHaveNewMail=\u00a76\ub2f9\uc2e0\uc740 \u00a7c{0}\u00a76\uac1c\uc758 \uba54\uc77c\uc774 \uc788\uc2b5\ub2c8\ub2e4. \u00a7c/mail read\u00a76 \uba85\ub839\uc5b4\ub97c \ud1b5\ud574 \uba54\uc77c\uc744 \ud655\uc778\ud574\uc8fc\uc138\uc694. diff --git a/Essentials/src/messages_lt.properties b/Essentials/src/messages_lt.properties index a4c40ede9..dabd5fa12 100644 --- a/Essentials/src/messages_lt.properties +++ b/Essentials/src/messages_lt.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Could not find template {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Creating config from template\: {0} creatingEmptyConfig=Kuriama tuscia konfiguracija\: {0} creative=k\u016brybinis @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file. disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}. distance=\u00a76Distance\: {0} dontMoveMessage=\u00a76Teleportacija prasid\u0117s po\u00a7c {0}\u00a76. Nejud\u0117kite. -downloadingGeoIp=Siun\u010diama GeoIP databaze... tai gali \u0161iek tiek u\u017etrukti (Kaime\: 0.6 MB, Mieste\: 20MB) +downloadingGeoIp=Siun\u010diama GeoIP databaze... tai gali \u0161iek tiek u\u017etrukti (Kaime\: 1.7 MB, Mieste\: 30MB) duplicatedUserdata=Duplicated userdata\: {0} and {1}. durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left +east=E editBookContents=\u00a7eTu dabar gali redaguoti \u0161ios knygos turin\u012f. enabled=\u012fjungtas enableUnlimited=\u00a76Duodama neribota suma\u00a7c {0} \u00a76\u017eaid\u0117jui \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Invalid charge. invalidFireworkFormat=\u00a74Pasirinkimas \u00a7c{0} \u00a74n\u0117ra galimas \u00a7c{1}\u00a74. invalidHome=\u00a74Namas\u00a7c {0} \u00a74neegzistuoja\! invalidHomeName=\u00a74Neteisingas namo pavadinimas\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=Neteisingas tipas. invalidNumber=Invalid Number. invalidPotion=\u00a74Invalid Potion. @@ -207,7 +209,9 @@ inventoryClearingFromAll=\u00a76Clearing the inventory of all users... inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76. is=is isIpBanned=\u00a76IP \u00a7c{0} \u00a76yra u\u017eblokuotas. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74\u0160is daiktas negali b\u016bti parduotas serveryje. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Daiktas turi buti parduotas po 1 stack. itemNames=\u00a76Daikt\u0173 trumpi pavadinimai\:\u00a7r {0} itemNotEnough1=\u00a74Tu neturi pakankamai daiktu pardavimui. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7aParduota po \u00a7c{0} \u00a7a({1} {2} uz {3} kiekviena). itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each). itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} -itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Item\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74\u017daid\u0117jas jau yra kal\u0117jime\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74Padarei nusikaltim\u0105, laikas atpirkti nuod\u0117mes. jailNotExist=\u00a74\u0160is kal\u0117jimas neegzistuoja. jailReleased=\u00a76\u017daid\u0117jas \u00a7c{0}\u00a76 buvo i\u0161laisvintas. @@ -315,6 +320,7 @@ nickChanged=\u00a76Slapyvardis pakeistas. nickDisplayName=\u00a74You have to enable change-displayname in Essentials config. nickInUse=\u00a74Toks vardas jau naudojamas. nickNamesAlpha=\u00a74Slapyvardi turi sudaryti tik raid\u0117s arba skaitmenys. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76Tu daugiau nebeturi slapyvardzio. nickSet=\u00a76Tavo slapyvardis dabar yra \u00a7c{0}\u00a76. nickTooLong=\u00a74\u0160itas slapyvardis yra per ilgas. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74J\u016bs neturite leidimo prieiti prie \u00a7c{0}\u00a noBreakBedrock=\u00a74Tu negali sunaikinti bedrock. noDestroyPermission=\u00a74J\u016bs neturite teis\u0117s sugriauti \u00a7c{0}\u00a74. noDurability=\u00a74This item does not have a durability. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Warning\! God mode in this world disabled. noHelpFound=\u00a74No matching commands. noHomeSetPlayer=\u00a76\u017daid\u0117jas n\u0117ra nusistat\u0119s nam\u0173. noIgnored=\u00a76Tu nieko neignoruoji. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Tu neturi teisi\u0173 \u0161iam rinkiniui. noKitPermission=\u00a74Tau reikia \u00a7c{0}\u00a74 teis\u0117s, kad naudotum \u0161\u012f rinkin\u012f. noKits=\u00a76N\u0117ra galim\u0173 rinkini\u0173 dabar. @@ -363,6 +373,7 @@ onlyDayNight=Naudojimas\: /time \u00a72day/night. onlyPlayers=\u00a74Turite b\u016bti \u017eaidime, jeigu norite naudoti \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Savinink\u0105 galite nustatyti tik ant \u017eaid\u0117jo kaukol\u0117s (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74Naudojimas\: /weather \u00a72sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait... oversizedTempban=\u00a74Tu negali u\u017eblokuoti \u017eaid\u0117jo laikinai. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}. questionFormat=\u00a72[Question]\u00a7r {0} radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}. readNextPage=\u00a76Ra\u0161yk\u00a7c /{0} {1} \u00a76norint per\u017ei\u016br\u0117ti kit\u0105 puslap\u012f. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Receptas u\u017e \u00a7c {0} \u00a76(\u00a7c{2} \u00a7c{1}) recipeBadIndex=There is no recipe by that number. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Tu negali statyti lentel\u0117s \u010dia. similarWarpExist=\u00a74A warp with a similar name already exists. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Galva pakeista \u012f \u017eaid\u0117jo \u00a7c{0}\u00a76 galv\u0105. slimeMalformedSize=\u00a74Malformed size. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76Tu nustatei or\u0105 \u012f \u00a7cstorm\u00a76, pasaulyje\: weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds. weatherSun=\u00a76Tu nustatei or\u0105 \u012f \u00a7csun\u00a76, pasaulyje\:\u00a7c {0}\u00a76. weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - U\u017eblokuotas\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76Worth value set year=metai years=metus youAreHealed=\u00a76Tu buvai pagydytas. -youHaveNewMail=\u00a76Tu turi\u00a7c {0} \u00a76prane\u0161im\u0173\! Ra\u0161yk \u00a7c/mail read\u00a76, kad per\u017ei\u016br\u0117tum lai\u0161kus. \ No newline at end of file +youHaveNewMail=\u00a76Tu turi\u00a7c {0} \u00a76prane\u0161im\u0173\! Ra\u0161yk \u00a7c/mail read\u00a76, kad per\u017ei\u016br\u0117tum lai\u0161kus. diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties index 39b58e6b4..aa46fdf0d 100644 --- a/Essentials/src/messages_nl.properties +++ b/Essentials/src/messages_nl.properties @@ -1,18 +1,18 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here -# by: +# by: DutchUser action=\u00a75* {0} \u00a75{1} addedToAccount=\u00a7a{0} is gestort op uw rekening. -addedToOthersAccount=\u00a7a{0} toegevoegd aan {1}\u00a7a zijn rekening. Nieuw saldo\: {2} +addedToOthersAccount=\u00a7a{0} is toegevoegd aan {1}\u00a7a zijn rekening. Nieuw saldo\: {2} adventure=avontuur alertBroke=gebroken\: alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} bij\: {3} alertPlaced=geplaatst\: alertUsed=gebruikt\: alphaNames=\u00a74Speler namen kunnen alleen uit letters, cijfers en onderstreepjes bestaan. -antiBuildBreak=\u00a74U heeft geen toestemming om {0} blokken breken. +antiBuildBreak=\u00a74U heeft geen toestemming om {0} blokken breken. antiBuildCraft=\u00a74U mag hier geen\u00a7c {0} \u00a74maken. antiBuildDrop=\u00a74U mag hier geen\u00a7c {0} \u00a74laten vallen. antiBuildInteract=\u00a74U mag geen {0} gebruiken. @@ -30,8 +30,8 @@ balanceTop=\u00a77 Top saldo ({0}) banExempt=\u00a77U kunt deze speler niet verbannen. banExemptOffline=\u00a74U mag geen spelers verbannen die offline zijn. banFormat=Verbannen\: {0} -banIpJoin=Your IP address is banned from this server. Reason: {0} -banJoin=You are banned from this server. Reason: {0} +banIpJoin=Jouw IP adress is verbannen van deze server, met als reden: {0} +banJoin=Je bent van de server verbannen, met als reden: {0} bed=\u00a7obed\u00a7r bedMissing=\u00a74Uw bed is niet ingesteld, ontbreekt of is geblokkeerd. bedNull=\u00a7mbed\u00a7r @@ -57,27 +57,27 @@ chatTypeLocal=[L] chatTypeSpy=[Spion] cleaned=Gebruikersbestanden opgeschoont. cleaning=Opschonen van gebruikersbestanden. -clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. -clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. -commandCooldown=\u00a7cYou cannot type that command for {0}. +clearInventoryConfirmToggleOff=\u00a76Je zult niet langer meer gevraagd worden voor een bevestiging bij het legen van je inventaris. +clearInventoryConfirmToggleOn=\u00a76Je zult worden gevraagd voor een bevestiging bij het legen van je inventaris. +commandCooldown=\u00a7cJe kan deze command niet typen voor {0}. commandFailed=Opdracht {0} is mislukt\: commandHelpFailedForPlugin=Fout bij het verkrijgen van hulp voor\: {0}. commandNotLoaded=\u00a7cOpdracht {0} is fout geladen. compassBearing=\u00a77Ligging\: {0} ({1} graden). configFileMoveError=Het verplaatsen van config.yml naar de backup locatie is mislukt. configFileRenameError=Fout bij het hernoemen van de tijdelijke map naar config.yml -confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} -confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1} +confirmClear=\u00a77Om het leeghalen van je intventaris te \u00a7lBEVESTIGEN\u00a77, herhaal de command: \u00a76{0} +confirmPayment=\u00a77Om de betaling van \u00a76{0}\u00a77 te \u00a7lBEVESTIGEN\u00a77, herhaal de command: \u00a76{1} connectedPlayers=\u00a76Spelers online\u00a7r connectionFailed=Fout bij het verbinden. cooldownWithMessage=\u00a7cAfkoeltijd\: {0} coordsKeyword={0}, {1}, {2} corruptNodeInConfig=\u00a74Waarschuwing\: Uw configuratiebestand bevat een fout {0}. couldNotFindTemplate=Het sjabloon kon niet worden gevonden {0}. -createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} -createKitFailed=\u00a74Error occurred whilst creating kit {0}. +createdKit=\u00a76Kit \u00a7c{0} \u00a76gemaakt met \u00a7c{1} \u00a76items en met \u00a7c{2} \u00a76seconden afkoeltijd. +createKitFailed=\u00a74Fout opgetreden tijdens het maken van kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Gemaakte Kit: \u00a7f{0}\n\u00a76Vertraging \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopieer wat in de link staat in de kits.yml creatingConfigFromTemplate=Bezig met aanmaken van een config vanaf sjabloon\: {0} creatingEmptyConfig=Bezig met het aanmaken van een lege configuratie\: {0} creative=creatief @@ -103,9 +103,10 @@ disabledToSpawnMob=Het spawnen van mobs is uitgeschakeld in het configuratie bes disableUnlimited=\u00a77Oneindig plaatsen van {0} uitgeschakeld voor {1}. distance=\u00a76Afstand\: {0} dontMoveMessage=\u00a77Beginnen met teleporteren over {0}. Niet bewegen. -downloadingGeoIp=Bezig met downloaden van GeoIP database ... Dit kan een tijdje duren (country\: 0.6 MB, city\: 20MB) +downloadingGeoIp=Bezig met downloaden van GeoIP database ... Dit kan een tijdje duren (country\: 1.7 MB, city\: 30MB) duplicatedUserdata=Dubbele gebruikersdata\: {0} en {1}. durability=\u00a77Dit gereedschap kan nog \u00a7c{0}\u00a77 gebruikt worden. +east=E editBookContents=\u00a7eU kunt nu de inhoud van dit boek aanpassen. enabled=ingeschakeld enableUnlimited=\u00a76Oneindig \u00a7c {0} \u00a76gegeven aan \u00a7c{1}\u00a76. @@ -138,7 +139,7 @@ flyMode=\u00a77Zet vliegen {0} voor {1}. foreverAlone=\u00a7cU heeft niemand naar wie u kan reageren. fullStack=\u00a74U heeft al een volledige stapel. gameMode=De gamemodus van {1} is veranderd naar {0}. -gameModeInvalid=\u00a74U moet een geldige speler/mode opgeven. +gameModeInvalid=\u00a74U moet een geldige speler/gamemodus opgeven. gcfree=Vrij geheugen\: {0} MB gcmax=Maximaal geheugen\: {0} MB gctotal=Toegewezen geheugen\: {0} MB @@ -152,7 +153,7 @@ giveSpawnFailure=\u00a74Niet genoeg ruimte, \u00a7c{0} \u00a7c{1} \u00a74is verl godDisabledFor=\u00a7cuitgezet\u00a76 voor\u00a7c {0}\n godEnabledFor=\u00a7aingeschakeld\u00a76 voor\u00a7c {0}. godMode=\u00a76God modus\u00a7c {0}\u00a76. -groupDoesNotExist=\u00a74Er is niemand on-line in deze groep\! +groupDoesNotExist=\u00a74Er is niemand online in deze groep\! groupNumber=\u00a7c{0}\u00a7f online, voor de volledige lijst type\u00a7c /{1} {2} hatArmor=\u00a74Fout, u kunt dit voorwerp niet als hoed gebruiken\! hatEmpty=\u00a74Je draagt geen hoed. @@ -191,6 +192,7 @@ invalidCharge=\u00a7cOngeldige prijs. invalidFireworkFormat=\u00a74De optie \u00a7c{0} \u00a74is geen geldige waarde \u00a7c{1}\u00a74.\n invalidHome=Home {0} Bestaat niet. invalidHomeName=\u00a74Ongeldige home naam. +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74Ongeldig mob type. invalidNumber=Ongeldig Nummer. invalidPotion=\u00a74Ongeldige Toverdrank. @@ -200,7 +202,7 @@ invalidSkull=\u00a74Houd alstublieft een schedel vast. invalidWarpName=\u00a74Ongeldige warp naam. invalidWorld=\u00a7cOngeldige wereld. inventoryClearFail=\u00a74Player {0} \u00a74heeft geen\u00a7c {1} \u00a74stuks\u00a7c {2}\u00a74. -inventoryClearingAllArmor=\u00a76Alle inventaris voorwerpen en het harnas van {0}\u00a76 zijn verwijderd. +inventoryClearingAllArmor=\u00a76Alle inventaris voorwerpen en het harnas van {0}\u00a76 zijn verwijderd. inventoryClearingAllItems=\u00a76Alle inventaris voorwerpen van {0}\u00a76 zijn verwijderd. inventoryClearingAllStack=\u00a76Alle\u00a7c {0} \u00a76van {1}\u00a76 is verwijderd. inventoryClearingFromAll=\u00a76Inventarissen van alle gebruikers leegmaken.... @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76\u00a7c {0} \u00a76stuks\u00a7c {1} \u00a76zijn ve is=is isIpBanned=\u00a76IP \u00a7c {0} \u00a76is verbannen. itemCannotBeSold=Dat voorwerp kan niet aan de server worden verkocht. +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=Voorwerp moet geruild worden als stapel. Een hoeveelheid van 2 moet dus geruild worden als twee stapels, etc. itemNames=Kortere namen voor het item\: {0} itemNotEnough1=\u00a74Je hebt niet genoeg van die voorwerpen om te verkopen. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a77Verkocht voor \u00a7c{0} \u00a77({1} {2} voorwerpen voor {3} per stuk) itemSoldConsole={0} verkocht {1} voor \u00a77{2} \u00a77({3} voorwerpen voor {4} per stuk) itemSpawn=\u00a77Geeft {0} {1} -itemType=\u00a76Voorwerp\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Voorwerp\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Deze persoon zit al in de gevangenis\:\u00a7c {0} +jailList=\u00a76Gevangenissen\:\u00a7r {0} jailMessage=\u00a74U begaat een misdrijf, U zit uw tijd uit. jailNotExist=\u00a74Die gevangenis bestaat niet. jailReleased=\u00a76Speler \u00a7c{0}\u00a76 vrijgelaten. @@ -234,13 +239,13 @@ kickedAll=\u00a74Alle spelers van de server afgeschopt. kickExempt=\u00a74U kunt die speler niet van de server afschoppen. kill=\u00a76U vermoorde\u00a7c {0}\u00a76. killExempt=\u00a74Je kan niet vermoorden\u00a7c{0}\u00a74.\n -kitContains=\u00a76Kit \u00a7c{0} \u00a76contains: +kitContains=\u00a76Kit \u00a7c{0} \u00a76bevat: kitCost=\ \u00a77\u00a7o({0})\u00a7r kitDelay=\u00a7m{0}\u00a7r kitError=\u00a74Er zijn geen geldige kits. kitError2=\u00a74Die kit is niet goed ingesteld. Neem contact op met een administrator. kitGiveTo=\u00a76Geeft kit\u00a7c {0}\u00a76 aan \u00a7c{1}\u00a76.\n -kitInvFull=\u00a74Uw inventaris was vol, de kit wordt op de grond geplaatst. +kitInvFull=\u00a74Uw inventaris is vol, de kit wordt op de grond geplaatst. kitItem=\u00a76- \u00a7f{0} kitNotFound=\u00a74Deze kit bestaat niet. kitOnce=\u00a74U kunt deze kit niet opnieuw gebruiken. @@ -259,12 +264,12 @@ loadWarpError=\u00a74Fout bij het laden van warp {0}. localFormat=[L]<{0}> {1} localNoOne= mailClear=\u00a76Om je mail te markeren als gelezen, typ\u00a7c /mail clear\u00a76.\n -mailCleared=\u00a76Berichten verwijderd\! -mailDelay=Er zijn teveel mails verzonden in een minuut. Het maximale aantal berichten\: {0} +mailCleared=\u00a76Mails verwijderd\! +mailDelay=Er zijn teveel mails verzonden in een minuut. Het maximale aantal mails\: {0} mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} mailMessage={0} -mailSent=\u00a76Bericht verzonden\! -mailSentTo=\u00a7c{0}\u00a76 has been sent the following mail\: +mailSent=\u00a76Mail verzonden\! +mailSentTo=\u00a7c{0}\u00a76 is de volgende mail gestuurd\: mailTooLong=\u00a74Mail bericht te lang. Probeer om het onder 1000 tekens te houden. markedAsAway=\u00a76U staat nu als afwezig gemarkeerd. markedAsNotAway=\u00a76U staat niet meer als afwezig gemarkeerd. @@ -275,7 +280,7 @@ maxMoney=\u00a74Deze transactie overschrijdt het balans van dit account. mayNotJail=\u00a7cU mag die speler niet in de gevangenis zetten. mayNotJailOffline=\u00a74Je mag geen spelers in de gevangenis zetten wanneer zij offline zijn. me=ik -minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}. +minimumPayAmount=\u00a7cDe minimaal betaal hoeveelheld moet {0} zijn. minute=minuut minutes=minuten missingItems=\u00a74Je hebt geen\u00a7c{0}x {1}\u00a74.\n @@ -295,7 +300,7 @@ msgDisabledFor=\u00a76Berichten ontvangen \u00a7cuitgeschakelt \u00a76voor \u00a msgEnabled=\u00a76Berichten ontvangen \u00a7caingeschakelt\u00a76. msgEnabledFor=\u00a76Berichten ontvangen \u00a7cingeschakelt \u00a76voor \u00a7c{0}\u00a76. msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} -msgIgnore=\u00a7c{0} \u00a74has messages disabled. +msgIgnore=\u00a7c{0} \u00a74heeft u genegeerd. multipleCharges=\u00a74U kunt niet meer dan \u00e9\u00e9n lading aan dit vuurwerk toevoegen. multiplePotionEffects=\u00a74U kunt niet meer dan \u00e9\u00e9n effect aan dit toverdrankje toevoegen. mutedPlayer=\u00a76Speler\u00a7c {0} \u00a76gedempt. @@ -306,7 +311,7 @@ mutedUserSpeaks={0} probeerde te praten, maar is gedempt. muteExempt=\u00a74U kunt deze speler niet dempen. muteExemptOffline=\u00a74U mag spelers die offline zijn niet dempen. muteNotify=\u00a7c{0} \u00a76heeft \u00a7c{1} \u00a76gedempt. -muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. +muteNotifyFor=\u00a7c{0} \u00a76heeft speler \u00a7c{1}\u00a76 gedempt voor\u00a7c {2}\u00a76. muteNotifyForReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. \u00a76Reason: \u00a7c{3} muteNotifyReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. \u00a76Reason: \u00a7c{2} nearbyPlayers=\u00a76Spelers dichtbij\:\u00a7r {0} @@ -315,6 +320,7 @@ nickChanged=Bijnaam veranderd. nickDisplayName=\u00a74U moet ''change-displayname'' inschakelen in de Essentials configuratie. nickInUse=\u00a7cDie naam is al in gebruik. nickNamesAlpha=\u00a7cBijnamen moeten alfanumeriek zijn. +nickNamesOnlyColorChanges=\u00a74Met een nickname kun je enkel hun kleur aanpassen. nickNoMore=\u00a76U heeft geen bijnaam meer. nickSet=\u00a76Jou bijnaam is nu \u00a7c{0}\u00a76.\n nickTooLong=\u00a74Die bijnaam is te lang. @@ -325,8 +331,12 @@ noDestroyPermission=&4Je hebt geen permissie om dat &c{0}&4 te slopen. noDurability=\u00a7cDit voorwerp heeft geen levensduur. noGodWorldWarning=\u00a7cWaarschuwing\! God modus is uitgeschakeld in deze wereld. noHelpFound=\u00a7cGeen overeenkomende commandos. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=Speler heeft geen home. noIgnored=\u00a76U negeert niemand. +noJailsDefined=\u00a76Geen gevangenis gedefinieerd. noKitGroup=\u00a74U heeft geen toestemming om deze kit te gebruiken. noKitPermission=\u00a74U heeft de \u00a7c{0}\u00a74 toestemming nodig om die kit te gebruiken. noKits=\u00a77Er zijn nog geen kits beschikbaar. @@ -341,12 +351,12 @@ noNewMail=\u00a77U heeft geen nieuwe berichten. noPendingRequest=\u00a74U heeft geen afwachtende aanvragen. noPerm=\u00a74U heeft de \u00a7c{0}\u00a74 toestemming niet. noPermissionSkull=\u00a76Je hebt geen permissie om die schedel aan te passen. -noPermToAFKMessage=\u00a74You don''t have permission to set an AFK message. +noPermToAFKMessage=\u00a74Je bent geen recht om een afwezigheid bericht te geven noPermToSpawnMob=\u00a74U heeft geen toestemming om deze mob te spawnen. noPlacePermission=\u00a74U heeft geen toestemming om een blok naast dat bord te plaatsen. noPotionEffectPerm=\u00a74U heeft geen toestemming om het \u00a7c{0} \u00a74effect aan deze toverdrank toe te voegen. noPowerTools=\u00a76U heeft geen powertools toegewezen. -notAcceptingPay=\u00a74{0} \u00a74is not accepting payment. +notAcceptingPay=\u00a74{0} \u00a74accepteert geen betalingen. notAllowedToQuestion=\u00a74U bent niet bevoegd om de vraag functie te gebruiken. notAllowedToShout=\u00a74U bent niet bevoegd om de roep functie te gebruiken. notEnoughExperience=\u00a74U heeft niet genoeg experience. @@ -363,17 +373,18 @@ onlyDayNight=/time ondersteund alleen day/night. onlyPlayers=&4Alleen ingame spelers kunnen &c{0}&4 gebruiken. onlyPlayerSkulls=&4Je kan alleen de Eigenaar van een hoofd Zetten\! onlySunStorm=\u00a74/weather ondersteunt alleen sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Saldo''s bestellen van\u00a7c {0} \u00a76gebruikers, een moment geduld alstublieft... oversizedTempban=\u00a74U kunt een speler niet verbannen voor deze lange period van tijd. -payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. -payConfirmToggleOn=\u00a76You will now be prompted to confirm payments. -payMustBePositive=\u00a74Amount to pay must be positive. -payToggleOff=\u00a76You are no longer accepting payments. -payToggleOn=\u00a76You are now accepting payments. +payConfirmToggleOff=\u00a76Je zal niet meer worden gevraagd om betalingen te bevestigen. +payConfirmToggleOn=\u00a76Je zal worden gevraagd om betalingen te bevestigen. +payMustBePositive=\u00a74De aantal wat je wilt betalen moet positief zijn. +payToggleOff=\u00a76Je accepteert niet langer betalingen. +payToggleOn=\u00a76Je accepteert betalen weer. pendingTeleportCancelled=\u00a74Afwachtende teleportatie afgelast. -playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76. -playerBanned=&4Speler &c{0} &6is gebanned voor &4{2} -playerInJail=&4De speler is al in de gevangenis &c{0}&4. +playerBanIpAddress=\u00a76Speler\u00a7c {0} \u00a76heeft IP\u00a7c {1} \u00a76verbannen voor\: \u00a7c{2}\u00a76. +playerBanned=\u00a74Speler \u00a7c{0} \u00a74is verbannen voor {2} +playerInJail=\u00a74De speler is al in de gevangenis \u00a7c{0}\u00a74. playerJailed=\u00a76Speler\u00a7c {0} \u00a76is in de gevangenis gezet. playerJailedFor=\u00a76Speler\u00a7c {0} \u00a76is in de gevangenis gezet voor {1}. playerKicked=\u00a76Speler\u00a7c {0} \u00a76schopt {1} van de server voor {2}. @@ -383,7 +394,7 @@ playerMutedForReason=\u00a76You have been muted for\u00a7c {0}. \u00a76Reason: \ playerMutedReason=\u00a76You have been muted\! \u00a76Reason: \u00a7c{0} playerNeverOnServer=\u00a74Speler\u00a7c {0} \u00a74is nooit op deze server geweest. playerNotFound=\u00a74Speler niet gevonden. -playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. +playerTempBanned=\u00a76Speler \u00a7c{0}\u00a76 verbande\u00a7c {1}\u00a76 tijdelijk voor \u00a7c{2}\u00a76. Reden: \u00a7c{3}\u00a76. playerUnbanIpAddress=\u00a76Speler\u00a7c {0} \u00a76Verwijderde ban op IP\: {1}. playerUnbanned=\u00a76Speler\u00a7c {0} \u00a76verwijderde ban van {1}. playerUnmuted=\u00a76Speler mag weer praten. @@ -424,7 +435,8 @@ pWeatherSet=\u00a76Speler weer is ingesteld op \u00a7c{0}\u00a76 voor\: \u00a7c{ questionFormat=\u00a77[Vraag]\u00a7f {0} radiusTooBig=\u00a74Straal is te groot\! Maximale straal is {0}. readNextPage=Type /{0} {1} om de volgende pagina te lezen. -recentlyForeverAlone=\u00a74{0} recently went offline. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} +recentlyForeverAlone=\u00a74{0} is kort geleden offline gegaan. recipe=\u00a76Recept voor \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 van \u00a7c{2}\u00a76) recipeBadIndex=Er is geen recept met dat nummer. recipeFurnace=\u00a76Smelt\: \u00a7c{0}\u00a76. @@ -446,13 +458,13 @@ requestAcceptedFrom=\u00a7c{0} \u00a76accepteerde uw teleportatie aanvraag. requestDenied=\u00a77Teleporteer aanvraag geweigerd. requestDeniedFrom=\u00a7c{0} \u00a76heeft uw teleportatie aanvraag geweigerd. requestSent=\u00a77Aanvraag verstuurd naar {0}\u00a77. -requestSentAlready=\u00a74You have already sent {0}\u00a74 a teleport request. +requestSentAlready=\u00a74Je hebt {0}\u00a74 al een teleport verzoek gestuurd. requestTimedOut=\u00a7cTeleportatie verzoek is verlopen. requiredBukkit=\u00a76* \! * U heeft op zijn minst build {0} van CraftBukkit nodig, download het vanaf http\://dl.bukkit.org/downloads/craftbukkit/ resetBal=\u00a76Balans is gereset naar \u00a7c{0} \u00a76voor alle online spelers. resetBalAll=\u00a76Saldo is gereset naar \u00a7c{0} \u00a76voor alle spelers. returnPlayerToJailError=\u00a74Een error is verschenen tijdens het proberen om het terugsturen van speler\u00a7c {0} \u00a74naar gevangenis\: \u00a7c{1}\u00a74\! -runningPlayerMatch=\u00a76Zoeken naar spelers die ''\u00a7c{0}\u00a76'' matchen (Dit kan even duren) +runningPlayerMatch=\u00a76Zoeken naar spelers die ''\u00a7c{0}\u00a76'' matchen (Dit kan even duren) second=seconde seconds=seconden seenAccounts=\u00a76Speler is ook bekend als\:\u00a7c {0} @@ -463,7 +475,7 @@ sellHandPermission=\u00a76You do not have permission to hand sell. serverFull=Server is vol. serverTotal=\u00a76Server Totaal\:\u00a7c {0} setBal=\u00a7aUw saldo is ingesteld op {0}. -setBalOthers=\u00a7aU heeft het saldo van {0} \u00a7aingesteld op {1}. +setBalOthers=\u00a7aU heeft het saldo van {0} \u00a7aingesteld op {1}. setSpawner=\u00a76Veranderde oproeper type naar\u00a7c {0}\u00a76. sheepMalformedColor=\u00a74Misvormde kleur. shoutFormat=\u00a76[Schreeuw]\u00a7r {0} @@ -477,6 +489,9 @@ slimeMalformedSize=\u00a74Misvormde grootte. socialSpy=\u00a76SocialSpy voor \u00a7c{0}\u00a76\: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +southEast=SE +south=S +southWest=SW socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=\u00a74Die mob is liever in zijn eentje. spawned=Gespawnt @@ -503,22 +518,22 @@ teleporting=\u00a76Bezig met teleporteren... teleportInvalidLocation=De waarde van co\u00f6rdinaten kan niet hoger dan 30000000 zijn teleportNewPlayerError=\u00a74Fout bij het teleporteren van nieuwe speler\! teleportRequest=\u00a7c{0}\u00a76 vraagt of hij naar u kan teleporteren. -teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled. -teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled. +teleportRequestAllCancelled=\u00a76Alle openstaaande teleport verzoeken zijn geannuleerd. +teleportRequestSpecificCancelled=\u00a76Openstaande teleport verzoeken van {0} zijn geannuleerd. teleportRequestTimeoutInfo=\u00a76Dit verzoekt verloopt na\u00a7c {0} seconde(n)\u00a76. teleportTop=\u00a77Bezig met teleporteren naar het hoogste punt. teleportToPlayer=\u00a76Teleporteren naar \u00a7c{0}\u00a76. tempbanExempt=\u00a74U kunt deze speler niet tijdelijk verbannen. tempbanExemptOffline=\u00a74Je mag geen spelers tijdelijk verbannen wanneer zij offline zijn. -tempbanJoin=You are banned from this server for {0}. Reason: {1} -tempBanned=\u00a7cYou have been temporarily banned for {0}\:\n\u00a7r{2} +tempbanJoin=Je bent verbannen van de server voor {0}, met als reden: {1} +tempBanned=\u00a7cJe bent tijdelijk verbannen voor {0}\:\n\u00a7r{2} thunder=\u00a76U heeft onweer\u00a7c {0} \u00a76in uw wereld. thunderDuration=\u00a76U heeft onweer \u00a7c{0}\u00a76 in uw wereld voor \u00a7c{1}\u00a76 seconde(n). timeBeforeHeal=\u00a74Afkoeltijd tot de volgende genezing\:\u00a7c {0}\u00a76. timeBeforeTeleport=\u00a74Afkoeltijd tot de volgende teleportatie\:\u00a7c {0}\u00a76. timeFormat=\u00a7c{0}\u00a76 of \u00a7c{1}\u00a76 of \u00a7c{2}\u00a76 timeSetPermission=\u00a74U bent niet bevoegd om de tijd te veranderen. -timeSetWorldPermission=\u00a74You are not authorized to set the time in world ''{0}''. +timeSetWorldPermission=\u00a74U bent niet bevoegd om de tijd te veranderen in wereld ''{0}''. timeWorldCurrent=\u00a76De huidige tijd in \u00a7c{0}\u00a76 is \u00a7c{1}\u00a76. timeWorldSet=\u00a76De tijd was veranderd naar \u00a7c{0}\u00a76 in\: \u00a7c{1}\u00a76. totalSellableAll=\u00a7aDe totale waarde van alle verkoopbare voorwerpen en blokken is \u00a7c {1} \u00a7a. @@ -531,7 +546,7 @@ tradeSignEmptyOwner=\u00a74Er is niets te innen bij dit handelsbord. treeFailure=\u00a74Fout bij het genereren van de boom. Probeer het opnieuw op gras of aarde. treeSpawned=\u00a76Boom gegenereerd. true=\u00a7ajuist\u00a7r -typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76. +typeTpacancel=\u00a76Om dit te annuleren, typ \u00a7c/tpacancel\u00a76. typeTpaccept=\u00a76Om te accepteren, typ \u00a7c/tpaccept\u00a76. typeTpdeny=\u00a76Om te weigeren, typ \u00a7c/tpdeny\u00a76. typeWorldName=\u00a76U kunt ook de naam van een specifieke wereld typen. @@ -548,8 +563,8 @@ unsafeTeleportDestination=\u00a74De teleportatie bestemming is onveilig en telep unvanishedReload=\u00a74Een herlading heeft u geforceerd om zichtbaar te worden. upgradingFilesError=Fout tijdens het upgraden van de bestanden. uptime=\u00a76Tijd dat de server aanstaat\:\u00a7c {0} -userAFK=\u00a75{0} \u00a75is AFK, en zal mogelijk niet reageren. -userAFKWithMessage=\u00a75{0} \u00a75is AFK, en zal mogelijk niet reageren. {1} +userAFK=\u00a75{0} is AFK, en zal mogelijk niet reageren. +userAFKWithMessage=\u00a75{0} is AFK, en zal mogelijk niet reageren. {1} userdataMoveBackError=Fout bij het verplaasten van userdata/{0}.tmp naar userdata/{1} userdataMoveError=Fout bij het verplaasten van userdata/{0} naar userdata/{1}.tmp userDoesNotExist=Speler {0} bestaat niet. @@ -581,6 +596,7 @@ weatherStorm=\u00a76U heeft het weer naar \u00a7cstormachtig\u00a76 gezet in\u00 weatherStormFor=\u00a76U heeft het weer in \u00a7c{0}\u00a76 naar \u00a7cstormachtig\u00a76 gezet voor {1} seconde(n). weatherSun=\u00a76U heeft het weer naar \u00a7czonnig\u00a76 gezet in\u00a7c {0}\u00a76. weatherSunFor=\u00a76U heeft het weer in \u00a7c{0}\u00a76 naar \u00a7czonnig\u00a76 gezet voor {1} seconde(n). +west=W whoisAFK=\u00a76 - Afwezig\:\u00a7f {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Verbannen\:\u00a7f {0} @@ -599,8 +615,8 @@ whoisMuted=\u00a76 - Gedempt\:\u00a7f {0} whoisMutedReason=\u00a76 - Muted\:\u00a7r {0} \u00a76Reason: \u00a7c{1} whoisNick=\u00a76 - Bijnaam\:\u00a7f {0} whoisOp=\u00a76 - OP\:\u00a7f {0} -whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0} -whoisTempBanned=\u00a76 - Ban expires:\u00a7r {0} +whoisPlaytime=\u00a76 - Speeltijd\:\u00a7r {0} +whoisTempBanned=\u00a76 - Ban is voorbij in:\u00a7r {0} whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7f {0} \u00a76\=\=\=\=\=\= whoisUuid=\u00a76 - UUID\:\u00a7r {0} worth=\u00a7aStapel {0} met waarde \u00a7c{1}\u00a7a ({2} voorwerp(en) voor {3} per stuk) @@ -609,4 +625,4 @@ worthSet=\u00a76Waarde ingesteld year=jaar years=jaren youAreHealed=\u00a76U bent genezen. -youHaveNewMail=\u00a76U heeft \u00a7c{0}\u00a76 berichten\! Type \u00a7c/mail read\u00a76 om uw berichten te bekijken. \ No newline at end of file +youHaveNewMail=\u00a76U heeft \u00a7c{0}\u00a76 berichten\! Type \u00a7c/mail read\u00a76 om uw berichten te bekijken. diff --git a/Essentials/src/messages_pl.properties b/Essentials/src/messages_pl.properties index 080a7cbc1..0b9d3d329 100644 --- a/Essentials/src/messages_pl.properties +++ b/Essentials/src/messages_pl.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # Updated by RikoDEV @@ -20,10 +20,10 @@ antiBuildPlace=\u00a74Nie masz uprawnie\u0144, aby postawi\u0107 {0} tutaj. antiBuildUse=\u00a74Nie masz uprawnie\u0144, aby u\u017Cy\u0107 {0}. autoAfkKickReason=Zosta\u0142e\u015B wyrzucony z serwera za nie ruszanie si\u0119 przez wi\u0119cej ni\u017C {0} minut. backAfterDeath=\u00a77U\u017Cyj komendy /back aby powr\u00F3ci\u0107 na miejsce swojej \u015Bmierci. -backupDisabled=\u00a74Zewnetrzny skrypt backupu nie zosta\u0142 skonfigurowany. -backupFinished=\u00a77Backup zako\u0144czony. -backupStarted=\u00a77Backup rozpocz\u0119ty. -backUsageMsg=\u00a77Transportowano Cie do poprzedniej lokacji. +backupDisabled=\u00a74Zewn\u0119trzny skrypt kopi zapasowej nie zosta\u0142 skonfigurowany. +backupFinished=\u00a77Kopia zapasowa zako\u0144czona. +backupStarted=\u00a77Kopia zapasowa rozpocz\u0119ta. +backUsageMsg=\u00a77Transportowano Ci\u0119 do poprzedniej lokacji. balance=\u00a7aStan konta\:\u00a7c {0} balanceOther=\u00a7aStan konta gracza \u00a77{0} \u00a7awynosi\:\u00a7c {1} balanceTop=\u00a77Najbogatsi gracze ({0}) @@ -41,15 +41,15 @@ bigTreeSuccess=\u00a77Stworzono du\u017Ce drzewo. blockList=\u00a77Essentials przekazuje nast\u0119puj\u0105ce polecenie do innej wtyczki\: bookAuthorSet=\u00a77Ustawiono autora ksi\u0105\u017Cki na {0} . bookLocked=\u00a7cKsi\u0105\u017Cka jest teraz zablokowana. -bookTitleSet=\u00a77Ustawiono tytul ksi\u0105\u017Cki na {0} . +bookTitleSet=\u00a77Ustawiono tytu\u0142 ksi\u0105\u017Cki na {0} . broadcast=\u00a7r\u00a77[\u00a74Og\u0142oszenie\u00a77]\u00a7a {0} buildAlert=\u00a74Nie mo\u017Cesz tu budowa\u0107 bukkitFormatChanged=Format wersji Bukkita jest zmieniony. Wersja nie jest sprawdzana. burnMsg=\u00a77Podpaliles\u00a7c  {0} \u00a77na \u00a7c{1} sekund\u00a77. -cannotStackMob=\u00a74Nie masz uprawnie\u0144. by stackowac wiele mob\u00F3w. +cannotStackMob=\u00a74Nie masz uprawnie\u0144. by \u0142\u0105czyć wiele mob\u00F3w. canTalkAgain=\u00a77Zn\u00F3w mo\u017Cesz m\u00F3wi\u0107. cantFindGeoIpDB=Nie mo\u017Cna znale\u017A\u0107 bazy danych GeoIP\! -cantGamemode=\u00a74Nie masz permisji do zmiany trybu gry na {0} +cantGamemode=\u00a74Nie masz uprawnie\u0144 do zmiany trybu gry na {0} cantReadGeoIpDB=Odczytywanie bazy danych GeoIP zawiod\u0142o\! cantSpawnItem=\u00a74Nie mo\u017Cesz stworzy\u0107 przedmiotu\u00a7c {0}\u00a74. chatTypeAdmin=[A] @@ -64,10 +64,10 @@ commandFailed=Komenda {0} zawiod\u0142a. commandHelpFailedForPlugin=B\u0142\u0105d podczas uzyskiwania pomocy dla\: {0} commandNotLoaded=\u00a74Komenda {0} nie jest za\u0142adowana\! compassBearing=\u00a77L\u00F3\u017Cko\:  {0} ({1} stopni). -configFileMoveError=Nie uda\u0142o sie przenie\u015B\u0107 config.yml do lokalizacji backupa. +configFileMoveError=Nie uda\u0142o sie przenie\u015B\u0107 config.yml do lokalizacji kopi zapasowej. configFileRenameError=Nie uda\u0142o sie zmieni\u0107 nazwy tymczasowego pliku na config.yml -confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} -confirmPayment=\u00a77Aby \u00a7lpotwierdzi\u0107\u00a77 p\u0142atno\u015B\u0107 \u00a76{0}\u00a77, wpisz ponownie: \u00a76{1} +confirmClear=\u00a77Aby \u00a7lPOTWIERDZI\u0106\u00a77 wyczyszczenie ekwipunku, wpisz ponownie \u00a76{0} +confirmPayment=\u00a77Aby \u00a7lPOTWIERDZI\u0106\u00a77 p\u0142atno\u015B\u0107 \u00a76{0}\u00a77, wpisz ponownie: \u00a76{1} connectedPlayers=\u00a77Aktywni gracze\u00a7r connectionFailed=B\u0142\u0105d podczas otwierania po\u0142\u0105czenia. cooldownWithMessage=Odczekaj\: {0} @@ -77,9 +77,9 @@ couldNotFindTemplate=\u00a74Nie mo\u017Cna znale\u017A\u0107 szablonu\: {0} createdKit=\u00a76Stworzono zestaw \u00a7c{0} \u00a76z \u00a7c{1} \u00a76przedmiotami i odnowieniem \u00a7c{2} createKitFailed=\u00a74Wyst\u0105pi\u0142 b\u0142\u0105d podczas tworzenia zestawu {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Stworzono zestaw: \u00a7f{0}\n\u00a76Czas odnowienia: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Skopiuj zawarto\u015B\u0107 linku do config.yml. +createKitSuccess=\u00a76Stworzono zestaw: \u00a7f{0}\n\u00a76Czas odnowienia: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Skopiuj zawarto\u015B\u0107 linku do kits.yml. creatingConfigFromTemplate=Tworzenie konfiguracji z szablonu\: {0} -creatingEmptyConfig=Stworzono pusty config\: {0} +creatingEmptyConfig=Stworzono pusty plik konfiguracyjny\: {0} creative=Kreatywny currency={0}{1} currentWorld=\u00a77Bie\u017C\u0105cy \u015Bwiat\:\u00a7c {0} @@ -103,10 +103,11 @@ disabledToSpawnMob=\u00a74Tworzenie tego moba zosta\u0142o wy\u0142\u0105czone w disableUnlimited=\u00a77Wy\u0142\u0105czone nieograniczone tworzenia\u00a7c {0} \u00a77dla {1}. distance=\u00a77Odleg\u0142o\u015B\u0107\: {0} dontMoveMessage=\u00a77Teleportacja nast\u0105pi za\u00a7a {0}\u00a77. Prosz\u0119 si\u0119 nie rusza\u0107. -downloadingGeoIp=Pobieranie bazy danych GeoIP... To mo\u017Ce zaj\u0105\u0107 chwile (kraj\: 0.6 MB, miasto\: 20MB) +downloadingGeoIp=Pobieranie bazy danych GeoIP... To mo\u017Ce zaj\u0105\u0107 chwile (kraj\: 1.7 MB, miasto\: 30MB) duplicatedUserdata=Kopiowanie danych uzytkownika\: {0} i {1} durability=\u00a76Temu narz\u0119dziu pozosta\u0142o \u00a7c{0}\u00a76 u\u017cy\u0107 -editBookContents=\u00a7eNie mo\u017Cesz teraz edytowac tej ksi\u0105\u017Cki. +east=E +editBookContents=\u00a7eNie mo\u017Cesz teraz edytowa\u0107 tej ksi\u0105\u017Cki. enabled=w\u0142\u0105czone enableUnlimited=\u00a76Przyznano nielimitowan\u0105 ilo\u015b\u0107\u00a7c {0} \u00a76dla {1}. enchantmentApplied=\u00a77Ulepszenie\u00a7c {0} \u00a77zosta\u0142o przyznane przedmiotowi w twoim r\u0119ku. @@ -116,16 +117,16 @@ enchantmentRemoved=\u00a77Ulepszenie\u00a7c {0} \u00a77zosta\u0142o usuni\u0119t enchantments=\u00a77Ulepszenia\:\u00a7r {0} errorCallingCommand=B\u0142\u0105d wywo\u0142ywania komendy /{0} errorWithMessage=\u00a7cB\u0142\u0105d\:\u00a74 {0} -essentialsHelp1=Plik jest uszkodzony i Essentials nie mo\u017Ce go otworzyc. Essentials jest teraz wy\u0142\u0105czone. Jesli nie mo\u017Cesz samemu naprawic pliku, idz na  http\://tiny.cc/EssentialsChat -essentialsHelp2=Plik jest uszkodzony i Essentials nie mo\u017Ce go otworzyc. Essentials jest teraz wy\u0142\u0105czone. Jesli nie mo\u017Cesz samemu naprawic pliku, wpisz /essentialshelp w grze lub wejdz na http\://tiny.cc/EssentialsChat +essentialsHelp1=Plik jest uszkodzony i Essentials nie mo\u017Ce go otworzyc. Essentials jest teraz wy\u0142\u0105czone. Jesli nie mo\u017Cesz samemu naprawi\u0107 pliku, id\u017A na  http\://tiny.cc/EssentialsChat +essentialsHelp2=Plik jest uszkodzony i Essentials nie mo\u017Ce go otworzyc. Essentials jest teraz wy\u0142\u0105czone. Jesli nie mo\u017Cesz samemu naprawi\u0107 pliku, wpisz /essentialshelp w grze lub wejd\u017A na http\://tiny.cc/EssentialsChat essentialsReload=\u00a76Essentials prze\u0142adowa\u0142\u00a7c {0}. -exp=\u00a7c{0} \u00a77ma\u00a7c {1} \u00a77doswiadczenia (poziom\u00a7c {2}\u00a77), potrzebuje\u00a7c {3} \u00a77wi\u0119cej doswiadczenia do nastepnego poziomu. -expSet=\u00a7c{0} \u00a77teraz ma\u00a7c {1} \u00a77doswiadczenia. +exp=\u00a7c{0} \u00a77ma\u00a7c {1} \u00a77do\u015Bwiadczenia (poziom\u00a7c {2}\u00a77), potrzebuje\u00a7c {3} \u00a77wi\u0119cej do\u015Bwiadczenia do nast\u0119pnego poziomu. +expSet=\u00a7c{0} \u00a77teraz ma\u00a7c {1} \u00a77do\u015Bwiadczenia. extinguish=\u00a77Zosta\u0142e\u015B ugaszony. extinguishOthers=\u00a77Ugasi\u0142e\u015B {0}\u00a77. -failedToCloseConfig=B\u0142\u0105d podczas zamykania configu {0} -failedToCreateConfig=B\u0142\u0105d podczas tworzenia configu {0} -failedToWriteConfig=B\u0142\u0105d podczas pisania configu {0} +failedToCloseConfig=B\u0142\u0105d podczas zamykania konfiguracji {0} +failedToCreateConfig=B\u0142\u0105d podczas tworzenia konfiguracji {0} +failedToWriteConfig=B\u0142\u0105d podczas pisania konfiguracji {0} false=\u00a74nie\u00a7r feed=\u00a77Tw\u00F3j g\u0142\u00F3d zosta\u0142 zaspokojony. feedOther=\u00a76Zaspokoi\u0142e\u015b apetyt {0}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Nieprawid\u0142owa op\u0142ata. invalidFireworkFormat=\u00a76Opcja \u00a74{0} \u00a76nie jest prawid\u0142ow\u0105 warto\u015bci\u0105 dla \u00a74{1}\u00a76. invalidHome=\u00a74Dom\u00a7c {0} \u00a74nie istnieje. invalidHomeName=\u00a74Niepoprawna nazwa domu. +invalidItemFlagMeta=\u00a74Niepoprawny tag meta itemflag\: \u00a7c{0}\u00a74. invalidMob=\u00a74Niepoprawny typ moba. invalidNumber=Niepoprawna liczba. invalidPotion=\u00a74Niepoprawna mikstura. @@ -203,16 +205,18 @@ inventoryClearFail=\u00a74Gracz {0} \u00a74nie posiada\u00a7c {1} {2}\u00a74. inventoryClearingAllArmor=\u00a76Wyczyszczono zbroj\u0119 oraz wszystkie przedmioty z ekwipunku {0}\u00a76.  inventoryClearingAllItems=\u00a76Wyczyszczono wszystkie przedmioty z ekwipunku {0}\u00a76. inventoryClearingAllStack=\u00a76Wyczyszczono wszystkie \u00a7c {0} \u00a76z {1}\u00a76. -inventoryClearingFromAll=\u00a76Czyszczenie ekwipunku wszystkich graczy... +inventoryClearingFromAll=\u00a76Czyszczenie ekwipunk\u00F3w wszystkich graczy... inventoryClearingStack=\u00a76Usun\u0105\u0142e\u015b\u00a7c {0} {1} \u00a76graczowi {2}\u00a76. is=jest isIpBanned=\u00a77IP \u00a7c{0} \u00a77jest zbanowany. -itemCannotBeSold=\u00a7rNie mo\u017Cesz sprzedac tego przedmiotu serwerowi. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. +itemCannotBeSold=\u00a7rNie mo\u017Cesz sprzeda\u0107 tego przedmiotu serwerowi. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Przedmiotem handluje si\u0119 w stackach. Wielko\u015B\u0107 2s to dwa stacki itd. itemNames=\u00a77Kr\u00F3tka nazwa\:\u00a7r {0} itemNotEnough1=\u00a74Masz za ma\u0142o tego przedmiotu, aby go sprzeda\u0107. itemNotEnough2=\u00a77Je\u015Bli chcesz sprzeda\u0107 wszystkie przedmioty tego typu, wpisz /sell nazwaprzedmiotu -itemNotEnough3=\u00a77/sell nazwaprzedmiotu -1 sprzeda ca\u0142\u0105 ilo\u015B\u0107 przedmiotu poza 1 sztuk\u0105 itd. +itemNotEnough3=\u00a77/sell nazwa_przedmiotu -1 sprzeda ca\u0142\u0105 ilo\u015B\u0107 przedmiotu poza 1 sztuk\u0105 itd. itemsConverted=\u00a76Zmieniono wszystkie przedmioty na bloki. itemsCsvNotLoaded=Nie mo\u017Cna wczyta\u0107 pliku items.csv. itemSellAir=Serio pr\u00F3bujesz sprzeda\u0107 powietrze? Miej w r\u0119ku przedmiot.. @@ -220,9 +224,10 @@ itemsNotConverted=\u00a74Nie znaleziono przedmiot\u00F3w kt\u00F3re mo\u017Cna z itemSold=\u00a7aSprzedano za \u00a7c{0} \u00a7a({1} {2} po {3} ka\u017Cdy) itemSoldConsole=\u00a7a{0} \u00a7aSprzedano {1} za \u00a7a{2} \u00a7a({3} sztuki po {4} kazda) itemSpawn=\u00a77Otrzymano\u00a7c {0} \u00a77z\u00a7c {1} -itemType=\u00a77Przedmiot\:\u00a7c {0} \u00a77-\u00a7c {1} +itemType=\u00a77Przedmiot\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Ten gracz jest ju\u017C w wi\u0119zieniu \u00a7c{0} \u00a74. -jailMessage=\u00a74Za ka\u017Cde przewinienie czeka Cie kara. +jailList=\u00a76Wi\u0119zienia\:\u00a7r {0} +jailMessage=\u00a74Za ka\u017Cde przewinienie czeka Ci\u0119 kara. jailNotExist=\u00a74Nie ma takiego wi\u0119zienia. jailReleased=\u00a77Gracz \u00a7c{0}\u00a77 zosta\u0142 wypuszczony z wi\u0119zienia. jailReleasedPlayerNotify=\u00a77Zosta\u0142e\u015B zwolniony\! @@ -246,7 +251,7 @@ kitNotFound=\u00a74Ten zestaw nie istnieje . kitOnce=\u00a74Nie mo\u017Cesz u\u017Cy\u0107 tego zestawu ponownie. kitReceive=\u00a77Otrzyma\u0142e\u015B zestaw\u00a7c {0}\u00a77. kits=\u00a77Zestawy\:\u00a7r {0} -kitTimed=\u00a74Nie mo\u017Cesz wzi\u0105\u015B\u0107 tego zestawu przez kolejne\u00a7c {0}\u00a74. +kitTimed=\u00a74Nie mo\u017Cesz wzi\u0105\u0107 tego zestawu przez kolejne\u00a7c {0}\u00a74. leatherSyntax=\u00a77Sk\u0142adnia koloru sk\u00F3ry\: color\:,, np\: color\:255,0,0. lightningSmited=\u00a77Zosta\u0142e\u015B uderzony piorunem. lightningUse=\u00a77Uderzono piorunem\u00a7c {0}\u00a77. @@ -271,11 +276,11 @@ markedAsNotAway=\u00a77Ju\u017C nie jeste\u015B nieobecny. markMailAsRead=\u00a76Aby oznaczy\u0107 swoj\u0105 poczt\u0119 jako przeczytan\u0105, wpisz\u00a7c /mail clear\u00a76. matchingIPAddress=\u00a77Gracz wcze\u015Bniej by\u0142 zalogowany z tego adresu IP\: maxHomes=\u00a74Nie mo\u017Cesz ustawic wi\u0119cej ni\u017C\u00a7c {0} \u00a74domow. -maxMoney=\u00a74Ta tranzakcja przekroczy\u0142aby limit salda dla tego konta +maxMoney=\u00a74Ta transakcja przekroczy\u0142aby limit salda dla tego konta mayNotJail=\u00a74Nie mo\u017Cesz wtr\u0105ci\u0107 do wi\u0119zienia tej osoby. mayNotJailOffline=\u00a74Nie mo\u017cesz wi\u0119zi\u0107 graczy b\u0119d\u0105cych offline. me=Ja -minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}. +minimumPayAmount=\u00a7cMinimalna kwota, jak\u0105 mo\u017Cesz zap\u0142aci\u0107, to {0}. minute=minuta minutes=minut missingItems=\u00a74Nie posiadasz {0}x {1}. @@ -283,20 +288,20 @@ mobDataList=\u00a76Prawid\u0142owe dane moba\:\u00a7r {0} mobsAvailable=\u00a77Moby\: {0} mobSpawnError=\u00a74B\u0142\u0105d podczas zmiany spawnera. mobSpawnLimit=Ilo\u015B\u0107 mob\u00F3w ograniczona do limitu serwera. -mobSpawnTarget=\u00a74Blok musi byc spawnerem. +mobSpawnTarget=\u00a74Blok musi by\u0107 spawnerem. moneyRecievedFrom=\u00a7a{0} otrzymane od {1} moneySentTo=\u00a7a{0} zosta\u0142o wys\u0142ane do {1} month=miesiac months=miesi\u0119cy -moreThanZero=\u00a74Ilo\u015B\u0107 musi byc wi\u0119ksza ni\u017C 0. +moreThanZero=\u00a74Ilo\u015B\u0107 musi by\u0107 wi\u0119ksza ni\u017C 0. moveSpeed=\u00a76Zmieni\u0142e\u015b szybko\u015b\u0107 {0}nia dla\u00a76 {2}\u00a76 na\u00a7c {1}\u00a76. -msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76. -msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76. -msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76. -msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76. +msgDisabled=\u00a76Odbieranie wiadomo\u015Bci \u00a7cwy\u0142\u0105czone\u00a76. +msgDisabledFor=\u00a76Odbieranie wiadomo\u015Bci \u00a7cwy\u0142\u0105czone \u00a76dla \u00a7c{0}\u00a76. +msgEnabled=\u00a76Odbieranie wiadomo\u015Bci \u00a7cw\u0142\u0105czone\u00a76. +msgEnabledFor=\u00a76Odbieranie wiadomo\u015Bci \u00a7cw\u0142\u0105czone \u00a76dla \u00a7c{0}\u00a76. msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} -msgIgnore=\u00a7c{0} \u00a74has messages disabled. -multipleCharges=\u00a74Nie mo\u017Cesz ustawic wi\u0119cej ni\u017C jeden ladunek dla tej fajerwerki. +msgIgnore=\u00a7c{0} \u00a74ma wy\u0142\u0105czone wiadomo\u015Bci prywatne. +multipleCharges=\u00a74Nie mo\u017Cesz ustawic wi\u0119cej ni\u017C jeden \u0142adunek dla tej fajerwerki. multiplePotionEffects=\u00a74Nie mo\u017Cesz ustawic wi\u0119cej ni\u017C jeden efekt dla tej mikstury. mutedPlayer=\u00a76Gracz\u00a7c {0} \u00a76zosta\u0142 wyciszony. mutedPlayerFor=\u00a76Gracz\u00a7c {0} \u00a76zosta\u0142 wyciszony za\u00a7c {1}\u00a76. @@ -304,17 +309,18 @@ mutedPlayerForReason=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76 mutedPlayerReason=\u00a76Player\u00a7c {0} \u00a76muted. \u00a76Reason: \u00a7c{1} mutedUserSpeaks={0} pr\u00F3bowa\u0142 si\u0119 odezwa\u0107, ale jest wyciszony. muteExempt=\u00a74Nie mo\u017Cesz wyciszy\u0107 tego gracza.. -muteExemptOffline=\u00a74Nie mo\u017cesz wyciszy\u0107 graczy b\u0119d\u0105chych offline. +muteExemptOffline=\u00a74Nie mo\u017cesz wyciszy\u0107 graczy b\u0119d\u0105cych offline. muteNotify=\u00a7c{0} \u00a76wyciszy\u0142 \u00a7c{1}\u00a76. -muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. +muteNotifyFor=\u00a7c{0} \u00a76wyciszy\u0142 gracza \u00a7c{1}\u00a76 na\u00a7c {2}\u00a76. muteNotifyForReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76. \u00a76Reason: \u00a7c{3} muteNotifyReason=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76. \u00a76Reason: \u00a7c{2} nearbyPlayers=\u00a77Gracze w pobli\u017Cu\:\u00a7r {0} negativeBalanceError=\u00a74Gracz nie mo\u017Ce mie\u0107 ujemnego stanu konta. nickChanged=\u00a77Nick gracza zosta\u0142 zmieniony. -nickDisplayName=\u00a74Musisz w\u0142\u0105czy\u0107 change-displayname w configu Essential. +nickDisplayName=\u00a74Musisz w\u0142\u0105czy\u0107 change-displayname w konfiguracji EssentialsX. nickInUse=\u00a74Ten pseudonim jest ju\u017C w u\u017Cyciu. nickNamesAlpha=\u00a74Pseudonimy musz\u0105 by\u0107 alfanumeryczne. +nickNamesOnlyColorChanges=\u00a74Tylko kolory pseudonim\u00F3w mog\u0105 zosta\u0107 zmienione. nickNoMore=\u00a77Nie masz ju\u017C pseudonimu. nickSet=\u00a76Tw\u00F3j nowy nick\: \u00a7c{0}\u00a76. nickTooLong=\u00a74Ten pseudonim jest za d\u0142ugi. @@ -323,12 +329,16 @@ noAccessPermission=\u00a74Nie jeste\u015b uprawniony do dost\u0119pu do tego {0} noBreakBedrock=\u00a74Nie masz uprawnie\u0144 do niszczenia bedrocka. noDestroyPermission=\u00a74Nie jeste\u015b uprawniony do niszczenia tego {0}. noDurability=\u00a74Ten przedmiot nie jest wytrzyma\u0142y. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Uwaga\! Godmode jest wy\u0142\u0105czony w tym \u015Bwiecie\!. -noHelpFound=\u00a74Nie ma odpowiadajacych komend. +noHelpFound=\u00a74Nie ma odpowiadaj\u0105cych komend. noHomeSetPlayer=\u00a77Gracz nie ma ustawionego domu. noIgnored=\u00a77Nikogo nie ignorujesz. +noJailsDefined=\u00a76Nie zdefiniowano \u017Cadnych wi\u0119zie\u0144. noKitGroup=\u00a74Nie masz dost\u0119pu do tego zestawu. -noKitPermission=\u00a74Musisz posiadac uprawnienia \u00a7c{0}\u00a74 aby u\u017Cywa\u0107 tego zestawu. +noKitPermission=\u00a74Musisz posiada\u0107 uprawnienia \u00a7c{0}\u00a74 aby u\u017Cywa\u0107 tego zestawu. noKits=\u00a77Nie ma jeszcze dost\u0119pnych zestaw\u00F3w. noLocationFound=\u00a74Nie znaleziono prawid\u0142owej lokalizacji. noMail=\u00a77Nie masz \u017Cadnych wiadomosci. @@ -363,20 +373,21 @@ onlyDayNight=/time obs\u0142uguje tylko day/night. onlyPlayers=\u00a74Tylko gracze b\u0119d\u0105cy w grze mog\u0105 u\u017Cy\u0107 {0}. onlyPlayerSkulls=\u00a74Mo\u017cesz tylko zmienia\u0107 w\u0142a\u015bciciela g\u0142owy gracza (397\:3). onlySunStorm=\u00a74/weather obs\u0142uguje tylko sun/storm. +openingDisposal=\u00a76Otwieranie menu kosza... orderBalances=Pobieram fundusze {0} graczy, prosz\u0119 czeka\u0107 ... oversizedTempban=\u00a74Nie mo\u017Cesz teraz zbanowa\u0107 tego gracza. -payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. -payConfirmToggleOn=\u00a76You will now be prompted to confirm payments. +payConfirmToggleOff=\u00a76Nie b\u0119dziesz ju\u017C proszony o potwierdzenie p\u0142atno\u015Bci. +payConfirmToggleOn=\u00a76B\u0119dziesz poproszony o potwierdzenie p\u0142atno\u015Bci. payMustBePositive=\u00a74Kwota p\u0142atno\u015Bci musi by\u0107 dodatnia. payToggleOff=\u00a76Wy\u0142\u0105czono mo\u017Cliwo\u015B\u0107 akceptacji wp\u0142at. payToggleOn=\u00a76Akceptujesz ju\u017C wp\u0142aty. pendingTeleportCancelled=\u00a74Oczekuj\u0105ce zapytanie teleportacji odrzucone. playerBanIpAddress=\u00a76Gracz\u00a7c {0} \u00a76zbanowa\u0142 adres IP\u00a7c {1} \u00a76za\: \u00a7c{2}\u00a76. playerBanned=\u00a7c{0} \u00a76zbanowa\u0142\u00a7c {1} \u00a76za {2}. -playerInJail=\u00a74Gracz jest ju\u017C w wiezieniu \u00a7c{0}\u00a77. -playerJailed=\u00a77Gracz\u00a7c {0} \u00a77zosta\u0142 wtracony do wi\u0119zienia. -playerJailedFor=\u00a77Gracz\u00a7c {0} \u00a77zosta\u0142 wtracony do wi\u0119zienia na {1}. -playerKicked=\u00a77Gracz\u00a7c {0} \u00a77wyrzucil {1} za {2}. +playerInJail=\u00a74Gracz jest ju\u017C w wi\u0119zieniu \u00a7c{0}\u00a77. +playerJailed=\u00a77Gracz\u00a7c {0} \u00a77zosta\u0142 wtr\u0105cony do wi\u0119zienia. +playerJailedFor=\u00a77Gracz\u00a7c {0} \u00a77zosta\u0142 wtr\u0105cony do wi\u0119zienia na {1}. +playerKicked=\u00a77Gracz\u00a7c {0} \u00a77wyrzuci\u0142 gracza {1} za {2}. playerMuted=\u00a77Zosta\u0142e\u015B wyciszony. playerMutedFor=\u00a77Zosta\u0142e\u015B wyciszony na\u00a7c {0}. playerMutedForReason=\u00a76You have been muted for\u00a7c {0}. \u00a76Reason: \u00a7c{1} @@ -405,40 +416,41 @@ powerToolNoSuchCommandAssigned=\u00a74Komenda \u00a7c{0}\u00a74 nie jest przypis powerToolRemove=\u00a76Usuni\u0119to komende \u00a7c{0}\u00a76 z {1}. powerToolRemoveAll=\u00a76Usuni\u0119to wszystkie komendy z {0}. powerToolsDisabled=\u00a77Wszystkie twoje podpi\u0119cia zosta\u0142y zdezaktywowane. -powerToolsEnabled=\u00a77Wszystkie twojee podpi\u0119cia zosta\u0142y aktywowane. +powerToolsEnabled=\u00a77Wszystkie twoje podpi\u0119cia zosta\u0142y aktywowane. pTimeCurrent=Czas \u00a7e{0} u00a7f to {1}. pTimeCurrentFixed=\u00a77Czas \u00a7c{0}\u00a77 przywr\u00F3cony do\u00a7c {1}\u00a77. -pTimeNormal=\u00a77Czas \u00a7c{0}''s\u00a77 jest normalny i odpowiada serwerowemu. +pTimeNormal=\u00a77Czas gracza \u00a7c{0}\u00a77 jest normalny i odpowiada serwerowemu. pTimeOthersPermission=\u00a74Nie masz uprawnie\u0144 do zmiany czasu innym. -pTimePlayers=\u00a77Ci gracze b\u0119d\u0105 mie\u0107 wlasny czas\:\u00a7r +pTimePlayers=\u00a77Ci gracze b\u0119d\u0105 mie\u0107 w\u0142asny czas\:\u00a7r pTimeReset=\u00a77Czas gracza zosta\u0142 zresetowany dla \u00a7c{0} pTimeSet=\u00a77Czas gracza ustawiony na \u00a7c{0}\u00a77 dla\: \u00a7c{1}. pTimeSetFixed=\u00a77Czas gracza przywr\u00F3cony do \u00a7c{0}\u00a77 dla \u00a7c{1}. pWeatherCurrent=\u00a7c{0}\u00a77 pogoda to\u00a7c {1}\u00a77. pWeatherInvalidAlias=\u00a74Niepoprawny typ pogody pWeatherNormal=\u00a7c{0}\u00a77 pogoda jest normalna i pasuje do serwera. -pWeatherOthersPermission=\u00a74Nie masz uprawnie\u0144, by zmieni\u0107 pogode pozosta\u0142ym graczom. -pWeatherPlayers=\u00a77Ci gracze maj\u0105 w\u0142asn\u0105 pogode\:\u00a7r -pWeatherReset=\u00a77Gracz zresetowal pogode dla\: \u00a7c{0} -pWeatherSet=\u00a77Gracz ustawil pogode \u00a7c{0}\u00a77 dla\: \u00a7c{1}. +pWeatherOthersPermission=\u00a74Nie masz uprawnie\u0144, by zmieni\u0107 pogod\u0119 pozosta\u0142ym graczom. +pWeatherPlayers=\u00a77Ci gracze maj\u0105 w\u0142asn\u0105 pogod\u0119\:\u00a7r +pWeatherReset=\u00a77Gracz zresetowa\u0142 pogod\u0119 dla\: \u00a7c{0} +pWeatherSet=\u00a77Gracz ustawil pogod\u0119 \u00a7c{0}\u00a77 dla\: \u00a7c{1}. questionFormat=\u00a72[Pytanie]\u00a7r {0} radiusTooBig=\u00a74Zasi\u0119g jest zbyt du\u017cy\! Maksymalny zasi\u0119g to {0}. -readNextPage=\u00a77Wpisz\u00a7c /{0} {1} \u00a77aby przeczytac nastepna strone. -recentlyForeverAlone=\u00a74{0} recently went offline. +readNextPage=\u00a77Wpisz\u00a7c /{0} {1} \u00a77aby przeczyta\u0107 nast\u0119pn\u0105 strone. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} +recentlyForeverAlone=\u00a74{0} niedawno wszed\u0142 w tryb offline. recipe=\u00a76Receptura dla \u00a7c{0}\u00a76 ({1} z {2}) recipeBadIndex=Nie ma receptury dla tego numeru. recipeFurnace=\u00a76Przepal \u00a7c{0} recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X recipeGridItem=\u00a7{0}X \u00a76to \u00a7c{1} recipeMore=\u00a77Wpisz /{0} \u00a7c{1}\u00a77 by zobaczy\u0107 receptury dla \u00a7c{2} \u00a77. -recipeNone=Nie ma receptur dla {0} . +recipeNone=Nie ma receptur dla {0}. recipeNothing=nic recipeShapeless=\u00a77Kombinacja \u00a7c{0} recipeWhere=\u00a77Gdzie\: {0} removed=\u00a77Usuni\u0119to\u00a7c {0} \u00a77podmiot\u00F3w. repair=\u00a76Naprawi\u0142e\u015b pomy\u015blnie swoje\: \u00a7c{0}. -repairAlreadyFixed=\u00a74Ten przedmiot nie potrzebuje naprawy -repairEnchanted=\u00a74Nie masz zezwolenia do naprawiania ulepszonych przedmiot\u00F3w. +repairAlreadyFixed=\u00a74Ten przedmiot nie potrzebuje naprawy. +repairEnchanted=\u00a74Nie masz uprawnie\u0144 na naprawiania ulepszonych przedmiot\u00F3w. repairInvalidType=\u00a74Ten przedmiot nie mo\u017Ce byc naprawiony. repairNone=\u00a74\u017badne twoje przedmioty nie potrzebuj\u0105 naprawy. requestAccepted=\u00a77Pro\u015Bba o teleportacje - zaakceptowano. @@ -452,31 +464,34 @@ requiredBukkit=* \! * Potrzebujesz najnowszego {0} CraftBukkit-a, pobierz go z h resetBal=\u00a76Saldo zosta\u0142o zresetowane na \u00a7a{0} \u00a76dla wszystkich graczy b\u0119d\u0105cych online. resetBalAll=\u00a76Saldo zosta\u0142o zresetowane na \u00a7a{0} \u00a76dla wszystkich graczy. returnPlayerToJailError=\u00a74Wyst\u0105pi\u0142 b\u0142\u0105d podczas powracania gracza\u00a7c {0} \u00a74do wi\u0119zienia\: {1}\! -runningPlayerMatch=\u00a77Wyszukiwanie pasuj\u0105cych graczy ''\u00a7c{0}\u00a77'' (to mo\u017Ce chwile potrwa\u0107) +runningPlayerMatch=\u00a77Wyszukiwanie pasuj\u0105cych graczy \u00a7c{0}\u00a77 (to mo\u017Ce chwil\u0119 potrwa\u0107) second=sekunda seconds=sekund seenAccounts=\u00a76Gracz jest tak\u017ce znany jako\:\u00a7c {0} seenOffline=\u00a76Gracz\u00a7c {0} \u00a76jest \u00a74offline\u00a76 od {1}. seenOnline=\u00a76Gracz\u00a7c {0} \u00a76jest \u00a7aonline\u00a76 od {1}. -sellBulkPermission=\u00a76You do not have permission to bulk sell. -sellHandPermission=\u00a76You do not have permission to hand sell. +sellBulkPermission=\u00a76Nie posiadasz uprawnie\u0144 na sprzeda\u017C wszystkich przedmiot\u00F3w. +sellHandPermission=\u00a76Nie posiadasz uprawnie\u0144 na sprzeda\u017C przedmiot\u00F3w trzymanych w r\u0119ku. serverFull=Serwer jest pe\u0142en graczy, spr\u00F3buj pozniej. serverTotal=\u00a77Podsumowanie serwera\:\u00a7c {0} setBal=\u00a7aTw\u00F3j stan konta ustawiono na {0}. setBalOthers=\u00a7aUstawi\u0142e\u015b saldo {0}\u00a7a na {1}. setSpawner=\u00a76Zmieniono typ spawnera na\u00a7c {0} sheepMalformedColor=\u00a74Niew\u0142a\u015Bciwa barwa. -shoutFormat=\u00a77[Shout]\u00a7r {0} +shoutFormat=\u00a77[KRZYK]\u00a7r {0} signFormatFail=\u00a74[{0}] signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Nie masz zezwolenia do tworzenia tutaj znak\u00F3w. similarWarpExist=\u00a74Warp o tej nazwie ju\u017C istnieje. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Czaszka zosta\u0142a zmieniona na \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Niew\u0142a\u015Bciwy rozmiar. socialSpy=\u00a76SocialSpy dla {0}\u00a76\: {1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} -socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(wyciszony) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=\u00a74Ten mob lubi by\u0107 sam. spawned=stworzono @@ -498,7 +513,7 @@ teleportationEnabled=\u00a76Teleportacja w\u0142\u0105czona. teleportationEnabledFor=\u00a76Teleportacja w\u0142\u0105czona dla {0}. teleportAtoB=\u00a76Zosta\u0142e\u015b przeteleportowany przez \u00a7c{0}\u00a76 do {1}\u00a76. teleportDisabled=\u00a7c{0} \u00a74ma zdezaktywowana teleportacje. -teleportHereRequest=\u00a7c{0}\u00a77 ma zadanie przeteleportowac Cie do nich. +teleportHereRequest=\u00a7c{0}\u00a77 ma zadanie przeteleportowa\u0107 Ci\u0119 do nich. teleporting=\u00a77Teleportacja... teleportInvalidLocation=Warto\u015b\u0107 koordynat\u00f3w nie mo\u017ce przekroczy\u0107 30000000 teleportNewPlayerError=\u00a74B\u0142\u0105d przy teleportowniu nowego gracza. @@ -510,7 +525,7 @@ teleportTop=\u00a77Teleportacja na wierzch. teleportToPlayer=\u00a76Teleportowanie do \u00a7c{0}\u00a76. tempbanExempt=\u00a74Nie mo\u017Cesz tymczasowo zbanowa\u0107 tego gracza. tempbanExemptOffline=\u00a74Nie mo\u017Cesz tymczasowo zablokowa\u0107 graczy offline. -tempbanJoin=You are banned from this server for {0}. Reason: {1} +tempbanJoin=Jeste\u015B zbanowany na tym serwerze na {0}. Pow\u00F3d: {1} tempBanned=\u00a7cZosta\u0142e\u015B tymczasowo zbanowany na {0}\:\n\u00a7r{2} thunder=\u00a7c{0} \u00a77przywo\u0142a\u0142 burz\u0119. thunderDuration=\u00a77Gracz \u00a7c{0} \u00a77przywo\u0142a\u0142 burz\u0119 na\u00a7c {1} \u00a77sekund. @@ -518,13 +533,13 @@ timeBeforeHeal=\u00a77Czas przed nast\u0119pnym uzdrowieniem\:\u00a7c {0}\u00a77 timeBeforeTeleport=\u00a77Czas przed nast\u0119pnym teleportem\:\u00a7c {0}. timeFormat=\u00a7c{0}\u00a76 lub \u00a7c{1}\u00a76 lub \u00a7c{2}\u00a76 timeSetPermission=\u00a74Nie masz uprawnie\u0144 do ustawiania czasu. -timeSetWorldPermission=\u00a74You are not authorized to set the time in world ''{0}''. +timeSetWorldPermission=\u00a74Nie masz uprawnie\u0144 do zmiany czasu w \u015Bwiecie {0}. timeWorldCurrent=\u00a77Obecny czas\u00a7c {0} \u00a77to \u00a7c{1}\u00a77. timeWorldSet=\u00a77Ustawiono czas\u00a7c {0} \u00a77w\: \u00a7c{1}\u00a77. totalSellableAll=\u00a7aCa\u0142kowita warto\u015b\u0107 wszystkich sprzedawalnych przedmiot\u00f3w i blok\u00f3w wynosi \u00a7c{1}\u00a7a. totalSellableBlocks=\u00a7aCa\u0142kowita warto\u015b\u0107 wszystkich sprzedawalnych blok\u00f3w wynosi \u00a7c{1}\u00a7a. -totalWorthAll=\u00a7aSprzedano wszystkie twoje bloki i przedmioty za kwote {1}. -totalWorthBlocks=\u00a7aSprzedano wszystkie twoje bloki za kwote {1}. +totalWorthAll=\u00a7aSprzedano wszystkie twoje bloki i przedmioty za kwot\u0119 {1}. +totalWorthBlocks=\u00a7aSprzedano wszystkie twoje bloki za kwot\u0119 {1}. tps=\u00a77Aktualne TPS \= {0} tradeSignEmpty=\u00a74Tabliczka handlowa nie jest dla Ciebie dost\u0119pna. tradeSignEmptyOwner=\u00a74Nie ma nic do pobrania z tej tabliczki. @@ -557,30 +572,31 @@ userIsAway=\u00a75{0} \u00a75jest teraz AFK. userIsAwayWithMessage=\u00a75{0} \u00a75jest teraz AFK. userIsNotAway=\u00a7c{0} \u00a75nie jest ju\u017C AFK. userJailed=\u00a77Zosta\u0142e\u015B zamkni\u0119ty w wi\u0119zieniu. -userUnknown=\u00a74Ostrzezenie\: Gracz ''\u00a7c{0}\u00a74'' nigdy nie by\u0142 na tym serwerze. +userUnknown=\u00a74Ostrze\u017Cenie\: Gracz \u00a7c{0}\u00a74 nigdy nie by\u0142 na tym serwerze. usingTempFolderForTesting=U\u017Cywam tymczasowego folderu dla testu\: vanish=\u00a76Vanish dla {0}\u00a76\: {1} vanished=\u00a77Ju\u017C jeste\u015B niewidoczny. -versionMismatch=\u00a74Niepoprawna wersja\! Prosze zaktualizowac {0} do tej samej wersji co inne pliki. -versionMismatchAll=\u00a74Niepoprawna wersja\! Prosze zaktualizowac wszystkie pliki Essentials do tej samej wersji. +versionMismatch=\u00a74Niepoprawna wersja\! Prosz\u0119 zaktualizowa\u0107 {0} do tej samej wersji co inne pliki. +versionMismatchAll=\u00a74Niepoprawna wersja\! Prosz\u0119 zaktualizowa\u0107 wszystkie pliki Essentials do tej samej wersji. voiceSilenced=\u00a77Twe usta zosta\u0142y zaszyte. voiceSilencedReason=\u00a76Your voice has been silenced\! \u00a76Reason: \u00a7c{0} walking=chodzi -warpDeleteError=\u00a74Wyst\u0105pi\u0142 problem podczas usuwania pliku z Warpami. +warpDeleteError=\u00a74Wyst\u0105pi\u0142 problem podczas usuwania pliku z warpami. warpingTo=\u00a77Teleportuje do\u00a7c {0}\u00a77. warpList={0} -warpListPermission=\u00a74Nie masz pozwolenia na sprawdzenie listy Warp\u00c3\u00b3w.. +warpListPermission=\u00a74Nie masz pozwolenia na sprawdzenie listy warp\u00c3\u00b3w.. warpNotExist=\u00a74Ten warp nie istnieje. warpOverwrite=\u00a74Nie mo\u017Cesz nadpisac tego warpa. warps=Warpy\: {0} warpsCount=\u00a76Jest\u00a7c {0} \u00a76warp\u00f3w. Wy\u015bwietlanie strony {1} z {2}. warpSet=\u00a77Warp\u00a7c {0} \u00a77stworzony. -warpUsePermission=\u00a74Nie masz pozwolenie na korzystanie z tego Warpa. -weatherInvalidWorld=\u015awiat o nazwie {0} nie zosta\u0142 odnaleziony\! +warpUsePermission=\u00a74Nie masz pozwolenia na korzystanie z tego warpu. +weatherInvalidWorld=\u015Awiat o nazwie {0} nie zosta\u0142 odnaleziony\! weatherStorm=\u00a77Ustawi\u0142e\u015B \u00a7cburze\u00a77 w\u00a7c {0}\u00a77. weatherStormFor=\u00a77Ustawi\u0142e\u015B \u00a7cburze\u00a77 w\u00a7c {0} \u00a77na {1} sekund. weatherSun=\u00a77Ustawi\u0142e\u015B \u00a7cbezchmurn\u0105\u00a77 pogode w\u00a7c {0}\u00a77. -weatherSunFor=\u00a77Ustawi\u0142e\u015B bezchmurn\u0105 pogode w\u00a7c {0} \u00a77na {1} sekund. +weatherSunFor=\u00a77Ustawi\u0142e\u015B bezchmurn\u0105 pogod\u0119 w\u00a7c {0} \u00a77na {1} sekund. +west=W whoisAFK=\u00a77 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a77 - Zbanowany\:\u00a7r {0}. @@ -601,12 +617,12 @@ whoisNick=\u00a77 - Nick\:\u00a7r {0} whoisOp=\u00a77 - OP\:\u00a7r {0} whoisPlaytime=\u00a76 - Czas gry\:\u00a7r {0} whoisTempBanned=\u00a76 - Ban wygasa:\u00a7r {0} -whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\= +whoisTop=\u00a76 \=\=\=\=\=\= Informacje\:\u00a7c {0} \u00a76\=\=\=\=\=\= whoisUuid=\u00a76 - UUID\:\u00a7r {0} worth=\u00a7aStack {0} jest warty \u00a7c{1}\u00a7a ({2}rzedmiot(y) po {3} ka\u017Cdy) worthMeta=\u00a7aStack {0} z metadata {1} jest warty \u00a7c{2}\u00a7a ({3} przedmiot(y) po {4} ka\u017Cdy) -worthSet=\u00a77Cena przedmiotu ustawiona. +worthSet=\u00a77Cena przedmiotu zosta\u0142a ustawiona. year=rok years=lat youAreHealed=\u00a77Zosta\u0142e\u015B uleczony. -youHaveNewMail=\u00a77Masz\u00a7c {0} \u00a77wiadomosci\! Wpisz \u00a7c/mail read\u00a77 aby je przeczytac. \ No newline at end of file +youHaveNewMail=\u00a77Masz\u00a7c {0} \u00a77wiadomo\u015Bci\! Wpisz \u00a7c/mail read\u00a77 aby je przeczyta\u0107. diff --git a/Essentials/src/messages_pt.properties b/Essentials/src/messages_pt.properties index 8d2bd2f59..31ecc5cd5 100644 --- a/Essentials/src/messages_pt.properties +++ b/Essentials/src/messages_pt.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00A74Template n\u00E3o encontrado {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=A criar configura\u00E7\u00E3o baseado no modelo: {0} creatingEmptyConfig=A criar configura\u00E7\u00E3o vazia: {0} creative=criativo @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00A74Spawnar este mob foi desativado na configura\u00E7\u00 disableUnlimited=\u00A76Permiss\u00E3o para construir ilimitadamente {0} desativada por\u00A7c {1}. distance=\u00A76Dist\u00E2ncia: {0} dontMoveMessage=\u00A76Teletransporte vai come\u00E7ar em\u00A7c {0}\u00A76. n\u00E3o te mexas. -downloadingGeoIp=A baixar banco de dados GeoIP... pode demorar algum tempo (pa\u00EDs: 0.6 MB, cidade: 20MB) +downloadingGeoIp=A baixar banco de dados GeoIP... pode demorar algum tempo (pa\u00EDs: 1.7 MB, cidade: 30MB) duplicatedUserdata=Dados do usu\u00E1rio em duplicado: {0} e {1}. durability=\u00A76Esta ferramenta ainda pode ser usada mais \u00A7c{0}\u00A76 vezes +east=E editBookContents=\u00A7ePodes agora alterar o conte\u00FAdo deste livro. enabled=ativou enableUnlimited=\u00A76A dar quantidade ilimidada de\u00A7c {0} \u00A76a \u00A7c{1}\u00A76. @@ -191,6 +192,7 @@ invalidCharge=\u00A74Argumento inv\u00E1lido. invalidFireworkFormat=\u00A74A op\u00E7\u00E3o \u00A7c{0} \u00A74n\u00E3o \u00E9 v\u00E1lida para \u00A7c{1}\u00A74. invalidHome=\u00A74A casa\u00A7c {0} \u00A74n\u00E3o existe! invalidHomeName=\u00A74Nome de casa inv\u00E1lido! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00A74Tipo de mob inv\u00E1lido. invalidNumber=Numero inv\u00E1lido. invalidPotion=\u00A74Po\u00E7\u00E3o inv\u00E1lida. @@ -208,6 +210,8 @@ inventoryClearingStack=\u00A76Removido\u00A7c {0} \u00A76de\u00A7c {1} \u00A76de is=\u00E9 isIpBanned=\u00A76IP \u00A7c{0} \u00A76 est\u00E1 banido. itemCannotBeSold=\u00A74Esse item n\u00E3o pode ser vendido ao servidor. +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=\u00A74O item tem de ser trocado em stacks. A quantidade de 2 deveria ser 2 stacks, etc. itemNames=\u00A76Nomes pequenos para o itens:\u00A7r {0} itemNotEnough1=\u00A74N\u00E3o tens itens suficientes para vender. @@ -220,8 +224,9 @@ itemsNotConverted=\u00A74N\u00E3o tens itens que possam ser transformado em bloc itemSold=\u00A7aVendido por \u00A7c{0} \u00A7a({1} {2} a {3} cada). itemSoldConsole=\u00A7a{0} \u00A7avendeu {1} por \u00A7a{2} \u00A7a({3} itens a {4} cada). itemSpawn=\u00A76A dar\u00A7c {0}\u00A7c {1} -itemType=\u00A76Itens:\u00A7c {0} \u00A76-\u00A7c {1} +itemType=\u00A76Itens:\u00A7c {0} jailAlreadyIncarcerated=\u00A74Esse jogador j\u00E1 est\u00E1 na pris\u00E3o:\u00A7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00A74Foste condenado. Pensa bem antes de voltares a fazer o que fizeste. jailNotExist=\u00A74Essa pris\u00E3o n\u00E3o existe. jailReleased=\u00A76O jogador \u00A7c{0}\u00A76 foi libertado. @@ -315,6 +320,7 @@ nickChanged=\u00A76Nick alterado. nickDisplayName=\u00A74Tens de ativar o change-displayname na configura\u00E7\u00E3o do Essentials. nickInUse=\u00A74Esse nome j\u00E1 est\u00E1 a ser utilizado. nickNamesAlpha=\u00A74Os nicks t\u00EAm de ser ser alfanum\u00E9ricos. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00A76J\u00E1 n\u00E3o tens um nick. nickSet=\u00A76O teu nick agora \u00E9 \u00A7c{0}\u00A76. nickTooLong=\u00A74Nick demasiado grande. @@ -325,8 +331,12 @@ noDestroyPermission=\u00A74N\u00E3o tens permiss\u00E3o para partir \u00A7c{0}\u noDurability=\u00A74Esse item n\u00E3o tem durabilidade. noGodWorldWarning=\u00A74Cuidado! O modo deus n\u00E3o est\u00E1 desativado neste mundo. noHelpFound=\u00A74Nenhum comando corresponde. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=\u00A76O jogador n\u00E3o definiu uma casa. noIgnored=\u00A76N\u00E3o est\u00E1s a ignorar ningu\u00E9m. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00A74 N\u00E3o tens acesso a este kit. noKitPermission=\u00A74Precisas da permiss\u00E3o \u00A7c{0}\u00A74 para usar esse kit. noKits=\u00A76Ainda n\u00E3o existem kits dispon\u00EDveis. @@ -363,6 +373,7 @@ onlyDayNight=/time suporta apenas day/night. onlyPlayers=\u00A74Apenas jogadores podem usar \u00A7c{0}\u00A74. onlyPlayerSkulls=\u00A74S\u00F3 podes definir o propriet\u00E1rio de cr\u00E2nios de jogador (\u00A7c397:3\u00A74). onlySunStorm=\u00A74/weather suporta apenas sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00A76A organizar saldos de\u00A7c {0} \u00A76jogadores, aguarda... oversizedTempban=\u00A74N\u00E3o podes banir um jogador por tanto tempo. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00A76O clima do jogador foi definido para \u00A7c{0}\u00A76 por: \ questionFormat=\u00A72[Pergunta]\u00A7r {0} radiusTooBig=\u00A74O raio \u00E9 muito grande. O raio m\u00E1ximo permitido \u00E9 de {0}. readNextPage=\u00A76Digita\u00A7c /{0} {1} \u00A76para ler a proxima p\u00E1gina. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00A76Receita para \u00A7c {0} \u00A76 (\u00A76 \u00A7c {1} de \u00A7c {2} \u00A76) recipeBadIndex=N\u00E3o h\u00E1 receita para esse n\u00FAmero. @@ -479,6 +491,9 @@ socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=\u00A74Esse mob gosta de ficar sozinho. +southEast=SE +south=S +southWest=SW spawned=spawnado spawnSet=\u00A76Ponto de spawn definido para o grupo\u00A7c {0}\u00A76. spectator=espetador @@ -581,6 +596,7 @@ weatherStorm=\u00A76Definiste o tempo para \u00A7ctempestade\u00A76 em\u00A7c {0 weatherStormFor=\u00A76Definiste o tempo para \u00A7ctempestade\u00A76 em\u00A7c {0} \u00A76por {1} segundos. weatherSun=\u00A76Definiste o tempo para \u00A7csol\u00A76 em\u00A7c {0}\u00A76. weatherSunFor=\u00A76Definiste o tempo para \u00A7csol\u00A76 em\u00A7c {0} \u00A76por {1} segundos. +west=W whoisAFK=\u00A76 - AFK:\u00A7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00A76 - Banido:\u00A7r {0} @@ -609,4 +625,4 @@ worthSet=\u00A76Valor definido year=ano years=anos youAreHealed=\u00A76Foste curado. -youHaveNewMail=\u00A76Tens\u00A7c {0} \u00A76mensagens! Digita \u00A7c/mail read\u00A76 para veres. \ No newline at end of file +youHaveNewMail=\u00A76Tens\u00A7c {0} \u00A76mensagens! Digita \u00A7c/mail read\u00A76 para veres. diff --git a/Essentials/src/messages_pt_BR.properties b/Essentials/src/messages_pt_BR.properties index d4709d07a..71edb788c 100644 --- a/Essentials/src/messages_pt_BR.properties +++ b/Essentials/src/messages_pt_BR.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00A74Template n\u00E3o encontrado {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Um erro ocorreu ao criar o kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Kit criado: \u00a7f{0}\n\u00a76Tempo: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copie o conte\u00FAdo do link acima para a config.yml. +createKitSuccess=\u00a76Kit criado: \u00a7f{0}\n\u00a76Tempo: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copie o conte\u00FAdo do link acima para a kits.yml. creatingConfigFromTemplate=Criando configura\u00E7\u00E3o baseado no modelo\: {0} creatingEmptyConfig=Criando configura\u00E7\u00E3o vazia\: {0} creative=criativo @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00A74Spawnar este mob foi desativado na configura\u00E7\u00 disableUnlimited=\u00A76Permiss\u00E3o de colocar coisas ilimitadas desativada para\u00A7c {0} \u00A76por {1}. distance=\u00A76Dist\u00E2ncia\: {0} dontMoveMessage=\u00A76Teleporte vai come\u00E7ar em\u00A7c {0}\u00A76. n\u00E3o se mova. -downloadingGeoIp=Baixando o banco de dados GeoIP... isso pode levar um tempo (pa\u00EDs\: 0.6 MB, cidade\: 20MB) +downloadingGeoIp=Baixando o banco de dados GeoIP... isso pode levar um tempo (pa\u00EDs\: 1.7 MB, cidade\: 30MB) duplicatedUserdata=Dados do usu\u00E1rio duplicado\: {0} e {1}. durability=\u00A76Essa ferramenta ainda pode ser usada mais \u00A7c{0}\u00A76 vezes +east=E editBookContents=\u00A7eVoc\u00EA pode agora editar o conte\u00FAdo deste livro. enabled=ativou enableUnlimited=\u00A76Dando quantidade ilimidada de\u00A7c {0} \u00A76para \u00A7c{1}\u00A76. @@ -191,6 +192,7 @@ invalidCharge=\u00A74Argumento inv\u00E1lido. invalidFireworkFormat=\u00A74A op\u00E7\u00E3o \u00A7c{0} \u00A74n\u00E3o \u00E9 v\u00E1lida para \u00A7c{1}\u00A74. invalidHome=\u00A74Casa\u00A7c {0} \u00A74n\u00E3o existe\! invalidHomeName=\u00A74Nome de casa inv\u00E1lido\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00A74Tipo de mob inv\u00E1lido. invalidNumber=Numero inv\u00E1lido. invalidPotion=\u00A74Po\u00E7\u00E3o inv\u00E1lida. @@ -208,6 +210,8 @@ inventoryClearingStack=\u00A76Removido\u00A7c {0} \u00A76de\u00A7c {1} \u00A76de is=\u00E9 isIpBanned=\u00A76IP \u00A7c{0} \u00A76 est\u00E1 banido. itemCannotBeSold=\u00A74Esse item n\u00E3o pode ser vendido para o servidor. +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=\u00A74O item deve ser trocado em packs. A quantidade de 2 deveria ser 2 packs, etc. itemNames=\u00A76Nomes pequenos para o item\:\u00A7r {0} itemNotEnough1=\u00A74Voc\u00EA n\u00E3o tem itens suficientes para vender. @@ -220,8 +224,9 @@ itemsNotConverted=\u00A74Voc\u00EA n\u00E3o tem itens que possam virar blocos. itemSold=\u00A7aVendido por \u00A7c{0} \u00A7a({1} {2} a {3} cada). itemSoldConsole=\u00A7a{0} \u00A7avendeu {1} por \u00A7a{2} \u00A7a({3} itens a {4} cada). itemSpawn=\u00A76Dando\u00A7c {0}\u00A7c {1} -itemType=\u00A76Item\:\u00A7c {0} \u00A76-\u00A7c {1} +itemType=\u00A76Item\:\u00A7c {0} jailAlreadyIncarcerated=\u00A74Essa pessoa j\u00E1 est\u00E1 na cadeia\:\u00A7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00A74Voc\u00EA foi condenado. Pense bem antes de fazer o que fez. jailNotExist=\u00A74Essa cadeia n\u00E3o existe. jailReleased=\u00A76Jogador \u00A7c{0}\u00A76 liberado. @@ -315,6 +320,7 @@ nickChanged=\u00A76Nick alterado. nickDisplayName=\u00A74Voc\u00EA precisa ativar o change-displayname na configura\u00E7\u00E3o do Essentials. nickInUse=\u00A74Esse nome j\u00E1 est\u00E1 em uso. nickNamesAlpha=\u00A74Nicks devem ser alfanum\u00E9ricos. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00A76Voc\u00EA n\u00E3o tem mais um nick. nickSet=\u00A76Seu nick agora \u00E9 \u00A7c{0}\u00A76. nickTooLong=\u00A74Esse nome \u00E9 muito grande. @@ -325,8 +331,12 @@ noDestroyPermission=\u00A74voc\u00EA n\u00E3o tem permiss\u00E3o para destruir \ noDurability=\u00A74Esse item n\u00E3o tem durabilidade. noGodWorldWarning=\u00A74Cuidado\! Modo deus n\u00E3o est\u00E1 desativado nesse mundo. noHelpFound=\u00A74Nenhum comando correspondendo. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=\u00A76Jogador n\u00E3o definiu uma casa. noIgnored=\u00A76Voc\u00EA n\u00E3o est\u00E1 ignorando ningu\u00E9m. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00A74Voc\u00EA n\u00E3o tem acesso a este kit. noKitPermission=\u00A74Voc\u00EA precisa da permiss\u00E3o \u00A7c{0}\u00A74 para usar esse kit. noKits=\u00A76N\u00E3o existem kits dispon\u00EDveis ainda. @@ -363,6 +373,7 @@ onlyDayNight=/time suporta apenas day/night. onlyPlayers=\u00A74Apenas jogadores no jogo podem usar \u00A7c{0}\u00A74. onlyPlayerSkulls=\u00A74Voc\u00EA s\u00F3 pode definir o propriet\u00E1rio de cr\u00E2nios de jogador (\u00A7c397\:3\u00A74). onlySunStorm=\u00A74/weather suporta apenas sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00A76Organizando saldos de\u00A7c {0} \u00A76usu\u00E1rios, aguarde... oversizedTempban=\u00A74Voc\u00EA n\u00E3o pode banir um jogador por esse per\u00EDodo de tempo. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00A76O clima do jogador foi definido para \u00A7c{0}\u00A76 por\: questionFormat=\u00A72[Pergunta]\u00A7r {0} radiusTooBig=\u00A74O raio \u00E9 muito grande. O raio m\u00E1ximo permitido \u00E9 de {0}. readNextPage=\u00A76Digite\u00A7c /{0} {1} \u00A76para ler a proxima p\u00E1gina. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00A76Receita para \u00A7c {0} \u00A76 (\u00A76 \u00A7c {1} de \u00A7c {2} \u00A76) recipeBadIndex=N\u00E3o h\u00E1 receita para esse numero. @@ -478,6 +490,9 @@ socialSpy=\u00A76SocialSpy para \u00A7c {0} \u00A76\: \u00A7c {1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r +southEast=SE +south=S +southWest=SW soloMob=\u00A74Esse mob gosta de ficar sozinho. spawned=spawnado spawnSet=\u00A76Ponto de Spawn definido para o grupo\u00A7c {0}\u00A76. @@ -581,6 +596,7 @@ weatherStorm=\u00A76Voc\u00EA definiu o tempo para \u00A7ctempestade\u00A76 em\u weatherStormFor=\u00A76Voc\u00EA definiu o tempo para \u00A7ctempestade\u00A76 em\u00A7c {0} \u00A76por {1} segundos. weatherSun=\u00A76Voc\u00EA definiu o tempo para \u00A7csol\u00A76 em\u00A7c {0}\u00A76. weatherSunFor=\u00A76Voc\u00EA definiu o tempo para \u00A7csun\u00A76 em\u00A7c {0} \u00A76por {1} segundos. +west=W whoisAFK=\u00A76 - AFK\:\u00A7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00A76 - Banido\:\u00A7r {0} @@ -609,4 +625,4 @@ worthSet=\u00A76Valor definido year=ano years=anos youAreHealed=\u00A76Voc\u00EA foi curado. -youHaveNewMail=\u00A76Voc\u00EA tem\u00A7c {0} \u00A76mensagens\! Digite \u00A7c/mail read\u00A76 para ver. \ No newline at end of file +youHaveNewMail=\u00A76Voc\u00EA tem\u00A7c {0} \u00A76mensagens\! Digite \u00A7c/mail read\u00A76 para ver. diff --git a/Essentials/src/messages_ro.properties b/Essentials/src/messages_ro.properties index 36ad9da58..b28b6111e 100644 --- a/Essentials/src/messages_ro.properties +++ b/Essentials/src/messages_ro.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Nu s-a gasit sablonul {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Se creaza configuratie de la sablonul\: {0} creatingEmptyConfig=Se creaza o configuratie goala\: {0} creative=creativ @@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Vei fi teleportat in\u00a7c {0}\u00a76. Nu te misca. downloadingGeoIp=Baza GeoIP se descarca... Poate dura o vreme. duplicatedUserdata=Informatiile jucatorilor duplicate\: {0} and {1}. durability=\u00a76Aceasta unealta are \u00a7c{0}\u00a76 utilizari ramase +east=E editBookContents=\u00a7eAcum poti modifica continutul acestei carti. enabled=activat enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74Incarcare invalida. invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. invalidHome=\u00a74Casa\u00a7c {0} \u00a74nu exista\! invalidHomeName=\u00a74Numele casei este invalida\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=Tip de mob invalid. invalidNumber=Numar invalid. invalidPotion=\u00a74Potiune invalida. @@ -200,14 +202,16 @@ invalidSkull=\u00a74Te rog tine un craniu al unui player. invalidWarpName=\u00a74Numele teleportarei este invalida\! invalidWorld=\u00a74Lume invalida. inventoryClearFail=\u00a74Jucatorul {0} \u00a74nu are\u00a7c {1} \u00a74de\u00a7c {2} \u00a74. -inventoryClearingAllArmor=\u00a76Se curata tot inventarul lui {0} \u00a76. +inventoryClearingAllArmor=\u00a76Se curata tot inventarul lui {0} \u00a76. inventoryClearingAllItems=\u00a76Se curata inventarul lui {0} \u00a76. inventoryClearingAllStack=\u00a76Se curata\u00a7c {0} \u00a76ale lui {1} \u00a76. inventoryClearingFromAll=\u00a76Se curata inventarul tuturor jucatorilor... inventoryClearingStack=\u00a76Se curata\u00a7c {0} \u00a76of\u00a7c {1} \u00a76de la {2} \u00a76. is=este isIpBanned=\u00a76IP-ul \u00a7c {0} \u00a76este interzis. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74Acest obiect nu poate fi vandut pe server. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74Obiectul trebuie comercializat in stacuri. O cantitate de 2s ar trebuie sa fie 2 stacuri, s.a.m.d. itemNames=\u00a76Numele scurte ale obiectului\:\u00a7r {0} itemNotEnough1=\u00a74YNu ai destul din acest obiect pentru a-l putea vinde. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7aVandut pentru \u00a7c{0} \u00a7a({1} {2} la {3} fiecare). itemSoldConsole=\u00a7a{0} \u00a7aa vandut {1} pentru \u00a7a{2} \u00a7a({3} obiecte la {4} fiecare). itemSpawn=\u00a76Ai primit\u00a7c {0} \u00a76bucata(ti) de\u00a7c {1} -itemType=\u00a76Obiect\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Obiect\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Acest jucator este deja in inchisoare\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74Incalci reguli, trebuie sa platesti. jailNotExist=\u00a74Aceasta inchisoare nu exista. jailReleased=\u00a76Jucatorul \u00a7c{0}\u00a76 a fost eliberat. @@ -315,6 +320,7 @@ nickChanged=\u00a76Nume schimbat. nickDisplayName=\u00a74Trebuie sa activezi schimbarea numelui din configuratie. nickInUse=\u00a74Acest nume este deja in uz. nickNamesAlpha=\u00a74Numele trebuie sa fie alfanumeric. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76Nu mai ai nume. nickSet=\u00a76Your nickname is now \u00a7c{0}\u00a76. nickTooLong=\u00a74Acest nume este prea lung. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u noBreakBedrock=\u00a74Nu ai permisiunea sa spargi roca. noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74. noDurability=\u00a74Acest obiect nu are durabilitate. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74Avertisment\! Modul GOD este dezactivat in aceasta lume. noHelpFound=\u00a74Nici o comanda nu se potriveste. noHomeSetPlayer=\u00a76Jucatorul nu are setata casa. noIgnored=\u00a76Tu nu ignori pe nimeni. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Nu ai acces la acest kit. noKitPermission=\u00a74Ai nevoie de permisiunea \u00a7c{0}\u00a74 pentru a utiliza acest kit. noKits=\u00a76Nu sunt kituri valabile inca. @@ -363,6 +373,7 @@ onlyDayNight=/time suporta doar day/night. onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74/weather suporta doar sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76Se ordoneaza balantele a\u00a7c {0} \u00a76jucatori, te rog asteapta... oversizedTempban=\u00a74Nu poti interzice un jucator pentru asa o perioada de timp. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Vreme este setata la \u00a7c {0} \u00a76 pentru\: \u00a7c {1} questionFormat=\u00a72[Intrebare]\u00a7r {0} radiusTooBig=\u00a74Distanta este prea mare\! Distanta maxima este de {0}. readNextPage=\u00a76Scrie\u00a7c /{0} {1} \u00a76pentru a citi pagina urmatoare. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=Nu este nici o reteta cu acel numar. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74Nu ai permsiunea sa creezi semne aici. similarWarpExist=\u00a74O teleportare cu acelasi nume deja exista. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76. slimeMalformedSize=\u00a74Marile malformata. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76Ai setat vremea din \u00a7cstorm\u00a76 in\u00a7c {0}\u00a76 weatherStormFor=\u00a76Ai setat vremea din \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76pentru {1} secunde. weatherSun=\u00a76Ai setat vremea din \u00a7csun\u00a76 in\u00a7c {0}\u00a76. weatherSunFor=\u00a76Ai setat vremea din \u00a7csun\u00a76 in\u00a7c {0} \u00a76pentru {1} secunde. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Interzisi\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76Valoarea ''valorii'' setata year=an years=ani youAreHealed=\u00a76Ai fost vindecat. -youHaveNewMail=\u00a76Ai\u00a7c {0} \u00a76mesaje\! scrie \u00a7c/mail read\u00a76 pentru a-ti vedea mesajele. \ No newline at end of file +youHaveNewMail=\u00a76Ai\u00a7c {0} \u00a76mesaje\! scrie \u00a7c/mail read\u00a76 pentru a-ti vedea mesajele. diff --git a/Essentials/src/messages_ru.properties b/Essentials/src/messages_ru.properties index ee82f7d4a..cc497cfe1 100644 --- a/Essentials/src/messages_ru.properties +++ b/Essentials/src/messages_ru.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u0 createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=\u0421\u043e\u0437\u0434\u0430\u044e \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\: {0} creatingEmptyConfig=\u0421\u043e\u0437\u0434\u0430\u044e \u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b\: {0} creative=\u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74\u0421\u043f\u0430\u0443\u043d \u0434\u0430\u043d\u043 disableUnlimited=\u00a76\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u00a7c {0} \u00a76\u0434\u043b\u044f {1}. distance=\u00a76\u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f\: {0} dontMoveMessage=\u00a76\u0422\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0430\u0446\u0438\u044f \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a7c {0}\u00a76. \u041d\u0435 \u0434\u0432\u0438\u0433\u0430\u0439\u0442\u0435\u0441\u044c. -downloadingGeoIp=\u0418\u0434\u0451\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 GeoIP... \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u0441\u0442\u0440\u0430\u043d\u0430\: 0,6 MB \u0433\u043e\u0440\u043e\u0434\: 20MB) +downloadingGeoIp=\u0418\u0434\u0451\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 GeoIP... \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u0441\u0442\u0440\u0430\u043d\u0430\: 1,7 MB \u0433\u043e\u0440\u043e\u0434\: 30MB) duplicatedUserdata=\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\: {0} and {1}. durability=\u00a76\u042d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u00a7c{0}\u00a76 \u0440\u0430\u0437 +east=E editBookContents=\u00a7e\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0438. enabled=\u0432\u043a\u043b\u044e\u0447\u0435\u043d enableUnlimited=\u00a76\u0412\u044b\u0434\u0430\u043d\u043e \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u00a7c {0} \u00a76\u0438\u0433\u0440\u043e\u043a\u0443 \u00a7c{1}\u00a76. @@ -192,6 +193,7 @@ invalidFireworkFormat=\u00a74\u041e\u043f\u0446\u0438\u044f \u00a7c{0} \u00a74\u invalidHome=\u00a74\u0414\u043e\u043c\u0430\u00a7c {0} \u00a74\u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\! invalidHomeName=\u00a74\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043c\u0430\! invalidMob=\u00a74\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u043c\u043e\u0431\u0430. +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidNumber=\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. invalidPotion=\u00a74\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0437\u0435\u043b\u044c\u0435. invalidPotionMeta=\u00a74\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0435\u043b\u044c\u044f\: \u00a7c{0}\u00a74. @@ -207,7 +209,9 @@ inventoryClearingFromAll=\u00a76\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043 inventoryClearingStack=\u00a76\u0423\u0431\u0440\u0430\u043d\u043e\u00a7c {0} \u00a76\u0448\u0442\u0443\u043a\u00a7c {1} \u00a76\u0443 {2}\u00a76. is=\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f isIpBanned=\u00a76IP \u00a7c{0} \u00a76\u0437\u0430\u0431\u0430\u043d\u0435\u043d. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74\u042d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043d. +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74\u041f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u0441\u0442\u0430\u043a\u0435. A quantity of 2s would be two stacks, etc. itemNames=\u00a76\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430\:\u00a7r {0} itemNotEnough1=\u00a74\u0423 \u0412\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0438. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7a\u041f\u0440\u043e\u0434\u0430\u043d\u043e \u0437\u0430 \u00a7c{0} \u00a7a({1} {2} \u043f\u043e {3} \u043a\u0430\u0436\u0434\u044b\u0439). itemSoldConsole=\u00a7a{0} \u00a7a\u043f\u0440\u043e\u0434\u0430\u043b {1} \u0437\u0430 \u00a7a{2} \u00a7a({3} \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0437\u0430 {4} \u043a\u0430\u0436\u0434\u044b\u0439). itemSpawn=\u00a76\u0412\u044b\u0434\u0430\u043d\u043e\u00a7c {0} \u00a76\u0448\u0442\u0443\u043a\u00a7c {1} -itemType=\u00a76\u041f\u0440\u0435\u0434\u043c\u0435\u0442\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76\u041f\u0440\u0435\u0434\u043c\u0435\u0442\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74\u0438\u0433\u0440\u043e\u043a \u0443\u0436\u0435 \u0432 \u0442\u044e\u0440\u044c\u043c\u0435\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74\u0412\u044b \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0442\u044e\u0440\u044c\u043c\u0443. \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u044b\u0445\u0430\! jailNotExist=\u00a74\u042d\u0442\u043e\u0439 \u0442\u044e\u0440\u044c\u043c\u044b \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. jailReleased=\u00a76\u0418\u0433\u0440\u043e\u043a \u00a7c{0}\u00a76 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u0443. @@ -315,6 +320,7 @@ nickChanged=\u00a76\u041d\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d nickDisplayName=\u00a74\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e change-displayname \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Essentials. nickInUse=\u00a74\u0414\u0430\u043d\u043d\u044b\u0439 \u043d\u0438\u043a \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. nickNamesAlpha=\u00a74\u041d\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u0432\u0435\u043d\u043d\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0412\u0430\u0441 \u0441\u0432\u043e\u0439 \u043d\u0438\u043a. nickSet=\u00a76\u0422\u0435\u043f\u0435\u0440\u044c \u0412\u0430\u0448 \u043d\u0438\u043a \u00a7c{0}\u00a76. nickTooLong=\u00a74\u041d\u0438\u043a \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u044b\u0439. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74\u0412\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u04 noBreakBedrock=\u00a74\u0423 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043b\u043e\u043c\u0430\u0442\u044c \u043a\u043e\u0440\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0440\u043e\u0434\u0443. noDestroyPermission=\u00a74\u0412\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u00a7c{0}\u00a74. noDurability=\u00a74\u042d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0447\u043d\u043e\u0441\u0442\u0438. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435\! \u0420\u0435\u0436\u0438\u043c \u0411\u043e\u0433\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u044d\u0442\u043e\u043c \u043c\u0438\u0440\u0435. noHelpFound=\u00a74\u041a\u043e\u043c\u0430\u043d\u0434 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. noHomeSetPlayer=\u00a76\u0418\u0433\u0440\u043e\u043a \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u043c\u0430. noIgnored=\u00a76\u0422\u0435\u043f\u0435\u0440\u044c \u0412\u044b \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0435. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74\u0423 \u0412\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443. noKitPermission=\u00a74\u0423 \u0412\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u00a7c{0}\u00a74 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430. noKits=\u00a76\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432. @@ -363,6 +373,7 @@ onlyDayNight=\u041a\u043e\u043c\u0430\u043d\u0434\u0430 /time \u043f\u043e\u0434 onlyPlayers=\u00a74\u0422\u043e\u043b\u044c\u043a\u043e \u0432 \u0438\u0433\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0433\u043e\u043b\u043e\u0432\u044b \u0438\u0433\u0440\u043e\u043a\u0430 (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74\u041a\u043e\u043c\u0430\u043d\u0434\u0430 /weather \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e sun/storm. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76\u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0431\u0430\u043b\u0430\u043d\u0441\u0430\u00a7c {0} \u00a76\u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043f\u043e\u0434\u043e\u0436\u0434\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. oversizedTempban=\u00a74\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0431\u0430\u043d\u0438\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0441\u0440\u043e\u043a. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76\u041f\u043e\u0433\u043e\u0434\u0430 \u0438\u0433\u0440\u043e questionFormat=\u00a72[\u0412\u043e\u043f\u0440\u043e\u0441]\u00a7r {0} radiusTooBig=\u00a74\u0420\u0430\u0434\u0438\u0443\u0441 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439\! \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 - {0}. readNextPage=\u00a76\u0412\u0432\u0435\u0434\u0438\u00a7c /{0} {1} \u00a76\u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76\u0420\u0435\u0446\u0435\u043f\u0442 \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 \u0438\u0437 \u00a7c{2}\u00a76) recipeBadIndex=\u0420\u0435\u0446\u0435\u043f\u0442\u0430 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74\u0423 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a \u043d\u0430 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. similarWarpExist=\u00a74\u0412\u0430\u0440\u043f \u0441 \u0442\u0430\u043a\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. +southEast=SE +south=S +southWest=SW skullChanged=\u00a76\u0413\u043e\u043b\u043e\u0432\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430 \u043d\u0430 \u00a7c{0}.\u00a76. slimeMalformedSize=\u00a74\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440. socialSpy=\u00a76SocialSpy \u0434\u043b\u044f \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76\u0412\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043 weatherStormFor=\u00a76\u0412\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u00a7c\u0448\u0442\u043e\u0440\u043c\u043e\u0432\u0443\u044e\u00a76 \u043f\u043e\u0433\u043e\u0434\u0443 \u0432\u00a7c {0} \u00a76\u043d\u0430 {1} \u0441\u0435\u043a\u0443\u043d\u0434. weatherSun=\u00a76\u0412\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u00a7c\u0441\u043e\u043b\u043d\u0435\u0447\u043d\u0443\u044e\u00a76 \u043f\u043e\u0433\u043e\u0434\u0443 \u0432\u00a7c {0}\u00a76. weatherSunFor=\u00a76\u0412\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u00a7c\u0441\u043e\u043b\u043d\u0435\u0447\u043d\u0443\u044e\u00a76 \u043f\u043e\u0433\u043e\u0434\u0443 \u0432\u00a7c {0} \u00a76\u043d\u0430 {1} \u0441\u0435\u043a\u0443\u043d\u0434. +west=W whoisAFK=\u00a76 - AFK\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - \u0417\u0430\u0431\u0430\u043d\u0435\u043d\u044b\u0439\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76\u0426\u0435\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0 year=\u0433\u043e\u0434 years=\u043b\u0435\u0442 youAreHealed=\u00a76\u0412\u044b \u0431\u044b\u043b\u0438 \u0432\u044b\u043b\u0435\u0447\u0435\u043d\u044b. -youHaveNewMail=\u00a76\u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c\u00a7c {0} \u00a76\u043d\u043e\u0432\u044b\u0445 \u043f\u0438\u0441\u0435\u043c\! \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u00a7c/mail read\u00a76 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0447\u0442\u044b. \ No newline at end of file +youHaveNewMail=\u00a76\u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c\u00a7c {0} \u00a76\u043d\u043e\u0432\u044b\u0445 \u043f\u0438\u0441\u0435\u043c\! \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u00a7c/mail read\u00a76 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0447\u0442\u044b. diff --git a/Essentials/src/messages_sv.properties b/Essentials/src/messages_sv.properties index daaa1848b..7302ed1c0 100644 --- a/Essentials/src/messages_sv.properties +++ b/Essentials/src/messages_sv.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=Kunde inte hitta mallen {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Skapar konfiguration fr\u00e5n mallen\: {0} creatingEmptyConfig=Skapar tom konfiguration\: {0} creative=kreativ @@ -103,12 +103,13 @@ disabledToSpawnMob=Att spawna fram den h\u00e4r moben \u00e4r inaktiverat i conf disableUnlimited=\u00a77Inaktiverade o\u00e4ndligt placerande av {0} f\u00f6r {1}. distance=\u00a76Avst\u00e5nd\: {0} dontMoveMessage=\u00a77Teleporteringen p\u00e5b\u00f6rjas om {0}. R\u00f6r dig inte. -downloadingGeoIp=Laddar ner GeoIP-databasen... det h\u00e4r kan ta en stund (land\: 0.6 MB, stad\: 20MB) +downloadingGeoIp=Laddar ner GeoIP-databasen... det h\u00e4r kan ta en stund (land\: 1.7 MB, stad\: 30MB) duplicatedUserdata=Dublicerad anv\u00e4ndardata\: {0} och {1} durability=\u00a77Det h\u00e4r verktyget har \u00a7c{0}\u00a77 anv\u00e4ndningar kvar +east=E editBookContents=\u00a7eDu kan nu \u00e4ndra inneh\u00e5llet i denna bok. enabled=aktiverad -enableUnlimited=Ger o\u00e4ndligt med pengar till +enableUnlimited=Ger o\u00e4ndligt med pengar till enchantmentApplied=\u00a77F\u00f6rtrollningen {0} har blivit till\u00e4mpad p\u00e5 saken du har i handen. enchantmentNotFound=\u00a7cF\u00f6rtrollningen hittades inte enchantmentPerm=\u00a7cDu har inte beh\u00f6righet att {0} @@ -191,6 +192,7 @@ invalidCharge=\u00a7cOgiltig laddning. invalidFireworkFormat=\u00a74V\u00e4rdet \u00a7c{0} \u00a74\u00e4r inte ett korrekt v\u00e4rde f\u00f6r \u00a7c{1}\u00a74. invalidHome=Hemmet {0} finns inte invalidHomeName=\u00a74Ogiltigt hemnamn +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=Ogiltigt mob invalidNumber=Felaktigt nummer. invalidPotion=\u00a74Ogiltig brygd. @@ -200,7 +202,7 @@ invalidSkull=\u00a74Sn\u00e4lla h\u00e5ll i ett spelar Huvud. invalidWarpName=\u00a74Ogiltigt warpnamn invalidWorld=\u00a7cOgiltig v\u00e4rld. inventoryClearFail=\u00a74Spelaren {0} \u00a74har inte \u00a7c {1} \u00a74av\u00a7c {2}\u00a74. -inventoryClearingAllArmor=\u00a76Rensade alla inventory objekt och rustning fr\u00e5n {0}\u00a76. +inventoryClearingAllArmor=\u00a76Rensade alla inventory objekt och rustning fr\u00e5n {0}\u00a76. inventoryClearingAllItems=\u00a76Rensade alla inventory saker fr\u00e5n {0}\u00a76. inventoryClearingAllStack=\u00a76Rensade alla\u00a7c {0} \u00a76fr\u00e5n {1}\u00a76. inventoryClearingFromAll=\u00a76Rensar inventoriet f\u00f6r alla spelare... @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76Tog bort \u00a7c {0} \u00a76av\u00a7c {1} \u00a76f is=\u00e4r isIpBanned=\u00a76IP \u00a7c {0} \u00a76\u00e4r bannad. itemCannotBeSold=Det objektet kan inte s\u00e4ljas till servern. +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=Objektet m\u00e5ste k\u00f6pas i staplar. En m\u00e4ngd av 2s kommer bli 2 staplar, etc. itemNames=F\u00f6rkortning p\u00e5 objekt\: {0} itemNotEnough1=\u00a7cDu har inte tillr\u00e4ckligt av den saken f\u00f6r att s\u00e4lja. @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a77S\u00e5lde f\u00f6r \u00a7c{0} \u00a77({1} {2} f\u00f6r {3} styck) itemSoldConsole={0} s\u00e5lde {1} f\u00f6r \u00a77{2} \u00a77({3} saker f\u00f6r {4} styck) itemSpawn=\u00a77Ger {0} stycken {1} -itemType=Objekt\: {0} - {1} +itemType=Objekt\: {0} jailAlreadyIncarcerated=\u00a7cPersonen \u00e4r redan i f\u00e4ngelse\: {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a7cBryter du mot reglerna, f\u00e5r du st\u00e5 ditt kast. jailNotExist=Det f\u00e4ngelset finns inte. jailReleased=\u00a77Spelaren \u00a7e{0}\u00a77 \u00e4r frisl\u00e4ppt. @@ -315,6 +320,7 @@ nickChanged=Smeknamn \u00e4ndrat. nickDisplayName=\u00a77Du m\u00e5ste aktivera change-displayname i Essentials-konfigurationen. nickInUse=\u00a7cDet namnet anv\u00e4nds redan. nickNamesAlpha=\u00a7cSmeknamn m\u00e5ste vara alfanumeriska. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a77Du har inte ett smeknamn l\u00e4ngre nickSet=\u00a76Ditt smeknamn \u00e4r nu \u00a7c{0}\u00a76. nickTooLong=\u00a74Det d\u00e4r aliaset \u00e4r f\u00f6r l\u00e5ngt. @@ -325,8 +331,12 @@ noDestroyPermission=\u00a74Du har inte beh\u00f6righet att f\u00f6rst\u00f6ra de noDurability=\u00a7cDen saken har inte en h\u00e5llbarhet. noGodWorldWarning=\u00a7cVarning\! Od\u00f6dlighet i den h\u00e4r v\u00e4rlden \u00e4r inaktiverat. noHelpFound=\u00a7cInga matchande kommandon. +northEast=NE +north=N +northWest=NW noHomeSetPlayer=Den h\u00e4r spelaren har inte ett hem. noIgnored=\u00a76Du ignorerar inte n\u00e5gon. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Du har inte tillg\u00e5ng till detta kit. noKitPermission=\u00a7cDu beh\u00f6ver \u00a7c{0}\u00a7c tillst\u00e5nd f\u00f6r att anv\u00e4nda det kitet. noKits=\u00a77Det finns inga kits tillg\u00e4ngliga \u00e4n @@ -363,6 +373,7 @@ onlyDayNight=/time st\u00f6der bara day(dag) eller night(natt). onlyPlayers=\u00a74Bara spelare kan anv\u00e4nda \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74Du kan bara ange \u00e4garen f\u00f6r skallar av spelare (\u00a7c397\:3\u00a74). onlySunStorm=/weather st\u00f6der bara sun(sol) eller storm(storm). +openingDisposal=\u00a76Opening disposal menu... orderBalances=Best\u00e4ller balanser av {0} anv\u00e4ndare, v\u00e4nligen v\u00e4nta... oversizedTempban=\u00a74Du kan inte banna en spelare just vid denna tidpunkt. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Personligt v\u00e4der \u00e4r satt till \u00a7c{0}\u00a76 f\u questionFormat=\u00a77[Fr\u00e5ga]\u00a7f {0} radiusTooBig=\u00a74Radien \u00e4r f\u00f6r stor\! Den maximala radien \u00e4r {0}. readNextPage=Skriv /{0} {1} f\u00f6r att l\u00e4sa n\u00e4sta sida +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=Det finns inget recept med det numret @@ -477,6 +489,9 @@ slimeMalformedSize=Felformulerad storlek. socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +southEast=SE +south=S +southWest=SW socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=Det h\u00e4r monstret gillar att vara ensam spawned=spawnade @@ -581,6 +596,7 @@ weatherStorm=\u00a77Du har st\u00e4llt in v\u00e4dret till storm i {0} weatherStormFor=\u00a77Du har st\u00e4llt in v\u00e4dret till storm i {0} f\u00f6r {1} sekunder weatherSun=\u00a77Du har st\u00e4llt in v\u00e4dret till sol i {0} weatherSunFor=\u00a77Du har st\u00e4llt in v\u00e4dret till sol i {0} f\u00f6r {1} sekunder +west=W whoisAFK=\u00a76 - AFK\:\u00a7f {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Bannad\:\u00a7f {0} @@ -609,4 +625,4 @@ worthSet=V\u00e4rdet inst\u00e4llt year=\u00e5r years=\u00e5r youAreHealed=\u00a77Du har blivit l\u00e4kt. -youHaveNewMail=\u00a7cDu har {0} meddelanden\!\u00a7f Skriv \u00a77/mail read\u00a7f f\u00f6r att l\u00e4sa dina meddelanden. \ No newline at end of file +youHaveNewMail=\u00a7cDu har {0} meddelanden\!\u00a7f Skriv \u00a77/mail read\u00a7f f\u00f6r att l\u00e4sa dina meddelanden. diff --git a/Essentials/src/messages_tr.properties b/Essentials/src/messages_tr.properties index 9d50a0c22..496977aa3 100644 --- a/Essentials/src/messages_tr.properties +++ b/Essentials/src/messages_tr.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Bir {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=Yeni Bir Config Dosyasi Suradan Olusturuluyor\: {0} creatingEmptyConfig=Bos Bir Config Dosyasi Olusturuluyor\: {0} creative=Sonsuz Mod @@ -106,6 +106,7 @@ dontMoveMessage=\u00a7c {0}\u00a76 Saniye Icerisinde Isinlanicaksiniz Lutfen Har downloadingGeoIp=GeoIP Veritabani Indiriliyor. duplicatedUserdata=Kullanici Verisi durability=\u00a76Bu Aletin \u00a7c{0}\u00a76 kullanim omuru kaldi +east=E editBookContents=\u00a7eKitabi Duzenleyebilirsin. enabled=aktif enableUnlimited=\u00a76Sinirsiz Sayida Veriliyor\:\u00a7c {0} \u00a76to {1}. @@ -192,6 +193,7 @@ invalidFireworkFormat=\u00a74Gecersiz Havaifisek Formati\! invalidHome=\u00a7c {0} \u00a76adli Bir Eviniz Yok\! invalidHomeName=\u00a7cUygun Olmayan Ev Ismi\! invalidMob=\u00a74Bilinmeyen Yaratik T\u00fcr\u00fc. +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidNumber=Gecersiz Numara. invalidPotion=\u00a74Gecersiz Iksir. invalidPotionMeta=\u00a74Gecersiz Iksir Turu \u00a7c{0}\u00a74.\n @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76Silindi\u00a7c {0} \u00a76of\u00a7c {1} \u00a76Tar is=olan isIpBanned=\u00a76IP \u00a7c{0} \u00a76yasaklandi. itemCannotBeSold=\u00a74Bu Esyayi Sunucuya Satamazsiniz\! +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=\u00a74Esya Takasi Icin Elindeki Esyanin Bir Stack(Dolu 64) Olmasi Gerekir. itemNames=\u00a76Esya Kisaltmalari\:\u00a7r {0} itemNotEnough1=\u00a74Satmak Icin Yeterli Esyaniz Bulunmamaktadir\! @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7aSatilan Esya \u00a7c{0} \u00a7a({1} {2} , {3}). itemSoldConsole=\u00a7a{0} \u00a7aSatildi {1} , \u00a7a{2} \u00a7a({3} , {4}). itemSpawn=\u00a76Verilmekte\u00a7c {0} \u00a76-\u00a7c {1} -itemType=\u00a76Esya ve Araclar\:\u00a7c {0} \u00a76-\u00a7c {1} +itemType=\u00a76Esya ve Araclar\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74Bu Oyuncu Zaten Hapse Mahkum\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74Cezalandirildin Lutfen Kurallara Dikkat Et\! jailNotExist=\u00a74Boyle Bir Hapishane Noktasi Yok. jailReleased=\u00a76Oyuncu \u00a7c{0}\u00a76 Hapis Cezasi Bitti Veya Kaldirildi. @@ -253,7 +258,7 @@ lightningUse=\u00a76Bu Kisi Simsek Atiyor\u00a7c {0} listAfkTag=\u00a77[UzaktaAFK]\u00a7r listAmount=\u00a76Oyuncu Kapasitesi \u00a7c{0}\u00a76 Acik Olan \u00a7c{1}\u00a76. listAmountHidden=\u00a76Suan \u00a7c{0}\u00a76/{1}\u00a76 Sunucudaki \u00a7c{2}\u00a76 oyuncu cevrimici. -listGroupTag={0}\u00a7f\: +listGroupTag={0}\u00a7f\: listHiddenTag=\u00a77[Gizlenmis]\u00a7r loadWarpError=\u00a74Is\u0131nlanma Noktasi Yuklenemedi {0}. localFormat=[L]<{0}> {1} @@ -315,6 +320,7 @@ nickChanged=\u00a76Kullanici Adi Degistirildi\! nickDisplayName=\u00a74Essentials Ayarlarindan Bir change-displayname Acik Yapman Gerekir. nickInUse=\u00a74Bu Isim Kullaniliyor\! nickNamesAlpha=\u00a74Kullanici Ismi Sadece Alfabe Icerikli Olmalidir\! +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76Artik Bir Kullanici Ismin Yok\! nickSet=\u00a76Yeni Kullanici Ismin \u00a7c{0} nickTooLong=\u00a74Bu isim cok uzun. @@ -325,8 +331,12 @@ noDestroyPermission=\u00a74{0} Yokedebilmek Icin Gerekli Izine Sahip Degilsin\! noDurability=\u00a74Gecersiz\! noGodWorldWarning=\u00a74Dikkat Bu Dunyada Olumsuzluk Aktif Degil\! noHelpFound=\u00a74Eslesen Komut Yok\! +northEast=NE +north=N +northWest=NW noHomeSetPlayer=\u00a76Olusturulmus Hic Evi Yok\! noIgnored=\u00a76Hi\u00e7 kimseyi g\u00f6z ardi etmiyorsun. +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74Bu alet setine erisebilmek icin gerekli izinin yok. noKitPermission=\u00a74Bu Kiti Kullanmak Icin VIP Satin Almaniz Gerekir\! noKits=\u00a76Hic Kit Yok\! @@ -363,6 +373,7 @@ onlyDayNight=/time sadece day/night destekliyor. onlyPlayers=\u00a74Sadece Oyun Icinde Kullanilabilir Bir Komut {0}. onlyPlayerSkulls=\u00a74Sadece oyuncu sahiplerinin kafa taslarini belirleyebilirsin. (397\:3). onlySunStorm=\u00a74/weather sadece sun/storm destekliyor. +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a7c {0} \u00a76Adli oyuncularin bakiyesi listeleniyor, l\u00fctfen bekleyin... oversizedTempban=\u00a74Oyunculari bu kadar sure yasaklayamazsin. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76Oyuncu hava durumunu \u00a7c{1} \u00a76adli oyuncu icin \u00a questionFormat=\u00a72[SORU]\u00a7r {0} radiusTooBig=\u00a74Mesafe cok buyuk\! En fazla mesafe {0}. readNextPage=\u00a76Diger Sayfaya Gecmek Icin\u00a7c /{0} {1} \u00a76Yazin. +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 ({1} of {2}) recipeBadIndex=Numara Belirtin\!. @@ -479,6 +491,9 @@ socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r soloMob=\u00a74Bu Mob Yanliz Olmak Istiyor Gibi Gorunuyor +southEast=SE +south=S +southWest=SW spawned=dogdu spawnSet=\u00a76Spawn Belirlendi spectator=spectator @@ -581,6 +596,7 @@ weatherStorm=\u00a76Zaman Degistirlidi weatherStormFor=\u00a76Zaman Degistirlidi weatherSun=\u00a76Zaman Degistirlidi weatherSunFor=\u00a76Zaman Degistirildi +west=W whoisAFK=\u00a76 - UZAKTA\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - Banli\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76Worth degeri belirlendi\! year=yil years=yil youAreHealed=\u00a76Canlandirildin\! -youHaveNewMail=\u00a76\u00a7c {0} \u00a76Mesajin Var Okumak Icin \u00a7c/mail read\u00a76 Yaz. \ No newline at end of file +youHaveNewMail=\u00a76\u00a7c {0} \u00a76Mesajin Var Okumak Icin \u00a7c/mail read\u00a76 Yaz. diff --git a/Essentials/src/messages_vi.properties b/Essentials/src/messages_vi.properties new file mode 100644 index 000000000..fe9fbb8d3 --- /dev/null +++ b/Essentials/src/messages_vi.properties @@ -0,0 +1,619 @@ +#X-Generator: crowdin.net +#version: 488 +# Single quotes have to be doubled: '' +# Translations start here +# by: BaoKunVN (Kun) +action=\u00a75* {0} \u00a75{1} +addedToAccount=\u00a7a{0} \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u00ea\u006d \u0076\u00e0\u006f \u0074\u00e0\u0069 \u006b\u0068\u006f\u1ea3\u006e \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +addedToOthersAccount=\u00a7a{0} \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u00ea\u006d \u0076\u00e0\u006f \u0074\u00e0\u0069 \u006b\u0068\u006f\u1ea3\u006e {1}\u00a7a. \u0053\u1ed1 \u0064\u01b0 \u006d\u1edb\u0069\: {2} +adventure=\u0050\u0068\u0069\u00ea\u0075 \u006c\u01b0\u0075 +alertBroke=\u0110\u00e3 \u0070\u0068\u00e1\: +alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} \u0074\u1ea1\u0069\: {3} +alertPlaced=\u0110\u1eb7\u0074\: +alertUsed=\u0044\u00f9\u006e\u0067\: +antiBuildBreak=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0070\u0068\u00e1\u00a7c {0} \u00a74\u006b\u0068\u1ed1\u0069 \u1edf \u0111\u00e2\u0079. +antiBuildCraft=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u0068\u1ebf \u0074\u1ea1\u006f \u0111\u1ed3\u00a7c {0}\u00a74. +antiBuildDrop=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u006c\u00e0\u006d \u0076\u1ee9\u0074 \u0111\u1ed3\u00a7c {0}\u00a74. +antiBuildInteract=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u01b0\u01a1\u006e\u0067 \u0074\u00e1\u0063 \u0076\u1edb\u0069\u00a7c {0}\u00a74. +antiBuildPlace=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u1eb7\u0074\u00a7c {0} \u00a74\u1edf \u0111\u00e2\u0079. +antiBuildUse=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0064\u00f9\u006e\u0067\u00a7c {0}\u00a74. +autoAfkKickReason=\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0111\u00e1 \u0076\u00ec \u0072\u1edd\u0069 \u006b\u0068\u1ecf\u0069 \u006d\u00e1\u0079 {0} \u0070\u0068\u00fa\u0074. +backAfterDeath=\u00a76\u0044\u00f9\u006e\u0067 \u006c\u1ec7\u006e\u0068 /back \u0111\u1ec3 \u0076\u1ec1 \u0063\u0068\u1ed7 \u0111\u00e3 \u0063\u0068\u1ebf\u0074. +backUsageMsg=\u00a76\u0110\u0061\u006e\u0067 \u0071\u0075\u0061\u0079 \u006c\u1ea1\u0069 \u0076\u1ecb \u0074\u0072\u00ed \u0063\u0169. +backupDisabled=\u00a74\u0054\u1ead\u0070 \u006c\u1ec7\u006e\u0068 \u0073\u0061\u006f \u006c\u01b0\u0075 \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068. +backupFinished=\u00a76\u0053\u0061\u006f \u006c\u01b0\u0075 \u0074\u0068\u00e0\u006e\u0068 \u0063\u00f4\u006e\u0067. +backupStarted=\u00a76\u0042\u1eaf\u0074 \u0111\u1ea7\u0075 \u0073\u0061\u006f \u006c\u01b0\u0075. +balance=\u00a7a\u0053\u1ed1 \u0064\u01b0\:\u00a7c {0} +balanceOther=\u00a7a\u0053\u1ed1 \u0064\u01b0 \u0063\u1ee7\u0061 {0}\u00a7a\:\u00a7c {1} +balanceTop=\u00a76\u0042\u1ea3\u006e\u0067 \u0078\u1ebf\u0070 \u0068\u1ea1\u006e\u0067 \u0074\u0069\u1ec1\u006e ({0}) +banExempt=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u1ea5\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079. +banFormat=\u00a7c\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d\:\n\u00a7r{0} +banIpJoin=Your IP address is banned from this server. Reason: {0} +banJoin=You are banned from this server. Reason: {0} +bed=\u00a7o\u0067\u0069\u01b0\u1edd\u006e\u0067\u00a7r +bedMissing=\u00a74\u0047\u0069\u01b0\u1edd\u006e\u0067 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0063\u0068\u01b0\u0061 \u0074\u0068\u0069\u1ebf\u0074 \u006c\u1ead\u0070\u002c \u0068\u0061\u0079 \u0063\u00f3 \u0074\u0068\u1ec3 \u006c\u00e0 \u0062\u1ecb \u006d\u1ea5\u0074 \u0068\u006f\u1eb7\u0063 \u0063\u0068\u1eb7\u006e. +bedNull=\u00a7m\u0067\u0069\u01b0\u1edd\u006e\u0067\u00a7r +bedSet=\u00a76\u0110\u00e3 \u0074\u0068\u0069\u1ebf\u0074 \u006c\u1ead\u0070 \u0076\u1ecb \u0074\u0072\u00ed \u0067\u0069\u01b0\u1edd\u006e\u0067 \u006e\u0067\u1ee7\! +bigTreeFailure=\u00a74\u0054\u1ea1\u006f \u0063\u00e2\u0079 \u006c\u1edb\u006e \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069\u002c \u0068\u00e3\u0079 \u0074\u0068\u1eed \u006c\u1ea1\u0069 \u1edf \u0074\u0072\u00ea\u006e \u0111\u1ea5\u0074 \u0068\u0061\u0079 \u006b\u0068\u1ed1\u0069 \u0063\u1ecf. +bigTreeSuccess=\u00a76\u0054\u1ea1\u006f \u0063\u00e2\u0079 \u006c\u1edb\u006e \u0074\u0068\u00e0\u006e\u0068 \u0063\u00f4\u006e\u0067. +blockList=\u00a76Essentials \u0063\u0068\u0075\u0079\u1ec3\u006e \u0074\u0069\u1ebf\u0070 \u0063\u00e1\u0063 \u006c\u1ec7\u006e\u0068 \u0073\u0061\u0075 \u0076\u00e0\u006f \u006d\u1ed9\u0074 \u0070\u006c\u0075\u0067\u0069\u006e \u006b\u0068\u00e1\u0063\: +bookAuthorSet=\u00a76\u0054\u00e1\u0063 \u0067\u0069\u1ea3 \u0063\u1ee7\u0061 \u0071\u0075\u0079\u1ec3\u006e \u0073\u00e1\u0063\u0068 \u0111\u01b0\u1ee3\u0063 \u0111\u1eb7\u0074 \u0074\u0068\u00e0\u006e\u0068 {0}. +bookLocked=\u00a76\u0051\u0075\u0079\u1ec3\u006e \u0073\u00e1\u0063\u0068 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u006b\u0068\u00f3\u0061. +bookTitleSet=\u00a76\u0054\u0069\u00ea\u0075 \u0111\u1ec3 \u0063\u1ee7\u0061 \u0071\u0075\u0079\u1ec1\u006e \u0073\u00e1\u0063\u0068 \u0111\u01b0\u1ee3\u0063 \u0111\u1eb7\u0074 \u0074\u0068\u00e0\u006e\u0068 {0}. +broadcast=\u00a7r\u00a76[\u00a74\u0054\u0068\u00f4\u006e\u0067 \u0063\u00e1\u006f\u00a76]\u00a7a {0} +buildAlert=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0078\u00e2\u0079. +bukkitFormatChanged=\u0110\u1ecb\u006e\u0068 \u0064\u1ea1\u006e\u0067 \u0070\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0063\u1ee7\u0061 \u0042\u0075\u006b\u006b\u0069\u0074 \u0111\u00e3 \u0062\u1ecb \u0074\u0068\u0061\u0079 \u0111\u1ed5\u0069\u002e \u0050\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0063\u0068\u01b0\u0061 \u0111\u01b0\u1ee3\u0063 \u006b\u0069\u1ec3\u006d \u0074\u0072\u0061 +burnMsg=\u00a76\u0042\u1ea1\u006e \u006c\u00e0\u006d \u0063\u0068\u006f\u00a7c {0} \u00a76\u0062\u1ecb \u0063\u0068\u00e1\u0079 \u0074\u0072\u006f\u006e\u0067\u00a7c {1} \u0067\u0069\u00e2\u0079\u00a76. +canTalkAgain=\u00a76\u0042\u1ea1\u006e \u0063\u00f3 \u0074\u0068\u1ec3 \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e \u006c\u1ea1\u0069. +cannotStackMob=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0078\u1ebf\u0070 \u0063\u0068\u1ed3\u006e\u0067 \u006e\u0068\u0069\u1ec1\u0075 \u0071\u0075\u00e1\u0069. +cantFindGeoIpDB=\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u00ec\u006d \u0074\u0068\u1ea5\u0079 \u0063\u01a1 \u0073\u1edf \u0064\u1eef \u006c\u0069\u1ec7\u0075 \u0047\u0065\u006f\u0049\u0050\! +cantReadGeoIpDB=\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u1ecd\u0063 \u0063\u01a1 \u0073\u1edf \u0064\u1eef \u006c\u0069\u1ec7\u0075 \u0047\u0065\u006f\u0049\u0050\! +cantSpawnItem=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0074\u1ea1\u006f \u0072\u0061 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d\u00a7c {0}\u00a74. +chatTypeAdmin=[A] +chatTypeLocal=[L] +chatTypeSpy=[Spy] +cleaned=\u0110\u00e3 \u0064\u1ecd\u006e \u0074\u1ec7\u0070 \u0074\u0068\u00f4\u006e\u0067 \u0074\u0069\u006e \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069. +cleaning=\u0110\u0061\u006e\u0067 \u0064\u1ecd\u006e \u0074\u1ec7\u0070 \u0074\u0068\u00f4\u006e\u0067 \u0074\u0069\u006e \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069. +clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears. +clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears. +commandFailed=\u004c\u1ec7\u006e\u0068 {0} \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069\: +commandHelpFailedForPlugin=\u004c\u1ed7\u0069 \u006b\u0068\u0069 \u006e\u0068\u1ead\u0070 \u0074\u0072\u1ee3 \u0067\u0069\u00fa\u0070 \u0063\u0068\u006f \u0070\u006c\u0075\u0067\u0069\u006e\: {0} +commandNotLoaded=\u00a74\u004c\u1ec7\u006e\u0068 {0} \u006b\u0068\u00f4\u006e\u0067 \u0063\u0068\u00ed\u006e\u0068 \u0078\u00e1\u0063. +compassBearing=\u00a76\u0048\u01b0\u1edb\u006e\u0067\: {0} ({1} \u0111\u1ed9). +configFileMoveError=\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 \u006b\u0068\u0069 \u0064\u0069 \u0063\u0068\u0075\u0079\u1ec3\u006e config.yml \u0074\u1edb\u0069 \u0076\u1ecb \u0074\u0072\u00ed \u0073\u0061\u006f \u006c\u01b0\u0075. +configFileRenameError=\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 \u006b\u0068\u0069 \u0111\u1ed5\u0069 \u0074\u00ea\u006e \u0074\u1ec7\u0070 \u0074\u0069\u006e \u0074\u1ea1\u006d \u0074\u0068\u1edd\u0069 \u0074\u0068\u00e0\u006e\u0068 config.yml. +confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0} +confirmPayment=\u00a77\u0110\u1ec3 \u00a7l\u0058\u00c1\u0043 \u004e\u0048\u1eac\u004e\u00a77 \u006b\u0068\u006f\u1ea3\u006e \u0074\u0068\u0061\u006e\u0068 \u0074\u006f\u00e1\u006e \u00a76{0}\u00a77, \u0078\u0069\u006e \u0068\u00e3\u0079 \u006c\u1eb7\u0070 \u006c\u1ea1\u0069 \u006c\u1ec7\u006e\u0068: \u00a76{1} +connectedPlayers=\u00a76\u004e\u0068\u1eef\u006e\u0067 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0111\u00e3 \u006b\u1ebf\u0074 \u006e\u1ed1\u0069\u00a7r +connectionFailed=\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 \u006b\u0068\u0069 \u006d\u1edf \u006b\u1ebf\u0074 \u006e\u1ed1\u0069. +cooldownWithMessage=\u00a74\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0068\u1ed3\u0069\: {0} +corruptNodeInConfig=\u00a74\u004c\u01b0\u0075 \u00fd\: \u0054\u1ec7\u0070 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0028\u0063\u006f\u006e\u0066\u0069\u0067\u0029 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0063\u00f3 {0} \u006c\u1ed7\u0069. +couldNotFindTemplate=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0074\u00ec\u006d \u0074\u0068\u1ea5\u0079 \u006d\u1eab\u0075 {0} +creatingConfigFromTemplate=\u0054\u1ea1\u006f \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0028\u0063\u006f\u006e\u0066\u0069\u0067\u0029 \u0074\u1eeb \u006d\u1eab\u0075\: {0} +creatingEmptyConfig=\u0110\u0061\u006e\u0067 \u0074\u1ea1\u006f \u006d\u1ed9\u0074 \u0074\u1ec7\u0070 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0028\u0063\u006f\u006e\u0066\u0069\u0067\u0029 \u0072\u1ed7\u006e\u0067\: {0} +creative=\u0053\u00e1\u006e\u0067 \u0074\u1ea1\u006f +currency={0}{1} +currentWorld=\u00a76\u0054\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u0068\u0069\u1ec7\u006e \u0074\u1ea1\u0069\:\u00a7c {0} +day=\u004e\u0067\u00e0\u0079 +days=\u004e\u0067\u00e0\u0079 +defaultBanReason=\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d \u006b\u0068\u1ecf\u0069 \u006d\u00e1\u0079 \u0063\u0068\u1ee7 \u006e\u00e0\u0079\! +deleteFileError=\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0078\u00f3\u0061 \u0074\u1ec7\u0070\: {0} +deleteHome=\u00a76\u004e\u0068\u00e0\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u006f\u1ea1\u0069 \u0062\u1ecf. +deleteJail=\u00a76\u004e\u0067\u1ee5\u0063\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u006f\u1ea1\u0069 \u0062\u1ecf. +deleteWarp=\u00a76\u004b\u0068\u0075 \u0076\u1ef1\u0063\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u006f\u1ea1\u0069 \u0062\u1ecf. +deniedAccessCommand=\u00a7c{0} \u00a74\u0062\u1ecb \u0074\u1eeb \u0063\u0068\u1ed1\u0069 \u0064\u00f9\u006e\u0067 \u006c\u1ec7\u006e\u0068. +denyBookEdit=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u006d\u1edf \u006b\u0068\u00f3\u0061 \u0071\u0075\u0079\u1ec3\u006e \u0073\u00e1\u0063\u0068 \u006e\u00e0\u0079. +denyChangeAuthor=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u0068\u0061\u0079 \u0111\u1ed5\u0069 \u0074\u00e1\u0063 \u0067\u0069\u1ea3 \u0063\u1ee7\u0061 \u0071\u0075\u0079\u1ec3\u006e \u0073\u00e1\u0063\u0068 \u006e\u00e0\u0079. +denyChangeTitle=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u0068\u0061\u0079 \u0111\u1ed5\u0069 \u0074\u0069\u00ea\u0075 \u0111\u1ec1 \u0063\u1ee7\u0061 \u0071\u0075\u0079\u1ec3\u006e \u0073\u00e1\u0063\u0068 \u006e\u00e0\u0079. +depth=\u00a76\u0042\u1ea1\u006e \u0111\u0061\u006e\u0067 \u1edf \u0076\u1ecb \u0074\u0072\u00ed \u0074\u0072\u00f9\u006e\u0067 \u0076\u1edb\u0069 \u006d\u1ef1\u0063 \u006e\u01b0\u1edb\u0063 \u0062\u0069\u1ec3\u006e. +depthAboveSea=\u00a76\u0042\u1ea1\u006e \u0111\u0061\u006e\u0067 \u1edf \u0074\u0072\u00ea\u006e \u006d\u1ef1\u0063 \u006e\u01b0\u1edb\u0063 \u0062\u0069\u1ec3\u006e\u00a7c {0} \u00a76\u006b\u0068\u1ed1\u0069. +depthBelowSea=\u00a76\u0042\u1ea1\u006e \u0111\u0061\u006e\u0067 \u1edf \u0064\u01b0\u1edb\u0069 \u006d\u1ef1\u0063 \u006e\u01b0\u1edb\u0063 \u0062\u0069\u1ec3\u006e\u00a7c {0} \u00a76\u006b\u0068\u1ed1\u0069. +destinationNotSet=\u004b\u0068\u00f4\u006e\u0067 \u0111\u1eb7\u0074 \u0111\u00ed\u0063\u0068\! +disableUnlimited=\u00a76\u0056\u00f4 \u0068\u0069\u1ec7\u0075 \u0068\u00f3\u0061 \u0076\u0069\u1ec7\u0063 \u0111\u1eb7\u0074 \u006b\u0068\u00f4\u006e\u0067 \u0067\u0069\u1edb\u0069 \u0068\u1ea1\u006e \u006b\u0068\u1ed1\u0069\u00a7c {0} \u00a76\u0063\u0068\u006f {1}. +disabled=\u0054\u1eaf\u0074 +disabledToSpawnMob=\u00a74\u0056\u0069\u1ec7\u0063 \u0073\u0069\u006e\u0068 \u0072\u0061 \u0071\u0075\u00e1\u0069 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u0063\u0068\u1eb7\u006e \u1edf \u0074\u0072\u006f\u006e\u0067 \u0074\u1ec7\u0070 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0028\u0063\u006f\u006e\u0066\u0069\u0067\u0029. +distance=\u00a76\u004b\u0068\u006f\u1ea3\u006e\u0067 \u0063\u00e1\u0063\u0068\: {0} +dontMoveMessage=\u00a76\u0043\u0068\u0075\u1ea9\u006e \u0062\u1ecb \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0074\u0072\u006f\u006e\u0067\u00a7c {0}\u00a76. \u0110\u1eeb\u006e\u0067 \u0064\u0069 \u0063\u0068\u0075\u0079\u1ec3\u006e. +downloadingGeoIp=\u0110\u0061\u006e\u0067 \u0074\u1ea3\u0069 \u0078\u0075\u1ed1\u006e\u0067 \u0063\u01a1 \u0073\u1edf \u0064\u1eef \u006c\u0069\u1ec7\u0075 \u0047\u0065\u006f\u0049\u0050 \u002e\u002e\u002e \u0063\u00f3 \u0074\u0068\u1ec3 \u006d\u1ea5\u0074 \u006d\u1ed9\u0074 \u006c\u00fa\u0063 (\u006e\u01b0\u1edb\u0063\: 0.6 MB, \u0074\u0068\u00e0\u006e\u0068 \u0070\u0068\u1ed1\: 20MB) +duplicatedUserdata=\u0044\u1eef \u006c\u0069\u1ec7\u0075 \u006e\u0067\u01b0\u1edd\u0069 \u0064\u00f9\u006e\u0067 \u0074\u0072\u00f9\u006e\u0067 \u006c\u1eb7\u0070\: {0} \u0076\u00e0 {1}. +durability=\u00a76\u0043\u00f4\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u0079 \u0063\u00f2\u006e \u0063\u00f3 \u0074\u0068\u1ec3 \u0064\u00f9\u006e\u0067 \u00a7c{0}\u00a76 \u006c\u1ea7\u006e \u006e\u1eef\u0061. +editBookContents=\u00a7e\u0042\u00e2\u0079 \u0067\u0069\u1edd \u0062\u1ea1\u006e \u0063\u00f3 \u0074\u0068\u1ec3 \u0063\u0068\u1ec9\u006e\u0068 \u0073\u1eed\u0061 \u006e\u1ed9\u0069 \u0064\u0075\u006e\u0067 \u0063\u1ee7\u0061 \u0071\u0075\u0079\u1ec3\u006e \u0073\u00e1\u0063\u0068 \u006e\u00e0\u0079. +enableUnlimited=\u00a76\u0043\u0068\u006f \u006d\u1ed9\u0074 \u0073\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u006b\u0068\u00f4\u006e\u0067 \u0067\u0069\u1edb\u0069 \u0068\u1ea1\u006e\u00a7c {0} \u00a76\u0063\u0068\u006f \u00a7c{1}\u00a76. +enabled=\u0042\u1ead\u0074 +enchantmentApplied=\u00a76\u0050\u0068\u00f9 \u0070\u0068\u00e9\u0070\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u0069\u1ebf\u0074 \u006c\u1ead\u0070 \u0063\u0068\u006f \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0074\u0072\u00ea\u006e \u0074\u0061\u0079 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +enchantmentNotFound=\u00a74\u0050\u0068\u00f9 \u0070\u0068\u00e9\u0070 \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3\! +enchantmentPerm=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3\u00a7c {0}\u00a74. +enchantmentRemoved=\u00a76\u0050\u0068\u00f9 \u0070\u0068\u00e9\u0070\u00a7c {0} \u00a76\u0111\u00e3 \u0062\u1ecb \u006c\u006f\u1ea1\u0069 \u0062\u1ecf \u006b\u0068\u1ecf\u0069 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0074\u0072\u00ea\u006e \u0074\u0061\u0079 \u0062\u1ea1\u006e. +enchantments=\u00a76\u0050\u0068\u00f9 \u0070\u0068\u00e9\u0070\:\u00a7r {0} +errorCallingCommand=\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 \u006b\u0068\u0069 \u0067\u1ecd\u0069 \u006c\u1ec7\u006e\u0068 /{0} +errorWithMessage=\u00a7c\u004c\u1ed7\u0069\:\u00a74 {0} +essentialsHelp1=\u0054\u1ec7\u0070 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u0068\u1ecf\u006e\u0067 \u0076\u00e0 \u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u006d\u1edf \u006e\u00f3\u002e \u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073 \u0067\u0069\u1edd \u0073\u1ebd \u0074\u1eaf\u0074\u002e \u004e\u1ebf\u0075 \u0062\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0073\u1eed\u0061 \u0074\u1ec7\u0070 \u006e\u00e0\u0079\u002c \u0068\u00e3\u0079 \u0111\u0069 \u0074\u0068\u0065\u006f \u0111\u01b0\u1edd\u006e\u0067 \u0064\u1eab\u006e http\://tiny.cc/EssentialsChat +essentialsHelp2=\u0054\u1ec7\u0070 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u0068\u1ecf\u006e\u0067 \u0076\u00e0 \u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u006d\u1edf \u006e\u00f3\u002e \u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073 \u0067\u0069\u1edd \u0073\u1ebd \u0074\u1eaf\u0074\u002e \u004e\u1ebf\u0075 \u0062\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0073\u1eed\u0061 \u0074\u1ec7\u0070 \u006e\u00e0\u0079\u002c \u0068\u00e3\u0079 \u006e\u0068\u1ead\u0070 \u006c\u1ec7\u006e\u0068 \u002f\u0065\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073\u0068\u0065\u006c\u0070 \u0074\u0072\u006f\u006e\u0067 \u0074\u0072\u00f2 \u0063\u0068\u01a1\u0069 \u0068\u006f\u1eb7\u0063 \u0111\u0069 \u0111\u1ebf\u006e http\://tiny.cc/EssentialsChat +essentialsReload=\u00a76\u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073 \u0111\u00e3 \u0074\u1ea3\u0069 \u006c\u1ea1\u0069\u00a7c {0}. +exp=\u00a7c{0} \u00a76\u0063\u00f3\u00a7c {1} \u00a76\u006b\u0069\u006e\u0068 \u006e\u0067\u0068\u0069\u1ec7\u006d (\u0063\u1ea5\u0070\u00a7c {2}\u00a76) \u0076\u00e0 \u0063\u1ea7\u006e \u0074\u0068\u00ea\u006d\u00a7c {3} \u00a76\u006b\u0069\u006e\u0068 \u006e\u0067\u0068\u0069\u1ec7\u006d \u0111\u1ec3 \u006c\u00ea\u006e \u0063\u1ea5\u0070. +east=E +expSet=\u00a7c{0} \u00a76\u0067\u0069\u1edd \u0063\u00f3\u00a7c {1} \u00a76\u006b\u0069\u006e\u0068 \u006e\u0067\u0068\u0069\u1ec7\u006d. +extinguish=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0064\u1ead\u0070 \u006c\u1eed\u0061 \u0074\u0072\u00ea\u006e \u006e\u0067\u01b0\u1edd\u0069 \u006d\u00ec\u006e\u0068. +extinguishOthers=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0064\u1ead\u0070 \u006c\u1eed\u0061 \u0074\u0072\u00ea\u006e \u006e\u0067\u01b0\u1edd\u0069 {0}\u00a76. +failedToCloseConfig=\u0110\u00f3\u006e\u0067 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 {0}. +failedToCreateConfig=\u0054\u1ea1\u006f \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 {0}. +failedToWriteConfig=\u0056\u0069\u1ebf\u0074 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 {0}. +false=\u0053\u0061\u0069 +feed=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0068\u1ebf\u0074 \u0111\u00f3\u0069. +feedOther=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u006c\u00e0\u006d \u006e\u006f \u00a7c{0}\u00a76. +fileRenameError=\u0043\u0068\u1ec9\u006e\u0068 \u0073\u1eed\u0061 \u0074\u00ea\u006e \u0074\u1ec7\u0070 {0} \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069\! +fireworkColor=\u00a74\u0054\u0068\u0061\u006d \u0073\u1ed1 \u0063\u0068\u00e8\u006e \u006b\u0068\u0069 \u006e\u1ea1\u0070 \u0070\u0068\u00e1\u006f \u0068\u006f\u0061 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7\u002c \u0062\u1ea1\u006e \u0070\u0068\u1ea3\u0069 \u0063\u0068\u1ec9\u006e\u0068 \u006d\u00e0\u0075 \u0074\u0072\u01b0\u1edb\u0063. +fireworkEffectsCleared=\u00a76\u004c\u006f\u1ea1\u0069 \u0062\u1ecf \u0074\u1ea5\u0074 \u0063\u1ea3 \u0063\u00e1\u0063 \u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067 \u0074\u1eeb \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0111\u0061\u006e\u0067 \u0067\u0069\u1eef. +fireworkSyntax=\u00a76\u0054\u0068\u00f4\u006e\u0067 \u0073\u1ed1 \u0070\u0068\u00e1\u006f \u0068\u006f\u0061\:\u00a7c \u006d\u00e0\u0075\:<\u006d\u00e0\u0075> [fade\:<\u006d\u00e0\u0075>] [shape\:<\u0068\u00ec\u006e\u0068 \u0064\u1ea1\u006e\u0067>] [effect\:<\u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067>]\n\u00a76\u0110\u1ec3 \u0073\u1eed \u0064\u1ee5\u006e\u0067 \u006e\u0068\u0069\u1ec1\u0075 \u006d\u00e0\u0075\u002f\u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067\u002c \u006e\u0067\u0103\u006e\u0067 \u0063\u00e1\u0063\u0068 \u0063\u0068\u00fa\u006e\u0067 \u0062\u1eb1\u006e\u0067 \u0064\u1ea5\u0075 \u0070\u0068\u1ea9\u0079\: \u00a7cred,blue,pink\n\u00a76\u0048\u00ec\u006e\u0068 \u0064\u1ea1\u006e\u0067\:\u00a7c star, ball, large, creeper, burst \u00a76\u0048\u0069\u1ec7\u0075 \u1ee9\u006e\u0067\:\u00a7c trail, twinkle. +flyMode=\u00a76\u0043\u0068\u1ebf \u0111\u1ed9 \u0062\u0061\u0079 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063\u00a7c {0} \u00a76\u0063\u0068\u006f {1}\u00a76. +flying=\u0042\u0061\u0079 +foreverAlone=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0061\u0069 \u0111\u1ec3 \u0074\u0072\u1ea3 \u006c\u1edd\u0069. +recentlyForeverAlone=\u00a74{0} \u0111\u00e3 \u006e\u0067\u006f\u1ea1\u0069 \u0074\u0075\u0079\u1ebf\u006e. +fullStack=\u00a74\u0042\u1ea1\u006e \u0111\u00e3 \u0063\u00f3 \u0111\u1ea7\u0079 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d. +gameMode=\u00a76\u0043\u0068\u1ebf \u0111\u1ed9\u00a7c {0} \u00a76\u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9\u006e\u0068 \u0063\u0068\u006f \u00a7c{1}\u00a76. +gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 \u006d\u1ea3\u006e\u0068\u0028\u0063\u0068\u0075\u006e\u006b\u0073\u0029, \u00a7c{3}\u00a76 \u0074\u0068\u1ef1\u0063 \u0074\u0068\u1ec3, \u00a7c{4}\u00a76 \u006b\u0068\u1ed1\u0069. +gcfree=\u00a76\u0042\u1ed9 \u006e\u0068\u1edb \u0074\u0072\u1ed1\u006e\u0067\:\u00a7c {0} MB. +gcmax=\u00a76\u0042\u1ed9 \u006e\u0068\u1edb \u0074\u1ed1\u0069 \u0111\u0061\:\u00a7c {0} MB. +gctotal=\u00a76\u0042\u1ed9 \u006e\u0068\u1edb \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e2\u006e \u0062\u1ed5\:\u00a7c {0} MB. +geoIpUrlEmpty=\u0110\u1ecb\u0061 \u0063\u0068\u1ec9 \u0074\u1ea3\u0069 \u0078\u0075\u1ed1\u006e\u0067 \u0047\u0065\u006f\u0049\u0050 \u0072\u1ed7\u006e\u0067. +geoIpUrlInvalid=\u0110\u1ecb\u0061 \u0063\u0068\u1ec9 \u0074\u1ea3\u0069 \u0078\u0075\u1ed1\u006e\u0067 \u0047\u0065\u006f\u0049\u0050 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +geoipJoinFormat=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u00a7c{0} \u00a76\u0111\u1ebf\u006e \u0074\u1eeb \u00a7c{1}\u00a76. +giveSpawn=\u00a76\u0110\u01b0\u0061\u00a7c {0} \u00a76\u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d\u00a7c {1} \u0063\u0068\u006f\u00a7c {2}\u00a76. +godDisabledFor=\u00a7c\u0074\u1eaf\u0074\u00a76 \u0063\u0068\u006f\u00a7c {0} +godEnabledFor=\u00a7a\u0062\u1ead\u0074\u00a76 \u0063\u0068\u006f\u00a7c {0} +godMode=\u00a76\u0043\u0068\u1ebf \u0111\u1ed9 \u0062\u1ea5\u0074 \u0074\u1eed\u00a7c {0}\u00a76. +groupDoesNotExist=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0061\u0069 \u0111\u0061\u006e\u0067 \u0074\u0072\u1ef1\u0063 \u0074\u0075\u0079\u1ebf\u006e \u0074\u0072\u006f\u006e\u0067 \u006e\u0068\u00f3\u006d\! +groupNumber=\u00a7c{0}\u00a7f \u0111\u0061\u006e\u0067 \u0074\u0072\u1ef1\u0063 \u0074\u0075\u0079\u1ebf\u006e\u002c \u0064\u0061\u006e\u0068 \u0073\u00e1\u0063\u0068 \u0111\u1ea7\u0079 \u0111\u1ee7\:\u00a7c /{1} {2} +hatArmor=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u1ed9\u0069 \u0063\u00e1\u0069 \u006e\u00e0\u0079 \u006e\u0068\u01b0 \u006d\u1ed9\u0074 \u0063\u00e1\u0069 \u006d\u0169\! +hatEmpty=\u00a74\u0042\u1ea1\u006e \u0111\u0061\u006e\u0067 \u006b\u0068\u00f4\u006e\u0067 \u0111\u1ed9\u0069 \u006d\u0169. +hatFail=\u00a74\u0042\u1ea1\u006e \u0063\u1ea7\u006e \u0070\u0068\u1ea3\u0069 \u0063\u1ea7\u006e \u006d\u1ed9\u0074 \u0063\u00e1\u0069 \u0067\u00ec \u0111\u00f3 \u0074\u0072\u00ea\u006e \u0074\u0061\u0079 \u006d\u1edb\u0069 \u0111\u1ed9\u0069 \u0111\u01b0\u1ee3\u0063. +hatPlaced=\u00a76\u0054\u0068\u01b0\u1edf\u006e\u0067 \u0074\u0068\u1ee9\u0063 \u0063\u0068\u0069\u1ebf\u0063 \u006d\u0169 \u006d\u1edb\u0069 \u006e\u00e0\u006f\! +hatRemoved=\u00a76\u004d\u0169 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0067\u1ee1. +haveBeenReleased=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u1ef1 \u0064\u006f. +heal=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0072\u1ecb \u006c\u0069\u1ec7\u0075. +healDead=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u0072\u1ecb \u006c\u0069\u1ec7\u0075 \u0063\u0068\u006f \u006e\u0067\u01b0\u1edd\u0069 \u0111\u00e3 \u0063\u0068\u1ebf\u0074\! +healOther=\u00a76\u0048\u1ed3\u0069 \u0070\u0068\u1ee5\u0063\u00a7c {0}\u00a76. +helpConsole=\u0110\u1ec3 \u006d\u1edf \u0062\u1ea3\u006e\u0067 \u0074\u0072\u1ee3 \u0067\u0069\u00fa\u0070 \u0074\u1eeb \u0062\u1ea3\u006e\u0067 \u0111\u0069\u1ec1\u0075 \u006b\u0068\u0069\u1ec3\u006e \u0028\u0043\u006f\u006e\u0073\u006f\u006c\u0065\u0029\u002c \u0067\u00f5 ?. +helpFrom=\u00a76\u004c\u1ec7\u006e\u0068 \u0074\u1eeb {0}\: +helpLine=\u00a76/{0}\u00a7r\: {1} +helpMatching=\u00a76\u004c\u1ec7\u006e\u0068 \u006b\u0068\u1edb\u0070 "\u00a7c{0}\u00a76"\: +helpOp=\u00a74[\u0054\u0072\u1ee3 \u0067\u0069\u00fa\u0070 \u004f\u0050]\u00a7r \u00a76{0}\:\u00a7r {1} +helpPlugin=\u00a74{0}\u00a7r\: \u0054\u0072\u1ee3 \u0067\u0069\u00fa\u0070 \u0070\u006c\u0075\u0067\u0069\u006e\: /help {1} +holdBook=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u1ea7\u006d \u0073\u00e1\u0063\u0068 \u0063\u00f3 \u0074\u0068\u1ec3 \u0076\u0069\u1ebf\u0074 \u0111\u01b0\u1ee3\u0063. +holdFirework=\u00a74\u0042\u1ea1\u006e \u0063\u1ea7\u006e \u0070\u0068\u1ea3\u0069 \u0063\u1ea7\u006d \u0070\u0068\u00e1\u006f \u0068\u006f\u0061 \u0111\u1ec3 \u0074\u0068\u00ea\u006d \u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067. +holdPotion=\u00a74\u0042\u1ea1\u006e \u0063\u1ea7\u006e \u0070\u0068\u1ea3\u0069 \u0063\u1ea7\u006e \u0063\u0068\u0061\u0069 \u0074\u0068\u0075\u1ed1\u0063 \u0111\u1ec3 \u0074\u0068\u0069\u1ebf\u0074 \u006c\u1ead\u0070 \u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067 \u006c\u00ea\u006e \u006e\u00f3. +holeInFloor=\u00a74\u0048\u1ed1 \u0074\u1eed \u0074\u0068\u1ea7\u006e\! +homeSet=\u00a76\u0056\u1ecb \u0074\u0072\u00ed \u0068\u0069\u1ec7\u006e \u0074\u1ea1\u0069 \u0111\u00e3 \u0074\u0068\u00e0\u006e\u0068 \u0076\u1ecb \u0074\u0072\u00ed \u006e\u0068\u00e0 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +homes=\u00a76\u004e\u0068\u00e0\:\u00a7r {0} +hour=\u0067\u0069\u1edd +hours=\u0067\u0069\u1edd +ignoredList=\u00a76\u0044\u0061\u006e\u0068 \u0073\u00e1\u0063\u0068 \u0063\u0068\u1eb7\u006e\:\u00a7r {0} +ignorePlayer=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0063\u0068\u1eb7\u006e\u00a7c {0} \u00a76\u0074\u1eeb \u0067\u0069\u1edd \u0074\u0072\u1edf \u0111\u0069. +illegalDate=\u0110\u1ecb\u006e\u0068 \u0064\u1ea1\u006e\u0067 \u006e\u0067\u00e0\u0079 \u0062\u1ea5\u0074 \u0068\u1ee3\u0070 \u0070\u0068\u00e1\u0070. +infoChapter=\u00a76\u0043\u0068\u1ecd\u006e \u0074\u0072\u0061\u006e\u0067\: +infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 \u0054\u0072\u0061\u006e\u0067 \u00a7c{1}\u00a76 \u0063\u1ee7\u0061 \u00a7c{2} \u00a7e---- +infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 \u0054\u0072\u0061\u006e\u0067 \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e---- +infoUnknownChapter=\u00a74\u0054\u0072\u0061\u006e\u0067 \u006b\u0068\u00f4\u006e\u0067 \u0078\u00e1\u0063 \u0111\u1ecb\u006e\u0068. +insufficientFunds=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0111\u1ee7 \u0074\u0069\u1ec1\u006e. +invalidCharge=\u00a74\u0050\u0068\u00ed \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +invalidFireworkFormat=\u00a74\u0054\u0068\u0069\u1ebf\u0074 \u006c\u1ead\u0070 \u00a7c{0} \u00a74\u006c\u00e0 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7 \u0076\u1edb\u0069 \u00a7c{1}\u00a74. +invalidHome=\u00a74\u004e\u0068\u00e0\u00a7c {0} \u00a74\u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7\! +invalidHomeName=\u00a74\u0054\u00ea\u006e \u006e\u0068\u00e0 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7\! +invalidMob=\u00a74\u004c\u006f\u1ea1\u0069 \u0071\u0075\u00e1\u0069 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +invalidNumber=\u0053\u1ed1 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +invalidPotion=\u00a74\u0054\u0068\u0075\u1ed1\u0063 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +invalidPotionMeta=\u00a74\u0054\u0068\u00f4\u006e\u0067 \u0074\u0069\u006e \u0074\u0068\u0075\u1ed1\u0063 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7\: \u00a7c{0}\u00a74. +invalidSignLine=\u00a74\u0044\u00f2\u006e\u0067\u00a7c {0} \u00a74\u0074\u0072\u00ea\u006e \u0062\u1ea3\u006e\u0067 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +invalidWarpName=\u00a74\u0054\u00ea\u006e \u006b\u0068\u0075 \u0076\u1ef1\u0063 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7\! +invalidWorld=\u00a74\u0054\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +is=\u006c\u01b0\u0075 \u0067\u0069\u1eef +itemCannotBeSold=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0062\u00e1\u006e \u0074\u0072\u00ea\u006e \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +itemId=\u00a76ID\:\u00a7c {0} +itemMustBeStacked=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0111\u1ed5\u0069 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u1ea3\u0069 \u0111\u1ea7\u0079\u002e \u004d\u1ed9\u0074 \u0073\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u0111\u1ea7\u0079 \u0068\u01a1\u006e \u006e\u00f3 \u0073\u1ebd \u0074\u0068\u00e0\u006e\u0068 \u0068\u0061\u0069\u002c \u0076\u002e\u0076\u002e\u002e\u002e. +itemNames=\u00a76\u0054\u00ea\u006e \u0074\u0068\u0075 \u0067\u1ecd\u006e\:\u00a7r {0} +itemNotEnough1=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0111\u1ee7 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0111\u1ec3 \u0062\u00e1\u006e. +itemNotEnough2=\u00a76\u004e\u1ebf\u0075 \u0062\u1ea1\u006e \u006d\u0075\u1ed1\u006e \u0062\u00e1\u006e \u0074\u1ea5\u0074 \u0063\u1ea3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0063\u00f9\u006e\u0067 \u006c\u006f\u1ea1\u0069\u002c \u0068\u00e3\u0079 \u0064\u00f9\u006e\u0067 \u002f\u0073\u0065\u006c\u006c \u003c\u0074\u00ea\u006e \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d\u003e. +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. +itemNotEnough3=\u00a76\u002f\u0073\u0065\u006c\u006c \u003c\u0074\u00ea\u006e \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d\u003e \u002d\u0111\u0069\u1ec1\u0075 \u006e\u00e0\u0079 \u0073\u1ebd \u0062\u00e1\u006e \u0074\u1ea5\u0074 \u0063\u1ea3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0063\u00f9\u006e\u0067 \u006c\u006f\u1ea1\u0069. +itemSellAir=\u0042\u1ea1\u006e \u0111\u0061\u006e\u0067 \u0063\u1ed1 \u0067\u1eaf\u006e\u0067 \u0111\u1ec3 \u0062\u00e1\u006e \u006b\u0068\u00f4\u006e\u0067 \u006b\u0068\u00ed\u003f \u0110\u1ec3 \u006e\u00f3 \u006c\u00ea\u006e \u0074\u0061\u0079 \u0062\u1ea1\u006e \u0111\u0069. +itemSold=\u00a7a\u0110\u00e3 \u0062\u00e1\u006e \u0111\u01b0\u1ee3\u0063 \u00a7c{0} \u00a7a({1} {2} \u0076\u1edb\u0069 {3} \u006d\u1ed7\u0069 \u0063\u00e1\u0069). +itemSoldConsole=\u00a7a{0} \u00a7a\u0111\u00e3 \u0062\u00e1\u006e {1} \u0076\u00e0 \u006e\u0068\u1ead\u006e \u0111\u01b0\u1ee3\u0063 \u00a7a{2} \u00a7a({3} \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u1edb\u0069 {4} \u006d\u1ed7\u0069 \u0063\u00e1\u0069). +itemSpawn=\u00a76\u0043\u0068\u006f\u00a7c {0} \u00a76\u0063\u00e1\u0069\u00a7c {1} +itemType=\u00a76\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d\:\u00a7c {0} +itemsCsvNotLoaded=\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u1ea3\u0069 \u0074\u1ec7\u0070 items.csv\! +jailAlreadyIncarcerated=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u0067\u0069\u0061\u006d\:\u00a7c {0} +jailList=\u00a76Jails\:\u00a7r {0} +jailMessage=\u00a74\u0042\u1ea1\u006e \u0070\u0068\u1ea1\u006d \u0074\u1ed9\u0069\u002c \u0062\u1ea1\u006e \u0062\u1ecb \u0070\u0068\u1ea1\u0074 \u0074\u00f9. +jailNotExist=\u00a74\u004e\u0068\u00e0 \u0074\u00f9 \u0111\u00f3 \u006b\u0068\u00f4\u006e\u0067 \u0074\u1ed3\u006e \u0074\u1ea1\u0069. +jailReleased=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u00a7c{0}\u00a76 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u1ea3. +jailReleasedPlayerNotify=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u1ea3\! +jailSentenceExtended=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0062\u1ecb \u0062\u1eaf\u0074 \u0067\u0069\u0061\u006d \u006b\u00e9\u006f \u0064\u00e0\u0069 \u0111\u1ebf\u006e \u00a7c{0}\u00a76. +jailSet=\u00a76\u004e\u0067\u1ee5\u0063\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u0069\u1ebf\u0074 \u006c\u1ead\u0070. +jumpError=\u00a74\u0110\u0069\u1ec1\u0075 \u006e\u00e0\u0079 \u0073\u1ebd \u0074\u1ed5\u006e \u0074\u0068\u01b0\u01a1\u006e\u0067 \u0062\u1ed9 \u006e\u00e3\u006f \u0063\u1ee7\u0061 \u006d\u00e1\u0079 \u0074\u00ed\u006e\u0068 \u0062\u1ea1\u006e \u0111\u1ea5\u0079. +kickDefault=\u0110\u00e1 \u006b\u0068\u1ecf\u0069 \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +kickExempt=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u00e1 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079. +kickedAll=\u00a74\u0110\u00e1 \u0074\u1ea5\u0074 \u0063\u1ea3 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0072\u0061 \u006b\u0068\u1ecf\u0069 \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +kill=\u00a76\u0110\u00e3 \u0067\u0069\u1ebf\u0074\u00a7c {0}\u00a76. +killExempt=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0067\u0069\u1ebf\u0074 \u00a7c{0}\u00a74. +kitCost=\ \u00a77\u00a7o({0})\u00a7r +kitError2=\u00a74\u0042\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u0028\u006b\u0069\u0074\u0029 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u0073\u0061\u0069\u002c \u0068\u00e3\u0079 \u006c\u0069\u00ea\u006e \u0068\u1ec7 \u0076\u1edb\u0069 \u0071\u0075\u1ea3\u006e \u0074\u0072\u1ecb \u0076\u0069\u00ea\u006e. +internalError=\u00a7cAn internal error occurred while attempting to perform this command. +kitError=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u0028\u006b\u0069\u0074\u0029 \u0068\u1ee3\u0070 \u006c\u1ec7. +kitGiveTo=\u00a76\u0110\u01b0\u0061 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5\u00a7c {0}\u00a76 \u0063\u0068\u006f \u00a7c{1}\u00a76. +kitInvFull=\u00a74\u0054\u00fa\u0069 \u0111\u1ed3 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0111\u00e3 \u0111\u1ea7\u0079\u002c \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u0073\u1ebd \u0111\u1eb7\u0074 \u006c\u1ea1\u0069 \u0074\u0072\u00ea\u006e \u0111\u1ea5\u0074. +kitNotFound=\u00a74\u0042\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0074\u1ed3\u006e \u0074\u1ea1\u0069. +kitOnce=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0064\u00f9\u006e\u0067 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u0079 \u006c\u1ea7\u006e \u006e\u1eef\u0061. +kitReceive=\u00a76\u0110\u00e3 \u006e\u0068\u1ead\u006e \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5\u00a7c {0}\u00a76. +kitTimed=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0064\u00f9\u006e\u0067 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u0079 \u0074\u0072\u006f\u006e\u0067\u00a7c {0}\u00a74. +kits=\u00a76\u0042\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5\:\u00a7r {0} +leatherSyntax=\u00a76\u0043\u00fa \u0070\u0068\u00e1\u0070 \u0111\u1ed5\u0069 \u006d\u00e0\u0075 \u0064\u0061 \u0074\u0068\u0075\u1ed9\u0063\: color\:<\u0111\u1ecf>,<\u006c\u1ee5\u0063>,<\u006c\u0061\u006d> eg\: color\:255,0,0 \u0068\u006f\u1eb7\u0063 color\: eg\: color\:16777011 +lightningSmited=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0073\u00e9\u0074 \u0111\u00e1\u006e\u0068\! +lightningUse=\u00a76\u0053\u00e9\u0074 \u0111\u00e1\u006e\u0068\u00a7c {0} +listAfkTag=\u00a77[Treo máy]\u00a7r +listAmount=\u00a76\u0043\u00f3 \u00a7c{0}\u00a76 \u0074\u0072\u006f\u006e\u0067 \u0074\u1ed1\u0069 \u0111\u0061 \u00a7c{1}\u00a76 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0074\u0072\u1ef1\u0063 \u0074\u0075\u0079\u1ebf\u006e. +listAmountHidden=\u00a76\u0043\u00f3 \u00a7c{0}\u00a76/{1}\u00a76 \u0074\u0072\u006f\u006e\u0067 \u0074\u1ed1\u0069 \u0111\u0061 \u00a7c{2}\u00a76 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0074\u0072\u1ef1\u0063 \u0074\u0075\u0079\u1ebf\u006e. +listGroupTag=\u00a76{0}\u00a7r\: \u00a7r +listHiddenTag=\u00a77[\u1ea8\u006e \u0074\u0068\u00e2\u006e]\u00a7r +loadWarpError=\u00a74\u0054\u1ea3\u0069 \u006b\u0068\u0075 \u0076\u1ef1\u0063 {0} \u00a47\u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069. +localFormat=[L]<{0}> {1} +mailClear=\u00a76\u0110\u1ec3 \u0078\u00f3\u0061 \u0074\u0068\u01b0\u002c \u0067\u00f5\u00a7c /mail clear\u00a76. +mailCleared=\u00a76\u0110\u00e3 \u0064\u1ecd\u006e \u0074\u0068\u01b0\! +mailSent=\u00a76\u0110\u00e3 \u0067\u1eed\u0069 \u0074\u0068\u01b0\! +markMailAsRead=\u00a76\u0110\u1ec3 \u0111\u00e1\u006e\u0068 \u0064\u1ea5\u0075 \u0074\u0068\u01b0 \u0111\u00e3 \u0111\u1ecd\u0063\u002c \u0067\u00f5\u00a7c /mail clear\u00a76. +markedAsAway=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0111\u00e1\u006e\u0068 \u0064\u1ea5\u0075 \u0063\u0068\u00fa\u006e\u0067. +markedAsNotAway=\u00a76\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f2\u006e \u0111\u00e1\u006e\u0068 \u0064\u1ea5\u0075 \u0063\u0068\u00fa\u006e\u0067 \u006e\u1eef\u0061. +matchingIPAddress=\u00a76\u004e\u0068\u1eef\u006e\u0067 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0073\u0061\u0075 \u0111\u00e2\u0079 \u0111\u0103\u006e\u0067 \u006e\u0068\u1ead\u0070 \u0074\u1ef1 \u0111\u1ecb\u0061 \u0063\u0068\u1ec9 \u0049\u0050 \u0074\u0072\u00ea\u006e\: +maxHomes=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u1eb7\u0074 \u006e\u0068\u0069\u1ec1\u0075 \u0068\u01a1\u006e\u00a7c {0} \u00a74\u006e\u0068\u00e0. +mayNotJail=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0067\u0069\u0061\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079\! +me=\u0074\u00f4\u0069 +minute=\u0070\u0068\u00fa\u0074 +minutes=\u0070\u0068\u00fa\u0074 +missingItems=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u00a7c{0}x {1}\u00a74. +mobSpawnError=\u00a74\u0043\u00f3 \u006c\u1ed7\u0069 \u0078\u1ea3\u0079 \u0072\u0061 \u006b\u0068\u0069 \u0074\u0068\u0061\u0079 \u0111\u1ed5\u0069 \u006c\u1ed3\u006e\u0067 \u0071\u0075\u00e1\u0069. +mobSpawnLimit=\u0053\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u0071\u0075\u00e1\u0069 \u0062\u1ecb \u0067\u0069\u1edb\u0069 \u0068\u1ea1\u006e \u0074\u0072\u00ea\u006e \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +mobSpawnTarget=\u00a74\u0110\u1ed1\u0069 \u0074\u01b0\u1ee3\u006e\u0067 \u0070\u0068\u1ea3\u0069 \u006c\u00e0 \u006d\u1ed9\u0074 \u006c\u1ed3\u006e\u0067 \u0071\u0075\u00e1\u0069. +mobsAvailable=\u00a76Mobs\u0051\u0075\u00e1\u0069\:\u00a7r {0} +moneyRecievedFrom=\u00a7a\u004e\u0068\u1ead\u006e \u0111\u01b0\u1ee3\u0063 {0} \u0074\u1eeb {1}. +moneySentTo=\u00a7a\u0110\u00e3 \u0067\u1eed\u0069{0} \u0111\u1ebf\u006e {1}. +month=\u0074\u0068\u00e1\u006e\u0067 +months=\u0074\u0068\u00e1\u006e\u0067 +moreThanZero=\u00a74\u0053\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u0070\u0068\u1ea3\u0069 \u006c\u1edb\u006e \u0068\u01a1\u006e \u0030. +moveSpeed=\u00a76\u0110\u00e3 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u1ed1\u0063 \u0111\u1ed9 {0} \u0074\u0068\u00e0\u006e\u0068\u00a7c {1} \u00a76\u0063\u0068\u006f \u00a7c{2}\u00a76. +msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2} +multipleCharges=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u0068\u00ea\u006d \u006e\u0068\u0069\u1ec1\u0075 \u0068\u01a1\u006e \u0031 \u0076\u0069\u1ec7\u0063 \u0063\u0068\u006f \u0070\u0068\u00e1\u006f \u0068\u006f\u0061 \u006e\u00e0\u0079. +multiplePotionEffects=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u1eb7\u0074 \u006e\u0068\u0069\u1ec1\u0075 \u0068\u01a1\u006e \u006d\u1ed9\u0074 \u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067 \u0063\u0068\u006f \u0074\u0068\u0075\u1ed1\u0063 \u006e\u00e0\u0079. +muteExempt=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u1ea5\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079 \u006e\u00f3\u0069 \u0063\u0068\u0075\u0079\u1ec7\u006e. +muteNotify=\u00a7c{0} \u00a76\u0111\u00e3 \u0063\u1ea5\u006d \u00a7c{1}\u00a76 \u006e\u00f3\u0069 \u0063\u0068\u0075\u0079\u1ec7\u006e. +muteNotifyFor=\u00a7c{0} \u00a76\u0111\u00e3 \u0063\u1ea5\u006d \u00a7c{1}\u00a76 \u006e\u00f3\u0069 \u0063\u0068\u0075\u0079\u1ec7\u006e \u0074\u0072\u006f\u006e\u0067\u00a7c {2}\u00a76. +mutedPlayer=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e. +mutedPlayerFor=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0062\u1ecb \u0063\u1ea5\u006d \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e \u0074\u0072\u006f\u006e\u0067\u00a7c {1}\u00a76. +mutedUserSpeaks={0} \u0111\u0061\u006e\u0067 \u0063\u1ed1 \u0067\u1eaf\u006e\u0067 \u006e\u00f3\u0069\u002c \u006e\u0068\u01b0\u006e\u0067 \u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d. +nearbyPlayers=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u1edf \u0067\u1ea7\u006e\:\u00a7r {0} +negativeBalanceError=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0063\u00f3 \u0073\u1ed1 \u0064\u01b0 \u00e2\u006d. +nickChanged=\u00a76\u0042\u0069\u1ec7\u0074 \u0064\u0061\u006e\u0068 \u0074\u0068\u0061\u0079 \u0111\u1ed5\u0069. +nickDisplayName=\u00a74\u0042\u1ea1\u006e \u0070\u0068\u1ea3\u0069 \u006b\u00ed\u0063\u0068 \u0068\u006f\u1ea1\u0074 change-displayname \u0074\u0072\u006f\u006e\u0067 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 Essentials. +nickInUse=\u00a74\u0054\u00ea\u006e \u006e\u00e0\u0079 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0073\u1eed \u0064\u1ee5\u006e\u0067. +nickNamesAlpha=\u00a74\u0042\u0069\u1ec7\u0074 \u0064\u0061\u006e\u0068 \u0063\u0068\u1ec9 \u0063\u0068\u1ee9\u0061 \u0063\u0068\u1eef \u0076\u00e0 \u0073\u1ed1. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. +nickNoMore=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u006d\u1ea5\u0074 \u0062\u0069\u1ec7\u0074 \u0064\u0061\u006e\u0068 \u0063\u1ee7\u0061 \u006d\u00ec\u006e\u0068. +nickSet=\u00a76\u0042\u0069\u1ec7\u0074 \u0064\u0061\u006e\u0068 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0067\u0069\u1edd \u006c\u00e0 \u00a7c{0}\u00a76. +nickTooLong=\u00a74\u0042\u0069\u1ec7\u0074 \u0064\u0061\u006e\u0068 \u006e\u00e0\u0079 \u0071\u0075\u00e1 \u0064\u00e0\u0069. +noAccessCommand=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0064\u00f9\u006e\u0067 \u006c\u1ec7\u006e\u0068 \u006e\u00e0\u0079. +noAccessPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0074\u0072\u0075\u0079 \u0063\u1ead\u0070 \u0076\u00e0\u006f \u00a7c{0}\u00a74. +noBreakBedrock=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0070\u0068\u00e1 \u0076\u1ee1 \u0111\u00e1 \u006e\u1ec1\u006e. +noDestroyPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0070\u0068\u00e1 \u006b\u0068\u1ed1\u0069 \u00a7c{0}\u00a74. +noDurability=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0111\u1ed9 \u0062\u1ec1\u006e. +noGodWorldWarning=\u00a74\u0043\u0068\u00fa \u00fd\! \u0043\u0068\u1ebf \u0111\u1ed9 \u0062\u1ea5\u0074 \u0074\u1eed \u0111\u00e3 \u0062\u1ecb \u0074\u1eaf\u0074 \u0074\u0072\u006f\u006e\u0067 \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u006e\u00e0\u0079. +noHelpFound=\u00a74\u004c\u1ec7\u006e\u0068 \u006b\u0068\u00f4\u006e\u0067 \u006b\u0068\u1edb\u0070. +noHomeSetPlayer=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0063\u0068\u01b0\u0061 \u0111\u1eb7\u0074 \u0076\u1ecb \u0074\u0072\u00ed \u006e\u0068\u00e0. +noIgnored=\u00a76\u0042\u1ea1\u006e \u0063\u0068\u01b0\u0061 \u0063\u0068\u1eb7\u006e \u0061\u0069 \u0063\u1ea3. +noKitPermission=\u00a74\u0042\u1ea1\u006e \u0063\u1ea7\u006e \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u00a7c{0}\u00a74 \u0111\u1ec3 \u0064\u00f9\u006e\u0067 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u0079. +noKits=\u00a76\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u006f \u0063\u00f3 \u0073\u1eb5\u006e. +noMail=\u00a76\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0062\u1ee9\u0063 \u0074\u0068\u01b0 \u006e\u00e0\u006f. +noMatchingPlayers=\u00a76\u004b\u0068\u00f4\u006e\u0067 \u0074\u00ec\u006d \u0074\u0068\u1ea5\u0079 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0070\u0068\u00f9 \u0068\u1ee3\u0070. +noMetaFirework=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1eb7\u0074 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u0070\u0068\u00e1\u006f \u0068\u006f\u0061. +noMetaPerm=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1eb7\u0074 \u0063\u1ea5\u0075 \u0068\u00ec\u006e\u0068 \u00a7c{0}\u00a74 \u0063\u0068\u006f \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u0079. +noNewMail=\u00a76\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0074\u0068\u01b0 \u006d\u1edb\u0069. +noPendingRequest=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0063\u0068\u1edd \u0067\u0069\u1ea3\u0069 \u0071\u0075\u0079\u1ebf\u0074. +noPerm=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u00a7c{0}\u00a74. +noPermToAFKMessage=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1eb7\u0074 \u0074\u0068\u00f4\u006e\u0067 \u0062\u00e1\u006f \u0054\u0072\u0065\u006f \u006d\u00e1\u0079. +noPermToSpawnMob=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0073\u0069\u006e\u0068 \u0072\u0061 \u0071\u0075\u00e1\u0069 \u006e\u00e0\u0079. +noPlacePermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1eb7\u0074 \u006b\u0068\u1ed1\u0069 \u1edf \u0067\u1ea7\u006e \u0063\u00e1\u0069 \u0062\u1ea3\u006e\u0067 \u006b\u0069\u0061. +noPotionEffectPerm=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0111\u1eb7\u0074 \u0068\u0069\u1ec7\u0075 \u1ee9\u006e\u0067 \u00a7c{0} \u00a74to this potion. +noPowerTools=\u00a76\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0063\u00f4\u006e\u0067 \u0063\u1ee5 \u0111\u0069\u1ec7\u006e \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068. +noWarpsDefined=\u00a76\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u006b\u0068\u0075 \u0076\u1ef1\u0063 \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068. +none=\u006b\u0068\u00f4\u006e\u0067 \u0061\u0069 +notAcceptingPay=\u00a74{0} \u00a74\u006b\u0068\u00f4\u006e\u0067 \u0063\u0068\u1ea5\u0070 \u006e\u0068\u1ead\u006e \u0074\u0068\u0061\u006e\u0068 \u0074\u006f\u00e1\u006e. +notAllowedToQuestion=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0073\u1eed \u0064\u1ee5\u006e\u0067 \u0063\u00e2\u0075 \u0068\u1ecf\u0069. +notAllowedToShout=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0068\u00e9\u0074 \u006c\u00ea\u006e. +notEnoughExperience=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0111\u1ee7 \u006b\u0069\u006e\u0068 \u006e\u0067\u0068\u0069\u1ec7\u006d. +notEnoughMoney=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0111\u1ee7 \u0074\u0069\u1ec1\u006e. +notFlying=\u006b\u0068\u00f4\u006e\u0067 \u0062\u0061\u0079 +notRecommendedBukkit=\u00a74* \! * \u0050\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0042\u0075\u006b\u006b\u0069\u0074 \u006b\u0068\u00f4\u006e\u0067 \u0070\u0068\u1ea3\u0069 \u006c\u00e0 \u0070\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0063\u1ea7\u006e \u0074\u0068\u0069\u1ebf\u0074 \u0063\u0068\u006f \u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073. +notSupportedYet=\u0043\u0068\u01b0\u0061 \u0111\u01b0\u1ee3\u0063 \u0068\u1ed7 \u0074\u0072\u1ee3. +nothingInHand=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0067\u00ec \u0074\u0072\u006f\u006e\u0067 \u0074\u0061\u0079. +now=\u0062\u00e2\u0079 \u0067\u0069\u1edd +nuke=\u00a75\u004d\u01b0\u0061 \u0074\u0068\u0075\u1ed1\u0063 \u006e\u1ed5 \u0068\u1ee1\u0069\u007e. +numberRequired=\u0050\u0068\u1ea3\u0069 \u0063\u00f3 \u006d\u1ed9\u0074 \u0063\u006f\u006e \u0073\u1ed1 \u1edf \u0111\u00f3\u002c \u0074\u0068\u1ead\u0074 \u006e\u0067\u1edb \u006e\u0067\u1ea9\u006e. +onlyDayNight=/\u0043\u0068\u1ec9 \u0068\u1ed5 \u0074\u0072\u1ee3 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u006e\u0067\u00e0\u0079 \u0076\u00e0 \u0111\u00ea\u006d \u0028\u0064\u0061\u0079\u002f\u006e\u0069\u0067\u0068\u0074\u0029. +onlyPlayerSkulls=\u00a74\u0042\u1ea1\u006e \u0063\u0068\u1ec9 \u0063\u00f3 \u0074\u0068\u1ec3 \u0074\u0068\u0069\u1ebf\u0070 \u006c\u1ead\u0070 \u0063\u0068\u1ee7 \u006e\u0068\u00e2\u006e \u0063\u1ee7\u0061 \u0063\u00e1\u0069 \u0073\u1ecd \u006e\u00e0\u0079 (\u00a7c397\:3\u00a74). +onlyPlayers=\u00a74\u0043\u0068\u1ec9 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0074\u0072\u006f\u006e\u0067 \u0074\u0072\u00f2 \u0063\u0068\u01a1\u0069 \u0063\u00f3 \u0074\u0068\u1ec3 \u0064\u00f9\u006e\u0067 \u00a7c{0}\u00a74. +onlySunStorm=\u00a74/\u0043\u0068\u1ec9 \u0068\u1ed5 \u0074\u0072\u1ee3 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0062\u00e3\u006f \u0076\u00e0 \u006e\u1eaf\u006e\u0067. +orderBalances=\u00a76\u0110\u0061\u006e\u0067 \u0074\u00ed\u006e\u0068 \u0074\u006f\u00e1\u006e \u0073\u1ed1 \u0064\u01b0 \u0063\u1ee7\u0061\u00a7c {0} \u00a76\u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u002c \u0078\u0069\u006e \u0111\u1ee3\u0069\u002e\u002e\u002e +oversizedTempban=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u1ea5\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0074\u0072\u006f\u006e\u0067 \u006c\u00fa\u0063 \u006e\u00e0\u0079. +payConfirmToggleOn=\u00a76\u0054\u1eeb \u0067\u0069\u1edd\u002c \u0062\u1ea1\u006e \u0073\u1ebd \u0062\u1ecb \u006e\u0068\u1eaf\u0063 \u0078\u00e1\u0063 \u006e\u0068\u1ead\u006e \u0074\u0068\u0061\u006e\u0068 \u0074\u006f\u00e1\u006e. +payConfirmToggleOff=\u00a76\u0054\u1eeb \u0067\u0069\u1edd\u002c \u0062\u1ea1\u006e \u0073\u1ebd \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f2\u006e \u0062\u1ecb \u006e\u0068\u1eaf\u0063 \u0078\u00e1\u0063 \u006e\u0068\u1ead\u006e \u0074\u0068\u0061\u006e\u0068 \u0074\u006f\u00e1\u006e. +payToggleOn=\u00a76\u0042\u00e2\u0079 \u0067\u0069\u1edd \u0062\u1ea1\u006e \u0063\u0068\u1ea5\u0070 \u006e\u0068\u1ead\u006e \u0074\u0068\u0061\u006e\u0068 \u0074\u006f\u00e1\u006e. +payToggleOff=\u00a76\u0042\u00e2\u0079 \u0067\u0069\u1edd \u0062\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f2\u006e \u0063\u0068\u1ea5\u0070 \u006e\u0068\u1ead\u006e \u0074\u0068\u0061\u006e\u0068 \u0074\u006f\u00e1\u006e. +payMustBePositive=\u00a74\u0053\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u0070\u0068\u1ea3\u0069 \u006c\u00e0 \u0064\u01b0\u01a1\u006e\u0067. +pTimeCurrent=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u1ee7\u0061 \u00a7c{0}\u00a76 \u006c\u00e0\u00a7c {1}\u00a76. +pTimeCurrentFixed=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u1ee7\u0061 \u00a7c{0}\u00a76 \u0111\u01b0\u1ee3\u0063 \u0073\u1eed\u0061 \u0074\u0068\u00e0\u006e\u0068\u00a7c {1}\u00a76. +pTimeNormal=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u1ee7\u0061 \u00a7c{0}\u00a76 \u006c\u00e0 \u0062\u00ec\u006e\u0068 \u0074\u0068\u01b0\u1edd\u006e\u0067 \u0076\u00e0 \u006b\u0068\u1edb\u0070 \u0076\u1edb\u0069 \u0067\u0069\u1edd \u0063\u1ee7\u0061 \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +pTimeOthersPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0111\u1eb7\u0074 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u1ee7\u0061 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006b\u0068\u00e1\u0063. +noJailsDefined=\u00a76No jails defined. +pTimePlayers=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0063\u00f3 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0072\u0069\u00ea\u006e\u0067\:\u00a7r +pTimeReset=\u00a76\u0110\u00e3 \u006c\u00e0\u006d \u006d\u1edb\u0069 \u006c\u1ea1\u0069 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u0068\u006f\: \u00a7c{0} +pTimeSet=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0111\u1eb7\u0074 \u0074\u0068\u00e0\u006e\u0068 \u00a7c{0}\u00a76 \u0063\u0068\u006f\: \u00a7c{1}. +northEast=NE +north=N +northWest=NW +pTimeSetFixed=\u00a76\u0110\u00e3 \u0073\u1eed\u0061 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0074\u0068\u00e0\u006e\u0068 \u00a7c{0}\u00a76 \u0063\u0068\u006f\: \u00a7c{1}. +pWeatherCurrent=\u00a76\u0054\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0063\u1ee7\u0061 \u00a7c{0}\u00a76 \u006c\u00e0\u00a7c {1}\u00a76. +pWeatherInvalidAlias=\u00a74\u0054\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7 +pWeatherNormal=\u00a76\u0054\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0063\u1ee7\u0061\u00a7c{0}\u00a76 \u006c\u00e0 \u0062\u00ec\u006e\u0068 \u0074\u0068\u01b0\u1edd\u006e\u0067 \u0076\u00e0 \u006b\u0068\u1edb\u0070 \u0076\u1edb\u0069 \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +pWeatherOthersPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0111\u1eb7\u0074 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0063\u0068\u006f \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006b\u0068\u00e1\u0063. +pWeatherPlayers=\u00a76\u004e\u0068\u1eef\u006e\u0067 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0063\u00f3 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0072\u0069\u00ea\u006e\u0067\:\u00a7r +pWeatherReset=\u00a76\u0054\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u00e0\u006d \u006d\u1edb\u0069 \u0063\u0068\u006f\: \u00a7c{0} +pWeatherSet=\u00a76\u0054\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0111\u1eb7\u0074 \u0074\u0068\u00e0\u006e\u0068 \u00a7c{0}\u00a76 \u0063\u0068\u006f\: \u00a7c{1}. +pendingTeleportCancelled=\u00a74\u0056\u0069\u1ec7\u0063 \u0078\u1eed \u006c\u00ed \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0062\u1ecb \u0068\u1ee7\u0079. +playerBanIpAddress=\u00a76\u004e\u0067\u01b0\u1edf\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u006b\u0068\u00f3\u0061 \u0111\u1ecb\u0061 \u0063\u0068\u1ec9\u00a7c {1} \u00a76\u0076\u00ec\: \u00a7c{2}\u00a76. +playerBanned=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u0063\u1ea5\u006d\u00a7c {1} \u00a76\u0076\u00ec\: \u00a7c{2}\u00a76. +playerInJail=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079 \u0111\u00e3 \u1edf \u0074\u0072\u006f\u006e\u0067 \u0074\u00f9\u00a7c {0}\u00a74. +playerJailed=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76jailed. +playerJailedFor=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0062\u1ecb \u006e\u0068\u1ed1\u0074 \u0074\u0072\u006f\u006e\u0067 {1}. +playerKicked=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u00e1 {1} \u0076\u00ec {2}. +playerMuted=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e\! +playerMutedFor=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e \u0074\u0072\u006f\u006e\u0067\u00a7c {0}. +playerNeverOnServer=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a74\u0063\u0068\u01b0\u0061 \u0062\u0061\u006f \u0067\u0069\u1edd \u0076\u00e0\u006f \u006d\u00e1\u0079 \u0063\u0068\u1ee7. +playerNotFound=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0074\u00ec\u006d \u0074\u0068\u1ea5\u0079 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069. +playerUnbanIpAddress=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u006d\u1edf \u006b\u0068\u00f3\u0061 \u0111\u1ecb\u0061 \u0063\u0068\u1ec9\: {1}. +playerUnbanned=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u006d\u1edf \u006b\u0068\u00f3\u0061\u00a7c {1}. +playerUnmuted=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f2\u006e \u0062\u1ecb \u006b\u0068\u00f3\u0061 \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e. +pong=Pong\! +posPitch=\u00a76Pitch\: {0} (\u0047\u00f3\u0063 \u0111\u1ea7\u0075) +posX=\u00a76X\: {0} (\u002b\u0110\u00f4\u006e\u0067 \u003c\u002d\u003e \u002d\u0054\u00e2\u0079) +posY=\u00a76Y\: {0} (\u002b\u004c\u00ea\u006e \u003c\u002d\u003e \u002d\u0058\u0075\u1ed1\u006e\u0067) +posYaw=\u00a76Yaw\: {0} (\u0056\u00f2\u006e\u0067 \u0078\u006f\u0061\u0079) +posZ=\u00a76Z\: {0} (\u002b\u004e\u0061\u006d \u003c\u002d\u003e \u002d\u0042\u1eaf\u0063) +possibleWorlds=\u00a76\u004e\u0068\u1eef\u006e\u0067 \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u0068\u0069\u1ec7\u006e \u0063\u00f3 \u006c\u00e0 \u0074\u1eeb \u00a7c0\u00a76 \u0111\u1ebf\u006e \u00a7c{0}\u00a76. +potions=\u00a76\u004c\u006f\u1ea1\u0069 \u0074\u0068\u0075\u1ed1\u0063\:\u00a7r {0}\u00a76. +powerToolAir=\u00a74\u004c\u1ec7\u006e\u0068 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ebf \u0067\u1eaf\u006e \u0076\u00e0\u006f \u006b\u0068\u00f4\u006e\u0067 \u006b\u0068\u00ed \u0028\u0041\u0069\u0072\u0029. +powerToolAlreadySet=\u00a74\u004c\u1ec7\u006e\u0068 \u00a7c{0}\u00a74 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068 \u0063\u0068\u006f \u00a7c{1}\u00a74. +powerToolAttach=\u00a76\u004c\u1ec7\u006e\u0068 \u00a7c{0}\u00a76 \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068 \u0063\u0068\u006f {1}. +powerToolClearAll=\u00a76\u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068 \u0063\u0068\u006f. +openingDisposal=\u00a76Opening disposal menu... +powerToolList=\u00a76\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u00a7c{1} \u00a76\u0063\u00f3 \u006e\u0068\u1eef\u006e\u0067 \u006c\u1ec7\u006e\u0068 \u0073\u0061\u0075\: \u00a7c{0}\u00a76. +powerToolListEmpty=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u00a7c{0} \u00a74\u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068 \u006c\u1ec7\u006e\u0068 \u006e\u00e0\u006f. +powerToolNoSuchCommandAssigned=\u00a74\u004c\u1ec7\u006e\u0068 \u00a7c{0}\u00a74 \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068 \u0063\u0068\u006f \u00a7c{1}\u00a74. +powerToolRemove=\u00a76\u004c\u1ec7\u006e\u0068 \u00a7c{0}\u00a76 \u0111\u00e3 \u0062\u1ecb \u006c\u006f\u1ea1\u0069 \u0062\u1ecf \u006b\u0068\u1ecf\u0069 \u00a7c{1}\u00a76. +powerToolRemoveAll=\u00a76\u0054\u1ea5\u0074 \u0063\u1ea3 \u0063\u00e1\u0063 \u006c\u1ec7\u006e\u0068 \u0111\u00e3 \u0062\u1ecb \u0067\u1ee1 \u006b\u0068\u1ecf\u0069 \u00a7c{0}\u00a76. +powerToolsDisabled=\u00a76\u0054\u1ea5\u0074 \u0063\u1ea3 \u0063\u00f4\u006e\u0067 \u0063\u1ee5 \u006e\u0068\u0061\u006e\u0068 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0074\u1eaf\u0074. +powerToolsEnabled=\u00a76\u0054\u1ea5\u0074 \u0063\u1ea3 \u0063\u00f4\u006e\u0067 \u0063\u1ee5 \u006e\u0068\u0061\u006e\u0068 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0062\u1ead\u0074. +questionFormat=\u00a72[\u004e\u0068\u0069\u1ec7\u006d \u0076\u1ee5]\u00a7r {0} +readNextPage=\u00a76\u0047\u00f5\u00a7c /{0} {1} \u00a76\u0111\u1ec3 \u0111\u1ecd\u0063 \u0074\u0072\u0061\u006e\u0067 \u0074\u0069\u1ebf\u0070 \u0074\u0068\u0065\u006f. +recipe=\u00a76\u0043\u00f4\u006e\u0067 \u0074\u0068\u1ee9\u0063 \u0063\u1ee7\u0061 \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 \u0063\u1ee7\u0061 \u00a7c{2}\u00a76) +recipeBadIndex=\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0063\u00f4\u006e\u0067 \u0074\u0068\u1ee9\u0063 \u0063\u1ee7\u0061 \u0049\u0044 \u0062\u1ea1\u006e \u006e\u0068\u1ead\u0070. +recipeFurnace=\u00a76\u004e\u0075\u006e\u0067\: \u00a7c{0}\u00a76. +recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X +recipeGridItem=\u00a7c{0}X \u00a76\u006c\u00e0 \u00a7c{1} +recipeMore=\u00a76\u0047\u00f5 /{0} \u00a7c{1}\u00a76 <\u0073\u1ed1> \u0111\u1ec3 \u0078\u0065\u006d \u006e\u0068\u1eef\u006e\u0067 \u0063\u00f4\u006e\u0067 \u0074\u0068\u1ee9\u0063 \u006b\u0068\u00e1\u0063 \u0063\u1ee7\u0061 \u00a7c{2}\u00a76. +recipeNone= \u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0063\u00f4\u006e\u0067 \u0074\u0068\u1ee9\u0063 \u0074\u1ed3\u006e \u0074\u1ea1\u0069 \u0063\u0068\u006f {0}. +recipeNothing=\u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0067\u00ec +recipeShapeless=\u00a76\u004c\u0069\u00ea\u006e \u006b\u1ebf\u0074 \u00a7c{0} +recipeWhere=\u00a76\u0043\u0068\u1ed7\: {0} +removed=\u00a76\u0058\u00f3\u0061\u00a7c {0} \u00a76\u0074\u0068\u1ef1\u0063 \u0074\u0068\u1ec3. +repair=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0073\u1eed\u0061 \u0074\u0068\u00e0\u006e\u0068 \u0063\u00f4\u006e\u0067 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d\: \u00a7c{0}\u00a76. +repairAlreadyFixed=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0063\u1ea7\u006e \u0073\u1eed\u0061. +repairEnchanted=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0070\u0068\u00f9 \u0070\u0068\u00e9\u0070. +repairInvalidType=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0073\u1eed\u0061. +repairNone=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u006f \u0063\u1ea7\u006e \u0111\u01b0\u1ee3\u0063 \u0073\u1eed\u0061 \u0063\u1ea3. +requestAccepted=\u00a76\u0059\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0111\u1ed3\u006e\u0067 \u00fd. +requestAcceptedFrom=\u00a7c{0} \u00a76\u0111\u00e3 \u0111\u1ed3\u006e\u0067 \u00fd \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +requestDenied=\u00a76\u0059\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0062\u1ecb \u0074\u1eeb \u0063\u0068\u1ed1\u0069. +requestDeniedFrom=\u00a7c{0} \u00a76\u0111\u00e3 \u0074\u1eeb \u0063\u0068\u1ed1\u0069 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +requestSent=\u00a76\u0047\u1eed\u0069 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0111\u1ebf\u006e\u00a7c {0}\u00a76. +requestSentAlready=\u00a74\u0042\u1ea1\u006e \u0111\u00e3 \u0067\u1eed\u0069 {0}\u00a74 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e. +requestTimedOut=\u00a74\u0059\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0071\u0075\u00e1 \u0068\u1ea1\u006e. +requiredBukkit=\u00a76* \! * \u0054\u1ed1\u0069 \u0074\u0068\u0069\u1ec3\u0075\u002c \u0062\u1ea1\u006e \u0063\u1ea7\u006e \u0062\u1ea3\u006e \u0062\u0075\u0069\u006c\u0064 {0} \u0063\u1ee7\u0061 \u0043\u0072\u0061\u0066\u0074\u0042\u0075\u006b\u006b\u0069\u0074\u002c \u0074\u1ea3\u0069 \u006e\u00f3 \u1edf http\://dl.bukkit.org/downloads/craftbukkit/ +resetBal=\u00a76\u0053\u1ed1 \u0064\u01b0 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u00e0\u006d \u006d\u1edb\u0069 \u0074\u0068\u00e0\u006e\u0068 \u00a7c{0} \u00a76\u0063\u0068\u006f \u0074\u1ea5\u0074 \u0063\u1ea3 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0074\u0072\u1ef1\u0063 \u0074\u0075\u0079\u1ebf\u006e. +resetBalAll=\u00a76\u0053\u1ed1 \u0064\u01b0 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u00e0\u006d \u006d\u1edb\u0069 \u0074\u0068\u00e0\u006e\u0068 \u00a7c{0} \u00a76\u0063\u0068\u006f \u0074\u1ea5\u0074 \u0063\u1ea3 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069. +returnPlayerToJailError=\u00a74\u0110\u00e3 \u0063\u00f3 \u006c\u1ed7\u0069 \u006b\u0068\u0069 \u0063\u1ed1 \u0067\u1eaf\u006e\u0067 \u0111\u01b0\u0061 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a74\u0076\u1ec1 \u006c\u1ea1\u0069 \u0074\u00f9\: \u00a7c{1}\u00a74\! +runningPlayerMatch=\u00a76\u0110\u0061\u006e\u0067 \u0074\u00ec\u006d \u006b\u0069\u1ebf\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0070\u0068\u00f9 \u0068\u1ee3\u0070 ''\u00a7c{0}\u00a76'' (\u0111\u0069\u1ec1\u0075 \u006e\u00e0\u0079 \u0063\u00f3 \u0074\u0068\u1ec3 \u006d\u1ea5\u0074 \u006d\u1ed9\u0074 \u0063\u0068\u00fa\u0074 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e). +second=\u0067\u0069\u00e2\u0079 +seconds=\u0067\u0069\u00e2\u0079 +seenOffline=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u00a74\u006e\u0067\u006f\u1ea1\u0069 \u0074\u0075\u0079\u1ebf\u006e\u00a76 \u006b\u1ec3 \u0074\u1eeb \u00a7c{1}\u00a76. +seenOnline=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u00a7a\u0074\u0072\u1ef1\u0063 \u0074\u0075\u0079\u1ebf\u006e\u00a76 \u006b\u1ec3 \u0074\u1eeb \u00a7c{1}\u00a76. +sellBulkPermission=\u00a76\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0062\u00e1\u006e \u0068\u00e0\u006e\u0067 \u006c\u006f\u1ea1\u0074 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d. +sellHandPermission=\u00a76\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0062\u00e1\u006e \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0074\u0072\u00ea\u006e \u0074\u0061\u0079. +serverFull=\u004d\u00e1\u0079 \u0063\u0068\u1ee7 \u0111\u1ea7\u0079\! +serverTotal=\u00a76\u0054\u1ed5\u006e\u0067 \u0063\u1ee7\u0061 \u006d\u00e1\u0079 \u0063\u0068\u1ee7\:\u00a7c {0} +setBal=\u00a7a\u0053\u1ed1 \u0064\u01b0 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e \u0111\u01b0\u1ee3\u0063 \u0111\u1eb7\u0074 \u0074\u0068\u00e0\u006e\u0068 {0}. +setBalOthers=\u00a7a\u0042\u1ea1\u006e \u0111\u0061 \u0111\u1eb7\u0074 \u0073\u1ed1 \u0064\u01b0 \u0063\u1ee7\u0061 {0}\u00a7a \u0074\u0068\u00e0\u006e\u0068 {1}. +setSpawner=\u00a76\u0043\u0068\u0075\u0079\u1ec3\u006e \u006c\u006f\u1ea1\u0069 \u006c\u1ed3\u006e\u0067 \u0071\u0075\u00e1\u0069\u0028\u0053\u0070\u0061\u0077\u006e\u0065\u0072\u0029 \u0074\u0068\u00e0\u006e\u0068\u00a7c {0}\u00a76. +sheepMalformedColor=\u00a74\u004d\u00e0\u0075 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070. +shoutFormat=\u00a76[Shout]\u00a7r {0} +signFormatFail=\u00a74[{0}] +signFormatSuccess=\u00a71[{0}] +signFormatTemplate=[{0}] +signProtectInvalidLocation=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0074\u1ea1\u006f \u0062\u1ea3\u006e \u1edf \u0111\u00e2\u0079. +similarWarpExist=\u00a74\u004d\u1ed9\u0074 \u006b\u0068\u0075 \u0076\u1ef1\u0063 \u0063\u00f3 \u0074\u00ea\u006e \u0074\u01b0\u01a1\u006e\u0067 \u0074\u1ef1 \u0111\u00e3 \u0074\u1ed3\u006e \u0074\u1ea1\u0069. +slimeMalformedSize=\u00a74\u004b\u00ed\u0063\u0068 \u0074\u0068\u01b0\u1edb\u0063 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070. +socialSpy=\u00a76\u0043\u0068\u1ebf \u0111\u1ed9 \u006e\u0067\u0068\u0065 \u006c\u00e9\u006e \u0063\u0068\u006f \u00a7c{0}\u00a76\: \u00a7c{1} +socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r +soloMob=\u00a74\u0043\u006f\u006e \u0071\u0075\u00e1\u0069 \u006e\u00e0\u0079 \u006d\u0075\u1ed1\u006e \u0111\u01b0\u1ee3\u0063 \u1edf \u006d\u1ed9\u0074 \u006d\u00ec\u006e\u0068. +spawnSet=\u00a76\u0056\u1ecb \u0074\u0072\u00ed \u0068\u1ed3\u0069 \u0073\u0069\u006e\u0068 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0063\u0068\u1ec9\u006e\u0068 \u0063\u0068\u006f \u004e\u0068\u00f3\u006d \u0028\u0052\u0061\u006e\u006b\u0029\u00a7c {0}\u00a76. +spawned=\u0110\u00e3 \u0074\u1ea1\u006f \u0072\u0061 +sudoExempt=\u00a7\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0111\u0069\u1ec1\u0075 \u006b\u0068\u0069\u1ec3\u006e \u00a7c{0}. +sudoRun=\u00a76\u00c9\u0070 \u0062\u0075\u1ed9\u0063\u00a7c {0} \u00a76\u0064\u00f9\u006e\u0067\:\u00a7r /{1} +suicideMessage=\u00a76\u0054\u1ea1\u006d \u0062\u0069\u1ec7\u0074\u002c \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u00e1\u0063 \u0111\u1ed9\u0063 \u003a\u003c +suicideSuccess=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u00a7c{0} \u00a76\u0111\u00e3 \u006b\u1ebf\u0074 \u006c\u0069\u1ec5\u0075 \u0111\u1edd\u0069 \u006d\u00ec\u006e\u0068. +survival=\u0053\u0069\u006e\u0068 \u0074\u1ed3\u006e +takenFromAccount=\u00a7a{0} \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0072\u00fa\u0074 \u0074\u1eeb \u0074\u00e0\u0069 \u006b\u0068\u006f\u1ea3\u006e \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +takenFromOthersAccount=\u00a7a{0} \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u006c\u1ea5\u0079 \u006b\u0068\u1ecf\u0069 \u0074\u00e0\u0069 \u006b\u0068\u006f\u1ea3\u006e {1}\u00a7a. \u0053\u1ed1 \u0064\u01b0 \u006d\u1edb\u0069\: {2}. +teleportAAll=\u00a76\u0110\u00e3 \u0067\u1eed\u0069 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u0074\u1ea5\u0074 \u0063\u1ea3 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069... +teleportAll=\u00a76\u0110\u00e3 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0074\u1ea5\u0074 \u0063\u1ea3 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 +teleportAtoB=\u00a7c{0}\u00a76 \u0111\u00e3 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0062\u1ea1\u006e \u0111\u1ebf\u006e \u00a7c{1}\u00a76. +teleportDisabled=\u00a7c{0} \u00a74\u0111\u00e3 \u0074\u1eaf\u0074 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e. +teleportHereRequest=\u00a7c{0}\u00a76 \u0111\u00e3 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0062\u1ea1\u006e \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u0063\u0068\u1ed7 \u0068\u1ecd. +teleportNewPlayerError=\u00a74\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u0069 \u006b\u0068\u0069 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006d\u1edb\u0069\! +teleportRequest=\u00a7c{0}\u00a76 \u0111\u00e3 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u0063\u0068\u1ed7 \u0062\u1ea1\u006e. +teleportRequestAllCancelled=\u00a76\u0054\u1ea5\u0074 \u0063\u1ea3 \u0079\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u006e\u1ed5\u0069 \u0062\u1ead\u0074 \u0111\u1ec1\u0075 \u0111\u00e3 \u0062\u1ecb \u0068\u1ee7\u0079. +teleportRequestSpecificCancelled=\u00a7\u0036\u0059\u00ea\u0075 \u0063\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u006e\u1ed5\u0069 \u0062\u1ead\u0074 \u0076\u1edb\u0069 {0} \u0111\u00e3 \u0062\u1ecb \u0068\u1ee7\u0079. +teleportRequestTimeoutInfo=\u00a76\u0059\u00ea\u0075 \u0063\u1ea7\u0075 \u006e\u00e0\u0079 \u0073\u1ebd \u0068\u1ebf\u0074 \u0068\u1ea1\u006e \u0073\u0061\u0075\u00a7c {0} \u0067\u0069\u00e2\u0079\u00a76. +teleportTop=\u00a76\u0044\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u0111\u1ec9\u006e\u0068. +teleportationCommencing=\u00a76\u0042\u1eaf\u0074 \u0111\u1ea7\u0075 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e... +teleportationDisabled=\u00a76\u0044\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063\u00a7c \u0074\u1eaf\u0074\u00a76. +teleportationDisabledFor=\u00a76\u0044\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u00a7c\u0074\u1eaf\u0074 \u00a76\u0063\u0068\u006f \u00a7c{0}\u00a76. +teleportationEnabled=\u00a76\u0044\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u00a7c\u0062\u1ead\u0074\u00a76. +teleportationEnabledFor=\u00a76\u0044\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u00a7c\u0062\u1ead\u0074 \u00a76\u0063\u0068\u006f \u00a7c{0}\u00a76. +teleporting=\u00a76\u0110\u0061\u006e\u0067 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e... +teleportToPlayer=\u00a76\u0110\u0061\u006e\u0067 \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u00a7c{0}\u00a76. +tempBanned=\u00a7c\u0042\u1ea1\u006e \u0111\u00e3 \u0074\u1ea1\u006d \u0074\u0068\u1edd\u0069 \u0062\u1ecb \u0063\u1ea5\u006d \u0074\u0072\u006f\u006e\u0067 {0}\:\n\u00a7r{2} +tempbanExempt=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u1ea5\u006d \u0074\u1ea1\u006d \u0074\u0068\u1edd\u0069 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079. +thunder=\u00a76\u0042\u1ea1\u006e\u00a7c {0} \u00a76\u0073\u1ea5\u006d \u0073\u00e9\u0074 \u1edf \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u0063\u1ee7\u0061 \u006d\u00ec\u006e\u0068. +thunderDuration=\u00a76\u0042\u1ea1\u006e\u00a7c {0} \u00a76\u0073\u1ea5\u006d \u0073\u00e9\u0074 \u1edf \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u006e\u00e0\u0079 \u0074\u0072\u006f\u006e\u0067\u00a7c {1} \u00a76\u0067\u0069\u00e2\u0079. +timeBeforeHeal=\u00a74\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u0068\u006f \u006c\u1ea7\u006e \u0068\u1ed3\u0069 \u0070\u0068\u1ee5\u0063 \u0074\u0069\u1ebf\u0070 \u0074\u0068\u0065\u006f\:\u00a7c {0}\u00a76. +timeBeforeTeleport=\u00a74\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0111\u1ebf\u006e \u006c\u1ea7\u006e \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0074\u0069\u1ebf\u0070 \u0074\u0068\u0065\u006f\:\u00a7c {0}\u00a76. +timeFormat=\u00a7c{0}\u00a76 \u0068\u0061\u0079 \u00a7c{1}\u00a76 \u0068\u0061\u0079 \u00a7c{2}\u00a76 +timeSetPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0111\u0069\u1ec1\u0075 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e. +timeSetWorldPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u00e9\u0070 \u0111\u0069\u1ec1\u0075 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u1edf \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 ''{0}''. +timeWorldCurrent=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0068\u0069\u1ec7\u006e \u0074\u1ea1\u0069 \u1edf\u00a7c {0} \u00a76\u006c\u00e0 \u00a7c{1}\u00a76. +timeWorldSet=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0111\u01b0\u1ee3\u0063 \u0111\u1eb7\u0074 \u006c\u1ea1\u0069 \u0074\u0068\u00e0\u006e\u0068\u00a7c {0} \u00a76\u1edf\: \u00a7c{1}\u00a76. +totalWorthAll=\u00a7a\u0110\u00e3 \u0062\u00e1\u006e \u0074\u1ea5\u0074 \u0063\u1ea3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00e0 \u006b\u0068\u1ed1\u0069 \u0063\u0068\u006f \u00a7c{1}\u00a7a. +totalWorthBlocks=\u00a7a\u0110\u00e3 \u0062\u00e1\u006e \u0074\u1ea5\u0074 \u0063\u1ea3 \u006b\u0068\u1ed1\u0069 \u00a7c{1}\u00a7a. +tps=\u00a76\u0054\u0050\u0053 \u0068\u0069\u1ec7\u006e \u0074\u1ea1\u0069 \= {0} +tradeSignEmpty=\u00a74\u0043\u00e1\u0069 \u0062\u1ea3\u006e\u0067 \u0074\u0072\u0061\u006f \u0111\u1ed5\u0069 \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0073\u1eb5\u006e \u0063\u0068\u006f \u0062\u1ea1\u006e. +tradeSignEmptyOwner=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0067\u00ec \u0111\u1ec3 \u0074\u0068\u0075 \u0074\u0068\u1ead\u0070 \u0074\u1eeb \u0062\u1ea3\u006e\u0067 \u0074\u0072\u0061\u006f \u0111\u1ed5\u0069 \u006e\u00e0\u0079. +treeFailure=\u00a74\u0054\u0072\u1ed3\u006e\u0067 \u0063\u00e2\u0079 \u0074\u0068\u1ea5\u0074 \u0062\u1ea1\u0069\u002c \u0068\u00e3\u0079 \u0074\u0068\u1eed \u006c\u1ea1\u0069 \u0074\u0072\u00ea\u006e \u0063\u1ecf \u0068\u006f\u1eb7\u0063 \u0111\u1ea5\u0074. +treeSpawned=\u00a76\u0043\u00e2\u0079 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0072\u1ed3\u006e\u0067. +true=\u00a7a\u0111\u00fa\u006e\u0067\u00a7r +typeTpaccept=\u00a76\u0110\u1ec3 \u0111\u1ed3\u006e\u0067 \u00fd \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e\u002c \u0067\u00f5 \u00a7c/tpaccept\u00a76. +typeTpacancel=\u00a76\u0110\u1ec3 \u0068\u1ee7\u0079 \u0079\u00ea\u0075 \u0063\u1ea7\u0075\u002c \u0067\u00f5 \u00a7c/tpacancel\u00a76. +typeTpdeny=\u00a76\u0110\u1ec3 \u0074\u1eeb \u0063\u0068\u1ed1\u0069 \u0079\u00ea\u0075 \u0063\u1ea7\u0075\u002c \u0067\u00f5 \u00a7c/tpdeny\u00a76. +typeWorldName=\u00a76\u0042\u1ea1\u006e \u0063\u0169\u006e\u0067 \u0063\u00f3 \u0074\u0068\u1ec3 \u0067\u00f5 \u0074\u00ea\u006e \u0063\u1ee5 \u0074\u0068\u1ec3 \u0063\u1ee7\u0061 \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069. +unableToSpawnMob=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0073\u0069\u006e\u0068 \u0072\u0061 \u0071\u0075\u00e1\u0069. +unignorePlayer=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f2\u006e \u0063\u0068\u1eb7\u006e\u00a7c {0} \u00a76\u006e\u1eef\u0061. +socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} +socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r +unknownItemId=\u00a74\u0049\u0064 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006b\u0068\u00f4\u006e\u0067 \u0078\u00e1\u0063 \u0111\u1ecb\u006e\u0068\:\u00a7r {0}\u00a74. +unknownItemInList=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d {0} \u0074\u0072\u006f\u006e\u0067 \u0064\u0061\u006e\u0068 \u0073\u00e1\u0063\u0068 {1} \u006b\u0068\u00f4\u006e\u0067 \u0078\u00e1\u0063 \u0111\u1ecb\u006e\u0068. +unknownItemName=\u00a74\u0054\u00ea\u006e \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006b\u0068\u00f4\u006e\u0067 \u0078\u00e1\u0063 \u0111\u1ecb\u006e\u0068\: {0}. +unlimitedItemPermission=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0064\u00f9\u006e\u0067 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00f4 \u0068\u1ea1\u006e \u00a7c{0}\u00a74. +southEast=SE +south=S +southWest=SW +unlimitedItems=\u00a76\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00f4 \u0068\u1ea1\u006e\:\u00a7r +unmutedPlayer=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a76\u0111\u00e3 \u0063\u00f3 \u0074\u0068\u1ec3 \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e \u0074\u0072\u1edf \u006c\u1ea1\u0069. +unvanishedReload=\u00a74\u0056\u0069\u1ec7\u0063 \u0074\u1ea3\u0069 \u006c\u1ea1\u0069 \u0111\u00e3 \u006c\u00e0\u006d \u0063\u0068\u006f \u0062\u1ea1\u006e \u0068\u0069\u1ec7\u006e \u0068\u00ec\u006e\u0068 \u0028\u0056\u0061\u006e\u0069\u0073\u0068\u0029. +upgradingFilesError=\u004c\u1ed7\u0069 \u006b\u0068\u0069 \u006e\u00e2\u006e\u0067 \u0063\u1ea5\u0070 \u0074\u1ec7\u0070. +uptime=\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0068\u006f\u1ea1\u0074 \u0111\u1ed9\u006e\u0067\:\u00a7c {0} +userAFK=\u00a77{0} \u00a75\u0068\u0069\u1ec7\u006e \u0111\u0061\u006e\u0067 \u0074\u0072\u0065\u006f \u006d\u00e1\u0079 \u0076\u00e0 \u0063\u00f3 \u0074\u0068\u1ec3 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0072\u1ea3 \u006c\u1edd\u0069. +userAFKWithMessage=\u00a77{0} \u00a75\u0068\u0069\u1ec7\u006e \u0111\u0061\u006e\u0067 \u0074\u0072\u0065\u006f \u006d\u00e1\u0079 \u0076\u00e0 \u0063\u00f3 \u0074\u0068\u1ec3 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0072\u1ea3 \u006c\u1edd\u0069: {1} +userDoesNotExist=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u00a7c {0} \u00a74 \u006b\u0068\u00f4\u006e\u0067 \u0074\u1ed3\u006e \u0074\u1ea1\u0069. +userIsAway=\u00a77* {0} \u00a77\u0111\u0061\u006e\u0067 \u0074\u0072\u0065\u006f \u006d\u00e1\u0079. +userIsAwayWithMessage=\u00a77* {0} \u00a77\u0111\u0061\u006e\u0067 \u0074\u0072\u0065\u006f \u006d\u00e1\u0079. +userIsNotAway=\u00a77* {0} \u00a77\u006b\u0068\u00f4\u006e\u0067 \u0063\u00f2\u006e \u0074\u0072\u0065\u006f \u006d\u00e1\u0079 \u006e\u1eef\u0061. +userJailed=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0067\u0069\u0061\u006d\! +userUnknown=\u00a74Lưu ý\: \u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 ''\u00a7c{0}\u00a74'' \u0063\u0068\u01b0\u0061 \u0062\u0061\u006f \u0067\u0069\u1edd \u0076\u00e0\u006f \u006d\u00e1\u0079 \u0063\u0068\u1ee7 \u006e\u00e0\u0079. +userdataMoveBackError=\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u006e \u006b\u0068\u0069 \u0064\u0069 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0064\u1eef \u006c\u0069\u1ec7\u0075 \u006e\u0067\u01b0\u1edd\u0069 \u0064\u00f9\u006e\u0067/{0}.tmp \u0074\u0068\u00e0\u006e\u0068/{1}\! +userdataMoveError=\u0054\u0068\u1ea5\u0074 \u0062\u1ea1\u006e \u006b\u0068\u0069 \u0064\u0069 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0064\u1eef \u006c\u0069\u1ec7\u0075 \u006e\u0067\u01b0\u1edd\u0069 \u0064\u00f9\u006e\u0067/{0} \u0111\u1ebf\u006e/{1}.tmp\! +usingTempFolderForTesting=\u0053\u1eed \u0064\u1ee5\u006e\u0067 \u0074\u0068\u01b0 \u006d\u1ee5\u0063 \u0111\u1ec7\u006d \u0111\u1ec3 \u0074\u0068\u1eed \u006e\u0067\u0068\u0069\u1ec7\u006d\: +vanished=\u00a76\u0047\u0069\u1edd \u0062\u1ea1\u006e \u0111\u00e3 \u0068\u006f\u00e0\u006e \u0074\u006f\u00e0\u006e \u0074\u00e0\u006e\u0067 \u0068\u00ec\u006e\u0068 \u0076\u1edb\u0069 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u002c \u0062\u1ea1\u006e \u0073\u1ebd \u0111\u01b0\u1ee3\u0063 \u1ea9\u006e \u0076\u1edb\u0069 \u0063\u00e1\u0063 \u006c\u1ec7\u006e\u0068 \u0074\u0072\u006f\u006e\u0067 \u0074\u0072\u00f2 \u0063\u0068\u01a1\u0069. +versionMismatch=\u00a74\u0050\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u006b\u0068\u00f4\u006e\u0067 \u0070\u0068\u00f9 \u0068\u1ee3\u0070\! \u0058\u0069\u006e \u0068\u00e3\u0079 \u0063\u1ead\u0070 \u006e\u0068\u1ead\u0074 {0} \u0111\u1ebf\u006e \u0070\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0070\u0068\u00f9 \u0068\u1ee3\u0070. +versionMismatchAll=\u00a74\u0050\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u006b\u0068\u00f4\u006e\u0067 \u0070\u0068\u00f9 \u0068\u1ee3\u0070\! \u0058\u0069\u006e \u0068\u00e3\u0079 \u0063\u1ead\u0070 \u006e\u0068\u1ead\u0074 \u0074\u1ea5\u0074 \u0063\u1ea3 \u0045\u0073\u0073\u0065\u006e\u0074\u0069\u0061\u006c\u0073\u002e\u006a\u0061\u0072 \u0111\u1ebf\u006e \u0070\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0070\u0068\u00f9 \u0068\u1ee3\u0070. +voiceSilenced=\u00a76\u0047\u0069\u1ecd\u006e\u0067 \u0062\u1ea1\u006e \u0111\u00e3 \u0062\u1ecb \u0074\u1eaf\u0074 \u0074\u0069\u1ebf\u006e\u0067\! +walking=\u0110\u0069 \u0062\u1ed9 +warpDeleteError=\u00a74\u0043\u00f3 \u0076\u1ea5\u006e \u0111\u1ec1 \u006b\u0068\u0069 \u0078\u00f3\u0061 \u0066\u0069\u006c\u0065 \u006b\u0068\u0075 \u0076\u1ef1\u0063 \u0028\u0077\u0061\u0072\u0070\u0029. +warpList={0} +warpListPermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0078\u0065\u006d \u0064\u0061\u006e\u0068 \u0073\u00e1\u0063\u0068 \u0063\u00e1\u0063 \u006b\u0068\u0075 \u0076\u1ef1\u0063. +warpNotExist=\u00a74\u004b\u0068\u0075 \u0076\u1ef1\u0063 \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0074\u1ed3\u006e \u0074\u1ea1\u0069. +warpOverwrite=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u0068\u00e9\u0070 \u0111\u00e8 \u006c\u00ea\u006e \u006b\u0068\u0075 \u0076\u1ef1\u0063 \u006e\u00e0\u0079. +warpSet=\u00a76\u004b\u0068\u0075 \u0076\u1ef1\u0063\u00a7c {0} \u00a76\u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0074\u0068\u0069\u1ebf\u0070 \u006c\u1ead\u0070. +warpUsePermission=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0064\u00f9\u006e\u0067 \u006b\u0068\u0075 \u0076\u1ef1\u0063 \u006e\u00e0\u0079. +warpingTo=\u00a76\u0043\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u006b\u0068\u0075 \u0076\u1ef1\u0063\u00a7c {0}\u00a76. +warps=\u00a76\u004b\u0068\u0075 \u0076\u1ef1\u0063\:\u00a7r {0} +warpsCount=\u00a76\u0048\u0069\u1ec7\u006e \u0063\u00f3\u00a7c {0} \u00a76\u006b\u0068\u0075 \u0076\u1ef1\u0063. \u0048\u0069\u1ec3\u006e \u0074\u0068\u1ecb \u0074\u0072\u0061\u006e\u0067 \u00a7c{1} \u00a76\u0063\u1ee7\u0061 \u00a7c{2}\u00a76. +west=W +tempbanJoin=You are banned from this server for {0}. Reason: {1} +weatherStorm=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0074\u0068\u00e0\u006e\u0068 \u00a7c\u0062\u00e3\u006f\u00a76 \u1edf\u00a7c {0}\u00a76. +weatherStormFor=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0074\u0068\u00e0\u006e\u0068 \u00a7c\u0062\u00e3\u006f\u00a76 \u1edf\u00a7c {0} \u00a76\u0074\u0072\u006f\u006e\u0067 {1} \u0067\u0069\u00e2\u0079. +weatherSun=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0074\u0068\u00e0\u006e\u0068 \u00a7cnắng\u00a76 \u1edf\u00a7c {0}\u00a76. +weatherSunFor=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0063\u0068\u1ec9\u006e\u0068 \u0074\u0068\u1edd\u0069 \u0074\u0069\u1ebf\u0074 \u0074\u0068\u00e0\u006e\u0068 \u00a7cnắng\u00a76 \u1edf\u00a7c {0} \u00a76\u0074\u0072\u006f\u006e\u0067 {1} \u0067\u0069\u00e2\u0079. +whoisAFK=\u00a76 - \u0054\u0072\u0065\u006f \u006d\u00e1\u0079\:\u00a7r {0} +whoisAFKSince=\u00a76 - \u0054\u0072\u0065\u006f \u006d\u00e1\u0079\:\u00a7r {0} (\u004b\u1ec3 \u0074\u1eeb {1}) +whoisBanned=\u00a76 - \u0042\u1ecb \u0063\u1ea5\u006d\:\u00a7r {0} +whoisExp=\u00a76 - \u004b\u0069\u006e\u0068 \u006e\u0067\u0068\u0069\u1ec7\u006d\:\u00a7r {0} (\u0043\u1ea5\u0070 {1}) +whoisFly=\u00a76 - \u0043\u0068\u1ebf \u0111\u1ed9 \u0062\u0061\u0079\:\u00a7r {0} ({1}) +whoisGamemode=\u00a76 - \u0043\u0068\u1ebf \u0111\u1ed9 \u0063\u0068\u01a1\u0069\:\u00a7r {0} +whoisGeoLocation=\u00a76 - \u004b\u0068\u0075 \u0076\u1ef1\u0063\:\u00a7r {0} +whoisGod=\u00a76 - \u0043\u0068\u1ebf \u0111\u1ed9 \u0062\u1ea5\u0074 \u0074\u1eed\:\u00a7r {0} +whoisHealth=\u00a76 - \u004d\u00e1\u0075\:\u00a7r {0}/20 +whoisIPAddress=\u00a76 - \u0110\u1ecb\u0061 \u0063\u0068\u1ec9 \u0049\u0050\:\u00a7r {0} +whoisJail=\u00a76 - \u0042\u1ecb \u0067\u0069\u0061\u006d\:\u00a7r {0} +whoisLocation=\u00a76 - \u004b\u0068\u0075 \u0076\u1ef1\u0063\:\u00a7r ({0}, {1}, {2}, {3}) +whoisMoney=\u00a76 - \u0054\u0069\u1ec1\u006e\:\u00a7r {0} +whoisMuted=\u00a76 - \u0042\u1ecb \u0063\u1ea5\u006d \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e\:\u00a7r {0} +whoisNick=\u00a76 - \u0042\u0069\u1ec7\u0074 \u0064\u0061\u006e\u0068\:\u00a7r {0} +whoisOp=\u00a76 - \u0110\u0069\u1ec1\u0075 \u0068\u00e0\u006e\u0068\:\u00a7r {0} +whoisPlaytime=\u00a76 - \u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0063\u0068\u01a1\u0069\:\u00a7r {0} +whoisUuid=\u00a76 - UUID\:\u00a7r {0} +whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\= +worth=\u00a7a\u0054\u1ed5\u006e\u0067 \u0073\u1ed1 {0} \u0063\u00f3 \u0067\u0069\u00e1 \u0074\u0072\u1ecb \u00a7c{1}\u00a7a ({2} \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00e0 {3} \u0076\u1edb\u0069 \u006d\u1ed7\u0069 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d) +worthMeta=\u00a7a\u0054\u1ed5\u006e\u0067 \u0073\u1ed1 {0} \u0076\u1edb\u0069 \u0064\u1eef \u006c\u0069\u1ec7\u0075 (data) {1} \u0063\u00f3 \u0067\u0069\u00e1 \u0074\u0072\u1ecb \u00a7c{2}\u00a7a ({3} \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00e0 {4} \u0076\u1edb\u0069 \u006d\u1ed7\u0069 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d) +worthSet=\u00a76\u0110\u1eb7\u0074 \u0073\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u0067\u0069\u00e1 \u0074\u0072\u1ecb +year=\u006e\u0103\u006d +years=\u006e\u0103\u006d +youAreHealed=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0068\u1ed3\u0069 \u0070\u0068\u1ee5\u0063. +youHaveNewMail=\u00a76\u0042\u1ea1\u006e \u0063\u00f3\u00a7c {0} \u00a76\u0074\u0069\u006e \u006e\u0068\u1eaf\u006e\! \u0047\u00f5 \u00a7c/mail read\u00a76 \u0111\u1ec3 \u0078\u0065\u006d \u0074\u0068\u01b0 \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. +whoisHunger=\u00a76 - \u0110\u1ed9 \u0111\u00f3\u0069\:\u00a7r {0}/20 (+{1} \u0062\u00e3\u006f \u0068\u00f2\u0061) +kitDelay=\u00a7m{0}\u00a7r +giveSpawnFailure=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0111\u1ee7 \u0063\u0068\u1ed7 \u0074\u0072\u1ed1\u006e\u0067, \u00a7c{0} \u00a7c{1} \u00a74\u0073\u1ebd \u0062\u1ecb \u006d\u1ea5\u0074. +noKitGroup=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0064\u00f9\u006e\u0067 \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u006e\u00e0\u0079. +inventoryClearingFromAll=\u00a76\u0110\u0061\u006e\u0067 \u0078\u00f3\u0061 \u0074\u00fa\u0069 \u0111\u1ed3 \u0063\u1ee7\u0061 \u0074\u1ea5\u0074 \u0063\u1ea3 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069... +inventoryClearingAllItems=\u00a76\u0110\u00e3 \u0078\u00f3\u0061 \u0074\u1ea5\u0074 \u0063\u1ea3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0074\u0072\u006f\u006e\u0067 \u0074\u00fa\u0069 \u0063\u1ee7\u0061 {0}\u00a76. +inventoryClearingAllArmor=\u00a76\u0110\u00e3 \u0078\u00f3\u0061 \u0074\u1ea5\u0074 \u0063\u1ea3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00e0 \u0067\u0069\u00e1\u0070 \u0074\u0072\u006f\u006e\u0067 \u0074\u00fa\u0069 \u0063\u1ee7\u0061 {0}\u00a76. +inventoryClearingAllStack=\u00a76\u0110\u00e3 \u0078\u00f3\u0061 \u0074\u1ea5\u0074 \u0063\u1ea3\u00a7c {0} \u00a76\u0063\u1ee7\u0061 {1}\u00a76. +inventoryClearingStack=\u00a76\u0110\u00e3 \u0078\u00f3\u0061\u00a7c {0} \u00a76x\u00a7c {1} \u00a76\u0063\u1ee7\u0061 {2}\u00a76. +inventoryClearFail=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 {0} \u00a74\u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3\u00a7c {1} \u00a74x\u00a7c {2}\u00a74. +localNoOne= +totalSellableAll=\u00a7a\u0054\u1ed5\u006e\u0067 \u0067\u0069\u00e1 \u0074\u0072\u1ecb \u0063\u1ee7\u0061 \u0074\u1ea5\u0074 \u0063\u1ea3 \u0063\u00e1\u0063 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00e0 \u006b\u0068\u1ed1\u0069 \u0063\u00f3 \u0074\u0068\u1ec3 \u0062\u00e1\u006e \u0111\u01b0\u1ee3\u0063 \u006c\u00e0 \u00a7c{1}\u00a7a. +totalSellableBlocks=\u00a7a\u0054\u1ed5\u006e\u0067 \u0067\u0069\u00e1 \u0074\u0072\u1ecb \u0063\u1ee7\u0061 \u0074\u1ea5\u0074 \u0063\u1ea3 \u0063\u00e1\u0063 \u006b\u0068\u1ed1\u0069 \u0063\u00f3 \u0074\u0068\u1ec3 \u0062\u00e1\u006e \u0111\u01b0\u1ee3\u0063 \u006c\u00e0 \u00a7c{1}\u00a7a. +radiusTooBig=\u00a74\u0042\u00e1\u006e \u006b\u00ed\u006e\u0068 \u0071\u0075\u00e1 \u006c\u1edb\u006e\! \u0042\u00e1\u006e \u006b\u00ed\u006e\u0068 \u006c\u1edb\u006e \u006e\u0068\u1ea5\u0074 \u006c\u00e0 {0}. +isIpBanned=\u00a76\u0110\u1ecb\u0061 \u0063\u0068\u1ec9 \u0049\u0050 \u00a7c{0} \u00a76\u0111\u00e3 \u0062\u1ecb \u0063\u1ea5\u006d. +mobDataList=\u00a76\u0044\u1eef \u006c\u0069\u1ec7\u0075 \u0071\u0075\u00e1\u0069 \u0068\u1ee3\u0070 \u006c\u1ec7\:\u00a7r {0} +vanish=\u00a76\u1ea8\u006e \u0074\u0068\u00e2\u006e \u0063\u0068\u006f {0}\u00a76\: {1} +noLocationFound=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0074\u00ec\u006d \u0074\u0068\u1ea5\u0079 \u0076\u1ecb \u0074\u0072\u00ed \u0068\u1ee3\u0070 \u006c\u1ec7. +coordsKeyword={0}, {1}, {2} +banExemptOffline=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u1ea5\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0111\u00e3 \u006e\u0067\u006f\u1ea1\u0069 \u0074\u0075\u0079\u1ebf\u006e. +tempbanExemptOffline=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u1ea1\u006d \u0063\u1ea5\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0111\u00e3 \u006e\u0067\u006f\u1ea1\u0069 \u0074\u0075\u0079\u1ebf\u006e. +mayNotJailOffline=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0067\u0069\u0061\u006d \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u0067\u006f\u1ea1\u0069 \u0074\u0075\u0079\u1ebf\u006e. +muteExemptOffline=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u1eaf\u0074 \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u0067\u006f\u1ea1\u0069 \u0074\u0075\u0079\u1ebf\u006e. +ignoreExempt=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0063\u0068\u1eb7\u006e \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u006e\u00e0\u0079. +unsafeTeleportDestination=\u00a74\u0110\u0069\u1ec3\u006d \u0064\u1ecb\u0063\u0068 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ebf\u006e \u006c\u00e0 \u006b\u0068\u00f4\u006e\u0067 \u0061\u006e \u0074\u006f\u00e0\u006e \u0076\u00e0 \u006d\u1ee5\u0063 \u0022\u0074\u0065\u006c\u0065\u0070\u006f\u0072\u0074\u002d\u0073\u0061\u0066\u0065\u0074\u0079\u0022 \u0111\u00e3 \u0062\u1ecb \u0074\u1eaf\u0074. +noMetaJson=\u0044\u1eef \u006c\u0069\u1ec7\u0075 \u0074\u1eeb \u0074\u1ec7\u0070 \u004a\u0053\u004f\u004e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0068\u1ed5 \u0074\u0072\u1ee3 \u0074\u0072\u006f\u006e\u0067 \u0070\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0042\u0075\u006b\u006b\u0069\u0074 \u006e\u00e0\u0079. +maxMoney=\u00a74\u0047\u0069\u0061\u006f \u0064\u1ecb\u0063\u0068 \u006e\u00e0\u0079 \u0073\u1ebd \u0076\u01b0\u1ee3\u0074 \u0071\u0075\u00e1 \u0067\u0069\u1edb\u0069 \u0068\u1ea1\u006e \u0074\u0069\u1ec1\u006e \u0063\u0068\u006f \u0074\u00e0\u0069 \u006b\u0068\u006f\u1ea3\u006e \u006e\u00e0\u0079\u004e \u006b\u0068\u00f4\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0068\u1ed5 \u0074\u0072\u1ee3 \u0074\u0072\u006f\u006e\u0067 \u0070\u0068\u0069\u00ea\u006e \u0062\u1ea3\u006e \u0042\u0075\u006b\u006b\u0069\u0074 \u006e\u00e0\u0079. +skullChanged=\u00a76\u0110\u1ea7\u0075 \u006e\u0067\u01b0\u1edd\u0069 \u0111\u00e3 \u0111\u1ed5\u0069 \u0074\u0068\u00e0\u006e\u0068 \u00a7c{0}\u00a76. +alphaNames=\u00a74\u0054\u00ea\u006e \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0063\u0068\u1ec9 \u0063\u00f3 \u0074\u0068\u1ec3 \u0063\u0068\u1ee9\u0061 \u0043\u0068\u1eef\u002c \u0053\u1ed1\u002c \u0056\u00e0 \u0022\u005f\u0022. +givenSkull=\u00a76\u0042\u1ea1\u006e \u0111\u00e3 \u006e\u0068\u1ead\u006e \u0111\u01b0\u1ee3\u0063 \u0063\u00e1\u0069 \u0111\u1ea7\u0075 \u0063\u1ee7\u0061 \u00a7c{0}\u00a76. +noPermissionSkull=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec3\u006e \u0073\u1eed\u0061 \u0063\u00e1\u0069 \u0111\u1ea7\u0075 \u006e\u00e0\u0079. +teleportInvalidLocation=\u0047\u0069\u00e1 \u0074\u0072\u1ecb \u0063\u1ee7\u0061 \u0074\u1ecd\u0061 \u0111\u1ed9 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0076\u01b0\u1ee3\u0074 \u0071\u0075\u00e1 \u0033\u0030\u0030\u0030\u0030\u0030\u0030\u0030 +invalidSkull=\u00a74\u0058\u0069\u006e \u0068\u00e3\u0079 \u0063\u1ea7\u006d \u0063\u00e1\u0069 \u0111\u1ea7\u0075 \u0063\u1ee7\u0061 \u006d\u1ed9\u0074 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069. +weatherInvalidWorld=\u004b\u0068\u00f4\u006e\u0067 \u0074\u00ec\u006d \u0074\u0068\u1ea5\u0079 \u0074\u00ea\u006e \u0074\u0068\u1ebf \u0067\u0069\u1edb\u0069 {0}\! +gameModeInvalid=\u00a74\u0042\u1ea1\u006e \u0063\u1ea7\u006e \u0063\u0068\u1ec9 \u0111\u1ecb\u006e\u0068 \u006d\u1ed9\u0074 \u006e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069\u002f\u0063\u0068\u1ebf \u0111\u1ed9 \u0068\u1ee3\u0070 \u006c\u1ec7. +mailTooLong=\u00a74\u0054\u0068\u01b0 \u0071\u0075\u00e1 \u0064\u00e0\u0069\u002c \u0068\u00e3\u0079 \u0063\u1ed1 \u0067\u0069\u1eef \u006e\u00f3 \u0064\u01b0\u1edb\u0069 \u0031\u0030\u0030\u0030 \u006b\u00fd \u0074\u1ef1. +mailDelay=\u0051\u0075\u00e1 \u006e\u0068\u0069\u1ec1\u0075 \u0074\u0068\u01b0 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0067\u1eed\u0069 \u0074\u0072\u006f\u006e\u0067 \u0063\u00f9\u006e\u0067 \u006d\u1ed9\u0074 \u0070\u0068\u00fa\u0074\u002e \u004e\u0068\u0069\u1ec1\u0075 \u006e\u0068\u1ea5\u0074 \u006c\u00e0\: {0} +seenAccounts=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u0063\u0169\u006e\u0067 \u0111\u01b0\u1ee3\u0063 \u0062\u0069\u1ebf\u0074 \u0111\u1ebf\u006e \u006e\u0068\u01b0 \u006c\u00e0\:\u00a7c {0} +unableToSpawnItem=\u00a74\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u1ea1\u006f \u0072\u0061 \u00a7c{0}\u00a74, \u0111\u00e2\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0070\u0068\u1ea3\u0069 \u006c\u00e0 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0074\u1ea1\u006f \u0111\u01b0\u1ee3\u0063. +itemsConverted=\u00a76\u0043\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ed5\u0069 \u0074\u1ea5\u0074 \u0063\u1ea3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0074\u0068\u00e0\u006e\u0068 \u006b\u0068\u1ed1\u0069. +itemsNotConverted=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0063\u00f3 \u0074\u0068\u1ec3 \u0063\u0068\u0075\u0079\u1ec3\u006e \u0111\u1ed5\u0069 \u0074\u0068\u00e0\u006e\u0068 \u006b\u0068\u1ed1\u0069. +mailSentTo=\u00a7c{0}\u00a76 \u0111\u00e3 \u0111\u01b0\u1ee3\u0063 \u0067\u1eed\u0069 \u0074\u0068\u01b0 \u0073\u0061\u0075\: +mailMessage={0} +whoisTempBanned=\u00a76 - \u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0068\u1ebf\u0074 \u0068\u1ea1\u006e \u0063\u1ea5\u006d:\u00a7r {0} +playerTempBanned=\u00a76\u004e\u0067\u01b0\u1edd\u0069 \u0063\u0068\u01a1\u0069 \u00a7c{0}\u00a76 \u0111\u00e3 \u0074\u1ea1\u006d \u0063\u1ea5\u006d \u00a7c{1}\u00a76 \u0074\u0072\u006f\u006e\u0067 \u00a7c{2}\u00a76: \u00a7c{3}\u00a76. +mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1} +cantGamemode=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0071\u0075\u0079\u1ec1\u006e \u0111\u1ec3 \u0111\u1ed5\u0069 \u0063\u0068\u1ebf \u0111\u1ed9 \u0063\u0068\u01a1\u0069 {0} +createdKit=\u00a76\u0054\u1ea1\u006f \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u00a7c{0} \u00a76\u0076\u1edb\u0069 \u00a7c{1} \u00a76\u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u00e0 \u0074\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0068\u1ed3\u0069 \u00a7c{2} +spectator=\u004b\u0068\u00e1\u006e \u0067\u0069\u1ea3 +kitContains=\u00a76\u0042\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u00a7c{0} \u00a76\u0062\u0061\u006f \u0067\u1ed3\u006d: +kitItem=\u00a76- \u00a7f{0} +invalidBanner=\u00a74\u0043\u1edd \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7. +msgDisabled=\u00a76\u0110\u00e3 \u00a7c\u0074\u1eaf\u0074\u00a76 \u0063\u0068\u1ebf \u0111\u1ed9 \u006e\u0068\u1ead\u006e \u0074\u0068\u01b0. +msgDisabledFor=\u00a76\u0110\u00e3 \u00a7c\u0074\u1eaf\u0074 \u00a76\u0063\u0068\u1ebf \u0111\u1ed9 \u006e\u0068\u1ead\u006e \u0074\u0068\u01b0 \u0063\u0068\u006f \u00a7c{0}\u00a76. +msgEnabled=\u00a76\u0110\u00e3 \u00a7c\u0062\u1ead\u0074\u00a76 \u0063\u0068\u1ebf \u0111\u1ed9 \u006e\u0068\u1ead\u006e \u0074\u0068\u01b0. +msgEnabledFor=\u00a76\u0110\u00e3 \u00a7c\u0062\u1ead\u0074 \u00a76\u0063\u0068\u1ebf \u0111\u1ed9 \u006e\u0068\u1ead\u006e \u0074\u0068\u01b0 \u0063\u0068\u006f \u00a7c{0}\u00a76. +msgIgnore=\u00a7c{0} \u00a74\u0111\u00e3 \u0074\u1eaf\u0074 \u0074\u0072\u00f2 \u0063\u0068\u0075\u0079\u1ec7\u006e \u0072\u0069\u00ea\u006e\u0067. +minimumPayAmount=\u00a7c\u0053\u1ed1 \u0074\u0069\u1ec1\u006e \u0074\u0068\u1ea5\u0070 \u006e\u0068\u1ea5\u0074 \u0062\u1ea1\u006e \u0063\u00f3 \u0074\u0068\u1ec3 \u0063\u0068\u0075\u0079\u1ec3\u006e \u006c\u00e0 {0}. +commandCooldown=\u00a7c\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0064\u00f9\u006e\u0067 \u006c\u1ea1\u0069 \u006c\u1ec7\u006e\u0068 \u0111\u00f3 \u0074\u0072\u006f\u006e\u0067 {0}. +createKitFailed=\u00a74\u0110\u00e3 \u0063\u00f3 \u006c\u1ed7\u0069 \u0078\u1ea3\u0079 \u0072\u0061 \u006b\u0068\u0069 \u0074\u1ea1\u006f \u0062\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 {0}. +createKitSeparator=\u00a7m----------------------- +createKitSuccess=\u00a76\u0042\u1ed9 \u0064\u1ee5\u006e\u0067 \u0063\u1ee5 \u0111\u00e3 \u0074\u1ea1\u006f: \u00a7f{0}\n\u00a76\u0054\u0068\u1edd\u0069 \u0067\u0069\u0061\u006e \u0068\u1ed3\u0069: \u00a7f{1}\n\u00a76\u0110\u1ecb\u0061 \u0063\u0068\u1ec9: \u00a7f{2}\n\u00a76\u0053\u0061\u006f \u0063\u0068\u00e9\u0070 \u006e\u1ed9\u0069 \u0064\u0075\u006e\u0067 \u0074\u0072\u006f\u006e\u0067 \u006c\u0069\u00ea\u006e \u006b\u1ebf\u0074 \u1edf \u0074\u0072\u00ea\u006e \u0076\u00e0\u006f \u0074\u1ec7\u0070 kits.yml \u0063\u1ee7\u0061 \u0062\u1ea1\u006e. diff --git a/Essentials/src/messages_zh.properties b/Essentials/src/messages_zh.properties index 3e671e13f..c098e767b 100644 --- a/Essentials/src/messages_zh.properties +++ b/Essentials/src/messages_zh.properties @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74\u65e0\u6cd5\u627e\u5230\u6a21\u7248 {0} createdKit=\u00a76\u521b\u5efa\u793c\u5305 \u00a7c{0} \u00a76\u548c \u00a7c{1} \u00a76\u4f7f\u7528\u6b21\u6570 \u00a7c{2} createKitFailed=\u00a74\u521b\u5efa\u793c\u5305\u51fa\u9519 {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76\u521b\u5efa\u793c\u5305: \u00a7f{0}\n\u00a76\u4f7f\u7528\u6b21\u6570: \u00a7f{1}\n\u00a76\u4fe1\u606f: \u00a7f{2}\n\u00a76\u590d\u5236\u4e0b\u9762\u7684\u4fe1\u606f\u5230config\u91cc\u9762. +createKitSuccess=\u00a76\u521b\u5efa\u793c\u5305: \u00a7f{0}\n\u00a76\u4f7f\u7528\u6b21\u6570: \u00a7f{1}\n\u00a76\u4fe1\u606f: \u00a7f{2}\n\u00a76\u590d\u5236\u4e0b\u9762\u7684\u4fe1\u606f\u5230kits\u91cc\u9762. creatingConfigFromTemplate=\u4ece\u6a21\u7248\:{0} \u521b\u5efa\u914d\u7f6e creatingEmptyConfig=\u521b\u5efa\u7a7a\u7684\u914d\u7f6e\:{0} creative=\u521b\u9020\u6a21\u5f0f @@ -103,9 +103,10 @@ disabledToSpawnMob=\u00a74\u914d\u7f6e\u6587\u4ef6\u4e2d\u5df2\u7981\u6b62\u6b64 disableUnlimited=\u00a76\u53d6\u6d88\u4e86 {1} \u7684\u65e0\u9650\u653e\u7f6e \u00a7c{0} \u00a76\u7684\u80fd\u529b distance=\u00a76\u8ddd\u79bb\: {0} dontMoveMessage=\u00a76\u4f20\u9001\u5c06\u5728\u00a7c{0}\u00a76\u5185\u5f00\u59cb.\u8bf7\u4e0d\u8981\u79fb\u52a8 -downloadingGeoIp=\u4e0b\u8f7d GeoIP \u6570\u636e\u5e93\u4e2d...\u8fd9\u53ef\u80fd\u9700\u8981\u82b1\u8d39\u4e00\u6bb5\u65f6\u95f4 (\u56fd\u5bb6\:0.6 MB, \u57ce\u5e02\: 20 MB) +downloadingGeoIp=\u4e0b\u8f7d GeoIP \u6570\u636e\u5e93\u4e2d...\u8fd9\u53ef\u80fd\u9700\u8981\u82b1\u8d39\u4e00\u6bb5\u65f6\u95f4 (\u56fd\u5bb6\:1.7 MB, \u57ce\u5e02\: 30 MB) duplicatedUserdata=\u590d\u5236\u4e86\u73a9\u5bb6\u5b58\u6863\:{0} \u548c {1} durability=\u00a76\u8fd9\u4e2a\u5de5\u5177\u8fd8\u6709 \u00a74{0}\u00a76 \u6301\u4e45 +east=E editBookContents=\u00a7e\u4f60\u73b0\u5728\u53ef\u4ee5\u7f16\u8f91\u8fd9\u672c\u4e66\u7684\u5185\u5bb9. enabled=\u5f00\u542f enableUnlimited=\u00a76\u7ed9\u4e88\u65e0\u9650\u91cf\u7684\u7269\u54c1f\u00a7c {0} \u00a76\u7ed9 \u00a7c{1}\u00a76. @@ -191,6 +192,7 @@ invalidCharge=\u00a74\u65e0\u6548\u7684\u4ef7\u683c invalidFireworkFormat=\u00a74\u8fd9\u4e2a\u9009\u9879 \u00a7c{0} \u00a74\u5bf9 \u00a7c{1}\u00a74 \u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u503c\u00a74. invalidHome=\u00a74\u5bb6\u00a7c {0} \u00a74\u4e0d\u5b58\u5728\! invalidHomeName=\u00a74\u65e0\u6548\u7684\u5bb6\u540d\u79f0\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74\u65e0\u6548\u7684\u602a\u7269\u7c7b\u578b. invalidNumber=\u65e0\u6548\u7684\u6570\u5b57. invalidPotion=\u00a74\u65e0\u6548\u7684\u836f\u6c34. @@ -208,6 +210,8 @@ inventoryClearingStack=\u00a76\u79fb\u9664\u00a7c {0} \u00a76\u4e2a\u00a7c {1} \ is=\u662f isIpBanned=\u00a76IP\u5730\u5740 \u00a7c{0} \u00a76\u5df2\u88ab\u5c01\u7981. itemCannotBeSold=\u00a74\u8be5\u7269\u54c1\u65e0\u6cd5\u5356\u7ed9\u670d\u52a1\u5668 +itemId=\u00a76ID\:\u00a7c {0} +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemMustBeStacked=\u00a74\u7269\u54c1\u5fc5\u987b\u6210\u7ec4\u7684\u8fdb\u884c\u4ea4\u6613,2s\u4ee3\u8868\u7684\u6570\u91cf\u662f2\u7ec4\u7269\u54c1,\u4ee5\u6b64\u7c7b\u63a8 itemNames=\u00a76\u7269\u54c1\u7b80\u6613\u540d\u79f0\:\u00a7r {0} itemNotEnough1=\u00a74\u4f60\u6ca1\u6709\u8db3\u591f\u7684\u8be5\u7269\u54c1\u6765\u5356\u51fa @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74\u4f60\u6ca1\u6709\u8db3\u591f\u7684\u7269\u54c1\u6765\ itemSold=\u00a7a\u83b7\u5f97 \u00a7c {0} \u00a7a \uff08{1} \u5355\u4f4d{2},\u6bcf\u4e2a\u4ef7\u503c {3}\uff09 itemSoldConsole=\u00a7c{0} \u00a76\u5356\u51fa\u4e86 {1},\u83b7\u5f97\u4e86\u00a76 {2} \u00a76 \uff08{3} \u5355\u4f4d\u7269\u54c1,\u6bcf\u4e2a\u4ef7\u503c {4}\uff09 itemSpawn=\u00a76\u751f\u6210 {0} \u4e2a {1} -itemType=\u00a76\u7269\u54c1\:\u00a7c {0} \u00a76-\u00a74 {1} +itemType=\u00a76\u7269\u54c1\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74\u5df2\u5728\u76d1\u72f1\u4e2d\u7684\u73a9\u5bb6\:{0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74\u8bf7\u5728\u76d1\u72f1\u4e2d\u9762\u58c1\u601d\u8fc7\uff01 jailNotExist=\u00a74\u8be5\u76d1\u72f1\u4e0d\u5b58\u5728 jailReleased=\u00a76\u73a9\u5bb6 \u00a7c{0}\u00a76 \u51fa\u72f1\u4e86 @@ -315,6 +320,7 @@ nickChanged=\u00a76\u6635\u79f0\u5df2\u66f4\u6362 nickDisplayName=\u00a74\u4f60\u9700\u8981\u6fc0\u6d3bchange-displayname.\u8be5\u6587\u4ef6\u5728Essentials\u7684config\u6587\u4ef6\u4e2d nickInUse=\u00a74\u90a3\u4e2a\u6635\u79f0\u5df2\u88ab\u4f7f\u7528 nickNamesAlpha=\u00a74\u6635\u79f0\u5fc5\u987b\u4e3a\u5b57\u6bcd\u6216\u6570\u5b57. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76\u4f60\u7684\u6635\u79f0\u5df2\u53d6\u6d88 nickSet=\u00a76\u4f60\u7684\u6635\u79f0\u73b0\u5728\u662f \u00a7c{0}\u00a76. nickTooLong=\u00a74\u60a8\u6240\u8f93\u5165\u7684\u6635\u79f0\u8fc7\u957f @@ -327,6 +333,10 @@ noGodWorldWarning=\u00a74\u7981\u6b62\u4f7f\u7528\u4e0a\u5e1d\u6a21\u5f0f. noHelpFound=\u00a74\u6ca1\u6709\u5339\u914d\u7684\u547d\u4ee4 noHomeSetPlayer=\u00a76\u8be5\u73a9\u5bb6\u8fd8\u672a\u8bbe\u7f6e\u5bb6 noIgnored=\u00a76\u4f60\u6ca1\u6709\u5ffd\u7565\u4efb\u4f55\u4eba. +northEast=NE +north=N +northWest=NW +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74\u4f60\u6ca1\u6709\u4f7f\u7528\u8fd9\u4e2a\u5de5\u5177\u5305\u7684\u6743\u9650. noKitPermission=\u00a74\u4f60\u9700\u8981 \u00a74{0}\u00a74 \u6743\u9650\u6765\u4f7f\u7528\u8be5\u5de5\u5177 noKits=\u00a76\u8fd8\u6ca1\u6709\u53ef\u83b7\u5f97\u7684\u5de5\u5177 @@ -363,6 +373,7 @@ onlyDayNight=/time \u547d\u4ee4\u53ea\u6709 day/night \u4e24\u4e2a\u9009\u62e9 onlyPlayers=\u00a74\u53ea\u6709\u5728\u6e38\u620f\u7684\u73a9\u5bb6\u624d\u80fd\u4f7f\u7528 \u00a7c{0}\u00a74. onlyPlayerSkulls=\u00a74\u4f60\u4fee\u6539\u4e86\u5934\u9885\u4e3b\u4eba\u7684ID\u4e3a (\u00a7c397\:3\u00a74). onlySunStorm=\u00a74/weather \u547d\u4ee4\u53ea\u6709 sun/storm \u4e24\u4e2a\u9009\u62e9 +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76\u6392\u5e8f {0} \u00a76\u4e2a\u73a9\u5bb6\u7684\u8d44\u91d1\u4e2d,\u8bf7\u7a0d\u5019\u2026\u2026 oversizedTempban=\u00a74\u4f60\u53ef\u80fd\u6ca1\u6709\u5728\u8fd9\u4e2a\u65f6\u6bb5\u5c01\u7981\u73a9\u5bb6. payConfirmToggleOff=\u00a76\u4f60\u5173\u95ed\u4e86\u652f\u4ed8\u786e\u8ba4\u63d0\u793a. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76\u73a9\u5bb6\u00a7c{1}\u00a76\u7684\u5929\u6c14\u88ab\u8bbe\u questionFormat=\u00a72[\u63d0\u95ee]\u00a7r {0} radiusTooBig=\u00a74\u534a\u5f84\u8fc7\u5927\!\u6700\u5927\u534a\u5f84\u4e3a{0}. readNextPage=\u00a76\u8f93\u5165 \u00a7c/{0} {1} \u00a76\u6765\u9605\u8bfb\u4e0b\u4e00\u9875 +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} \u5df2\u7ecf\u4e0b\u7ebf\u4e86. recipe=\u00a76\u8fd9\u4e2a\u7269\u54c1\u7684\u5408\u6210\u516c\u5f0f \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 \u00a7c{2}\u00a76) recipeBadIndex=\u8fd9\u4e2a\u7f16\u53f7\u6ca1\u6709\u5339\u914d\u7684\u5408\u6210\u516c\u5f0f. @@ -477,6 +489,9 @@ slimeMalformedSize=\u00a74\u5927\u5c0f\u975e\u6cd5 socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2} socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r +southEast=SE +south=S +southWest=SW socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r soloMob=\u00a74\u8be5\u751f\u7269\u559c\u6b22\u72ec\u5c45 spawned=\u5df2\u751f\u6210 @@ -581,6 +596,7 @@ weatherStorm=\u00a76\u4f60\u5c06 {0} \u7684\u5929\u6c14\u6539\u4e3a\u96e8\u96ea weatherStormFor=\u00a76\u4f60\u5c06 {0} \u7684\u5929\u6c14\u7684\u6539\u4e3a\u96e8\u96ea,\u6301\u7eed {1} \u79d2 weatherSun=\u00a76\u4f60\u5c06 {0} \u7684\u5929\u6c14\u6539\u4e3a\u6674\u5929 weatherSunFor=\u00a76\u4f60\u5c06 {0} \u7684\u5929\u6c14\u7684\u6539\u4e3a\u6674\u5929,\u6301\u7eed {1} \u79d2 +west=W whoisAFK=\u00a76 - \u6682\u79bb\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (\u5df2\u7ecf\u6709\u4e86 {1} ) whoisBanned=\u00a76 - \u5c01\u7981\:\u00a7r {0} diff --git a/Essentials/src/messages_zh_HK.properties b/Essentials/src/messages_zh_HK.properties index 2423c4a22..3c387ffbb 100644 --- a/Essentials/src/messages_zh_HK.properties +++ b/Essentials/src/messages_zh_HK.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74\u7121\u6cd5\u627e\u5230\u6a21\u7248 {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=\u5f9e\u6a21\u7248\:{0} \u5275\u5efa\u914d\u7f6e creatingEmptyConfig=\u5275\u5efa\u7a7a\u7684\u914d\u7f6e\:{0} creative=\u5275\u9020\u6a21\u5f0f @@ -106,6 +106,7 @@ dontMoveMessage=\u00a76\u50b3\u9001\u5c07\u5728{0}\u5167\u958b\u59cb.\u4e0d\u898 downloadingGeoIp=\u4e0b\u8f09GeoIP\u6578\u64da\u5eab\u4e2d duplicatedUserdata=\u8907\u88fd\u4e86\u73a9\u5bb6\u5b58\u6a94\:{0} \u548c {1} durability=\u00a76\u9019\u500b\u5de5\u5177\u9084\u6709 \u00a74{0}\u00a76 \u6301\u4e45 +east=E editBookContents=\u00a7e\u4f60\u73fe\u5728\u53ef\u4ee5\u7de8\u8f2f\u9019\u672c\u66f8\u7684\u5167\u5bb9. enabled=\u958b\u555f enableUnlimited=\u00a76\u7d66\u4e88 \u00a7c{1}\u00a76 \u7121\u9650\u7684\u00a7c {0} \u00a76 \u3002 @@ -191,6 +192,7 @@ invalidCharge=\u00a74\u7121\u6548\u7684\u50f9\u683c invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. invalidHome=\u00a74\u5bb6\u00a7c {0} \u00a74\u4e0d\u5b58\u5728\! invalidHomeName=\u00a74\u7121\u6548\u7684\u5bb6\u540d\u7a31\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74\u7121\u6548\u751f\u7269\u985e\u578b invalidNumber=\u7121\u6548\u7684\u6578\u5b57. invalidPotion=\u00a74\u7121\u6548\u7684\u85e5\u6c34. @@ -207,7 +209,9 @@ inventoryClearingFromAll=\u00a76\u6e05\u9664\u6240\u6709\u73a9\u5bb6\u7684\u96a8 inventoryClearingStack=\u00a76\u6e05\u9664{2}\u7684\u00a7c{0}\u00a76\u500b\u00a7c{1}\u00a76. is=\u662f isIpBanned=\u00a76IP \u00a7c{0} \u00a76\u5df2\u88ab\u5c01\u9396\u3002 +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74\u8a72\u7269\u54c1\u7121\u6cd5\u8ce3\u7d66\u670d\u52d9\u5668 +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74\u7269\u54c1\u5fc5\u9808\u6210\u7d44\u4ea4\u6613,2s\u7684\u6578\u91cf\u662f2\u7d44,\u4ee5\u6b64\u985e\u63a8 itemNames=\u00a76\u7269\u54c1\u7c21\u6613\u540d\u7a31\:\u00a7r {0} itemNotEnough1=\u00a74\u4f60\u6c92\u6709\u8db3\u5920\u7684\u8a72\u7269\u54c1\u4f86\u8ce3\u51fa @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7a\u7372\u5f97 \u00a7c {0} \u00a7a \uff08{1} \u55ae\u4f4d{2},\u6bcf\u500b\u50f9\u503c {3}\uff09 itemSoldConsole=\u00a7c{0} \u00a76\u8ce3\u51fa\u4e86 {1},\u7372\u5f97\u4e86\u00a76 {2} \u00a76 \uff08{3} \u55ae\u4f4d\u7269\u54c1,\u6bcf\u500b\u50f9\u503c {4}\uff09 itemSpawn=\u00a76\u751f\u6210 {0} \u500b {1} -itemType=\u00a76\u7269\u54c1\:\u00a7c {0} \u00a76-\u00a74 {1} +itemType=\u00a76\u7269\u54c1\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74\u5df2\u5728\u76e3\u7344\u4e2d\u7684\u73a9\u5bb6\:{0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74\u8acb\u5728\u76e3\u7344\u4e2d\u9762\u58c1\u601d\u904e\uff01 jailNotExist=\u00a74\u8a72\u76e3\u7344\u4e0d\u5b58\u5728 jailReleased=\u00a76\u73a9\u5bb6 \u00a7c{0}\u00a76 \u51fa\u7344\u4e86 @@ -315,6 +320,7 @@ nickChanged=\u00a76\u66b1\u7a31\u5df2\u66f4\u63db nickDisplayName=\u00a74\u4f60\u9700\u8981\u6fc0\u6d3bchange-displayname.\u8a72\u6587\u4ef6\u5728Essentials\u8a2d\u7f6e\u6587\u4ef6\u4e2d nickInUse=\u00a74\u90a3\u500b\u66b1\u7a31\u5df2\u88ab\u4f7f\u7528 nickNamesAlpha=\u00a74\u66b1\u7a31\u5fc5\u9808\u70ba\u5b57\u6bcd\u6216\u6578\u5b57. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76\u4f60\u4e0d\u518d\u64c1\u6709\u4e00\u500b\u66b1\u7a31 nickSet=\u00a76\u4f60\u7684\u66b1\u7a31\u73fe\u5728\u662f \u00a7c{0}\u00a76\u3002 nickTooLong=\u00a74\u9019\u500b\u66b1\u7a31\u592a\u9577. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u noBreakBedrock=\u00a74\u4f60\u4e0d\u80fd\u6467\u6bc0\u57fa\u5ca9\uff01 noDestroyPermission=\u00a74\u4f60\u6c92\u6709\u6b0a\u9650\u7834\u58de \u00a7c{0}\u00a74\u3002 noDurability=\u00a74\u9019\u500b\u7269\u54c1\u6c92\u6709\u8010\u4e45. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74\u7981\u6b62\u4f7f\u7528\u4e0a\u5e1d\u6a21\u5f0f. noHelpFound=\u00a74\u6c92\u6709\u5339\u914d\u7684\u547d\u4ee4 noHomeSetPlayer=\u00a76\u8a72\u73a9\u5bb6\u9084\u672a\u8a2d\u7f6e\u5bb6 noIgnored=\u00a76\u4f60\u6c92\u6709\u5ffd\u7565\u4efb\u4f55\u4eba\u3002 +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74\u4f60\u6c92\u6709\u6b0a\u9650\u4f7f\u7528\u9019\u500b\u5de5\u5177\u7d44. noKitPermission=\u00a74\u4f60\u9700\u8981 \u00a74{0}\u00a74 \u6b0a\u9650\u4f86\u4f7f\u7528\u8a72\u5de5\u5177 noKits=\u00a76\u9084\u6c92\u6709\u53ef\u7372\u5f97\u7684\u5de5\u5177 @@ -363,6 +373,7 @@ onlyDayNight=/time \u547d\u4ee4\u53ea\u6709 day/night \u5169\u500b\u9078\u64c7 onlyPlayers=\u00a74\u53ea\u6709\u904a\u6232\u4e2d\u7684\u73a9\u5bb6\u53ef\u4ee5\u4f7f\u7528 \u00a7c{0}\u00a74\u3002 onlyPlayerSkulls=\u00a74\u4f60\u53ea\u80fd\u8a2d\u5b9a\u73a9\u5bb6\u982d\u9871 (\u00a7c397\:3\u00a74) \u7684\u64c1\u6709\u8005\u3002 onlySunStorm=\u00a74/weather \u547d\u4ee4\u53ea\u6709 sun/storm \u5169\u500b\u9078\u64c7 +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76\u6392\u5e8f {0} \u00a76\u500b\u73a9\u5bb6\u7684\u8cc7\u91d1\u4e2d,\u8acb\u7a0d\u5019\u2026\u2026 oversizedTempban=\u00a74\u4f60\u53ef\u80fd\u6c92\u6709\u5728\u9019\u500b\u6642\u6bb5\u5c01\u7981\u73a9\u5bb6. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76\u73a9\u5bb6\u00a7c{1}\u00a76\u7684\u5929\u6c23\u88ab\u8a2d\u questionFormat=\u00a72[\u63d0\u554f]\u00a7r {0} radiusTooBig=\u00a74\u7bc4\u570d\u592a\u5927\! \u6700\u5927\u7bc4\u570d\u70ba{0}. readNextPage=\u00a76\u8f38\u5165 \u00a7c/{0} {1} \u00a76\u4f86\u95b1\u8b80\u4e0b\u4e00\u9801 +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=\u9019\u500b\u7de8\u865f\u6c92\u6709\u5339\u914d\u7684\u5408\u6210\u516c\u5f0f. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74\u4f60\u4e0d\u5141\u8a31\u5728\u6b64\u653e\u7f6e\u724c\u5b50 similarWarpExist=\u00a74\u4e00\u500b\u540c\u540d\u7684\u5730\u6a19\u5df2\u5b58\u5728 +southEast=SE +south=S +southWest=SW skullChanged=\u00a76\u982d\u9871\u4fee\u6539\u70ba \u00a7c{0}\u00a76\u3002 slimeMalformedSize=\u00a74\u5927\u5c0f\u975e\u6cd5 socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u6539\u70ba\u96e8\u96ea weatherStormFor=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u7684\u6539\u70ba\u96e8\u96ea,\u6301\u7e8c {1} \u79d2 weatherSun=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u6539\u70ba\u6674\u5929 weatherSunFor=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u7684\u6539\u70ba\u6674\u5929,\u6301\u7e8c {1} \u79d2 +west=W whoisAFK=\u00a76 - \u66ab\u96e2\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - \u5c01\u7981\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76\u50f9\u683c\u5df2\u8a2d\u7f6e year=\u5e74 years=\u5e74 youAreHealed=\u00a76\u4f60\u5df2\u88ab\u6cbb\u7642 -youHaveNewMail=\u00a76\u4f60\u64c1\u6709 \u00a7c{0}\u00a76 \u689d\u6d88\u606f\uff01\u00a7r\u8f38\u5165 \u00a7c/mail read\u00a76 \u4f86\u67e5\u770b \ No newline at end of file +youHaveNewMail=\u00a76\u4f60\u64c1\u6709 \u00a7c{0}\u00a76 \u689d\u6d88\u606f\uff01\u00a7r\u8f38\u5165 \u00a7c/mail read\u00a76 \u4f86\u67e5\u770b diff --git a/Essentials/src/messages_zh_TW.properties b/Essentials/src/messages_zh_TW.properties index ea227487d..1087e2689 100644 --- a/Essentials/src/messages_zh_TW.properties +++ b/Essentials/src/messages_zh_TW.properties @@ -1,5 +1,5 @@ #X-Generator: crowdin.net -#version: ${project.version}-b${build.number} +#version: ${full.version} # Single quotes have to be doubled: '' # Translations start here # by: @@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74\u7121\u6cd5\u627e\u5230\u6a21\u7248 {0} createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2} createKitFailed=\u00a74Error occurred whilst creating kit {0}. createKitSeparator=\u00a7m----------------------- -createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml. +createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml. creatingConfigFromTemplate=\u5f9e\u6a21\u7248\:{0} \u5275\u5efa\u914d\u7f6e creatingEmptyConfig=\u5275\u5efa\u7a7a\u7684\u914d\u7f6e\:{0} creative=\u5275\u9020\u6a21\u5f0f @@ -106,6 +106,7 @@ dontMoveMessage=\u00a76\u50b3\u9001\u5c07\u5728{0}\u5167\u958b\u59cb.\u4e0d\u898 downloadingGeoIp=\u4e0b\u8f09GeoIP\u8cc7\u6599\u5eab\u4e2d duplicatedUserdata=\u8907\u88fd\u4e86\u73a9\u5bb6\u5b58\u6a94\:{0} \u548c {1} durability=\u00a76\u9019\u500b\u5de5\u5177\u9084\u6709 \u00a74{0}\u00a76 \u6301\u4e45 +east=E editBookContents=\u00a7e\u4f60\u73fe\u5728\u53ef\u4ee5\u7de8\u8f2f\u9019\u672c\u66f8\u7684\u5167\u5bb9. enabled=\u958b\u555f enableUnlimited=\u00a76\u7d66\u4e88 \u00a7c{1}\u00a76 \u7121\u9650\u7684\u00a7c {0} \u00a76 \u3002 @@ -191,6 +192,7 @@ invalidCharge=\u00a74\u7121\u6548\u7684\u50f9\u683c invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74. invalidHome=\u00a74\u5bb6\u00a7c {0} \u00a74\u4e0d\u5b58\u5728\! invalidHomeName=\u00a74\u7121\u6548\u7684\u5bb6\u540d\u7a31\! +invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74. invalidMob=\u00a74\u7121\u6548\u751f\u7269\u985e\u578b invalidNumber=\u7121\u6548\u7684\u6578\u5b57. invalidPotion=\u00a74\u7121\u6548\u7684\u85e5\u6c34. @@ -207,7 +209,9 @@ inventoryClearingFromAll=\u00a76\u6e05\u9664\u6240\u6709\u73a9\u5bb6\u7684\u96a8 inventoryClearingStack=\u00a76\u6e05\u9664{2}\u7684\u00a7c{0}\u00a76\u500b\u00a7c{1}\u00a76. is=\u662f isIpBanned=\u00a76IP \u00a7c{0} \u00a76\u5df2\u88ab\u5c01\u9396\u3002 +internalError=\u00a7cAn internal error occurred while attempting to perform this command. itemCannotBeSold=\u00a74\u8a72\u7269\u54c1\u7121\u6cd5\u8ce3\u7d66\u4f3a\u670d\u5668 +itemId=\u00a76ID\:\u00a7c {0} itemMustBeStacked=\u00a74\u7269\u54c1\u5fc5\u9808\u6210\u7d44\u4ea4\u6613,2s\u7684\u6578\u91cf\u662f2\u7d44,\u4ee5\u6b64\u985e\u63a8 itemNames=\u00a76\u7269\u54c1\u7c21\u6613\u540d\u7a31\:\u00a7r {0} itemNotEnough1=\u00a74\u4f60\u6c92\u6709\u8db3\u5920\u7684\u8a72\u7269\u54c1\u4f86\u8ce3\u51fa @@ -220,8 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks. itemSold=\u00a7a\u7372\u5f97 \u00a7c {0} \u00a7a \uff08{1} \u55ae\u4f4d{2},\u6bcf\u500b\u50f9\u503c {3}\uff09 itemSoldConsole=\u00a7c{0} \u00a76\u8ce3\u51fa\u4e86 {1},\u7372\u5f97\u4e86\u00a76 {2} \u00a76 \uff08{3} \u55ae\u4f4d\u7269\u54c1,\u6bcf\u500b\u50f9\u503c {4}\uff09 itemSpawn=\u00a76\u751f\u6210 {0} \u500b {1} -itemType=\u00a76\u7269\u54c1\:\u00a7c {0} \u00a76-\u00a74 {1} +itemType=\u00a76\u7269\u54c1\:\u00a7c {0} jailAlreadyIncarcerated=\u00a74\u5df2\u5728\u76e3\u7344\u4e2d\u7684\u73a9\u5bb6\:{0} +jailList=\u00a76Jails\:\u00a7r {0} jailMessage=\u00a74\u8acb\u5728\u76e3\u7344\u4e2d\u9762\u58c1\u601d\u904e\uff01 jailNotExist=\u00a74\u8a72\u76e3\u7344\u4e0d\u5b58\u5728 jailReleased=\u00a76\u73a9\u5bb6 \u00a7c{0}\u00a76 \u51fa\u7344\u4e86 @@ -315,6 +320,7 @@ nickChanged=\u00a76\u66b1\u7a31\u5df2\u66f4\u63db nickDisplayName=\u00a74\u4f60\u9700\u8981\u6fc0\u6d3bchange-displayname.\u8a72\u6587\u4ef6\u5728Essentials\u8a2d\u7f6e\u6587\u4ef6\u4e2d nickInUse=\u00a74\u90a3\u500b\u66b1\u7a31\u5df2\u88ab\u4f7f\u7528 nickNamesAlpha=\u00a74\u66b1\u7a31\u5fc5\u9808\u70ba\u5b57\u6bcd\u6216\u6578\u5b57. +nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed. nickNoMore=\u00a76\u4f60\u4e0d\u518d\u64c1\u6709\u4e00\u500b\u66b1\u7a31 nickSet=\u00a76\u4f60\u7684\u66b1\u7a31\u73fe\u5728\u662f \u00a7c{0}\u00a76\u3002 nickTooLong=\u00a74\u9019\u500b\u66b1\u7a31\u592a\u9577. @@ -323,10 +329,14 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u noBreakBedrock=\u00a74\u4f60\u4e0d\u80fd\u6467\u6bc0\u57fa\u5ca9\uff01 noDestroyPermission=\u00a74\u4f60\u6c92\u6709\u6b0a\u9650\u7834\u58de \u00a7c{0}\u00a74\u3002 noDurability=\u00a74\u9019\u500b\u7269\u54c1\u6c92\u6709\u8010\u4e45. +northEast=NE +north=N +northWest=NW noGodWorldWarning=\u00a74\u7981\u6b62\u4f7f\u7528\u4e0a\u5e1d\u6a21\u5f0f. noHelpFound=\u00a74\u6c92\u6709\u7b26\u5408\u7684\u6307\u4ee4. noHomeSetPlayer=\u00a76\u8a72\u73a9\u5bb6\u9084\u672a\u8a2d\u7f6e\u5bb6 noIgnored=\u00a76\u4f60\u6c92\u6709\u5ffd\u7565\u4efb\u4f55\u4eba\u3002 +noJailsDefined=\u00a76No jails defined. noKitGroup=\u00a74\u4f60\u6c92\u6709\u6b0a\u9650\u4f7f\u7528\u9019\u500b\u5de5\u5177\u7d44. noKitPermission=\u00a74\u4f60\u9700\u8981 \u00a74{0}\u00a74 \u8a31\u53ef\u6b0a\u4f86\u4f7f\u7528\u8a72\u5de5\u5177 noKits=\u00a76\u9084\u6c92\u6709\u53ef\u7372\u5f97\u7684\u5de5\u5177 @@ -363,6 +373,7 @@ onlyDayNight=/time \u547d\u4ee4\u53ea\u6709 day/night \u5169\u500b\u9078\u64c7 onlyPlayers=\u00a74\u53ea\u6709\u904a\u6232\u4e2d\u7684\u73a9\u5bb6\u53ef\u4ee5\u4f7f\u7528 \u00a7c{0}\u00a74\u3002 onlyPlayerSkulls=\u00a74\u4f60\u53ea\u80fd\u8a2d\u5b9a\u73a9\u5bb6\u982d\u9871 (\u00a7c397\:3\u00a74) \u7684\u64c1\u6709\u8005\u3002 onlySunStorm=\u00a74/weather \u547d\u4ee4\u53ea\u6709 sun/storm \u5169\u500b\u9078\u64c7 +openingDisposal=\u00a76Opening disposal menu... orderBalances=\u00a76\u6392\u5e8f {0} \u00a76\u500b\u73a9\u5bb6\u7684\u8cc7\u91d1\u4e2d,\u8acb\u7a0d\u5019\u2026\u2026 oversizedTempban=\u00a74\u4f60\u53ef\u80fd\u6c92\u6709\u5728\u9019\u500b\u6642\u6bb5\u5c01\u7981\u73a9\u5bb6. payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments. @@ -424,6 +435,7 @@ pWeatherSet=\u00a76\u73a9\u5bb6\u00a7c{1}\u00a76\u7684\u5929\u6c23\u88ab\u8a2d\u questionFormat=\u00a72[\u63d0\u554f]\u00a7r {0} radiusTooBig=\u00a74\u7bc4\u570d\u592a\u5927\! \u6700\u5927\u7bc4\u570d\u70ba{0}. readNextPage=\u00a76\u8f38\u5165 \u00a7c/{0} {1} \u00a76\u4f86\u95b1\u8b80\u4e0b\u4e00\u9801 +realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1} recentlyForeverAlone=\u00a74{0} recently went offline. recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76) recipeBadIndex=\u9019\u500b\u7de8\u865f\u6c92\u6709\u5339\u914d\u7684\u5408\u6210\u516c\u5f0f. @@ -472,6 +484,9 @@ signFormatSuccess=\u00a71[{0}] signFormatTemplate=[{0}] signProtectInvalidLocation=\u00a74\u4f60\u4e0d\u5141\u8a31\u5728\u6b64\u653e\u7f6e\u724c\u5b50 similarWarpExist=\u00a74\u4e00\u500b\u540c\u540d\u7684\u5730\u6a19\u5df2\u5b58\u5728 +southEast=SE +south=S +southWest=SW skullChanged=\u00a76\u982d\u9871\u4fee\u6539\u70ba \u00a7c{0}\u00a76\u3002 slimeMalformedSize=\u00a74\u5927\u5c0f\u975e\u6cd5 socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1} @@ -581,6 +596,7 @@ weatherStorm=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u6539\u70ba\u96e8\u96ea weatherStormFor=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u7684\u6539\u70ba\u96e8\u96ea,\u6301\u7e8c {1} \u79d2 weatherSun=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u6539\u70ba\u6674\u5929 weatherSunFor=\u00a76\u4f60\u5c07 {0} \u7684\u5929\u6c23\u7684\u6539\u70ba\u6674\u5929,\u6301\u7e8c {1} \u79d2 +west=W whoisAFK=\u00a76 - \u66ab\u96e2\:\u00a7r {0} whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1}) whoisBanned=\u00a76 - \u5c01\u7981\:\u00a7r {0} @@ -609,4 +625,4 @@ worthSet=\u00a76\u50f9\u683c\u5df2\u8a2d\u7f6e year=\u5e74 years=\u5e74 youAreHealed=\u00a76\u4f60\u5df2\u88ab\u6cbb\u7642 -youHaveNewMail=\u00a76\u4f60\u6709 \u00a7c{0}\u00a76 \u689d\u8a0a\u606f\uff01\u00a7r\u8f38\u5165 \u00a7c/mail read\u00a76 \u4f86\u67e5\u770b \ No newline at end of file +youHaveNewMail=\u00a76\u4f60\u6709 \u00a7c{0}\u00a76 \u689d\u8a0a\u606f\uff01\u00a7r\u8f38\u5165 \u00a7c/mail read\u00a76 \u4f86\u67e5\u770b diff --git a/Essentials/src/net/ess3/api/IEssentials.java b/Essentials/src/net/ess3/api/IEssentials.java index 3946d0f0e..1e76dda17 100644 --- a/Essentials/src/net/ess3/api/IEssentials.java +++ b/Essentials/src/net/ess3/api/IEssentials.java @@ -3,8 +3,12 @@ package net.ess3.api; import net.ess3.nms.PotionMetaProvider; import net.ess3.nms.SpawnEggProvider; +import java.util.Collection; + public interface IEssentials extends com.earth2me.essentials.IEssentials { + Collection getVanishedPlayersNew(); + SpawnEggProvider getSpawnEggProvider(); PotionMetaProvider getPotionMetaProvider(); diff --git a/Essentials/src/net/ess3/api/events/UserWarpEvent.java b/Essentials/src/net/ess3/api/events/UserWarpEvent.java new file mode 100644 index 000000000..5bcafc6f3 --- /dev/null +++ b/Essentials/src/net/ess3/api/events/UserWarpEvent.java @@ -0,0 +1,65 @@ +package net.ess3.api.events; + +import com.earth2me.essentials.Trade; +import net.ess3.api.IUser; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +/** + * Called when the player use the command /warp + */ +public class UserWarpEvent extends Event implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + + private IUser user; + private String warp; + private Trade trade; + private boolean cancelled = false; + + + public UserWarpEvent(IUser user, String warp, Trade trade){ + this.user = user; + this.warp = warp; + this.trade = trade; + } + + public IUser getUser() { + return user; + } + + public String getWarp() { + return warp; + } + + /** + * Getting payment handling information + * @return The payment handling class + */ + public Trade getTrade() { + return trade; + } + + public void setWarp(String warp) { + this.warp = warp; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean b) { + cancelled = b; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index b415ff9a9..e62ce7f0a 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -2,11 +2,12 @@ name: Essentials main: com.earth2me.essentials.Essentials # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://tiny.cc/EssentialsCommands description: Provides an essential, core set of commands for Bukkit. softdepend: [Vault] authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Iaccidentally, drtshock, vemacs, SupaHam, md678685] +api-version: 1.13 commands: afk: description: Marks you as away-from-keyboard. @@ -103,6 +104,10 @@ commands: description: States current depth, relative to sea level. usage: /depth aliases: [edepth,height,eheight] + disposal: + description: Opens a portable disposal menu. + usage: / + aliases: [edisposal,trash,etrash] eco: description: Manages the server economy. usage: / @@ -439,6 +444,10 @@ commands: description: Teleport all online players to another player. usage: / aliases: [etpall] + tpauto: + description: Automatically accept teleportation requests. + usage: / + aliases: [etpauto] tpacancel: description: Cancel all outstanding teleport requests. Specify [player] to cancel requests with them. usage: / [player] @@ -531,3 +540,8 @@ permissions: essentials.gamemode: true essentials.gamemode.others: true essentials.gamemode.all: true + essentials.seen.extra: + default: op + children: + essentials.seen.ip: true + essentials.seen.location: true \ No newline at end of file diff --git a/Essentials/test/com/earth2me/essentials/EconomyTest.java b/Essentials/test/com/earth2me/essentials/EconomyTest.java index ce4be0f08..82c528e7e 100644 --- a/Essentials/test/com/earth2me/essentials/EconomyTest.java +++ b/Essentials/test/com/earth2me/essentials/EconomyTest.java @@ -5,34 +5,33 @@ import com.earth2me.essentials.api.UserDoesNotExistException; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.commands.NoChargeException; -import junit.framework.TestCase; import net.ess3.api.Economy; import org.bukkit.World.Environment; import org.bukkit.command.CommandSender; import org.bukkit.plugin.InvalidDescriptionException; +import org.junit.Assert; import org.junit.Test; import java.io.IOException; -public class EconomyTest extends TestCase { +public class EconomyTest { private final transient Essentials ess; private static final String NPCNAME = "npc1"; private static final String PLAYERNAME = "testPlayer1"; private static final String PLAYERNAME2 = "testPlayer2"; private final FakeServer server; - public EconomyTest(final String testName) { - super(testName); + public EconomyTest() { this.server = new FakeServer(); server.createWorld("testWorld", Environment.NORMAL); ess = new Essentials(server); try { ess.setupForTesting(server); } catch (InvalidDescriptionException ex) { - fail("InvalidDescriptionException"); + Assert.fail("InvalidDescriptionException"); } catch (IOException ex) { - fail("IOException"); + Assert.fail("IOException"); } server.addPlayer(new OfflinePlayer(PLAYERNAME, ess.getServer())); server.addPlayer(new OfflinePlayer(PLAYERNAME2, ess.getServer())); @@ -42,66 +41,63 @@ public class EconomyTest extends TestCase { @Test public void testEconomy() { // test NPC - assertFalse("NPC does not exists", Economy.playerExists(NPCNAME)); - assertTrue("Create NPC", Economy.createNPC(NPCNAME)); - assertTrue("NPC exists", Economy.playerExists(NPCNAME)); - assertNotNull("NPC can be accessed", ess.getOfflineUser(NPCNAME)); + Assert.assertFalse("NPC does not exists", Economy.playerExists(NPCNAME)); + Assert.assertTrue("Create NPC", Economy.createNPC(NPCNAME)); + Assert.assertTrue("NPC exists", Economy.playerExists(NPCNAME)); + Assert.assertNotNull("NPC can be accessed", ess.getOfflineUser(NPCNAME)); try { Economy.removeNPC(NPCNAME); } catch (UserDoesNotExistException ex) { - fail(ex.getMessage()); + Assert.fail(ex.getMessage()); } - assertFalse("NPC can be removed", Economy.playerExists(NPCNAME)); + Assert.assertFalse("NPC can be removed", Economy.playerExists(NPCNAME)); //test Math try { - assertTrue("Player exists", Economy.playerExists(PLAYERNAME)); + Assert.assertTrue("Player exists", Economy.playerExists(PLAYERNAME)); Economy.resetBalance(PLAYERNAME); - assertEquals("Player has no money", 0.0, Economy.getMoney(PLAYERNAME)); + Assert.assertEquals("Player has no money", 0.0, Economy.getMoney(PLAYERNAME), 0); Economy.add(PLAYERNAME, 10.0); - assertEquals("Add money", 10.0, Economy.getMoney(PLAYERNAME)); + Assert.assertEquals("Add money", 10.0, Economy.getMoney(PLAYERNAME),0); Economy.subtract(PLAYERNAME, 5.0); - assertEquals("Subtract money", 5.0, Economy.getMoney(PLAYERNAME)); + Assert.assertEquals("Subtract money", 5.0, Economy.getMoney(PLAYERNAME),0); Economy.multiply(PLAYERNAME, 2.0); - assertEquals("Multiply money", 10.0, Economy.getMoney(PLAYERNAME)); + Assert.assertEquals("Multiply money", 10.0, Economy.getMoney(PLAYERNAME),0); Economy.divide(PLAYERNAME, 2.0); - assertEquals("Divide money", 5.0, Economy.getMoney(PLAYERNAME)); + Assert.assertEquals("Divide money", 5.0, Economy.getMoney(PLAYERNAME),0); Economy.setMoney(PLAYERNAME, 10.0); - assertEquals("Set money", 10.0, Economy.getMoney(PLAYERNAME)); - } catch (NoLoanPermittedException ex) { - fail(ex.getMessage()); - } catch (UserDoesNotExistException ex) { - fail(ex.getMessage()); + Assert.assertEquals("Set money", 10.0, Economy.getMoney(PLAYERNAME),0); + } catch (NoLoanPermittedException | UserDoesNotExistException ex) { + Assert.fail(ex.getMessage()); } //test Format - assertEquals("Format $1,000", "$1,000", Economy.format(1000.0)); - assertEquals("Format $10", "$10", Economy.format(10.0)); - assertEquals("Format $10.10", "$10.10", Economy.format(10.10)); - assertEquals("Format $10.10", "$10.10", Economy.format(10.1000001)); - assertEquals("Format $10.10", "$10.10", Economy.format(10.1099999)); + Assert.assertEquals("Format $1,000", "$1,000", Economy.format(1000.0)); + Assert.assertEquals("Format $10", "$10", Economy.format(10.0)); + Assert.assertEquals("Format $10.10", "$10.10", Economy.format(10.10)); + Assert.assertEquals("Format $10.10", "$10.10", Economy.format(10.1000001)); + Assert.assertEquals("Format $10.10", "$10.10", Economy.format(10.1099999)); //test Exceptions try { - assertTrue("Player exists", Economy.playerExists(PLAYERNAME)); + Assert.assertTrue("Player exists", Economy.playerExists(PLAYERNAME)); Economy.resetBalance(PLAYERNAME); - assertEquals("Reset balance", 0.0, Economy.getMoney(PLAYERNAME)); + Assert.assertEquals("Reset balance", 0.0, Economy.getMoney(PLAYERNAME),0); Economy.subtract(PLAYERNAME, 5.0); - fail("Did not throw exception"); - } catch (NoLoanPermittedException ex) { + Assert.fail("Did not throw exception"); + } catch (NoLoanPermittedException ignored) { } catch (UserDoesNotExistException ex) { - fail(ex.getMessage()); + Assert.fail(ex.getMessage()); } try { Economy.resetBalance("UnknownPlayer"); - fail("Did not throw exception"); + Assert.fail("Did not throw exception"); } catch (NoLoanPermittedException ex) { - fail(ex.getMessage()); - } catch (UserDoesNotExistException ex) { - } + Assert.fail(ex.getMessage()); + } catch (UserDoesNotExistException ignored) {} } private void runCommand(String command, User user, String args) throws Exception { @@ -116,8 +112,7 @@ public class EconomyTest extends TestCase { .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); cmd.setEssentials(ess); cmd.run(server, user, command, null, args); - } catch (NoChargeException ex) { - } + } catch (NoChargeException ignored) {} } @@ -135,16 +130,16 @@ public class EconomyTest extends TestCase { .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); cmd.setEssentials(ess); cmd.run(server, new CommandSource(sender), command, null, args); - } catch (NoChargeException ex) { - } + } catch (NoChargeException ignored) {} } - public void testNegativePayCommand() throws Exception { + @Test + public void testNegativePayCommand() { User user1 = ess.getUser(PLAYERNAME); try { runCommand("pay", user1, PLAYERNAME2 + " -123"); } catch (Exception e) { - assertEquals(I18n.tl("payMustBePositive"), e.getMessage()); + Assert.assertEquals(I18n.tl("payMustBePositive"), e.getMessage()); } } } diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java index 41d50879d..63a08b545 100644 --- a/Essentials/test/com/earth2me/essentials/FakeServer.java +++ b/Essentials/test/com/earth2me/essentials/FakeServer.java @@ -5,10 +5,8 @@ import org.bukkit.*; import org.bukkit.Warning.WarningState; import org.bukkit.World.Environment; import org.bukkit.advancement.Advancement; -import org.bukkit.boss.BarColor; -import org.bukkit.boss.BarFlag; -import org.bukkit.boss.BarStyle; -import org.bukkit.boss.BossBar; +import org.bukkit.block.data.BlockData; +import org.bukkit.boss.*; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.PluginCommand; @@ -24,6 +22,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.generator.ChunkGenerator; import org.bukkit.help.HelpMap; import org.bukkit.inventory.*; +import org.bukkit.loot.LootTable; import org.bukkit.map.MapView; import org.bukkit.permissions.Permissible; import org.bukkit.permissions.Permission; @@ -40,19 +39,19 @@ import org.bukkit.util.CachedServerIcon; import java.awt.image.BufferedImage; import java.io.File; -import java.io.UnsupportedEncodingException; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.Future; +import java.util.function.Consumer; import java.util.logging.Logger; public class FakeServer implements Server { - private List players = new ArrayList(); - private final List worlds = new ArrayList(); - PluginManager pluginManager = new FakePluginManager(); + private List players = new ArrayList<>(); + private final List worlds = new ArrayList<>(); + private PluginManager pluginManager = new FakePluginManager(); - public FakeServer() { + FakeServer() { if (Bukkit.getServer() == null) { Bukkit.setServer(this); } @@ -139,7 +138,7 @@ public class FakeServer implements Server { @Override public List matchPlayer(String string) { - List matches = new ArrayList(); + List matches = new ArrayList<>(); for (Player player : players) { if (player.getName().substring(0, Math.min(player.getName().length(), string.length())).equalsIgnoreCase(string)) { matches.add(player); @@ -206,11 +205,6 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } - @Override - public void cancelAllTasks() { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public boolean isCurrentlyRunning(int i) { throw new UnsupportedOperationException("Not supported yet."); @@ -236,6 +230,11 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public void runTask(Plugin plugin, Consumer task) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public BukkitTask runTask(Plugin plugin, BukkitRunnable bukkitRunnable) throws IllegalArgumentException { return null; @@ -247,6 +246,11 @@ public class FakeServer implements Server { return null; } + @Override + public void runTaskAsynchronously(Plugin plugin, Consumer task) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public BukkitTask runTaskAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable) throws IllegalArgumentException { return null; @@ -257,6 +261,11 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public void runTaskLater(Plugin plugin, Consumer task, long delay) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public BukkitTask runTaskLater(Plugin plugin, BukkitRunnable bukkitRunnable, long l) throws IllegalArgumentException { return null; @@ -268,6 +277,11 @@ public class FakeServer implements Server { return null; } + @Override + public void runTaskLaterAsynchronously(Plugin plugin, Consumer task, long delay) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public BukkitTask runTaskLaterAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable, long l) throws IllegalArgumentException { return null; @@ -278,6 +292,11 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public void runTaskTimer(Plugin plugin, Consumer task, long delay, long period) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public BukkitTask runTaskTimer(Plugin plugin, BukkitRunnable bukkitRunnable, long l, long l1) throws IllegalArgumentException { return null; @@ -288,6 +307,11 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public void runTaskTimerAsynchronously(Plugin plugin, Consumer task, long delay, long period) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public BukkitTask runTaskTimerAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable, long l, long l1) throws IllegalArgumentException { return null; @@ -365,12 +389,12 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } - public void addPlayer(Player base1) { + void addPlayer(Player base1) { players.add(base1); pluginManager.callEvent(new PlayerJoinEvent(base1, null)); } - public OfflinePlayer createPlayer(String name) { + OfflinePlayer createPlayer(String name) { OfflinePlayer player = new OfflinePlayer(name, this); player.setLocation(new Location(worlds.get(0), 0, 0, 0, 0, 0)); return player; @@ -420,6 +444,10 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + public MapView getMap(int id) { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override public int getViewDistance() { throw new UnsupportedOperationException("Not supported yet."); @@ -436,12 +464,17 @@ public class FakeServer implements Server { } @Override - public MapView getMap(short s) { + public MapView createMap(World world) { throw new UnsupportedOperationException("Not supported yet."); } @Override - public MapView createMap(World world) { + public ItemStack createExplorerMap(World world, Location location, StructureType structureType) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public ItemStack createExplorerMap(World world, Location location, StructureType structureType, int radius, boolean findUnexplored) { throw new UnsupportedOperationException("Not supported yet."); } @@ -467,7 +500,12 @@ public class FakeServer implements Server { @Override public Player getPlayerExact(String string) { - throw new UnsupportedOperationException("Not supported yet."); + for (Player player : players) { + if (player.getName().equals(string)) { + return player; + } + } + return null; } @Override @@ -554,14 +592,15 @@ public class FakeServer implements Server { @Override public UUID getUniqueId() { - if (string == "testPlayer1") { - return UUID.fromString("3c9ebe1a-9098-43fd-bc0c-a369b76817ba"); - } else if (string == "testPlayer2") { - return UUID.fromString("2c9ebe1a-9098-43fd-bc0c-a369b76817ba"); - } else if (string == "npc1") { - return null; + switch (string) { + case "testPlayer1": + return UUID.fromString("3c9ebe1a-9098-43fd-bc0c-a369b76817ba"); + case "testPlayer2": + return UUID.fromString("2c9ebe1a-9098-43fd-bc0c-a369b76817ba"); + case "npc1": + return null; } - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + throw new UnsupportedOperationException("Not supported yet."); } }; } @@ -719,7 +758,7 @@ public class FakeServer implements Server { } @Override - public Set getOperators() { + public Set getOperators() { throw new UnsupportedOperationException("Not supported yet."); } @@ -884,12 +923,12 @@ public class FakeServer implements Server { } @Override - public CachedServerIcon loadServerIcon(File file) throws Exception { + public CachedServerIcon loadServerIcon(File file) { throw new UnsupportedOperationException("Not supported yet."); } @Override - public CachedServerIcon loadServerIcon(BufferedImage bufferedImage) throws Exception { + public CachedServerIcon loadServerIcon(BufferedImage bufferedImage) { throw new UnsupportedOperationException("Not supported yet."); } @@ -914,6 +953,27 @@ public class FakeServer implements Server { } @Override + public KeyedBossBar createBossBar(NamespacedKey key, String title, BarColor color, BarStyle style, BarFlag... flags) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Iterator getBossBars() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public KeyedBossBar getBossBar(NamespacedKey key) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean removeBossBar(NamespacedKey key) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + @SuppressWarnings("deprecation") public UnsafeValues getUnsafe() { throw new UnsupportedOperationException("Not supported yet."); } @@ -969,8 +1029,37 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public BlockData createBlockData(Material material) { + return null; + } + + @Override + public BlockData createBlockData(Material material, Consumer consumer) { + return null; + } + + @Override + public BlockData createBlockData(String data) throws IllegalArgumentException { + return null; + } + + @Override + public BlockData createBlockData(Material material, String data) throws IllegalArgumentException { + return null; + } + + @Override + public Tag getTag(String s, NamespacedKey namespacedKey, Class aClass) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public Iterable> getTags(String registry, Class clazz) { + throw new UnsupportedOperationException("Not supported yet."); + } + class FakePluginManager implements PluginManager { - ArrayList listeners = new ArrayList(); + ArrayList listeners = new ArrayList<>(); @Override public void registerInterface(Class loader) throws IllegalArgumentException { @@ -998,7 +1087,7 @@ public class FakeServer implements Server { } @Override - public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException { + public Plugin loadPlugin(File file) throws UnknownDependencyException { throw new UnsupportedOperationException("Not supported yet."); } @@ -1130,4 +1219,14 @@ public class FakeServer implements Server { } } + @Override + public LootTable getLootTable(NamespacedKey arg0) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public List selectEntities(CommandSender sender, String selector) throws IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + } diff --git a/Essentials/test/com/earth2me/essentials/MessagingTest.java b/Essentials/test/com/earth2me/essentials/MessagingTest.java index 4d8dcc387..b90b9ea21 100644 --- a/Essentials/test/com/earth2me/essentials/MessagingTest.java +++ b/Essentials/test/com/earth2me/essentials/MessagingTest.java @@ -49,8 +49,7 @@ public class MessagingTest { .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); cmd.setEssentials(ess); cmd.run(server, user, command, null, args); - } catch (NoChargeException ex) { - } + } catch (NoChargeException ignored) {} } @@ -68,8 +67,7 @@ public class MessagingTest { .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); cmd.setEssentials(ess); cmd.run(server, new CommandSource(sender), command, null, args); - } catch (NoChargeException ex) { - } + } catch (NoChargeException ignored) {} } @Test(expected = Exception.class) // I really don't like this, but see note below about console reply diff --git a/Essentials/test/com/earth2me/essentials/StorageTest.java b/Essentials/test/com/earth2me/essentials/StorageTest.java index 8dd82ce50..3a10abcab 100644 --- a/Essentials/test/com/earth2me/essentials/StorageTest.java +++ b/Essentials/test/com/earth2me/essentials/StorageTest.java @@ -1,19 +1,19 @@ package com.earth2me.essentials; -import junit.framework.TestCase; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.World.Environment; import org.bukkit.plugin.InvalidDescriptionException; +import org.junit.Assert; import org.junit.Test; import java.io.IOException; -public class StorageTest extends TestCase { - Essentials ess; - FakeServer server; - World world; +public class StorageTest { + private Essentials ess; + private FakeServer server; + private World world; public StorageTest() { server = new FakeServer(); @@ -22,9 +22,9 @@ public class StorageTest extends TestCase { try { ess.setupForTesting(server); } catch (InvalidDescriptionException ex) { - fail("InvalidDescriptionException"); + Assert.fail("InvalidDescriptionException"); } catch (IOException ex) { - fail("IOException"); + Assert.fail("IOException"); } } diff --git a/Essentials/test/com/earth2me/essentials/ToggleTest.java b/Essentials/test/com/earth2me/essentials/ToggleTest.java index 330ac7ccb..7250ce566 100644 --- a/Essentials/test/com/earth2me/essentials/ToggleTest.java +++ b/Essentials/test/com/earth2me/essentials/ToggleTest.java @@ -39,8 +39,7 @@ public class ToggleTest extends TestCase { cmd = (IEssentialsCommand) Essentials.class.getClassLoader().loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); cmd.setEssentials(ess); cmd.run(server, user, command, null, args); - } catch (NoChargeException ex) { - } + } catch (NoChargeException ignored) {} } @@ -53,8 +52,7 @@ public class ToggleTest extends TestCase { cmd = (IEssentialsCommand) Essentials.class.getClassLoader().loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); cmd.setEssentials(ess); cmd.run(server, new CommandSource(sender), command, null, args); - } catch (NoChargeException ex) { - } + } catch (NoChargeException ignored) {} } diff --git a/Essentials/test/com/earth2me/essentials/UtilTest.java b/Essentials/test/com/earth2me/essentials/UtilTest.java index 9bf4717ef..cd905f9ad 100644 --- a/Essentials/test/com/earth2me/essentials/UtilTest.java +++ b/Essentials/test/com/earth2me/essentials/UtilTest.java @@ -2,6 +2,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.LocationUtil; +import com.earth2me.essentials.utils.VersionUtil; import junit.framework.TestCase; import org.bukkit.World.Environment; import org.bukkit.plugin.InvalidDescriptionException; @@ -14,13 +15,11 @@ import java.util.Set; public class UtilTest extends TestCase { - private final Essentials ess; - private final FakeServer server; public UtilTest() { - server = new FakeServer(); + FakeServer server = new FakeServer(); server.createWorld("testWorld", Environment.NORMAL); - ess = new Essentials(server); + Essentials ess = new Essentials(server); try { ess.setupForTesting(server); } catch (InvalidDescriptionException ex) { @@ -31,7 +30,7 @@ public class UtilTest extends TestCase { } public void testSafeLocation() { - Set testSet = new HashSet(); + Set testSet = new HashSet<>(); int count = 0; int x, y, z, origX, origY, origZ; x = y = z = origX = origY = origZ = 0; @@ -62,132 +61,146 @@ public class UtilTest extends TestCase { public void testFDDfuture() { Calendar a, b; - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 10, 0, 1); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 1); assertEquals("1 second", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 10, 0, 2); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 2); assertEquals("2 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 10, 0, 3); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 3); assertEquals("3 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 10, 1, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 1, 0); assertEquals("1 minute", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 10, 2, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 2, 0); assertEquals("2 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 10, 3, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 3, 0); assertEquals("3 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 11, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 11, 0, 0); assertEquals("1 hour", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 12, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 12, 0, 0); assertEquals("2 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 13, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 13, 0, 0); assertEquals("3 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 2, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 2, 10, 0, 0); assertEquals("1 day", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 3, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 3, 10, 0, 0); assertEquals("2 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 4, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 4, 10, 0, 0); assertEquals("3 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 2, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.MARCH, 1, 10, 0, 0); assertEquals("1 month", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 3, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.APRIL, 1, 10, 0, 0); assertEquals("2 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 4, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.MAY, 1, 10, 0, 0); assertEquals("3 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2011, 1, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2011, Calendar.FEBRUARY, 1, 10, 0, 0); assertEquals("1 year", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2012, 1, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2012, Calendar.FEBRUARY, 1, 10, 0, 0); assertEquals("2 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2013, 1, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2013, Calendar.FEBRUARY, 1, 10, 0, 0); assertEquals("3 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2011, 4, 5, 23, 38, 12); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2011, Calendar.MAY, 5, 23, 38, 12); assertEquals("1 year 3 months 4 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 9, 17, 23, 45, 45); - b = new GregorianCalendar(2015, 3, 7, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.OCTOBER, 17, 23, 45, 45); + b = new GregorianCalendar(2015, Calendar.APRIL, 7, 10, 0, 0); assertEquals("4 years 5 months 20 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2011, 4, 31, 10, 0, 0); - b = new GregorianCalendar(2011, 4, 31, 10, 5, 0); + a = new GregorianCalendar(2011, Calendar.MAY, 31, 10, 0, 0); + b = new GregorianCalendar(2011, Calendar.MAY, 31, 10, 5, 0); assertEquals("5 minutes", DateUtil.formatDateDiff(a, b)); } public void testFDDpast() { Calendar a, b; - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 59, 59); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 59); assertEquals("1 second", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 59, 58); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 58); assertEquals("2 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 59, 57); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 57); assertEquals("3 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 59, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 0); assertEquals("1 minute", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 58, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 58, 0); assertEquals("2 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 57, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 57, 0); assertEquals("3 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 9, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 0, 0); assertEquals("1 hour", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 8, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 8, 0, 0); assertEquals("2 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 1, 7, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 7, 0, 0); assertEquals("3 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 5, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 4, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 5, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 4, 10, 0, 0); assertEquals("1 day", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 5, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 3, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 5, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 3, 10, 0, 0); assertEquals("2 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 5, 10, 0, 0); - b = new GregorianCalendar(2010, 1, 2, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 5, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.FEBRUARY, 2, 10, 0, 0); assertEquals("3 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 5, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 4, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.JUNE, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.MAY, 1, 10, 0, 0); assertEquals("1 month", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 5, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 3, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.JUNE, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.APRIL, 1, 10, 0, 0); assertEquals("2 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 5, 1, 10, 0, 0); - b = new GregorianCalendar(2010, 2, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.JUNE, 1, 10, 0, 0); + b = new GregorianCalendar(2010, Calendar.MARCH, 1, 10, 0, 0); assertEquals("3 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2009, 1, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2009, Calendar.FEBRUARY, 1, 10, 0, 0); assertEquals("1 year", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2008, 1, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2008, Calendar.FEBRUARY, 1, 10, 0, 0); assertEquals("2 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2007, 1, 1, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2007, Calendar.FEBRUARY, 1, 10, 0, 0); assertEquals("3 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 1, 1, 10, 0, 0); - b = new GregorianCalendar(2009, 4, 5, 23, 38, 12); + a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); + b = new GregorianCalendar(2009, Calendar.MAY, 5, 23, 38, 12); assertEquals("8 months 26 days 10 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, 9, 17, 23, 45, 45); - b = new GregorianCalendar(2000, 3, 7, 10, 0, 0); + a = new GregorianCalendar(2010, Calendar.OCTOBER, 17, 23, 45, 45); + b = new GregorianCalendar(2000, Calendar.APRIL, 7, 10, 0, 0); assertEquals("10 years 6 months 10 days", DateUtil.formatDateDiff(a, b)); } + + public void testVer() { + VersionUtil.BukkitVersion v; + v = VersionUtil.BukkitVersion.fromString("1.13.2-R0.1"); + assertEquals(v.getMajor(), 1); + assertEquals(v.getMinor(), 13); + assertEquals(v.getPatch(), 2); + assertEquals(v.getRevision(), 0.1); + v = VersionUtil.BukkitVersion.fromString("1.9-R1.4"); + assertEquals(v.getMajor(), 1); + assertEquals(v.getMinor(), 9); + assertEquals(v.getPatch(), 0); + assertEquals(v.getRevision(), 1.4); + } } diff --git a/EssentialsAntiBuild/pom.xml b/EssentialsAntiBuild/pom.xml index 17a4bedd7..810d44164 100644 --- a/EssentialsAntiBuild/pom.xml +++ b/EssentialsAntiBuild/pom.xml @@ -6,17 +6,14 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsXAntiBuild - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - + + EssentialsXAntiBuild-${full.version} + diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java index 41378ad3a..59aa5828b 100644 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java +++ b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java @@ -1,5 +1,7 @@ package com.earth2me.essentials.antibuild; +import com.earth2me.essentials.metrics.Metrics; +import org.bukkit.Material; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -10,9 +12,10 @@ import java.util.Map; public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild { - private final transient Map settingsBoolean = new EnumMap(AntiBuildConfig.class); - private final transient Map> settingsList = new EnumMap>(AntiBuildConfig.class); + private final transient Map settingsBoolean = new EnumMap<>(AntiBuildConfig.class); + private final transient Map> settingsList = new EnumMap<>(AntiBuildConfig.class); private transient EssentialsConnect ess = null; + private transient Metrics metrics = null; @Override public void onEnable() { @@ -25,12 +28,16 @@ public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild { final EssentialsAntiBuildListener blockListener = new EssentialsAntiBuildListener(this); pm.registerEvents(blockListener, this); + + if (metrics == null) { + metrics = new Metrics(this); + } } @Override - public boolean checkProtectionItems(final AntiBuildConfig list, final int id) { - final List itemList = settingsList.get(list); - return itemList != null && !itemList.isEmpty() && itemList.contains(id); + public boolean checkProtectionItems(final AntiBuildConfig list, final Material mat) { + final List itemList = settingsList.get(list); + return itemList != null && !itemList.isEmpty() && itemList.contains(mat); } @Override @@ -44,7 +51,7 @@ public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild { } @Override - public Map> getSettingsList() { + public Map> getSettingsList() { return settingsList; } diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java index f60ec5854..a9cff948f 100644 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java +++ b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.antibuild; import com.earth2me.essentials.User; +import com.earth2me.essentials.utils.VersionUtil; import net.ess3.api.IEssentials; import org.bukkit.Material; import org.bukkit.block.Block; @@ -12,6 +13,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.*; +import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.player.PlayerDropItemEvent; @@ -20,46 +22,67 @@ import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.inventory.ItemStack; import java.util.logging.Level; +import java.util.logging.Logger; + import static com.earth2me.essentials.I18n.tl; public class EssentialsAntiBuildListener implements Listener { + private static final Logger logger = Logger.getLogger("EssentialsAntiBuild"); final private transient IAntiBuild prot; final private transient IEssentials ess; - public EssentialsAntiBuildListener(final IAntiBuild parent) { + EssentialsAntiBuildListener(final IAntiBuild parent) { this.prot = parent; this.ess = prot.getEssentialsConnect().getEssentials(); + + if (isEntityPickupEvent()) { + ess.getServer().getPluginManager().registerEvents(new EntityPickupItemListener(), prot); + } else { + ess.getServer().getPluginManager().registerEvents(new PlayerPickupItemListener(), prot); + } + } + + private static boolean isEntityPickupEvent() { + try { + Class.forName("org.bukkit.event.entity.EntityPickupItemEvent"); + return true; + } catch (ClassNotFoundException ignored) { + return false; + } } private boolean metaPermCheck(final User user, final String action, final Block block) { if (block == null) { if (ess.getSettings().isDebug()) { - ess.getLogger().log(Level.INFO, "AntiBuild permission check failed, invalid block."); + logger.log(Level.INFO, "AntiBuild permission check failed, invalid block."); } return false; } - return metaPermCheck(user, action, block.getTypeId(), block.getData()); + return metaPermCheck(user, action, block.getType(), block.getData()); } - private boolean metaPermCheck(final User user, final String action, final int blockId) { - final String blockPerm = "essentials.build." + action + "." + blockId; + public boolean metaPermCheck(final User user, final String action, final Material material) { + final String blockPerm = "essentials.build." + action + "." + material; return user.isAuthorized(blockPerm); } - private boolean metaPermCheck(final User user, final String action, final int blockId, final short data) { - final String blockPerm = "essentials.build." + action + "." + blockId; + private boolean metaPermCheck(final User user, final String action, final Material material, final short data) { + final String blockPerm = "essentials.build." + action + "." + material; final String dataPerm = blockPerm + ":" + data; - if (user.getBase().isPermissionSet(dataPerm)) { - return user.isAuthorized(dataPerm); - } else { - if (ess.getSettings().isDebug()) { - ess.getLogger().log(Level.INFO, "DataValue perm on " + user.getName() + " is not directly set: " + dataPerm); + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) { + if (user.getBase().isPermissionSet(dataPerm)) { + return user.isAuthorized(dataPerm); + } else { + if (ess.getSettings().isDebug()) { + logger.log(Level.INFO, "DataValue perm on " + user.getName() + " is not directly set: " + dataPerm); + } } } + return user.isAuthorized(blockPerm); } @@ -67,7 +90,6 @@ public class EssentialsAntiBuildListener implements Listener { public void onBlockPlace(final BlockPlaceEvent event) { final User user = ess.getUser(event.getPlayer()); final Block block = event.getBlockPlaced(); - final int typeId = block.getTypeId(); final Material type = block.getType(); if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "place", block)) { @@ -78,7 +100,7 @@ public class EssentialsAntiBuildListener implements Listener { return; } - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_placement, typeId) && !user.isAuthorized("essentials.protect.exemptplacement")) { + if (prot.checkProtectionItems(AntiBuildConfig.blacklist_placement, type) && !user.isAuthorized("essentials.protect.exemptplacement")) { if (ess.getSettings().warnOnBuildDisallow()) { user.sendMessage(tl("antiBuildPlace", type.toString())); } @@ -86,7 +108,7 @@ public class EssentialsAntiBuildListener implements Listener { return; } - if (prot.checkProtectionItems(AntiBuildConfig.alert_on_placement, typeId) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { + if (prot.checkProtectionItems(AntiBuildConfig.alert_on_placement, type) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { prot.getEssentialsConnect().alert(user, type.toString(), tl("alertPlaced")); } } @@ -95,7 +117,6 @@ public class EssentialsAntiBuildListener implements Listener { public void onBlockBreak(final BlockBreakEvent event) { final User user = ess.getUser(event.getPlayer()); final Block block = event.getBlock(); - final int typeId = block.getTypeId(); final Material type = block.getType(); if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "break", block)) { @@ -106,7 +127,7 @@ public class EssentialsAntiBuildListener implements Listener { return; } - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_break, typeId) && !user.isAuthorized("essentials.protect.exemptbreak")) { + if (prot.checkProtectionItems(AntiBuildConfig.blacklist_break, type) && !user.isAuthorized("essentials.protect.exemptbreak")) { if (ess.getSettings().warnOnBuildDisallow()) { user.sendMessage(tl("antiBuildBreak", type.toString())); } @@ -114,7 +135,7 @@ public class EssentialsAntiBuildListener implements Listener { return; } - if (prot.checkProtectionItems(AntiBuildConfig.alert_on_break, typeId) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { + if (prot.checkProtectionItems(AntiBuildConfig.alert_on_break, type) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { prot.getEssentialsConnect().alert(user, type.toString(), tl("alertBroke")); } } @@ -127,12 +148,12 @@ public class EssentialsAntiBuildListener implements Listener { final EntityType type = event.getEntity().getType(); final boolean warn = ess.getSettings().warnOnBuildDisallow(); if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (type == EntityType.PAINTING && !metaPermCheck(user, "break", Material.PAINTING.getId())) { + if (type == EntityType.PAINTING && !metaPermCheck(user, "break", Material.PAINTING)) { if (warn) { user.sendMessage(tl("antiBuildBreak", Material.PAINTING.toString())); } event.setCancelled(true); - } else if (type == EntityType.ITEM_FRAME && !metaPermCheck(user, "break", Material.ITEM_FRAME.getId())) { + } else if (type == EntityType.ITEM_FRAME && !metaPermCheck(user, "break", Material.ITEM_FRAME)) { if (warn) { user.sendMessage(tl("antiBuildBreak", Material.ITEM_FRAME.toString())); } @@ -145,7 +166,7 @@ public class EssentialsAntiBuildListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockPistonExtend(final BlockPistonExtendEvent event) { for (Block block : event.getBlocks()) { - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getTypeId())) { + if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getType())) { event.setCancelled(true); return; } @@ -158,7 +179,7 @@ public class EssentialsAntiBuildListener implements Listener { return; } final Block block = event.getBlock(); - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getTypeId())) { + if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getType())) { event.setCancelled(true); } } @@ -169,7 +190,7 @@ public class EssentialsAntiBuildListener implements Listener { final User user = ess.getUser(event.getPlayer()); final ItemStack item = event.getItem(); - if (item != null && prot.checkProtectionItems(AntiBuildConfig.blacklist_usage, item.getTypeId()) && !user.isAuthorized("essentials.protect.exemptusage")) { + if (item != null && prot.checkProtectionItems(AntiBuildConfig.blacklist_usage, item.getType()) && !user.isAuthorized("essentials.protect.exemptusage")) { if (ess.getSettings().warnOnBuildDisallow()) { user.sendMessage(tl("antiBuildUse", item.getType().toString())); } @@ -177,12 +198,12 @@ public class EssentialsAntiBuildListener implements Listener { return; } - if (item != null && prot.checkProtectionItems(AntiBuildConfig.alert_on_use, item.getTypeId()) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { + if (item != null && prot.checkProtectionItems(AntiBuildConfig.alert_on_use, item.getType()) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { prot.getEssentialsConnect().alert(user, item.getType().toString(), tl("alertUsed")); } if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (event.hasItem() && !metaPermCheck(user, "interact", item.getTypeId(), item.getDurability())) { + if (event.hasItem() && !metaPermCheck(user, "interact", item.getType(), item.getDurability())) { event.setCancelled(true); if (ess.getSettings().warnOnBuildDisallow()) { user.sendMessage(tl("antiBuildUse", item.getType().toString())); @@ -207,7 +228,7 @@ public class EssentialsAntiBuildListener implements Listener { final ItemStack item = event.getRecipe().getResult(); if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "craft", item.getTypeId(), item.getDurability())) { + if (!metaPermCheck(user, "craft", item.getType(), item.getDurability())) { event.setCancelled(true); if (ess.getSettings().warnOnBuildDisallow()) { user.sendMessage(tl("antiBuildCraft", item.getType().toString())); @@ -217,20 +238,6 @@ public class EssentialsAntiBuildListener implements Listener { } } - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerPickupItem(PlayerPickupItemEvent event) { - - final User user = ess.getUser(event.getPlayer()); - final ItemStack item = event.getItem().getItemStack(); - - if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "pickup", item.getTypeId(), item.getDurability())) { - event.setCancelled(true); - event.getItem().setPickupDelay(50); - } - } - } - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onPlayerDropItem(final PlayerDropItemEvent event) { @@ -238,7 +245,7 @@ public class EssentialsAntiBuildListener implements Listener { final ItemStack item = event.getItemDrop().getItemStack(); if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "drop", item.getTypeId(), item.getDurability())) { + if (!metaPermCheck(user, "drop", item.getType(), item.getDurability())) { event.setCancelled(true); user.getBase().updateInventory(); if (ess.getSettings().warnOnBuildDisallow()) { @@ -251,8 +258,41 @@ public class EssentialsAntiBuildListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockDispense(final BlockDispenseEvent event) { final ItemStack item = event.getItem(); - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_dispenser, item.getTypeId())) { + if (prot.checkProtectionItems(AntiBuildConfig.blacklist_dispenser, item.getType())) { event.setCancelled(true); } } + + private class EntityPickupItemListener implements Listener { + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerPickupItem(EntityPickupItemEvent event) { + if (!(event.getEntity() instanceof Player)) return; + + final User user = ess.getUser((Player) event.getEntity()); + final ItemStack item = event.getItem().getItemStack(); + + if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { + if (!metaPermCheck(user, "pickup", item.getType(), item.getDurability())) { + event.setCancelled(true); + event.getItem().setPickupDelay(50); + } + } + } + } + + private class PlayerPickupItemListener implements Listener { + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerPickupItem(PlayerPickupItemEvent event) { + + final User user = ess.getUser(event.getPlayer()); + final ItemStack item = event.getItem().getItemStack(); + + if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { + if (!metaPermCheck(user, "pickup", item.getType(), item.getDurability())) { + event.setCancelled(true); + event.getItem().setPickupDelay(50); + } + } + } + } } diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java index c2a8f7a2d..41de89449 100644 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java +++ b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java @@ -13,14 +13,14 @@ import java.util.logging.Logger; import static com.earth2me.essentials.I18n.tl; -public class EssentialsConnect { - private static final Logger LOGGER = Logger.getLogger("Minecraft"); +class EssentialsConnect { + private static final Logger logger = Logger.getLogger("EssentialsAntiBuild"); private final transient IEssentials ess; private final transient IAntiBuild protect; - public EssentialsConnect(Plugin essPlugin, Plugin essProtect) { + EssentialsConnect(Plugin essPlugin, Plugin essProtect) { if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion())) { - LOGGER.log(Level.WARNING, tl("versionMismatchAll")); + logger.log(Level.WARNING, tl("versionMismatchAll")); } ess = (IEssentials) essPlugin; protect = (IAntiBuild) essProtect; @@ -29,17 +29,14 @@ public class EssentialsConnect { ess.addReloadListener(pr); } - public void onDisable() { - } - - public IEssentials getEssentials() { + IEssentials getEssentials() { return ess; } - public void alert(final User user, final String item, final String type) { + void alert(final User user, final String item, final String type) { final Location loc = user.getLocation(); final String warnMessage = tl("alertFormat", user.getName(), type, item, loc.getWorld().getName() + "," + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ()); - LOGGER.log(Level.WARNING, warnMessage); + logger.log(Level.WARNING, warnMessage); for (Player p : ess.getServer().getOnlinePlayers()) { final User alertUser = ess.getUser(p); if (alertUser.isAuthorized("essentials.protect.alerts")) { @@ -48,7 +45,6 @@ public class EssentialsConnect { } } - private class AntiBuildReloader implements IConf { @Override public void reloadConfig() { diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java index bfb8facd3..cb19d75de 100644 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java +++ b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.antibuild; +import org.bukkit.Material; import org.bukkit.plugin.Plugin; import java.util.List; @@ -7,7 +8,7 @@ import java.util.Map; public interface IAntiBuild extends Plugin { - boolean checkProtectionItems(final AntiBuildConfig list, final int id); + boolean checkProtectionItems(final AntiBuildConfig list, final Material mat); boolean getSettingBool(final AntiBuildConfig protectConfig); @@ -15,5 +16,5 @@ public interface IAntiBuild extends Plugin { Map getSettingsBoolean(); - Map> getSettingsList(); + Map> getSettingsList(); } diff --git a/EssentialsAntiBuild/src/plugin.yml b/EssentialsAntiBuild/src/plugin.yml index 46ab53bc3..7ab7b3f01 100644 --- a/EssentialsAntiBuild/src/plugin.yml +++ b/EssentialsAntiBuild/src/plugin.yml @@ -2,8 +2,9 @@ name: EssentialsAntiBuild main: com.earth2me.essentials.antibuild.EssentialsAntiBuild # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://tiny.cc/EssentialsCommands description: Provides build protection. authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, Iaccidentally] depend: [Essentials] +api-version: 1.13 diff --git a/EssentialsChat/pom.xml b/EssentialsChat/pom.xml index 75d59c5e5..ace71acda 100644 --- a/EssentialsChat/pom.xml +++ b/EssentialsChat/pom.xml @@ -6,17 +6,14 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsXChat - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - + + EssentialsXChat-${full.version} + diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java b/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java index d82cbb63f..b1bab89f1 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java @@ -5,7 +5,7 @@ import com.earth2me.essentials.User; import net.ess3.api.IEssentials; -public class ChatStore { +class ChatStore { private final User user; private final String type; private final Trade charge; @@ -17,27 +17,27 @@ public class ChatStore { this.charge = new Trade(getLongType(), ess); } - public User getUser() { + User getUser() { return user; } - public Trade getCharge() { + Trade getCharge() { return charge; } - public String getType() { + String getType() { return type; } - public final String getLongType() { + final String getLongType() { return type.length() == 0 ? "chat" : "chat-" + type; } - public long getRadius() { + long getRadius() { return radius; } - public void setRadius(long radius) { + void setRadius(long radius) { this.radius = radius; } } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java index 4374f56cd..d9c273941 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.chat; +import com.earth2me.essentials.metrics.Metrics; import net.ess3.api.IEssentials; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.plugin.PluginManager; @@ -9,27 +10,27 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; -import java.util.logging.Logger; import static com.earth2me.essentials.I18n.tl; public class EssentialsChat extends JavaPlugin { - private static final Logger LOGGER = Logger.getLogger("Minecraft"); + + private transient Metrics metrics = null; @Override public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); final IEssentials ess = (IEssentials) pluginManager.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - LOGGER.log(Level.WARNING, tl("versionMismatchAll")); + getLogger().log(Level.WARNING, tl("versionMismatchAll")); } if (!ess.isEnabled()) { this.setEnabled(false); return; } - final Map chatStore = Collections.synchronizedMap(new HashMap()); + final Map chatStore = Collections.synchronizedMap(new HashMap<>()); final EssentialsChatPlayerListenerLowest playerListenerLowest = new EssentialsChatPlayerListenerLowest(getServer(), ess, chatStore); final EssentialsChatPlayerListenerNormal playerListenerNormal = new EssentialsChatPlayerListenerNormal(getServer(), ess, chatStore); @@ -38,5 +39,9 @@ public class EssentialsChat extends JavaPlugin { pluginManager.registerEvents(playerListenerNormal, this); pluginManager.registerEvents(playerListenerHighest, this); + if (metrics == null) { + metrics = new Metrics(this); + } } + } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java index 2526e8b60..38cf0e811 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java @@ -13,12 +13,12 @@ import java.util.logging.Logger; public abstract class EssentialsChatPlayer implements Listener { - protected static final Logger logger = Logger.getLogger("Minecraft"); - protected transient IEssentials ess; - protected final transient Server server; - protected final transient Map chatStorage; + static final Logger logger = Logger.getLogger("EssentialsChat"); + transient IEssentials ess; + final transient Server server; + private final transient Map chatStorage; - public EssentialsChatPlayer(final Server server, final IEssentials ess, final Map chatStorage) { + EssentialsChatPlayer(final Server server, final IEssentials ess, final Map chatStorage) { this.ess = ess; this.server = server; this.chatStorage = chatStorage; @@ -26,11 +26,11 @@ public abstract class EssentialsChatPlayer implements Listener { public abstract void onPlayerChat(final AsyncPlayerChatEvent event); - public boolean isAborted(final AsyncPlayerChatEvent event) { + boolean isAborted(final AsyncPlayerChatEvent event) { return event.isCancelled(); } - public String getChatType(final String message) { + String getChatType(final String message) { if (message.length() == 0) { //Ignore empty chat events generated by plugins return ""; @@ -46,23 +46,23 @@ public abstract class EssentialsChatPlayer implements Listener { } } - public ChatStore getChatStore(final AsyncPlayerChatEvent event) { + ChatStore getChatStore(final AsyncPlayerChatEvent event) { return chatStorage.get(event); } - public void setChatStore(final AsyncPlayerChatEvent event, final ChatStore chatStore) { + void setChatStore(final AsyncPlayerChatEvent event, final ChatStore chatStore) { chatStorage.put(event, chatStore); } - public ChatStore delChatStore(final AsyncPlayerChatEvent event) { + ChatStore delChatStore(final AsyncPlayerChatEvent event) { return chatStorage.remove(event); } - protected void charge(final User user, final Trade charge) throws ChargeException { + private void charge(final User user, final Trade charge) throws ChargeException { charge.charge(user); } - protected boolean charge(final AsyncPlayerChatEvent event, final ChatStore chatStore) { + boolean charge(final AsyncPlayerChatEvent event, final ChatStore chatStore) { try { charge(chatStore.getUser(), chatStore.getCharge()); } catch (ChargeException e) { diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java index ce62c2bc3..65845e560 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java @@ -10,7 +10,7 @@ import java.util.Map; public class EssentialsChatPlayerListenerHighest extends EssentialsChatPlayer { - public EssentialsChatPlayerListenerHighest(final Server server, final IEssentials ess, final Map chatStorage) { + EssentialsChatPlayerListenerHighest(final Server server, final IEssentials ess, final Map chatStorage) { super(server, ess, chatStorage); } @@ -22,9 +22,7 @@ public class EssentialsChatPlayerListenerHighest extends EssentialsChatPlayer { return; } - /** - * This file should handle charging the user for the action before returning control back - */ + // This file should handle charging the user for the action before returning control back charge(event, chatStore); } } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java index a3df5215c..1969315c0 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java @@ -4,6 +4,7 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.IEssentials; import org.bukkit.Server; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.AsyncPlayerChatEvent; @@ -14,7 +15,7 @@ import java.util.Map; public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer { - public EssentialsChatPlayerListenerLowest(final Server server, final IEssentials ess, final Map chatStorage) { + EssentialsChatPlayerListenerLowest(final Server server, final IEssentials ess, final Map chatStorage) { super(server, ess, chatStorage); } @@ -35,13 +36,15 @@ public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer { final ChatStore chatStore = new ChatStore(ess, user, getChatType(event.getMessage())); setChatStore(event, chatStore); - /** - * This listener should apply the general chat formatting only...then return control back the event handler - */ + // This listener should apply the general chat formatting only...then return control back the event handler event.setMessage(FormatUtil.formatMessage(user, "essentials.chat", event.getMessage())); String group = user.getGroup(); String world = user.getWorld().getName(); - Team team = user.getBase().getScoreboard().getPlayerTeam(user.getBase()); + + Player player = user.getBase(); + String prefix = FormatUtil.replaceFormat(ess.getPermissionsHandler().getPrefix(player)); + String suffix = FormatUtil.replaceFormat(ess.getPermissionsHandler().getSuffix(player)); + Team team = player.getScoreboard().getPlayerTeam(player); String format = ess.getSettings().getChatFormat(group); format = format.replace("{0}", group); @@ -50,6 +53,8 @@ public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer { format = format.replace("{3}", team == null ? "" : team.getPrefix()); format = format.replace("{4}", team == null ? "" : team.getSuffix()); format = format.replace("{5}", team == null ? "" : team.getDisplayName()); + format = format.replace("{6}", prefix); + format = format.replace("{7}", suffix); synchronized (format) { event.setFormat(format); } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java index f493f7106..3157701a6 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java @@ -18,7 +18,7 @@ import static com.earth2me.essentials.I18n.tl; public class EssentialsChatPlayerListenerNormal extends EssentialsChatPlayer { - public EssentialsChatPlayerListenerNormal(final Server server, final IEssentials ess, final Map chatStorage) { + EssentialsChatPlayerListenerNormal(final Server server, final IEssentials ess, final Map chatStorage) { super(server, ess, chatStorage); } @@ -29,10 +29,7 @@ public class EssentialsChatPlayerListenerNormal extends EssentialsChatPlayer { return; } - /** - * This file should handle detection of the local chat features... if local chat is enabled, we need to handle - * it here - */ + // This file should handle detection of the local chat features; if local chat is enabled, we need to handle it here long radius = ess.getSettings().getChatRadius(); if (radius < 1) { return; @@ -66,13 +63,13 @@ public class EssentialsChatPlayerListenerNormal extends EssentialsChatPlayer { } Set outList = event.getRecipients(); - Set spyList = new HashSet(); + Set spyList = new HashSet<>(); try { outList.add(event.getPlayer()); } catch (UnsupportedOperationException ex) { if (ess.getSettings().isDebug()) { - ess.getLogger().log(Level.INFO, "Plugin triggered custom chat event, local chat handling aborted.", ex); + logger.log(Level.INFO, "Plugin triggered custom chat event, local chat handling aborted.", ex); } return; } diff --git a/EssentialsChat/src/plugin.yml b/EssentialsChat/src/plugin.yml index b11702e8e..827e5e218 100644 --- a/EssentialsChat/src/plugin.yml +++ b/EssentialsChat/src/plugin.yml @@ -2,9 +2,9 @@ name: EssentialsChat main: com.earth2me.essentials.chat.EssentialsChat # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://tiny.cc/EssentialsCommands description: Provides chat control features for Essentials. Requires Permissions. authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Okamosy, Iaccidentally] depend: [Essentials] -#softdepend: [Factions] +api-version: 1.13 diff --git a/EssentialsGeoIP/pom.xml b/EssentialsGeoIP/pom.xml index 1f69e5578..317959285 100644 --- a/EssentialsGeoIP/pom.xml +++ b/EssentialsGeoIP/pom.xml @@ -6,43 +6,18 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsXGeoIP - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - - - - scm:git:https://github.com/essentials/Essentials.git - scm:git:https://github.com/essentials/Essentials.git - https://github.com/essentials/Essentials - - - - - net.ess3 - EssentialsX - ${project.version} - - - com.maxmind.geoip - geoip-api - 1.2.11 - - - + EssentialsXGeoIP-${full.version} org.apache.maven.plugins maven-shade-plugin - 2.1 + 3.2.1 package @@ -52,13 +27,36 @@ + false + true - com.maxmind.geoip:geoip-api + javatar:javatar + com.maxmind.geoip2:geoip2 + com.maxmind.db:maxmind-db + com.fasterxml.jackson.core:* + + + + net.ess3 + EssentialsX + ${project.version} + + + com.maxmind.geoip2 + geoip2 + 2.12.0 + + + javatar + javatar + 2.5 + + \ No newline at end of file diff --git a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java b/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java index 8b3bdfb29..89c599e6f 100644 --- a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java +++ b/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.geoip; +import com.earth2me.essentials.metrics.Metrics; import net.ess3.api.IEssentials; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -10,12 +11,8 @@ import static com.earth2me.essentials.I18n.tl; public class EssentialsGeoIP extends JavaPlugin { - public EssentialsGeoIP() { - } - - @Override - public void onDisable() { - } + + private transient Metrics metrics = null; @Override public void onEnable() { @@ -32,6 +29,11 @@ public class EssentialsGeoIP extends JavaPlugin { pm.registerEvents(playerListener, this); - getLogger().log(Level.INFO, "This product includes GeoLite data created by MaxMind, available from http://www.maxmind.com/."); + getLogger().log(Level.INFO, "This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com/."); + + if (metrics == null) { + metrics = new Metrics(this); + } } + } diff --git a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java b/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java index f38ff8c55..9e64aaf57 100644 --- a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java +++ b/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java @@ -3,9 +3,10 @@ package com.earth2me.essentials.geoip; import com.earth2me.essentials.EssentialsConf; import com.earth2me.essentials.IConf; import com.earth2me.essentials.User; -import com.maxmind.geoip.Location; -import com.maxmind.geoip.LookupService; -import com.maxmind.geoip.regionName; +import com.maxmind.geoip2.DatabaseReader; +import com.maxmind.geoip2.model.CityResponse; +import com.maxmind.geoip2.model.CountryResponse; +import com.maxmind.geoip2.exception.*; import net.ess3.api.IEssentials; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -19,21 +20,25 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.logging.Level; +import java.util.Date; import java.util.logging.Logger; import java.util.zip.GZIPInputStream; +import java.util.Arrays; +import com.ice.tar.TarInputStream; +import com.ice.tar.TarEntry; import static com.earth2me.essentials.I18n.tl; public class EssentialsGeoIPPlayerListener implements Listener, IConf { - LookupService ls = null; - private static final Logger logger = Logger.getLogger("Minecraft"); - File databaseFile; - File dataFolder; - final EssentialsConf config; + private DatabaseReader mmreader = null; // initialize maxmind geoip2 reader + private static final Logger logger = Logger.getLogger("EssentialsGeoIP"); + private File databaseFile; + private File dataFolder; + private final EssentialsConf config; private final transient IEssentials ess; - public EssentialsGeoIPPlayerListener(File dataFolder, IEssentials ess) { + EssentialsGeoIPPlayerListener(File dataFolder, IEssentials ess) { this.ess = ess; this.dataFolder = dataFolder; this.config = new EssentialsConf(new File(dataFolder, "config.yml")); @@ -43,36 +48,46 @@ public class EssentialsGeoIPPlayerListener implements Listener, IConf { @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(final PlayerJoinEvent event) { - ess.runTaskAsynchronously(new Runnable() { - @Override - public void run() { - delayedJoin(event.getPlayer()); - } - }); + ess.runTaskAsynchronously(() -> delayedJoin(event.getPlayer())); } - public void delayedJoin(Player player) { + private void delayedJoin(Player player) { User u = ess.getUser(player); if (u.isAuthorized("essentials.geoip.hide") || player.getAddress() == null) { return; } InetAddress address = player.getAddress().getAddress(); StringBuilder sb = new StringBuilder(); - if (config.getBoolean("database.show-cities", false)) { - Location loc = ls.getLocation(address); - if (loc == null) { - return; + try { + if (config.getBoolean("database.show-cities", false)) { + CityResponse response = mmreader.city(address); + if (response == null) { + return; + } + String city; + String region; + String country; + city = response.getCity().getName(); + region = response.getMostSpecificSubdivision().getName(); + country = response.getCountry().getName(); + if (city != null) { + sb.append(city).append(", "); + } + if (region != null) { + sb.append(region).append(", "); + } + sb.append(country); + } else { + CountryResponse response = mmreader.country(address); + sb.append(response.getCountry().getName()); } - if (loc.city != null) { - sb.append(loc.city).append(", "); - } - String region = regionName.regionNameByCode(loc.countryCode, loc.region); - if (region != null) { - sb.append(region).append(", "); - } - sb.append(loc.countryName); - } else { - sb.append(ls.getCountry(address).getName()); + } catch (AddressNotFoundException ex) { + // GeoIP2 API forced this when address not found in their DB. jar will not complied without this. + // TODO: Maybe, we can set a new custom msg about addr-not-found in messages.properties. + logger.log(Level.INFO, tl("cantReadGeoIpDB") + " " + ex.getLocalizedMessage()); + } catch (IOException | GeoIp2Exception ex) { + // GeoIP2 API forced this when address not found in their DB. jar will not complied without this. + logger.log(Level.SEVERE, tl("cantReadGeoIpDB") + " " + ex.getLocalizedMessage()); } if (config.getBoolean("show-on-whois", true)) { u.setGeoLocation(sb.toString()); @@ -91,10 +106,25 @@ public class EssentialsGeoIPPlayerListener implements Listener, IConf { public final void reloadConfig() { config.load(); + // detect and update the old config.yml. migrate from legacy GeoIP to GeoIP2. + if (!config.isSet("enable-locale")) { + config.set("database.download-url", "https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz"); + config.set("database.download-url-city", "https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz"); + config.set("database.update.enable", true); + config.set("database.update.by-every-x-days", 30); + config.set("enable-locale", true); + config.save(); + // delete old GeoIP.dat fiiles + File oldDatFile = new File(dataFolder, "GeoIP.dat"); + File oldDatFileCity = new File(dataFolder, "GeoIP-City.dat"); + oldDatFile.delete(); + oldDatFileCity.delete(); + } + if (config.getBoolean("database.show-cities", false)) { - databaseFile = new File(dataFolder, "GeoIPCity.dat"); + databaseFile = new File(dataFolder, "GeoIP2-City.mmdb"); } else { - databaseFile = new File(dataFolder, "GeoIP.dat"); + databaseFile = new File(dataFolder, "GeoIP2-Country.mmdb"); } if (!databaseFile.exists()) { if (config.getBoolean("database.download-if-missing", true)) { @@ -103,9 +133,22 @@ public class EssentialsGeoIPPlayerListener implements Listener, IConf { logger.log(Level.SEVERE, tl("cantFindGeoIpDB")); return; } + } else if (config.getBoolean("database.update.enable", true)) { + // try to update expired mmdb files + long diff = new Date().getTime() - databaseFile.lastModified(); + if (diff/24/3600/1000>config.getLong("database.update.by-every-x-days", 30)) { + downloadDatabase(); + } } try { - ls = new LookupService(databaseFile); + // locale setting + if (config.getBoolean("enable-locale")) { + // Get geolocation based on Essentials' locale. If the locale is not avaliable, use "en". + String locale = ess.getI18n().getCurrentLocale().toString().replace('_', '-'); + mmreader = new DatabaseReader.Builder(databaseFile).locales(Arrays.asList(locale,"en")).build(); + } else { + mmreader = new DatabaseReader.Builder(databaseFile).build(); + } } catch (IOException ex) { logger.log(Level.SEVERE, tl("cantReadGeoIpDB"), ex); } @@ -129,11 +172,26 @@ public class EssentialsGeoIPPlayerListener implements Listener, IConf { conn.setConnectTimeout(10000); conn.connect(); InputStream input = conn.getInputStream(); - if (url.endsWith(".gz")) { - input = new GZIPInputStream(input); - } OutputStream output = new FileOutputStream(databaseFile); byte[] buffer = new byte[2048]; + if (url.endsWith(".gz")) { + input = new GZIPInputStream(input); + if (url.endsWith(".tar.gz")) { + // The new GeoIP2 uses tar.gz to pack the db file along with some other txt. So it makes things a bit complicated here. + String filename; + TarInputStream tarInputStream = new TarInputStream(input); + TarEntry entry; + while ((entry = tarInputStream.getNextEntry()) != null) { + if (!entry.isDirectory()) { + filename = entry.getName(); + if (filename.substring(filename.length() - 5).equalsIgnoreCase(".mmdb")) { + input = tarInputStream; + break; + } + } + } + } + } int length = input.read(buffer); while (length >= 0) { output.write(buffer, 0, length); @@ -143,7 +201,6 @@ public class EssentialsGeoIPPlayerListener implements Listener, IConf { input.close(); } catch (MalformedURLException ex) { logger.log(Level.SEVERE, tl("geoIpUrlInvalid"), ex); - return; } catch (IOException ex) { logger.log(Level.SEVERE, tl("connectionFailed"), ex); } diff --git a/EssentialsGeoIP/src/config.yml b/EssentialsGeoIP/src/config.yml index 70d7a51ba..5cae35de0 100644 --- a/EssentialsGeoIP/src/config.yml +++ b/EssentialsGeoIP/src/config.yml @@ -2,9 +2,15 @@ database: show-cities: false download-if-missing: true # Url for country - download-url: "http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz" + download-url: "https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz" # Url for cities - download-url-city: "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz" - + download-url-city: "https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz" + update: + enable: true + by-every-x-days: 30 show-on-login: true -show-on-whois: true \ No newline at end of file +show-on-whois: true +# "enable-locale" enables locale on geolocation display. +# Language is determined by Essentials/config.yml "locale" section. +# Not all languages are supported. See https://dev.maxmind.com/geoip/geoip2/web-services/#Languages +enable-locale: true \ No newline at end of file diff --git a/EssentialsGeoIP/src/plugin.yml b/EssentialsGeoIP/src/plugin.yml index 5fc8d7987..3b54fec15 100644 --- a/EssentialsGeoIP/src/plugin.yml +++ b/EssentialsGeoIP/src/plugin.yml @@ -2,8 +2,9 @@ name: EssentialsGeoIP main: com.earth2me.essentials.geoip.EssentialsGeoIP # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://tiny.cc/EssentialsCommands description: Shows the country or city of a user on login and /whois. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology] +authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, kjiang] depend: [Essentials] +api-version: 1.13 diff --git a/EssentialsProtect/pom.xml b/EssentialsProtect/pom.xml index e2068125c..eaf6bc508 100644 --- a/EssentialsProtect/pom.xml +++ b/EssentialsProtect/pom.xml @@ -6,17 +6,14 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsXProtect - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - + + EssentialsXProtect-${full.version} + diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java index c48295aa1..bfd1886c2 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java @@ -10,9 +10,16 @@ import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.server.PluginEnableEvent; public class EmergencyListener implements Listener { + private EssentialsProtect plugin; + + EmergencyListener(final EssentialsProtect essProtPlugin) { + plugin = essProtPlugin; + } + @EventHandler(priority = EventPriority.LOW) public void onBlockBurn(final BlockBurnEvent event) { event.setCancelled(true); @@ -47,4 +54,11 @@ public class EmergencyListener implements Listener { public void onEntityDamage(final EntityDamageEvent event) { event.setCancelled(true); } + + @EventHandler + public void onPluginEnabled(final PluginEnableEvent event) { + if (event.getPlugin().getName().equals("Essentials")) { + plugin.disableEmergencyMode(); + } + } } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java index 2c827a171..d24221ced 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java @@ -10,14 +10,14 @@ import java.util.logging.Logger; import static com.earth2me.essentials.I18n.tl; -public class EssentialsConnect { - private static final Logger LOGGER = Logger.getLogger("Minecraft"); +class EssentialsConnect { + private static final Logger logger = Logger.getLogger("EssentialsProtect"); private final IEssentials ess; private final IProtect protect; - public EssentialsConnect(Plugin essPlugin, Plugin essProtect) { + EssentialsConnect(Plugin essPlugin, Plugin essProtect) { if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion())) { - LOGGER.log(Level.WARNING, tl("versionMismatchAll")); + logger.log(Level.WARNING, tl("versionMismatchAll")); } ess = (IEssentials) essPlugin; protect = (IProtect) essProtect; @@ -26,7 +26,7 @@ public class EssentialsConnect { ess.addReloadListener(pr); } - public IEssentials getEssentials() { + IEssentials getEssentials() { return ess; } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java index be3679365..ea7d729ed 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java @@ -1,6 +1,9 @@ package com.earth2me.essentials.protect; +import com.earth2me.essentials.metrics.Metrics; +import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -9,15 +12,16 @@ import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.logging.Level; -import java.util.logging.Logger; public class EssentialsProtect extends JavaPlugin implements IProtect { - private static final Logger LOGGER = Logger.getLogger("Minecraft"); - private final Map settingsBoolean = new EnumMap(ProtectConfig.class); - private final Map settingsString = new EnumMap(ProtectConfig.class); - private final Map> settingsList = new EnumMap>(ProtectConfig.class); + private final Map settingsBoolean = new EnumMap<>(ProtectConfig.class); + private final Map settingsString = new EnumMap<>(ProtectConfig.class); + private final Map> settingsList = new EnumMap<>(ProtectConfig.class); private EssentialsConnect ess = null; + private transient Metrics metrics = null; + + private final EmergencyListener emListener = new EmergencyListener(this); @Override public void onEnable() { @@ -27,6 +31,16 @@ public class EssentialsProtect extends JavaPlugin implements IProtect { enableEmergencyMode(pm); return; } + + initialize(pm, essPlugin); + + if (metrics == null) { + metrics = new Metrics(this); + } + } + + private void initialize(final PluginManager pm, final Plugin essPlugin) { + getLogger().log(Level.INFO, "Continuing to enable Protect."); ess = new EssentialsConnect(essPlugin, this); final EssentialsProtectBlockListener blockListener = new EssentialsProtectBlockListener(this); @@ -40,13 +54,30 @@ public class EssentialsProtect extends JavaPlugin implements IProtect { } private void enableEmergencyMode(final PluginManager pm) { - final EmergencyListener emListener = new EmergencyListener(); pm.registerEvents(emListener, this); for (Player player : getServer().getOnlinePlayers()) { player.sendMessage("Essentials Protect is in emergency mode. Check your log for errors."); } - LOGGER.log(Level.SEVERE, "Essentials not installed or failed to load. Essenials Protect is in emergency mode now."); + getLogger().log(Level.SEVERE, "Essentials not installed or failed to load. Essentials Protect is in emergency mode now."); + } + + void disableEmergencyMode() { + final PluginManager pm = this.getServer().getPluginManager(); + final Plugin essPlugin = pm.getPlugin("Essentials"); + if (essPlugin == null || !essPlugin.isEnabled()) { + getLogger().log(Level.SEVERE, "Tried to disable emergency mode, but Essentials still isn't enabled!"); + return; + } + + HandlerList.unregisterAll(emListener); + + for (Player player : getServer().getOnlinePlayers()) { + player.sendMessage("Essentials Protect is no longer in emergency mode."); + } + getLogger().log(Level.SEVERE, "Essentials was loaded late! Essentials Protect is no longer in emergency mode."); + + initialize(pm, essPlugin); } @Override @@ -65,7 +96,7 @@ public class EssentialsProtect extends JavaPlugin implements IProtect { } @Override - public Map> getSettingsList() { + public Map> getSettingsList() { return settingsList; } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java index c052d5521..5f20a58f6 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.protect; -import net.ess3.api.IEssentials; +import com.earth2me.essentials.utils.EnumUtil; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -12,14 +13,18 @@ import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.world.PortalCreateEvent; +import java.util.Set; + public class EssentialsProtectBlockListener implements Listener { - final private IProtect prot; - final private IEssentials ess; - public EssentialsProtectBlockListener(final IProtect parent) { + private static final Set WATER_TYPES = EnumUtil.getAllMatching(Material.class, "WATER", "STATIONARY_WATER"); + private static final Set LAVA_TYPES = EnumUtil.getAllMatching(Material.class, "LAVA", "STATIONARY_LAVA"); + + final private IProtect prot; + + EssentialsProtectBlockListener(final IProtect parent) { this.prot = parent; - this.ess = prot.getEssentialsConnect().getEssentials(); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @@ -57,12 +62,12 @@ public class EssentialsProtectBlockListener implements Listener { public void onBlockFromTo(final BlockFromToEvent event) { final Block block = event.getBlock(); - if (block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER) { + if (WATER_TYPES.contains(block.getType())) { event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_flow)); return; } - if (block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA) { + if (LAVA_TYPES.contains(block.getType())) { event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lava_flow)); return; } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java index b0cc4fd57..6081657a4 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java @@ -20,7 +20,7 @@ public class EssentialsProtectEntityListener implements Listener { private final IProtect prot; private final IEssentials ess; - public EssentialsProtectEntityListener(final IProtect prot) { + EssentialsProtectEntityListener(final IProtect prot) { this.prot = prot; this.ess = prot.getEssentialsConnect().getEssentials(); } @@ -159,7 +159,7 @@ public class EssentialsProtectEntityListener implements Listener { } else if (entity instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_explosion)) { event.setCancelled(true); - } else if ((entity instanceof Fireball || entity instanceof SmallFireball) && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion)) { + } else if (entity instanceof Fireball && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion)) { event.setCancelled(true); } else if ((entity instanceof WitherSkull) && prot.getSettingBool(ProtectConfig.prevent_witherskull_explosion)) { @@ -180,7 +180,7 @@ public class EssentialsProtectEntityListener implements Listener { return; } final String creatureName = creature.toString().toLowerCase(Locale.ENGLISH); - if (creatureName == null || creatureName.isEmpty()) { + if (creatureName.isEmpty()) { return; } if (ess.getSettings().getProtectPreventSpawn(creatureName)) { @@ -194,7 +194,7 @@ public class EssentialsProtectEntityListener implements Listener { return; } final User user = ess.getUser((Player) event.getTarget()); - if ((event.getReason() == TargetReason.CLOSEST_PLAYER || event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY || event.getReason() == TargetReason.PIG_ZOMBIE_TARGET || event.getReason() == TargetReason.RANDOM_TARGET || event.getReason() == TargetReason.DEFEND_VILLAGE || event.getReason() == TargetReason.TARGET_ATTACKED_OWNER || event.getReason() == TargetReason.OWNER_ATTACKED_TARGET) && prot.getSettingBool(ProtectConfig.prevent_entitytarget) && !user.isAuthorized("essentials.protect.entitytarget.bypass")) { + if ((event.getReason() == TargetReason.CLOSEST_PLAYER || event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY || event.getReason() == TargetReason.TARGET_ATTACKED_NEARBY_ENTITY || event.getReason() == TargetReason.RANDOM_TARGET || event.getReason() == TargetReason.DEFEND_VILLAGE || event.getReason() == TargetReason.TARGET_ATTACKED_OWNER || event.getReason() == TargetReason.OWNER_ATTACKED_TARGET) && prot.getSettingBool(ProtectConfig.prevent_entitytarget) && !user.isAuthorized("essentials.protect.entitytarget.bypass")) { event.setCancelled(true); } } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java index 00b135065..ba11ac3b2 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java @@ -11,7 +11,7 @@ import org.bukkit.event.weather.WeatherChangeEvent; public class EssentialsProtectWeatherListener implements Listener { private final IProtect prot; - public EssentialsProtectWeatherListener(final IProtect prot) { + EssentialsProtectWeatherListener(final IProtect prot) { this.prot = prot; } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java index 23ba0cebb..7d12107ad 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.protect; +import org.bukkit.Material; import org.bukkit.plugin.Plugin; import java.util.List; @@ -17,5 +18,5 @@ public interface IProtect extends Plugin { Map getSettingsString(); - Map> getSettingsList(); + Map> getSettingsList(); } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java index 4c99624a0..3d8e06cd7 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java @@ -49,19 +49,11 @@ public enum ProtectConfig { private final boolean isList; private final boolean isString; - private ProtectConfig(final String configName) { - this(configName, null, false, true, false); - } - - private ProtectConfig(final String configName, final String defValueString) { - this(configName, defValueString, false, false, true); - } - - private ProtectConfig(final String configName, final boolean defValueBoolean) { + ProtectConfig(final String configName, final boolean defValueBoolean) { this(configName, null, defValueBoolean, false, false); } - private ProtectConfig(final String configName, final String defValueString, final boolean defValueBoolean, final boolean isList, final boolean isString) { + ProtectConfig(final String configName, final String defValueString, final boolean defValueBoolean, final boolean isList, final boolean isString) { this.configName = configName; this.defValueString = defValueString; this.defValueBoolean = defValueBoolean; diff --git a/EssentialsProtect/src/plugin.yml b/EssentialsProtect/src/plugin.yml index 14e6b2820..050af7d08 100644 --- a/EssentialsProtect/src/plugin.yml +++ b/EssentialsProtect/src/plugin.yml @@ -2,8 +2,9 @@ name: EssentialsProtect main: com.earth2me.essentials.protect.EssentialsProtect # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://tiny.cc/EssentialsCommands description: Provides protection for various parts of the world. authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits] softdepend: [Essentials] +api-version: 1.13 diff --git a/EssentialsSpawn/pom.xml b/EssentialsSpawn/pom.xml index 4d71dd8a9..dbfe4f283 100644 --- a/EssentialsSpawn/pom.xml +++ b/EssentialsSpawn/pom.xml @@ -6,17 +6,41 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsXSpawn - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - + + EssentialsXSpawn-${full.version} + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + + + + net.ess3:EssentialsXSpawn + + false + + + io.papermc.lib + com.earth2me.essentials.paperlib + + + + + + @@ -24,5 +48,10 @@ EssentialsX ${project.version} + + io.papermc + paperlib + 1.0.2 + \ No newline at end of file diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandsetspawn.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandsetspawn.java index da4593ded..c0d876f83 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandsetspawn.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandsetspawn.java @@ -13,7 +13,7 @@ public class Commandsetspawn extends EssentialsCommand { } @Override - public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { + public void run(final Server server, final User user, final String commandLabel, final String[] args) { final String group = args.length > 0 ? getFinalArg(args, 0) : "default"; ((SpawnStorage) module).setSpawn(user.getLocation(), group); user.sendMessage(tl("spawnSet", group)); diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java index 0d592550a..e37500e2d 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java @@ -1,37 +1,32 @@ package com.earth2me.essentials.spawn; +import com.earth2me.essentials.metrics.Metrics; import net.ess3.api.IEssentials; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.event.Event; -import org.bukkit.event.EventException; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.plugin.EventExecutor; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import java.util.logging.Level; -import java.util.logging.Logger; import static com.earth2me.essentials.I18n.tl; public class EssentialsSpawn extends JavaPlugin implements IEssentialsSpawn { - private static final Logger LOGGER = Bukkit.getLogger(); private transient IEssentials ess; private transient SpawnStorage spawns; + private transient Metrics metrics = null; @Override public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); ess = (IEssentials) pluginManager.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - LOGGER.log(Level.WARNING, tl("versionMismatchAll")); + getLogger().log(Level.WARNING, tl("versionMismatchAll")); } if (!ess.isEnabled()) { this.setEnabled(false); @@ -45,22 +40,18 @@ public class EssentialsSpawn extends JavaPlugin implements IEssentialsSpawn { EventPriority respawnPriority = ess.getSettings().getRespawnPriority(); if (respawnPriority != null) { - pluginManager.registerEvent(PlayerRespawnEvent.class, playerListener, respawnPriority, new EventExecutor() { - @Override - public void execute(final Listener ll, final Event event) throws EventException { - ((EssentialsSpawnPlayerListener) ll).onPlayerRespawn((PlayerRespawnEvent) event); - } - }, this); + pluginManager.registerEvent(PlayerRespawnEvent.class, playerListener, respawnPriority, (ll, event) -> + ((EssentialsSpawnPlayerListener) ll).onPlayerRespawn((PlayerRespawnEvent) event), this); } EventPriority joinPriority = ess.getSettings().getSpawnJoinPriority(); if (joinPriority != null) { - pluginManager.registerEvent(PlayerJoinEvent.class, playerListener, joinPriority, new EventExecutor() { - @Override - public void execute(final Listener ll, final Event event) throws EventException { - ((EssentialsSpawnPlayerListener) ll).onPlayerJoin((PlayerJoinEvent) event); - } - }, this); + pluginManager.registerEvent(PlayerJoinEvent.class, playerListener, joinPriority, (ll, event) -> + ((EssentialsSpawnPlayerListener) ll).onPlayerJoin((PlayerJoinEvent) event), this); + } + + if (metrics == null) { + metrics = new Metrics(this); } } diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index 6a2cb3a24..05db07ed8 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -6,8 +6,8 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.KeywordReplacer; import com.earth2me.essentials.textreader.SimpleTextPager; +import io.papermc.lib.PaperLib; import net.ess3.api.IEssentials; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.Listener; @@ -23,18 +23,18 @@ import java.util.logging.Logger; import static com.earth2me.essentials.I18n.tl; -public class EssentialsSpawnPlayerListener implements Listener { - private static final Logger LOGGER = Bukkit.getLogger(); +class EssentialsSpawnPlayerListener implements Listener { + private static final Logger logger = Logger.getLogger("EssentialsSpawn"); private final transient IEssentials ess; private final transient SpawnStorage spawns; - public EssentialsSpawnPlayerListener(final IEssentials ess, final SpawnStorage spawns) { + EssentialsSpawnPlayerListener(final IEssentials ess, final SpawnStorage spawns) { super(); this.ess = ess; this.spawns = spawns; } - public void onPlayerRespawn(final PlayerRespawnEvent event) { + void onPlayerRespawn(final PlayerRespawnEvent event) { final User user = ess.getUser(event.getPlayer()); if (user.isJailed() && user.getJail() != null && !user.getJail().isEmpty()) { @@ -60,33 +60,24 @@ public class EssentialsSpawnPlayerListener implements Listener { } } - public void onPlayerJoin(final PlayerJoinEvent event) { - ess.runTaskAsynchronously(new Runnable() { - @Override - public void run() { - delayedJoin(event.getPlayer()); - } - }); + void onPlayerJoin(final PlayerJoinEvent event) { + ess.runTaskAsynchronously(() -> delayedJoin(event.getPlayer())); } - public void delayedJoin(final Player player) { + private void delayedJoin(final Player player) { if (player.hasPlayedBefore()) { - LOGGER.log(Level.FINE, "Old player join"); + logger.log(Level.FINE, "Old player join"); List spawnOnJoinGroups = ess.getSettings().getSpawnOnJoinGroups(); if (!spawnOnJoinGroups.isEmpty()) { final User user = ess.getUser(player); if (ess.getSettings().isUserInSpawnOnJoinGroup(user) && !user.isAuthorized("essentials.spawn-on-join.exempt")) { - ess.scheduleSyncDelayedTask(new Runnable() { - @Override - public void run() { - Location spawn = spawns.getSpawn(user.getGroup()); - try { - // We don't use user.getTeleport() because it stores last location, which is unwanted in this case. - user.getBase().teleport(spawn, TeleportCause.PLUGIN); - } catch (Exception e) { - ess.showError(user.getSource(), e, "spawn-on-join"); - } + ess.scheduleSyncDelayedTask(() -> { + Location spawn = spawns.getSpawn(user.getGroup()); + try { + PaperLib.teleportAsync(user.getBase(), spawn, TeleportCause.PLUGIN); + } catch (Exception e) { + ess.showError(user.getSource(), e, "spawn-on-join"); } }); } @@ -101,35 +92,32 @@ public class EssentialsSpawnPlayerListener implements Listener { ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user), 1L); } - ess.scheduleSyncDelayedTask(new Runnable() { - @Override - public void run() { - if (!user.getBase().isOnline()) { - return; - } - - //This method allows for multiple line player announce messages using multiline yaml syntax #EasterEgg - if (ess.getSettings().getAnnounceNewPlayers()) { - final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user.getSource(), ess); - final SimpleTextPager pager = new SimpleTextPager(output); - - for (String line : pager.getLines()) { - ess.broadcastMessage(user, line); - } - } - - final String kitName = ess.getSettings().getNewPlayerKit(); - if (!kitName.isEmpty()) { - try { - final Kit kit = new Kit(kitName.toLowerCase(Locale.ENGLISH), ess); - kit.expandItems(user); - } catch (Exception ex) { - LOGGER.log(Level.WARNING, ex.getMessage()); - } - } - - LOGGER.log(Level.FINE, "New player join"); + ess.scheduleSyncDelayedTask(() -> { + if (!user.getBase().isOnline()) { + return; } + + //This method allows for multiple line player announce messages using multiline yaml syntax #EasterEgg + if (ess.getSettings().getAnnounceNewPlayers()) { + final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user.getSource(), ess); + final SimpleTextPager pager = new SimpleTextPager(output); + + for (String line : pager.getLines()) { + ess.broadcastMessage(user, line); + } + } + + final String kitName = ess.getSettings().getNewPlayerKit(); + if (!kitName.isEmpty()) { + try { + final Kit kit = new Kit(kitName.toLowerCase(Locale.ENGLISH), ess); + kit.expandItems(user); + } catch (Exception ex) { + logger.log(Level.WARNING, ex.getMessage()); + } + } + + logger.log(Level.FINE, "New player join"); }, 2L); } @@ -137,7 +125,7 @@ public class EssentialsSpawnPlayerListener implements Listener { private class NewPlayerTeleport implements Runnable { private final transient User user; - public NewPlayerTeleport(final User user) { + NewPlayerTeleport(final User user) { this.user = user; } @@ -153,7 +141,7 @@ public class EssentialsSpawnPlayerListener implements Listener { user.getTeleport().now(spawn, false, TeleportCause.PLUGIN); } } catch (Exception ex) { - Bukkit.getLogger().log(Level.WARNING, tl("teleportNewPlayerError"), ex); + logger.log(Level.WARNING, tl("teleportNewPlayerError"), ex); } } } diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/IEssentialsSpawn.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/IEssentialsSpawn.java index 224d2672f..f71d48937 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/IEssentialsSpawn.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/IEssentialsSpawn.java @@ -14,7 +14,7 @@ public interface IEssentialsSpawn extends Plugin { * * @throws IllegalArgumentException If group is null */ - public void setSpawn(Location loc, String group); + void setSpawn(Location loc, String group); /** * Gets the spawn location for a given group. @@ -25,5 +25,5 @@ public interface IEssentialsSpawn extends Plugin { * * @throws IllegalArgumentException If group is null */ - public Location getSpawn(String group); + Location getSpawn(String group); } diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/SpawnStorage.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/SpawnStorage.java index bc9a97fae..2c7f666b9 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/SpawnStorage.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/SpawnStorage.java @@ -14,7 +14,7 @@ import java.util.Map; public class SpawnStorage extends AsyncStorageObjectHolder implements IEssentialsModule { - public SpawnStorage(final IEssentials ess) { + SpawnStorage(final IEssentials ess) { super(ess, Spawns.class); reloadConfig(); } @@ -25,18 +25,16 @@ public class SpawnStorage extends AsyncStorageObjectHolder implements IE } @Override - public void finishRead() { - } + public void finishRead() { } @Override - public void finishWrite() { - } + public void finishWrite() { } - public void setSpawn(final Location loc, final String group) { + void setSpawn(final Location loc, final String group) { acquireWriteLock(); try { if (getData().getSpawns() == null) { - getData().setSpawns(new HashMap()); + getData().setSpawns(new HashMap<>()); } getData().getSpawns().put(group.toLowerCase(Locale.ENGLISH), loc); } finally { @@ -48,7 +46,7 @@ public class SpawnStorage extends AsyncStorageObjectHolder implements IE } } - public Location getSpawn(final String group) { + Location getSpawn(final String group) { acquireReadLock(); try { if (getData().getSpawns() == null || group == null) { diff --git a/EssentialsSpawn/src/plugin.yml b/EssentialsSpawn/src/plugin.yml index 06c9dac7d..3475d3ac2 100644 --- a/EssentialsSpawn/src/plugin.yml +++ b/EssentialsSpawn/src/plugin.yml @@ -2,18 +2,19 @@ name: EssentialsSpawn main: com.earth2me.essentials.spawn.EssentialsSpawn # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://tiny.cc/EssentialsCommands description: Provides spawn control commands, utilizing Essentials. authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits] depend: [Essentials] +api-version: 1.13 commands: setspawn: - description: Set the spawnpoint to your current position. + description: Sets the spawn point to your current position. usage: / aliases: [esetspawn] spawn: - description: Teleport to the spawnpoint. + description: Teleports to the spawn point. usage: / [player] aliases: [espawn] permissions: diff --git a/EssentialsXMPP/pom.xml b/EssentialsXMPP/pom.xml index a127be087..90f92bdcd 100644 --- a/EssentialsXMPP/pom.xml +++ b/EssentialsXMPP/pom.xml @@ -6,37 +6,18 @@ net.ess3 EssentialsXParent - 2.0.1 + 2.16.1 EssentialsXXMPP - - - GPLv3 - http://www.gnu.org/copyleft/gpl.html - - - - - - net.ess3 - EssentialsX - ${project.version} - - - org.igniterealtime.smack - smack - 3.2.1 - - - + EssentialsXXMPP-${full.version} org.apache.maven.plugins maven-shade-plugin - 2.1 + 3.2.1 package @@ -46,14 +27,24 @@ - - - org.igniterealtime.smack:smack - - + false + + + net.ess3 + EssentialsX + ${project.version} + provided + + + org.igniterealtime.smack + smack + 3.2.1 + compile + + \ No newline at end of file diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java index 59df3c632..bd142319f 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.xmpp; import com.earth2me.essentials.IEssentials; +import com.earth2me.essentials.metrics.Metrics; import net.ess3.api.IUser; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -11,19 +12,18 @@ import org.bukkit.plugin.java.JavaPlugin; import java.util.List; import java.util.Locale; import java.util.logging.Level; -import java.util.logging.Logger; import static com.earth2me.essentials.I18n.tl; public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP { - private static final Logger LOGGER = Logger.getLogger("Minecraft"); private static EssentialsXMPP instance = null; private transient UserManager users; private transient XMPPManager xmpp; private transient IEssentials ess; + private transient Metrics metrics = null; - public static IEssentialsXMPP getInstance() { + static IEssentialsXMPP getInstance() { return instance; } @@ -34,7 +34,7 @@ public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP { final PluginManager pluginManager = getServer().getPluginManager(); ess = (IEssentials) pluginManager.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - LOGGER.log(Level.WARNING, tl("versionMismatchAll")); + getLogger().log(Level.WARNING, tl("versionMismatchAll")); } if (!ess.isEnabled()) { this.setEnabled(false); @@ -49,6 +49,11 @@ public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP { ess.addReloadListener(users); ess.addReloadListener(xmpp); + + if (metrics == null) { + metrics = new Metrics(this); + metrics.addCustomChart(new Metrics.SimplePie("config-valid", () -> xmpp.isConfigValid() ? "yes" : "no")); + } } @Override @@ -104,10 +109,8 @@ public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP { return instance.xmpp.sendMessage(address, message); } - // @Override - public static boolean updatePresence() { + static void updatePresence() { instance.xmpp.updatePresence(); - return true; } @Override @@ -124,9 +127,7 @@ public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP { sendMessage(address, message); } } - } catch (Exception ex) { - // Ignore exceptions - } + } catch (Exception ignored) {} } @Override diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java index 06b603eb0..e832ed4fa 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java @@ -25,12 +25,7 @@ class EssentialsXMPPPlayerListener implements Listener { public void onPlayerJoin(final PlayerJoinEvent event) { final User user = ess.getUser(event.getPlayer()); - Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable() { - @Override - public void run() { - EssentialsXMPP.updatePresence(); - } - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(ess, EssentialsXMPP::updatePresence); sendMessageToSpyUsers("Player " + user.getDisplayName() + " joined the game"); } @@ -45,12 +40,7 @@ class EssentialsXMPPPlayerListener implements Listener { public void onPlayerQuit(final PlayerQuitEvent event) { final User user = ess.getUser(event.getPlayer()); - Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable() { - @Override - public void run() { - EssentialsXMPP.updatePresence(); - } - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(ess, EssentialsXMPP::updatePresence); sendMessageToSpyUsers("Player " + user.getDisplayName() + " left the game"); @@ -61,17 +51,9 @@ class EssentialsXMPPPlayerListener implements Listener { List users = EssentialsXMPP.getInstance().getSpyUsers(); synchronized (users) { for (final String address : users) { - Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable() { - @Override - public void run() { - EssentialsXMPP.getInstance().sendMessage(address, message); - } - }); - + Bukkit.getScheduler().scheduleSyncDelayedTask(ess, () -> EssentialsXMPP.getInstance().sendMessage(address, message)); } } - } catch (Exception ex) { - // Ignore exceptions - } + } catch (Exception ignored) {} } } diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java index 22aa398ce..736e7b507 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java @@ -9,48 +9,48 @@ import java.util.*; public class UserManager implements IConf { private final transient EssentialsConf users; - private final transient List spyusers = Collections.synchronizedList(new ArrayList()); + private final transient List spyusers = Collections.synchronizedList(new ArrayList<>()); private static final String ADDRESS = "address"; private static final String SPY = "spy"; - public UserManager(final File folder) { + UserManager(final File folder) { users = new EssentialsConf(new File(folder, "users.yml")); reloadConfig(); } - public final boolean isSpy(final String username) { + final boolean isSpy(final String username) { return users.getBoolean(username.toLowerCase(Locale.ENGLISH) + "." + SPY, false); } - public void setSpy(final String username, final boolean spy) { + void setSpy(final String username, final boolean spy) { setUser(username.toLowerCase(Locale.ENGLISH), getAddress(username), spy); } - public final String getAddress(final String username) { + final String getAddress(final String username) { return users.getString(username.toLowerCase(Locale.ENGLISH) + "." + ADDRESS, null); } - public final String getUserByAddress(final String search) { + final String getUserByAddress(final String search) { final Set usernames = users.getKeys(false); for (String username : usernames) { final String address = users.getString(username + "." + ADDRESS, null); - if (address != null && search.equalsIgnoreCase(address)) { + if (search.equalsIgnoreCase(address)) { return username; } } return null; } - public void setAddress(final String username, final String address) { + void setAddress(final String username, final String address) { setUser(username.toLowerCase(Locale.ENGLISH), address, isSpy(username)); } - public List getSpyUsers() { + List getSpyUsers() { return spyusers; } private void setUser(final String username, final String address, final boolean spy) { - final Map userdata = new HashMap(); + final Map userdata = new HashMap<>(); userdata.put(ADDRESS, address); userdata.put(SPY, spy); users.setProperty(username, userdata); diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java index 95f987280..7647a8ed1 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java @@ -18,13 +18,13 @@ import java.util.logging.*; public class XMPPManager extends Handler implements MessageListener, ChatManagerListener, IConf { - private static final Logger LOGGER = Logger.getLogger("Minecraft"); + private static final Logger logger = Logger.getLogger("EssentialsXMPP"); private static final SimpleFormatter formatter = new SimpleFormatter(); private final transient EssentialsConf config; private transient XMPPConnection connection; private transient ChatManager chatManager; - private final transient Map chats = Collections.synchronizedMap(new HashMap()); - private final transient Set logrecords = Collections.synchronizedSet(new HashSet()); + private final transient Map chats = Collections.synchronizedMap(new HashMap<>()); + private final transient Set logrecords = Collections.synchronizedSet(new HashSet<>()); private final transient IEssentialsXMPP parent; private transient List logUsers; private transient Level logLevel; @@ -32,7 +32,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager private transient Thread loggerThread; private transient boolean threadrunning = true; - public XMPPManager(final IEssentialsXMPP parent) { + XMPPManager(final IEssentialsXMPP parent) { super(); this.parent = parent; config = new EssentialsConf(new File(parent.getDataFolder(), "config.yml")); @@ -40,7 +40,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager reloadConfig(); } - public boolean sendMessage(final String address, final String message) { + boolean sendMessage(final String address, final String message) { if (address != null && !address.isEmpty()) { try { startChat(address); @@ -86,7 +86,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager private boolean connect() { final String server = config.getString("xmpp.server"); if (server == null || server.equals("example.com")) { - LOGGER.log(Level.WARNING, "config broken for xmpp"); + logger.log(Level.WARNING, "config broken for xmpp"); return false; } final int port = config.getInt("xmpp.port", 5222); @@ -94,10 +94,8 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager final String xmppuser = config.getString("xmpp.user"); final String password = config.getString("xmpp.password"); final ConnectionConfiguration connConf = new ConnectionConfiguration(server, port, serviceName); - final StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Connecting to xmpp server ").append(server).append(":").append(port); - stringBuilder.append(" as user ").append(xmppuser).append("."); - LOGGER.log(Level.INFO, stringBuilder.toString()); + String stringBuilder = "Connecting to xmpp server " + server + ":" + port + " as user " + xmppuser + "."; + logger.log(Level.INFO, stringBuilder); connConf.setSASLAuthenticationEnabled(config.getBoolean("xmpp.sasl-enabled", false)); connConf.setSendPresence(true); connConf.setReconnectionAllowed(true); @@ -114,12 +112,12 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager chatManager.addChatListener(this); return true; } catch (XMPPException ex) { - LOGGER.log(Level.WARNING, "Failed to connect to server: " + server, ex); + logger.log(Level.WARNING, "Failed to connect to server: " + server, ex); return false; } } - public final void disconnect() { + final void disconnect() { if (loggerThread != null) { loggerThread.interrupt(); } @@ -133,7 +131,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager } - public final void updatePresence() { + final void updatePresence() { final int usercount; final StringBuilder stringBuilder = new StringBuilder(); @@ -166,7 +164,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager @Override public final void reloadConfig() { - LOGGER.removeHandler(this); + logger.removeHandler(this); config.load(); synchronized (chats) { disconnect(); @@ -177,7 +175,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager startLoggerThread(); } if (config.getBoolean("log-enabled", false)) { - LOGGER.addHandler(this); + logger.addHandler(this); logUsers = config.getStringList("log-users"); final String level = config.getString("log-level", "info"); try { @@ -200,7 +198,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager logrecords.add(logRecord); } } - } catch (Exception e) { + } catch (Exception ignored) { // Ignore all exceptions // Otherwise we create a loop. } @@ -217,51 +215,48 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager } private void startLoggerThread() { - loggerThread = new Thread(new Runnable() { - @Override - public void run() { - final Set copy = new HashSet(); - final Set failedUsers = new HashSet(); - while (threadrunning) { - synchronized (logrecords) { - if (!logrecords.isEmpty()) { - copy.addAll(logrecords); - logrecords.clear(); - } - } - if (!copy.isEmpty()) { - for (String user : logUsers) { - try { - XMPPManager.this.startChat(user); - for (LogRecord logRecord : copy) { - final String message = formatter.format(logRecord); - if (!XMPPManager.this.sendMessage(user, FormatUtil.stripLogColorFormat(message))) { - failedUsers.add(user); - break; - } - - } - } catch (XMPPException ex) { - failedUsers.add(user); - LOGGER.removeHandler(XMPPManager.this); - LOGGER.log(Level.SEVERE, "Failed to deliver log message! Disabling logging to XMPP.", ex); - } - } - logUsers.removeAll(failedUsers); - if (logUsers.isEmpty()) { - LOGGER.removeHandler(XMPPManager.this); - threadrunning = false; - } - copy.clear(); - } - try { - Thread.sleep(2000); - } catch (InterruptedException ex) { - threadrunning = false; + loggerThread = new Thread(() -> { + final Set copy = new HashSet<>(); + final Set failedUsers = new HashSet<>(); + while (threadrunning) { + synchronized (logrecords) { + if (!logrecords.isEmpty()) { + copy.addAll(logrecords); + logrecords.clear(); } } - LOGGER.removeHandler(XMPPManager.this); + if (!copy.isEmpty()) { + for (String user : logUsers) { + try { + XMPPManager.this.startChat(user); + for (LogRecord logRecord : copy) { + final String message = formatter.format(logRecord); + if (!XMPPManager.this.sendMessage(user, FormatUtil.stripLogColorFormat(message))) { + failedUsers.add(user); + break; + } + + } + } catch (XMPPException ex) { + failedUsers.add(user); + logger.removeHandler(XMPPManager.this); + logger.log(Level.SEVERE, "Failed to deliver log message! Disabling logging to XMPP.", ex); + } + } + logUsers.removeAll(failedUsers); + if (logUsers.isEmpty()) { + logger.removeHandler(XMPPManager.this); + threadrunning = false; + } + copy.clear(); + } + try { + Thread.sleep(2000); + } catch (InterruptedException ex) { + threadrunning = false; + } } + logger.removeHandler(XMPPManager.this); }); loggerThread.start(); } @@ -290,7 +285,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager try { chat.sendMessage("User " + parts[0] + " not found"); } catch (XMPPException ex) { - LOGGER.log(Level.WARNING, "Failed to send xmpp message.", ex); + logger.log(Level.WARNING, "Failed to send xmpp message.", ex); } } else { final String from = "[" + parent.getUserByAddress(StringUtils.parseBareAddress(chat.getParticipant())) + ">"; @@ -306,7 +301,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager try { parent.getServer().dispatchCommand(Console.getInstance().getCommandSender(), message.substring(1)); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, ex.getMessage(), ex); + logger.log(Level.SEVERE, ex.getMessage(), ex); } } } @@ -318,4 +313,9 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager chats.remove(address); } } + + public boolean isConfigValid() { + final String server = config.getString("xmpp.server"); + return server != null && !server.equals("example.com"); + } } diff --git a/EssentialsXMPP/src/config.yml b/EssentialsXMPP/src/config.yml index 64b9a539f..3826dd773 100644 --- a/EssentialsXMPP/src/config.yml +++ b/EssentialsXMPP/src/config.yml @@ -6,12 +6,10 @@ xmpp: # port: 5222 # sasl-enabled: false -debug: false - op-users: # - 'name@example.com' - +debug: false log-enabled: false # Level is minimum level that should be send: info, warning, severe log-level: warning diff --git a/EssentialsXMPP/src/plugin.yml b/EssentialsXMPP/src/plugin.yml index cdcd9c149..77ae92bd0 100644 --- a/EssentialsXMPP/src/plugin.yml +++ b/EssentialsXMPP/src/plugin.yml @@ -2,19 +2,19 @@ name: EssentialsXMPP main: com.earth2me.essentials.xmpp.EssentialsXMPP # Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${project.version}-b${build.number} +version: ${full.version} website: http://ess.khhq.net/wiki/XMPP -description: Provides xmpp communication. -authors: - - snowleo +description: Provides XMPP communication. +authors: [snowleo] depend: [Essentials] +api-version: 1.13 commands: setxmpp: - description: set your xmpp address + description: Sets your XMPP address. usage: /
    xmpp: - description: send a message to a player + description: Sends a message to a player. usage: / xmppspy: - description: toggle xmpp spy for all messages + description: Toggles XMPP spy for all messages. usage: / diff --git a/README.md b/README.md index 3ee2d2232..2e6feb398 100644 --- a/README.md +++ b/README.md @@ -1,71 +1,77 @@ -![](https://i.imgur.com/CP4SZpB.png) +[![EssentialsX](https://i.imgur.com/CP4SZpB.png)](https://essentialsx.github.io) -[![Downloads](https://i.imgur.com/MMc0PJY.png)](http://ci.ender.zone/job/EssentialsX/) +[Jenkins](http://ci.ender.zone/job/EssentialsX/) -[![Discord](https://imgur.com/MFRRBn4.png)](https://discord.gg/F7gexAQ) +[Discord](https://discord.gg/casfFyh) + +[Patreon](https://www.patreon.com/essentialsx) This is a fork of Essentials called EssentialsX. If you are using this, do **NOT** ask Essentials for support. -The official upstream repository is at https://github.com/Essentials/Essentials +The official upstream repository is at https://github.com/Essentials/Essentials. -Why you should use it + +Why use EssentialsX? -------- -EssentialsX provides several performance enhancements and fixes that are currently not available in Essentials and Spigot-Essentials, most notably mob spawner support for 1.8+ servers and buy/trade sign support for 1.9+ servers. [See the wiki for details.](https://github.com/EssentialsX/Essentials/wiki) +EssentialsX is an unofficial continuation of Essentials, updated to support modern Minecraft and Spigot versions. It provides several performance enhancements and fixes that are currently not available in Essentials and Spigot-Essentials. [For more details, see the wiki.](https://essentialsx.github.io/#/Improvements) EssentialsX is almost a completely drop-in replacement for Essentials. However, it has different requirements: -* **EssentialsX requires [Vault](http://dev.bukkit.org/bukkit-plugins/vault/) to enable chat prefix/suffixes and group support if you have a supported permissions plugin.** +* **EssentialsX requires [Vault](http://dev.bukkit.org/bukkit-plugins/vault/) to enable chat prefix/suffixes and group support if you have a supported permissions plugin.** We recommend using [LuckPerms](https://luckperms.github.io). -* **If you have an unsupported permissions plugin but still wish to use wildcards, enable `use-bukkit-permissions` in the configuration. Otherwise, the plugin will fall back to config-based permissions.** +* **If you have an unsupported permissions plugin but still wish to use wildcards, enable `use-bukkit-permissions` in the configuration.** Otherwise, the plugin will fall back to config-based permissions. -* **EssentialsX requires Java 7 or higher.** +* **EssentialsX requires Java 8 or higher.** On older versions, the plugin may not work properly. -* **1.7.10 is no longer supported.** +* **EssentialsX supports Minecraft versions 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2 and 1.13.2.** + + +Support +------- + +Need help with using EssentialsX? Join the [MOSS Discord community](https://discord.gg/casfFyh) to ask for help and discuss EssentialsX. + +If you need to report a bug or want to suggest a new feature, you can [open an issue on GitHub](https://github.com/EssentialsX/Essentials/issues/new/choose). -* **1.13 will be supported!** Building -------- -Because EssentialsX builds against the Spigot/CraftBukkit server software for legacy support, you need to run Spigot's BuildTools for several versions in order to get it to compile. +EssentialsX builds against the Spigot/CraftBukkit server software for legacy support. -``` -java -jar BuildTools.jar --rev 1.8 -java -jar BuildTools.jar --rev 1.8.3 -java -jar BuildTools.jar --rev 1.9 -java -jar BuildTools.jar --rev 1.9.4 -``` +To compile EssentialsX, you first need to run [BuildTools](https://www.spigotmc.org/wiki/buildtools). +This only needs to be done once. There are two ways to do this: -Then, to build with Maven, use the command +* Use the provided script at `scripts/buildtools.sh` to automatically download and run BuildTools if needed. +* Download and run BuildTools yourself for versions `1.8` and `1.8.3`. + +Next, to build EssentialsX with Maven, run the following command: ``` mvn clean install ``` -Jar files can then be found in the /target folder for each module. +Each module's jar can be found in `target/` inside each module's directory. + +Using EssentialsX in your plugin +-------------------------------- + +Writing a plugin and want to support EssentialsX? We have a Maven repository at https://ci.ender.zone/plugin/repository/everything/, and the EssentialsX artifact is `net.ess3:EssentialsX:2.16.1`. More information at the [wiki](https://github.com/EssentialsX/Essentials/wiki/Common-Issues#how-do-i-add-essentialsx-as-a-dependency). -Commit Guidelines ------------------ +Contributing +------------ -Commits should fall into one of 3 areas: +Want to help improve EssentialsX? There are numerous ways you can contribute to the project. -- `[Feature]`: Commits which are features should start with `[Feature]` and followed by a quick summary on the top line, followed by some extra details in the commit body. +If you'd like to make a financial contribution to the project, you can join our [Patreon](https://www.patreon.com/essentialsx/). +If you can't make a donation, don't worry! There's lots of other ways to contribute: -- `[Fix]`: Commits which fix bugs, or minor improvements to existing features should start with `[Fix]` and followed by a quick summary on the top line, followed by some extra details in the commit body. - -- Commits which fix bugs caused by previous commits (since last release), or otherwise make no functionality changes, should have no prefix. These will not be added to the project change log. - - -Other Info ------------------ - -This is an unofficial fork of Essentials. It will be consistently updated and maintained with the latest Minecraft and Spigot versions. - -Support ------------------ -[Issue Tracker](https://github.com/EssentialsX/Essentials/issues) - -[Live Support](https://discord.gg/F7gexAQ) +* Do you run a server? Take a look at our ["help wanted" issues](https://github.com/EssentialsX/Essentials/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22help+wanted%22), + where you can find issues that need extra testing and investigation. You can also join the [MOSS Discord community](https://discord.gg/casfFyh) + and provide support to others. +* Do you speak multiple languages? If so, we always welcome pull requests to our [language files](https://essentialsx.github.io/#/Locale). +* If you're a developer, you could look through our ["open to PR" issues](https://github.com/EssentialsX/Essentials/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22status%3A+open+to+PR%22). + We're always happy to receive bug fixes and feature additions as pull requests. diff --git a/WebPush/apikey.php b/WebPush/apikey.php deleted file mode 100644 index 59f2bf3ac..000000000 --- a/WebPush/apikey.php +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/WebPush/index.php b/WebPush/index.php deleted file mode 100644 index 56193ebf7..000000000 --- a/WebPush/index.php +++ /dev/null @@ -1,59 +0,0 @@ - - diff --git a/WebPush/nbproject/private/private.properties b/WebPush/nbproject/private/private.properties deleted file mode 100644 index 8c2a80c6f..000000000 --- a/WebPush/nbproject/private/private.properties +++ /dev/null @@ -1,8 +0,0 @@ -copy.src.files=false -copy.src.target= -index.file=index.php -remote.connection=localhost-d13e79 -remote.directory=/upload -remote.upload=ON_SAVE -run.as=REMOTE -url=http://ess.khhq.net/upload/ diff --git a/WebPush/nbproject/project.properties b/WebPush/nbproject/project.properties deleted file mode 100644 index 6ffde2f50..000000000 --- a/WebPush/nbproject/project.properties +++ /dev/null @@ -1,7 +0,0 @@ -include.path=${php.global.include.path} -php.version=PHP_5 -source.encoding=UTF-8 -src.dir=. -tags.asp=false -tags.short=true -web.root=. diff --git a/WebPush/simple_html_dom.php b/WebPush/simple_html_dom.php deleted file mode 100644 index 3f96f8d95..000000000 --- a/WebPush/simple_html_dom.php +++ /dev/null @@ -1,1727 +0,0 @@ -size is the "real" number of bytes the dom was created from. - * but for most purposes, it's a really good estimation. - * Paperg - Added the forceTagsClosed to the dom constructor. Forcing tags closed is great for malformed html, but it CAN lead to parsing errors. - * Allow the user to tell us how much they trust the html. - * Paperg add the text and plaintext to the selectors for the find syntax. plaintext implies text in the innertext of a node. text implies that the tag is a text node. - * This allows for us to find tags based on the text they contain. - * Create find_ancestor_tag to see if a tag is - at any level - inside of another specific tag. - * Paperg: added parse_charset so that we know about the character set of the source document. - * NOTE: If the user's system has a routine called get_last_retrieve_url_contents_content_type availalbe, we will assume it's returning the content-type header from the - * last transfer or curl_exec, and we will parse that and use it in preference to any other method of charset detection. - * - * Licensed under The MIT License - * Redistributions of files must retain the above copyright notice. - * - * @author S.C. Chen - * @author John Schlick - * @author Rus Carroll - * @version 1.11 ($Rev: 184 $) - * @package PlaceLocalInclude - * @subpackage simple_html_dom - */ -/** - * All of the Defines for the classes below. - * @author S.C. Chen - */ -define('HDOM_TYPE_ELEMENT', 1); -define('HDOM_TYPE_COMMENT', 2); -define('HDOM_TYPE_TEXT', 3); -define('HDOM_TYPE_ENDTAG', 4); -define('HDOM_TYPE_ROOT', 5); -define('HDOM_TYPE_UNKNOWN', 6); -define('HDOM_QUOTE_DOUBLE', 0); -define('HDOM_QUOTE_SINGLE', 1); -define('HDOM_QUOTE_NO', 3); -define('HDOM_INFO_BEGIN', 0); -define('HDOM_INFO_END', 1); -define('HDOM_INFO_QUOTE', 2); -define('HDOM_INFO_SPACE', 3); -define('HDOM_INFO_TEXT', 4); -define('HDOM_INFO_INNER', 5); -define('HDOM_INFO_OUTER', 6); -define('HDOM_INFO_ENDSPACE', 7); -define('DEFAULT_TARGET_CHARSET', 'UTF-8'); -define('DEFAULT_BR_TEXT', "\r\n"); - -// helper functions -// ----------------------------------------------------------------------------- -// get html dom from file -// $maxlen is defined in the code as PHP_STREAM_COPY_ALL which is defined as -1. -function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT) -{ - // We DO force the tags to be terminated. - $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $defaultBRText); - // For sourceforge users: uncomment the next line and comment the retreive_url_contents line 2 lines down if it is not already done. - $contents = file_get_contents($url, $use_include_path, $context, $offset); - // Paperg - use our own mechanism for getting the contents as we want to control the timeout. -// $contents = retrieve_url_contents($url); - if (empty($contents)) - { - return false; - } - // The second parameter can force the selectors to all be lowercase. - $dom->load($contents, $lowercase, $stripRN); - return $dom; -} - -// get html dom from string -function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT) -{ - $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $defaultBRText); - if (empty($str)) - { - $dom->clear(); - return false; - } - $dom->load($str, $lowercase, $stripRN); - return $dom; -} - -// dump html dom tree -function dump_html_tree($node, $show_attr=true, $deep=0) -{ - $node->dump($node); -} - -/** - * simple html dom node - * PaperG - added ability for "find" routine to lowercase the value of the selector. - * PaperG - added $tag_start to track the start position of the tag in the total byte index - * - * @package PlaceLocalInclude - */ -class simple_html_dom_node -{ - public $nodetype = HDOM_TYPE_TEXT; - public $tag = 'text'; - public $attr = array(); - public $children = array(); - public $nodes = array(); - public $parent = null; - public $_ = array(); - public $tag_start = 0; - private $dom = null; - - function __construct($dom) - { - $this->dom = $dom; - $dom->nodes[] = $this; - } - - function __destruct() - { - $this->clear(); - } - - function __toString() - { - return $this->outertext(); - } - - // clean up memory due to php5 circular references memory leak... - function clear() - { - $this->dom = null; - $this->nodes = null; - $this->parent = null; - $this->children = null; - } - - // dump node's tree - function dump($show_attr=true, $deep=0) - { - $lead = str_repeat(' ', $deep); - - echo $lead . $this->tag; - if ($show_attr && count($this->attr) > 0) - { - echo '('; - foreach ($this->attr as $k => $v) - echo "[$k]=>\"" . $this->$k . '", '; - echo ')'; - } - echo "\n"; - - foreach ($this->nodes as $c) - $c->dump($show_attr, $deep + 1); - } - - // Debugging function to dump a single dom node with a bunch of information about it. - function dump_node() - { - echo $this->tag; - if (count($this->attr) > 0) - { - echo '('; - foreach ($this->attr as $k => $v) - { - echo "[$k]=>\"" . $this->$k . '", '; - } - echo ')'; - } - if (count($this->attr) > 0) - { - echo ' $_ ('; - foreach ($this->_ as $k => $v) - { - if (is_array($v)) - { - echo "[$k]=>("; - foreach ($v as $k2 => $v2) - { - echo "[$k2]=>\"" . $v2 . '", '; - } - echo ")"; - } - else - { - echo "[$k]=>\"" . $v . '", '; - } - } - echo ")"; - } - - if (isset($this->text)) - { - echo " text: (" . $this->text . ")"; - } - - echo " children: " . count($this->children); - echo " nodes: " . count($this->nodes); - echo " tag_start: " . $this->tag_start; - echo "\n"; - } - - // returns the parent of node - function parent() - { - return $this->parent; - } - - // returns children of node - function children($idx=-1) - { - if ($idx === -1) - return $this->children; - if (isset($this->children[$idx])) - return $this->children[$idx]; - return null; - } - - // returns the first child of node - function first_child() - { - if (count($this->children) > 0) - return $this->children[0]; - return null; - } - - // returns the last child of node - function last_child() - { - if (($count = count($this->children)) > 0) - return $this->children[$count - 1]; - return null; - } - - // returns the next sibling of node - function next_sibling() - { - if ($this->parent === null) - return null; - $idx = 0; - $count = count($this->parent->children); - while ($idx < $count && $this !== $this->parent->children[$idx]) - ++$idx; - if (++$idx >= $count) - return null; - return $this->parent->children[$idx]; - } - - // returns the previous sibling of node - function prev_sibling() - { - if ($this->parent === null) - return null; - $idx = 0; - $count = count($this->parent->children); - while ($idx < $count && $this !== $this->parent->children[$idx]) - ++$idx; - if (--$idx < 0) - return null; - return $this->parent->children[$idx]; - } - - // function to locate a specific ancestor tag in the path to the root. - function find_ancestor_tag($tag) - { - global $debugObject; - if (is_object($debugObject)) - { - $debugObject->debugLogEntry(1); - } - - // Start by including ourselves in the comparison. - $returnDom = $this; - - while (!is_null($returnDom)) - { - if (is_object($debugObject)) - { - $debugObject->debugLog(2, "Current tag is: " . $returnDom->tag); - } - - if ($returnDom->tag == $tag) - { - break; - } - $returnDom = $returnDom->parent; - } - return $returnDom; - } - - // get dom node's inner html - function innertext() - { - if (isset($this->_[HDOM_INFO_INNER])) - return $this->_[HDOM_INFO_INNER]; - if (isset($this->_[HDOM_INFO_TEXT])) - return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); - - $ret = ''; - foreach ($this->nodes as $n) - $ret .= $n->outertext(); - return $ret; - } - - // get dom node's outer text (with tag) - function outertext() - { - global $debugObject; - if (is_object($debugObject)) - { - $text = ''; - if ($this->tag == 'text') - { - if (!empty($this->text)) - { - $text = " with text: " . $this->text; - } - } - $debugObject->debugLog(1, 'Innertext of tag: ' . $this->tag . $text); - } - - if ($this->tag === 'root') - return $this->innertext(); - - // trigger callback - if ($this->dom && $this->dom->callback !== null) - { - call_user_func_array($this->dom->callback, array($this)); - } - - if (isset($this->_[HDOM_INFO_OUTER])) - return $this->_[HDOM_INFO_OUTER]; - if (isset($this->_[HDOM_INFO_TEXT])) - return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); - - // render begin tag - if ($this->dom && $this->dom->nodes[$this->_[HDOM_INFO_BEGIN]]) - { - $ret = $this->dom->nodes[$this->_[HDOM_INFO_BEGIN]]->makeup(); - } - else - { - $ret = ""; - } - - // render inner text - if (isset($this->_[HDOM_INFO_INNER])) - { - // If it's a br tag... don't return the HDOM_INNER_INFO that we may or may not have added. - if ($this->tag != "br") - { - $ret .= $this->_[HDOM_INFO_INNER]; - } - } - else - { - if ($this->nodes) - { - foreach ($this->nodes as $n) - { - $ret .= $this->convert_text($n->outertext()); - } - } - } - - // render end tag - if (isset($this->_[HDOM_INFO_END]) && $this->_[HDOM_INFO_END] != 0) - $ret .= 'tag . '>'; - return $ret; - } - - // get dom node's plain text - function text() - { - if (isset($this->_[HDOM_INFO_INNER])) - return $this->_[HDOM_INFO_INNER]; - switch ($this->nodetype) - { - case HDOM_TYPE_TEXT: return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); - case HDOM_TYPE_COMMENT: return ''; - case HDOM_TYPE_UNKNOWN: return ''; - } - if (strcasecmp($this->tag, 'script') === 0) - return ''; - if (strcasecmp($this->tag, 'style') === 0) - return ''; - - $ret = ''; - // In rare cases, (always node type 1 or HDOM_TYPE_ELEMENT - observed for some span tags, and some p tags) $this->nodes is set to NULL. - // NOTE: This indicates that there is a problem where it's set to NULL without a clear happening. - // WHY is this happening? - if (!is_null($this->nodes)) - { - foreach ($this->nodes as $n) - { - $ret .= $this->convert_text($n->text()); - } - } - return $ret; - } - - function xmltext() - { - $ret = $this->innertext(); - $ret = str_ireplace('', '', $ret); - return $ret; - } - - // build node's text with tag - function makeup() - { - // text, comment, unknown - if (isset($this->_[HDOM_INFO_TEXT])) - return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); - - $ret = '<' . $this->tag; - $i = -1; - - foreach ($this->attr as $key => $val) - { - ++$i; - - // skip removed attribute - if ($val === null || $val === false) - continue; - - $ret .= $this->_[HDOM_INFO_SPACE][$i][0]; - //no value attr: nowrap, checked selected... - if ($val === true) - $ret .= $key; - else - { - switch ($this->_[HDOM_INFO_QUOTE][$i]) - { - case HDOM_QUOTE_DOUBLE: $quote = '"'; - break; - case HDOM_QUOTE_SINGLE: $quote = '\''; - break; - default: $quote = ''; - } - $ret .= $key . $this->_[HDOM_INFO_SPACE][$i][1] . '=' . $this->_[HDOM_INFO_SPACE][$i][2] . $quote . $val . $quote; - } - } - $ret = $this->dom->restore_noise($ret); - return $ret . $this->_[HDOM_INFO_ENDSPACE] . '>'; - } - - // find elements by css selector - //PaperG - added ability for find to lowercase the value of the selector. - function find($selector, $idx=null, $lowercase=false) - { - $selectors = $this->parse_selector($selector); - if (($count = count($selectors)) === 0) - return array(); - $found_keys = array(); - - // find each selector - for ($c = 0; $c < $count; ++$c) - { - // The change on the below line was documented on the sourceforge code tracker id 2788009 - // used to be: if (($levle=count($selectors[0]))===0) return array(); - if (($levle = count($selectors[$c])) === 0) - return array(); - if (!isset($this->_[HDOM_INFO_BEGIN])) - return array(); - - $head = array($this->_[HDOM_INFO_BEGIN] => 1); - - // handle descendant selectors, no recursive! - for ($l = 0; $l < $levle; ++$l) - { - $ret = array(); - foreach ($head as $k => $v) - { - $n = ($k === -1) ? $this->dom->root : $this->dom->nodes[$k]; - //PaperG - Pass this optional parameter on to the seek function. - $n->seek($selectors[$c][$l], $ret, $lowercase); - } - $head = $ret; - } - - foreach ($head as $k => $v) - { - if (!isset($found_keys[$k])) - $found_keys[$k] = 1; - } - } - - // sort keys - ksort($found_keys); - - $found = array(); - foreach ($found_keys as $k => $v) - $found[] = $this->dom->nodes[$k]; - - // return nth-element or array - if (is_null($idx)) - return $found; - else if ($idx < 0) - $idx = count($found) + $idx; - return (isset($found[$idx])) ? $found[$idx] : null; - } - - // seek for given conditions - // PaperG - added parameter to allow for case insensitive testing of the value of a selector. - protected function seek($selector, &$ret, $lowercase=false) - { - global $debugObject; - if (is_object($debugObject)) - { - $debugObject->debugLogEntry(1); - } - - list($tag, $key, $val, $exp, $no_key) = $selector; - - // xpath index - if ($tag && $key && is_numeric($key)) - { - $count = 0; - foreach ($this->children as $c) - { - if ($tag === '*' || $tag === $c->tag) - { - if (++$count == $key) - { - $ret[$c->_[HDOM_INFO_BEGIN]] = 1; - return; - } - } - } - return; - } - - $end = (!empty($this->_[HDOM_INFO_END])) ? $this->_[HDOM_INFO_END] : 0; - if ($end == 0) - { - $parent = $this->parent; - while (!isset($parent->_[HDOM_INFO_END]) && $parent !== null) - { - $end -= 1; - $parent = $parent->parent; - } - $end += $parent->_[HDOM_INFO_END]; - } - - for ($i = $this->_[HDOM_INFO_BEGIN] + 1; $i < $end; ++$i) - { - $node = $this->dom->nodes[$i]; - - $pass = true; - - if ($tag === '*' && !$key) - { - if (in_array($node, $this->children, true)) - $ret[$i] = 1; - continue; - } - - // compare tag - if ($tag && $tag != $node->tag && $tag !== '*') - { - $pass = false; - } - // compare key - if ($pass && $key) - { - if ($no_key) - { - if (isset($node->attr[$key])) - $pass = false; - } else - { - if (($key != "plaintext") && !isset($node->attr[$key])) - $pass = false; - } - } - // compare value - if ($pass && $key && $val && $val !== '*') - { - // If they have told us that this is a "plaintext" search then we want the plaintext of the node - right? - if ($key == "plaintext") - { - // $node->plaintext actually returns $node->text(); - $nodeKeyValue = $node->text(); - } - else - { - // this is a normal search, we want the value of that attribute of the tag. - $nodeKeyValue = $node->attr[$key]; - } - if (is_object($debugObject)) - { - $debugObject->debugLog(2, "testing node: " . $node->tag . " for attribute: " . $key . $exp . $val . " where nodes value is: " . $nodeKeyValue); - } - - //PaperG - If lowercase is set, do a case insensitive test of the value of the selector. - if ($lowercase) - { - $check = $this->match($exp, strtolower($val), strtolower($nodeKeyValue)); - } - else - { - $check = $this->match($exp, $val, $nodeKeyValue); - } - if (is_object($debugObject)) - { - $debugObject->debugLog(2, "after match: " . ($check ? "true" : "false")); - } - - // handle multiple class - if (!$check && strcasecmp($key, 'class') === 0) - { - foreach (explode(' ', $node->attr[$key]) as $k) - { - // Without this, there were cases where leading, trailing, or double spaces lead to our comparing blanks - bad form. - if (!empty($k)) - { - if ($lowercase) - { - $check = $this->match($exp, strtolower($val), strtolower($k)); - } - else - { - $check = $this->match($exp, $val, $k); - } - if ($check) - break; - } - } - } - if (!$check) - $pass = false; - } - if ($pass) - $ret[$i] = 1; - unset($node); - } - // It's passed by reference so this is actually what this function returns. - if (is_object($debugObject)) - { - $debugObject->debugLog(1, "EXIT - ret: ", $ret); - } - } - - protected function match($exp, $pattern, $value) - { - global $debugObject; - if (is_object($debugObject)) - { - $debugObject->debugLogEntry(1); - } - - switch ($exp) - { - case '=': - return ($value === $pattern); - case '!=': - return ($value !== $pattern); - case '^=': - return preg_match("/^" . preg_quote($pattern, '/') . "/", $value); - case '$=': - return preg_match("/" . preg_quote($pattern, '/') . "$/", $value); - case '*=': - if ($pattern[0] == '/') - { - return preg_match($pattern, $value); - } - return preg_match("/" . $pattern . "/i", $value); - } - return false; - } - - protected function parse_selector($selector_string) - { - global $debugObject; - if (is_object($debugObject)) - { - $debugObject->debugLogEntry(1); - } - - // pattern of CSS selectors, modified from mootools - // Paperg: Add the colon to the attrbute, so that it properly finds like google does. - // Note: if you try to look at this attribute, yo MUST use getAttribute since $dom->x:y will fail the php syntax check. -// Notice the \[ starting the attbute? and the @? following? This implies that an attribute can begin with an @ sign that is not captured. -// This implies that an html attribute specifier may start with an @ sign that is NOT captured by the expression. -// farther study is required to determine of this should be documented or removed. -// $pattern = "/([\w-:\*]*)(?:\#([\w-]+)|\.([\w-]+))?(?:\[@?(!?[\w-]+)(?:([!*^$]?=)[\"']?(.*?)[\"']?)?\])?([\/, ]+)/is"; - $pattern = "/([\w-:\*]*)(?:\#([\w-]+)|\.([\w-]+))?(?:\[@?(!?[\w-:]+)(?:([!*^$]?=)[\"']?(.*?)[\"']?)?\])?([\/, ]+)/is"; - preg_match_all($pattern, trim($selector_string) . ' ', $matches, PREG_SET_ORDER); - if (is_object($debugObject)) - { - $debugObject->debugLog(2, "Matches Array: ", $matches); - } - - $selectors = array(); - $result = array(); - //print_r($matches); - - foreach ($matches as $m) - { - $m[0] = trim($m[0]); - if ($m[0] === '' || $m[0] === '/' || $m[0] === '//') - continue; - // for browser generated xpath - if ($m[1] === 'tbody') - continue; - - list($tag, $key, $val, $exp, $no_key) = array($m[1], null, null, '=', false); - if (!empty($m[2])) - { - $key = 'id'; - $val = $m[2]; - } - if (!empty($m[3])) - { - $key = 'class'; - $val = $m[3]; - } - if (!empty($m[4])) - { - $key = $m[4]; - } - if (!empty($m[5])) - { - $exp = $m[5]; - } - if (!empty($m[6])) - { - $val = $m[6]; - } - - // convert to lowercase - if ($this->dom->lowercase) - { - $tag = strtolower($tag); - $key = strtolower($key); - } - //elements that do NOT have the specified attribute - if (isset($key[0]) && $key[0] === '!') - { - $key = substr($key, 1); - $no_key = true; - } - - $result[] = array($tag, $key, $val, $exp, $no_key); - if (trim($m[7]) === ',') - { - $selectors[] = $result; - $result = array(); - } - } - if (count($result) > 0) - $selectors[] = $result; - return $selectors; - } - - function __get($name) - { - if (isset($this->attr[$name])) - { - return $this->convert_text($this->attr[$name]); - } - switch ($name) - { - case 'outertext': return $this->outertext(); - case 'innertext': return $this->innertext(); - case 'plaintext': return $this->text(); - case 'xmltext': return $this->xmltext(); - default: return array_key_exists($name, $this->attr); - } - } - - function __set($name, $value) - { - switch ($name) - { - case 'outertext': return $this->_[HDOM_INFO_OUTER] = $value; - case 'innertext': - if (isset($this->_[HDOM_INFO_TEXT])) - return $this->_[HDOM_INFO_TEXT] = $value; - return $this->_[HDOM_INFO_INNER] = $value; - } - if (!isset($this->attr[$name])) - { - $this->_[HDOM_INFO_SPACE][] = array(' ', '', ''); - $this->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_DOUBLE; - } - $this->attr[$name] = $value; - } - - function __isset($name) - { - switch ($name) - { - case 'outertext': return true; - case 'innertext': return true; - case 'plaintext': return true; - } - //no value attr: nowrap, checked selected... - return (array_key_exists($name, $this->attr)) ? true : isset($this->attr[$name]); - } - - function __unset($name) - { - if (isset($this->attr[$name])) - unset($this->attr[$name]); - } - - // PaperG - Function to convert the text from one character set to another if the two sets are not the same. - function convert_text($text) - { - global $debugObject; - if (is_object($debugObject)) - { - $debugObject->debugLogEntry(1); - } - - $converted_text = $text; - - $sourceCharset = ""; - $targetCharset = ""; - if ($this->dom) - { - $sourceCharset = strtoupper($this->dom->_charset); - $targetCharset = strtoupper($this->dom->_target_charset); - } - if (is_object($debugObject)) - { - $debugObject->debugLog(3, "source charset: " . $sourceCharset . " target charaset: " . $targetCharset); - } - - if (!empty($sourceCharset) && !empty($targetCharset) && (strcasecmp($sourceCharset, $targetCharset) != 0)) - { - // Check if the reported encoding could have been incorrect and the text is actually already UTF-8 - if ((strcasecmp($targetCharset, 'UTF-8') == 0) && ($this->is_utf8($text))) - { - $converted_text = $text; - } - else - { - $converted_text = iconv($sourceCharset, $targetCharset, $text); - } - } - - return $converted_text; - } - - function is_utf8($string) - { - return (utf8_encode(utf8_decode($string)) == $string); - } - - // camel naming conventions - function getAllAttributes() - { - return $this->attr; - } - - function getAttribute($name) - { - return $this->__get($name); - } - - function setAttribute($name, $value) - { - $this->__set($name, $value); - } - - function hasAttribute($name) - { - return $this->__isset($name); - } - - function removeAttribute($name) - { - $this->__set($name, null); - } - - function getElementById($id) - { - return $this->find("#$id", 0); - } - - function getElementsById($id, $idx=null) - { - return $this->find("#$id", $idx); - } - - function getElementByTagName($name) - { - return $this->find($name, 0); - } - - function getElementsByTagName($name, $idx=null) - { - return $this->find($name, $idx); - } - - function parentNode() - { - return $this->parent(); - } - - function childNodes($idx=-1) - { - return $this->children($idx); - } - - function firstChild() - { - return $this->first_child(); - } - - function lastChild() - { - return $this->last_child(); - } - - function nextSibling() - { - return $this->next_sibling(); - } - - function previousSibling() - { - return $this->prev_sibling(); - } -} - -/** - * simple html dom parser - * Paperg - in the find routine: allow us to specify that we want case insensitive testing of the value of the selector. - * Paperg - change $size from protected to public so we can easily access it - * Paperg - added ForceTagsClosed in the constructor which tells us whether we trust the html or not. Default is to NOT trust it. - * - * @package PlaceLocalInclude - */ -class simple_html_dom -{ - public $root = null; - public $nodes = array(); - public $callback = null; - public $lowercase = false; - public $size; - protected $pos; - protected $doc; - protected $char; - protected $cursor; - protected $parent; - protected $noise = array(); - protected $token_blank = " \t\r\n"; - protected $token_equal = ' =/>'; - protected $token_slash = " />\r\n\t"; - protected $token_attr = ' >'; - protected $_charset = ''; - protected $_target_charset = ''; - protected $default_br_text = ""; - // use isset instead of in_array, performance boost about 30%... - protected $self_closing_tags = array('img' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'link' => 1, 'hr' => 1, 'base' => 1, 'embed' => 1, 'spacer' => 1); - protected $block_tags = array('root' => 1, 'body' => 1, 'form' => 1, 'div' => 1, 'span' => 1, 'table' => 1); - // Known sourceforge issue #2977341 - // B tags that are not closed cause us to return everything to the end of the document. - protected $optional_closing_tags = array( - 'tr' => array('tr' => 1, 'td' => 1, 'th' => 1), - 'th' => array('th' => 1), - 'td' => array('td' => 1), - 'li' => array('li' => 1), - 'dt' => array('dt' => 1, 'dd' => 1), - 'dd' => array('dd' => 1, 'dt' => 1), - 'dl' => array('dd' => 1, 'dt' => 1), - 'p' => array('p' => 1), - 'nobr' => array('nobr' => 1), - 'b' => array('b' => 1), - ); - - function __construct($str=null, $lowercase=true, $forceTagsClosed=true, $target_charset=DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT) - { - if ($str) - { - if (preg_match("/^http:\/\//i", $str) || is_file($str)) - $this->load_file($str); - else - $this->load($str, $lowercase, $stripRN, $defaultBRText); - } - // Forcing tags to be closed implies that we don't trust the html, but it can lead to parsing errors if we SHOULD trust the html. - if (!$forceTagsClosed) - { - $this->optional_closing_array = array(); - } - $this->_target_charset = $target_charset; - } - - function __destruct() - { - $this->clear(); - } - - // load html from string - function load($str, $lowercase=true, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT) - { - global $debugObject; - - // prepare - $this->prepare($str, $lowercase, $stripRN, $defaultBRText); - // strip out comments - $this->remove_noise("''is"); - // strip out cdata - $this->remove_noise("''is", true); - // Per sourceforge http://sourceforge.net/tracker/?func=detail&aid=2949097&group_id=218559&atid=1044037 - // Script tags removal now preceeds style tag removal. - // strip out