diff --git a/config.yml b/config.yml index b2116eb..f8b5058 100644 --- a/config.yml +++ b/config.yml @@ -1,42 +1,16 @@ # =============================================== -# == Default Configuration File of 'ShopChest' == +# ====== Configuration File of 'ShopChest' ====== # =============================================== # # Lines starting with '#' are comments and are ignored by the server. -# -# If you are using special characters be sure to save this file in ANSI encoding! -# -# Color Codes (Must be BEFORE Formatting Codes): -# &0 = Black -# &1 = Dark Blue -# &2 = Dark Green -# &3 = Dark Aqua -# &4 = Dark Red -# &5 = Dark Purple -# &6 = Gold -# &7 = Gray -# &8 = Dark Gray -# &9 = Blue -# &a = Green -# &b = Aqua -# &c = Red -# &d = Light Purple -# &e = Yellow -# &f = White -# -# Formatting Codes (Must be AFTER Color Codes): -# &k = Obfuscated -# &l = Bold -# &m = Strikethrough -# &n = Underline -# &o = Italic -# &r = Reset -# \n = Extra line # Set the main command you have to enter to manage the shops (default: "/shop ...") -# DO NOT USE COLOR-/FORMATTING CODES HERE! main-command-name: "shop" +# Set the language of the item-, enchantment-, potion- and arrow-effect names +# The value must equal to the name of one of a file in the 'lang' folder (without the '.lang' extension) +language-file: "de_DE" + # Set the maximal distance to the shop where the player can see the hologram. # Value MUST be a number (e.g. 1, 1.5, 2.75, ...) maximal-distance: 1.75 @@ -86,7 +60,7 @@ database: # Either use 'SQLite' or 'MySQL'. Otherwise you will break the plugin! type: "SQLite" - # If the specified is 'MySQL', specify the... + # If the specified type is 'MySQL', here you configure the... # (You can leave this empty if you're using SQLite) mysql: @@ -127,254 +101,4 @@ shop-limits: # Important: You must have exactly 4 spaces between the text and the edge. player: [] # "EpicEric": 50 - # "898afbbe-6566-4a0f-b0ac-145868b3cb12": 50 - -messages: - - # Set the message when a shop is created at the clicked chest. - shop-created: "&6Shop created." - - # Set the message when the clicked chest already is a shop. - chest-already-shop: "&cChest already is shop." - - # Set the message when the clicked shop is removed. - shop-removed: "&6Shop removed." - - # Set the message when the clicked chest is not a shop. - chest-no-shop: "&cChest is not a shop." - - # Set the message when the player doesn't have enough money to create a shop - # Usable Regex: %CREATION-PRICE% - shop-create-not-enough-money: "&cNot enough money. You need &6%CREATION-PRICE% &cto create a shop." - - shop-info: - - # Set the vendor message the player gets after entering '/shop info'. - # Usable regex: %VENDOR% - vendor: "&6Vendor: &e%VENDOR%" - - # Set the product message the player gets after entering '/shop info'. - # Usable regex: %AMOUNT%, %ITEMNAME% - product: "&6Product: &e%AMOUNT% x %ITEMNAME%" - - # Set the in-stock message the player after entering '/shop info'. - # Usable regex: %AMOUNT% - stock: "&6In Stock: &e%AMOUNT%" - - # Set the enchantments message the player gets after entering '/shop info' if the product is enchanted - # Usable regex: %ENCHANTMENT% - enchantments: "&6Enchantments: &e%ENCHANTMENT%" - - # Set the arrow effect message the player gets after entering '/shop info' if the product is a tipped arrow (1.9 and later) - # Usable regex: %ARROW-EFFECT% - arrow-effect: "&6Arrow Effect: &e%ARROW-EFFECT%" - - # If the product is a tipped arrow but it doesn't have an effect, this gets displayed instead of the arrow effect - none: "&7None" - - # Set the price message the player gets after entering '/shop info'. - # Usable regex: %BUY-PRICE%, %SELL-PRICE% - price: "&6Price: Buy: &e%BUY-PRICE%&6 Sell: &e%SELL-PRICE%" - - # If the sell price or buy price is disabled, this message will be displayed instead of the price in the message above. - disabled: "&7Disabled&e" - - # Set the type message the player gets after entering '/shop info' ... - # ... when the shop is normal. - is-normal: "&6Type: &eNormal" - - # ... when the shop is an admin shop. - is-admin: "&6Type: &eAdmin" - - # Set the message when the clicked block is not a chest. - block-no-chest: "&cBlock is not a chest" - - # Set the message when the player tries to create a shop with sell price and buy price set to 0 - buy-and-sell-disabled: "&cYou can't create a shop with buying and selling disabled." - - # Set the message when the player successfully bought something. - # Usable regex: %AMOUNT%, %ITEMNAME%, %BUY-PRICE%, %VENDOR% - buy-success: "&aYou bought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a from &6%VENDOR%&a." - - # Set the message when the player successfully bought something from an admin shop. - # Usable regex: %AMOUNT%, %ITEMNAME%, %BUY-PRICE% - buy-success-admin: "&aYou bought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a." - - # Set the message when the player successfully sold something. - # Usable regex: %AMOUNT%, %ITEMNAME%, %SELL-PRICE%, %VENDOR% - sell-success: "&aYou sold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a to &6%VENDOR%&a." - - # Set the message when the player successfully sold something to an admin shop. - # Usable regex: %AMOUNT%, %ITEMNAME%, %SELL-PRICE% - sell-success-admin: "&aYou sold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a." - - # Set the message when a player bought something from the player's shop. - # Usable regex: %AMOUNT%, %ITEMNAME%, %BUY-PRICE%, %PLAYER% - someone-bought: "&6%PLAYER% &abought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a from your shop." - - # Set the message when a player sold something to the player's shop. - # Usable regex: %AMOUNT%, %ITEMNAME%, %SELL-PRICE%, %PLAYER% - someone-sold: "&6%PLAYER% &asold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a from your shop." - - # Set the message when the inventory is full when the player is buying something. - not-enough-inventory-space: "&cNot enough space in inventory." - - # Set the message when the shop's inventory is full when the player is selling something. - chest-not-enough-inventory-space: "&cShop is full." - - # Set the message when the player doesn't have enough money to buy something. - not-enough-money: "&cNot enough money." - - # Set the message when the player doesn't have enough items to sell. - not-enough-items: "&cNot enough items." - - # Set the message when the vendor doesn't have enough money to buy something from the player - vendor-not-enough-money: "&cVendor has not enough money." - - # Set the message when the shop is out of stock. - out-of-stock: "&cShop out of stock." - - # Set the message when an error occurred. - # Usable regex: %ERROR% - error-occurred: "&cAn error occurred: %ERROR%" - - # Set the message when the arguments and of '/shop create' are not a number. - amount-and-price-not-number: "&cAmount and price must be a number." - - # Set the message when the player doesn't hold an item in the hand. - no-item-in-hand: "&cNo item in hand" - - # Set the message when the player must click a chest to create a shop. - click-chest-to-create-shop: "&aClick a chest to create a shop." - - # Set the message when the player must click a shop to remove it. - click-chest-to-remove-shop: "&aClick a shop-chest to remove the shop." - - # Set the message when the player must click a shop to retrieve information. - click-chest-for-info: "&aClick a shop to retrieve information." - - # Set the message when the player opened a shop. - # Usable regex: %VENDOR% - opened-shop: "&aYou opened %VENDOR%'s shop." - - # Set the message when the player tries to break a shop. - cannot-break-shop: "&cYou can't break a shop." - - # Set the message when the player tries to sell a broken item. - cannot-sell-broken-item: "&cYou can't sell a broken item." - - # Set the message when the entered buy price is below the minimum price. - # Usable regex: %MIN-PRICE% - buy-price-too-low: "&cThe buy price must be higher than %MIN-PRICE%." - - # Set the message when the entered sell price is below the minimum price. - # Usable regex: %MIN-PRICE% - sell-price-too-low: "&cThe sell price must be higher than %MIN-PRICE%." - - # Set the message when buying is disabled at the shop. - buying-disabled: "&cBuying is disabled at this shop." - - # Set the message when selling is disabled at the shop. - selling-disabled: "&cSelling is disabled at this shop." - - # Set the message when reloading is done. - # Usable regex: %AMOUNT% (Amount of shops) - reloaded-shops: "&aSuccessfully reloaded %AMOUNT% shop/s." - - # Set the message when the player's shop limit is reached. - # Usable regex: %LIMIT% - shop-limit-reached: "&cYou reached your limit of &6%LIMIT% &cshop/s." - - # Set the message that shows the player how many shop slots of his shop limit he has occupied. - # Usable regex: %LIMIT%, %AMOUNT% (Amount of shops) - occupied-shop-slots: "&6You have &c%AMOUNT%/%LIMIT% &6shop slot/s occupied." - - # Set the message when the player tries to create a shop with an item which is listed in the blacklist. - cannot-sell-item: "&cYou cannot create a shop with this item." - - update: - - # Set the message when an update is available. - # Usable regex: %VERSION% - update-available: "&6&lVersion &c%VERSION% &6of &cShopChest &6is available &chere." - - # Set the message you get when hovering over the available message. - click-to-download: "Click to download" - - # Set the message when no update is available. - no-update: "&6&lNo new update available." - - # Set the message when the update checker is started. - checking: "&6&lChecking for updates..." - - # Set the message when an error occurs while checking for updates. - error: "&c&lError while checking for updates." - - hologram: - - # Set the text in the first row of the shop's hologram - # Usable regex: %ITEMNAME%, %AMOUNT% - format: "%AMOUNT% * %ITEMNAME%" - - # Set the text in the second row of the shop's hologram when the player can buy and sell an item. - # Usable regex: %BUY-PRICE%, %SELL-PRICE% - buy-and-sell: "Buy %BUY-PRICE% | %SELL-PRICE% Sell" - - # Set the text in the second row of the shop's hologram when the player can only buy an item. - # Usable regex: %BUY-PRICE% - only-buy: "Buy %BUY-PRICE%" - - # Set the text in the second row of the shop's hologram when the player can only sell an item. - # Usable regex: %SELL-PRICE% - only-sell: "Sell %SELL-PRICE%" - - no-permission: - - # Set the message when a not permitted player tries to create a shop. - create: "&cYou don't have permission to create a shop." - - # Set the message when a not permitted player tries to create an admin shop. - create-admin: "&cYou don't have permission to create an admin shop." - - # Set the message when a not permitted player tries to open another player's shop. - open-others: "&cYou don't have permission to open this chest." - - # Set the message when a not permitted player tries to buy something. - buy: "&cYou don't have permission to buy something." - - # Set the message when a not permitted player tries to sell something. - sell: "&cYou don't have permission to sell something." - - # Set the message when a not permitted player tries to remove another player's shop. - remove-others: "&cYou don't have permission to remove this shop." - - # Set the message when a not permitted player tries to reload the shops. - reload: "&cYou don't have permission to reload the shops." - - # Set the message when a not permitted player tries to check for updates. - update: "&cYou don't have permission to check for updates." - - # Set the message when a not permitted player tries to view the shop limits. - limits: "&cYou don't have permission to view the shop limits." - - command-description: - - # Set the command description message for '/ create' when you type '/'. - create: "Create a shop." - - # Set the command description message for '/ remove' when you type '/'. - remove: "Remove a shop." - - # Set the command description message for '/ info' when you type '/'. - info: "Retrieve shop information." - - # Set the command description message for '/ reload' when you type '/'. - reload: "Reload shops." - - # Set the command description message for '/ update' when you type '/'. - update: "Check for Updates." - - # Set the command description message for '/ limits' when you type '/'. - limits: "View shop limits." - -# End of file. \ No newline at end of file + # "898afbbe-6566-4a0f-b0ac-145868b3cb12": 50 \ No newline at end of file diff --git a/lang/de_DE.lang b/lang/de_DE.lang new file mode 100644 index 0000000..4f51f3f --- /dev/null +++ b/lang/de_DE.lang @@ -0,0 +1,1528 @@ +message.shop-created=&6Shop erstellt. +message.chest-already-shop=&cKiste ist bereits ein Shop. +message.shop-removed=&6Shop entfernt. +message.chest-no-shop=&cKiste ist kein Shop. +message.shop-create-not-enough-money=&cNicht genug Geld. Du brauchst &6%CREATION-PRICE% &cum einen Shop zu erstellen. +message.shopInfo.vendor=&6Verkäufer: &e%VENDOR% +message.shopInfo.product=&6Produkt: &e%AMOUNT% x %ITEMNAME% +message.shopInfo.stock=&6Auf Lager: &e%AMOUNT% +message.shopInfo.enchantments=&6Verzauberungen: &e%ENCHANTMENT% +message.shopInfo.potion-effect=&6Trank-Effekte: &e%POTION-EFFECT% +message.shopInfo.music-disc-title=&6Schallplattentitel: &e%MUSIC-TITLE% +message.shopInfo.none=&7Keine +message.shopInfo.price=&6Preis: Kauf: &e%BUY-PRICE%&6 Verkauf: &e%SELL-PRICE% +message.shopInfo.disabled=&7Deaktiviert +message.shopInfo.is-normal=&6Typ: &eNormal +message.shopInfo.is-admin=&6Typ: &eAdmin +message.buy-and-sell-disabled=&cDu kannst keinen Shop ohne Kauf- und Verkaufspreis erstellen. +message.buy-success=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE%&a von &6%VENDOR% &agekauft. +message.buy-success-admin=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE% &agekauft. +message.sell-success=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE%&a an &6%VENDOR% &averkauft. +message.sell-success-admin=&aDu hast &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE% &averkauft. +message.someone-bought=&6%PLAYER% &ahat &6%AMOUNT% x %ITEMNAME%&a für &6%BUY-PRICE%&a von deinem Shop gekauft. +message.someone-sold=&6%PLAYER% &ahat &6%AMOUNT% x %ITEMNAME%&a für &6%SELL-PRICE%&a an deinen Shop verkauft. +message.not-enough-inventory-space=&cNicht genug Platz im Inventar. +message.chest-not-enough-inventory-space=&cShop ist voll. +message.not-enough-money=&cNicht genug Geld. +message.not-enough-items=&cNicht genug Items. +message.vendor-not-enough-money=&cVerkäufer hat nicht genug Geld. +message.out-of-stock=&cShop ausverkauft. +message.error-occurred=&cEin Fehler ist aufgetreten: %ERROR% +message.amount-and-price-not-number=&cAnzahl und Preis müssen Zahlen sein. +message.no-item-in-hand=&cKein Item in der Hand. +message.click-chest-to-create-shop=&aKlicke auf eine Kiste, um einen Shop zu erstellen. +message.click-chest-to-remove-shop=&aKlicke auf einen Shop, um ihn zu entfernen. +message.click-chest-for-info=&aKlicke auf einen Shop, um Informationen über ihn zu bekommen. +message.opened-shop=&aDu hast &6%VENDOR%&as Shop geöffnet. +message.cannot-break-shop=&cDu kannst einen Shop nicht zerstören. +message.cannot-sell-broken-item=&cDu kannst kein kaputtes Artikel verkaufen. +message.buy-price-too-low=&cDer Kaufpreis muss höher sein als %MIN-PRICE%. +message.sell-price-too-low=&cDer Verkaufspreis muss höher sein als %MIN-PRICE%. +message.buying-disabled=&cKaufen ist an diesem Shop nicht möglich. +message.selling-disabled=&cVerkaufen ist an diesem Shop nicht möglich. +message.reloaded-shops=&a%AMOUNT% Shop/s wurden erfolgreich neu geladen. +message.shop-limit-reached=&cDu hast dein Limit von &6%LIMIT% &cShop/s erreicht. +message.occupied-shop-slots=&6Du hast &c%AMOUNT%/%LIMIT% &6Shop Slot/s benutzt. +message.cannot-sell-item=&cDu kannst für diesen Artikel keinen Shop erstellen. +message.update.update-available=&6&lVersion &c%VERSION% &6von &cShopChest &6ist verfügbar. +message.update.click-to-download=Klicke hier zum Herunterladen +message.update.no-update=&6&lKeine neue Aktualisierung verfügbar. +message.update.checking=&6&lSuche nach Aktualisierungen... +message.update.error=&c&lFehler beim Suchen nach Aktualisierungen. +message.hologram.format=%AMOUNT% * %ITEMNAME% +message.hologram.buy-and-sell=Kauf %BUY-PRICE% | %SELL-PRICE% Verkauf +message.hologram.only-buy=Kauf %BUY-PRICE% +message.hologram.only-sell=Verkauf %SELL-PRICE% +message.noPermission.create=&cDu hast keine Berechtigung einen Shop zu erstellen. +message.noPermission.create-admin=&cDu hast keine Berechtigung einen Admin-Shop zu erstellen. +message.noPermission.open-others=&cDu hast keine Berechtigung diesen Shop zu öffnen. +message.noPermission.buy=&cDu hast keine Berechtigung etwas zu kaufen. +message.noPermission.sell=&cDu hast keine Berechtigung etwas zu verkaufen. +message.noPermission.remove-others=&cDu hast keine Berechtigung diesen Shop zu entfernen. +message.noPermission.reload=&cDu hast keine Berechtigung die Shops neu zu laden. +message.noPermission.update=&cDu hast keine Berechtigung nach Aktualisierungen zu suchen. +message.noPermission.limits=&cDu hast keine Berechtigung die Shop Limits zu sehen +message.commandDescription.create=Erstelle einen Shop. +message.commandDescription.remove=Entferne einen Shop. +message.commandDescription.info=Rufe Informationen über den Shop ab. +message.commandDescription.reload=Lade die Shops neu. +message.commandDescription.update=Suche nach Aktualisierungen. +message.commandDescription.limits=Betrachte die Shop Limits. + +effect.absorption=Absorption +effect.blindness=Blindheit +effect.confusion=Übelkeit +effect.damageBoost=Stärke +effect.digSlowDown=Abbaulähmung +effect.digSpeed=Eile +effect.fireResistance=Feuerschutz +effect.glowing=Leuchten +effect.harm=Direktschaden +effect.heal=Direktheilung +effect.healthBoost=Extraenergie +effect.hunger=Hunger +effect.invisibility=Unsichtbarkeit +effect.jump=Sprungkraft +effect.levitation=Schwebekraft +effect.luck=Glück +effect.moveSlowdown=Langsamkeit +effect.moveSpeed=Schnelligkeit +effect.nightVision=Nachtsicht +effect.none=Wirkungslos +effect.poison=Vergiftung +effect.regeneration=Regeneration +effect.resistance=Resistenz +effect.saturation=Sättigung +effect.unluck=Pech +effect.waterBreathing=Unterwasseratem +effect.weakness=Schwäche +effect.wither=Ausdörrung + +enchantment.arrowDamage=Stärke +enchantment.arrowFire=Flamme +enchantment.arrowInfinite=Unendlich +enchantment.arrowKnockback=Schlag +enchantment.damage.all=Schärfe +enchantment.damage.arthropods=Nemesis der Gliederfüßer +enchantment.damage.undead=Bann +enchantment.digging=Effizienz +enchantment.durability=Haltbarkeit +enchantment.fire=Verbrennung +enchantment.fishingSpeed=Köder +enchantment.frostWalker=Eisläufer +enchantment.knockback=Rückstoß +enchantment.level.1=I +enchantment.level.10=X +enchantment.level.2=II +enchantment.level.3=III +enchantment.level.4=IV +enchantment.level.5=V +enchantment.level.6=VI +enchantment.level.7=VII +enchantment.level.8=VIII +enchantment.level.9=IX +enchantment.lootBonus=Plünderung +enchantment.lootBonusDigger=Glück +enchantment.lootBonusFishing=Glück des Meeres +enchantment.mending=Reparatur +enchantment.oxygen=Atmung +enchantment.protect.all=Schutz +enchantment.protect.explosion=Explosionsschutz +enchantment.protect.fall=Federfall +enchantment.protect.fire=Feuerschutz +enchantment.protect.projectile=Schusssicher +enchantment.thorns=Dornen +enchantment.untouching=Behutsamkeit +enchantment.waterWalker=Wasserläufer +enchantment.waterWorker=Wasseraffinität + +entity.Bat.name=Fledermaus +entity.Blaze.name=Lohe +entity.CaveSpider.name=Höhlenspinne +entity.Chicken.name=Huhn +entity.Cow.name=Kuh +entity.Creeper.name=Creeper +entity.Enderman.name=Enderman +entity.Endermite.name=Endermite +entity.EntityHorse.name=Pferd +entity.Ghast.name=Ghast +entity.Giant.name=Riese +entity.Guardian.name=Wächter +entity.Husk.name=Wüstenzombie +entity.KillerBunny.name=Das Killer-Kaninchen +entity.LavaSlime.name=Magmawürfel +entity.MushroomCow.name=Mooshroom +entity.Ozelot.name=Ozelot +entity.Pig.name=Schwein +entity.PigZombie.name=Zombie Pigman +entity.PolarBear.name=Eisbär +entity.Rabbit.name=Kaninchen +entity.Sheep.name=Schaf +entity.Shulker.name=Shulker +entity.Silverfish.name=Silberfischchen +entity.Skeleton.name=Skelett +entity.Slime.name=Schleim +entity.SnowMan.name=Schneegolem +entity.Snowball.name=Schneeball +entity.Spider.name=Spinne +entity.Squid.name=Tintenfisch +entity.Stray.name=Eiswanderer +entity.Villager.name=Dorfbewohner +entity.Witch.name=Hexe +entity.WitherSkeleton.name=Witherskelett +entity.Wolf.name=Wolf +entity.Zombie.name=Zombie +entity.donkey.name=Esel +entity.mule.name=Maultier +entity.skeletonhorse.name=Skelettpferd +entity.zombiehorse.name=Zombiepferd + +item.apple.name=Apfel +item.appleGold.name=Goldener Apfel +item.armorStand.name=Rüstungsständer +item.arrow.name=Pfeil +item.banner.black.name=Schwarzes Banner +item.banner.blue.name=Blaues Banner +item.banner.border.black=Schwarzer Bord +item.banner.border.blue=Blauer Bord +item.banner.border.brown=Brauner Bord +item.banner.border.cyan=Türkiser Bord +item.banner.border.gray=Grauer Bord +item.banner.border.green=Grüner Bord +item.banner.border.lightBlue=Hellblauer Bord +item.banner.border.lime=Hellgrüner Bord +item.banner.border.magenta=Magenta Bord +item.banner.border.orange=Oranger Bord +item.banner.border.pink=Rosa Bord +item.banner.border.purple=Violetter Bord +item.banner.border.red=Roter Bord +item.banner.border.silver=Hellgrauer Bord +item.banner.border.white=Weißer Bord +item.banner.border.yellow=Gelber Bord +item.banner.bricks.black=Feld schwarz gemauert +item.banner.bricks.blue=Feld blau gemauert +item.banner.bricks.brown=Feld braun gemauert +item.banner.bricks.cyan=Feld türkis gemauert +item.banner.bricks.gray=Feld grau gemauert +item.banner.bricks.green=Feld grün gemauert +item.banner.bricks.lightBlue=Feld hellblau gemauert +item.banner.bricks.lime=Feld hellgrün gemauert +item.banner.bricks.magenta=Feld magenta gemauert +item.banner.bricks.orange=Feld orange gemauert +item.banner.bricks.pink=Feld rosa gemauert +item.banner.bricks.purple=Feld violett gemauert +item.banner.bricks.red=Feld rot gemauert +item.banner.bricks.silver=Feld hellgrau gemauert +item.banner.bricks.white=Feld weiß gemauert +item.banner.bricks.yellow=Feld gelb gemauert +item.banner.brown.name=Braunes Banner +item.banner.circle.black=Schwarze Kugel +item.banner.circle.blue=Blaue Kugel +item.banner.circle.brown=Braune Kugel +item.banner.circle.cyan=Türkise Kugel +item.banner.circle.gray=Graue Kugel +item.banner.circle.green=Grüne Kugel +item.banner.circle.lightBlue=Hellblaue Kugel +item.banner.circle.lime=Hellgrüne Kugel +item.banner.circle.magenta=Magenta Kugel +item.banner.circle.orange=Orange Kugel +item.banner.circle.pink=Rosa Kugel +item.banner.circle.purple=Violette Kugel +item.banner.circle.red=Rote Kugel +item.banner.circle.silver=Hellgraue Kugel +item.banner.circle.white=Weiße Kugel +item.banner.circle.yellow=Gelbe Kugel +item.banner.creeper.black=Schwarzer Creeper +item.banner.creeper.blue=Blauer Creeper +item.banner.creeper.brown=Brauner Creeper +item.banner.creeper.cyan=Türkiser Creeper +item.banner.creeper.gray=Grauer Creeper +item.banner.creeper.green=Grüner Creeper +item.banner.creeper.lightBlue=Hellblauer Creeper +item.banner.creeper.lime=Hellgrüner Creeper +item.banner.creeper.magenta=Magenta Creeper +item.banner.creeper.orange=Oranger Creeper +item.banner.creeper.pink=Rosa Creeper +item.banner.creeper.purple=Violetter Creeper +item.banner.creeper.red=Roter Creeper +item.banner.creeper.silver=Hellgrauer Creeper +item.banner.creeper.white=Weißer Creeper +item.banner.creeper.yellow=Gelber Creeper +item.banner.cross.black=Schwarzes Andreaskreuz +item.banner.cross.blue=Blaues Andreaskreuz +item.banner.cross.brown=Braunes Andreaskreuz +item.banner.cross.cyan=Türkises Andreaskreuz +item.banner.cross.gray=Graues Andreaskreuz +item.banner.cross.green=Grünes Andreaskreuz +item.banner.cross.lightBlue=Hellblaues Andreaskreuz +item.banner.cross.lime=Hellgrünes Andreaskreuz +item.banner.cross.magenta=Magenta Andreaskreuz +item.banner.cross.orange=Oranges Andreaskreuz +item.banner.cross.pink=Rosa Andreaskreuz +item.banner.cross.purple=Violettes Andreaskreuz +item.banner.cross.red=Rotes Andreaskreuz +item.banner.cross.silver=Hellgraues Andreaskreuz +item.banner.cross.white=Weißes Andreaskreuz +item.banner.cross.yellow=Gelbes Andreaskreuz +item.banner.curly_border.black=Schwarzer Spickelbord +item.banner.curly_border.blue=Blauer Spickelbord +item.banner.curly_border.brown=Brauner Spickelbord +item.banner.curly_border.cyan=Türkiser Spickelbord +item.banner.curly_border.gray=Grauer Spickelbord +item.banner.curly_border.green=Grüner Spickelbord +item.banner.curly_border.lightBlue=Hellblauer Spickelbord +item.banner.curly_border.lime=Hellgrüner Spickelbord +item.banner.curly_border.magenta=Magenta Spickelbord +item.banner.curly_border.orange=Oranger Spickelbord +item.banner.curly_border.pink=Rosa Spickelbord +item.banner.curly_border.purple=Violetter Spickelbord +item.banner.curly_border.red=Roter Spickelbord +item.banner.curly_border.silver=Hellgrauer Spickelbord +item.banner.curly_border.white=Weißer Spickelbord +item.banner.curly_border.yellow=Gelber Spickelbord +item.banner.cyan.name=Türkises Banner +item.banner.diagonal_left.black=Schwarz schräglinks geteilt +item.banner.diagonal_left.blue=Blau schräglinks geteilt +item.banner.diagonal_left.brown=Braun schräglinks geteilt +item.banner.diagonal_left.cyan=Türkis schräglinks geteilt +item.banner.diagonal_left.gray=Grau schräglinks geteilt +item.banner.diagonal_left.green=Grün schräglinks geteilt +item.banner.diagonal_left.lightBlue=Hellblau schräglinks geteilt +item.banner.diagonal_left.lime=Hellgrün schräglinks geteilt +item.banner.diagonal_left.magenta=Magenta schräglinks geteilt +item.banner.diagonal_left.orange=Orange schräglinks geteilt +item.banner.diagonal_left.pink=Rosa schräglinks geteilt +item.banner.diagonal_left.purple=Violett schräglinks geteilt +item.banner.diagonal_left.red=Rot schräglinks geteilt +item.banner.diagonal_left.silver=Hellgrau schräglinks geteilt +item.banner.diagonal_left.white=Weiß schräglinks geteilt +item.banner.diagonal_left.yellow=Gelb schräglinks geteilt +item.banner.diagonal_right.black=Schwarz schrägrechts geteilt +item.banner.diagonal_right.blue=Blau schrägrechts geteilt +item.banner.diagonal_right.brown=Braun schrägrechts geteilt +item.banner.diagonal_right.cyan=Türkis schrägrechts geteilt +item.banner.diagonal_right.gray=Grau schrägrechts geteilt +item.banner.diagonal_right.green=Grün schrägrechts geteilt +item.banner.diagonal_right.lightBlue=Hellblau schrägrechts geteilt +item.banner.diagonal_right.lime=Hellgrün schrägrechts geteilt +item.banner.diagonal_right.magenta=Magenta schrägrechts geteilt +item.banner.diagonal_right.orange=Orange schrägrechts geteilt +item.banner.diagonal_right.pink=Rosa schrägrechts geteilt +item.banner.diagonal_right.purple=Violett schrägrechts geteilt +item.banner.diagonal_right.red=Rot schrägrechts geteilt +item.banner.diagonal_right.silver=Hellgrau schrägrechts geteilt +item.banner.diagonal_right.white=Weiß schrägrechts geteilt +item.banner.diagonal_right.yellow=Gelb schrägrechts geteilt +item.banner.diagonal_up_left.black=Schwarz schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.blue=Blau schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.brown=Braun schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.cyan=Türkis schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.gray=Grau schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.green=Grün schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.lightBlue=Hellblau schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.lime=Hellgrün schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.magenta=Magenta schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.orange=Orange schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.pink=Rosa schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.purple=Violett schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.red=Rot schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.silver=Hellgrau schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.white=Weiß schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_left.yellow=Gelb schrägrechts geteilt (Invertiert) +item.banner.diagonal_up_right.black=Schwarz schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.blue=Blau schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.brown=Braun schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.cyan=Türkis schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.gray=Grau schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.green=Grün schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.lightBlue=Hellblau schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.lime=Hellgrün schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.magenta=Magenta schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.orange=Orange schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.pink=Rosa schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.purple=Violett schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.red=Rot schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.silver=Hellgrau schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.white=Weiß schräglinks geteilt (Invertiert) +item.banner.diagonal_up_right.yellow=Gelb schräglinks geteilt (Invertiert) +item.banner.flower.black=Schwarze Blume +item.banner.flower.blue=Blaue Blume +item.banner.flower.brown=Braune Blume +item.banner.flower.cyan=Türkise Blume +item.banner.flower.gray=Graue Blume +item.banner.flower.green=Grüne Blume +item.banner.flower.lightBlue=Hellblaue Blume +item.banner.flower.lime=Hellgrüne Blume +item.banner.flower.magenta=Magenta Blume +item.banner.flower.orange=Orange Blume +item.banner.flower.pink=Rosa Blume +item.banner.flower.purple=Violette Blume +item.banner.flower.red=Rote Blume +item.banner.flower.silver=Hellgraue Blume +item.banner.flower.white=Weiße Blume +item.banner.flower.yellow=Gelbe Blume +item.banner.gradient.black=Schwarzer Farbverlauf +item.banner.gradient.blue=Blauer Farbverlauf +item.banner.gradient.brown=Brauner Farbverlauf +item.banner.gradient.cyan=Türkiser Farbverlauf +item.banner.gradient.gray=Grauer Farbverlauf +item.banner.gradient.green=Grüner Farbverlauf +item.banner.gradient.lightBlue=Hellblauer Farbverlauf +item.banner.gradient.lime=Hellgrüner Farbverlauf +item.banner.gradient.magenta=Magenta Farbverlauf +item.banner.gradient.orange=Oranger Farbverlauf +item.banner.gradient.pink=Rosa Farbverlauf +item.banner.gradient.purple=Violetter Farbverlauf +item.banner.gradient.red=Roter Farbverlauf +item.banner.gradient.silver=Hellgrauer Farbverlauf +item.banner.gradient.white=Weißer Farbverlauf +item.banner.gradient.yellow=Gelber Farbverlauf +item.banner.gradient_up.black=Schwarzer Farbverlauf (Invertiert) +item.banner.gradient_up.blue=Blauer Farbverlauf (Invertiert) +item.banner.gradient_up.brown=Brauner Farbverlauf (Invertiert) +item.banner.gradient_up.cyan=Türkiser Farbverlauf (Invertiert) +item.banner.gradient_up.gray=Grauer Farbverlauf (Invertiert) +item.banner.gradient_up.green=Grüner Farbverlauf (Invertiert) +item.banner.gradient_up.lightBlue=Hellblauer Farbverlauf (Invertiert) +item.banner.gradient_up.lime=Hellgrüner Farbverlauf (Invertiert) +item.banner.gradient_up.magenta=Magenta Farbverlauf (Invertiert) +item.banner.gradient_up.orange=Oranger Farbverlauf (Invertiert) +item.banner.gradient_up.pink=Rosa Farbverlauf (Invertiert) +item.banner.gradient_up.purple=Violetter Farbverlauf (Invertiert) +item.banner.gradient_up.red=Roter Farbverlauf (Invertiert) +item.banner.gradient_up.silver=Hellgrauer Farbverlauf (Invertiert) +item.banner.gradient_up.white=Weißer Farbverlauf (Invertiert) +item.banner.gradient_up.yellow=Gelber Farbverlauf (Invertiert) +item.banner.gray.name=Graues Banner +item.banner.green.name=Grünes Banner +item.banner.half_horizontal.black=Oben schwarz geteilt +item.banner.half_horizontal.blue=Oben blau geteilt +item.banner.half_horizontal.brown=Oben braun geteilt +item.banner.half_horizontal.cyan=Oben türkis geteilt +item.banner.half_horizontal.gray=Oben grau geteilt +item.banner.half_horizontal.green=Oben grün geteilt +item.banner.half_horizontal.lightBlue=Oben hellblau geteilt +item.banner.half_horizontal.lime=Oben hellgrün geteilt +item.banner.half_horizontal.magenta=Oben magenta geteilt +item.banner.half_horizontal.orange=Oben orange geteilt +item.banner.half_horizontal.pink=Oben rosa geteilt +item.banner.half_horizontal.purple=Oben violett geteilt +item.banner.half_horizontal.red=Oben rot geteilt +item.banner.half_horizontal.silver=Oben hellgrau geteilt +item.banner.half_horizontal.white=Oben weiß geteilt +item.banner.half_horizontal.yellow=Oben gelb geteilt +item.banner.half_horizontal_bottom.black=Unten schwarz geteilt +item.banner.half_horizontal_bottom.blue=Unten blau geteilt +item.banner.half_horizontal_bottom.brown=Unten braun geteilt +item.banner.half_horizontal_bottom.cyan=Unten türkis geteilt +item.banner.half_horizontal_bottom.gray=Unten grau geteilt +item.banner.half_horizontal_bottom.green=Unten grün geteilt +item.banner.half_horizontal_bottom.lightBlue=Unten hellblau geteilt +item.banner.half_horizontal_bottom.lime=Unten hellgrün geteilt +item.banner.half_horizontal_bottom.magenta=Unten magenta geteilt +item.banner.half_horizontal_bottom.orange=Unten orange geteilt +item.banner.half_horizontal_bottom.pink=Unten rosa geteilt +item.banner.half_horizontal_bottom.purple=Unten violett geteilt +item.banner.half_horizontal_bottom.red=Unten rot geteilt +item.banner.half_horizontal_bottom.silver=Unten hellgrau geteilt +item.banner.half_horizontal_bottom.white=Unten weiß geteilt +item.banner.half_horizontal_bottom.yellow=Unten gelb geteilt +item.banner.half_vertical.black=Rechts schwarz gespalten +item.banner.half_vertical.blue=Rechts blau gespalten +item.banner.half_vertical.brown=Rechts braun gespalten +item.banner.half_vertical.cyan=Rechts türkis gespalten +item.banner.half_vertical.gray=Rechts grau gespalten +item.banner.half_vertical.green=Rechts grün gespalten +item.banner.half_vertical.lightBlue=Rechts hellblau gespalten +item.banner.half_vertical.lime=Rechts hellgrün gespalten +item.banner.half_vertical.magenta=Rechts magenta gespalten +item.banner.half_vertical.orange=Rechts orange gespalten +item.banner.half_vertical.pink=Rechts rosa gespalten +item.banner.half_vertical.purple=Rechts violett gespalten +item.banner.half_vertical.red=Rechts rot gespalten +item.banner.half_vertical.silver=Rechts hellgrau gespalten +item.banner.half_vertical.white=Rechts weiß gespalten +item.banner.half_vertical.yellow=Rechts gelb gespalten +item.banner.half_vertical_right.black=Links schwarz gespalten +item.banner.half_vertical_right.blue=Links blau gespalten +item.banner.half_vertical_right.brown=Links braun gespalten +item.banner.half_vertical_right.cyan=Links türkis gespalten +item.banner.half_vertical_right.gray=Links grau gespalten +item.banner.half_vertical_right.green=Links grün gespalten +item.banner.half_vertical_right.lightBlue=Links hellblau gespalten +item.banner.half_vertical_right.lime=Links hellgrün gespalten +item.banner.half_vertical_right.magenta=Links magenta gespalten +item.banner.half_vertical_right.orange=Links orange gespalten +item.banner.half_vertical_right.pink=Links rosa gespalten +item.banner.half_vertical_right.purple=Links violett gespalten +item.banner.half_vertical_right.red=Links rot gespalten +item.banner.half_vertical_right.silver=Links hellgrau gespalten +item.banner.half_vertical_right.white=Links weiß gespalten +item.banner.half_vertical_right.yellow=Links gelb gespalten +item.banner.lightBlue.name=Hellblaues Banner +item.banner.lime.name=Hellgrünes Banner +item.banner.magenta.name=Magenta Banner +item.banner.mojang.black=Schwarzes Mojang-Logo +item.banner.mojang.blue=Blaues Mojang-Logo +item.banner.mojang.brown=Braunes Mojang-Logo +item.banner.mojang.cyan=Türkises Mojang-Logo +item.banner.mojang.gray=Graues Mojang-Logo +item.banner.mojang.green=Grünes Mojang-Logo +item.banner.mojang.lightBlue=Hellblaues Mojang-Logo +item.banner.mojang.lime=Hellgrünes Mojang-Logo +item.banner.mojang.magenta=Magenta Mojang-Logo +item.banner.mojang.orange=Oranges Mojang-Logo +item.banner.mojang.pink=Rosa Mojang-Logo +item.banner.mojang.purple=Violettes Mojang-Logo +item.banner.mojang.red=Rotes Mojang-Logo +item.banner.mojang.silver=Hellgraues Mojang-Logo +item.banner.mojang.white=Weißes Mojang-Logo +item.banner.mojang.yellow=Gelbes Mojang-Logo +item.banner.orange.name=Oranges Banner +item.banner.pink.name=Rosa Banner +item.banner.purple.name=Violettes Banner +item.banner.red.name=Rotes Banner +item.banner.rhombus.black=Schwarze Raute +item.banner.rhombus.blue=Blaue Raute +item.banner.rhombus.brown=Braune Raute +item.banner.rhombus.cyan=Türkise Raute +item.banner.rhombus.gray=Graue Raute +item.banner.rhombus.green=Grüne Raute +item.banner.rhombus.lightBlue=Hellblaue Raute +item.banner.rhombus.lime=Hellgrüne Raute +item.banner.rhombus.magenta=Magenta Raute +item.banner.rhombus.orange=Orange Raute +item.banner.rhombus.pink=Rosa Raute +item.banner.rhombus.purple=Violette Raute +item.banner.rhombus.red=Rote Raute +item.banner.rhombus.silver=Hellgraue Raute +item.banner.rhombus.white=Weiße Raute +item.banner.rhombus.yellow=Gelbe Raute +item.banner.silver.name=Hellgraues Banner +item.banner.skull.black=Schwarzer Schädel +item.banner.skull.blue=Blauer Schädel +item.banner.skull.brown=Brauner Schädel +item.banner.skull.cyan=Türkiser Schädel +item.banner.skull.gray=Grauer Schädel +item.banner.skull.green=Grüner Schädel +item.banner.skull.lightBlue=Hellblauer Schädel +item.banner.skull.lime=Hellgrüner Schädel +item.banner.skull.magenta=Magenta Schädel +item.banner.skull.orange=Oranger Schädel +item.banner.skull.pink=Rosa Schädel +item.banner.skull.purple=Violetter Schädel +item.banner.skull.red=Roter Schädel +item.banner.skull.silver=Hellgrauer Schädel +item.banner.skull.white=Weißer Schädel +item.banner.skull.yellow=Gelber Schädel +item.banner.small_stripes.black=Vier schwarze Pfähle +item.banner.small_stripes.blue=Vier blaue Pfähle +item.banner.small_stripes.brown=Vier braune Pfähle +item.banner.small_stripes.cyan=Vier türkise Pfähle +item.banner.small_stripes.gray=Vier graue Pfähle +item.banner.small_stripes.green=Vier grüne Pfähle +item.banner.small_stripes.lightBlue=Vier hellblaue Pfähle +item.banner.small_stripes.lime=Vier hellgrüne Pfähle +item.banner.small_stripes.magenta=Vier magenta Pfähle +item.banner.small_stripes.orange=Vier orange Pfähle +item.banner.small_stripes.pink=Vier rosa Pfähle +item.banner.small_stripes.purple=Vier violette Pfähle +item.banner.small_stripes.red=Vier rote Pfähle +item.banner.small_stripes.silver=Vier hellgraue Pfähle +item.banner.small_stripes.white=Vier weiße Pfähle +item.banner.small_stripes.yellow=Vier gelbe Pfähle +item.banner.square_bottom_left.black=Schwarzes rechtes Untereck +item.banner.square_bottom_left.blue=Blaues rechtes Untereck +item.banner.square_bottom_left.brown=Braunes rechtes Untereck +item.banner.square_bottom_left.cyan=Türkises rechtes Untereck +item.banner.square_bottom_left.gray=Graues rechtes Untereck +item.banner.square_bottom_left.green=Grünes rechtes Untereck +item.banner.square_bottom_left.lightBlue=Hellblaues rechtes Untereck +item.banner.square_bottom_left.lime=Hellgrünes rechtes Untereck +item.banner.square_bottom_left.magenta=Magenta rechtes Untereck +item.banner.square_bottom_left.orange=Oranges rechtes Untereck +item.banner.square_bottom_left.pink=Rosa rechtes Untereck +item.banner.square_bottom_left.purple=Violettes rechtes Untereck +item.banner.square_bottom_left.red=Rotes rechtes Untereck +item.banner.square_bottom_left.silver=Hellgraues rechtes Untereck +item.banner.square_bottom_left.white=Weißes rechtes Untereck +item.banner.square_bottom_left.yellow=Gelbes rechtes Untereck +item.banner.square_bottom_right.black=Schwarzes linkes Untereck +item.banner.square_bottom_right.blue=Blaues linkes Untereck +item.banner.square_bottom_right.brown=Braunes linkes Untereck +item.banner.square_bottom_right.cyan=Türkises linkes Untereck +item.banner.square_bottom_right.gray=Graues linkes Untereck +item.banner.square_bottom_right.green=Grünes linkes Untereck +item.banner.square_bottom_right.lightBlue=Hellblaues linkes Untereck +item.banner.square_bottom_right.lime=Hellgrünes linkes Untereck +item.banner.square_bottom_right.magenta=Magenta linkes Untereck +item.banner.square_bottom_right.orange=Oranges linkes Untereck +item.banner.square_bottom_right.pink=Rosa linkes Untereck +item.banner.square_bottom_right.purple=Violettes linkes Untereck +item.banner.square_bottom_right.red=Rotes linkes Untereck +item.banner.square_bottom_right.silver=Hellgraues linkes Untereck +item.banner.square_bottom_right.white=Weißes linkes Untereck +item.banner.square_bottom_right.yellow=Gelbes linkes Untereck +item.banner.square_top_left.black=Schwarzes rechtes Obereck +item.banner.square_top_left.blue=Blaues rechtes Obereck +item.banner.square_top_left.brown=Braunes rechtes Obereck +item.banner.square_top_left.cyan=Türkises rechtes Obereck +item.banner.square_top_left.gray=Graues rechtes Obereck +item.banner.square_top_left.green=Grünes rechtes Obereck +item.banner.square_top_left.lightBlue=Hellblaues rechtes Obereck +item.banner.square_top_left.lime=Hellgrünes rechtes Obereck +item.banner.square_top_left.magenta=Magenta rechtes Obereck +item.banner.square_top_left.orange=Oranges rechtes Obereck +item.banner.square_top_left.pink=Rosa rechtes Obereck +item.banner.square_top_left.purple=Violettes rechtes Obereck +item.banner.square_top_left.red=Rotes rechtes Obereck +item.banner.square_top_left.silver=Hellgraues rechtes Obereck +item.banner.square_top_left.white=Weißes rechtes Obereck +item.banner.square_top_left.yellow=Gelbes rechtes Obereck +item.banner.square_top_right.black=Schwarzes linkes Obereck +item.banner.square_top_right.blue=Blaues linkes Obereck +item.banner.square_top_right.brown=Braunes linkes Obereck +item.banner.square_top_right.cyan=Türkises linkes Obereck +item.banner.square_top_right.gray=Graues linkes Obereck +item.banner.square_top_right.green=Grünes linkes Obereck +item.banner.square_top_right.lightBlue=Hellblaues linkes Obereck +item.banner.square_top_right.lime=Hellgrünes linkes Obereck +item.banner.square_top_right.magenta=Magenta linkes Obereck +item.banner.square_top_right.orange=Oranges linkes Obereck +item.banner.square_top_right.pink=Rosa linkes Obereck +item.banner.square_top_right.purple=Violettes linkes Obereck +item.banner.square_top_right.red=Rotes linkes Obereck +item.banner.square_top_right.silver=Hellgraues linkes Obereck +item.banner.square_top_right.white=Weißes linkes Obereck +item.banner.square_top_right.yellow=Gelbes linkes Obereck +item.banner.straight_cross.black=Schwarzes Kreuz +item.banner.straight_cross.blue=Blaues Kreuz +item.banner.straight_cross.brown=Braunes Kreuz +item.banner.straight_cross.cyan=Türkises Kreuz +item.banner.straight_cross.gray=Graues Kreuz +item.banner.straight_cross.green=Grünes Kreuz +item.banner.straight_cross.lightBlue=Hellblaues Kreuz +item.banner.straight_cross.lime=Hellgrünes Kreuz +item.banner.straight_cross.magenta=Magenta Kreuz +item.banner.straight_cross.orange=Oranges Kreuz +item.banner.straight_cross.pink=Rosa Kreuz +item.banner.straight_cross.purple=Violettes Kreuz +item.banner.straight_cross.red=Rotes Kreuz +item.banner.straight_cross.silver=Hellgraues Kreuz +item.banner.straight_cross.white=Weißes Kreuz +item.banner.straight_cross.yellow=Gelbes Kreuz +item.banner.stripe_bottom.black=Schwarzer Bannerfuß +item.banner.stripe_bottom.blue=Blauer Bannerfuß +item.banner.stripe_bottom.brown=Brauner Bannerfuß +item.banner.stripe_bottom.cyan=Türkiser Bannerfuß +item.banner.stripe_bottom.gray=Grauer Bannerfuß +item.banner.stripe_bottom.green=Grüner Bannerfuß +item.banner.stripe_bottom.lightBlue=Hellblauer Bannerfuß +item.banner.stripe_bottom.lime=Hellgrüner Bannerfuß +item.banner.stripe_bottom.magenta=Magenta Bannerfuß +item.banner.stripe_bottom.orange=Oranger Bannerfuß +item.banner.stripe_bottom.pink=Rosa Bannerfuß +item.banner.stripe_bottom.purple=Violetter Bannerfuß +item.banner.stripe_bottom.red=Roter Bannerfuß +item.banner.stripe_bottom.silver=Hellgrauer Bannerfuß +item.banner.stripe_bottom.white=Weißer Bannerfuß +item.banner.stripe_bottom.yellow=Gelber Bannerfuß +item.banner.stripe_center.black=Schwarzer Pfahl +item.banner.stripe_center.blue=Blauer Pfahl +item.banner.stripe_center.brown=Brauner Pfahl +item.banner.stripe_center.cyan=Türkiser Pfahl +item.banner.stripe_center.gray=Grauer Pfahl +item.banner.stripe_center.green=Grüner Pfahl +item.banner.stripe_center.lightBlue=Hellblauer Pfahl +item.banner.stripe_center.lime=Hellgrüner Pfahl +item.banner.stripe_center.magenta=Magenta Pfahl +item.banner.stripe_center.orange=Oranger Pfahl +item.banner.stripe_center.pink=Rosa Pfahl +item.banner.stripe_center.purple=Violetter Pfahl +item.banner.stripe_center.red=Roter Pfahl +item.banner.stripe_center.silver=Hellgrauer Pfahl +item.banner.stripe_center.white=Weißer Pfahl +item.banner.stripe_center.yellow=Gelber Pfahl +item.banner.stripe_downleft.black=Schwarzer Schräglinksbalken +item.banner.stripe_downleft.blue=Blauer Schräglinksbalken +item.banner.stripe_downleft.brown=Brauner Schräglinksbalken +item.banner.stripe_downleft.cyan=Türkiser Schräglinksbalken +item.banner.stripe_downleft.gray=Grauer Schräglinksbalken +item.banner.stripe_downleft.green=Grüner Schräglinksbalken +item.banner.stripe_downleft.lightBlue=Hellblauer Schräglinksbalken +item.banner.stripe_downleft.lime=Hellgrüner Schräglinksbalken +item.banner.stripe_downleft.magenta=Magenta Schräglinksbalken +item.banner.stripe_downleft.orange=Oranger Schräglinksbalken +item.banner.stripe_downleft.pink=Rosa Schräglinksbalken +item.banner.stripe_downleft.purple=Violetter Schräglinksbalken +item.banner.stripe_downleft.red=Roter Schräglinksbalken +item.banner.stripe_downleft.silver=Hellgrauer Schräglinksbalken +item.banner.stripe_downleft.white=Weißer Schräglinksbalken +item.banner.stripe_downleft.yellow=Gelber Schräglinksbalken +item.banner.stripe_downright.black=Schwarzer Schrägbalken +item.banner.stripe_downright.blue=Blauer Schrägbalken +item.banner.stripe_downright.brown=Brauner Schrägbalken +item.banner.stripe_downright.cyan=Türkiser Schrägbalken +item.banner.stripe_downright.gray=Grauer Schrägbalken +item.banner.stripe_downright.green=Grüner Schrägbalken +item.banner.stripe_downright.lightBlue=Hellblauer Schrägbalken +item.banner.stripe_downright.lime=Hellgrüner Schrägbalken +item.banner.stripe_downright.magenta=Magenta Schrägbalken +item.banner.stripe_downright.orange=Oranger Schrägbalken +item.banner.stripe_downright.pink=Rosa Schrägbalken +item.banner.stripe_downright.purple=Violetter Schrägbalken +item.banner.stripe_downright.red=Roter Schrägbalken +item.banner.stripe_downright.silver=Hellgrauer Schrägbalken +item.banner.stripe_downright.white=Weißer Schrägbalken +item.banner.stripe_downright.yellow=Gelber Schrägbalken +item.banner.stripe_left.black=Schwarze rechte Flanke +item.banner.stripe_left.blue=Blaue rechte Flanke +item.banner.stripe_left.brown=Braune rechte Flanke +item.banner.stripe_left.cyan=Türkise rechte Flanke +item.banner.stripe_left.gray=Graue rechte Flanke +item.banner.stripe_left.green=Grüne rechte Flanke +item.banner.stripe_left.lightBlue=Hellblaue rechte Flanke +item.banner.stripe_left.lime=Hellgrüne rechte Flanke +item.banner.stripe_left.magenta=Magenta rechte Flanke +item.banner.stripe_left.orange=Orange rechte Flanke +item.banner.stripe_left.pink=Rosa rechte Flanke +item.banner.stripe_left.purple=Violette rechte Flanke +item.banner.stripe_left.red=Rote rechte Flanke +item.banner.stripe_left.silver=Hellgraue rechte Flanke +item.banner.stripe_left.white=Weiße rechte Flanke +item.banner.stripe_left.yellow=Gelbe rechte Flanke +item.banner.stripe_middle.black=Schwarzer Balken +item.banner.stripe_middle.blue=Blauer Balken +item.banner.stripe_middle.brown=Brauner Balken +item.banner.stripe_middle.cyan=Türkiser Balken +item.banner.stripe_middle.gray=Grauer Balken +item.banner.stripe_middle.green=Grüner Balken +item.banner.stripe_middle.lightBlue=Hellblauer Balken +item.banner.stripe_middle.lime=Hellgrüner Balken +item.banner.stripe_middle.magenta=Magenta Balken +item.banner.stripe_middle.orange=Oranger Balken +item.banner.stripe_middle.pink=Rosa Balken +item.banner.stripe_middle.purple=Violetter Balken +item.banner.stripe_middle.red=Roter Balken +item.banner.stripe_middle.silver=Hellgrauer Balken +item.banner.stripe_middle.white=Weißer Balken +item.banner.stripe_middle.yellow=Gelber Balken +item.banner.stripe_right.black=Schwarze linke Flanke +item.banner.stripe_right.blue=Blaue linke Flanke +item.banner.stripe_right.brown=Braune linke Flanke +item.banner.stripe_right.cyan=Türkise linke Flanke +item.banner.stripe_right.gray=Graue linke Flanke +item.banner.stripe_right.green=Grüne linke Flanke +item.banner.stripe_right.lightBlue=Hellblaue linke Flanke +item.banner.stripe_right.lime=Hellgrüne linke Flanke +item.banner.stripe_right.magenta=Magenta linke Flanke +item.banner.stripe_right.orange=Orange linke Flanke +item.banner.stripe_right.pink=Rosa linke Flanke +item.banner.stripe_right.purple=Violette linke Flanke +item.banner.stripe_right.red=Rote linke Flanke +item.banner.stripe_right.silver=Hellgraue linke Flanke +item.banner.stripe_right.white=Weiße linke Flanke +item.banner.stripe_right.yellow=Gelbe linke Flanke +item.banner.stripe_top.black=Schwarzes Bannerhaupt +item.banner.stripe_top.blue=Blaues Bannerhaupt +item.banner.stripe_top.brown=Braunes Bannerhaupt +item.banner.stripe_top.cyan=Türkises Bannerhaupt +item.banner.stripe_top.gray=Graues Bannerhaupt +item.banner.stripe_top.green=Grünes Bannerhaupt +item.banner.stripe_top.lightBlue=Hellblaues Bannerhaupt +item.banner.stripe_top.lime=Hellgrünes Bannerhaupt +item.banner.stripe_top.magenta=Magenta Bannerhaupt +item.banner.stripe_top.orange=Oranges Bannerhaupt +item.banner.stripe_top.pink=Rosa Bannerhaupt +item.banner.stripe_top.purple=Violettes Bannerhaupt +item.banner.stripe_top.red=Rotes Bannerhaupt +item.banner.stripe_top.silver=Hellgraues Bannerhaupt +item.banner.stripe_top.white=Weißes Bannerhaupt +item.banner.stripe_top.yellow=Gelbes Bannerhaupt +item.banner.triangle_bottom.black=Schwarze halbe Spitze +item.banner.triangle_bottom.blue=Blaue halbe Spitze +item.banner.triangle_bottom.brown=Braune halbe Spitze +item.banner.triangle_bottom.cyan=Türkise halbe Spitze +item.banner.triangle_bottom.gray=Graue halbe Spitze +item.banner.triangle_bottom.green=Grüne halbe Spitze +item.banner.triangle_bottom.lightBlue=Hellblaue halbe Spitze +item.banner.triangle_bottom.lime=Hellgrüne halbe Spitze +item.banner.triangle_bottom.magenta=Magenta halbe Spitze +item.banner.triangle_bottom.orange=Orange halbe Spitze +item.banner.triangle_bottom.pink=Rosa halbe Spitze +item.banner.triangle_bottom.purple=Violette halbe Spitze +item.banner.triangle_bottom.red=Rote halbe Spitze +item.banner.triangle_bottom.silver=Hellgraue halbe Spitze +item.banner.triangle_bottom.white=Weiße halbe Spitze +item.banner.triangle_bottom.yellow=Gelbe halbe Spitze +item.banner.triangle_top.black=Schwarze gestürzte halbe Spitze +item.banner.triangle_top.blue=Blaue gestürzte halbe Spitze +item.banner.triangle_top.brown=Braune gestürzte halbe Spitze +item.banner.triangle_top.cyan=Türkise gestürzte halbe Spitze +item.banner.triangle_top.gray=Graue gestürzte halbe Spitze +item.banner.triangle_top.green=Grüne gestürzte halbe Spitze +item.banner.triangle_top.lightBlue=Hellblaue gestürzte halbe Spitze +item.banner.triangle_top.lime=Hellgrüne gestürzte halbe Spitze +item.banner.triangle_top.magenta=Magenta gestürzte halbe Spitze +item.banner.triangle_top.orange=Orange gestürzte halbe Spitze +item.banner.triangle_top.pink=Rosa gestürzte halbe Spitze +item.banner.triangle_top.purple=Violette gestürzte halbe Spitze +item.banner.triangle_top.red=Rote gestürzte halbe Spitze +item.banner.triangle_top.silver=Hellgraue gestürzte halbe Spitze +item.banner.triangle_top.white=Weiße gestürzte halbe Spitze +item.banner.triangle_top.yellow=Gelbe gestürzte halbe Spitze +item.banner.triangles_bottom.black=Schwarzer gespickelter Bannerfuß +item.banner.triangles_bottom.blue=Blauer gespickelter Bannerfuß +item.banner.triangles_bottom.brown=Brauner gespickelter Bannerfuß +item.banner.triangles_bottom.cyan=Türkiser gespickelter Bannerfuß +item.banner.triangles_bottom.gray=Grauer gespickelter Bannerfuß +item.banner.triangles_bottom.green=Grüner gespickelter Bannerfuß +item.banner.triangles_bottom.lightBlue=Hellblauer gespickelter Bannerfuß +item.banner.triangles_bottom.lime=Hellgrüner gespickelter Bannerfuß +item.banner.triangles_bottom.magenta=Magenta gespickelter Bannerfuß +item.banner.triangles_bottom.orange=Oranger gespickelter Bannerfuß +item.banner.triangles_bottom.pink=Rosa gespickelter Bannerfuß +item.banner.triangles_bottom.purple=Violetter gespickelter Bannerfuß +item.banner.triangles_bottom.red=Roter gespickelter Bannerfuß +item.banner.triangles_bottom.silver=Hellgrauer gespickelter Bannerfuß +item.banner.triangles_bottom.white=Weißer gespickelter Bannerfuß +item.banner.triangles_bottom.yellow=Gelber gespickelter Bannerfuß +item.banner.triangles_top.black=Schwarzes gespickeltes Bannerhaupt +item.banner.triangles_top.blue=Blaues gespickeltes Bannerhaupt +item.banner.triangles_top.brown=Braunes gespickeltes Bannerhaupt +item.banner.triangles_top.cyan=Türkises gespickeltes Bannerhaupt +item.banner.triangles_top.gray=Graues gespickeltes Bannerhaupt +item.banner.triangles_top.green=Grünes gespickeltes Bannerhaupt +item.banner.triangles_top.lightBlue=Hellblaues gespickeltes Bannerhaupt +item.banner.triangles_top.lime=Hellgrünes gespickeltes Bannerhaupt +item.banner.triangles_top.magenta=Magenta gespickeltes Bannerhaupt +item.banner.triangles_top.orange=Oranges gespickeltes Bannerhaupt +item.banner.triangles_top.pink=Rosa gespickeltes Bannerhaupt +item.banner.triangles_top.purple=Violettes gespickeltes Bannerhaupt +item.banner.triangles_top.red=Rotes gespickeltes Bannerhaupt +item.banner.triangles_top.silver=Hellgraues gespickeltes Bannerhaupt +item.banner.triangles_top.white=Weißes gespickeltes Bannerhaupt +item.banner.triangles_top.yellow=Gelbes gespickeltes Bannerhaupt +item.banner.white.name=Weißes Banner +item.banner.yellow.name=Gelbes Banner +item.bed.name=Bett +item.beefCooked.name=Steak +item.beefRaw.name=Rohes Rindfleisch +item.beetroot.name=Rote Bete +item.beetroot_seeds.name=Rote-Bete-Samen +item.beetroot_soup.name=Borschtsch +item.blazePowder.name=Lohenstaub +item.blazeRod.name=Lohenrute +item.boat.acacia.name=Akazienholzboot +item.boat.birch.name=Birkenholzboot +item.boat.dark_oak.name=Schwarzeichenholzboot +item.boat.jungle.name=Tropenholzboot +item.boat.oak.name=Eichenholzboot +item.boat.spruce.name=Fichtenholzboot +item.bone.name=Knochen +item.book.name=Buch +item.bootsChain.name=Kettenstiefel +item.bootsCloth.name=Lederstiefel +item.bootsDiamond.name=Diamantstiefel +item.bootsGold.name=Goldstiefel +item.bootsIron.name=Eisenstiefel +item.bow.name=Bogen +item.bowl.name=Schüssel +item.bread.name=Brot +item.brewingStand.name=Braustand +item.brick.name=Ziegel +item.bucket.name=Eimer +item.bucketLava.name=Lavaeimer +item.bucketWater.name=Wassereimer +item.cake.name=Kuchen +item.canBreak=Kann abbauen: +item.canPlace=Kann platziert werden auf: +item.carrotGolden.name=Goldene Karotte +item.carrotOnAStick.name=Karottenrute +item.carrots.name=Karotte +item.cauldron.name=Kessel +item.charcoal.name=Holzkohle +item.chestplateChain.name=Kettenhemd +item.chestplateCloth.name=Lederjacke +item.chestplateDiamond.name=Diamantbrustpanzer +item.chestplateGold.name=Goldharnisch +item.chestplateIron.name=Eisenbrustpanzer +item.chickenCooked.name=Gebratenes Hühnchen +item.chickenRaw.name=Rohes Hühnchen +item.chorusFruit.name=Chorusfrucht +item.chorusFruitPopped.name=Geplatzte Chorusfrucht +item.clay.name=Ton +item.clock.name=Uhr +item.coal.name=Kohle +item.comparator.name=Redstone-Komparator +item.compass.name=Kompass +item.cookie.name=Keks +item.diamond.name=Diamant +item.diode.name=Redstone-Verstärker +item.doorAcacia.name=Akazienholztür +item.doorBirch.name=Birkenholztür +item.doorDarkOak.name=Schwarzeichenholztür +item.doorIron.name=Eisentür +item.doorJungle.name=Tropenholztür +item.doorOak.name=Eichenholztür +item.doorSpruce.name=Fichtenholztür +item.dragon_breath.name=Drachenatem +item.dyePowder.black.name=Tintenbeutel +item.dyePowder.blue.name=Lapislazuli +item.dyePowder.brown.name=Kakaobohnen +item.dyePowder.cyan.name=Türkiser Farbstoff +item.dyePowder.gray.name=Grauer Farbstoff +item.dyePowder.green.name=Kaktusgrün +item.dyePowder.lightBlue.name=Hellblauer Farbstoff +item.dyePowder.lime.name=Hellgrüner Farbstoff +item.dyePowder.magenta.name=Magenta Farbstoff +item.dyePowder.orange.name=Oranger Farbstoff +item.dyePowder.pink.name=Rosa Farbstoff +item.dyePowder.purple.name=Violetter Farbstoff +item.dyePowder.red.name=Roter Farbstoff +item.dyePowder.silver.name=Hellgrauer Farbstoff +item.dyePowder.white.name=Knochenmehl +item.dyePowder.yellow.name=Gelber Farbstoff +item.dyed=Gefärbt +item.egg.name=Ei +item.elytra.name=Elytren +item.emerald.name=Smaragd +item.emptyMap.name=Leere Karte +item.enchantedBook.name=Verzaubertes Buch +item.end_crystal.name=Enderkristall +item.enderPearl.name=Enderperle +item.expBottle.name=Erfahrungsfläschchen +item.eyeOfEnder.name=Enderauge +item.feather.name=Feder +item.fermentedSpiderEye.name=Fermentiertes Spinnenauge +item.fireball.name=Feuerkugel +item.fireworks.flight=Flugdauer: +item.fireworks.name=Feuerwerksrakete +item.fireworksCharge.black=Schwarz +item.fireworksCharge.blue=Blau +item.fireworksCharge.brown=Braun +item.fireworksCharge.customColor=Benutzerdefiniert +item.fireworksCharge.cyan=Türkis +item.fireworksCharge.fadeTo=Übergang zu +item.fireworksCharge.flicker=Funkeln +item.fireworksCharge.gray=Grau +item.fireworksCharge.green=Grün +item.fireworksCharge.lightBlue=Hellblau +item.fireworksCharge.lime=Hellgrün +item.fireworksCharge.magenta=Magenta +item.fireworksCharge.name=Feuerwerksstern +item.fireworksCharge.orange=Orange +item.fireworksCharge.pink=Rosa +item.fireworksCharge.purple=Violett +item.fireworksCharge.red=Rot +item.fireworksCharge.silver=Hellgrau +item.fireworksCharge.trail=Schweif +item.fireworksCharge.type=Unbekannte Form +item.fireworksCharge.type.0=Kleine Kugel +item.fireworksCharge.type.1=Große Kugel +item.fireworksCharge.type.2=Sternförmig +item.fireworksCharge.type.3=Creeperförmig +item.fireworksCharge.type.4=Explosion +item.fireworksCharge.white=Weiß +item.fireworksCharge.yellow=Gelb +item.fish.clownfish.raw.name=Clownfisch +item.fish.cod.cooked.name=Gebratener Kabeljau +item.fish.cod.raw.name=Roher Kabeljau +item.fish.pufferfish.raw.name=Kugelfisch +item.fish.salmon.cooked.name=Gebratener Lachs +item.fish.salmon.raw.name=Roher Lachs +item.fishingRod.name=Angel +item.flint.name=Feuerstein +item.flintAndSteel.name=Feuerzeug +item.flowerPot.name=Blumentopf +item.frame.name=Rahmen +item.ghastTear.name=Ghastträne +item.glassBottle.name=Glasflasche +item.goldNugget.name=Goldklumpen +item.hatchetDiamond.name=Diamantaxt +item.hatchetGold.name=Goldaxt +item.hatchetIron.name=Eisenaxt +item.hatchetStone.name=Steinaxt +item.hatchetWood.name=Holzaxt +item.helmetChain.name=Kettenhaube +item.helmetCloth.name=Lederkappe +item.helmetDiamond.name=Diamanthelm +item.helmetGold.name=Goldhelm +item.helmetIron.name=Eisenhelm +item.hoeDiamond.name=Diamanthacke +item.hoeGold.name=Goldhacke +item.hoeIron.name=Eisenhacke +item.hoeStone.name=Steinhacke +item.hoeWood.name=Holzhacke +item.horsearmordiamond.name=Diamantene Pferderüstung +item.horsearmorgold.name=Goldene Pferderüstung +item.horsearmormetal.name=Eiserne Pferderüstung +item.ingotGold.name=Goldbarren +item.ingotIron.name=Eisenbarren +item.leash.name=Leine +item.leather.name=Leder +item.leaves.name=Laub +item.leggingsChain.name=Kettenhose +item.leggingsCloth.name=Lederhose +item.leggingsDiamond.name=Diamantbeinschutz +item.leggingsGold.name=Goldbeinschutz +item.leggingsIron.name=Eisenbeinschutz +item.magmaCream.name=Magmacreme +item.map.name=Karte +item.melon.name=Melone +item.milk.name=Milch +item.minecart.name=Lore +item.minecartChest.name=Güterlore +item.minecartCommandBlock.name=Befehlsblocklore +item.minecartFurnace.name=Antriebslore +item.minecartHopper.name=Trichterlore +item.minecartTnt.name=TNT-Lore +item.modifiers.chest=Am Körper: +item.modifiers.feet=An den Füßen: +item.modifiers.head=Auf dem Kopf: +item.modifiers.legs=An den Beinen: +item.modifiers.mainhand=In der Haupthand: +item.modifiers.offhand=In der Zweithand: +item.monsterPlacer.name=Erschaffe +item.mushroomStew.name=Pilzsuppe +item.muttonCooked.name=Gebratenes Hammelfleisch +item.muttonRaw.name=Rohes Hammelfleisch +item.nameTag.name=Namensschild +item.netherStalkSeeds.name=Netherwarze +item.netherStar.name=Netherstern +item.netherbrick.name=Netherziegel +item.netherquartz.name=Netherquarz +item.painting.name=Gemälde +item.paper.name=Papier +item.pickaxeDiamond.name=Diamantspitzhacke +item.pickaxeGold.name=Goldspitzhacke +item.pickaxeIron.name=Eisenspitzhacke +item.pickaxeStone.name=Steinspitzhacke +item.pickaxeWood.name=Holzspitzhacke +item.porkchopCooked.name=Gebratenes Schweinefleisch +item.porkchopRaw.name=Rohes Schweinefleisch +item.potato.name=Kartoffel +item.potatoBaked.name=Ofenkartoffel +item.potatoPoisonous.name=Giftige Kartoffel +item.potion.name=Trank +item.prismarineCrystals.name=Prismarinkristalle +item.prismarineShard.name=Prismarinscherbe +item.pumpkinPie.name=Kürbiskuchen +item.rabbitCooked.name=Gebratenes Kaninchen +item.rabbitFoot.name=Hasenpfote +item.rabbitHide.name=Kaninchenfell +item.rabbitRaw.name=Rohes Kaninchen +item.rabbitStew.name=Kaninchenragout +item.record.11.desc=C418 - 11 +item.record.13.desc=C418 - 13 +item.record.blocks.desc=C418 - Blocks +item.record.cat.desc=C418 - Cat +item.record.chirp.desc=C418 - Chirp +item.record.far.desc=C418 - Far +item.record.mall.desc=C418 - Mall +item.record.mellohi.desc=C418 - Mellohi +item.record.name=Schallplatte +item.record.stal.desc=C418 - Stal +item.record.strad.desc=C418 - Strad +item.record.wait.desc=C418 - Wait +item.record.ward.desc=C418 - Ward +item.redstone.name=Redstone +item.reeds.name=Zuckerrohr +item.rottenFlesh.name=Verrottetes Fleisch +item.ruby.name=Rubin +item.saddle.name=Sattel +item.seeds.name=Weizenkörner +item.seeds_melon.name=Melonenkerne +item.seeds_pumpkin.name=Kürbiskerne +item.shears.name=Schere +item.shield.black.name=Schwarzer Schild +item.shield.blue.name=Blauer Schild +item.shield.brown.name=Brauner Schild +item.shield.cyan.name=Türkiser Schild +item.shield.gray.name=Grauer Schild +item.shield.green.name=Grüner Schild +item.shield.lightBlue.name=Hellblauer Schild +item.shield.lime.name=Hellgrüner Schild +item.shield.magenta.name=Magenta Schild +item.shield.name=Schild +item.shield.orange.name=Oranger Schild +item.shield.pink.name=Rosa Schild +item.shield.purple.name=Violetter Schild +item.shield.red.name=Roter Schild +item.shield.silver.name=Hellgrauer Schild +item.shield.white.name=Weißer Schild +item.shield.yellow.name=Gelber Schild +item.shovelDiamond.name=Diamantschaufel +item.shovelGold.name=Goldschaufel +item.shovelIron.name=Eisenschaufel +item.shovelStone.name=Steinschaufel +item.shovelWood.name=Holzschaufel +item.sign.name=Schild +item.skull.char.name=Kopf +item.skull.creeper.name=Creeperkopf +item.skull.dragon.name=Drachenkopf +item.skull.player.name=Kopf von %s +item.skull.skeleton.name=Skelettschädel +item.skull.wither.name=Witherskelettschädel +item.skull.zombie.name=Zombiekopf +item.slimeball.name=Schleimball +item.snowball.name=Schneeball +item.speckledMelon.name=Glitzernde Melone +item.spectral_arrow.name=Spektralpfeil +item.spiderEye.name=Spinnenauge +item.stick.name=Stock +item.string.name=Faden +item.sugar.name=Zucker +item.sulphur.name=Schwarzpulver +item.swordDiamond.name=Diamantschwert +item.swordGold.name=Goldschwert +item.swordIron.name=Eisenschwert +item.swordStone.name=Steinschwert +item.swordWood.name=Holzschwert +item.tipped_arrow.name=Getränkter Pfeil +item.unbreakable=Unzerstörbar +item.wheat.name=Weizen +item.writingBook.name=Buch und Feder +item.writtenBook.name=Beschriebenes Buch +item.yellowDust.name=Glowstonestaub + +tile.acaciaFence.name=Akazienholzzaun +tile.acaciaFenceGate.name=Akazienholzzauntor +tile.activatorRail.name=Aktivierungsschiene +tile.anvil.intact.name=Amboss +tile.anvil.name=Amboss +tile.anvil.slightlyDamaged.name=Leicht beschädigter Amboss +tile.anvil.veryDamaged.name=Stark beschädigter Amboss +tile.barrier.name=Barriere +tile.beacon.name=Leuchtfeuer +tile.beacon.primary=Primäre Kraft +tile.beacon.secondary=Sekundäre Kraft +tile.bed.name=Bett +tile.bed.noSleep=Du kannst nur nachts schlafen +tile.bed.notSafe=Du kannst jetzt nicht schlafen, es sind Monster in der Nähe +tile.bed.notValid=Dein Bett wurde blockiert oder zerstört +tile.bed.occupied=Dieses Bett ist belegt +tile.bedrock.name=Grundgestein +tile.beetroots.name=Rote Bete +tile.birchFence.name=Birkenholzzaun +tile.birchFenceGate.name=Birkenholzzauntor +tile.blockCoal.name=Kohleblock +tile.blockDiamond.name=Diamantblock +tile.blockEmerald.name=Smaragdblock +tile.blockGold.name=Goldblock +tile.blockIron.name=Eisenblock +tile.blockLapis.name=Lapislazuliblock +tile.blockRedstone.name=Redstone-Block +tile.bookshelf.name=Bücherregal +tile.brick.name=Ziegelsteine +tile.button.name=Knopf +tile.cactus.name=Kaktus +tile.cake.name=Kuchen +tile.carrots.name=Karotten +tile.cauldron.name=Kessel +tile.chainCommandBlock.name=Ketten-Befehlsblock +tile.chest.name=Truhe +tile.chestTrap.name=Redstonetruhe +tile.chorusFlower.name=Chorusblüte +tile.chorusPlant.name=Choruspflanze +tile.clay.name=Ton +tile.clayHardened.name=Gebrannter Ton +tile.clayHardenedStained.black.name=Schwarz gefärbter Ton +tile.clayHardenedStained.blue.name=Blau gefärbter Ton +tile.clayHardenedStained.brown.name=Braun gefärbter Ton +tile.clayHardenedStained.cyan.name=Türkis gefärbter Ton +tile.clayHardenedStained.gray.name=Grau gefärbter Ton +tile.clayHardenedStained.green.name=Grün gefärbter Ton +tile.clayHardenedStained.lightBlue.name=Hellblau gefärbter Ton +tile.clayHardenedStained.lime.name=Hellgrün gefärbter Ton +tile.clayHardenedStained.magenta.name=Magenta gefärbter Ton +tile.clayHardenedStained.name=Gefärbter Ton +tile.clayHardenedStained.orange.name=Orange gefärbter Ton +tile.clayHardenedStained.pink.name=Rosa gefärbter Ton +tile.clayHardenedStained.purple.name=Violett gefärbter Ton +tile.clayHardenedStained.red.name=Rot gefärbter Ton +tile.clayHardenedStained.silver.name=Hellgrau gefärbter Ton +tile.clayHardenedStained.white.name=Weiß gefärbter Ton +tile.clayHardenedStained.yellow.name=Gelb gefärbter Ton +tile.cloth.black.name=Schwarze Wolle +tile.cloth.blue.name=Blaue Wolle +tile.cloth.brown.name=Braune Wolle +tile.cloth.cyan.name=Türkise Wolle +tile.cloth.gray.name=Graue Wolle +tile.cloth.green.name=Grüne Wolle +tile.cloth.lightBlue.name=Hellblaue Wolle +tile.cloth.lime.name=Hellgrüne Wolle +tile.cloth.magenta.name=Magenta Wolle +tile.cloth.name=Wolle +tile.cloth.orange.name=Orange Wolle +tile.cloth.pink.name=Rosa Wolle +tile.cloth.purple.name=Violette Wolle +tile.cloth.red.name=Rote Wolle +tile.cloth.silver.name=Hellgraue Wolle +tile.cloth.white.name=Weiße Wolle +tile.cloth.yellow.name=Gelbe Wolle +tile.cobbleWall.mossy.name=Bemooste Bruchsteinmauer +tile.cobbleWall.normal.name=Bruchsteinmauer +tile.cocoa.name=Kakao +tile.commandBlock.name=Befehlsblock +tile.crops.name=Getreide +tile.darkOakFence.name=Schwarzeichenholzzaun +tile.darkOakFenceGate.name=Schwarzeichenholzzauntor +tile.daylightDetector.name=Tageslichtsensor +tile.deadbush.name=Toter Busch +tile.detectorRail.name=Sensorschiene +tile.dirt.coarse.name=Grobe Erde +tile.dirt.default.name=Erde +tile.dirt.name=Erde +tile.dirt.podzol.name=Podsol +tile.dispenser.name=Werfer +tile.doorIron.name=Eisentür +tile.doorWood.name=Holztür +tile.doublePlant.fern.name=Großer Farn +tile.doublePlant.grass.name=Hohes Gras +tile.doublePlant.name=Pflanze +tile.doublePlant.paeonia.name=Pfingstrose +tile.doublePlant.rose.name=Rosenstrauch +tile.doublePlant.sunflower.name=Sonnenblume +tile.doublePlant.syringa.name=Flieder +tile.dragonEgg.name=Drachenei +tile.dropper.name=Spender +tile.enchantmentTable.name=Zaubertisch +tile.endBricks.name=Endsteinziegel +tile.endPortalFrame.name=Endportalrahmen +tile.endRod.name=Endstab +tile.enderChest.name=Endertruhe +tile.farmland.name=Ackerboden +tile.fence.name=Eichenholzzaun +tile.fenceGate.name=Eichenholzzauntor +tile.fenceIron.name=Eisengitter +tile.fire.name=Feuer +tile.flower1.dandelion.name=Löwenzahn +tile.flower1.name=Blume +tile.flower2.allium.name=Sternlauch +tile.flower2.blueOrchid.name=Blaue Orchidee +tile.flower2.houstonia.name=Porzellansternchen +tile.flower2.name=Blume +tile.flower2.oxeyeDaisy.name=Margerite +tile.flower2.poppy.name=Mohn +tile.flower2.tulipOrange.name=Orange Tulpe +tile.flower2.tulipPink.name=Rosa Tulpe +tile.flower2.tulipRed.name=Rote Tulpe +tile.flower2.tulipWhite.name=Weiße Tulpe +tile.frostedIce.name=Brüchiges Eis +tile.furnace.name=Ofen +tile.glass.name=Glas +tile.goldenRail.name=Antriebsschiene +tile.grass.name=Grasblock +tile.grassPath.name=Trampelpfad +tile.gravel.name=Kies +tile.hayBlock.name=Strohballen +tile.hellrock.name=Netherrack +tile.hellsand.name=Seelensand +tile.hopper.name=Trichter +tile.ice.name=Eis +tile.icePacked.name=Packeis +tile.ironTrapdoor.name=Eisenfalltür +tile.jukebox.name=Plattenspieler +tile.jungleFence.name=Tropenholzzaun +tile.jungleFenceGate.name=Tropenholzzauntor +tile.ladder.name=Leiter +tile.lava.name=Lava +tile.leaves.acacia.name=Akazienlaub +tile.leaves.big_oak.name=Schwarzeichenlaub +tile.leaves.birch.name=Birkenlaub +tile.leaves.jungle.name=Tropenbaumlaub +tile.leaves.name=Laub +tile.leaves.oak.name=Eichenlaub +tile.leaves.spruce.name=Fichtennadeln +tile.lever.name=Hebel +tile.lightgem.name=Glowstone +tile.litpumpkin.name=Kürbislaterne +tile.lockedchest.name=Verschlossene Truhe +tile.log.acacia.name=Akazienholz +tile.log.big_oak.name=Schwarzeichenholz +tile.log.birch.name=Birkenholz +tile.log.jungle.name=Tropenholz +tile.log.name=Holz +tile.log.oak.name=Eichenholz +tile.log.spruce.name=Fichtenholz +tile.melon.name=Melone +tile.mobSpawner.name=Monsterspawner +tile.monsterStoneEgg.brick.name=Steinziegel (Silberfischchen) +tile.monsterStoneEgg.chiseledbrick.name=Gemeißelte Steinziegel (Silberfischchen) +tile.monsterStoneEgg.cobble.name=Bruchstein (Silberfischchen) +tile.monsterStoneEgg.crackedbrick.name=Rissige Steinziegel (Silberfischchen) +tile.monsterStoneEgg.mossybrick.name=Bemooste Steinziegel (Silberfischchen) +tile.monsterStoneEgg.name=Stein (Silberfischchen) +tile.monsterStoneEgg.stone.name=Stein (Silberfischchen) +tile.mushroom.name=Pilz +tile.musicBlock.name=Notenblock +tile.mycel.name=Myzel +tile.netherBrick.name=Netherziegel +tile.netherFence.name=Netherziegelzaun +tile.netherStalk.name=Netherwarze +tile.netherquartz.name=Netherquarzerz +tile.notGate.name=Redstone-Fackel +tile.obsidian.name=Obsidian +tile.oreCoal.name=Steinkohle +tile.oreDiamond.name=Diamanterz +tile.oreEmerald.name=Smaragderz +tile.oreGold.name=Golderz +tile.oreIron.name=Eisenerz +tile.oreLapis.name=Lapislazulierz +tile.oreRedstone.name=Redstone-Erz +tile.oreRuby.name=Rubinerz +tile.pistonBase.name=Kolben +tile.pistonStickyBase.name=Klebriger Kolben +tile.portal.name=Portal +tile.potatoes.name=Kartoffeln +tile.pressurePlateStone.name=Steindruckplatte +tile.pressurePlateWood.name=Holzdruckplatte +tile.prismarine.bricks.name=Prismarinziegel +tile.prismarine.dark.name=Dunkler Prismarin +tile.prismarine.rough.name=Prismarin +tile.pumpkin.name=Kürbis +tile.pumpkinStem.name=Kürbispflanze +tile.purpurBlock.name=Purpurblock +tile.purpurPillar.name=Purpursäule +tile.purpurSlab.name=Purpurstufe +tile.quartzBlock.chiseled.name=Gemeißelter Quarzblock +tile.quartzBlock.default.name=Quarzblock +tile.quartzBlock.lines.name=Quarzsäule +tile.quartzBlock.name=Quarzblock +tile.rail.name=Schiene +tile.redSandStone.chiseled.name=Gemeißelter roter Sandstein +tile.redSandStone.default.name=Roter Sandstein +tile.redSandStone.name=Roter Sandstein +tile.redSandStone.smooth.name=Glatter roter Sandstein +tile.redstoneDust.name=Redstone-Staub +tile.redstoneLight.name=Redstone-Lampe +tile.reeds.name=Zuckerrohr +tile.repeatingCommandBlock.name=Wiederhol-Befehlsblock +tile.sand.default.name=Sand +tile.sand.name=Sand +tile.sand.red.name=Roter Sand +tile.sandStone.chiseled.name=Gemeißelter Sandstein +tile.sandStone.default.name=Sandstein +tile.sandStone.name=Sandstein +tile.sandStone.smooth.name=Glatter Sandstein +tile.sapling.acacia.name=Akaziensetzling +tile.sapling.big_oak.name=Schwarzeichensetzling +tile.sapling.birch.name=Birkensetzling +tile.sapling.jungle.name=Tropenbaumsetzling +tile.sapling.oak.name=Eichensetzling +tile.sapling.spruce.name=Fichtensetzling +tile.seaLantern.name=Seelaterne +tile.sign.name=Schild +tile.slime.name=Schleimblock +tile.snow.name=Schnee +tile.sponge.dry.name=Schwamm +tile.sponge.wet.name=Nasser Schwamm +tile.spruceFence.name=Fichtenholzzaun +tile.spruceFenceGate.name=Fichtenholzzauntor +tile.stainedGlass.black.name=Schwarzes Glas +tile.stainedGlass.blue.name=Blaues Glas +tile.stainedGlass.brown.name=Braunes Glas +tile.stainedGlass.cyan.name=Türkises Glas +tile.stainedGlass.gray.name=Graues Glas +tile.stainedGlass.green.name=Grünes Glas +tile.stainedGlass.lightBlue.name=Hellblaues Glas +tile.stainedGlass.lime.name=Hellgrünes Glas +tile.stainedGlass.magenta.name=Magenta Glas +tile.stainedGlass.name=Gefärbtes Glas +tile.stainedGlass.orange.name=Oranges Glas +tile.stainedGlass.pink.name=Rosa Glas +tile.stainedGlass.purple.name=Violettes Glas +tile.stainedGlass.red.name=Rotes Glas +tile.stainedGlass.silver.name=Hellgraues Glas +tile.stainedGlass.white.name=Weißes Glas +tile.stainedGlass.yellow.name=Gelbes Glas +tile.stairsBrick.name=Ziegeltreppe +tile.stairsNetherBrick.name=Netherziegeltreppe +tile.stairsPurpur.name=Purpurtreppe +tile.stairsQuartz.name=Quarztreppe +tile.stairsRedSandStone.name=Rote Sandsteintreppe +tile.stairsSandStone.name=Sandsteintreppe +tile.stairsStone.name=Bruchsteintreppe +tile.stairsStoneBrickSmooth.name=Steinziegeltreppe +tile.stairsWood.name=Eichenholztreppe +tile.stairsWoodAcacia.name=Akazienholztreppe +tile.stairsWoodBirch.name=Birkenholztreppe +tile.stairsWoodDarkOak.name=Schwarzeichenholztreppe +tile.stairsWoodJungle.name=Tropenholztreppe +tile.stairsWoodSpruce.name=Fichtenholztreppe +tile.stone.andesite.name=Andesit +tile.stone.andesiteSmooth.name=Polierter Andesit +tile.stone.diorite.name=Diorit +tile.stone.dioriteSmooth.name=Polierter Diorit +tile.stone.granite.name=Granit +tile.stone.graniteSmooth.name=Polierter Granit +tile.stone.stone.name=Stein +tile.stoneMoss.name=Bemooster Bruchstein +tile.stoneSlab.brick.name=Ziegelstufe +tile.stoneSlab.cobble.name=Bruchsteinstufe +tile.stoneSlab.name=Steinstufe +tile.stoneSlab.netherBrick.name=Netherziegelstufe +tile.stoneSlab.quartz.name=Quarzstufe +tile.stoneSlab.sand.name=Sandsteinstufe +tile.stoneSlab.smoothStoneBrick.name=Steinziegelstufe +tile.stoneSlab.stone.name=Steinstufe +tile.stoneSlab.wood.name=Holzstufe +tile.stoneSlab2.red_sandstone.name=Rote Sandsteinstufe +tile.stonebrick.name=Bruchstein +tile.stonebricksmooth.chiseled.name=Gemeißelte Steinziegel +tile.stonebricksmooth.cracked.name=Rissige Steinziegel +tile.stonebricksmooth.default.name=Steinziegel +tile.stonebricksmooth.mossy.name=Bemooste Steinziegel +tile.stonebricksmooth.name=Steinziegel +tile.structureBlock.name=Konstruktionsblock +tile.tallgrass.fern.name=Farn +tile.tallgrass.grass.name=Gras +tile.tallgrass.name=Gras +tile.tallgrass.shrub.name=Busch +tile.thinGlass.name=Glasscheibe +tile.thinStainedGlass.black.name=Schwarze Glasscheibe +tile.thinStainedGlass.blue.name=Blaue Glasscheibe +tile.thinStainedGlass.brown.name=Braune Glasscheibe +tile.thinStainedGlass.cyan.name=Türkise Glasscheibe +tile.thinStainedGlass.gray.name=Graue Glasscheibe +tile.thinStainedGlass.green.name=Grüne Glasscheibe +tile.thinStainedGlass.lightBlue.name=Hellblaue Glasscheibe +tile.thinStainedGlass.lime.name=Hellgrüne Glasscheibe +tile.thinStainedGlass.magenta.name=Magenta Glasscheibe +tile.thinStainedGlass.name=Gefärbte Glasscheibe +tile.thinStainedGlass.orange.name=Orange Glasscheibe +tile.thinStainedGlass.pink.name=Rosa Glasscheibe +tile.thinStainedGlass.purple.name=Violette Glasscheibe +tile.thinStainedGlass.red.name=Rote Glasscheibe +tile.thinStainedGlass.silver.name=Hellgraue Glasscheibe +tile.thinStainedGlass.white.name=Weiße Glasscheibe +tile.thinStainedGlass.yellow.name=Gelbe Glasscheibe +tile.tnt.name=TNT +tile.torch.name=Fackel +tile.trapdoor.name=Holzfalltür +tile.tripWire.name=Stolperdraht +tile.tripWireSource.name=Haken +tile.vine.name=Ranken +tile.water.name=Wasser +tile.waterlily.name=Seerosenblatt +tile.web.name=Spinnennetz +tile.weightedPlate_heavy.name=Wägeplatte (hohe Gewichte) +tile.weightedPlate_light.name=Wägeplatte (niedrige Gewichte) +tile.whiteStone.name=Endstein +tile.wood.acacia.name=Akazienholzbretter +tile.wood.big_oak.name=Schwarzeichenholzbretter +tile.wood.birch.name=Birkenholzbretter +tile.wood.jungle.name=Tropenholzbretter +tile.wood.name=Holzbretter +tile.wood.oak.name=Eichenholzbretter +tile.wood.spruce.name=Fichtenholzbretter +tile.woodSlab.acacia.name=Akazienholzstufe +tile.woodSlab.big_oak.name=Schwarzeichenholzstufe +tile.woodSlab.birch.name=Birkenholzstufe +tile.woodSlab.jungle.name=Tropenholzstufe +tile.woodSlab.name=Holzstufe +tile.woodSlab.oak.name=Eichenholzstufe +tile.woodSlab.spruce.name=Fichtenholzstufe +tile.woolCarpet.black.name=Schwarzer Teppich +tile.woolCarpet.blue.name=Blauer Teppich +tile.woolCarpet.brown.name=Brauner Teppich +tile.woolCarpet.cyan.name=Türkiser Teppich +tile.woolCarpet.gray.name=Grauer Teppich +tile.woolCarpet.green.name=Grüner Teppich +tile.woolCarpet.lightBlue.name=Hellblauer Teppich +tile.woolCarpet.lime.name=Hellgrüner Teppich +tile.woolCarpet.magenta.name=Magenta Teppich +tile.woolCarpet.name=Teppich +tile.woolCarpet.orange.name=Oranger Teppich +tile.woolCarpet.pink.name=Rosa Teppich +tile.woolCarpet.purple.name=Violetter Teppich +tile.woolCarpet.red.name=Roter Teppich +tile.woolCarpet.silver.name=Hellgrauer Teppich +tile.woolCarpet.white.name=Weißer Teppich +tile.woolCarpet.yellow.name=Gelber Teppich +tile.workbench.name=Werkbank + +lingering_potion.effect.awkward=Seltsamer Verweiltrank +lingering_potion.effect.empty=Nicht braubarer Verweiltrank +lingering_potion.effect.fire_resistance=Verweiltrank der Feuerresistenz +lingering_potion.effect.harming=Verweiltrank des Schadens +lingering_potion.effect.healing=Verweiltrank der Heilung +lingering_potion.effect.invisibility=Verweiltrank der Unsichtbarkeit +lingering_potion.effect.leaping=Verweiltrank der Sprungkraft +lingering_potion.effect.levitation=Verweiltrank der Schwebekraft +lingering_potion.effect.luck=Verweiltrank des Glücks +lingering_potion.effect.mundane=Gewöhnlicher Verweiltrank +lingering_potion.effect.night_vision=Verweiltrank der Nachtsicht +lingering_potion.effect.poison=Verweiltrank der Vergiftung +lingering_potion.effect.regeneration=Verweiltrank der Regeneration +lingering_potion.effect.slowness=Verweiltrank der Langsamkeit +lingering_potion.effect.strength=Verweiltrank der Stärke +lingering_potion.effect.swiftness=Verweiltrank der Schnelligkeit +lingering_potion.effect.thick=Dickflüssiger Verweiltrank +lingering_potion.effect.water=Verweilende Wasserflasche +lingering_potion.effect.water_breathing=Verweiltrank der Unterwasseratmung +lingering_potion.effect.weakness=Verweiltrank der Schwäche + +potion.effect.awkward=Seltsamer Trank +potion.effect.empty=Nicht braubarer Trank +potion.effect.fire_resistance=Trank der Feuerresistenz +potion.effect.harming=Trank des Schadens +potion.effect.healing=Trank der Heilung +potion.effect.invisibility=Trank der Unsichtbarkeit +potion.effect.leaping=Trank der Sprungkraft +potion.effect.levitation=Trank der Schwebekraft +potion.effect.luck=Trank des Glücks +potion.effect.mundane=Gewöhnlicher Trank +potion.effect.night_vision=Trank der Nachtsicht +potion.effect.poison=Trank der Vergiftung +potion.effect.regeneration=Trank der Regeneration +potion.effect.slowness=Trank der Langsamkeit +potion.effect.strength=Trank der Stärke +potion.effect.swiftness=Trank der Schnelligkeit +potion.effect.thick=Dickflüssiger Trank +potion.effect.water=Wasserflasche +potion.effect.water_breathing=Trank der Unterwasseratmung +potion.effect.weakness=Trank der Schwäche + +splash_potion.effect.awkward=Seltsamer Wurftrank +splash_potion.effect.empty=Nicht braubarer Wurftrank +splash_potion.effect.fire_resistance=Wurftrank der Feuerresistenz +splash_potion.effect.harming=Wurftrank des Schadens +splash_potion.effect.healing=Wurftrank der Heilung +splash_potion.effect.invisibility=Wurftrank der Unsichtbarkeit +splash_potion.effect.leaping=Wurftrank der Sprungkraft +splash_potion.effect.levitation=Wurftrank der Schwebekraft +splash_potion.effect.luck=Wurftrank des Glücks +splash_potion.effect.mundane=Gewöhnlicher Wurftrank +splash_potion.effect.night_vision=Wurftrank der Nachtsicht +splash_potion.effect.poison=Wurftrank der Vergiftung +splash_potion.effect.regeneration=Wurftrank der Regeneration +splash_potion.effect.slowness=Wurftrank der Langsamkeit +splash_potion.effect.strength=Wurftrank der Stärke +splash_potion.effect.swiftness=Wurftrank der Schnelligkeit +splash_potion.effect.thick=Dickflüssiger Wurftrank +splash_potion.effect.water=Werfbare Wasserflasche +splash_potion.effect.water_breathing=Wurftrank der Unterwasseratmung +splash_potion.effect.weakness=Wurftrank der Schwäche + +tipped_arrow.effect.awkward=Getränkter Pfeil +tipped_arrow.effect.empty=Getränkter Pfeil +tipped_arrow.effect.fire_resistance=Pfeil der Feuerresistenz +tipped_arrow.effect.harming=Pfeil des Schadens +tipped_arrow.effect.healing=Pfeil der Heilung +tipped_arrow.effect.invisibility=Pfeil der Unsichtbarkeit +tipped_arrow.effect.leaping=Pfeil der Sprungkraft +tipped_arrow.effect.levitation=Pfeil der Schwebekraft +tipped_arrow.effect.luck=Pfeil des Glücks +tipped_arrow.effect.mundane=Getränkter Pfeil +tipped_arrow.effect.night_vision=Pfeil der Nachtsicht +tipped_arrow.effect.poison=Pfeil der Vergiftung +tipped_arrow.effect.regeneration=Pfeil der Regeneration +tipped_arrow.effect.slowness=Pfeil der Langsamkeit +tipped_arrow.effect.strength=Pfeil der Stärke +tipped_arrow.effect.swiftness=Pfeil der Schnelligkeit +tipped_arrow.effect.thick=Getränkter Pfeil +tipped_arrow.effect.water=Nasser Pfeil +tipped_arrow.effect.water_breathing=Pfeil der Unterwasseratmung +tipped_arrow.effect.weakness=Pfeil der Schwäche \ No newline at end of file diff --git a/lang/en_US.lang b/lang/en_US.lang new file mode 100644 index 0000000..aa39d1c --- /dev/null +++ b/lang/en_US.lang @@ -0,0 +1,1691 @@ +# Set the message when a shop is created at the clicked chest. +message.shop-created=&6Shop created. + +# Set the message when the clicked chest already is a shop. +message.chest-already-shop=&cChest already is shop. + +# Set the message when the clicked shop is removed. +message.shop-removed=&6Shop removed. + +# Set the message when the clicked chest is not a shop. +message.chest-no-shop=&cChest is not a shop. + +# Set the message when the player doesn't have enough money to create a shop +# Usable Regex: %CREATION-PRICE% +message.shop-create-not-enough-money=&cNot enough money. You need &6%CREATION-PRICE% &cto create a shop. + +# Set the vendor message the player gets after entering '/shop info'. +# Usable regex: %VENDOR% +message.shopInfo.vendor=&6Vendor=&e%VENDOR% + +# Set the product message the player gets after entering '/shop info'. +# Usable regex: %AMOUNT%, %ITEMNAME% +message.shopInfo.product=&6Product: &e%AMOUNT% x %ITEMNAME% + +# Set the in-stock message the player after entering '/shop info'. +# Usable regex=%AMOUNT% +message.shopInfo.stock=&6In Stock: &e%AMOUNT% + +# Set the enchantments message the player gets after entering '/shop info' if the product is enchanted +# Usable regex: %ENCHANTMENT% +message.shopInfo.enchantments=&6Enchantments: &e%ENCHANTMENT% + +# Set the potion effect message the player gets after entering '/shop info' if the product has a potion effect +# Usable regex: %POTION-EFFECT% +message.shopInfo.potion-effect=&6Potion Effect: &e%POTION-EFFECT% + +# Set the music disc title message the player gets after entering '/shop info' if the product is a music disc +# Usable regex: %MUSIC-TITLE% +message.shopInfo.music-disc-title=&6Music Disc Title: &e%MUSIC-TITLE% + +# If the product is a tipped arrow but it doesn't have an effect, this gets displayed instead of the arrow effect +message.shopInfo.none=&7None + +# Set the price message the player gets after entering '/shop info'. +# Usable regex: %BUY-PRICE%, %SELL-PRICE% +message.shopInfo.price=&6Price: Buy: &e%BUY-PRICE%&6 Sell: &e%SELL-PRICE% + +# If the sell price or buy price is disabled, this message will be displayed instead of the price in the message above. +message.shopInfo.disabled=&7Disabled + +# Set the type message the player gets after entering '/shop info' ... +# ... when the shop is normal. +message.shopInfo.is-normal=&6Type: &eNormal + +# ... when the shop is an admin shop. +message.shopInfo.is-admin=&6Type: &eAdmin + +# Set the message when the player tries to create a shop with sell price and buy price set to 0 +message.buy-and-sell-disabled=&cYou can't create a shop with buying and selling disabled. + +# Set the message when the player successfully bought something. +# Usable regex: %AMOUNT%, %ITEMNAME%, %BUY-PRICE%, %VENDOR% +message.buy-success=&aYou bought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a from &6%VENDOR%&a. + +# Set the message when the player successfully bought something from an admin shop. +# Usable regex: %AMOUNT%, %ITEMNAME%, %BUY-PRICE% +message.buy-success-admin=&aYou bought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a. + +# Set the message when the player successfully sold something. +# Usable regex: %AMOUNT%, %ITEMNAME%, %SELL-PRICE%, %VENDOR% +message.sell-success=&aYou sold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a to &6%VENDOR%&a. + +# Set the message when the player successfully sold something to an admin shop. +# Usable regex: %AMOUNT%, %ITEMNAME%, %SELL-PRICE% +message.sell-success-admin=&aYou sold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a. + +# Set the message when a player bought something from the player's shop. +# Usable regex: %AMOUNT%, %ITEMNAME%, %BUY-PRICE%, %PLAYER% +message.someone-bought=&6%PLAYER% &abought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a from your shop. + +# Set the message when a player sold something to the player's shop. +# Usable regex: %AMOUNT%, %ITEMNAME%, %SELL-PRICE%, %PLAYER% +message.someone-sold=&6%PLAYER% &asold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a to your shop. + +# Set the message when the inventory is full when the player is buying something. +message.not-enough-inventory-space=&cNot enough space in inventory. + +# Set the message when the shop's inventory is full when the player is selling something. +message.chest-not-enough-inventory-space=&cShop is full. + +# Set the message when the player doesn't have enough money to buy something. +message.not-enough-money=&cNot enough money. + +# Set the message when the player doesn't have enough items to sell. +message.not-enough-items=&cNot enough items. + +# Set the message when the vendor doesn't have enough money to buy something from the player +message.vendor-not-enough-money=&cVendor has not enough money. + +# Set the message when the shop is out of stock. +message.out-of-stock=&cShop out of stock. + +# Set the message when an error occurred. +# Usable regex: %ERROR% +message.error-occurred=&cAn error occurred: %ERROR% + +# Set the message when the arguments and of '/shop create' are not a number. +message.amount-and-price-not-number=&cAmount and price must be a number. + +# Set the message when the player doesn't hold an item in the hand. +message.no-item-in-hand=&cNo item in hand + +# Set the message when the player must click a chest to create a shop. +message.click-chest-to-create-shop=&aClick a chest to create a shop. + +# Set the message when the player must click a shop to remove it. +message.click-chest-to-remove-shop=&aClick a shop-chest to remove the shop. + +# Set the message when the player must click a shop to retrieve information. +message.click-chest-for-info=&aClick a shop to retrieve information. + +# Set the message when the player opened a shop. +# Usable regex: %VENDOR% +message.opened-shop=&aYou opened %VENDOR%'s shop. + +# Set the message when the player tries to break a shop. +message.cannot-break-shop=&cYou can't break a shop. + +# Set the message when the player tries to sell a broken item. +message.cannot-sell-broken-item=&cYou can't sell a broken item. + +# Set the message when the entered buy price is below the minimum price. +# Usable regex: %MIN-PRICE% +message.buy-price-too-low=&cThe buy price must be higher than %MIN-PRICE%. + +# Set the message when the entered sell price is below the minimum price. +# Usable regex: %MIN-PRICE% +message.sell-price-too-low=&cThe sell price must be higher than %MIN-PRICE%. + +# Set the message when buying is disabled at the shop. +message.buying-disabled=&cBuying is disabled at this shop. + +# Set the message when selling is disabled at the shop. +message.selling-disabled=&cSelling is disabled at this shop. + +# Set the message when reloading is done. +# Usable regex: %AMOUNT% (Amount of shops) +message.reloaded-shops=&aSuccessfully reloaded %AMOUNT% shop/s. + +# Set the message when the player's shop limit is reached. +# Usable regex: %LIMIT% +message.shop-limit-reached=&cYou reached your limit of &6%LIMIT% &cshop/s. + +# Set the message that shows the player how many shop slots of his shop limit he has occupied. +# Usable regex: %LIMIT%, %AMOUNT% (Amount of shops) +message.occupied-shop-slots=&6You have &c%AMOUNT%/%LIMIT% &6shop slot/s occupied. + +# Set the message when the player tries to create a shop with an item which is listed in the blacklist. +message.cannot-sell-item=&cYou cannot create a shop with this item. + +# Set the message when an update is available. +# Usable regex: %VERSION% +message.update.update-available=&6&lVersion &c%VERSION% &6of &cShopChest &6is available &chere. + +# Set the message you get when hovering over the available message. +message.update.click-to-download=Click to download + +# Set the message when no update is available. +message.update.no-update=&6&lNo new update available. + +# Set the message when the update checker is started. +message.update.checking=&6&lChecking for updates... + +# Set the message when an error occurs while checking for updates. +message.update.error=&c&lError while checking for updates. + +# Set the text in the first row of the shop's hologram +# Usable regex: %ITEMNAME%, %AMOUNT% +message.hologram.format=%AMOUNT% * %ITEMNAME% + +# Set the text in the second row of the shop's hologram when the player can buy and sell an item. +# Usable regex: %BUY-PRICE%, %SELL-PRICE% +message.hologram.buy-and-sell=Buy %BUY-PRICE% | %SELL-PRICE% Sell + +# Set the text in the second row of the shop's hologram when the player can only buy an item. +# Usable regex: %BUY-PRICE% +message.hologram.only-buy=Buy %BUY-PRICE% + +# Set the text in the second row of the shop's hologram when the player can only sell an item. +# Usable regex: %SELL-PRICE% +message.hologram.only-sell=Sell %SELL-PRICE% + +# Set the message when a not permitted player tries to create a shop. +message.noPermission.create=&cYou don't have permission to create a shop. + +# Set the message when a not permitted player tries to create an admin shop. +message.noPermission.create-admin=&cYou don't have permission to create an admin shop. + +# Set the message when a not permitted player tries to open another player's shop. +message.noPermission.open-others=&cYou don't have permission to open this chest. + +# Set the message when a not permitted player tries to buy something. +message.noPermission.buy=&cYou don't have permission to buy something. + +# Set the message when a not permitted player tries to sell something. +message.noPermission.sell=&cYou don't have permission to sell something. + +# Set the message when a not permitted player tries to remove another player's shop. +message.noPermission.remove-others=&cYou don't have permission to remove this shop. + +# Set the message when a not permitted player tries to reload the shops. +message.noPermission.reload=&cYou don't have permission to reload the shops. + +# Set the message when a not permitted player tries to check for updates. +message.noPermission.update=&cYou don't have permission to check for updates. + +# Set the message when a not permitted player tries to view the shop limits. +message.noPermission.limits=&cYou don't have permission to view the shop limits. + +# Set the command description message for '/shop create' when you type '/shop'. +message.commandDescription.create=Create a shop. + +# Set the command description message for '/shop remove' when you type '/shop'. +message.commandDescription.remove=Remove a shop. + +# Set the command description message for '/shop info' when you type '/shop'. +message.commandDescription.info=Retrieve shop information. + +# Set the command description message for '/shop reload' when you type '/shop'. +message.commandDescription.reload=Reload shops. + +# Set the command description message for '/shop update' when you type '/shop'. +message.commandDescription.update=Check for Updates. + +# Set the command description message for '/shop limits' when you type '/shop'. +message.commandDescription.limits=View shop limits. + +# Effect names that will be displayed in the place of %POTION-EFFECT% +effect.none=No Effects +effect.moveSpeed=Speed +effect.moveSlowdown=Slowness +effect.digSpeed=Haste +effect.digSlowDown=Mining Fatigue +effect.damageBoost=Strength +effect.heal=Instant Health +effect.harm=Instant Damage +effect.jump=Jump Boost +effect.confusion=Nausea +effect.regeneration=Regeneration +effect.resistance=Resistance +effect.fireResistance=Fire Resistance +effect.waterBreathing=Water Breathing +effect.invisibility=Invisibility +effect.blindness=Blindness +effect.nightVision=Night Vision +effect.hunger=Hunger +effect.weakness=Weakness +effect.poison=Poison +effect.wither=Wither +effect.healthBoost=Health Boost +effect.absorption=Absorption +effect.saturation=Saturation +effect.glowing=Glowing +effect.luck=Luck +effect.unluck=Bad Luck +effect.levitation=Levitation + +# Item names of a tipped arrow +tipped_arrow.effect.empty=Tipped Arrow +tipped_arrow.effect.water=Tipped Arrow +tipped_arrow.effect.mundane=Tipped Arrow +tipped_arrow.effect.thick=Tipped Arrow +tipped_arrow.effect.awkward=Tipped Arrow +tipped_arrow.effect.night_vision=Arrow of Night Vision +tipped_arrow.effect.invisibility=Arrow of Invisibility +tipped_arrow.effect.leaping=Arrow of Leaping +tipped_arrow.effect.fire_resistance=Arrow of Fire Resistance +tipped_arrow.effect.swiftness=Arrow of Swiftness +tipped_arrow.effect.slowness=Arrow of Slowness +tipped_arrow.effect.water=Arrow of Splashing +tipped_arrow.effect.water_breathing=Arrow of Water Breathing +tipped_arrow.effect.healing=Arrow of Healing +tipped_arrow.effect.harming=Arrow of Harming +tipped_arrow.effect.poison=Arrow of Poison +tipped_arrow.effect.regeneration=Arrow of Regeneration +tipped_arrow.effect.strength=Arrow of Strength +tipped_arrow.effect.weakness=Arrow of Weakness +tipped_arrow.effect.levitation=Arrow of Levitation +tipped_arrow.effect.luck=Arrow of Luck + +# Item names of a normal potion +potion.effect.empty=Uncraftable Potion +potion.effect.water=Water Bottle +potion.effect.mundane=Mundane Potion +potion.effect.thick=Thick Potion +potion.effect.awkward=Awkward Potion +potion.effect.night_vision=Potion of Night Vision +potion.effect.invisibility=Potion of Invisibility +potion.effect.leaping=Potion of Leaping +potion.effect.fire_resistance=Potion of Fire Resistance +potion.effect.swiftness=Potion of Swiftness +potion.effect.slowness=Potion of Slowness +potion.effect.water_breathing=Potion of Water Breathing +potion.effect.healing=Potion of Healing +potion.effect.harming=Potion of Harming +potion.effect.poison=Potion of Poison +potion.effect.regeneration=Potion of Regeneration +potion.effect.strength=Potion of Strength +potion.effect.weakness=Potion of Weakness +potion.effect.levitation=Potion of Levitation +potion.effect.luck=Potion of Luck + +# Item names of a splash potion +splash_potion.effect.empty=Splash Uncraftable Potion +splash_potion.effect.water=Splash Water Bottle +splash_potion.effect.mundane=Mundane Splash Potion +splash_potion.effect.thick=Thick Splash Potion +splash_potion.effect.awkward=Awkward Splash Potion +splash_potion.effect.night_vision=Splash Potion of Night Vision +splash_potion.effect.invisibility=Splash Potion of Invisibility +splash_potion.effect.leaping=Splash Potion of Leaping +splash_potion.effect.fire_resistance=Splash Potion of Fire Resistance +splash_potion.effect.swiftness=Splash Potion of Swiftness +splash_potion.effect.slowness=Splash Potion of Slowness +splash_potion.effect.water_breathing=Splash Potion of Water Breathing +splash_potion.effect.healing=Splash Potion of Healing +splash_potion.effect.harming=Splash Potion of Harming +splash_potion.effect.poison=Splash Potion of Poison +splash_potion.effect.regeneration=Splash Potion of Regeneration +splash_potion.effect.strength=Splash Potion of Strength +splash_potion.effect.weakness=Splash Potion of Weakness +splash_potion.effect.levitation=Splash Potion of Levitation +splash_potion.effect.luck=Splash Potion of Luck + +# Item names of a lingering potion +lingering_potion.effect.empty=Lingering Uncraftable Potion +lingering_potion.effect.water=Lingering Water Bottle +lingering_potion.effect.mundane=Mundane Lingering Potion +lingering_potion.effect.thick=Thick Lingering Potion +lingering_potion.effect.awkward=Awkward Lingering Potion +lingering_potion.effect.night_vision=Lingering Potion of Night Vision +lingering_potion.effect.invisibility=Lingering Potion of Invisibility +lingering_potion.effect.leaping=Lingering Potion of Leaping +lingering_potion.effect.fire_resistance=Lingering Potion of Fire Resistance +lingering_potion.effect.swiftness=Lingering Potion of Swiftness +lingering_potion.effect.slowness=Lingering Potion of Slowness +lingering_potion.effect.water_breathing=Lingering Potion of Water Breathing +lingering_potion.effect.healing=Lingering Potion of Healing +lingering_potion.effect.harming=Lingering Potion of Harming +lingering_potion.effect.poison=Lingering Potion of Poison +lingering_potion.effect.regeneration=Lingering Potion of Regeneration +lingering_potion.effect.strength=Lingering Potion of Strength +lingering_potion.effect.weakness=Lingering Potion of Weakness +lingering_potion.effect.levitation=Lingering Potion of Levitation +lingering_potion.effect.luck=Lingering Potion of Luck + +# Enchantment name that will be displayed instead of %ENCHANTMENT% +enchantment.damage.all=Sharpness +enchantment.damage.undead=Smite +enchantment.damage.arthropods=Bane of Arthropods +enchantment.knockback=Knockback +enchantment.fire=Fire Aspect +enchantment.protect.all=Protection +enchantment.protect.fire=Fire Protection +enchantment.protect.fall=Feather Falling +enchantment.protect.explosion=Blast Protection +enchantment.protect.projectile=Projectile Protection +enchantment.oxygen=Respiration +enchantment.waterWorker=Aqua Affinity +enchantment.waterWalker=Depth Strider +enchantment.frostWalker=Frost Walker +enchantment.digging=Efficiency +enchantment.untouching=Silk Touch +enchantment.durability=Unbreaking +enchantment.lootBonus=Looting +enchantment.lootBonusDigger=Fortune +enchantment.lootBonusFishing=Luck of the Sea +enchantment.fishingSpeed=Lure +enchantment.arrowDamage=Power +enchantment.arrowFire=Flame +enchantment.arrowKnockback=Punch +enchantment.arrowInfinite=Infinity +enchantment.thorns=Thorns +enchantment.mending=Mending +enchantment.level.1=I +enchantment.level.2=II +enchantment.level.3=III +enchantment.level.4=IV +enchantment.level.5=V +enchantment.level.6=VI +enchantment.level.7=VII +enchantment.level.8=VIII +enchantment.level.9=IX +enchantment.level.10=X + +# If the product is a spawn egg, this will be displayed after 'item.monsterPlacer.name' +entity.Creeper.name=Creeper +entity.Skeleton.name=Skeleton +entity.WitherSkeleton.name=Wither Skeleton +entity.Stray.name=Stray +entity.Spider.name=Spider +entity.Giant.name=Giant +entity.Zombie.name=Zombie +entity.Husk.name=Husk +entity.Slime.name=Slime +entity.Ghast.name=Ghast +entity.PigZombie.name=Zombie Pigman +entity.Enderman.name=Enderman +entity.Endermite.name=Endermite +entity.Silverfish.name=Silverfish +entity.CaveSpider.name=Cave Spider +entity.Blaze.name=Blaze +entity.LavaSlime.name=Magma Cube +entity.MushroomCow.name=Mooshroom +entity.Villager.name=Villager +entity.SnowMan.name=Snow Golem +entity.Witch.name=Witch +entity.Guardian.name=Guardian +entity.Shulker.name=Shulker +entity.PolarBear.name=Polar Bear +entity.Pig.name=Pig +entity.Sheep.name=Sheep +entity.Cow.name=Cow +entity.Chicken.name=Chicken +entity.Squid.name=Squid +entity.Wolf.name=Wolf +entity.Ozelot.name=Ocelot +entity.Cat.name=Cat +entity.Bat.name=Bat +entity.EntityHorse.name=Horse +entity.Donkey.name=Donkey +entity.Mule.name=Mule +entity.SkeletonHorse.name=Skeleton Horse +entity.ZombieHorse.name=Zombie Horse +entity.Rabbit.name=Rabbit +entity.KillerBunny.name=The Killer Bunny + +# Item names that will be displayed in the hologram +item.nameTag.name=Name Tag +item.leash.name=Lead +item.shovelIron.name=Iron Shovel +item.pickaxeIron.name=Iron Pickaxe +item.hatchetIron.name=Iron Axe +item.flintAndSteel.name=Flint and Steel +item.apple.name=Apple +item.cookie.name=Cookie +item.bow.name=Bow +item.arrow.name=Arrow +item.spectral_arrow.name=Spectral Arrow +item.tipped_arrow.name=Tipped Arrow +item.coal.name=Coal +item.charcoal.name=Charcoal +item.diamond.name=Diamond +item.emerald.name=Emerald +item.ingotIron.name=Iron Ingot +item.ingotGold.name=Gold Ingot +item.swordIron.name=Iron Sword +item.swordWood.name=Wooden Sword +item.shovelWood.name=Wooden Shovel +item.pickaxeWood.name=Wooden Pickaxe +item.hatchetWood.name=Wooden Axe +item.swordStone.name=Stone Sword +item.shovelStone.name=Stone Shovel +item.pickaxeStone.name=Stone Pickaxe +item.hatchetStone.name=Stone Axe +item.swordDiamond.name=Diamond Sword +item.shovelDiamond.name=Diamond Shovel +item.pickaxeDiamond.name=Diamond Pickaxe +item.hatchetDiamond.name=Diamond Axe +item.stick.name=Stick +item.bowl.name=Bowl +item.mushroomStew.name=Mushroom Stew +item.swordGold.name=Golden Sword +item.shovelGold.name=Golden Shovel +item.pickaxeGold.name=Golden Pickaxe +item.hatchetGold.name=Golden Axe +item.string.name=String +item.feather.name=Feather +item.sulphur.name=Gunpowder +item.hoeWood.name=Wooden Hoe +item.hoeStone.name=Stone Hoe +item.hoeIron.name=Iron Hoe +item.hoeDiamond.name=Diamond Hoe +item.hoeGold.name=Golden Hoe +item.seeds.name=Seeds +item.seeds_pumpkin.name=Pumpkin Seeds +item.seeds_melon.name=Melon Seeds +item.melon.name=Melon +item.wheat.name=Wheat +item.bread.name=Bread +item.helmetCloth.name=Leather Cap +item.chestplateCloth.name=Leather Tunic +item.leggingsCloth.name=Leather Pants +item.bootsCloth.name=Leather Boots +item.helmetChain.name=Chain Helmet +item.chestplateChain.name=Chain Chestplate +item.leggingsChain.name=Chain Leggings +item.bootsChain.name=Chain Boots +item.helmetIron.name=Iron Helmet +item.chestplateIron.name=Iron Chestplate +item.leggingsIron.name=Iron Leggings +item.bootsIron.name=Iron Boots +item.helmetDiamond.name=Diamond Helmet +item.chestplateDiamond.name=Diamond Chestplate +item.leggingsDiamond.name=Diamond Leggings +item.bootsDiamond.name=Diamond Boots +item.helmetGold.name=Golden Helmet +item.chestplateGold.name=Golden Chestplate +item.leggingsGold.name=Golden Leggings +item.bootsGold.name=Golden Boots +item.flint.name=Flint +item.porkchopRaw.name=Raw Porkchop +item.porkchopCooked.name=Cooked Porkchop +item.chickenRaw.name=Raw Chicken +item.chickenCooked.name=Cooked Chicken +item.muttonRaw.name=Raw Mutton +item.muttonCooked.name=Cooked Mutton +item.rabbitRaw.name=Raw Rabbit +item.rabbitCooked.name=Cooked Rabbit +item.rabbitStew.name=Rabbit Stew +item.rabbitFoot.name=Rabbit's Foot +item.rabbitHide.name=Rabbit Hide +item.beefRaw.name=Raw Beef +item.beefCooked.name=Steak +item.painting.name=Painting +item.frame.name=Item Frame +item.appleGold.name=Golden Apple +item.sign.name=Sign +item.doorOak.name=Oak Door +item.doorSpruce.name=Spruce Door +item.doorBirch.name=Birch Door +item.doorJungle.name=Jungle Door +item.doorAcacia.name=Acacia Door +item.doorDarkOak.name=Dark Oak Door +item.bucket.name=Bucket +item.bucketWater.name=Water Bucket +item.bucketLava.name=Lava Bucket +item.minecart.name=Minecart +item.saddle.name=Saddle +item.doorIron.name=Iron Door +item.redstone.name=Redstone +item.snowball.name=Snowball +item.boat.oak.name=Oak Boat +item.boat.spruce.name=Spruce Boat +item.boat.birch.name=Birch Boat +item.boat.jungle.name=Jungle Boat +item.boat.acacia.name=Acacia Boat +item.boat.dark_oak.name=Dark Oak Boat +item.leather.name=Leather +item.milk.name=Milk +item.brick.name=Brick +item.clay.name=Clay +item.reeds.name=Sugar Canes +item.paper.name=Paper +item.book.name=Book +item.slimeball.name=Slimeball +item.minecartChest.name=Minecart with Chest +item.minecartFurnace.name=Minecart with Furnace +item.minecartTnt.name=Minecart with TNT +item.minecartHopper.name=Minecart with Hopper +item.minecartCommandBlock.name=Minecart with Command Block +item.egg.name=Egg +item.compass.name=Compass +item.fishingRod.name=Fishing Rod +item.clock.name=Clock +item.yellowDust.name=Glowstone Dust +item.fish.cod.raw.name=Raw Fish +item.fish.salmon.raw.name=Raw Salmon +item.fish.pufferfish.raw.name=Pufferfish +item.fish.clownfish.raw.name=Clownfish +item.fish.cod.cooked.name=Cooked Fish +item.fish.salmon.cooked.name=Cooked Salmon +item.record.name=Music Disc +item.record.13.desc=C418 - 13 +item.record.cat.desc=C418 - cat +item.record.blocks.desc=C418 - blocks +item.record.chirp.desc=C418 - chirp +item.record.far.desc=C418 - far +item.record.mall.desc=C418 - mall +item.record.mellohi.desc=C418 - mellohi +item.record.stal.desc=C418 - stal +item.record.strad.desc=C418 - strad +item.record.ward.desc=C418 - ward +item.record.11.desc=C418 - 11 +item.record.wait.desc=C418 - wait +item.bone.name=Bone +item.dyePowder.black.name=Ink Sac +item.dyePowder.red.name=Rose Red +item.dyePowder.green.name=Cactus Green +item.dyePowder.brown.name=Cocoa Beans +item.dyePowder.blue.name=Lapis Lazuli +item.dyePowder.purple.name=Purple Dye +item.dyePowder.cyan.name=Cyan Dye +item.dyePowder.silver.name=Light Gray Dye +item.dyePowder.gray.name=Gray Dye +item.dyePowder.pink.name=Pink Dye +item.dyePowder.lime.name=Lime Dye +item.dyePowder.yellow.name=Dandelion Yellow +item.dyePowder.lightBlue.name=Light Blue Dye +item.dyePowder.magenta.name=Magenta Dye +item.dyePowder.orange.name=Orange Dye +item.dyePowder.white.name=Bone Meal +item.sugar.name=Sugar +item.cake.name=Cake +item.bed.name=Bed +item.diode.name=Redstone Repeater +item.comparator.name=Redstone Comparator +item.map.name=Map +item.leaves.name=Leaves +item.shears.name=Shears +item.rottenFlesh.name=Rotten Flesh +item.enderPearl.name=Ender Pearl +item.blazeRod.name=Blaze Rod +item.ghastTear.name=Ghast Tear +item.netherStalkSeeds.name=Nether Wart +item.potion.name=Potion +item.end_crystal.name=End Crystal +item.goldNugget.name=Gold Nugget +item.glassBottle.name=Glass Bottle +item.spiderEye.name=Spider Eye +item.fermentedSpiderEye.name=Fermented Spider Eye +item.blazePowder.name=Blaze Powder +item.magmaCream.name=Magma Cream +item.cauldron.name=Cauldron +item.brewingStand.name=Brewing Stand +item.eyeOfEnder.name=Eye of Ender +item.speckledMelon.name=Glistering Melon +item.monsterPlacer.name=Spawn +item.expBottle.name=Bottle o' Enchanting +item.fireball.name=Fire Charge +item.writingBook.name=Book and Quill +item.writtenBook.name=Written Book +item.flowerPot.name=Flower Pot +item.emptyMap.name=Empty Map +item.carrots.name=Carrot +item.carrotGolden.name=Golden Carrot +item.potato.name=Potato +item.potatoBaked.name=Baked Potato +item.potatoPoisonous.name=Poisonous Potato +item.skull.skeleton.name=Skeleton Skull +item.skull.wither.name=Wither Skeleton Skull +item.skull.zombie.name=Zombie Head +item.skull.char.name=Head +item.skull.player.name=%s's Head +item.skull.creeper.name=Creeper Head +item.skull.dragon.name=Dragon Head +item.carrotOnAStick.name=Carrot on a Stick +item.netherStar.name=Nether Star +item.pumpkinPie.name=Pumpkin Pie +item.enchantedBook.name=Enchanted Book +item.fireworks.name=Firework Rocket +item.fireworks.flight=Flight Duration: +item.fireworksCharge.name=Firework Star +item.fireworksCharge.black=Black +item.fireworksCharge.red=Red +item.fireworksCharge.green=Green +item.fireworksCharge.brown=Brown +item.fireworksCharge.blue=Blue +item.fireworksCharge.purple=Purple +item.fireworksCharge.cyan=Cyan +item.fireworksCharge.silver=Light Gray +item.fireworksCharge.gray=Gray +item.fireworksCharge.pink=Pink +item.fireworksCharge.lime=Lime +item.fireworksCharge.yellow=Yellow +item.fireworksCharge.lightBlue=Light Blue +item.fireworksCharge.magenta=Magenta +item.fireworksCharge.orange=Orange +item.fireworksCharge.white=White +item.fireworksCharge.customColor=Custom +item.fireworksCharge.fadeTo=Fade to +item.fireworksCharge.flicker=Twinkle +item.fireworksCharge.trail=Trail +item.fireworksCharge.type.0=Small Ball +item.fireworksCharge.type.1=Large Ball +item.fireworksCharge.type.2=Star-shaped +item.fireworksCharge.type.3=Creeper-shaped +item.fireworksCharge.type.4=Burst +item.fireworksCharge.type=Unknown Shape +item.netherbrick.name=Nether Brick +item.netherquartz.name=Nether Quartz +item.armorStand.name=Armor Stand +item.horsearmormetal.name=Iron Horse Armor +item.horsearmorgold.name=Gold Horse Armor +item.horsearmordiamond.name=Diamond Horse Armor +item.prismarineShard.name=Prismarine Shard +item.prismarineCrystals.name=Prismarine Crystals +item.chorusFruit.name=Chorus Fruit +item.chorusFruitPopped.name=Popped Chorus Fruit +item.beetroot.name=Beetroot +item.beetroot_seeds.name=Beetroot Seeds +item.beetroot_soup.name=Beetroot Soup +item.dragon_breath.name=Dragon's Breath +item.elytra.name=Elytra +item.shield.name=Shield +item.shield.black.name=Black Shield +item.shield.red.name=Red Shield +item.shield.green.name=Green Shield +item.shield.brown.name=Brown Shield +item.shield.blue.name=Blue Shield +item.shield.purple.name=Purple Shield +item.shield.cyan.name=Cyan Shield +item.shield.silver.name=Light Gray Shield +item.shield.gray.name=Gray Shield +item.shield.pink.name=Pink Shield +item.shield.lime.name=Lime Shield +item.shield.yellow.name=Yellow Shield +item.shield.lightBlue.name=Light Blue Shield +item.shield.magenta.name=Magenta Shield +item.shield.orange.name=Orange Shield +item.shield.white.name=White Shield +item.banner.black.name=Black Banner +item.banner.red.name=Red Banner +item.banner.green.name=Green Banner +item.banner.brown.name=Brown Banner +item.banner.blue.name=Blue Banner +item.banner.purple.name=Purple Banner +item.banner.cyan.name=Cyan Banner +item.banner.silver.name=Light Gray Banner +item.banner.gray.name=Gray Banner +item.banner.pink.name=Pink Banner +item.banner.lime.name=Lime Banner +item.banner.yellow.name=Yellow Banner +item.banner.lightBlue.name=Light Blue Banner +item.banner.magenta.name=Magenta Banner +item.banner.orange.name=Orange Banner +item.banner.white.name=White Banner +item.banner.square_bottom_left.black=Black Base Dexter Canton +item.banner.square_bottom_left.red=Red Base Dexter Canton +item.banner.square_bottom_left.green=Green Base Dexter Canton +item.banner.square_bottom_left.brown=Brown Base Dexter Canton +item.banner.square_bottom_left.blue=Blue Base Dexter Canton +item.banner.square_bottom_left.purple=Purple Base Dexter Canton +item.banner.square_bottom_left.cyan=Cyan Base Dexter Canton +item.banner.square_bottom_left.silver=Light Gray Base Dexter Canton +item.banner.square_bottom_left.gray=Gray Base Dexter Canton +item.banner.square_bottom_left.pink=Pink Base Dexter Canton +item.banner.square_bottom_left.lime=Lime Base Dexter Canton +item.banner.square_bottom_left.yellow=Yellow Base Dexter Canton +item.banner.square_bottom_left.lightBlue=Light Blue Base Dexter Canton +item.banner.square_bottom_left.magenta=Magenta Base Dexter Canton +item.banner.square_bottom_left.orange=Orange Base Dexter Canton +item.banner.square_bottom_left.white=White Base Dexter Canton +item.banner.square_bottom_right.black=Black Base Sinister Canton +item.banner.square_bottom_right.red=Red Base Sinister Canton +item.banner.square_bottom_right.green=Green Base Sinister Canton +item.banner.square_bottom_right.brown=Brown Base Sinister Canton +item.banner.square_bottom_right.blue=Blue Base Sinister Canton +item.banner.square_bottom_right.purple=Purple Base Sinister Canton +item.banner.square_bottom_right.cyan=Cyan Base Sinister Canton +item.banner.square_bottom_right.silver=Light Gray Base Sinister Canton +item.banner.square_bottom_right.gray=Gray Base Sinister Canton +item.banner.square_bottom_right.pink=Pink Base Sinister Canton +item.banner.square_bottom_right.lime=Lime Base Sinister Canton +item.banner.square_bottom_right.yellow=Yellow Base Sinister Canton +item.banner.square_bottom_right.lightBlue=Light Blue Base Sinister Canton +item.banner.square_bottom_right.magenta=Magenta Base Sinister Canton +item.banner.square_bottom_right.orange=Orange Base Sinister Canton +item.banner.square_bottom_right.white=White Base Sinister Canton +item.banner.square_top_left.black=Black Chief Dexter Canton +item.banner.square_top_left.red=Red Chief Dexter Canton +item.banner.square_top_left.green=Green Chief Dexter Canton +item.banner.square_top_left.brown=Brown Chief Dexter Canton +item.banner.square_top_left.blue=Blue Chief Dexter Canton +item.banner.square_top_left.purple=Purple Chief Dexter Canton +item.banner.square_top_left.cyan=Cyan Chief Dexter Canton +item.banner.square_top_left.silver=Light Gray Chief Dexter Canton +item.banner.square_top_left.gray=Gray Chief Dexter Canton +item.banner.square_top_left.pink=Pink Chief Dexter Canton +item.banner.square_top_left.lime=Lime Chief Dexter Canton +item.banner.square_top_left.yellow=Yellow Chief Dexter Canton +item.banner.square_top_left.lightBlue=Light Blue Chief Dexter Canton +item.banner.square_top_left.magenta=Magenta Chief Dexter Canton +item.banner.square_top_left.orange=Orange Chief Dexter Canton +item.banner.square_top_left.white=White Chief Dexter Canton +item.banner.square_top_right.black=Black Chief Sinister Canton +item.banner.square_top_right.red=Red Chief Sinister Canton +item.banner.square_top_right.green=Green Chief Sinister Canton +item.banner.square_top_right.brown=Brown Chief Sinister Canton +item.banner.square_top_right.blue=Blue Chief Sinister Canton +item.banner.square_top_right.purple=Purple Chief Sinister Canton +item.banner.square_top_right.cyan=Cyan Chief Sinister Canton +item.banner.square_top_right.silver=Light Gray Chief Sinister Canton +item.banner.square_top_right.gray=Gray Chief Sinister Canton +item.banner.square_top_right.pink=Pink Chief Sinister Canton +item.banner.square_top_right.lime=Lime Chief Sinister Canton +item.banner.square_top_right.yellow=Yellow Chief Sinister Canton +item.banner.square_top_right.lightBlue=Light Blue Chief Sinister Canton +item.banner.square_top_right.magenta=Magenta Chief Sinister Canton +item.banner.square_top_right.orange=Orange Chief Sinister Canton +item.banner.square_top_right.white=White Chief Sinister Canton +item.banner.stripe_bottom.black=Black Base Fess +item.banner.stripe_bottom.red=Red Base Fess +item.banner.stripe_bottom.green=Green Base Fess +item.banner.stripe_bottom.brown=Brown Base Fess +item.banner.stripe_bottom.blue=Blue Base Fess +item.banner.stripe_bottom.purple=Purple Base Fess +item.banner.stripe_bottom.cyan=Cyan Base Fess +item.banner.stripe_bottom.silver=Light Gray Base Fess +item.banner.stripe_bottom.gray=Gray Base Fess +item.banner.stripe_bottom.pink=Pink Base Fess +item.banner.stripe_bottom.lime=Lime Base Fess +item.banner.stripe_bottom.yellow=Yellow Base Fess +item.banner.stripe_bottom.lightBlue=Light Blue Base Fess +item.banner.stripe_bottom.magenta=Magenta Base Fess +item.banner.stripe_bottom.orange=Orange Base Fess +item.banner.stripe_bottom.white=White Base Fess +item.banner.stripe_top.black=Black Chief Fess +item.banner.stripe_top.red=Red Chief Fess +item.banner.stripe_top.green=Green Chief Fess +item.banner.stripe_top.brown=Brown Chief Fess +item.banner.stripe_top.blue=Blue Chief Fess +item.banner.stripe_top.purple=Purple Chief Fess +item.banner.stripe_top.cyan=Cyan Chief Fess +item.banner.stripe_top.silver=Light Gray Chief Fess +item.banner.stripe_top.gray=Gray Chief Fess +item.banner.stripe_top.pink=Pink Chief Fess +item.banner.stripe_top.lime=Lime Chief Fess +item.banner.stripe_top.yellow=Yellow Chief Fess +item.banner.stripe_top.lightBlue=Light Blue Chief Fess +item.banner.stripe_top.magenta=Magenta Chief Fess +item.banner.stripe_top.orange=Orange Chief Fess +item.banner.stripe_top.white=White Chief Fess +item.banner.stripe_left.black=Black Pale Dexter +item.banner.stripe_left.red=Red Pale Dexter +item.banner.stripe_left.green=Green Pale Dexter +item.banner.stripe_left.brown=Brown Pale Dexter +item.banner.stripe_left.blue=Blue Pale Dexter +item.banner.stripe_left.purple=Purple Pale Dexter +item.banner.stripe_left.cyan=Cyan Pale Dexter +item.banner.stripe_left.silver=Light Gray Pale Dexter +item.banner.stripe_left.gray=Gray Pale Dexter +item.banner.stripe_left.pink=Pink Pale Dexter +item.banner.stripe_left.lime=Lime Pale Dexter +item.banner.stripe_left.yellow=Yellow Pale Dexter +item.banner.stripe_left.lightBlue=Light Blue Pale Dexter +item.banner.stripe_left.magenta=Magenta Pale Dexter +item.banner.stripe_left.orange=Orange Pale Dexter +item.banner.stripe_left.white=White Pale Dexter +item.banner.stripe_right.black=Black Pale Sinister +item.banner.stripe_right.red=Red Pale Sinister +item.banner.stripe_right.green=Green Pale Sinister +item.banner.stripe_right.brown=Brown Pale Sinister +item.banner.stripe_right.blue=Blue Pale Sinister +item.banner.stripe_right.purple=Purple Pale Sinister +item.banner.stripe_right.cyan=Cyan Pale Sinister +item.banner.stripe_right.silver=Light Gray Pale Sinister +item.banner.stripe_right.gray=Gray Pale Sinister +item.banner.stripe_right.pink=Pink Pale Sinister +item.banner.stripe_right.lime=Lime Pale Sinister +item.banner.stripe_right.yellow=Yellow Pale Sinister +item.banner.stripe_right.lightBlue=Light Blue Pale Sinister +item.banner.stripe_right.magenta=Magenta Pale Sinister +item.banner.stripe_right.orange=Orange Pale Sinister +item.banner.stripe_right.white=White Pale Sinister +item.banner.stripe_center.black=Black Pale +item.banner.stripe_center.red=Red Pale +item.banner.stripe_center.green=Green Pale +item.banner.stripe_center.brown=Brown Pale +item.banner.stripe_center.blue=Blue Pale +item.banner.stripe_center.purple=Purple Pale +item.banner.stripe_center.cyan=Cyan Pale +item.banner.stripe_center.silver=Light Gray Pale +item.banner.stripe_center.gray=Gray Pale +item.banner.stripe_center.pink=Pink Pale +item.banner.stripe_center.lime=Lime Pale +item.banner.stripe_center.yellow=Yellow Pale +item.banner.stripe_center.lightBlue=Light Blue Pale +item.banner.stripe_center.magenta=Magenta Pale +item.banner.stripe_center.orange=Orange Pale +item.banner.stripe_center.white=White Pale +item.banner.stripe_middle.black=Black Fess +item.banner.stripe_middle.red=Red Fess +item.banner.stripe_middle.green=Green Fess +item.banner.stripe_middle.brown=Brown Fess +item.banner.stripe_middle.blue=Blue Fess +item.banner.stripe_middle.purple=Purple Fess +item.banner.stripe_middle.cyan=Cyan Fess +item.banner.stripe_middle.silver=Light Gray Fess +item.banner.stripe_middle.gray=Gray Fess +item.banner.stripe_middle.pink=Pink Fess +item.banner.stripe_middle.lime=Lime Fess +item.banner.stripe_middle.yellow=Yellow Fess +item.banner.stripe_middle.lightBlue=Light Blue Fess +item.banner.stripe_middle.magenta=Magenta Fess +item.banner.stripe_middle.orange=Orange Fess +item.banner.stripe_middle.white=White Fess +item.banner.stripe_downright.black=Black Bend +item.banner.stripe_downright.red=Red Bend +item.banner.stripe_downright.green=Green Bend +item.banner.stripe_downright.brown=Brown Bend +item.banner.stripe_downright.blue=Blue Bend +item.banner.stripe_downright.purple=Purple Bend +item.banner.stripe_downright.cyan=Cyan Bend +item.banner.stripe_downright.silver=Light Gray Bend +item.banner.stripe_downright.gray=Gray Bend +item.banner.stripe_downright.pink=Pink Bend +item.banner.stripe_downright.lime=Lime Bend +item.banner.stripe_downright.yellow=Yellow Bend +item.banner.stripe_downright.lightBlue=Light Blue Bend +item.banner.stripe_downright.magenta=Magenta Bend +item.banner.stripe_downright.orange=Orange Bend +item.banner.stripe_downright.white=White Bend +item.banner.stripe_downleft.black=Black Bend Sinister +item.banner.stripe_downleft.red=Red Bend Sinister +item.banner.stripe_downleft.green=Green Bend Sinister +item.banner.stripe_downleft.brown=Brown Bend Sinister +item.banner.stripe_downleft.blue=Blue Bend Sinister +item.banner.stripe_downleft.purple=Purple Bend Sinister +item.banner.stripe_downleft.cyan=Cyan Bend Sinister +item.banner.stripe_downleft.silver=Light Gray Bend Sinister +item.banner.stripe_downleft.gray=Gray Bend Sinister +item.banner.stripe_downleft.pink=Pink Bend Sinister +item.banner.stripe_downleft.lime=Lime Bend Sinister +item.banner.stripe_downleft.yellow=Yellow Bend Sinister +item.banner.stripe_downleft.lightBlue=Light Blue Bend Sinister +item.banner.stripe_downleft.magenta=Magenta Bend Sinister +item.banner.stripe_downleft.orange=Orange Bend Sinister +item.banner.stripe_downleft.white=White Bend Sinister +item.banner.small_stripes.black=Black Paly +item.banner.small_stripes.red=Red Paly +item.banner.small_stripes.green=Green Paly +item.banner.small_stripes.brown=Brown Paly +item.banner.small_stripes.blue=Blue Paly +item.banner.small_stripes.purple=Purple Paly +item.banner.small_stripes.cyan=Cyan Paly +item.banner.small_stripes.silver=Light Gray Paly +item.banner.small_stripes.gray=Gray Paly +item.banner.small_stripes.pink=Pink Paly +item.banner.small_stripes.lime=Lime Paly +item.banner.small_stripes.yellow=Yellow Paly +item.banner.small_stripes.lightBlue=Light Blue Paly +item.banner.small_stripes.magenta=Magenta Paly +item.banner.small_stripes.orange=Orange Paly +item.banner.small_stripes.white=White Paly +item.banner.cross.black=Black Saltire +item.banner.cross.red=Red Saltire +item.banner.cross.green=Green Saltire +item.banner.cross.brown=Brown Saltire +item.banner.cross.blue=Blue Saltire +item.banner.cross.purple=Purple Saltire +item.banner.cross.cyan=Cyan Saltire +item.banner.cross.silver=Light Gray Saltire +item.banner.cross.gray=Gray Saltire +item.banner.cross.pink=Pink Saltire +item.banner.cross.lime=Lime Saltire +item.banner.cross.yellow=Yellow Saltire +item.banner.cross.lightBlue=Light Blue Saltire +item.banner.cross.magenta=Magenta Saltire +item.banner.cross.orange=Orange Saltire +item.banner.cross.white=White Saltire +item.banner.triangle_bottom.black=Black Chevron +item.banner.triangle_bottom.red=Red Chevron +item.banner.triangle_bottom.green=Green Chevron +item.banner.triangle_bottom.brown=Brown Chevron +item.banner.triangle_bottom.blue=Blue Chevron +item.banner.triangle_bottom.purple=Purple Chevron +item.banner.triangle_bottom.cyan=Cyan Chevron +item.banner.triangle_bottom.silver=Light Gray Chevron +item.banner.triangle_bottom.gray=Gray Chevron +item.banner.triangle_bottom.pink=Pink Chevron +item.banner.triangle_bottom.lime=Lime Chevron +item.banner.triangle_bottom.yellow=Yellow Chevron +item.banner.triangle_bottom.lightBlue=Light Blue Chevron +item.banner.triangle_bottom.magenta=Magenta Chevron +item.banner.triangle_bottom.orange=Orange Chevron +item.banner.triangle_bottom.white=White Chevron +item.banner.triangle_top.black=Black Inverted Chevron +item.banner.triangle_top.red=Red Inverted Chevron +item.banner.triangle_top.green=Green Inverted Chevron +item.banner.triangle_top.brown=Brown Inverted Chevron +item.banner.triangle_top.blue=Blue Inverted Chevron +item.banner.triangle_top.purple=Purple Inverted Chevron +item.banner.triangle_top.cyan=Cyan Inverted Chevron +item.banner.triangle_top.silver=Light Gray Inverted Chevron +item.banner.triangle_top.gray=Gray Inverted Chevron +item.banner.triangle_top.pink=Pink Inverted Chevron +item.banner.triangle_top.lime=Lime Inverted Chevron +item.banner.triangle_top.yellow=Yellow Inverted Chevron +item.banner.triangle_top.lightBlue=Light Blue Inverted Chevron +item.banner.triangle_top.magenta=Magenta Inverted Chevron +item.banner.triangle_top.orange=Orange Inverted Chevron +item.banner.triangle_top.white=White Inverted Chevron +item.banner.triangles_bottom.black=Black Base Indented +item.banner.triangles_bottom.red=Red Base Indented +item.banner.triangles_bottom.green=Green Base Indented +item.banner.triangles_bottom.brown=Brown Base Indented +item.banner.triangles_bottom.blue=Blue Base Indented +item.banner.triangles_bottom.purple=Purple Base Indented +item.banner.triangles_bottom.cyan=Cyan Base Indented +item.banner.triangles_bottom.silver=Light Gray Base Indented +item.banner.triangles_bottom.gray=Gray Base Indented +item.banner.triangles_bottom.pink=Pink Base Indented +item.banner.triangles_bottom.lime=Lime Base Indented +item.banner.triangles_bottom.yellow=Yellow Base Indented +item.banner.triangles_bottom.lightBlue=Light Blue Base Indented +item.banner.triangles_bottom.magenta=Magenta Base Indented +item.banner.triangles_bottom.orange=Orange Base Indented +item.banner.triangles_bottom.white=White Base Indented +item.banner.triangles_top.black=Black Chief Indented +item.banner.triangles_top.red=Red Chief Indented +item.banner.triangles_top.green=Green Chief Indented +item.banner.triangles_top.brown=Brown Chief Indented +item.banner.triangles_top.blue=Blue Chief Indented +item.banner.triangles_top.purple=Purple Chief Indented +item.banner.triangles_top.cyan=Cyan Chief Indented +item.banner.triangles_top.silver=Light Gray Chief Indented +item.banner.triangles_top.gray=Gray Chief Indented +item.banner.triangles_top.pink=Pink Chief Indented +item.banner.triangles_top.lime=Lime Chief Indented +item.banner.triangles_top.yellow=Yellow Chief Indented +item.banner.triangles_top.lightBlue=Light Blue Chief Indented +item.banner.triangles_top.magenta=Magenta Chief Indented +item.banner.triangles_top.orange=Orange Chief Indented +item.banner.triangles_top.white=White Chief Indented +item.banner.diagonal_left.black=Black Per Bend Sinister +item.banner.diagonal_left.red=Red Per Bend Sinister +item.banner.diagonal_left.green=Green Per Bend Sinister +item.banner.diagonal_left.brown=Brown Per Bend Sinister +item.banner.diagonal_left.blue=Blue Per Bend Sinister +item.banner.diagonal_left.purple=Purple Per Bend Sinister +item.banner.diagonal_left.cyan=Cyan Per Bend Sinister +item.banner.diagonal_left.silver=Light Gray Per Bend Sinister +item.banner.diagonal_left.gray=Gray Per Bend Sinister +item.banner.diagonal_left.pink=Pink Per Bend Sinister +item.banner.diagonal_left.lime=Lime Per Bend Sinister +item.banner.diagonal_left.yellow=Yellow Per Bend Sinister +item.banner.diagonal_left.lightBlue=Light Blue Per Bend Sinister +item.banner.diagonal_left.magenta=Magenta Per Bend Sinister +item.banner.diagonal_left.orange=Orange Per Bend Sinister +item.banner.diagonal_left.white=White Per Bend Sinister +item.banner.diagonal_right.black=Black Per Bend +item.banner.diagonal_right.red=Red Per Bend +item.banner.diagonal_right.green=Green Per Bend +item.banner.diagonal_right.brown=Brown Per Bend +item.banner.diagonal_right.blue=Blue Per Bend +item.banner.diagonal_right.purple=Purple Per Bend +item.banner.diagonal_right.cyan=Cyan Per Bend +item.banner.diagonal_right.silver=Light Gray Per Bend +item.banner.diagonal_right.gray=Gray Per Bend +item.banner.diagonal_right.pink=Pink Per Bend +item.banner.diagonal_right.lime=Lime Per Bend +item.banner.diagonal_right.yellow=Yellow Per Bend +item.banner.diagonal_right.lightBlue=Light Blue Per Bend +item.banner.diagonal_right.magenta=Magenta Per Bend +item.banner.diagonal_right.orange=Orange Per Bend +item.banner.diagonal_right.white=White Per Bend +item.banner.diagonal_up_left.black=Black Per Bend Inverted +item.banner.diagonal_up_left.red=Red Per Bend Inverted +item.banner.diagonal_up_left.green=Green Per Bend Inverted +item.banner.diagonal_up_left.brown=Brown Per Bend Inverted +item.banner.diagonal_up_left.blue=Blue Per Bend Inverted +item.banner.diagonal_up_left.purple=Purple Per Bend Inverted +item.banner.diagonal_up_left.cyan=Cyan Per Bend Inverted +item.banner.diagonal_up_left.silver=Light Gray Per Bend Inverted +item.banner.diagonal_up_left.gray=Gray Per Bend Inverted +item.banner.diagonal_up_left.pink=Pink Per Bend Inverted +item.banner.diagonal_up_left.lime=Lime Per Bend Inverted +item.banner.diagonal_up_left.yellow=Yellow Per Bend Inverted +item.banner.diagonal_up_left.lightBlue=Light Blue Per Bend Inverted +item.banner.diagonal_up_left.magenta=Magenta Per Bend Inverted +item.banner.diagonal_up_left.orange=Orange Per Bend Inverted +item.banner.diagonal_up_left.white=White Per Bend Inverted +item.banner.diagonal_up_right.black=Black Per Bend Sinister Inverted +item.banner.diagonal_up_right.red=Red Per Bend Sinister Inverted +item.banner.diagonal_up_right.green=Green Per Bend Sinister Inverted +item.banner.diagonal_up_right.brown=Brown Per Bend Sinister Inverted +item.banner.diagonal_up_right.blue=Blue Per Bend Sinister Inverted +item.banner.diagonal_up_right.purple=Purple Per Bend Sinister Inverted +item.banner.diagonal_up_right.cyan=Cyan Per Bend Sinister Inverted +item.banner.diagonal_up_right.silver=Light Gray Per Bend Sinister Inverted +item.banner.diagonal_up_right.gray=Gray Per Bend Sinister Inverted +item.banner.diagonal_up_right.pink=Pink Per Bend Sinister Inverted +item.banner.diagonal_up_right.lime=Lime Per Bend Sinister Inverted +item.banner.diagonal_up_right.yellow=Yellow Per Bend Sinister Inverted +item.banner.diagonal_up_right.lightBlue=Light Blue Per Bend Sinister Inverted +item.banner.diagonal_up_right.magenta=Magenta Per Bend Sinister Inverted +item.banner.diagonal_up_right.orange=Orange Per Bend Sinister Inverted +item.banner.diagonal_up_right.white=White Per Bend Sinister Inverted +item.banner.circle.black=Black Roundel +item.banner.circle.red=Red Roundel +item.banner.circle.green=Green Roundel +item.banner.circle.brown=Brown Roundel +item.banner.circle.blue=Blue Roundel +item.banner.circle.purple=Purple Roundel +item.banner.circle.cyan=Cyan Roundel +item.banner.circle.silver=Light Gray Roundel +item.banner.circle.gray=Gray Roundel +item.banner.circle.pink=Pink Roundel +item.banner.circle.lime=Lime Roundel +item.banner.circle.yellow=Yellow Roundel +item.banner.circle.lightBlue=Light Blue Roundel +item.banner.circle.magenta=Magenta Roundel +item.banner.circle.orange=Orange Roundel +item.banner.circle.white=White Roundel +item.banner.rhombus.black=Black Lozenge +item.banner.rhombus.red=Red Lozenge +item.banner.rhombus.green=Green Lozenge +item.banner.rhombus.brown=Brown Lozenge +item.banner.rhombus.blue=Blue Lozenge +item.banner.rhombus.purple=Purple Lozenge +item.banner.rhombus.cyan=Cyan Lozenge +item.banner.rhombus.silver=Light Gray Lozenge +item.banner.rhombus.gray=Gray Lozenge +item.banner.rhombus.pink=Pink Lozenge +item.banner.rhombus.lime=Lime Lozenge +item.banner.rhombus.yellow=Yellow Lozenge +item.banner.rhombus.lightBlue=Light Blue Lozenge +item.banner.rhombus.magenta=Magenta Lozenge +item.banner.rhombus.orange=Orange Lozenge +item.banner.rhombus.white=White Lozenge +item.banner.half_vertical.black=Black Per Pale +item.banner.half_vertical.red=Red Per Pale +item.banner.half_vertical.green=Green Per Pale +item.banner.half_vertical.brown=Brown Per Pale +item.banner.half_vertical.blue=Blue Per Pale +item.banner.half_vertical.purple=Purple Per Pale +item.banner.half_vertical.cyan=Cyan Per Pale +item.banner.half_vertical.silver=Light Gray Per Pale +item.banner.half_vertical.gray=Gray Per Pale +item.banner.half_vertical.pink=Pink Per Pale +item.banner.half_vertical.lime=Lime Per Pale +item.banner.half_vertical.yellow=Yellow Per Pale +item.banner.half_vertical.lightBlue=Light Blue Per Pale +item.banner.half_vertical.magenta=Magenta Per Pale +item.banner.half_vertical.orange=Orange Per Pale +item.banner.half_vertical.white=White Per Pale +item.banner.half_horizontal.black=Black Per Fess +item.banner.half_horizontal.red=Red Per Fess +item.banner.half_horizontal.green=Green Per Fess +item.banner.half_horizontal.brown=Brown Per Fess +item.banner.half_horizontal.blue=Blue Per Fess +item.banner.half_horizontal.purple=Purple Per Fess +item.banner.half_horizontal.cyan=Cyan Per Fess +item.banner.half_horizontal.silver=Light Gray Per Fess +item.banner.half_horizontal.gray=Gray Per Fess +item.banner.half_horizontal.pink=Pink Per Fess +item.banner.half_horizontal.lime=Lime Per Fess +item.banner.half_horizontal.yellow=Yellow Per Fess +item.banner.half_horizontal.lightBlue=Light Blue Per Fess +item.banner.half_horizontal.magenta=Magenta Per Fess +item.banner.half_horizontal.orange=Orange Per Fess +item.banner.half_horizontal.white=White Per Fess +item.banner.half_vertical_right.black=Black Per Pale Inverted +item.banner.half_vertical_right.red=Red Per Pale Inverted +item.banner.half_vertical_right.green=Green Per Pale Inverted +item.banner.half_vertical_right.brown=Brown Per Pale Inverted +item.banner.half_vertical_right.blue=Blue Per Pale Inverted +item.banner.half_vertical_right.purple=Purple Per Pale Inverted +item.banner.half_vertical_right.cyan=Cyan Per Pale Inverted +item.banner.half_vertical_right.silver=Light Gray Per Pale Inverted +item.banner.half_vertical_right.gray=Gray Per Pale Inverted +item.banner.half_vertical_right.pink=Pink Per Pale Inverted +item.banner.half_vertical_right.lime=Lime Per Pale Inverted +item.banner.half_vertical_right.yellow=Yellow Per Pale Inverted +item.banner.half_vertical_right.lightBlue=Light Blue Per Pale Inverted +item.banner.half_vertical_right.magenta=Magenta Per Pale Inverted +item.banner.half_vertical_right.orange=Orange Per Pale Inverted +item.banner.half_vertical_right.white=White Per Pale Inverted +item.banner.half_horizontal_bottom.black=Black Per Fess Inverted +item.banner.half_horizontal_bottom.red=Red Per Fess Inverted +item.banner.half_horizontal_bottom.green=Green Per Fess Inverted +item.banner.half_horizontal_bottom.brown=Brown Per Fess Inverted +item.banner.half_horizontal_bottom.blue=Blue Per Fess Inverted +item.banner.half_horizontal_bottom.purple=Purple Per Fess Inverted +item.banner.half_horizontal_bottom.cyan=Cyan Per Fess Inverted +item.banner.half_horizontal_bottom.silver=Light Gray Per Fess Inverted +item.banner.half_horizontal_bottom.gray=Gray Per Fess Inverted +item.banner.half_horizontal_bottom.pink=Pink Per Fess Inverted +item.banner.half_horizontal_bottom.lime=Lime Per Fess Inverted +item.banner.half_horizontal_bottom.yellow=Yellow Per Fess Inverted +item.banner.half_horizontal_bottom.lightBlue=Light Blue Per Fess Inverted +item.banner.half_horizontal_bottom.magenta=Magenta Per Fess Inverted +item.banner.half_horizontal_bottom.orange=Orange Per Fess Inverted +item.banner.half_horizontal_bottom.white=White Per Fess Inverted +item.banner.creeper.black=Black Creeper Charge +item.banner.creeper.red=Red Creeper Charge +item.banner.creeper.green=Green Creeper Charge +item.banner.creeper.brown=Brown Creeper Charge +item.banner.creeper.blue=Blue Creeper Charge +item.banner.creeper.purple=Purple Creeper Charge +item.banner.creeper.cyan=Cyan Creeper Charge +item.banner.creeper.silver=Light Gray Creeper Charge +item.banner.creeper.gray=Gray Creeper Charge +item.banner.creeper.pink=Pink Creeper Charge +item.banner.creeper.lime=Lime Creeper Charge +item.banner.creeper.yellow=Yellow Creeper Charge +item.banner.creeper.lightBlue=Light Blue Creeper Charge +item.banner.creeper.magenta=Magenta Creeper Charge +item.banner.creeper.orange=Orange Creeper Charge +item.banner.creeper.white=White Creeper Charge +item.banner.bricks.black=Black Field Masoned +item.banner.bricks.red=Red Field Masoned +item.banner.bricks.green=Green Field Masoned +item.banner.bricks.brown=Brown Field Masoned +item.banner.bricks.blue=Blue Field Masoned +item.banner.bricks.purple=Purple Field Masoned +item.banner.bricks.cyan=Cyan Field Masoned +item.banner.bricks.silver=Light Gray Field Masoned +item.banner.bricks.gray=Gray Field Masoned +item.banner.bricks.pink=Pink Field Masoned +item.banner.bricks.lime=Lime Field Masoned +item.banner.bricks.yellow=Yellow Field Masoned +item.banner.bricks.lightBlue=Light Blue Field Masoned +item.banner.bricks.magenta=Magenta Field Masoned +item.banner.bricks.orange=Orange Field Masoned +item.banner.bricks.white=White Field Masoned +item.banner.gradient.black=Black Gradient +item.banner.gradient.red=Red Gradient +item.banner.gradient.green=Green Gradient +item.banner.gradient.brown=Brown Gradient +item.banner.gradient.blue=Blue Gradient +item.banner.gradient.purple=Purple Gradient +item.banner.gradient.cyan=Cyan Gradient +item.banner.gradient.silver=Light Gray Gradient +item.banner.gradient.gray=Gray Gradient +item.banner.gradient.pink=Pink Gradient +item.banner.gradient.lime=Lime Gradient +item.banner.gradient.yellow=Yellow Gradient +item.banner.gradient.lightBlue=Light Blue Gradient +item.banner.gradient.magenta=Magenta Gradient +item.banner.gradient.orange=Orange Gradient +item.banner.gradient.white=White Gradient +item.banner.gradient_up.black=Black Base Gradient +item.banner.gradient_up.red=Red Base Gradient +item.banner.gradient_up.green=Green Base Gradient +item.banner.gradient_up.brown=Brown Base Gradient +item.banner.gradient_up.blue=Blue Base Gradient +item.banner.gradient_up.purple=Purple Base Gradient +item.banner.gradient_up.cyan=Cyan Base Gradient +item.banner.gradient_up.silver=Light Gray Base Gradient +item.banner.gradient_up.gray=Gray Base Gradient +item.banner.gradient_up.pink=Pink Base Gradient +item.banner.gradient_up.lime=Lime Base Gradient +item.banner.gradient_up.yellow=Yellow Base Gradient +item.banner.gradient_up.lightBlue=Light Blue Base Gradient +item.banner.gradient_up.magenta=Magenta Base Gradient +item.banner.gradient_up.orange=Orange Base Gradient +item.banner.gradient_up.white=White Base Gradient +item.banner.skull.black=Black Skull Charge +item.banner.skull.red=Red Skull Charge +item.banner.skull.green=Green Skull Charge +item.banner.skull.brown=Brown Skull Charge +item.banner.skull.blue=Blue Skull Charge +item.banner.skull.purple=Purple Skull Charge +item.banner.skull.cyan=Cyan Skull Charge +item.banner.skull.silver=Light Gray Skull Charge +item.banner.skull.gray=Gray Skull Charge +item.banner.skull.pink=Pink Skull Charge +item.banner.skull.lime=Lime Skull Charge +item.banner.skull.yellow=Yellow Skull Charge +item.banner.skull.lightBlue=Light Blue Skull Charge +item.banner.skull.magenta=Magenta Skull Charge +item.banner.skull.orange=Orange Skull Charge +item.banner.skull.white=White Skull Charge +item.banner.flower.black=Black Flower Charge +item.banner.flower.red=Red Flower Charge +item.banner.flower.green=Green Flower Charge +item.banner.flower.brown=Brown Flower Charge +item.banner.flower.blue=Blue Flower Charge +item.banner.flower.purple=Purple Flower Charge +item.banner.flower.cyan=Cyan Flower Charge +item.banner.flower.silver=Light Gray Flower Charge +item.banner.flower.gray=Gray Flower Charge +item.banner.flower.pink=Pink Flower Charge +item.banner.flower.lime=Lime Flower Charge +item.banner.flower.yellow=Yellow Flower Charge +item.banner.flower.lightBlue=Light Blue Flower Charge +item.banner.flower.magenta=Magenta Flower Charge +item.banner.flower.orange=Orange Flower Charge +item.banner.flower.white=White Flower Charge +item.banner.border.black=Black Bordure +item.banner.border.red=Red Bordure +item.banner.border.green=Green Bordure +item.banner.border.brown=Brown Bordure +item.banner.border.blue=Blue Bordure +item.banner.border.purple=Purple Bordure +item.banner.border.cyan=Cyan Bordure +item.banner.border.silver=Light Gray Bordure +item.banner.border.gray=Gray Bordure +item.banner.border.pink=Pink Bordure +item.banner.border.lime=Lime Bordure +item.banner.border.yellow=Yellow Bordure +item.banner.border.lightBlue=Light Blue Bordure +item.banner.border.magenta=Magenta Bordure +item.banner.border.orange=Orange Bordure +item.banner.border.white=White Bordure +item.banner.curly_border.black=Black Bordure Indented +item.banner.curly_border.red=Red Bordure Indented +item.banner.curly_border.green=Green Bordure Indented +item.banner.curly_border.brown=Brown Bordure Indented +item.banner.curly_border.blue=Blue Bordure Indented +item.banner.curly_border.purple=Purple Bordure Indented +item.banner.curly_border.cyan=Cyan Bordure Indented +item.banner.curly_border.silver=Light Gray Bordure Indented +item.banner.curly_border.gray=Gray Bordure Indented +item.banner.curly_border.pink=Pink Bordure Indented +item.banner.curly_border.lime=Lime Bordure Indented +item.banner.curly_border.yellow=Yellow Bordure Indented +item.banner.curly_border.lightBlue=Light Blue Bordure Indented +item.banner.curly_border.magenta=Magenta Bordure Indented +item.banner.curly_border.orange=Orange Bordure Indented +item.banner.curly_border.white=White Bordure Indented +item.banner.mojang.black=Black Thing +item.banner.mojang.red=Red Thing +item.banner.mojang.green=Green Thing +item.banner.mojang.brown=Brown Thing +item.banner.mojang.blue=Blue Thing +item.banner.mojang.purple=Purple Thing +item.banner.mojang.cyan=Cyan Thing +item.banner.mojang.silver=Light Gray Thing +item.banner.mojang.gray=Gray Thing +item.banner.mojang.pink=Pink Thing +item.banner.mojang.lime=Lime Thing +item.banner.mojang.yellow=Yellow Thing +item.banner.mojang.lightBlue=Light Blue Thing +item.banner.mojang.magenta=Magenta Thing +item.banner.mojang.orange=Orange Thing +item.banner.mojang.white=White Thing +item.banner.straight_cross.black=Black Cross +item.banner.straight_cross.red=Red Cross +item.banner.straight_cross.green=Green Cross +item.banner.straight_cross.brown=Brown Cross +item.banner.straight_cross.blue=Blue Cross +item.banner.straight_cross.purple=Purple Cross +item.banner.straight_cross.cyan=Cyan Cross +item.banner.straight_cross.silver=Light Gray Cross +item.banner.straight_cross.gray=Gray Cross +item.banner.straight_cross.pink=Pink Cross +item.banner.straight_cross.lime=Lime Cross +item.banner.straight_cross.yellow=Yellow Cross +item.banner.straight_cross.lightBlue=Light Blue Cross +item.banner.straight_cross.magenta=Magenta Cross +item.banner.straight_cross.orange=Orange Cross +item.banner.straight_cross.white=White Cross + +# Block names that will be displayed in the hologram +tile.barrier.name=Barrier +tile.stone.stone.name=Stone +tile.stone.granite.name=Granite +tile.stone.graniteSmooth.name=Polished Granite +tile.stone.diorite.name=Diorite +tile.stone.dioriteSmooth.name=Polished Diorite +tile.stone.andesite.name=Andesite +tile.stone.andesiteSmooth.name=Polished Andesite +tile.hayBlock.name=Hay Bale +tile.grass.name=Grass Block +tile.dirt.name=Dirt +tile.dirt.default.name=Dirt +tile.dirt.coarse.name=Coarse Dirt +tile.dirt.podzol.name=Podzol +tile.stonebrick.name=Cobblestone +tile.wood.name=Wooden Planks +tile.wood.oak.name=Oak Wood Planks +tile.wood.spruce.name=Spruce Wood Planks +tile.wood.birch.name=Birch Wood Planks +tile.wood.jungle.name=Jungle Wood Planks +tile.wood.acacia.name=Acacia Wood Planks +tile.wood.big_oak.name=Dark Oak Wood Planks +tile.sapling.oak.name=Oak Sapling +tile.sapling.spruce.name=Spruce Sapling +tile.sapling.birch.name=Birch Sapling +tile.sapling.jungle.name=Jungle Sapling +tile.sapling.acacia.name=Acacia Sapling +tile.sapling.big_oak.name=Dark Oak Sapling +tile.deadbush.name=Dead Bush +tile.bedrock.name=Bedrock +tile.water.name=Water +tile.lava.name=Lava +tile.sand.name=Sand +tile.sand.default.name=Sand +tile.sand.red.name=Red Sand +tile.sandStone.name=Sandstone +tile.sandStone.default.name=Sandstone +tile.sandStone.chiseled.name=Chiseled Sandstone +tile.sandStone.smooth.name=Smooth Sandstone +tile.redSandStone.name=Red Sandstone +tile.redSandStone.default.name=Red Sandstone +tile.redSandStone.chiseled.name=Chiseled Red Sandstone +tile.redSandStone.smooth.name=Smooth Red Sandstone +tile.gravel.name=Gravel +tile.oreGold.name=Gold Ore +tile.oreIron.name=Iron Ore +tile.oreCoal.name=Coal Ore +tile.log.name=Wood +tile.log.oak.name=Oak Wood +tile.log.spruce.name=Spruce Wood +tile.log.birch.name=Birch Wood +tile.log.jungle.name=Jungle Wood +tile.log.acacia.name=Acacia Wood +tile.log.big_oak.name=Dark Oak Wood +tile.leaves.name=Leaves +tile.leaves.oak.name=Oak Leaves +tile.leaves.spruce.name=Spruce Leaves +tile.leaves.birch.name=Birch Leaves +tile.leaves.jungle.name=Jungle Leaves +tile.leaves.acacia.name=Acacia Leaves +tile.leaves.big_oak.name=Dark Oak Leaves +tile.tallgrass.name=Grass +tile.tallgrass.shrub.name=Shrub +tile.tallgrass.grass.name=Grass +tile.tallgrass.fern.name=Fern +tile.sponge.dry.name=Sponge +tile.sponge.wet.name=Wet Sponge +tile.glass.name=Glass +tile.stainedGlass.name=Stained Glass +tile.stainedGlass.black.name=Black Stained Glass +tile.stainedGlass.red.name=Red Stained Glass +tile.stainedGlass.green.name=Green Stained Glass +tile.stainedGlass.brown.name=Brown Stained Glass +tile.stainedGlass.blue.name=Blue Stained Glass +tile.stainedGlass.purple.name=Purple Stained Glass +tile.stainedGlass.cyan.name=Cyan Stained Glass +tile.stainedGlass.silver.name=Light Gray Stained Glass +tile.stainedGlass.gray.name=Gray Stained Glass +tile.stainedGlass.pink.name=Pink Stained Glass +tile.stainedGlass.lime.name=Lime Stained Glass +tile.stainedGlass.yellow.name=Yellow Stained Glass +tile.stainedGlass.lightBlue.name=Light Blue Stained Glass +tile.stainedGlass.magenta.name=Magenta Stained Glass +tile.stainedGlass.orange.name=Orange Stained Glass +tile.stainedGlass.white.name=White Stained Glass +tile.thinStainedGlass.name=Stained Glass Pane +tile.thinStainedGlass.black.name=Black Stained Glass Pane +tile.thinStainedGlass.red.name=Red Stained Glass Pane +tile.thinStainedGlass.green.name=Green Stained Glass Pane +tile.thinStainedGlass.brown.name=Brown Stained Glass Pane +tile.thinStainedGlass.blue.name=Blue Stained Glass Pane +tile.thinStainedGlass.purple.name=Purple Stained Glass Pane +tile.thinStainedGlass.cyan.name=Cyan Stained Glass Pane +tile.thinStainedGlass.silver.name=Light Gray Stained Glass Pane +tile.thinStainedGlass.gray.name=Gray Stained Glass Pane +tile.thinStainedGlass.pink.name=Pink Stained Glass Pane +tile.thinStainedGlass.lime.name=Lime Stained Glass Pane +tile.thinStainedGlass.yellow.name=Yellow Stained Glass Pane +tile.thinStainedGlass.lightBlue.name=Light Blue Stained Glass Pane +tile.thinStainedGlass.magenta.name=Magenta Stained Glass Pane +tile.thinStainedGlass.orange.name=Orange Stained Glass Pane +tile.thinStainedGlass.white.name=White Stained Glass Pane +tile.thinGlass.name=Glass Pane +tile.cloth.name=Wool +tile.flower1.name=Flower +tile.flower1.dandelion.name=Dandelion +tile.flower2.name=Flower +tile.flower2.poppy.name=Poppy +tile.flower2.blueOrchid.name=Blue Orchid +tile.flower2.allium.name=Allium +tile.flower2.houstonia.name=Azure Bluet +tile.flower2.tulipRed.name=Red Tulip +tile.flower2.tulipOrange.name=Orange Tulip +tile.flower2.tulipWhite.name=White Tulip +tile.flower2.tulipPink.name=Pink Tulip +tile.flower2.oxeyeDaisy.name=Oxeye Daisy +tile.doublePlant.name=Plant +tile.doublePlant.sunflower.name=Sunflower +tile.doublePlant.syringa.name=Lilac +tile.doublePlant.grass.name=Double Tallgrass +tile.doublePlant.fern.name=Large Fern +tile.doublePlant.rose.name=Rose Bush +tile.doublePlant.paeonia.name=Peony +tile.mushroom.name=Mushroom +tile.blockGold.name=Block of Gold +tile.blockIron.name=Block of Iron +tile.stoneSlab.name=Stone Slab +tile.stoneSlab.stone.name=Stone Slab +tile.stoneSlab.sand.name=Sandstone Slab +tile.stoneSlab.wood.name=Wooden Slab +tile.stoneSlab.cobble.name=Cobblestone Slab +tile.stoneSlab.brick.name=Bricks Slab +tile.stoneSlab.smoothStoneBrick.name=Stone Bricks Slab +tile.stoneSlab.netherBrick.name=Nether Brick Slab +tile.stoneSlab.quartz.name=Quartz Slab +tile.stoneSlab2.red_sandstone.name=Red Sandstone Slab +tile.woodSlab.name=Wood Slab +tile.woodSlab.oak.name=Oak Wood Slab +tile.woodSlab.spruce.name=Spruce Wood Slab +tile.woodSlab.birch.name=Birch Wood Slab +tile.woodSlab.jungle.name=Jungle Wood Slab +tile.woodSlab.acacia.name=Acacia Wood Slab +tile.woodSlab.big_oak.name=Dark Oak Wood Slab +tile.brick.name=Bricks +tile.tnt.name=TNT +tile.bookshelf.name=Bookshelf +tile.stoneMoss.name=Moss Stone +tile.obsidian.name=Obsidian +tile.torch.name=Torch +tile.fire.name=Fire +tile.mobSpawner.name=Monster Spawner +tile.stairsWood.name=Oak Wood Stairs +tile.stairsWoodSpruce.name=Spruce Wood Stairs +tile.stairsWoodBirch.name=Birch Wood Stairs +tile.stairsWoodJungle.name=Jungle Wood Stairs +tile.stairsWoodAcacia.name=Acacia Wood Stairs +tile.stairsWoodDarkOak.name=Dark Oak Wood Stairs +tile.chest.name=Chest +tile.chestTrap.name=Trapped Chest +tile.redstoneDust.name=Redstone Dust +tile.oreDiamond.name=Diamond Ore +tile.blockCoal.name=Block of Coal +tile.blockDiamond.name=Block of Diamond +tile.workbench.name=Crafting Table +tile.crops.name=Crops +tile.farmland.name=Farmland +tile.furnace.name=Furnace +tile.sign.name=Sign +tile.doorWood.name=Wooden Door +tile.ladder.name=Ladder +tile.rail.name=Rail +tile.goldenRail.name=Powered Rail +tile.activatorRail.name=Activator Rail +tile.detectorRail.name=Detector Rail +tile.stairsStone.name=Cobblestone Stairs +tile.stairsSandStone.name=Sandstone Stairs +tile.stairsRedSandStone.name=Red Sandstone Stairs +tile.lever.name=Lever +tile.pressurePlateStone.name=Stone Pressure Plate +tile.pressurePlateWood.name=Wooden Pressure Plate +tile.weightedPlate_light.name=Weighted Pressure Plate (Light) +tile.weightedPlate_heavy.name=Weighted Pressure Plate (Heavy) +tile.doorIron.name=Iron Door +tile.oreRedstone.name=Redstone Ore +tile.notGate.name=Redstone Torch +tile.button.name=Button +tile.snow.name=Snow +tile.woolCarpet.name=Carpet +tile.woolCarpet.black.name=Black Carpet +tile.woolCarpet.red.name=Red Carpet +tile.woolCarpet.green.name=Green Carpet +tile.woolCarpet.brown.name=Brown Carpet +tile.woolCarpet.blue.name=Blue Carpet +tile.woolCarpet.purple.name=Purple Carpet +tile.woolCarpet.cyan.name=Cyan Carpet +tile.woolCarpet.silver.name=Light Gray Carpet +tile.woolCarpet.gray.name=Gray Carpet +tile.woolCarpet.pink.name=Pink Carpet +tile.woolCarpet.lime.name=Lime Carpet +tile.woolCarpet.yellow.name=Yellow Carpet +tile.woolCarpet.lightBlue.name=Light Blue Carpet +tile.woolCarpet.magenta.name=Magenta Carpet +tile.woolCarpet.orange.name=Orange Carpet +tile.woolCarpet.white.name=Carpet +tile.ice.name=Ice +tile.frostedIce.name=Frosted Ice +tile.icePacked.name=Packed Ice +tile.cactus.name=Cactus +tile.clay.name=Clay +tile.clayHardenedStained.name=Stained Hardened Clay +tile.clayHardenedStained.black.name=Black Hardened Clay +tile.clayHardenedStained.red.name=Red Hardened Clay +tile.clayHardenedStained.green.name=Green Hardened Clay +tile.clayHardenedStained.brown.name=Brown Hardened Clay +tile.clayHardenedStained.blue.name=Blue Hardened Clay +tile.clayHardenedStained.purple.name=Purple Hardened Clay +tile.clayHardenedStained.cyan.name=Cyan Hardened Clay +tile.clayHardenedStained.silver.name=Light Gray Hardened Clay +tile.clayHardenedStained.gray.name=Gray Hardened Clay +tile.clayHardenedStained.pink.name=Pink Hardened Clay +tile.clayHardenedStained.lime.name=Lime Hardened Clay +tile.clayHardenedStained.yellow.name=Yellow Hardened Clay +tile.clayHardenedStained.lightBlue.name=Light Blue Hardened Clay +tile.clayHardenedStained.magenta.name=Magenta Hardened Clay +tile.clayHardenedStained.orange.name=Orange Hardened Clay +tile.clayHardenedStained.white.name=White Hardened Clay +tile.clayHardened.name=Hardened Clay +tile.reeds.name=Sugar cane +tile.jukebox.name=Jukebox +tile.fence.name=Oak Fence +tile.spruceFence.name=Spruce Fence +tile.birchFence.name=Birch Fence +tile.jungleFence.name=Jungle Fence +tile.darkOakFence.name=Dark Oak Fence +tile.acaciaFence.name=Acacia Fence +tile.fenceGate.name=Oak Fence Gate +tile.spruceFenceGate.name=Spruce Fence Gate +tile.birchFenceGate.name=Birch Fence Gate +tile.jungleFenceGate.name=Jungle Fence Gate +tile.darkOakFenceGate.name=Dark Oak Fence Gate +tile.acaciaFenceGate.name=Acacia Fence Gate +tile.pumpkinStem.name=Pumpkin Stem +tile.pumpkin.name=Pumpkin +tile.litpumpkin.name=Jack o'Lantern +tile.hellrock.name=Netherrack +tile.hellsand.name=Soul Sand +tile.lightgem.name=Glowstone +tile.portal.name=Portal +tile.cloth.black.name=Black Wool +tile.cloth.red.name=Red Wool +tile.cloth.green.name=Green Wool +tile.cloth.brown.name=Brown Wool +tile.cloth.blue.name=Blue Wool +tile.cloth.purple.name=Purple Wool +tile.cloth.cyan.name=Cyan Wool +tile.cloth.silver.name=Light Gray Wool +tile.cloth.gray.name=Gray Wool +tile.cloth.pink.name=Pink Wool +tile.cloth.lime.name=Lime Wool +tile.cloth.yellow.name=Yellow Wool +tile.cloth.lightBlue.name=Light Blue Wool +tile.cloth.magenta.name=Magenta Wool +tile.cloth.orange.name=Orange Wool +tile.cloth.white.name=Wool +tile.oreLapis.name=Lapis Lazuli Ore +tile.blockLapis.name=Lapis Lazuli Block +tile.dispenser.name=Dispenser +tile.dropper.name=Dropper +tile.musicBlock.name=Note Block +tile.cake.name=Cake +tile.bed.name=Bed +tile.lockedchest.name=Locked chest +tile.trapdoor.name=Wooden Trapdoor +tile.ironTrapdoor.name=Iron Trapdoor +tile.web.name=Cobweb +tile.stonebricksmooth.name=Stone Bricks +tile.stonebricksmooth.default.name=Stone Bricks +tile.stonebricksmooth.mossy.name=Mossy Stone Bricks +tile.stonebricksmooth.cracked.name=Cracked Stone Bricks +tile.stonebricksmooth.chiseled.name=Chiseled Stone Bricks +tile.monsterStoneEgg.name=Stone Monster Egg +tile.monsterStoneEgg.stone.name=Stone Monster Egg +tile.monsterStoneEgg.cobble.name=Cobblestone Monster Egg +tile.monsterStoneEgg.brick.name=Stone Brick Monster Egg +tile.monsterStoneEgg.mossybrick.name=Mossy Stone Brick Monster Egg +tile.monsterStoneEgg.crackedbrick.name=Cracked Stone Brick Monster Egg +tile.monsterStoneEgg.chiseledbrick.name=Chiseled Stone Brick Monster Egg +tile.pistonBase.name=Piston +tile.pistonStickyBase.name=Sticky Piston +tile.fenceIron.name=Iron Bars +tile.melon.name=Melon +tile.stairsBrick.name=Brick Stairs +tile.stairsStoneBrickSmooth.name=Stone Brick Stairs +tile.vine.name=Vines +tile.netherBrick.name=Nether Brick +tile.netherFence.name=Nether Brick Fence +tile.stairsNetherBrick.name=Nether Brick Stairs +tile.netherStalk.name=Nether Wart +tile.cauldron.name=Cauldron +tile.enchantmentTable.name=Enchantment Table +tile.anvil.name=Anvil +tile.anvil.intact.name=Anvil +tile.anvil.slightlyDamaged.name=Slightly Damaged Anvil +tile.anvil.veryDamaged.name=Very Damaged Anvil +tile.whiteStone.name=End Stone +tile.endPortalFrame.name=End Portal +tile.mycel.name=Mycelium +tile.waterlily.name=Lily Pad +tile.dragonEgg.name=Dragon Egg +tile.redstoneLight.name=Redstone Lamp +tile.cocoa.name=Cocoa +tile.enderChest.name=Ender Chest +tile.oreEmerald.name=Emerald Ore +tile.blockEmerald.name=Block of Emerald +tile.blockRedstone.name=Block of Redstone +tile.tripWire.name=Tripwire +tile.tripWireSource.name=Tripwire Hook +tile.commandBlock.name=Command Block +tile.repeatingCommandBlock.name=Repeating Command Block +tile.chainCommandBlock.name=Chain Command Block +tile.beacon.name=Beacon +tile.cobbleWall.normal.name=Cobblestone Wall +tile.cobbleWall.mossy.name=Mossy Cobblestone Wall +tile.carrots.name=Carrots +tile.potatoes.name=Potatoes +tile.daylightDetector.name=Daylight Sensor +tile.netherquartz.name=Nether Quartz Ore +tile.hopper.name=Hopper +tile.quartzBlock.name=Block of Quartz +tile.quartzBlock.default.name=Block of Quartz +tile.quartzBlock.chiseled.name=Chiseled Quartz Block +tile.quartzBlock.lines.name=Pillar Quartz Block +tile.stairsQuartz.name=Quartz Stairs +tile.slime.name=Slime Block +tile.prismarine.rough.name=Prismarine +tile.prismarine.bricks.name=Prismarine Bricks +tile.prismarine.dark.name=Dark Prismarine +tile.seaLantern.name=Sea Lantern +tile.endRod.name=End Rod +tile.chorusPlant.name=Chorus Plant +tile.chorusFlower.name=Chorus Flower +tile.purpurBlock.name=Purpur Block +tile.purpurPillar.name=Purpur Pillar +tile.stairsPurpur.name=Purpur Stairs +tile.purpurSlab.name=Purpur Slab +tile.endBricks.name=End Stone Bricks +tile.beetroots.name=Beetroots +tile.grassPath.name=Grass Path +tile.magma.name=Magma Block +tile.netherWartBlock.name=Nether Wart Block +tile.redNetherBrick.name=Red Nether Brick +tile.boneBlock.name=Bone Block +tile.structureVoid.name=Structure Void +tile.structureBlock.name=Structure Block \ No newline at end of file diff --git a/libs/org/jsoup/Connection$Base.class b/libs/org/jsoup/Connection$Base.class deleted file mode 100644 index 17e9dcd..0000000 Binary files a/libs/org/jsoup/Connection$Base.class and /dev/null differ diff --git a/libs/org/jsoup/Connection$KeyVal.class b/libs/org/jsoup/Connection$KeyVal.class deleted file mode 100644 index fb9a423..0000000 Binary files a/libs/org/jsoup/Connection$KeyVal.class and /dev/null differ diff --git a/libs/org/jsoup/Connection$Method.class b/libs/org/jsoup/Connection$Method.class deleted file mode 100644 index 35cdf89..0000000 Binary files a/libs/org/jsoup/Connection$Method.class and /dev/null differ diff --git a/libs/org/jsoup/Connection$Request.class b/libs/org/jsoup/Connection$Request.class deleted file mode 100644 index 78077bc..0000000 Binary files a/libs/org/jsoup/Connection$Request.class and /dev/null differ diff --git a/libs/org/jsoup/Connection$Response.class b/libs/org/jsoup/Connection$Response.class deleted file mode 100644 index 0f8f043..0000000 Binary files a/libs/org/jsoup/Connection$Response.class and /dev/null differ diff --git a/libs/org/jsoup/Connection.class b/libs/org/jsoup/Connection.class deleted file mode 100644 index 8a01b03..0000000 Binary files a/libs/org/jsoup/Connection.class and /dev/null differ diff --git a/libs/org/jsoup/HttpStatusException.class b/libs/org/jsoup/HttpStatusException.class deleted file mode 100644 index 042638f..0000000 Binary files a/libs/org/jsoup/HttpStatusException.class and /dev/null differ diff --git a/libs/org/jsoup/Jsoup.class b/libs/org/jsoup/Jsoup.class deleted file mode 100644 index d5a69dd..0000000 Binary files a/libs/org/jsoup/Jsoup.class and /dev/null differ diff --git a/libs/org/jsoup/UnsupportedMimeTypeException.class b/libs/org/jsoup/UnsupportedMimeTypeException.class deleted file mode 100644 index 8190608..0000000 Binary files a/libs/org/jsoup/UnsupportedMimeTypeException.class and /dev/null differ diff --git a/libs/org/jsoup/examples/HtmlToPlainText$1.class b/libs/org/jsoup/examples/HtmlToPlainText$1.class deleted file mode 100644 index 367a3c1..0000000 Binary files a/libs/org/jsoup/examples/HtmlToPlainText$1.class and /dev/null differ diff --git a/libs/org/jsoup/examples/HtmlToPlainText$FormattingVisitor.class b/libs/org/jsoup/examples/HtmlToPlainText$FormattingVisitor.class deleted file mode 100644 index a728d9b..0000000 Binary files a/libs/org/jsoup/examples/HtmlToPlainText$FormattingVisitor.class and /dev/null differ diff --git a/libs/org/jsoup/examples/HtmlToPlainText.class b/libs/org/jsoup/examples/HtmlToPlainText.class deleted file mode 100644 index c364a0a..0000000 Binary files a/libs/org/jsoup/examples/HtmlToPlainText.class and /dev/null differ diff --git a/libs/org/jsoup/examples/ListLinks.class b/libs/org/jsoup/examples/ListLinks.class deleted file mode 100644 index ca952e5..0000000 Binary files a/libs/org/jsoup/examples/ListLinks.class and /dev/null differ diff --git a/libs/org/jsoup/helper/DataUtil.class b/libs/org/jsoup/helper/DataUtil.class deleted file mode 100644 index 6abaeab..0000000 Binary files a/libs/org/jsoup/helper/DataUtil.class and /dev/null differ diff --git a/libs/org/jsoup/helper/DescendableLinkedList$1.class b/libs/org/jsoup/helper/DescendableLinkedList$1.class deleted file mode 100644 index a7adb99..0000000 Binary files a/libs/org/jsoup/helper/DescendableLinkedList$1.class and /dev/null differ diff --git a/libs/org/jsoup/helper/DescendableLinkedList$DescendingIterator.class b/libs/org/jsoup/helper/DescendableLinkedList$DescendingIterator.class deleted file mode 100644 index e5b0838..0000000 Binary files a/libs/org/jsoup/helper/DescendableLinkedList$DescendingIterator.class and /dev/null differ diff --git a/libs/org/jsoup/helper/DescendableLinkedList.class b/libs/org/jsoup/helper/DescendableLinkedList.class deleted file mode 100644 index d510a54..0000000 Binary files a/libs/org/jsoup/helper/DescendableLinkedList.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$1.class b/libs/org/jsoup/helper/HttpConnection$1.class deleted file mode 100644 index cd91b23..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$1.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$Base.class b/libs/org/jsoup/helper/HttpConnection$Base.class deleted file mode 100644 index 3b08bb8..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$Base.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$KeyVal.class b/libs/org/jsoup/helper/HttpConnection$KeyVal.class deleted file mode 100644 index 5ef776b..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$KeyVal.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$Request.class b/libs/org/jsoup/helper/HttpConnection$Request.class deleted file mode 100644 index fa2c2c8..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$Request.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$Response$1.class b/libs/org/jsoup/helper/HttpConnection$Response$1.class deleted file mode 100644 index fe7fe3d..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$Response$1.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$Response$2.class b/libs/org/jsoup/helper/HttpConnection$Response$2.class deleted file mode 100644 index eddc45c..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$Response$2.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection$Response.class b/libs/org/jsoup/helper/HttpConnection$Response.class deleted file mode 100644 index ed5c2d9..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection$Response.class and /dev/null differ diff --git a/libs/org/jsoup/helper/HttpConnection.class b/libs/org/jsoup/helper/HttpConnection.class deleted file mode 100644 index 2620217..0000000 Binary files a/libs/org/jsoup/helper/HttpConnection.class and /dev/null differ diff --git a/libs/org/jsoup/helper/StringUtil.class b/libs/org/jsoup/helper/StringUtil.class deleted file mode 100644 index 438ca97..0000000 Binary files a/libs/org/jsoup/helper/StringUtil.class and /dev/null differ diff --git a/libs/org/jsoup/helper/Validate.class b/libs/org/jsoup/helper/Validate.class deleted file mode 100644 index 8940022..0000000 Binary files a/libs/org/jsoup/helper/Validate.class and /dev/null differ diff --git a/libs/org/jsoup/helper/W3CDom$W3CBuilder.class b/libs/org/jsoup/helper/W3CDom$W3CBuilder.class deleted file mode 100644 index e1461da..0000000 Binary files a/libs/org/jsoup/helper/W3CDom$W3CBuilder.class and /dev/null differ diff --git a/libs/org/jsoup/helper/W3CDom.class b/libs/org/jsoup/helper/W3CDom.class deleted file mode 100644 index bee1a06..0000000 Binary files a/libs/org/jsoup/helper/W3CDom.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Attribute.class b/libs/org/jsoup/nodes/Attribute.class deleted file mode 100644 index 8ff6f1c..0000000 Binary files a/libs/org/jsoup/nodes/Attribute.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Attributes$1.class b/libs/org/jsoup/nodes/Attributes$1.class deleted file mode 100644 index 955c55b..0000000 Binary files a/libs/org/jsoup/nodes/Attributes$1.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Attributes$Dataset$DatasetIterator.class b/libs/org/jsoup/nodes/Attributes$Dataset$DatasetIterator.class deleted file mode 100644 index 3530175..0000000 Binary files a/libs/org/jsoup/nodes/Attributes$Dataset$DatasetIterator.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Attributes$Dataset$EntrySet.class b/libs/org/jsoup/nodes/Attributes$Dataset$EntrySet.class deleted file mode 100644 index 289e399..0000000 Binary files a/libs/org/jsoup/nodes/Attributes$Dataset$EntrySet.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Attributes$Dataset.class b/libs/org/jsoup/nodes/Attributes$Dataset.class deleted file mode 100644 index b90ae99..0000000 Binary files a/libs/org/jsoup/nodes/Attributes$Dataset.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Attributes.class b/libs/org/jsoup/nodes/Attributes.class deleted file mode 100644 index 1017ba1..0000000 Binary files a/libs/org/jsoup/nodes/Attributes.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/BooleanAttribute.class b/libs/org/jsoup/nodes/BooleanAttribute.class deleted file mode 100644 index 709def9..0000000 Binary files a/libs/org/jsoup/nodes/BooleanAttribute.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Comment.class b/libs/org/jsoup/nodes/Comment.class deleted file mode 100644 index 53881cd..0000000 Binary files a/libs/org/jsoup/nodes/Comment.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/DataNode.class b/libs/org/jsoup/nodes/DataNode.class deleted file mode 100644 index bc78de5..0000000 Binary files a/libs/org/jsoup/nodes/DataNode.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Document$OutputSettings$Syntax.class b/libs/org/jsoup/nodes/Document$OutputSettings$Syntax.class deleted file mode 100644 index 04e3544..0000000 Binary files a/libs/org/jsoup/nodes/Document$OutputSettings$Syntax.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Document$OutputSettings.class b/libs/org/jsoup/nodes/Document$OutputSettings.class deleted file mode 100644 index c88b297..0000000 Binary files a/libs/org/jsoup/nodes/Document$OutputSettings.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Document$QuirksMode.class b/libs/org/jsoup/nodes/Document$QuirksMode.class deleted file mode 100644 index 1aebdf8..0000000 Binary files a/libs/org/jsoup/nodes/Document$QuirksMode.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Document.class b/libs/org/jsoup/nodes/Document.class deleted file mode 100644 index 15cb35d..0000000 Binary files a/libs/org/jsoup/nodes/Document.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/DocumentType.class b/libs/org/jsoup/nodes/DocumentType.class deleted file mode 100644 index c4652bd..0000000 Binary files a/libs/org/jsoup/nodes/DocumentType.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Element$1.class b/libs/org/jsoup/nodes/Element$1.class deleted file mode 100644 index 979a2a6..0000000 Binary files a/libs/org/jsoup/nodes/Element$1.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Element.class b/libs/org/jsoup/nodes/Element.class deleted file mode 100644 index 438ca7b..0000000 Binary files a/libs/org/jsoup/nodes/Element.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Entities$1.class b/libs/org/jsoup/nodes/Entities$1.class deleted file mode 100644 index 7955cb8..0000000 Binary files a/libs/org/jsoup/nodes/Entities$1.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Entities$CoreCharset.class b/libs/org/jsoup/nodes/Entities$CoreCharset.class deleted file mode 100644 index fe0c9b1..0000000 Binary files a/libs/org/jsoup/nodes/Entities$CoreCharset.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Entities$EscapeMode.class b/libs/org/jsoup/nodes/Entities$EscapeMode.class deleted file mode 100644 index 135d52e..0000000 Binary files a/libs/org/jsoup/nodes/Entities$EscapeMode.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Entities.class b/libs/org/jsoup/nodes/Entities.class deleted file mode 100644 index 9ecc115..0000000 Binary files a/libs/org/jsoup/nodes/Entities.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/FormElement.class b/libs/org/jsoup/nodes/FormElement.class deleted file mode 100644 index bc1ff77..0000000 Binary files a/libs/org/jsoup/nodes/FormElement.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Node$1.class b/libs/org/jsoup/nodes/Node$1.class deleted file mode 100644 index 49cdf53..0000000 Binary files a/libs/org/jsoup/nodes/Node$1.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Node$OuterHtmlVisitor.class b/libs/org/jsoup/nodes/Node$OuterHtmlVisitor.class deleted file mode 100644 index b94303b..0000000 Binary files a/libs/org/jsoup/nodes/Node$OuterHtmlVisitor.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/Node.class b/libs/org/jsoup/nodes/Node.class deleted file mode 100644 index f8e36f3..0000000 Binary files a/libs/org/jsoup/nodes/Node.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/TextNode.class b/libs/org/jsoup/nodes/TextNode.class deleted file mode 100644 index c844591..0000000 Binary files a/libs/org/jsoup/nodes/TextNode.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/XmlDeclaration.class b/libs/org/jsoup/nodes/XmlDeclaration.class deleted file mode 100644 index 5fc1a5c..0000000 Binary files a/libs/org/jsoup/nodes/XmlDeclaration.class and /dev/null differ diff --git a/libs/org/jsoup/nodes/entities-base.properties b/libs/org/jsoup/nodes/entities-base.properties deleted file mode 100644 index 3d1d11e..0000000 --- a/libs/org/jsoup/nodes/entities-base.properties +++ /dev/null @@ -1,106 +0,0 @@ -AElig=000C6 -AMP=00026 -Aacute=000C1 -Acirc=000C2 -Agrave=000C0 -Aring=000C5 -Atilde=000C3 -Auml=000C4 -COPY=000A9 -Ccedil=000C7 -ETH=000D0 -Eacute=000C9 -Ecirc=000CA -Egrave=000C8 -Euml=000CB -GT=0003E -Iacute=000CD -Icirc=000CE -Igrave=000CC -Iuml=000CF -LT=0003C -Ntilde=000D1 -Oacute=000D3 -Ocirc=000D4 -Ograve=000D2 -Oslash=000D8 -Otilde=000D5 -Ouml=000D6 -QUOT=00022 -REG=000AE -THORN=000DE -Uacute=000DA -Ucirc=000DB -Ugrave=000D9 -Uuml=000DC -Yacute=000DD -aacute=000E1 -acirc=000E2 -acute=000B4 -aelig=000E6 -agrave=000E0 -amp=00026 -aring=000E5 -atilde=000E3 -auml=000E4 -brvbar=000A6 -ccedil=000E7 -cedil=000B8 -cent=000A2 -copy=000A9 -curren=000A4 -deg=000B0 -divide=000F7 -eacute=000E9 -ecirc=000EA -egrave=000E8 -eth=000F0 -euml=000EB -frac12=000BD -frac14=000BC -frac34=000BE -gt=0003E -iacute=000ED -icirc=000EE -iexcl=000A1 -igrave=000EC -iquest=000BF -iuml=000EF -laquo=000AB -lt=0003C -macr=000AF -micro=000B5 -middot=000B7 -nbsp=000A0 -not=000AC -ntilde=000F1 -oacute=000F3 -ocirc=000F4 -ograve=000F2 -ordf=000AA -ordm=000BA -oslash=000F8 -otilde=000F5 -ouml=000F6 -para=000B6 -plusmn=000B1 -pound=000A3 -quot=00022 -raquo=000BB -reg=000AE -sect=000A7 -shy=000AD -sup1=000B9 -sup2=000B2 -sup3=000B3 -szlig=000DF -thorn=000FE -times=000D7 -uacute=000FA -ucirc=000FB -ugrave=000F9 -uml=000A8 -uuml=000FC -yacute=000FD -yen=000A5 -yuml=000FF diff --git a/libs/org/jsoup/nodes/entities-full.properties b/libs/org/jsoup/nodes/entities-full.properties deleted file mode 100644 index 92f124f..0000000 --- a/libs/org/jsoup/nodes/entities-full.properties +++ /dev/null @@ -1,2032 +0,0 @@ -AElig=000C6 -AMP=00026 -Aacute=000C1 -Abreve=00102 -Acirc=000C2 -Acy=00410 -Afr=1D504 -Agrave=000C0 -Alpha=00391 -Amacr=00100 -And=02A53 -Aogon=00104 -Aopf=1D538 -ApplyFunction=02061 -Aring=000C5 -Ascr=1D49C -Assign=02254 -Atilde=000C3 -Auml=000C4 -Backslash=02216 -Barv=02AE7 -Barwed=02306 -Bcy=00411 -Because=02235 -Bernoullis=0212C -Beta=00392 -Bfr=1D505 -Bopf=1D539 -Breve=002D8 -Bscr=0212C -Bumpeq=0224E -CHcy=00427 -COPY=000A9 -Cacute=00106 -Cap=022D2 -CapitalDifferentialD=02145 -Cayleys=0212D -Ccaron=0010C -Ccedil=000C7 -Ccirc=00108 -Cconint=02230 -Cdot=0010A -Cedilla=000B8 -CenterDot=000B7 -Cfr=0212D -Chi=003A7 -CircleDot=02299 -CircleMinus=02296 -CirclePlus=02295 -CircleTimes=02297 -ClockwiseContourIntegral=02232 -CloseCurlyDoubleQuote=0201D -CloseCurlyQuote=02019 -Colon=02237 -Colone=02A74 -Congruent=02261 -Conint=0222F -ContourIntegral=0222E -Copf=02102 -Coproduct=02210 -CounterClockwiseContourIntegral=02233 -Cross=02A2F -Cscr=1D49E -Cup=022D3 -CupCap=0224D -DD=02145 -DDotrahd=02911 -DJcy=00402 -DScy=00405 -DZcy=0040F -Dagger=02021 -Darr=021A1 -Dashv=02AE4 -Dcaron=0010E -Dcy=00414 -Del=02207 -Delta=00394 -Dfr=1D507 -DiacriticalAcute=000B4 -DiacriticalDot=002D9 -DiacriticalDoubleAcute=002DD -DiacriticalGrave=00060 -DiacriticalTilde=002DC -Diamond=022C4 -DifferentialD=02146 -Dopf=1D53B -Dot=000A8 -DotDot=020DC -DotEqual=02250 -DoubleContourIntegral=0222F -DoubleDot=000A8 -DoubleDownArrow=021D3 -DoubleLeftArrow=021D0 -DoubleLeftRightArrow=021D4 -DoubleLeftTee=02AE4 -DoubleLongLeftArrow=027F8 -DoubleLongLeftRightArrow=027FA -DoubleLongRightArrow=027F9 -DoubleRightArrow=021D2 -DoubleRightTee=022A8 -DoubleUpArrow=021D1 -DoubleUpDownArrow=021D5 -DoubleVerticalBar=02225 -DownArrow=02193 -DownArrowBar=02913 -DownArrowUpArrow=021F5 -DownBreve=00311 -DownLeftRightVector=02950 -DownLeftTeeVector=0295E -DownLeftVector=021BD -DownLeftVectorBar=02956 -DownRightTeeVector=0295F -DownRightVector=021C1 -DownRightVectorBar=02957 -DownTee=022A4 -DownTeeArrow=021A7 -Downarrow=021D3 -Dscr=1D49F -Dstrok=00110 -ENG=0014A -ETH=000D0 -Eacute=000C9 -Ecaron=0011A -Ecirc=000CA -Ecy=0042D -Edot=00116 -Efr=1D508 -Egrave=000C8 -Element=02208 -Emacr=00112 -EmptySmallSquare=025FB -EmptyVerySmallSquare=025AB -Eogon=00118 -Eopf=1D53C -Epsilon=00395 -Equal=02A75 -EqualTilde=02242 -Equilibrium=021CC -Escr=02130 -Esim=02A73 -Eta=00397 -Euml=000CB -Exists=02203 -ExponentialE=02147 -Fcy=00424 -Ffr=1D509 -FilledSmallSquare=025FC -FilledVerySmallSquare=025AA -Fopf=1D53D -ForAll=02200 -Fouriertrf=02131 -Fscr=02131 -GJcy=00403 -GT=0003E -Gamma=00393 -Gammad=003DC -Gbreve=0011E -Gcedil=00122 -Gcirc=0011C -Gcy=00413 -Gdot=00120 -Gfr=1D50A -Gg=022D9 -Gopf=1D53E -GreaterEqual=02265 -GreaterEqualLess=022DB -GreaterFullEqual=02267 -GreaterGreater=02AA2 -GreaterLess=02277 -GreaterSlantEqual=02A7E -GreaterTilde=02273 -Gscr=1D4A2 -Gt=0226B -HARDcy=0042A -Hacek=002C7 -Hat=0005E -Hcirc=00124 -Hfr=0210C -HilbertSpace=0210B -Hopf=0210D -HorizontalLine=02500 -Hscr=0210B -Hstrok=00126 -HumpDownHump=0224E -HumpEqual=0224F -IEcy=00415 -IJlig=00132 -IOcy=00401 -Iacute=000CD -Icirc=000CE -Icy=00418 -Idot=00130 -Ifr=02111 -Igrave=000CC -Im=02111 -Imacr=0012A -ImaginaryI=02148 -Implies=021D2 -Int=0222C -Integral=0222B -Intersection=022C2 -InvisibleComma=02063 -InvisibleTimes=02062 -Iogon=0012E -Iopf=1D540 -Iota=00399 -Iscr=02110 -Itilde=00128 -Iukcy=00406 -Iuml=000CF -Jcirc=00134 -Jcy=00419 -Jfr=1D50D -Jopf=1D541 -Jscr=1D4A5 -Jsercy=00408 -Jukcy=00404 -KHcy=00425 -KJcy=0040C -Kappa=0039A -Kcedil=00136 -Kcy=0041A -Kfr=1D50E -Kopf=1D542 -Kscr=1D4A6 -LJcy=00409 -LT=0003C -Lacute=00139 -Lambda=0039B -Lang=027EA -Laplacetrf=02112 -Larr=0219E -Lcaron=0013D -Lcedil=0013B -Lcy=0041B -LeftAngleBracket=027E8 -LeftArrow=02190 -LeftArrowBar=021E4 -LeftArrowRightArrow=021C6 -LeftCeiling=02308 -LeftDoubleBracket=027E6 -LeftDownTeeVector=02961 -LeftDownVector=021C3 -LeftDownVectorBar=02959 -LeftFloor=0230A -LeftRightArrow=02194 -LeftRightVector=0294E -LeftTee=022A3 -LeftTeeArrow=021A4 -LeftTeeVector=0295A -LeftTriangle=022B2 -LeftTriangleBar=029CF -LeftTriangleEqual=022B4 -LeftUpDownVector=02951 -LeftUpTeeVector=02960 -LeftUpVector=021BF -LeftUpVectorBar=02958 -LeftVector=021BC -LeftVectorBar=02952 -Leftarrow=021D0 -Leftrightarrow=021D4 -LessEqualGreater=022DA -LessFullEqual=02266 -LessGreater=02276 -LessLess=02AA1 -LessSlantEqual=02A7D -LessTilde=02272 -Lfr=1D50F -Ll=022D8 -Lleftarrow=021DA -Lmidot=0013F -LongLeftArrow=027F5 -LongLeftRightArrow=027F7 -LongRightArrow=027F6 -Longleftarrow=027F8 -Longleftrightarrow=027FA -Longrightarrow=027F9 -Lopf=1D543 -LowerLeftArrow=02199 -LowerRightArrow=02198 -Lscr=02112 -Lsh=021B0 -Lstrok=00141 -Lt=0226A -Map=02905 -Mcy=0041C -MediumSpace=0205F -Mellintrf=02133 -Mfr=1D510 -MinusPlus=02213 -Mopf=1D544 -Mscr=02133 -Mu=0039C -NJcy=0040A -Nacute=00143 -Ncaron=00147 -Ncedil=00145 -Ncy=0041D -NegativeMediumSpace=0200B -NegativeThickSpace=0200B -NegativeThinSpace=0200B -NegativeVeryThinSpace=0200B -NestedGreaterGreater=0226B -NestedLessLess=0226A -NewLine=0000A -Nfr=1D511 -NoBreak=02060 -NonBreakingSpace=000A0 -Nopf=02115 -Not=02AEC -NotCongruent=02262 -NotCupCap=0226D -NotDoubleVerticalBar=02226 -NotElement=02209 -NotEqual=02260 -NotExists=02204 -NotGreater=0226F -NotGreaterEqual=02271 -NotGreaterLess=02279 -NotGreaterTilde=02275 -NotLeftTriangle=022EA -NotLeftTriangleEqual=022EC -NotLess=0226E -NotLessEqual=02270 -NotLessGreater=02278 -NotLessTilde=02274 -NotPrecedes=02280 -NotPrecedesSlantEqual=022E0 -NotReverseElement=0220C -NotRightTriangle=022EB -NotRightTriangleEqual=022ED -NotSquareSubsetEqual=022E2 -NotSquareSupersetEqual=022E3 -NotSubsetEqual=02288 -NotSucceeds=02281 -NotSucceedsSlantEqual=022E1 -NotSupersetEqual=02289 -NotTilde=02241 -NotTildeEqual=02244 -NotTildeFullEqual=02247 -NotTildeTilde=02249 -NotVerticalBar=02224 -Nscr=1D4A9 -Ntilde=000D1 -Nu=0039D -OElig=00152 -Oacute=000D3 -Ocirc=000D4 -Ocy=0041E -Odblac=00150 -Ofr=1D512 -Ograve=000D2 -Omacr=0014C -Omega=003A9 -Omicron=0039F -Oopf=1D546 -OpenCurlyDoubleQuote=0201C -OpenCurlyQuote=02018 -Or=02A54 -Oscr=1D4AA -Oslash=000D8 -Otilde=000D5 -Otimes=02A37 -Ouml=000D6 -OverBar=0203E -OverBrace=023DE -OverBracket=023B4 -OverParenthesis=023DC -PartialD=02202 -Pcy=0041F -Pfr=1D513 -Phi=003A6 -Pi=003A0 -PlusMinus=000B1 -Poincareplane=0210C -Popf=02119 -Pr=02ABB -Precedes=0227A -PrecedesEqual=02AAF -PrecedesSlantEqual=0227C -PrecedesTilde=0227E -Prime=02033 -Product=0220F -Proportion=02237 -Proportional=0221D -Pscr=1D4AB -Psi=003A8 -QUOT=00022 -Qfr=1D514 -Qopf=0211A -Qscr=1D4AC -RBarr=02910 -REG=000AE -Racute=00154 -Rang=027EB -Rarr=021A0 -Rarrtl=02916 -Rcaron=00158 -Rcedil=00156 -Rcy=00420 -Re=0211C -ReverseElement=0220B -ReverseEquilibrium=021CB -ReverseUpEquilibrium=0296F -Rfr=0211C -Rho=003A1 -RightAngleBracket=027E9 -RightArrow=02192 -RightArrowBar=021E5 -RightArrowLeftArrow=021C4 -RightCeiling=02309 -RightDoubleBracket=027E7 -RightDownTeeVector=0295D -RightDownVector=021C2 -RightDownVectorBar=02955 -RightFloor=0230B -RightTee=022A2 -RightTeeArrow=021A6 -RightTeeVector=0295B -RightTriangle=022B3 -RightTriangleBar=029D0 -RightTriangleEqual=022B5 -RightUpDownVector=0294F -RightUpTeeVector=0295C -RightUpVector=021BE -RightUpVectorBar=02954 -RightVector=021C0 -RightVectorBar=02953 -Rightarrow=021D2 -Ropf=0211D -RoundImplies=02970 -Rrightarrow=021DB -Rscr=0211B -Rsh=021B1 -RuleDelayed=029F4 -SHCHcy=00429 -SHcy=00428 -SOFTcy=0042C -Sacute=0015A -Sc=02ABC -Scaron=00160 -Scedil=0015E -Scirc=0015C -Scy=00421 -Sfr=1D516 -ShortDownArrow=02193 -ShortLeftArrow=02190 -ShortRightArrow=02192 -ShortUpArrow=02191 -Sigma=003A3 -SmallCircle=02218 -Sopf=1D54A -Sqrt=0221A -Square=025A1 -SquareIntersection=02293 -SquareSubset=0228F -SquareSubsetEqual=02291 -SquareSuperset=02290 -SquareSupersetEqual=02292 -SquareUnion=02294 -Sscr=1D4AE -Star=022C6 -Sub=022D0 -Subset=022D0 -SubsetEqual=02286 -Succeeds=0227B -SucceedsEqual=02AB0 -SucceedsSlantEqual=0227D -SucceedsTilde=0227F -SuchThat=0220B -Sum=02211 -Sup=022D1 -Superset=02283 -SupersetEqual=02287 -Supset=022D1 -THORN=000DE -TRADE=02122 -TSHcy=0040B -TScy=00426 -Tab=00009 -Tau=003A4 -Tcaron=00164 -Tcedil=00162 -Tcy=00422 -Tfr=1D517 -Therefore=02234 -Theta=00398 -ThinSpace=02009 -Tilde=0223C -TildeEqual=02243 -TildeFullEqual=02245 -TildeTilde=02248 -Topf=1D54B -TripleDot=020DB -Tscr=1D4AF -Tstrok=00166 -Uacute=000DA -Uarr=0219F -Uarrocir=02949 -Ubrcy=0040E -Ubreve=0016C -Ucirc=000DB -Ucy=00423 -Udblac=00170 -Ufr=1D518 -Ugrave=000D9 -Umacr=0016A -UnderBar=0005F -UnderBrace=023DF -UnderBracket=023B5 -UnderParenthesis=023DD -Union=022C3 -UnionPlus=0228E -Uogon=00172 -Uopf=1D54C -UpArrow=02191 -UpArrowBar=02912 -UpArrowDownArrow=021C5 -UpDownArrow=02195 -UpEquilibrium=0296E -UpTee=022A5 -UpTeeArrow=021A5 -Uparrow=021D1 -Updownarrow=021D5 -UpperLeftArrow=02196 -UpperRightArrow=02197 -Upsi=003D2 -Upsilon=003A5 -Uring=0016E -Uscr=1D4B0 -Utilde=00168 -Uuml=000DC -VDash=022AB -Vbar=02AEB -Vcy=00412 -Vdash=022A9 -Vdashl=02AE6 -Vee=022C1 -Verbar=02016 -Vert=02016 -VerticalBar=02223 -VerticalLine=0007C -VerticalSeparator=02758 -VerticalTilde=02240 -VeryThinSpace=0200A -Vfr=1D519 -Vopf=1D54D -Vscr=1D4B1 -Vvdash=022AA -Wcirc=00174 -Wedge=022C0 -Wfr=1D51A -Wopf=1D54E -Wscr=1D4B2 -Xfr=1D51B -Xi=0039E -Xopf=1D54F -Xscr=1D4B3 -YAcy=0042F -YIcy=00407 -YUcy=0042E -Yacute=000DD -Ycirc=00176 -Ycy=0042B -Yfr=1D51C -Yopf=1D550 -Yscr=1D4B4 -Yuml=00178 -ZHcy=00416 -Zacute=00179 -Zcaron=0017D -Zcy=00417 -Zdot=0017B -ZeroWidthSpace=0200B -Zeta=00396 -Zfr=02128 -Zopf=02124 -Zscr=1D4B5 -aacute=000E1 -abreve=00103 -ac=0223E -acd=0223F -acirc=000E2 -acute=000B4 -acy=00430 -aelig=000E6 -af=02061 -afr=1D51E -agrave=000E0 -alefsym=02135 -aleph=02135 -alpha=003B1 -amacr=00101 -amalg=02A3F -amp=00026 -and=02227 -andand=02A55 -andd=02A5C -andslope=02A58 -andv=02A5A -ang=02220 -ange=029A4 -angle=02220 -angmsd=02221 -angmsdaa=029A8 -angmsdab=029A9 -angmsdac=029AA -angmsdad=029AB -angmsdae=029AC -angmsdaf=029AD -angmsdag=029AE -angmsdah=029AF -angrt=0221F -angrtvb=022BE -angrtvbd=0299D -angsph=02222 -angst=000C5 -angzarr=0237C -aogon=00105 -aopf=1D552 -ap=02248 -apE=02A70 -apacir=02A6F -ape=0224A -apid=0224B -apos=00027 -approx=02248 -approxeq=0224A -aring=000E5 -ascr=1D4B6 -ast=0002A -asymp=02248 -asympeq=0224D -atilde=000E3 -auml=000E4 -awconint=02233 -awint=02A11 -bNot=02AED -backcong=0224C -backepsilon=003F6 -backprime=02035 -backsim=0223D -backsimeq=022CD -barvee=022BD -barwed=02305 -barwedge=02305 -bbrk=023B5 -bbrktbrk=023B6 -bcong=0224C -bcy=00431 -bdquo=0201E -becaus=02235 -because=02235 -bemptyv=029B0 -bepsi=003F6 -bernou=0212C -beta=003B2 -beth=02136 -between=0226C -bfr=1D51F -bigcap=022C2 -bigcirc=025EF -bigcup=022C3 -bigodot=02A00 -bigoplus=02A01 -bigotimes=02A02 -bigsqcup=02A06 -bigstar=02605 -bigtriangledown=025BD -bigtriangleup=025B3 -biguplus=02A04 -bigvee=022C1 -bigwedge=022C0 -bkarow=0290D -blacklozenge=029EB -blacksquare=025AA -blacktriangle=025B4 -blacktriangledown=025BE -blacktriangleleft=025C2 -blacktriangleright=025B8 -blank=02423 -blk12=02592 -blk14=02591 -blk34=02593 -block=02588 -bnot=02310 -bopf=1D553 -bot=022A5 -bottom=022A5 -bowtie=022C8 -boxDL=02557 -boxDR=02554 -boxDl=02556 -boxDr=02553 -boxH=02550 -boxHD=02566 -boxHU=02569 -boxHd=02564 -boxHu=02567 -boxUL=0255D -boxUR=0255A -boxUl=0255C -boxUr=02559 -boxV=02551 -boxVH=0256C -boxVL=02563 -boxVR=02560 -boxVh=0256B -boxVl=02562 -boxVr=0255F -boxbox=029C9 -boxdL=02555 -boxdR=02552 -boxdl=02510 -boxdr=0250C -boxh=02500 -boxhD=02565 -boxhU=02568 -boxhd=0252C -boxhu=02534 -boxminus=0229F -boxplus=0229E -boxtimes=022A0 -boxuL=0255B -boxuR=02558 -boxul=02518 -boxur=02514 -boxv=02502 -boxvH=0256A -boxvL=02561 -boxvR=0255E -boxvh=0253C -boxvl=02524 -boxvr=0251C -bprime=02035 -breve=002D8 -brvbar=000A6 -bscr=1D4B7 -bsemi=0204F -bsim=0223D -bsime=022CD -bsol=0005C -bsolb=029C5 -bsolhsub=027C8 -bull=02022 -bullet=02022 -bump=0224E -bumpE=02AAE -bumpe=0224F -bumpeq=0224F -cacute=00107 -cap=02229 -capand=02A44 -capbrcup=02A49 -capcap=02A4B -capcup=02A47 -capdot=02A40 -caret=02041 -caron=002C7 -ccaps=02A4D -ccaron=0010D -ccedil=000E7 -ccirc=00109 -ccups=02A4C -ccupssm=02A50 -cdot=0010B -cedil=000B8 -cemptyv=029B2 -cent=000A2 -centerdot=000B7 -cfr=1D520 -chcy=00447 -check=02713 -checkmark=02713 -chi=003C7 -cir=025CB -cirE=029C3 -circ=002C6 -circeq=02257 -circlearrowleft=021BA -circlearrowright=021BB -circledR=000AE -circledS=024C8 -circledast=0229B -circledcirc=0229A -circleddash=0229D -cire=02257 -cirfnint=02A10 -cirmid=02AEF -cirscir=029C2 -clubs=02663 -clubsuit=02663 -colon=0003A -colone=02254 -coloneq=02254 -comma=0002C -commat=00040 -comp=02201 -compfn=02218 -complement=02201 -complexes=02102 -cong=02245 -congdot=02A6D -conint=0222E -copf=1D554 -coprod=02210 -copy=000A9 -copysr=02117 -crarr=021B5 -cross=02717 -cscr=1D4B8 -csub=02ACF -csube=02AD1 -csup=02AD0 -csupe=02AD2 -ctdot=022EF -cudarrl=02938 -cudarrr=02935 -cuepr=022DE -cuesc=022DF -cularr=021B6 -cularrp=0293D -cup=0222A -cupbrcap=02A48 -cupcap=02A46 -cupcup=02A4A -cupdot=0228D -cupor=02A45 -curarr=021B7 -curarrm=0293C -curlyeqprec=022DE -curlyeqsucc=022DF -curlyvee=022CE -curlywedge=022CF -curren=000A4 -curvearrowleft=021B6 -curvearrowright=021B7 -cuvee=022CE -cuwed=022CF -cwconint=02232 -cwint=02231 -cylcty=0232D -dArr=021D3 -dHar=02965 -dagger=02020 -daleth=02138 -darr=02193 -dash=02010 -dashv=022A3 -dbkarow=0290F -dblac=002DD -dcaron=0010F -dcy=00434 -dd=02146 -ddagger=02021 -ddarr=021CA -ddotseq=02A77 -deg=000B0 -delta=003B4 -demptyv=029B1 -dfisht=0297F -dfr=1D521 -dharl=021C3 -dharr=021C2 -diam=022C4 -diamond=022C4 -diamondsuit=02666 -diams=02666 -die=000A8 -digamma=003DD -disin=022F2 -div=000F7 -divide=000F7 -divideontimes=022C7 -divonx=022C7 -djcy=00452 -dlcorn=0231E -dlcrop=0230D -dollar=00024 -dopf=1D555 -dot=002D9 -doteq=02250 -doteqdot=02251 -dotminus=02238 -dotplus=02214 -dotsquare=022A1 -doublebarwedge=02306 -downarrow=02193 -downdownarrows=021CA -downharpoonleft=021C3 -downharpoonright=021C2 -drbkarow=02910 -drcorn=0231F -drcrop=0230C -dscr=1D4B9 -dscy=00455 -dsol=029F6 -dstrok=00111 -dtdot=022F1 -dtri=025BF -dtrif=025BE -duarr=021F5 -duhar=0296F -dwangle=029A6 -dzcy=0045F -dzigrarr=027FF -eDDot=02A77 -eDot=02251 -eacute=000E9 -easter=02A6E -ecaron=0011B -ecir=02256 -ecirc=000EA -ecolon=02255 -ecy=0044D -edot=00117 -ee=02147 -efDot=02252 -efr=1D522 -eg=02A9A -egrave=000E8 -egs=02A96 -egsdot=02A98 -el=02A99 -elinters=023E7 -ell=02113 -els=02A95 -elsdot=02A97 -emacr=00113 -empty=02205 -emptyset=02205 -emptyv=02205 -emsp13=02004 -emsp14=02005 -emsp=02003 -eng=0014B -ensp=02002 -eogon=00119 -eopf=1D556 -epar=022D5 -eparsl=029E3 -eplus=02A71 -epsi=003B5 -epsilon=003B5 -epsiv=003F5 -eqcirc=02256 -eqcolon=02255 -eqsim=02242 -eqslantgtr=02A96 -eqslantless=02A95 -equals=0003D -equest=0225F -equiv=02261 -equivDD=02A78 -eqvparsl=029E5 -erDot=02253 -erarr=02971 -escr=0212F -esdot=02250 -esim=02242 -eta=003B7 -eth=000F0 -euml=000EB -euro=020AC -excl=00021 -exist=02203 -expectation=02130 -exponentiale=02147 -fallingdotseq=02252 -fcy=00444 -female=02640 -ffilig=0FB03 -fflig=0FB00 -ffllig=0FB04 -ffr=1D523 -filig=0FB01 -flat=0266D -fllig=0FB02 -fltns=025B1 -fnof=00192 -fopf=1D557 -forall=02200 -fork=022D4 -forkv=02AD9 -fpartint=02A0D -frac12=000BD -frac13=02153 -frac14=000BC -frac15=02155 -frac16=02159 -frac18=0215B -frac23=02154 -frac25=02156 -frac34=000BE -frac35=02157 -frac38=0215C -frac45=02158 -frac56=0215A -frac58=0215D -frac78=0215E -frasl=02044 -frown=02322 -fscr=1D4BB -gE=02267 -gEl=02A8C -gacute=001F5 -gamma=003B3 -gammad=003DD -gap=02A86 -gbreve=0011F -gcirc=0011D -gcy=00433 -gdot=00121 -ge=02265 -gel=022DB -geq=02265 -geqq=02267 -geqslant=02A7E -ges=02A7E -gescc=02AA9 -gesdot=02A80 -gesdoto=02A82 -gesdotol=02A84 -gesles=02A94 -gfr=1D524 -gg=0226B -ggg=022D9 -gimel=02137 -gjcy=00453 -gl=02277 -glE=02A92 -gla=02AA5 -glj=02AA4 -gnE=02269 -gnap=02A8A -gnapprox=02A8A -gne=02A88 -gneq=02A88 -gneqq=02269 -gnsim=022E7 -gopf=1D558 -grave=00060 -gscr=0210A -gsim=02273 -gsime=02A8E -gsiml=02A90 -gt=0003E -gtcc=02AA7 -gtcir=02A7A -gtdot=022D7 -gtlPar=02995 -gtquest=02A7C -gtrapprox=02A86 -gtrarr=02978 -gtrdot=022D7 -gtreqless=022DB -gtreqqless=02A8C -gtrless=02277 -gtrsim=02273 -hArr=021D4 -hairsp=0200A -half=000BD -hamilt=0210B -hardcy=0044A -harr=02194 -harrcir=02948 -harrw=021AD -hbar=0210F -hcirc=00125 -hearts=02665 -heartsuit=02665 -hellip=02026 -hercon=022B9 -hfr=1D525 -hksearow=02925 -hkswarow=02926 -hoarr=021FF -homtht=0223B -hookleftarrow=021A9 -hookrightarrow=021AA -hopf=1D559 -horbar=02015 -hscr=1D4BD -hslash=0210F -hstrok=00127 -hybull=02043 -hyphen=02010 -iacute=000ED -ic=02063 -icirc=000EE -icy=00438 -iecy=00435 -iexcl=000A1 -iff=021D4 -ifr=1D526 -igrave=000EC -ii=02148 -iiiint=02A0C -iiint=0222D -iinfin=029DC -iiota=02129 -ijlig=00133 -imacr=0012B -image=02111 -imagline=02110 -imagpart=02111 -imath=00131 -imof=022B7 -imped=001B5 -in=02208 -incare=02105 -infin=0221E -infintie=029DD -inodot=00131 -int=0222B -intcal=022BA -integers=02124 -intercal=022BA -intlarhk=02A17 -intprod=02A3C -iocy=00451 -iogon=0012F -iopf=1D55A -iota=003B9 -iprod=02A3C -iquest=000BF -iscr=1D4BE -isin=02208 -isinE=022F9 -isindot=022F5 -isins=022F4 -isinsv=022F3 -isinv=02208 -it=02062 -itilde=00129 -iukcy=00456 -iuml=000EF -jcirc=00135 -jcy=00439 -jfr=1D527 -jmath=00237 -jopf=1D55B -jscr=1D4BF -jsercy=00458 -jukcy=00454 -kappa=003BA -kappav=003F0 -kcedil=00137 -kcy=0043A -kfr=1D528 -kgreen=00138 -khcy=00445 -kjcy=0045C -kopf=1D55C -kscr=1D4C0 -lAarr=021DA -lArr=021D0 -lAtail=0291B -lBarr=0290E -lE=02266 -lEg=02A8B -lHar=02962 -lacute=0013A -laemptyv=029B4 -lagran=02112 -lambda=003BB -lang=027E8 -langd=02991 -langle=027E8 -lap=02A85 -laquo=000AB -larr=02190 -larrb=021E4 -larrbfs=0291F -larrfs=0291D -larrhk=021A9 -larrlp=021AB -larrpl=02939 -larrsim=02973 -larrtl=021A2 -lat=02AAB -latail=02919 -late=02AAD -lbarr=0290C -lbbrk=02772 -lbrace=0007B -lbrack=0005B -lbrke=0298B -lbrksld=0298F -lbrkslu=0298D -lcaron=0013E -lcedil=0013C -lceil=02308 -lcub=0007B -lcy=0043B -ldca=02936 -ldquo=0201C -ldquor=0201E -ldrdhar=02967 -ldrushar=0294B -ldsh=021B2 -le=02264 -leftarrow=02190 -leftarrowtail=021A2 -leftharpoondown=021BD -leftharpoonup=021BC -leftleftarrows=021C7 -leftrightarrow=02194 -leftrightarrows=021C6 -leftrightharpoons=021CB -leftrightsquigarrow=021AD -leftthreetimes=022CB -leg=022DA -leq=02264 -leqq=02266 -leqslant=02A7D -les=02A7D -lescc=02AA8 -lesdot=02A7F -lesdoto=02A81 -lesdotor=02A83 -lesges=02A93 -lessapprox=02A85 -lessdot=022D6 -lesseqgtr=022DA -lesseqqgtr=02A8B -lessgtr=02276 -lesssim=02272 -lfisht=0297C -lfloor=0230A -lfr=1D529 -lg=02276 -lgE=02A91 -lhard=021BD -lharu=021BC -lharul=0296A -lhblk=02584 -ljcy=00459 -ll=0226A -llarr=021C7 -llcorner=0231E -llhard=0296B -lltri=025FA -lmidot=00140 -lmoust=023B0 -lmoustache=023B0 -lnE=02268 -lnap=02A89 -lnapprox=02A89 -lne=02A87 -lneq=02A87 -lneqq=02268 -lnsim=022E6 -loang=027EC -loarr=021FD -lobrk=027E6 -longleftarrow=027F5 -longleftrightarrow=027F7 -longmapsto=027FC -longrightarrow=027F6 -looparrowleft=021AB -looparrowright=021AC -lopar=02985 -lopf=1D55D -loplus=02A2D -lotimes=02A34 -lowast=02217 -lowbar=0005F -loz=025CA -lozenge=025CA -lozf=029EB -lpar=00028 -lparlt=02993 -lrarr=021C6 -lrcorner=0231F -lrhar=021CB -lrhard=0296D -lrm=0200E -lrtri=022BF -lsaquo=02039 -lscr=1D4C1 -lsh=021B0 -lsim=02272 -lsime=02A8D -lsimg=02A8F -lsqb=0005B -lsquo=02018 -lsquor=0201A -lstrok=00142 -lt=0003C -ltcc=02AA6 -ltcir=02A79 -ltdot=022D6 -lthree=022CB -ltimes=022C9 -ltlarr=02976 -ltquest=02A7B -ltrPar=02996 -ltri=025C3 -ltrie=022B4 -ltrif=025C2 -lurdshar=0294A -luruhar=02966 -mDDot=0223A -macr=000AF -male=02642 -malt=02720 -maltese=02720 -map=021A6 -mapsto=021A6 -mapstodown=021A7 -mapstoleft=021A4 -mapstoup=021A5 -marker=025AE -mcomma=02A29 -mcy=0043C -mdash=02014 -measuredangle=02221 -mfr=1D52A -mho=02127 -micro=000B5 -mid=02223 -midast=0002A -midcir=02AF0 -middot=000B7 -minus=02212 -minusb=0229F -minusd=02238 -minusdu=02A2A -mlcp=02ADB -mldr=02026 -mnplus=02213 -models=022A7 -mopf=1D55E -mp=02213 -mscr=1D4C2 -mstpos=0223E -mu=003BC -multimap=022B8 -mumap=022B8 -nLeftarrow=021CD -nLeftrightarrow=021CE -nRightarrow=021CF -nVDash=022AF -nVdash=022AE -nabla=02207 -nacute=00144 -nap=02249 -napos=00149 -napprox=02249 -natur=0266E -natural=0266E -naturals=02115 -nbsp=000A0 -ncap=02A43 -ncaron=00148 -ncedil=00146 -ncong=02247 -ncup=02A42 -ncy=0043D -ndash=02013 -ne=02260 -neArr=021D7 -nearhk=02924 -nearr=02197 -nearrow=02197 -nequiv=02262 -nesear=02928 -nexist=02204 -nexists=02204 -nfr=1D52B -nge=02271 -ngeq=02271 -ngsim=02275 -ngt=0226F -ngtr=0226F -nhArr=021CE -nharr=021AE -nhpar=02AF2 -ni=0220B -nis=022FC -nisd=022FA -niv=0220B -njcy=0045A -nlArr=021CD -nlarr=0219A -nldr=02025 -nle=02270 -nleftarrow=0219A -nleftrightarrow=021AE -nleq=02270 -nless=0226E -nlsim=02274 -nlt=0226E -nltri=022EA -nltrie=022EC -nmid=02224 -nopf=1D55F -not=000AC -notin=02209 -notinva=02209 -notinvb=022F7 -notinvc=022F6 -notni=0220C -notniva=0220C -notnivb=022FE -notnivc=022FD -npar=02226 -nparallel=02226 -npolint=02A14 -npr=02280 -nprcue=022E0 -nprec=02280 -nrArr=021CF -nrarr=0219B -nrightarrow=0219B -nrtri=022EB -nrtrie=022ED -nsc=02281 -nsccue=022E1 -nscr=1D4C3 -nshortmid=02224 -nshortparallel=02226 -nsim=02241 -nsime=02244 -nsimeq=02244 -nsmid=02224 -nspar=02226 -nsqsube=022E2 -nsqsupe=022E3 -nsub=02284 -nsube=02288 -nsubseteq=02288 -nsucc=02281 -nsup=02285 -nsupe=02289 -nsupseteq=02289 -ntgl=02279 -ntilde=000F1 -ntlg=02278 -ntriangleleft=022EA -ntrianglelefteq=022EC -ntriangleright=022EB -ntrianglerighteq=022ED -nu=003BD -num=00023 -numero=02116 -numsp=02007 -nvDash=022AD -nvHarr=02904 -nvdash=022AC -nvinfin=029DE -nvlArr=02902 -nvrArr=02903 -nwArr=021D6 -nwarhk=02923 -nwarr=02196 -nwarrow=02196 -nwnear=02927 -oS=024C8 -oacute=000F3 -oast=0229B -ocir=0229A -ocirc=000F4 -ocy=0043E -odash=0229D -odblac=00151 -odiv=02A38 -odot=02299 -odsold=029BC -oelig=00153 -ofcir=029BF -ofr=1D52C -ogon=002DB -ograve=000F2 -ogt=029C1 -ohbar=029B5 -ohm=003A9 -oint=0222E -olarr=021BA -olcir=029BE -olcross=029BB -oline=0203E -olt=029C0 -omacr=0014D -omega=003C9 -omicron=003BF -omid=029B6 -ominus=02296 -oopf=1D560 -opar=029B7 -operp=029B9 -oplus=02295 -or=02228 -orarr=021BB -ord=02A5D -order=02134 -orderof=02134 -ordf=000AA -ordm=000BA -origof=022B6 -oror=02A56 -orslope=02A57 -orv=02A5B -oscr=02134 -oslash=000F8 -osol=02298 -otilde=000F5 -otimes=02297 -otimesas=02A36 -ouml=000F6 -ovbar=0233D -par=02225 -para=000B6 -parallel=02225 -parsim=02AF3 -parsl=02AFD -part=02202 -pcy=0043F -percnt=00025 -period=0002E -permil=02030 -perp=022A5 -pertenk=02031 -pfr=1D52D -phi=003C6 -phiv=003D5 -phmmat=02133 -phone=0260E -pi=003C0 -pitchfork=022D4 -piv=003D6 -planck=0210F -planckh=0210E -plankv=0210F -plus=0002B -plusacir=02A23 -plusb=0229E -pluscir=02A22 -plusdo=02214 -plusdu=02A25 -pluse=02A72 -plusmn=000B1 -plussim=02A26 -plustwo=02A27 -pm=000B1 -pointint=02A15 -popf=1D561 -pound=000A3 -pr=0227A -prE=02AB3 -prap=02AB7 -prcue=0227C -pre=02AAF -prec=0227A -precapprox=02AB7 -preccurlyeq=0227C -preceq=02AAF -precnapprox=02AB9 -precneqq=02AB5 -precnsim=022E8 -precsim=0227E -prime=02032 -primes=02119 -prnE=02AB5 -prnap=02AB9 -prnsim=022E8 -prod=0220F -profalar=0232E -profline=02312 -profsurf=02313 -prop=0221D -propto=0221D -prsim=0227E -prurel=022B0 -pscr=1D4C5 -psi=003C8 -puncsp=02008 -qfr=1D52E -qint=02A0C -qopf=1D562 -qprime=02057 -qscr=1D4C6 -quaternions=0210D -quatint=02A16 -quest=0003F -questeq=0225F -quot=00022 -rAarr=021DB -rArr=021D2 -rAtail=0291C -rBarr=0290F -rHar=02964 -racute=00155 -radic=0221A -raemptyv=029B3 -rang=027E9 -rangd=02992 -range=029A5 -rangle=027E9 -raquo=000BB -rarr=02192 -rarrap=02975 -rarrb=021E5 -rarrbfs=02920 -rarrc=02933 -rarrfs=0291E -rarrhk=021AA -rarrlp=021AC -rarrpl=02945 -rarrsim=02974 -rarrtl=021A3 -rarrw=0219D -ratail=0291A -ratio=02236 -rationals=0211A -rbarr=0290D -rbbrk=02773 -rbrace=0007D -rbrack=0005D -rbrke=0298C -rbrksld=0298E -rbrkslu=02990 -rcaron=00159 -rcedil=00157 -rceil=02309 -rcub=0007D -rcy=00440 -rdca=02937 -rdldhar=02969 -rdquo=0201D -rdquor=0201D -rdsh=021B3 -real=0211C -realine=0211B -realpart=0211C -reals=0211D -rect=025AD -reg=000AE -rfisht=0297D -rfloor=0230B -rfr=1D52F -rhard=021C1 -rharu=021C0 -rharul=0296C -rho=003C1 -rhov=003F1 -rightarrow=02192 -rightarrowtail=021A3 -rightharpoondown=021C1 -rightharpoonup=021C0 -rightleftarrows=021C4 -rightleftharpoons=021CC -rightrightarrows=021C9 -rightsquigarrow=0219D -rightthreetimes=022CC -ring=002DA -risingdotseq=02253 -rlarr=021C4 -rlhar=021CC -rlm=0200F -rmoust=023B1 -rmoustache=023B1 -rnmid=02AEE -roang=027ED -roarr=021FE -robrk=027E7 -ropar=02986 -ropf=1D563 -roplus=02A2E -rotimes=02A35 -rpar=00029 -rpargt=02994 -rppolint=02A12 -rrarr=021C9 -rsaquo=0203A -rscr=1D4C7 -rsh=021B1 -rsqb=0005D -rsquo=02019 -rsquor=02019 -rthree=022CC -rtimes=022CA -rtri=025B9 -rtrie=022B5 -rtrif=025B8 -rtriltri=029CE -ruluhar=02968 -rx=0211E -sacute=0015B -sbquo=0201A -sc=0227B -scE=02AB4 -scap=02AB8 -scaron=00161 -sccue=0227D -sce=02AB0 -scedil=0015F -scirc=0015D -scnE=02AB6 -scnap=02ABA -scnsim=022E9 -scpolint=02A13 -scsim=0227F -scy=00441 -sdot=022C5 -sdotb=022A1 -sdote=02A66 -seArr=021D8 -searhk=02925 -searr=02198 -searrow=02198 -sect=000A7 -semi=0003B -seswar=02929 -setminus=02216 -setmn=02216 -sext=02736 -sfr=1D530 -sfrown=02322 -sharp=0266F -shchcy=00449 -shcy=00448 -shortmid=02223 -shortparallel=02225 -shy=000AD -sigma=003C3 -sigmaf=003C2 -sigmav=003C2 -sim=0223C -simdot=02A6A -sime=02243 -simeq=02243 -simg=02A9E -simgE=02AA0 -siml=02A9D -simlE=02A9F -simne=02246 -simplus=02A24 -simrarr=02972 -slarr=02190 -smallsetminus=02216 -smashp=02A33 -smeparsl=029E4 -smid=02223 -smile=02323 -smt=02AAA -smte=02AAC -softcy=0044C -sol=0002F -solb=029C4 -solbar=0233F -sopf=1D564 -spades=02660 -spadesuit=02660 -spar=02225 -sqcap=02293 -sqcup=02294 -sqsub=0228F -sqsube=02291 -sqsubset=0228F -sqsubseteq=02291 -sqsup=02290 -sqsupe=02292 -sqsupset=02290 -sqsupseteq=02292 -squ=025A1 -square=025A1 -squarf=025AA -squf=025AA -srarr=02192 -sscr=1D4C8 -ssetmn=02216 -ssmile=02323 -sstarf=022C6 -star=02606 -starf=02605 -straightepsilon=003F5 -straightphi=003D5 -strns=000AF -sub=02282 -subE=02AC5 -subdot=02ABD -sube=02286 -subedot=02AC3 -submult=02AC1 -subnE=02ACB -subne=0228A -subplus=02ABF -subrarr=02979 -subset=02282 -subseteq=02286 -subseteqq=02AC5 -subsetneq=0228A -subsetneqq=02ACB -subsim=02AC7 -subsub=02AD5 -subsup=02AD3 -succ=0227B -succapprox=02AB8 -succcurlyeq=0227D -succeq=02AB0 -succnapprox=02ABA -succneqq=02AB6 -succnsim=022E9 -succsim=0227F -sum=02211 -sung=0266A -sup1=000B9 -sup2=000B2 -sup3=000B3 -sup=02283 -supE=02AC6 -supdot=02ABE -supdsub=02AD8 -supe=02287 -supedot=02AC4 -suphsol=027C9 -suphsub=02AD7 -suplarr=0297B -supmult=02AC2 -supnE=02ACC -supne=0228B -supplus=02AC0 -supset=02283 -supseteq=02287 -supseteqq=02AC6 -supsetneq=0228B -supsetneqq=02ACC -supsim=02AC8 -supsub=02AD4 -supsup=02AD6 -swArr=021D9 -swarhk=02926 -swarr=02199 -swarrow=02199 -swnwar=0292A -szlig=000DF -target=02316 -tau=003C4 -tbrk=023B4 -tcaron=00165 -tcedil=00163 -tcy=00442 -tdot=020DB -telrec=02315 -tfr=1D531 -there4=02234 -therefore=02234 -theta=003B8 -thetasym=003D1 -thetav=003D1 -thickapprox=02248 -thicksim=0223C -thinsp=02009 -thkap=02248 -thksim=0223C -thorn=000FE -tilde=002DC -times=000D7 -timesb=022A0 -timesbar=02A31 -timesd=02A30 -tint=0222D -toea=02928 -top=022A4 -topbot=02336 -topcir=02AF1 -topf=1D565 -topfork=02ADA -tosa=02929 -tprime=02034 -trade=02122 -triangle=025B5 -triangledown=025BF -triangleleft=025C3 -trianglelefteq=022B4 -triangleq=0225C -triangleright=025B9 -trianglerighteq=022B5 -tridot=025EC -trie=0225C -triminus=02A3A -triplus=02A39 -trisb=029CD -tritime=02A3B -trpezium=023E2 -tscr=1D4C9 -tscy=00446 -tshcy=0045B -tstrok=00167 -twixt=0226C -twoheadleftarrow=0219E -twoheadrightarrow=021A0 -uArr=021D1 -uHar=02963 -uacute=000FA -uarr=02191 -ubrcy=0045E -ubreve=0016D -ucirc=000FB -ucy=00443 -udarr=021C5 -udblac=00171 -udhar=0296E -ufisht=0297E -ufr=1D532 -ugrave=000F9 -uharl=021BF -uharr=021BE -uhblk=02580 -ulcorn=0231C -ulcorner=0231C -ulcrop=0230F -ultri=025F8 -umacr=0016B -uml=000A8 -uogon=00173 -uopf=1D566 -uparrow=02191 -updownarrow=02195 -upharpoonleft=021BF -upharpoonright=021BE -uplus=0228E -upsi=003C5 -upsih=003D2 -upsilon=003C5 -upuparrows=021C8 -urcorn=0231D -urcorner=0231D -urcrop=0230E -uring=0016F -urtri=025F9 -uscr=1D4CA -utdot=022F0 -utilde=00169 -utri=025B5 -utrif=025B4 -uuarr=021C8 -uuml=000FC -uwangle=029A7 -vArr=021D5 -vBar=02AE8 -vBarv=02AE9 -vDash=022A8 -vangrt=0299C -varepsilon=003F5 -varkappa=003F0 -varnothing=02205 -varphi=003D5 -varpi=003D6 -varpropto=0221D -varr=02195 -varrho=003F1 -varsigma=003C2 -vartheta=003D1 -vartriangleleft=022B2 -vartriangleright=022B3 -vcy=00432 -vdash=022A2 -vee=02228 -veebar=022BB -veeeq=0225A -vellip=022EE -verbar=0007C -vert=0007C -vfr=1D533 -vltri=022B2 -vopf=1D567 -vprop=0221D -vrtri=022B3 -vscr=1D4CB -vzigzag=0299A -wcirc=00175 -wedbar=02A5F -wedge=02227 -wedgeq=02259 -weierp=02118 -wfr=1D534 -wopf=1D568 -wp=02118 -wr=02240 -wreath=02240 -wscr=1D4CC -xcap=022C2 -xcirc=025EF -xcup=022C3 -xdtri=025BD -xfr=1D535 -xhArr=027FA -xharr=027F7 -xi=003BE -xlArr=027F8 -xlarr=027F5 -xmap=027FC -xnis=022FB -xodot=02A00 -xopf=1D569 -xoplus=02A01 -xotime=02A02 -xrArr=027F9 -xrarr=027F6 -xscr=1D4CD -xsqcup=02A06 -xuplus=02A04 -xutri=025B3 -xvee=022C1 -xwedge=022C0 -yacute=000FD -yacy=0044F -ycirc=00177 -ycy=0044B -yen=000A5 -yfr=1D536 -yicy=00457 -yopf=1D56A -yscr=1D4CE -yucy=0044E -yuml=000FF -zacute=0017A -zcaron=0017E -zcy=00437 -zdot=0017C -zeetrf=02128 -zeta=003B6 -zfr=1D537 -zhcy=00436 -zigrarr=021DD -zopf=1D56B -zscr=1D4CF -zwj=0200D -zwnj=0200C diff --git a/libs/org/jsoup/parser/CharacterReader.class b/libs/org/jsoup/parser/CharacterReader.class deleted file mode 100644 index 14654cc..0000000 Binary files a/libs/org/jsoup/parser/CharacterReader.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilder.class b/libs/org/jsoup/parser/HtmlTreeBuilder.class deleted file mode 100644 index a9f94e9..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilder.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$1.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$1.class deleted file mode 100644 index 7e81ad8..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$1.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$10.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$10.class deleted file mode 100644 index 3bc53a5..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$10.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$11.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$11.class deleted file mode 100644 index 6ae1804..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$11.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$12.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$12.class deleted file mode 100644 index c5a9769..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$12.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$13.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$13.class deleted file mode 100644 index d297600..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$13.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$14.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$14.class deleted file mode 100644 index ab3a398..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$14.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$15.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$15.class deleted file mode 100644 index 59f084c..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$15.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$16.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$16.class deleted file mode 100644 index 8b58fb1..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$16.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$17.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$17.class deleted file mode 100644 index 8bf94b9..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$17.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$18.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$18.class deleted file mode 100644 index 21d5f97..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$18.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$19.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$19.class deleted file mode 100644 index 8dc33bf..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$19.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$2.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$2.class deleted file mode 100644 index 1d87886..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$2.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$20.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$20.class deleted file mode 100644 index f7f0ffd..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$20.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$21.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$21.class deleted file mode 100644 index dcd298e..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$21.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$22.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$22.class deleted file mode 100644 index 8d795d5..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$22.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$23.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$23.class deleted file mode 100644 index fcbd71c..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$23.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$24.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$24.class deleted file mode 100644 index 4571b81..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$24.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$3.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$3.class deleted file mode 100644 index 3039b26..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$3.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$4.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$4.class deleted file mode 100644 index 8e29dde..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$4.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$5.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$5.class deleted file mode 100644 index f9c9712..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$5.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$6.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$6.class deleted file mode 100644 index b009403..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$6.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$7.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$7.class deleted file mode 100644 index d7b51ee..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$7.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$8.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$8.class deleted file mode 100644 index 690800f..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$8.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$9.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$9.class deleted file mode 100644 index fc1e0fe..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$9.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState$Constants.class b/libs/org/jsoup/parser/HtmlTreeBuilderState$Constants.class deleted file mode 100644 index 4c3be3a..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState$Constants.class and /dev/null differ diff --git a/libs/org/jsoup/parser/HtmlTreeBuilderState.class b/libs/org/jsoup/parser/HtmlTreeBuilderState.class deleted file mode 100644 index 0ec9d34..0000000 Binary files a/libs/org/jsoup/parser/HtmlTreeBuilderState.class and /dev/null differ diff --git a/libs/org/jsoup/parser/ParseError.class b/libs/org/jsoup/parser/ParseError.class deleted file mode 100644 index 0363057..0000000 Binary files a/libs/org/jsoup/parser/ParseError.class and /dev/null differ diff --git a/libs/org/jsoup/parser/ParseErrorList.class b/libs/org/jsoup/parser/ParseErrorList.class deleted file mode 100644 index 64077f5..0000000 Binary files a/libs/org/jsoup/parser/ParseErrorList.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Parser.class b/libs/org/jsoup/parser/Parser.class deleted file mode 100644 index b40be2c..0000000 Binary files a/libs/org/jsoup/parser/Parser.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Tag.class b/libs/org/jsoup/parser/Tag.class deleted file mode 100644 index 7eef594..0000000 Binary files a/libs/org/jsoup/parser/Tag.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$1.class b/libs/org/jsoup/parser/Token$1.class deleted file mode 100644 index 53a5aa7..0000000 Binary files a/libs/org/jsoup/parser/Token$1.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$Character.class b/libs/org/jsoup/parser/Token$Character.class deleted file mode 100644 index 23ce793..0000000 Binary files a/libs/org/jsoup/parser/Token$Character.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$Comment.class b/libs/org/jsoup/parser/Token$Comment.class deleted file mode 100644 index 29345d9..0000000 Binary files a/libs/org/jsoup/parser/Token$Comment.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$Doctype.class b/libs/org/jsoup/parser/Token$Doctype.class deleted file mode 100644 index 8c18e14..0000000 Binary files a/libs/org/jsoup/parser/Token$Doctype.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$EOF.class b/libs/org/jsoup/parser/Token$EOF.class deleted file mode 100644 index 819847b..0000000 Binary files a/libs/org/jsoup/parser/Token$EOF.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$EndTag.class b/libs/org/jsoup/parser/Token$EndTag.class deleted file mode 100644 index 0f785aa..0000000 Binary files a/libs/org/jsoup/parser/Token$EndTag.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$StartTag.class b/libs/org/jsoup/parser/Token$StartTag.class deleted file mode 100644 index 963998f..0000000 Binary files a/libs/org/jsoup/parser/Token$StartTag.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$Tag.class b/libs/org/jsoup/parser/Token$Tag.class deleted file mode 100644 index 8d20984..0000000 Binary files a/libs/org/jsoup/parser/Token$Tag.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token$TokenType.class b/libs/org/jsoup/parser/Token$TokenType.class deleted file mode 100644 index 4a2ef5c..0000000 Binary files a/libs/org/jsoup/parser/Token$TokenType.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Token.class b/libs/org/jsoup/parser/Token.class deleted file mode 100644 index f1cc389..0000000 Binary files a/libs/org/jsoup/parser/Token.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokenQueue.class b/libs/org/jsoup/parser/TokenQueue.class deleted file mode 100644 index 41a0716..0000000 Binary files a/libs/org/jsoup/parser/TokenQueue.class and /dev/null differ diff --git a/libs/org/jsoup/parser/Tokeniser.class b/libs/org/jsoup/parser/Tokeniser.class deleted file mode 100644 index 4e804c8..0000000 Binary files a/libs/org/jsoup/parser/Tokeniser.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$1.class b/libs/org/jsoup/parser/TokeniserState$1.class deleted file mode 100644 index f8c35de..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$1.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$10.class b/libs/org/jsoup/parser/TokeniserState$10.class deleted file mode 100644 index c02b0f0..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$10.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$11.class b/libs/org/jsoup/parser/TokeniserState$11.class deleted file mode 100644 index af38de4..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$11.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$12.class b/libs/org/jsoup/parser/TokeniserState$12.class deleted file mode 100644 index f17940e..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$12.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$13.class b/libs/org/jsoup/parser/TokeniserState$13.class deleted file mode 100644 index 0b6c2be..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$13.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$14.class b/libs/org/jsoup/parser/TokeniserState$14.class deleted file mode 100644 index 0380488..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$14.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$15.class b/libs/org/jsoup/parser/TokeniserState$15.class deleted file mode 100644 index da74647..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$15.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$16.class b/libs/org/jsoup/parser/TokeniserState$16.class deleted file mode 100644 index 906883e..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$16.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$17.class b/libs/org/jsoup/parser/TokeniserState$17.class deleted file mode 100644 index 3d5fcd0..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$17.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$18.class b/libs/org/jsoup/parser/TokeniserState$18.class deleted file mode 100644 index a45c86d..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$18.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$19.class b/libs/org/jsoup/parser/TokeniserState$19.class deleted file mode 100644 index 63ca0ee..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$19.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$2.class b/libs/org/jsoup/parser/TokeniserState$2.class deleted file mode 100644 index 8ba3638..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$2.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$20.class b/libs/org/jsoup/parser/TokeniserState$20.class deleted file mode 100644 index 4d2ff36..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$20.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$21.class b/libs/org/jsoup/parser/TokeniserState$21.class deleted file mode 100644 index 8a9c6f5..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$21.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$22.class b/libs/org/jsoup/parser/TokeniserState$22.class deleted file mode 100644 index 45dd852..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$22.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$23.class b/libs/org/jsoup/parser/TokeniserState$23.class deleted file mode 100644 index 65c3f3c..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$23.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$24.class b/libs/org/jsoup/parser/TokeniserState$24.class deleted file mode 100644 index e283240..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$24.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$25.class b/libs/org/jsoup/parser/TokeniserState$25.class deleted file mode 100644 index 2380a21..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$25.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$26.class b/libs/org/jsoup/parser/TokeniserState$26.class deleted file mode 100644 index 2c3a229..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$26.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$27.class b/libs/org/jsoup/parser/TokeniserState$27.class deleted file mode 100644 index b2960da..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$27.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$28.class b/libs/org/jsoup/parser/TokeniserState$28.class deleted file mode 100644 index 89bc89d..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$28.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$29.class b/libs/org/jsoup/parser/TokeniserState$29.class deleted file mode 100644 index 5993d3b..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$29.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$3.class b/libs/org/jsoup/parser/TokeniserState$3.class deleted file mode 100644 index a979853..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$3.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$30.class b/libs/org/jsoup/parser/TokeniserState$30.class deleted file mode 100644 index d4dcada..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$30.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$31.class b/libs/org/jsoup/parser/TokeniserState$31.class deleted file mode 100644 index 36fe927..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$31.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$32.class b/libs/org/jsoup/parser/TokeniserState$32.class deleted file mode 100644 index db04f99..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$32.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$33.class b/libs/org/jsoup/parser/TokeniserState$33.class deleted file mode 100644 index df7bacc..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$33.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$34.class b/libs/org/jsoup/parser/TokeniserState$34.class deleted file mode 100644 index 5c10353..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$34.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$35.class b/libs/org/jsoup/parser/TokeniserState$35.class deleted file mode 100644 index 44864d8..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$35.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$36.class b/libs/org/jsoup/parser/TokeniserState$36.class deleted file mode 100644 index 27ebd2c..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$36.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$37.class b/libs/org/jsoup/parser/TokeniserState$37.class deleted file mode 100644 index cacd5b3..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$37.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$38.class b/libs/org/jsoup/parser/TokeniserState$38.class deleted file mode 100644 index 940f429..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$38.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$39.class b/libs/org/jsoup/parser/TokeniserState$39.class deleted file mode 100644 index 7e43219..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$39.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$4.class b/libs/org/jsoup/parser/TokeniserState$4.class deleted file mode 100644 index 7ee140d..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$4.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$40.class b/libs/org/jsoup/parser/TokeniserState$40.class deleted file mode 100644 index be4a814..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$40.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$41.class b/libs/org/jsoup/parser/TokeniserState$41.class deleted file mode 100644 index 2158083..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$41.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$42.class b/libs/org/jsoup/parser/TokeniserState$42.class deleted file mode 100644 index f6afdc5..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$42.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$43.class b/libs/org/jsoup/parser/TokeniserState$43.class deleted file mode 100644 index 9c7f253..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$43.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$44.class b/libs/org/jsoup/parser/TokeniserState$44.class deleted file mode 100644 index 2aab717..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$44.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$45.class b/libs/org/jsoup/parser/TokeniserState$45.class deleted file mode 100644 index 6cb3c1e..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$45.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$46.class b/libs/org/jsoup/parser/TokeniserState$46.class deleted file mode 100644 index b92db41..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$46.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$47.class b/libs/org/jsoup/parser/TokeniserState$47.class deleted file mode 100644 index 8aa3466..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$47.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$48.class b/libs/org/jsoup/parser/TokeniserState$48.class deleted file mode 100644 index b696219..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$48.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$49.class b/libs/org/jsoup/parser/TokeniserState$49.class deleted file mode 100644 index e7142fe..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$49.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$5.class b/libs/org/jsoup/parser/TokeniserState$5.class deleted file mode 100644 index 1c4930f..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$5.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$50.class b/libs/org/jsoup/parser/TokeniserState$50.class deleted file mode 100644 index 1d48152..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$50.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$51.class b/libs/org/jsoup/parser/TokeniserState$51.class deleted file mode 100644 index d8c7cad..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$51.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$52.class b/libs/org/jsoup/parser/TokeniserState$52.class deleted file mode 100644 index 7e917a8..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$52.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$53.class b/libs/org/jsoup/parser/TokeniserState$53.class deleted file mode 100644 index f09d165..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$53.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$54.class b/libs/org/jsoup/parser/TokeniserState$54.class deleted file mode 100644 index 45c0896..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$54.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$55.class b/libs/org/jsoup/parser/TokeniserState$55.class deleted file mode 100644 index 50eac0c..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$55.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$56.class b/libs/org/jsoup/parser/TokeniserState$56.class deleted file mode 100644 index ce3dac9..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$56.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$57.class b/libs/org/jsoup/parser/TokeniserState$57.class deleted file mode 100644 index 16952ae..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$57.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$58.class b/libs/org/jsoup/parser/TokeniserState$58.class deleted file mode 100644 index c94e838..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$58.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$59.class b/libs/org/jsoup/parser/TokeniserState$59.class deleted file mode 100644 index b3aedef..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$59.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$6.class b/libs/org/jsoup/parser/TokeniserState$6.class deleted file mode 100644 index eacbd98..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$6.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$60.class b/libs/org/jsoup/parser/TokeniserState$60.class deleted file mode 100644 index fa9faad..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$60.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$61.class b/libs/org/jsoup/parser/TokeniserState$61.class deleted file mode 100644 index be0714f..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$61.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$62.class b/libs/org/jsoup/parser/TokeniserState$62.class deleted file mode 100644 index 8b97716..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$62.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$63.class b/libs/org/jsoup/parser/TokeniserState$63.class deleted file mode 100644 index 2041a9f..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$63.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$64.class b/libs/org/jsoup/parser/TokeniserState$64.class deleted file mode 100644 index 340cffa..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$64.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$65.class b/libs/org/jsoup/parser/TokeniserState$65.class deleted file mode 100644 index 4a3ae6c..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$65.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$66.class b/libs/org/jsoup/parser/TokeniserState$66.class deleted file mode 100644 index c98464c..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$66.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$67.class b/libs/org/jsoup/parser/TokeniserState$67.class deleted file mode 100644 index 92f3d8c..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$67.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$7.class b/libs/org/jsoup/parser/TokeniserState$7.class deleted file mode 100644 index ee5d3c1..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$7.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$8.class b/libs/org/jsoup/parser/TokeniserState$8.class deleted file mode 100644 index a29c8e5..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$8.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState$9.class b/libs/org/jsoup/parser/TokeniserState$9.class deleted file mode 100644 index 02fb4b3..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState$9.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TokeniserState.class b/libs/org/jsoup/parser/TokeniserState.class deleted file mode 100644 index 51c4e9a..0000000 Binary files a/libs/org/jsoup/parser/TokeniserState.class and /dev/null differ diff --git a/libs/org/jsoup/parser/TreeBuilder.class b/libs/org/jsoup/parser/TreeBuilder.class deleted file mode 100644 index 09223d5..0000000 Binary files a/libs/org/jsoup/parser/TreeBuilder.class and /dev/null differ diff --git a/libs/org/jsoup/parser/XmlTreeBuilder$1.class b/libs/org/jsoup/parser/XmlTreeBuilder$1.class deleted file mode 100644 index c3e6f02..0000000 Binary files a/libs/org/jsoup/parser/XmlTreeBuilder$1.class and /dev/null differ diff --git a/libs/org/jsoup/parser/XmlTreeBuilder.class b/libs/org/jsoup/parser/XmlTreeBuilder.class deleted file mode 100644 index 8cdbd10..0000000 Binary files a/libs/org/jsoup/parser/XmlTreeBuilder.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Cleaner$1.class b/libs/org/jsoup/safety/Cleaner$1.class deleted file mode 100644 index c11f3e8..0000000 Binary files a/libs/org/jsoup/safety/Cleaner$1.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Cleaner$CleaningVisitor.class b/libs/org/jsoup/safety/Cleaner$CleaningVisitor.class deleted file mode 100644 index 0eb8635..0000000 Binary files a/libs/org/jsoup/safety/Cleaner$CleaningVisitor.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Cleaner$ElementMeta.class b/libs/org/jsoup/safety/Cleaner$ElementMeta.class deleted file mode 100644 index c9cc9a2..0000000 Binary files a/libs/org/jsoup/safety/Cleaner$ElementMeta.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Cleaner.class b/libs/org/jsoup/safety/Cleaner.class deleted file mode 100644 index 793c001..0000000 Binary files a/libs/org/jsoup/safety/Cleaner.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Whitelist$AttributeKey.class b/libs/org/jsoup/safety/Whitelist$AttributeKey.class deleted file mode 100644 index aae67a9..0000000 Binary files a/libs/org/jsoup/safety/Whitelist$AttributeKey.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Whitelist$AttributeValue.class b/libs/org/jsoup/safety/Whitelist$AttributeValue.class deleted file mode 100644 index 03c3e23..0000000 Binary files a/libs/org/jsoup/safety/Whitelist$AttributeValue.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Whitelist$Protocol.class b/libs/org/jsoup/safety/Whitelist$Protocol.class deleted file mode 100644 index c981c40..0000000 Binary files a/libs/org/jsoup/safety/Whitelist$Protocol.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Whitelist$TagName.class b/libs/org/jsoup/safety/Whitelist$TagName.class deleted file mode 100644 index 64db883..0000000 Binary files a/libs/org/jsoup/safety/Whitelist$TagName.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Whitelist$TypedValue.class b/libs/org/jsoup/safety/Whitelist$TypedValue.class deleted file mode 100644 index 40f4e70..0000000 Binary files a/libs/org/jsoup/safety/Whitelist$TypedValue.class and /dev/null differ diff --git a/libs/org/jsoup/safety/Whitelist.class b/libs/org/jsoup/safety/Whitelist.class deleted file mode 100644 index 42dd349..0000000 Binary files a/libs/org/jsoup/safety/Whitelist.class and /dev/null differ diff --git a/libs/org/jsoup/select/Collector$Accumulator.class b/libs/org/jsoup/select/Collector$Accumulator.class deleted file mode 100644 index 666c692..0000000 Binary files a/libs/org/jsoup/select/Collector$Accumulator.class and /dev/null differ diff --git a/libs/org/jsoup/select/Collector.class b/libs/org/jsoup/select/Collector.class deleted file mode 100644 index d297588..0000000 Binary files a/libs/org/jsoup/select/Collector.class and /dev/null differ diff --git a/libs/org/jsoup/select/CombiningEvaluator$And.class b/libs/org/jsoup/select/CombiningEvaluator$And.class deleted file mode 100644 index b74e17a..0000000 Binary files a/libs/org/jsoup/select/CombiningEvaluator$And.class and /dev/null differ diff --git a/libs/org/jsoup/select/CombiningEvaluator$Or.class b/libs/org/jsoup/select/CombiningEvaluator$Or.class deleted file mode 100644 index 9c7462e..0000000 Binary files a/libs/org/jsoup/select/CombiningEvaluator$Or.class and /dev/null differ diff --git a/libs/org/jsoup/select/CombiningEvaluator.class b/libs/org/jsoup/select/CombiningEvaluator.class deleted file mode 100644 index a4d4afc..0000000 Binary files a/libs/org/jsoup/select/CombiningEvaluator.class and /dev/null differ diff --git a/libs/org/jsoup/select/Elements.class b/libs/org/jsoup/select/Elements.class deleted file mode 100644 index 079d10b..0000000 Binary files a/libs/org/jsoup/select/Elements.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AllElements.class b/libs/org/jsoup/select/Evaluator$AllElements.class deleted file mode 100644 index 1d6370a..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AllElements.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$Attribute.class b/libs/org/jsoup/select/Evaluator$Attribute.class deleted file mode 100644 index 935c07b..0000000 Binary files a/libs/org/jsoup/select/Evaluator$Attribute.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeKeyPair.class b/libs/org/jsoup/select/Evaluator$AttributeKeyPair.class deleted file mode 100644 index 4e3b971..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeKeyPair.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeStarting.class b/libs/org/jsoup/select/Evaluator$AttributeStarting.class deleted file mode 100644 index fa4dfc3..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeStarting.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeWithValue.class b/libs/org/jsoup/select/Evaluator$AttributeWithValue.class deleted file mode 100644 index 756346d..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeWithValue.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeWithValueContaining.class b/libs/org/jsoup/select/Evaluator$AttributeWithValueContaining.class deleted file mode 100644 index 64c707b..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeWithValueContaining.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeWithValueEnding.class b/libs/org/jsoup/select/Evaluator$AttributeWithValueEnding.class deleted file mode 100644 index 8aed486..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeWithValueEnding.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeWithValueMatching.class b/libs/org/jsoup/select/Evaluator$AttributeWithValueMatching.class deleted file mode 100644 index 9bfddd5..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeWithValueMatching.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeWithValueNot.class b/libs/org/jsoup/select/Evaluator$AttributeWithValueNot.class deleted file mode 100644 index faee626..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeWithValueNot.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$AttributeWithValueStarting.class b/libs/org/jsoup/select/Evaluator$AttributeWithValueStarting.class deleted file mode 100644 index 96521b6..0000000 Binary files a/libs/org/jsoup/select/Evaluator$AttributeWithValueStarting.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$Class.class b/libs/org/jsoup/select/Evaluator$Class.class deleted file mode 100644 index 62b08df..0000000 Binary files a/libs/org/jsoup/select/Evaluator$Class.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$ContainsOwnText.class b/libs/org/jsoup/select/Evaluator$ContainsOwnText.class deleted file mode 100644 index ad59c42..0000000 Binary files a/libs/org/jsoup/select/Evaluator$ContainsOwnText.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$ContainsText.class b/libs/org/jsoup/select/Evaluator$ContainsText.class deleted file mode 100644 index 0e55ea1..0000000 Binary files a/libs/org/jsoup/select/Evaluator$ContainsText.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$CssNthEvaluator.class b/libs/org/jsoup/select/Evaluator$CssNthEvaluator.class deleted file mode 100644 index 6cc1fb5..0000000 Binary files a/libs/org/jsoup/select/Evaluator$CssNthEvaluator.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$Id.class b/libs/org/jsoup/select/Evaluator$Id.class deleted file mode 100644 index f8c5fcc..0000000 Binary files a/libs/org/jsoup/select/Evaluator$Id.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IndexEquals.class b/libs/org/jsoup/select/Evaluator$IndexEquals.class deleted file mode 100644 index 7b5bdd7..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IndexEquals.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IndexEvaluator.class b/libs/org/jsoup/select/Evaluator$IndexEvaluator.class deleted file mode 100644 index e6f9852..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IndexEvaluator.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IndexGreaterThan.class b/libs/org/jsoup/select/Evaluator$IndexGreaterThan.class deleted file mode 100644 index 52fdb25..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IndexGreaterThan.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IndexLessThan.class b/libs/org/jsoup/select/Evaluator$IndexLessThan.class deleted file mode 100644 index ceefd4c..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IndexLessThan.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsEmpty.class b/libs/org/jsoup/select/Evaluator$IsEmpty.class deleted file mode 100644 index 5f053f0..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsEmpty.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsFirstChild.class b/libs/org/jsoup/select/Evaluator$IsFirstChild.class deleted file mode 100644 index 285478a..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsFirstChild.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsFirstOfType.class b/libs/org/jsoup/select/Evaluator$IsFirstOfType.class deleted file mode 100644 index f12a903..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsFirstOfType.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsLastChild.class b/libs/org/jsoup/select/Evaluator$IsLastChild.class deleted file mode 100644 index 6eb29ac..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsLastChild.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsLastOfType.class b/libs/org/jsoup/select/Evaluator$IsLastOfType.class deleted file mode 100644 index e1ed2d2..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsLastOfType.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsNthChild.class b/libs/org/jsoup/select/Evaluator$IsNthChild.class deleted file mode 100644 index b7ae631..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsNthChild.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsNthLastChild.class b/libs/org/jsoup/select/Evaluator$IsNthLastChild.class deleted file mode 100644 index 10f60be..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsNthLastChild.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsNthLastOfType.class b/libs/org/jsoup/select/Evaluator$IsNthLastOfType.class deleted file mode 100644 index b5aa5ff..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsNthLastOfType.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsNthOfType.class b/libs/org/jsoup/select/Evaluator$IsNthOfType.class deleted file mode 100644 index 882a806..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsNthOfType.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsOnlyChild.class b/libs/org/jsoup/select/Evaluator$IsOnlyChild.class deleted file mode 100644 index ca4f4a9..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsOnlyChild.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsOnlyOfType.class b/libs/org/jsoup/select/Evaluator$IsOnlyOfType.class deleted file mode 100644 index b998d34..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsOnlyOfType.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$IsRoot.class b/libs/org/jsoup/select/Evaluator$IsRoot.class deleted file mode 100644 index a04fa2b..0000000 Binary files a/libs/org/jsoup/select/Evaluator$IsRoot.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$Matches.class b/libs/org/jsoup/select/Evaluator$Matches.class deleted file mode 100644 index 8936c4d..0000000 Binary files a/libs/org/jsoup/select/Evaluator$Matches.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$MatchesOwn.class b/libs/org/jsoup/select/Evaluator$MatchesOwn.class deleted file mode 100644 index 401a1fc..0000000 Binary files a/libs/org/jsoup/select/Evaluator$MatchesOwn.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator$Tag.class b/libs/org/jsoup/select/Evaluator$Tag.class deleted file mode 100644 index 8a54ed4..0000000 Binary files a/libs/org/jsoup/select/Evaluator$Tag.class and /dev/null differ diff --git a/libs/org/jsoup/select/Evaluator.class b/libs/org/jsoup/select/Evaluator.class deleted file mode 100644 index 810c3bb..0000000 Binary files a/libs/org/jsoup/select/Evaluator.class and /dev/null differ diff --git a/libs/org/jsoup/select/NodeTraversor.class b/libs/org/jsoup/select/NodeTraversor.class deleted file mode 100644 index c4a5fc0..0000000 Binary files a/libs/org/jsoup/select/NodeTraversor.class and /dev/null differ diff --git a/libs/org/jsoup/select/NodeVisitor.class b/libs/org/jsoup/select/NodeVisitor.class deleted file mode 100644 index de1433a..0000000 Binary files a/libs/org/jsoup/select/NodeVisitor.class and /dev/null differ diff --git a/libs/org/jsoup/select/QueryParser.class b/libs/org/jsoup/select/QueryParser.class deleted file mode 100644 index 17f09ea..0000000 Binary files a/libs/org/jsoup/select/QueryParser.class and /dev/null differ diff --git a/libs/org/jsoup/select/Selector$SelectorParseException.class b/libs/org/jsoup/select/Selector$SelectorParseException.class deleted file mode 100644 index c465525..0000000 Binary files a/libs/org/jsoup/select/Selector$SelectorParseException.class and /dev/null differ diff --git a/libs/org/jsoup/select/Selector.class b/libs/org/jsoup/select/Selector.class deleted file mode 100644 index eae49eb..0000000 Binary files a/libs/org/jsoup/select/Selector.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$Has.class b/libs/org/jsoup/select/StructuralEvaluator$Has.class deleted file mode 100644 index e0b3f78..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$Has.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$ImmediateParent.class b/libs/org/jsoup/select/StructuralEvaluator$ImmediateParent.class deleted file mode 100644 index 49e2963..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$ImmediateParent.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$ImmediatePreviousSibling.class b/libs/org/jsoup/select/StructuralEvaluator$ImmediatePreviousSibling.class deleted file mode 100644 index 09e0e67..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$ImmediatePreviousSibling.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$Not.class b/libs/org/jsoup/select/StructuralEvaluator$Not.class deleted file mode 100644 index 1890df7..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$Not.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$Parent.class b/libs/org/jsoup/select/StructuralEvaluator$Parent.class deleted file mode 100644 index 7658e7c..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$Parent.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$PreviousSibling.class b/libs/org/jsoup/select/StructuralEvaluator$PreviousSibling.class deleted file mode 100644 index 26a702c..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$PreviousSibling.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator$Root.class b/libs/org/jsoup/select/StructuralEvaluator$Root.class deleted file mode 100644 index 2522dfe..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator$Root.class and /dev/null differ diff --git a/libs/org/jsoup/select/StructuralEvaluator.class b/libs/org/jsoup/select/StructuralEvaluator.class deleted file mode 100644 index 6aa52bf..0000000 Binary files a/libs/org/jsoup/select/StructuralEvaluator.class and /dev/null differ diff --git a/src/de/epiceric/shopchest/Commands.java b/src/de/epiceric/shopchest/Commands.java index 74eb8a0..a051284 100644 --- a/src/de/epiceric/shopchest/Commands.java +++ b/src/de/epiceric/shopchest/Commands.java @@ -1,8 +1,11 @@ package de.epiceric.shopchest; import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.config.Regex; import de.epiceric.shopchest.interfaces.JsonBuilder; import de.epiceric.shopchest.interfaces.jsonbuilder.*; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.utils.ClickType; import de.epiceric.shopchest.utils.ClickType.EnumClickType; @@ -28,12 +31,12 @@ import java.util.List; public class Commands extends BukkitCommand { private ShopChest plugin; - - private Permission perm = ShopChest.perm; + private Permission perm; public Commands(ShopChest plugin, String name, String description, String usageMessage, List aliases) { super(name, description, usageMessage, aliases); this.plugin = plugin; + this.perm = plugin.getPermission(); } public static void registerCommand(Command command, ShopChest plugin) throws ReflectiveOperationException { @@ -66,7 +69,7 @@ public class Commands extends BukkitCommand { create(args, ShopType.ADMIN, p); return true; } else { - p.sendMessage(Config.noPermission_createAdmin()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_CREATE_ADMIN)); return true; } } else { @@ -78,7 +81,7 @@ public class Commands extends BukkitCommand { return true; } } else { - p.sendMessage(Config.noPermission_create()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_CREATE)); return true; } } else if (args[0].equalsIgnoreCase("remove")) { @@ -92,7 +95,7 @@ public class Commands extends BukkitCommand { reload(p); return true; } else { - p.sendMessage(Config.noPermission_reload()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_RELOAD)); return true; } } else if (args[0].equalsIgnoreCase("update")) { @@ -100,15 +103,18 @@ public class Commands extends BukkitCommand { checkUpdates(p); return true; } else { - p.sendMessage(Config.noPermission_update()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_UPDATE)); return true; } } else if (args[0].equalsIgnoreCase("limits")) { if (perm.has(p, "shopchest.limits")) { - p.sendMessage(Config.occupied_shop_slots(ShopUtils.getShopLimit(p), ShopUtils.getShopAmount(p))); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.OCCUPIED_SHOP_SLOTS, + new LocalizedMessage.ReplacedRegex(Regex.LIMIT, String.valueOf(ShopUtils.getShopLimit(p))), + new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(ShopUtils.getShopAmount(p))))); + return true; } else { - p.sendMessage(Config.noPermission_limits()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_LIMITS)); } } else { sendBasicHelpMessage(p); @@ -126,35 +132,35 @@ public class Commands extends BukkitCommand { } private void checkUpdates(Player player) { - player.sendMessage(Config.checking_update()); + player.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CHECKING)); UpdateChecker uc = new UpdateChecker(ShopChest.getInstance(), ShopChest.getInstance().getDescription().getWebsite()); UpdateCheckerResult result = uc.updateNeeded(); if (result == UpdateCheckerResult.TRUE) { - ShopChest.latestVersion = uc.getVersion(); - ShopChest.downloadLink = uc.getLink(); - ShopChest.isUpdateNeeded = true; + plugin.setLatestVersion(uc.getVersion()); + plugin.setDownloadLink(uc.getLink()); + plugin.setUpdateNeeded(true); JsonBuilder jb; - switch (Utils.getVersion(plugin.getServer())) { + switch (Utils.getServerVersion()) { case "v1_8_R1": - jb = new JsonBuilder_1_8_R1(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_8_R1(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, uc.getVersion()))); break; case "v1_8_R2": - jb = new JsonBuilder_1_8_R2(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_8_R2(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, uc.getVersion()))); break; case "v1_8_R3": - jb = new JsonBuilder_1_8_R3(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_8_R3(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, uc.getVersion()))); break; case "v1_9_R1": - jb = new JsonBuilder_1_9_R1(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_9_R1(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, uc.getVersion()))); break; case "v1_9_R2": - jb = new JsonBuilder_1_9_R2(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_9_R2(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, uc.getVersion()))); break; case "v1_10_R1": - jb = new JsonBuilder_1_10_R1(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_10_R1(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, uc.getVersion()))); break; default: return; @@ -162,21 +168,21 @@ public class Commands extends BukkitCommand { jb.sendJson(player); } else if (result == UpdateCheckerResult.FALSE) { - ShopChest.latestVersion = ""; - ShopChest.downloadLink = ""; - ShopChest.isUpdateNeeded = false; - player.sendMessage(Config.no_new_update()); + plugin.setLatestVersion(""); + plugin.setDownloadLink(""); + plugin.setUpdateNeeded(false); + player.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_NO_UPDATE)); } else { - ShopChest.latestVersion = ""; - ShopChest.downloadLink = ""; - ShopChest.isUpdateNeeded = false; - player.sendMessage(Config.update_check_error()); + plugin.setLatestVersion(""); + plugin.setDownloadLink(""); + plugin.setUpdateNeeded(false); + player.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_ERROR)); } if (perm.has(player, "shopchest.broadcast")) { - if (Config.enable_broadcast()) ShopChest.broadcast = uc.getBroadcast(); - if (ShopChest.broadcast != null) { - for (String message : ShopChest.broadcast) { + if (Config.enable_broadcast) plugin.setBroadcast(uc.getBroadcast()); + if (plugin.getBroadcast() != null) { + for (String message : plugin.getBroadcast()) { player.sendMessage(message); } } @@ -185,7 +191,7 @@ public class Commands extends BukkitCommand { } private void reload(Player player) { - ShopUtils.reloadShops(player); + player.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.RELOADED_SHOPS, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(ShopUtils.reloadShops())))); } private void create(String[] args, ShopType shopType, Player p) { @@ -196,7 +202,7 @@ public class Commands extends BukkitCommand { if (limit != -1) { if (ShopUtils.getShopAmount(p) >= limit) { - p.sendMessage(Config.limit_reached(limit)); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_LIMIT_REACHED, new LocalizedMessage.ReplacedRegex(Regex.LIMIT, String.valueOf(limit)))); return; } } @@ -206,23 +212,23 @@ public class Commands extends BukkitCommand { buyPrice = Double.parseDouble(args[2]); sellPrice = Double.parseDouble(args[3]); } catch (NumberFormatException e) { - p.sendMessage(Config.amount_and_price_not_number()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.AMOUNT_PRICE_NOT_NUMBER)); return; } boolean buyEnabled = !(buyPrice <= 0), sellEnabled = !(sellPrice <= 0); if (!buyEnabled && !sellEnabled) { - p.sendMessage(Config.buy_and_sell_disabled()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_SELL_DISABLED)); return; } if (p.getItemInHand().getType().equals(Material.AIR)) { - p.sendMessage(Config.no_item_in_hand()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_ITEM_IN_HAND)); return; } - for (String item : Config.blacklist()) { + for (String item : Config.blacklist) { ItemStack itemStack; @@ -233,12 +239,12 @@ public class Commands extends BukkitCommand { } if (itemStack.getType().equals(p.getItemInHand().getType()) && itemStack.getDurability() == p.getItemInHand().getDurability()) { - p.sendMessage(Config.cannot_sell_item()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CANNOT_SELL_ITEM)); return; } } - for (String key : Config.minimum_prices()) { + for (String key : Config.minimum_prices) { ItemStack itemStack; double price = plugin.getConfig().getDouble("minimum-prices." + key); @@ -252,14 +258,14 @@ public class Commands extends BukkitCommand { if (itemStack.getType().equals(p.getItemInHand().getType()) && itemStack.getDurability() == p.getItemInHand().getDurability()) { if (buyEnabled) { if ((buyPrice <= amount * price) && (buyPrice > 0)) { - p.sendMessage(Config.buyPrice_too_low(amount * price)); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_PRICE_TOO_LOW, new LocalizedMessage.ReplacedRegex(Regex.MIN_PRICE, String.valueOf(amount * price)))); return; } } if (sellEnabled) { if ((sellPrice <= amount * price) && (sellPrice > 0)) { - p.sendMessage(Config.sellPrice_too_low(amount * price)); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SELL_PRICE_TOO_LOW, new LocalizedMessage.ReplacedRegex(Regex.MIN_PRICE, String.valueOf(amount * price)))); return; } } @@ -267,9 +273,9 @@ public class Commands extends BukkitCommand { } if (sellEnabled && buyEnabled) { - if (Config.buy_greater_or_equal_sell()) { + if (Config.buy_greater_or_equal_sell) { if (buyPrice < sellPrice) { - p.sendMessage(Config.buyPrice_too_low(sellPrice)); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_PRICE_TOO_LOW, new LocalizedMessage.ReplacedRegex(Regex.MIN_PRICE, String.valueOf(sellPrice)))); return; } } @@ -280,47 +286,47 @@ public class Commands extends BukkitCommand { if (Enchantment.DURABILITY.canEnchantItem(itemStack)) { if (itemStack.getDurability() > 0) { - p.sendMessage(Config.cannot_sell_broken_item()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CANNOT_SELL_BROKEN_ITEM)); return; } } - double creationPrice = (shopType == ShopType.NORMAL) ? Config.shop_creation_price_normal() : Config.shop_creation_price_admin(); + double creationPrice = (shopType == ShopType.NORMAL) ? Config.shop_creation_price_normal : Config.shop_creation_price_admin; if (creationPrice > 0) { - if (ShopChest.econ.getBalance(p) >= creationPrice) { - EconomyResponse r = ShopChest.econ.withdrawPlayer(p, creationPrice); + if (plugin.getEconomy().getBalance(p) >= creationPrice) { + EconomyResponse r = plugin.getEconomy().withdrawPlayer(p, creationPrice); if (!r.transactionSuccess()) { - p.sendMessage(Config.error_occurred(r.errorMessage)); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, r.errorMessage))); return; } } else { - p.sendMessage(Config.shop_create_not_enough_money(creationPrice)); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_CREATE_NOT_ENOUGH_MONEY, new LocalizedMessage.ReplacedRegex(Regex.CREATION_PRICE, String.valueOf(creationPrice)))); return; } } ClickType.addPlayerClickType(p, new ClickType(EnumClickType.CREATE, itemStack, buyPrice, sellPrice, shopType)); - p.sendMessage(Config.click_chest_to_create()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_CREATE)); } private void remove(Player p) { - p.sendMessage(Config.click_chest_to_remove()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_REMOVE)); ClickType.addPlayerClickType(p, new ClickType(EnumClickType.REMOVE)); } private void info(Player p) { - p.sendMessage(Config.click_chest_for_info()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_INFO)); ClickType.addPlayerClickType(p, new ClickType(EnumClickType.INFO)); } private void sendBasicHelpMessage(Player player) { - player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " create [normal|admin] - " + Config.cmdDesc_create()); - player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " remove - " + Config.cmdDesc_remove()); - player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " info - " + Config.cmdDesc_info()); - player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " reload - " + Config.cmdDesc_reload()); - player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " update - " + Config.cmdDesc_update()); - player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " limits - " + Config.cmdDesc_limits()); + player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " create [normal|admin] - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_CREATE)); + player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " remove - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_REMOVE)); + player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " info - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_INFO)); + player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " reload - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_RELOAD)); + player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " update - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_UPDATE)); + player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " limits - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_LIMITS)); } } diff --git a/src/de/epiceric/shopchest/ShopChest.java b/src/de/epiceric/shopchest/ShopChest.java index 784ec05..eb4b7e7 100644 --- a/src/de/epiceric/shopchest/ShopChest.java +++ b/src/de/epiceric/shopchest/ShopChest.java @@ -1,9 +1,13 @@ package de.epiceric.shopchest; import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.config.LanguageConfiguration; +import de.epiceric.shopchest.config.Regex; import de.epiceric.shopchest.event.*; import de.epiceric.shopchest.interfaces.JsonBuilder; import de.epiceric.shopchest.interfaces.jsonbuilder.*; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.sql.Database; @@ -19,31 +23,30 @@ import de.epiceric.shopchest.utils.Utils; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.World; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Item; +import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.entity.Player; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; +import java.io.BufferedReader; +import java.io.File; import java.io.IOException; +import java.io.Reader; import java.util.ArrayList; -import java.util.logging.Logger; public class ShopChest extends JavaPlugin { - public static Logger logger; - public static Economy econ = null; - public static Permission perm = null; - public static boolean lockette = false; - public static boolean lwc = false; - public static Database database; - public static boolean isUpdateNeeded = false; - public static String latestVersion = ""; - public static String downloadLink = ""; - public static String[] broadcast = null; private static ShopChest instance; + private Economy econ = null; + private Permission perm = null; + private boolean lockette = false; + private boolean lwc = false; + private Database database; + private boolean isUpdateNeeded = false; + private String latestVersion = ""; + private String downloadLink = ""; + private String[] broadcast = null; + private LanguageConfiguration langConfig; public static ShopChest getInstance() { return instance; @@ -64,24 +67,90 @@ public class ShopChest extends JavaPlugin { return perm != null; } + private void initLanguageConfig() { + langConfig = new LanguageConfiguration(); + File langFolder = new File(getDataFolder(), "lang"); + + if (!(new File(langFolder, "en_US.lang")).exists()) + saveResource("lang/en_US.lang", false); + + if (!(new File(langFolder, "de_DE.lang")).exists()) + saveResource("lang/de_DE.lang", false); + + File langConfigFile = new File(langFolder, Config.language_file + ".lang"); + File langDefaultFile = new File(langFolder, "en_US.lang"); + + if (!langConfigFile.exists()) { + if (!langDefaultFile.exists()) { + try { + Reader r = getTextResource("lang/" + langConfigFile.getName()); + + if (r == null) { + r = getTextResource("lang/en_US.lang"); + getLogger().info("Using locale \"en_US\" (Streamed from jar file)"); + } else { + getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\" (Streamed from jar file)"); + } + + BufferedReader br = new BufferedReader(r); + + StringBuilder sb = new StringBuilder(); + String line = br.readLine(); + + while (line != null) { + sb.append(line); + sb.append("\n"); + line = br.readLine(); + } + + langConfig.loadFromString(sb.toString()); + } catch (IOException | InvalidConfigurationException ex) { + ex.printStackTrace(); + getLogger().warning("Using default language values"); + } + } else { + try { + langConfig.load(langDefaultFile); + getLogger().info("Using locale \"en_US\""); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + getLogger().warning("Using default language values"); + } + } + } else { + try { + getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\""); + langConfig.load(langConfigFile); + } catch (IOException | InvalidConfigurationException ex) { + ex.printStackTrace(); + getLogger().warning("Using default language values"); + } + } + } + @Override public void onEnable() { - logger = getLogger(); instance = this; if (getServer().getPluginManager().getPlugin("Vault") == null) { - logger.severe("Could not find plugin 'Vault'!"); + getLogger().severe("Could not find plugin 'Vault'!"); getServer().getPluginManager().disablePlugin(this); return; } if (!setupEconomy()) { - logger.severe("Could not find any Vault dependency!"); + getLogger().severe("Could not find any Vault economy dependency!"); getServer().getPluginManager().disablePlugin(this); return; } - switch (Utils.getVersion(getServer())) { + if (!setupPermissions()) { + getLogger().severe("Could not find any Vault permission dependency!"); + getServer().getPluginManager().disablePlugin(this); + return; + } + + switch (Utils.getServerVersion()) { case "v1_8_R1": case "v1_8_R2": case "v1_8_R3": @@ -90,11 +159,17 @@ public class ShopChest extends JavaPlugin { case "v1_10_R1": break; default: - logger.severe("Incompatible Server Version: " + Utils.getVersion(getServer()) + "!"); + getLogger().severe("Incompatible Server Version: " + Utils.getServerVersion() + "!"); getServer().getPluginManager().disablePlugin(this); return; } + initLanguageConfig(); + LanguageUtils.load(); + saveResource("item_names.txt", true); + reloadConfig(); + saveDefaultConfig(); + try { Metrics metrics = new Metrics(this); Graph shopType = metrics.createGraph("Shop Type"); @@ -133,7 +208,7 @@ public class ShopChest extends JavaPlugin { @Override public int getValue() { - if (Config.database_type() == Database.DatabaseType.SQLite) + if (Config.database_type == Database.DatabaseType.SQLite) return 1; return 0; @@ -145,7 +220,7 @@ public class ShopChest extends JavaPlugin { @Override public int getValue() { - if (Config.database_type() == Database.DatabaseType.MySQL) + if (Config.database_type == Database.DatabaseType.MySQL) return 1; return 0; @@ -155,59 +230,53 @@ public class ShopChest extends JavaPlugin { metrics.start(); } catch (IOException e) { - logger.severe("Could not submit stats."); + getLogger().severe("Could not submit stats."); } - saveResource("item_names.txt", true); - reloadConfig(); - saveDefaultConfig(); - - if (Config.database_type() == Database.DatabaseType.SQLite){ - logger.info("Using SQLite"); + if (Config.database_type == Database.DatabaseType.SQLite) { + getLogger().info("Using SQLite"); database = new SQLite(this); } else { - logger.info("Using MySQL"); + getLogger().info("Using MySQL"); database = new MySQL(this); } lockette = getServer().getPluginManager().getPlugin("Lockette") != null; lwc = getServer().getPluginManager().getPlugin("LWC") != null; - setupPermissions(); - UpdateChecker uc = new UpdateChecker(this, getDescription().getWebsite()); UpdateCheckerResult result = uc.updateNeeded(); - if (Config.enable_broadcast()) broadcast = uc.getBroadcast(); + if (Config.enable_broadcast) broadcast = uc.getBroadcast(); - Bukkit.getConsoleSender().sendMessage("[ShopChest] " + Config.checking_update()); + Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CHECKING)); if (result == UpdateCheckerResult.TRUE) { latestVersion = uc.getVersion(); downloadLink = uc.getLink(); isUpdateNeeded = true; - Bukkit.getConsoleSender().sendMessage("[ShopChest] " + ChatColor.translateAlternateColorCodes('&', Config.update_available(latestVersion))); + Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); for (Player p : getServer().getOnlinePlayers()) { if (p.isOp() || perm.has(p, "shopchest.notification.update")) { JsonBuilder jb; - switch (Utils.getVersion(getServer())) { + switch (Utils.getServerVersion()) { case "v1_8_R1": - jb = new JsonBuilder_1_8_R1(Config.update_available(latestVersion)); + jb = new JsonBuilder_1_8_R1(this, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); break; case "v1_8_R2": - jb = new JsonBuilder_1_8_R2(Config.update_available(latestVersion)); + jb = new JsonBuilder_1_8_R2(this, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); break; case "v1_8_R3": - jb = new JsonBuilder_1_8_R3(Config.update_available(latestVersion)); + jb = new JsonBuilder_1_8_R3(this, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); break; case "v1_9_R1": - jb = new JsonBuilder_1_9_R1(Config.update_available(latestVersion)); + jb = new JsonBuilder_1_9_R1(this, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); break; case "v1_9_R2": - jb = new JsonBuilder_1_9_R2(Config.update_available(latestVersion)); + jb = new JsonBuilder_1_9_R2(this, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); break; case "v1_10_R1": - jb = new JsonBuilder_1_10_R1(Config.update_available(latestVersion)); + jb = new JsonBuilder_1_10_R1(this, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion))); break; default: return; @@ -220,12 +289,12 @@ public class ShopChest extends JavaPlugin { latestVersion = ""; downloadLink = ""; isUpdateNeeded = false; - Bukkit.getConsoleSender().sendMessage("[ShopChest] " + Config.no_new_update()); + Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_NO_UPDATE)); } else { latestVersion = ""; downloadLink = ""; isUpdateNeeded = false; - Bukkit.getConsoleSender().sendMessage("[ShopChest] " + Config.update_check_error()); + Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_ERROR)); } for (Player p : getServer().getOnlinePlayers()) { @@ -245,7 +314,7 @@ public class ShopChest extends JavaPlugin { } try { - Commands.registerCommand(new Commands(this, Config.main_command_name(), "Manage Shops.", "", new ArrayList()), this); + Commands.registerCommand(new Commands(this, Config.main_command_name, "Manage Shops.", "", new ArrayList()), this); } catch (Exception e) { e.printStackTrace(); } @@ -255,7 +324,7 @@ public class ShopChest extends JavaPlugin { getServer().getPluginManager().registerEvents(new UpdateHolograms(), this); getServer().getPluginManager().registerEvents(new RegenerateShopItem(), this); getServer().getPluginManager().registerEvents(new InteractShop(this), this); - getServer().getPluginManager().registerEvents(new NotifyUpdate(), this); + getServer().getPluginManager().registerEvents(new NotifyUpdate(this), this); getServer().getPluginManager().registerEvents(new ProtectChest(), this); getServer().getPluginManager().registerEvents(new ItemCustomNameListener(), this); @@ -263,7 +332,7 @@ public class ShopChest extends JavaPlugin { getServer().getPluginManager().registerEvents(new RegenerateShopItemAfterRemove(), this); if (getServer().getPluginManager().getPlugin("LWC") != null) - new LWCMagnetListener().initializeListener(); + new LWCMagnetListener(this).initializeListener(); } @Override @@ -271,35 +340,66 @@ public class ShopChest extends JavaPlugin { for (Shop shop : ShopUtils.getShops()) { ShopUtils.removeShop(shop, false); } - - for (World world : Bukkit.getWorlds()) { - for (Entity entity : world.getEntities()) { - if (entity instanceof Item) { - Item item = (Item) entity; - if (item.hasMetadata("shopItem")) { - item.remove(); - } - } - } - } } private void initializeShops() { - int count = 0; - - for (int id = 1; id < database.getHighestID() + 1; id++) { - try { - Shop shop = (Shop) database.get(id, Database.ShopInfo.SHOP); - ShopUtils.addShop(shop, false); - } catch (NullPointerException e) { - continue; - } - - count++; - } - - logger.info("Initialized " + String.valueOf(count) + " Shops"); + int count = ShopUtils.reloadShops(); + getLogger().info("Initialized " + String.valueOf(count) + " Shops"); } + public LanguageConfiguration getLanguageConfig() { + return langConfig; + } + public Economy getEconomy() { + return econ; + } + + public Permission getPermission() { + return perm; + } + + public Database getShopDatabase() { + return database; + } + + public boolean hasLWC() { + return lwc; + } + + public boolean hasLockette() { + return lockette; + } + + public boolean isUpdateNeeded() { + return isUpdateNeeded; + } + + public void setUpdateNeeded(boolean isUpdateNeeded) { + this.isUpdateNeeded = isUpdateNeeded; + } + + public String getLatestVersion() { + return latestVersion; + } + + public void setLatestVersion(String latestVersion) { + this.latestVersion = latestVersion; + } + + public String getDownloadLink() { + return downloadLink; + } + + public void setDownloadLink(String downloadLink) { + this.downloadLink = downloadLink; + } + + public String[] getBroadcast() { + return broadcast; + } + + public void setBroadcast(String[] broadcast) { + this.broadcast = broadcast; + } } diff --git a/src/de/epiceric/shopchest/config/Config.java b/src/de/epiceric/shopchest/config/Config.java index dd1beb2..53bed83 100644 --- a/src/de/epiceric/shopchest/config/Config.java +++ b/src/de/epiceric/shopchest/config/Config.java @@ -12,371 +12,44 @@ public class Config { private static ShopChest plugin = ShopChest.getInstance(); - public static String database_mysql_host() { - return plugin.getConfig().getString("database.mysql.hostname"); - } + public static String database_mysql_host = plugin.getConfig().getString("database.mysql.hostname"); - public static int database_mysql_port() { - return plugin.getConfig().getInt("database.mysql.port"); - } + public static int database_mysql_port = plugin.getConfig().getInt("database.mysql.port"); - public static String database_mysql_database() { - return plugin.getConfig().getString("database.mysql.database"); - } + public static String database_mysql_database = plugin.getConfig().getString("database.mysql.database"); - public static String database_mysql_username() { - return plugin.getConfig().getString("database.mysql.username"); - } + public static String database_mysql_username = plugin.getConfig().getString("database.mysql.username"); - public static String database_mysql_password() { - return plugin.getConfig().getString("database.mysql.password"); - } + public static String database_mysql_password = plugin.getConfig().getString("database.mysql.password"); - public static Database.DatabaseType database_type() { - return Database.DatabaseType.valueOf(plugin.getConfig().getString("database.type")); - } + public static Database.DatabaseType database_type = Database.DatabaseType.valueOf(plugin.getConfig().getString("database.type")); - public static Set minimum_prices() { - return (plugin.getConfig().getConfigurationSection("minimum-prices") == null) ? new HashSet() : plugin.getConfig().getConfigurationSection("minimum-prices").getKeys(true); - } + public static Set minimum_prices = (plugin.getConfig().getConfigurationSection("minimum-prices") == null) ? new HashSet() : plugin.getConfig().getConfigurationSection("minimum-prices").getKeys(true); - public static Set shopLimits_group() { - return (plugin.getConfig().getConfigurationSection("shop-limits.group") == null) ? new HashSet() : plugin.getConfig().getConfigurationSection("shop-limits.group").getKeys(true); - } + public static Set shopLimits_group = (plugin.getConfig().getConfigurationSection("shop-limits.group") == null) ? new HashSet() : plugin.getConfig().getConfigurationSection("shop-limits.group").getKeys(true); - public static Set shopLimits_player() { - return (plugin.getConfig().getConfigurationSection("shop-limits.player") == null) ? new HashSet() : plugin.getConfig().getConfigurationSection("shop-limits.player").getKeys(true); - } + public static Set shopLimits_player = (plugin.getConfig().getConfigurationSection("shop-limits.player") == null) ? new HashSet() : plugin.getConfig().getConfigurationSection("shop-limits.player").getKeys(true); - public static List blacklist() { - return (plugin.getConfig().getStringList("blacklist") == null) ? new ArrayList() : plugin.getConfig().getStringList("blacklist"); - } + public static List blacklist = (plugin.getConfig().getStringList("blacklist") == null) ? new ArrayList() : plugin.getConfig().getStringList("blacklist"); - public static boolean buy_greater_or_equal_sell() { - return plugin.getConfig().getBoolean("buy-greater-or-equal-sell"); - } + public static boolean buy_greater_or_equal_sell = plugin.getConfig().getBoolean("buy-greater-or-equal-sell"); - public static boolean hopper_protection() { - return plugin.getConfig().getBoolean("hopper-protection"); - } + public static boolean hopper_protection = plugin.getConfig().getBoolean("hopper-protection"); - public static boolean explosion_protection() { - return plugin.getConfig().getBoolean("explosion-protection"); - } + public static boolean explosion_protection = plugin.getConfig().getBoolean("explosion-protection"); - public static boolean enable_broadcast() { - return plugin.getConfig().getBoolean("enable-broadcast"); - } + public static boolean enable_broadcast = plugin.getConfig().getBoolean("enable-broadcast"); - public static double maximal_distance() { - return plugin.getConfig().getDouble("maximal-distance"); - } + public static double maximal_distance = plugin.getConfig().getDouble("maximal-distance"); - public static double shop_creation_price_normal() { - return plugin.getConfig().getDouble("shop-creation-price.normal"); - } + public static double shop_creation_price_normal = plugin.getConfig().getDouble("shop-creation-price.normal"); - public static double shop_creation_price_admin() { - return plugin.getConfig().getDouble("shop-creation-price.admin"); - } + public static double shop_creation_price_admin = plugin.getConfig().getDouble("shop-creation-price.admin"); - public static int default_limit() { - return plugin.getConfig().getInt("shop-limits.default"); - } + public static int default_limit = plugin.getConfig().getInt("shop-limits.default"); - public static String main_command_name() { - return plugin.getConfig().getString("main-command-name"); - } + public static String main_command_name = plugin.getConfig().getString("main-command-name"); - public static String shop_created() { - return plugin.getConfig().getString("messages.shop-created").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } + public static String language_file = plugin.getConfig().getString("language-file"); - public static String chest_already_shop() { - return plugin.getConfig().getString("messages.chest-already-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shop_removed() { - return plugin.getConfig().getString("messages.shop-removed").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String chest_no_shop() { - return plugin.getConfig().getString("messages.chest-no-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String block_no_chest() { - return plugin.getConfig().getString("messages.block-no-chest").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String not_enough_inventory_space() { - return plugin.getConfig().getString("messages.not-enough-inventory-space").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String chest_not_enough_inventory_space() { - return plugin.getConfig().getString("messages.chest-not-enough-inventory-space").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String not_enough_money() { - return plugin.getConfig().getString("messages.not-enough-money").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String not_enough_items() { - return plugin.getConfig().getString("messages.not-enough-items").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String vendor_not_enough_money() { - return plugin.getConfig().getString("messages.vendor-not-enough-money").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String out_of_stock() { - return plugin.getConfig().getString("messages.out-of-stock").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String amount_and_price_not_number() { - return plugin.getConfig().getString("messages.amount-and-price-not-number").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String no_item_in_hand() { - return plugin.getConfig().getString("messages.no-item-in-hand").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String click_chest_to_create() { - return plugin.getConfig().getString("messages.click-chest-to-create-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String click_chest_to_remove() { - return plugin.getConfig().getString("messages.click-chest-to-remove-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String click_chest_for_info() { - return plugin.getConfig().getString("messages.click-chest-for-info").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cmdDesc_create() { - return plugin.getConfig().getString("messages.command-description.create").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cmdDesc_remove() { - return plugin.getConfig().getString("messages.command-description.remove").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cmdDesc_info() { - return plugin.getConfig().getString("messages.command-description.info").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cmdDesc_reload() { - return plugin.getConfig().getString("messages.command-description.reload").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cmdDesc_update() { - return plugin.getConfig().getString("messages.command-description.update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cmdDesc_limits() { - return plugin.getConfig().getString("messages.command-description.limits").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_isNormal() { - return plugin.getConfig().getString("messages.shop-info.is-normal").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_isAdmin() { - return plugin.getConfig().getString("messages.shop-info.is-admin").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_create() { - return plugin.getConfig().getString("messages.no-permission.create").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_createAdmin() { - return plugin.getConfig().getString("messages.no-permission.create-admin").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_openOthers() { - return plugin.getConfig().getString("messages.no-permission.open-others").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_removeOthers() { - return plugin.getConfig().getString("messages.no-permission.remove-others").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_buy() { - return plugin.getConfig().getString("messages.no-permission.buy").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_sell() { - return plugin.getConfig().getString("messages.no-permission.sell").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_reload() { - return plugin.getConfig().getString("messages.no-permission.reload").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_update() { - return plugin.getConfig().getString("messages.no-permission.update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String noPermission_limits() { - return plugin.getConfig().getString("messages.no-permission.limits").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cannot_break_shop() { - return plugin.getConfig().getString("messages.cannot-break-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cannot_sell_broken_item() { - return plugin.getConfig().getString("messages.cannot-sell-broken-item").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String disabled() { - return plugin.getConfig().getString("messages.shop-info.disabled").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String buy_and_sell_disabled() { - return plugin.getConfig().getString("messages.buy-and-sell-disabled").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String selling_disabled() { - return plugin.getConfig().getString("messages.selling-disabled").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String buying_disabled() { - return plugin.getConfig().getString("messages.buying-disabled").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String checking_update() { - return plugin.getConfig().getString("messages.update.checking").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String no_new_update() { - return plugin.getConfig().getString("messages.update.no-update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String click_to_download() { - return plugin.getConfig().getString("messages.update.click-to-download").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String update_check_error() { - return plugin.getConfig().getString("messages.update.error").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String cannot_sell_item() { - return plugin.getConfig().getString("messages.cannot-sell-item").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String none() { - return plugin.getConfig().getString("messages.shop-info.none").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shop_create_not_enough_money(double creationPrice) { - return plugin.getConfig().getString("messages.shop-create-not-enough-money").replace(Regex.creationPrice, getPriceString(creationPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String limit_reached(int limit) { - return plugin.getConfig().getString("messages.shop-limit-reached").replace(Regex.limit, String.valueOf(limit)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String reloaded_shops(int amount) { - return plugin.getConfig().getString("messages.reloaded-shops").replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String opened_shop(String vendor) { - return plugin.getConfig().getString("messages.opened-shop").replace(Regex.vendor, vendor).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String buyPrice_too_low(double minPrice) { - return plugin.getConfig().getString("messages.buy-price-too-low").replace(Regex.minPrice, getPriceString(minPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String sellPrice_too_low(double minPrice) { - return plugin.getConfig().getString("messages.sell-price-too-low").replace(Regex.minPrice, getPriceString(minPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String update_available(String version) { - return plugin.getConfig().getString("messages.update.update-available").replace(Regex.version, version); - } - - public static String hologram_format(int amount, String itemName) { - return plugin.getConfig().getString("messages.hologram.format").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String hologram_buy_sell(double buyPrice, double sellPrice) { - return plugin.getConfig().getString("messages.hologram.buy-and-sell").replace(Regex.buyPrice, getPriceString(buyPrice)).replace(Regex.sellPrice, getPriceString(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String hologram_buy(double buyPrice) { - return plugin.getConfig().getString("messages.hologram.only-buy").replace(Regex.buyPrice, getPriceString(buyPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String hologram_sell(double sellPrice) { - return plugin.getConfig().getString("messages.hologram.only-sell").replace(Regex.sellPrice, getPriceString(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String error_occurred(String error) { - return plugin.getConfig().getString("messages.error-occurred").replace(Regex.error, error).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_vendor(String vendor) { - return plugin.getConfig().getString("messages.shop-info.vendor").replace(Regex.vendor, vendor).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_product(int amount, String itemName) { - return plugin.getConfig().getString("messages.shop-info.product").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_enchantment(String enchantment) { - return plugin.getConfig().getString("messages.shop-info.enchantments").replace(Regex.enchantment, enchantment).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_arrowEffect(String arrowEffect) { - return plugin.getConfig().getString("messages.shop-info.arrow-effect").replace(Regex.arrowEffect, arrowEffect).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_price(double buyPrice, double sellPrice) { - if ((buyPrice <= 0) && (sellPrice > 0)) { - return plugin.getConfig().getString("messages.shop-info.price").replace(Regex.buyPrice, disabled()).replace(Regex.sellPrice, getPriceString(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } else if ((sellPrice <= 0) && (buyPrice > 0)) { - return plugin.getConfig().getString("messages.shop-info.price").replace(Regex.buyPrice, getPriceString(buyPrice)).replace(Regex.sellPrice, disabled()).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } else if ((sellPrice > 0) && (buyPrice > 0)) { - return plugin.getConfig().getString("messages.shop-info.price").replace(Regex.buyPrice, getPriceString(buyPrice)).replace(Regex.sellPrice, getPriceString(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } else { - return plugin.getConfig().getString("messages.shop-info.price").replace(Regex.buyPrice, disabled()).replace(Regex.sellPrice, disabled()).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - } - - public static String buy_success(int amount, String itemName, double buyPrice, String vendor) { - return plugin.getConfig().getString("messages.buy-success").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.buyPrice, getPriceString(buyPrice)).replace(Regex.vendor, vendor).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String buy_success_admin(int amount, String itemName, double buyPrice) { - return plugin.getConfig().getString("messages.buy-success-admin").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.buyPrice, getPriceString(buyPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String sell_success(int amount, String itemName, double sellPrice, String vendor) { - return plugin.getConfig().getString("messages.sell-success").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.sellPrice, getPriceString(sellPrice)).replace(Regex.vendor, vendor).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String sell_success_admin(int amount, String itemName, double sellPrice) { - return plugin.getConfig().getString("messages.sell-success-admin").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.sellPrice, getPriceString(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String someone_bought(int amount, String itemName, double buyPrice, String player) { - return plugin.getConfig().getString("messages.someone-bought").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.buyPrice, getPriceString(buyPrice)).replace(Regex.player, player).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String someone_sold(int amount, String itemName, double sellPrice, String player) { - return plugin.getConfig().getString("messages.someone-sold").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.sellPrice, getPriceString(sellPrice)).replace(Regex.player, player).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String occupied_shop_slots(int limit, int amount) { - return plugin.getConfig().getString("messages.occupied-shop-slots").replace(Regex.limit, (limit == -1) ? "∞" : String.valueOf(limit)).replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - public static String shopInfo_stock(int amount) { - return plugin.getConfig().getString("messages.shop-info.stock").replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2"); - } - - private static String getPriceString(double price) { - return ShopChest.econ.format(price); - } } diff --git a/src/de/epiceric/shopchest/config/LanguageConfiguration.java b/src/de/epiceric/shopchest/config/LanguageConfiguration.java new file mode 100644 index 0000000..7c5b321 --- /dev/null +++ b/src/de/epiceric/shopchest/config/LanguageConfiguration.java @@ -0,0 +1,92 @@ +package de.epiceric.shopchest.config; + +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.regex.Matcher; + +public class LanguageConfiguration extends FileConfiguration { + + private ArrayList lines = new ArrayList<>(); + private HashMap values = new HashMap<>(); + + @Override + public String saveToString() { + StringBuilder sb = new StringBuilder(""); + + for (String line : lines) { + sb.append(line); + sb.append("\n"); + } + + return sb.toString(); + } + + @Override + public String getString(String path, String def) { + for (String key : values.keySet()) { + if (key.equals(path)) { + return values.get(key); + } + } + + return def; + } + + @Override + public void load(File file) throws IOException, InvalidConfigurationException { + FileInputStream fis = new FileInputStream(file); + InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); + BufferedReader br = new BufferedReader(isr); + + StringBuilder sb = new StringBuilder(); + + String line = br.readLine(); + while (line != null) { + sb.append(line); + sb.append("\n"); + line = br.readLine(); + } + + fis.close(); + isr.close(); + br.close(); + + loadFromString(sb.toString()); + } + + @Override + public void loadFromString(String s) throws InvalidConfigurationException { + String[] lines = s.split("\n"); + for (String line : lines) { + if (!line.isEmpty()) { + this.lines.add(line); + + if (!line.startsWith("#")) { + if (line.contains("=")) { + if (line.split("=").length == 2) { + String key = line.split("=")[0]; + StringBuilder sbValue = new StringBuilder(); + + for (int i = 1; i < line.split("=").length; i++) { + sbValue.append(line.split("=")[i]); + } + + String value = Matcher.quoteReplacement(sbValue.toString()); + + values.put(key, value); + } + } + } + } + } + } + + @Override + protected String buildHeader() { + return null; + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/config/Regex.java b/src/de/epiceric/shopchest/config/Regex.java index 915d342..497542c 100644 --- a/src/de/epiceric/shopchest/config/Regex.java +++ b/src/de/epiceric/shopchest/config/Regex.java @@ -1,19 +1,30 @@ package de.epiceric.shopchest.config; -public class Regex { +public enum Regex { - public static String vendor = "%VENDOR%"; - public static String amount = "%AMOUNT%"; - public static String itemName = "%ITEMNAME%"; - public static String creationPrice = "%CREATION-PRICE%"; - public static String error = "%ERROR%"; - public static String enchantment = "%ENCHANTMENT%"; - public static String minPrice = "%MIN-PRICE%"; - public static String version = "%VERSION%"; - public static String buyPrice = "%BUY-PRICE%"; - public static String sellPrice = "%SELL-PRICE%"; - public static String limit = "%LIMIT%"; - public static String player = "%PLAYER%"; - public static String arrowEffect = "%ARROW-EFFECT%"; + VENDOR("%VENDOR%"), + AMOUNT("%AMOUNT%"), + ITEM_NAME("%ITEMNAME%"), + CREATION_PRICE("%CREATION-PRICE%"), + ERROR("%ERROR%"), + ENCHANTMENT("%ENCHANTMENT%"), + MIN_PRICE("%MIN-PRICE%"), + VERSION("%VERSION%"), + BUY_PRICE("%BUY-PRICE%"), + SELL_PRICE("%SELL-PRICE%"), + LIMIT("%LIMIT%"), + PLAYER("%PLAYER%"), + POTION_EFFECT("%POTION-EFFECT%"), + MUSIC_TITLE("%MUSIC-TITLE%"); + + private String name; + + Regex(String name) { + this.name = name; + } + + public String getName() { + return name; + } } diff --git a/src/de/epiceric/shopchest/event/InteractShop.java b/src/de/epiceric/shopchest/event/InteractShop.java index 10509ae..65a6517 100644 --- a/src/de/epiceric/shopchest/event/InteractShop.java +++ b/src/de/epiceric/shopchest/event/InteractShop.java @@ -3,11 +3,15 @@ package de.epiceric.shopchest.event; import com.griefcraft.lwc.LWC; import com.griefcraft.model.Protection; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.config.Regex; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.sql.Database; -import de.epiceric.shopchest.utils.*; +import de.epiceric.shopchest.utils.ClickType; +import de.epiceric.shopchest.utils.ShopUtils; +import de.epiceric.shopchest.utils.Utils; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.permission.Permission; @@ -35,17 +39,19 @@ import java.util.Map; public class InteractShop implements Listener { private ShopChest plugin; - private Permission perm = ShopChest.perm; - private Economy econ = ShopChest.econ; - private Database database = ShopChest.database; + private Permission perm; + private Economy econ; + private Database database; public InteractShop(ShopChest plugin) { this.plugin = plugin; + this.perm = plugin.getPermission(); + this.econ = plugin.getEconomy(); + this.database = plugin.getShopDatabase(); } @EventHandler public void onPlayerInteract(PlayerInteractEvent e) { - Block b = e.getClickedBlock(); Player p = e.getPlayer(); @@ -62,8 +68,8 @@ public class InteractShop implements Listener { case CREATE: e.setCancelled(true); - if (!p.isOp() || !perm.has(p, "shopchest.create.protected")) { - if (ShopChest.lockette) { + if (!perm.has(p, "shopchest.create.protected")) { + if (plugin.hasLockette()) { if (Lockette.isProtected(b)) { if (!Lockette.isOwner(b, p) || !Lockette.isUser(b, p, true)) { ClickType.removePlayerClickType(p); @@ -72,7 +78,7 @@ public class InteractShop implements Listener { } } - if (ShopChest.lwc) { + if (plugin.hasLWC()) { if (LWC.getInstance().getPhysicalDatabase().loadProtection(b.getLocation().getWorld().getName(), b.getX(), b.getY(), b.getZ()) != null) { Protection protection = LWC.getInstance().getPhysicalDatabase().loadProtection(b.getLocation().getWorld().getName(), b.getX(), b.getY(), b.getZ()); if (!protection.isOwner(p) || !protection.isRealOwner(p)) { @@ -93,7 +99,7 @@ public class InteractShop implements Listener { create(p, b.getLocation(), product, buyPrice, sellPrice, shopType); } else { - p.sendMessage(Config.chest_already_shop()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHEST_ALREADY_SHOP)); } ClickType.removePlayerClickType(p); @@ -108,7 +114,7 @@ public class InteractShop implements Listener { info(p, shop); } else { - p.sendMessage(Config.chest_no_shop()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHEST_NO_SHOP)); } ClickType.removePlayerClickType(p); @@ -124,11 +130,11 @@ public class InteractShop implements Listener { if (shop.getVendor().getUniqueId().equals(p.getUniqueId()) || perm.has(p, "shopchest.removeOther")) { remove(p, shop); } else { - p.sendMessage(Config.noPermission_removeOthers()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_REMOVE_OTHERS)); } } else { - p.sendMessage(Config.chest_no_shop()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHEST_NO_SHOP)); } ClickType.removePlayerClickType(p); @@ -145,10 +151,10 @@ public class InteractShop implements Listener { if (p.isSneaking()) { if (!shop.getVendor().getUniqueId().equals(p.getUniqueId())) { if (perm.has(p, "shopchest.openOther")) { - p.sendMessage(Config.opened_shop(shop.getVendor().getName())); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.OPENED_SHOP, new LocalizedMessage.ReplacedRegex(Regex.VENDOR, shop.getVendor().getName()))); e.setCancelled(false); } else { - p.sendMessage(Config.noPermission_openOthers()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_OPEN_OTHERS)); } } else { e.setCancelled(false); @@ -164,14 +170,14 @@ public class InteractShop implements Listener { if (Utils.getAmount(c.getInventory(), shop.getProduct()) >= shop.getProduct().getAmount()) { buy(p, shop); } else { - p.sendMessage(Config.out_of_stock()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.OUT_OF_STOCK)); } } } else { - p.sendMessage(Config.noPermission_buy()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_BUY)); } } else { - p.sendMessage(Config.buying_disabled()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUYING_DISABLED)); } } else { e.setCancelled(false); @@ -194,13 +200,13 @@ public class InteractShop implements Listener { if (Utils.getAmount(p.getInventory(), shop.getProduct()) >= shop.getProduct().getAmount()) { sell(p, shop); } else { - p.sendMessage(Config.not_enough_items()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NOT_ENOUGH_ITEMS)); } } else { - p.sendMessage(Config.noPermission_sell()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_SELL)); } } else { - p.sendMessage(Config.selling_disabled()); + p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SELLING_DISABLED)); } } else { e.setCancelled(false); @@ -221,7 +227,7 @@ public class InteractShop implements Listener { Shop shop = new Shop(database.getNextFreeID(), plugin, executor, product, location, buyPrice, sellPrice, shopType); ShopUtils.addShop(shop, true); - executor.sendMessage(Config.shop_created()); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_CREATED)); for (Player p : Bukkit.getOnlinePlayers()) { Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation())); @@ -231,35 +237,43 @@ public class InteractShop implements Listener { private void remove(Player executor, Shop shop) { ShopUtils.removeShop(shop, true); - executor.sendMessage(Config.shop_removed()); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_REMOVED)); } private void info(Player executor, Shop shop) { - Chest c = (Chest) shop.getLocation().getBlock().getState(); int amount = Utils.getAmount(c.getInventory(), shop.getProduct()); + Material type = shop.getProduct().getType(); - String vendor = Config.shopInfo_vendor(shop.getVendor().getName()); - String product = Config.shopInfo_product(shop.getProduct().getAmount(), ItemNames.lookup(shop.getProduct())); + String vendor = LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_VENDOR, new LocalizedMessage.ReplacedRegex(Regex.VENDOR, shop.getVendor().getName())); + String product = LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_PRODUCT, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(shop.getProduct().getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(shop.getProduct()))); String enchantmentString = ""; - String arrowEffectString = ""; - String price = Config.shopInfo_price(shop.getBuyPrice(), shop.getSellPrice()); - String shopType; - String stock = Config.shopInfo_stock(amount); - - if (shop.getShopType() == ShopType.NORMAL) shopType = Config.shopInfo_isNormal(); - else shopType = Config.shopInfo_isAdmin(); + String potionEffectString = ""; + String musicDiscName = LanguageUtils.getMusicDiscName(type); + String price = LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_PRICE, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(shop.getBuyPrice())), + new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(shop.getSellPrice()))); + String shopType = LanguageUtils.getMessage(shop.getShopType() == ShopType.NORMAL ? LocalizedMessage.Message.SHOP_INFO_NORMAL : LocalizedMessage.Message.SHOP_INFO_ADMIN); + String stock = LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_STOCK, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(amount))); Map enchantmentMap; - if (Utils.getVersion(Bukkit.getServer()).contains("1_9")) { - if (shop.getProduct().getType() == Material.TIPPED_ARROW) { - arrowEffectString = ArrowEffectNames.getTippedArrowName(shop.getProduct()); - if (arrowEffectString == null) arrowEffectString = Config.none(); + if (Utils.getMajorVersion() >= 9) { + if (type == Material.TIPPED_ARROW || type == Material.LINGERING_POTION) { + potionEffectString = LanguageUtils.getPotionEffectName(shop.getProduct()); + if (potionEffectString == null) + potionEffectString = LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_NONE); } } + if (type == Material.POTION || type == Material.SPLASH_POTION) { + potionEffectString = LanguageUtils.getPotionEffectName(shop.getProduct()); + if (potionEffectString == null) + potionEffectString = LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_NONE); + } + + if (shop.getProduct().getItemMeta() instanceof EnchantmentStorageMeta) { EnchantmentStorageMeta esm = (EnchantmentStorageMeta) shop.getProduct().getItemMeta(); enchantmentMap = esm.getStoredEnchants(); @@ -270,23 +284,25 @@ public class InteractShop implements Listener { Enchantment[] enchantments = enchantmentMap.keySet().toArray(new Enchantment[enchantmentMap.size()]); for (int i = 0; i < enchantments.length; i++) { - Enchantment enchantment = enchantments[i]; if (i == enchantments.length - 1) { - enchantmentString += EnchantmentNames.lookup(enchantment, enchantmentMap.get(enchantment)); + enchantmentString += LanguageUtils.getEnchantmentName(enchantment, enchantmentMap.get(enchantment)); } else { - enchantmentString += EnchantmentNames.lookup(enchantment, enchantmentMap.get(enchantment)) + ", "; + enchantmentString += LanguageUtils.getEnchantmentName(enchantment, enchantmentMap.get(enchantment)) + ", "; } - } executor.sendMessage(" "); if (shop.getShopType() != ShopType.ADMIN) executor.sendMessage(vendor); executor.sendMessage(product); if (shop.getShopType() != ShopType.ADMIN) executor.sendMessage(stock); - if (enchantmentString.length() > 0) executor.sendMessage(Config.shopInfo_enchantment(enchantmentString)); - if (arrowEffectString.length() > 0) executor.sendMessage(Config.shopInfo_arrowEffect(arrowEffectString)); + if (enchantmentString.length() > 0) + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_ENCHANTMENTS, new LocalizedMessage.ReplacedRegex(Regex.ENCHANTMENT, enchantmentString))); + if (potionEffectString.length() > 0) + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_POTION_EFFECT, new LocalizedMessage.ReplacedRegex(Regex.POTION_EFFECT, potionEffectString))); + if (musicDiscName.length() > 0) + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_INFO_MUSIC_TITLE, new LocalizedMessage.ReplacedRegex(Regex.MUSIC_TITLE, musicDiscName))); executor.sendMessage(price); executor.sendMessage(shopType); executor.sendMessage(" "); @@ -315,7 +331,7 @@ public class InteractShop implements Listener { } } - if (Utils.getVersion(Bukkit.getServer()).contains("1_9")) { + if (Utils.getMajorVersion() >= 9) { ItemStack item = inventory.getItem(40); if (item == null) { slotFree.put(40, product.getMaxStackSize()); @@ -344,28 +360,33 @@ public class InteractShop implements Listener { addToInventory(inventory, product); removeFromInventory(c.getInventory(), product); executor.updateInventory(); - executor.sendMessage(Config.buy_success(product.getAmount(), ItemNames.lookup(product), shop.getBuyPrice(), shop.getVendor().getName())); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_SUCCESS, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)), new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(shop.getBuyPrice())), + new LocalizedMessage.ReplacedRegex(Regex.VENDOR, shop.getVendor().getName()))); if (shop.getVendor().isOnline()) { - shop.getVendor().getPlayer().sendMessage(Config.someone_bought(product.getAmount(), ItemNames.lookup(product), shop.getBuyPrice(), executor.getName())); + shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SOMEONE_BOUGHT, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)), new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(shop.getBuyPrice())), + new LocalizedMessage.ReplacedRegex(Regex.PLAYER, executor.getName()))); } } else { - executor.sendMessage(Config.error_occurred(r2.errorMessage)); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, r2.errorMessage))); } } else { addToInventory(inventory, product); executor.updateInventory(); - executor.sendMessage(Config.buy_success_admin(product.getAmount(), ItemNames.lookup(product), shop.getBuyPrice())); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_SUCESS_ADMIN, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)), new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(shop.getBuyPrice())))); } } else { - executor.sendMessage(Config.error_occurred(r.errorMessage)); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, r.errorMessage))); } } else { - executor.sendMessage(Config.not_enough_inventory_space()); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NOT_ENOUGH_INVENTORY_SPACE)); } } else { - executor.sendMessage(Config.not_enough_money()); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NOT_ENOUGH_MONEY)); } } @@ -408,32 +429,37 @@ public class InteractShop implements Listener { addToInventory(inventory, product); removeFromInventory(executor.getInventory(), product); executor.updateInventory(); - executor.sendMessage(Config.sell_success(product.getAmount(), ItemNames.lookup(product), shop.getSellPrice(), shop.getVendor().getName())); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SELL_SUCESS, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)), new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(shop.getSellPrice())), + new LocalizedMessage.ReplacedRegex(Regex.VENDOR, shop.getVendor().getName()))); if (shop.getVendor().isOnline()) { - shop.getVendor().getPlayer().sendMessage(Config.someone_sold(product.getAmount(), ItemNames.lookup(product), shop.getSellPrice(), executor.getName())); + shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SOMEONE_SOLD, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)), new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(shop.getSellPrice())), + new LocalizedMessage.ReplacedRegex(Regex.PLAYER, executor.getName()))); } } else { - executor.sendMessage(Config.error_occurred(r2.errorMessage)); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, r2.errorMessage))); } } else { removeFromInventory(executor.getInventory(), product); executor.updateInventory(); - executor.sendMessage(Config.sell_success_admin(product.getAmount(), ItemNames.lookup(product), shop.getSellPrice())); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SELL_SUCESS_ADMIN, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)), new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(shop.getSellPrice())))); } } else { - executor.sendMessage(Config.error_occurred(r.errorMessage)); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, r.errorMessage))); } } else { - executor.sendMessage(Config.chest_not_enough_inventory_space()); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHEST_NOT_ENOUGH_INVENTORY_SPACE)); } } else { - executor.sendMessage(Config.vendor_not_enough_money()); + executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.VENDOR_NOT_ENOUGH_MONEY)); } } @@ -443,7 +469,7 @@ public class InteractShop implements Listener { int added = 0; if (inventory instanceof PlayerInventory) { - if (Utils.getVersion(plugin.getServer()).contains("1_9")) { + if (Utils.getMajorVersion() >= 9) { inventoryItems.put(40, inventory.getItem(40)); } @@ -493,7 +519,7 @@ public class InteractShop implements Listener { int removed = 0; if (inventory instanceof PlayerInventory) { - if (Utils.getVersion(plugin.getServer()).contains("1_9")) { + if (Utils.getMajorVersion() >= 9) { inventoryItems.put(40, inventory.getItem(40)); } diff --git a/src/de/epiceric/shopchest/event/LWCMagnetListener.java b/src/de/epiceric/shopchest/event/LWCMagnetListener.java index 886026b..7f2a3f6 100644 --- a/src/de/epiceric/shopchest/event/LWCMagnetListener.java +++ b/src/de/epiceric/shopchest/event/LWCMagnetListener.java @@ -7,6 +7,12 @@ import de.epiceric.shopchest.ShopChest; public class LWCMagnetListener { + private ShopChest plugin; + + public LWCMagnetListener(ShopChest plugin) { + this.plugin = plugin; + } + public void initializeListener() { try { Class.forName("com.griefcraft.scripting.event.LWCMagnetPullEvent"); @@ -23,9 +29,10 @@ public class LWCMagnetListener { }); } catch (ClassNotFoundException ex) { - ShopChest.logger.warning("Shop items can be sucked up by the magnet flag of a protected chest of LWC."); - ShopChest.logger.warning("Use 'LWC Unofficial - Entity locking' v1.7.3 or later by 'Me_Goes_RAWR' to prevent this."); - }; + plugin.getLogger().warning("Shop items can be sucked up by the magnet flag of a protected chest of LWC."); + plugin.getLogger().warning("Use 'LWC Unofficial - Entity locking' v1.7.3 or later by 'Me_Goes_RAWR' to prevent this."); + } + ; } diff --git a/src/de/epiceric/shopchest/event/NotifyUpdate.java b/src/de/epiceric/shopchest/event/NotifyUpdate.java index c0bc610..56a1ff1 100644 --- a/src/de/epiceric/shopchest/event/NotifyUpdate.java +++ b/src/de/epiceric/shopchest/event/NotifyUpdate.java @@ -1,9 +1,11 @@ package de.epiceric.shopchest.event; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.config.Regex; import de.epiceric.shopchest.interfaces.JsonBuilder; import de.epiceric.shopchest.interfaces.jsonbuilder.*; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.utils.Utils; import net.milkbowl.vault.permission.Permission; import org.bukkit.entity.Player; @@ -13,9 +15,12 @@ import org.bukkit.event.player.PlayerJoinEvent; public class NotifyUpdate implements Listener { - private Permission perm = ShopChest.perm; + private ShopChest plugin; + private Permission perm; - public NotifyUpdate() { + public NotifyUpdate(ShopChest plugin) { + this.plugin = plugin; + perm = plugin.getPermission(); } @EventHandler @@ -23,28 +28,28 @@ public class NotifyUpdate implements Listener { Player p = e.getPlayer(); - if (ShopChest.isUpdateNeeded) { + if (plugin.isUpdateNeeded()) { if (p.isOp() || perm.has(p, "shopchest.notification.update")) { JsonBuilder jb; - switch (Utils.getVersion(ShopChest.getInstance().getServer())) { + switch (Utils.getServerVersion()) { case "v1_8_R1": - jb = new JsonBuilder_1_8_R1(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_8_R1(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, plugin.getLatestVersion()))); break; case "v1_8_R2": - jb = new JsonBuilder_1_8_R2(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_8_R2(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, plugin.getLatestVersion()))); break; case "v1_8_R3": - jb = new JsonBuilder_1_8_R3(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_8_R3(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, plugin.getLatestVersion()))); break; case "v1_9_R1": - jb = new JsonBuilder_1_9_R1(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_9_R1(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, plugin.getLatestVersion()))); break; case "v1_9_R2": - jb = new JsonBuilder_1_9_R2(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_9_R2(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, plugin.getLatestVersion()))); break; case "v1_10_R1": - jb = new JsonBuilder_1_10_R1(Config.update_available(ShopChest.latestVersion)); + jb = new JsonBuilder_1_10_R1(plugin, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, plugin.getLatestVersion()))); break; default: return; @@ -54,8 +59,8 @@ public class NotifyUpdate implements Listener { } if (perm.has(p, "shopchest.broadcast")) { - if (ShopChest.broadcast != null) { - for (String message : ShopChest.broadcast) { + if (plugin.getBroadcast() != null) { + for (String message : plugin.getBroadcast()) { p.sendMessage(message); } } diff --git a/src/de/epiceric/shopchest/event/ProtectChest.java b/src/de/epiceric/shopchest/event/ProtectChest.java index acd0e4c..28cafe0 100644 --- a/src/de/epiceric/shopchest/event/ProtectChest.java +++ b/src/de/epiceric/shopchest/event/ProtectChest.java @@ -2,6 +2,8 @@ package de.epiceric.shopchest.event; import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.utils.ShopUtils; import org.bukkit.Material; @@ -23,20 +25,17 @@ import java.util.ArrayList; public class ProtectChest implements Listener { - public ProtectChest() { - } - @EventHandler public void onBlockBreak(BlockBreakEvent e) { if (ShopUtils.isShop(e.getBlock().getLocation())) { e.setCancelled(true); - e.getPlayer().sendMessage(Config.cannot_break_shop()); + e.getPlayer().sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CANNOT_BREAK_SHOP)); } } @EventHandler public void onBlockExplode(BlockExplodeEvent e) { - if (Config.explosion_protection()) { + if (Config.explosion_protection) { ArrayList bl = new ArrayList<>(e.blockList()); for (Block b : bl) { if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) { @@ -48,7 +47,7 @@ public class ProtectChest implements Listener { @EventHandler public void onEntityExplode(EntityExplodeEvent e) { - if (Config.explosion_protection()) { + if (Config.explosion_protection) { ArrayList bl = new ArrayList<>(e.blockList()); for (Block b : bl) { if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) { @@ -95,7 +94,7 @@ public class ProtectChest implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onItemMove(InventoryMoveItemEvent e) { - if (Config.hopper_protection()) { + if (Config.hopper_protection) { if ((e.getSource().getType().equals(InventoryType.CHEST)) && (!e.getInitiator().getType().equals(InventoryType.PLAYER))) { if (e.getSource().getHolder() instanceof DoubleChest) { diff --git a/src/de/epiceric/shopchest/event/RegenerateShopItemAfterRemove.java b/src/de/epiceric/shopchest/event/RegenerateShopItemAfterRemove.java index 29367ab..7735789 100644 --- a/src/de/epiceric/shopchest/event/RegenerateShopItemAfterRemove.java +++ b/src/de/epiceric/shopchest/event/RegenerateShopItemAfterRemove.java @@ -1,26 +1,24 @@ package de.epiceric.shopchest.event; -import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.utils.ShopUtils; +import me.minebuilders.clearlag.events.EntityRemoveEvent; import org.bukkit.entity.Entity; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import java.util.ArrayList; + public class RegenerateShopItemAfterRemove implements Listener { - @EventHandler(priority = EventPriority.HIGH) - public void onEntityRemove(me.minebuilders.clearlag.events.EntityRemoveEvent e) { - boolean containsShopItem = false; - for (Entity entity : e.getEntityList()) { + public void onEntityRemove(EntityRemoveEvent e) { + ArrayList entityList = new ArrayList<>(e.getEntityList()); + + for (Entity entity : entityList) { if (entity.hasMetadata("shopItem")) { - containsShopItem = true; - break; + e.getEntityList().remove(entity); } } - - if (containsShopItem) ShopUtils.reloadShops(null); } diff --git a/src/de/epiceric/shopchest/event/UpdateHolograms.java b/src/de/epiceric/shopchest/event/UpdateHolograms.java index 26b210f..9b28c82 100644 --- a/src/de/epiceric/shopchest/event/UpdateHolograms.java +++ b/src/de/epiceric/shopchest/event/UpdateHolograms.java @@ -28,7 +28,7 @@ public class UpdateHolograms implements Listener { if (playerLocation.getWorld().equals(shopLocation.getWorld())) { - if (playerLocation.distance(shop.getHologram().getLocation()) <= Config.maximal_distance()) { + if (playerLocation.distance(shop.getHologram().getLocation()) <= Config.maximal_distance) { if (!shop.getHologram().isVisible(p)) { shop.getHologram().showPlayer(p); diff --git a/src/de/epiceric/shopchest/interfaces/SpawnEggMeta.java b/src/de/epiceric/shopchest/interfaces/SpawnEggMeta.java new file mode 100644 index 0000000..a310150 --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/SpawnEggMeta.java @@ -0,0 +1,32 @@ +package de.epiceric.shopchest.interfaces; + +import org.bukkit.entity.EntityType; + +public abstract class SpawnEggMeta { + + public abstract String getNBTEntityID(); + + public EntityType getEntityTypeFromNBTEntityID(String nbtEntityID) { + if (nbtEntityID == null) return null; + + switch (nbtEntityID) { + case "PigZombie": + return EntityType.PIG_ZOMBIE; + case "CaveSpider": + return EntityType.CAVE_SPIDER; + case "LavaSlime": + return EntityType.MAGMA_CUBE; + case "MushroomCow": + return EntityType.MUSHROOM_COW; + case "EntityHorse": + return EntityType.HORSE; + case "PolarBear": + return EntityType.POLAR_BEAR; + default: + return EntityType.valueOf(nbtEntityID.toUpperCase()); + + } + } + +} + diff --git a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_10_R1.java b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_10_R1.java index 8949bcb..84920c3 100644 --- a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_10_R1.java +++ b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_10_R1.java @@ -1,8 +1,9 @@ package de.epiceric.shopchest.interfaces.jsonbuilder; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.interfaces.JsonBuilder; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import net.minecraft.server.v1_10_R1.IChatBaseComponent.ChatSerializer; import net.minecraft.server.v1_10_R1.PacketPlayOutChat; import org.bukkit.ChatColor; @@ -19,9 +20,10 @@ public class JsonBuilder_1_10_R1 implements JsonBuilder { /* JsonBuilder by FisheyLP */ private List extras = new ArrayList(); + private ShopChest plugin; - - public JsonBuilder_1_10_R1(String... text) { + public JsonBuilder_1_10_R1(ShopChest plugin, String... text) { + this.plugin = plugin; for (String extra : text) parse(extra); } @@ -31,7 +33,7 @@ public class JsonBuilder_1_10_R1 implements JsonBuilder { String regex = "[&�]{1}([a-fA-Fl-oL-O0-9]){1}"; text = text.replaceAll(regex, "�$1"); if (!Pattern.compile(regex).matcher(text).find()) { - withText(text).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(text).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); return this; } String[] words = text.split(regex); @@ -40,7 +42,7 @@ public class JsonBuilder_1_10_R1 implements JsonBuilder { for (String word : words) { try { if (index != words[0].length()) - withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); } catch (Exception e) { } index += word.length() + 2; diff --git a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R1.java b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R1.java index 9586791..9258c1e 100644 --- a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R1.java +++ b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R1.java @@ -1,8 +1,9 @@ package de.epiceric.shopchest.interfaces.jsonbuilder; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.interfaces.JsonBuilder; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import net.minecraft.server.v1_8_R1.ChatSerializer; import net.minecraft.server.v1_8_R1.PacketPlayOutChat; import org.bukkit.ChatColor; @@ -19,9 +20,10 @@ public class JsonBuilder_1_8_R1 implements JsonBuilder { /* JsonBuilder by FisheyLP */ private List extras = new ArrayList(); + private ShopChest plugin; - - public JsonBuilder_1_8_R1(String... text) { + public JsonBuilder_1_8_R1(ShopChest plugin, String... text) { + this.plugin = plugin; for (String extra : text) parse(extra); } @@ -31,7 +33,7 @@ public class JsonBuilder_1_8_R1 implements JsonBuilder { String regex = "[&�]{1}([a-fA-Fl-oL-O0-9]){1}"; text = text.replaceAll(regex, "�$1"); if (!Pattern.compile(regex).matcher(text).find()) { - withText(text).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(text).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); return this; } String[] words = text.split(regex); @@ -40,7 +42,7 @@ public class JsonBuilder_1_8_R1 implements JsonBuilder { for (String word : words) { try { if (index != words[0].length()) - withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); } catch (Exception e) { } index += word.length() + 2; diff --git a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R2.java b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R2.java index 90199a1..306f46c 100644 --- a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R2.java +++ b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R2.java @@ -1,8 +1,9 @@ package de.epiceric.shopchest.interfaces.jsonbuilder; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.interfaces.JsonBuilder; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import net.minecraft.server.v1_8_R2.IChatBaseComponent.ChatSerializer; import net.minecraft.server.v1_8_R2.PacketPlayOutChat; import org.bukkit.ChatColor; @@ -19,9 +20,10 @@ public class JsonBuilder_1_8_R2 implements JsonBuilder { /* JsonBuilder by FisheyLP */ private List extras = new ArrayList(); + private ShopChest plugin; - - public JsonBuilder_1_8_R2(String... text) { + public JsonBuilder_1_8_R2(ShopChest plugin, String... text) { + this.plugin = plugin; for (String extra : text) parse(extra); } @@ -31,7 +33,7 @@ public class JsonBuilder_1_8_R2 implements JsonBuilder { String regex = "[&�]{1}([a-fA-Fl-oL-O0-9]){1}"; text = text.replaceAll(regex, "�$1"); if (!Pattern.compile(regex).matcher(text).find()) { - withText(text).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(text).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); return this; } String[] words = text.split(regex); @@ -40,7 +42,7 @@ public class JsonBuilder_1_8_R2 implements JsonBuilder { for (String word : words) { try { if (index != words[0].length()) - withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); } catch (Exception e) { } index += word.length() + 2; diff --git a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R3.java b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R3.java index 5b04442..ff0bd33 100644 --- a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R3.java +++ b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_8_R3.java @@ -1,8 +1,9 @@ package de.epiceric.shopchest.interfaces.jsonbuilder; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.interfaces.JsonBuilder; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer; import net.minecraft.server.v1_8_R3.PacketPlayOutChat; import org.bukkit.ChatColor; @@ -19,9 +20,10 @@ public class JsonBuilder_1_8_R3 implements JsonBuilder { /* JsonBuilder by FisheyLP */ private List extras = new ArrayList(); + private ShopChest plugin; - - public JsonBuilder_1_8_R3(String... text) { + public JsonBuilder_1_8_R3(ShopChest plugin, String... text) { + this.plugin = plugin; for (String extra : text) parse(extra); } @@ -31,7 +33,7 @@ public class JsonBuilder_1_8_R3 implements JsonBuilder { String regex = "[&�]{1}([a-fA-Fl-oL-O0-9]){1}"; text = text.replaceAll(regex, "�$1"); if (!Pattern.compile(regex).matcher(text).find()) { - withText(text).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(text).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); return this; } String[] words = text.split(regex); @@ -40,7 +42,7 @@ public class JsonBuilder_1_8_R3 implements JsonBuilder { for (String word : words) { try { if (index != words[0].length()) - withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); } catch (Exception e) { } index += word.length() + 2; diff --git a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R1.java b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R1.java index 854d2b6..6d722b1 100644 --- a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R1.java +++ b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R1.java @@ -1,8 +1,9 @@ package de.epiceric.shopchest.interfaces.jsonbuilder; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.interfaces.JsonBuilder; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import net.minecraft.server.v1_9_R1.IChatBaseComponent.ChatSerializer; import net.minecraft.server.v1_9_R1.PacketPlayOutChat; import org.bukkit.ChatColor; @@ -19,9 +20,10 @@ public class JsonBuilder_1_9_R1 implements JsonBuilder { /* JsonBuilder by FisheyLP */ private List extras = new ArrayList(); + private ShopChest plugin; - - public JsonBuilder_1_9_R1(String... text) { + public JsonBuilder_1_9_R1(ShopChest plugin, String... text) { + this.plugin = plugin; for (String extra : text) parse(extra); } @@ -31,7 +33,7 @@ public class JsonBuilder_1_9_R1 implements JsonBuilder { String regex = "[&�]{1}([a-fA-Fl-oL-O0-9]){1}"; text = text.replaceAll(regex, "�$1"); if (!Pattern.compile(regex).matcher(text).find()) { - withText(text).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(text).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); return this; } String[] words = text.split(regex); @@ -40,7 +42,7 @@ public class JsonBuilder_1_9_R1 implements JsonBuilder { for (String word : words) { try { if (index != words[0].length()) - withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); } catch (Exception e) { } index += word.length() + 2; diff --git a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R2.java b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R2.java index 5248e23..d4111cc 100644 --- a/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R2.java +++ b/src/de/epiceric/shopchest/interfaces/jsonbuilder/JsonBuilder_1_9_R2.java @@ -1,8 +1,9 @@ package de.epiceric.shopchest.interfaces.jsonbuilder; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.interfaces.JsonBuilder; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import net.minecraft.server.v1_9_R2.IChatBaseComponent.ChatSerializer; import net.minecraft.server.v1_9_R2.PacketPlayOutChat; import org.bukkit.ChatColor; @@ -19,9 +20,10 @@ public class JsonBuilder_1_9_R2 implements JsonBuilder { /* JsonBuilder by FisheyLP */ private List extras = new ArrayList(); + private ShopChest plugin; - - public JsonBuilder_1_9_R2(String... text) { + public JsonBuilder_1_9_R2(ShopChest plugin, String... text) { + this.plugin = plugin; for (String extra : text) parse(extra); } @@ -31,7 +33,7 @@ public class JsonBuilder_1_9_R2 implements JsonBuilder { String regex = "[&�]{1}([a-fA-Fl-oL-O0-9]){1}"; text = text.replaceAll(regex, "�$1"); if (!Pattern.compile(regex).matcher(text).find()) { - withText(text).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(text).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); return this; } String[] words = text.split(regex); @@ -40,7 +42,7 @@ public class JsonBuilder_1_9_R2 implements JsonBuilder { for (String word : words) { try { if (index != words[0].length()) - withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, Config.click_to_download()).withClickEvent(ClickAction.OPEN_URL, ShopChest.downloadLink); + withText(word).withColor("�" + text.charAt(index - 1)).withHoverEvent(HoverAction.SHOW_TEXT, LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD)).withClickEvent(ClickAction.OPEN_URL, plugin.getDownloadLink()); } catch (Exception e) { } index += word.length() + 2; diff --git a/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_10_R1.java b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_10_R1.java new file mode 100644 index 0000000..d5bf804 --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_10_R1.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.interfaces.spawneggmeta; + + +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import net.minecraft.server.v1_10_R1.NBTTagCompound; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class SpawnEggMeta_1_10_R1 extends SpawnEggMeta { + + private ItemStack stack; + + public SpawnEggMeta_1_10_R1(ItemStack stack) { + this.stack = stack; + } + + public String getNBTEntityID() { + net.minecraft.server.v1_10_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); + + NBTTagCompound tag = nmsStack.getTag(); + + return tag == null ? null : tag.getCompound("EntityTag").getString("id"); + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R1.java b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R1.java new file mode 100644 index 0000000..4b254a5 --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R1.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.interfaces.spawneggmeta; + + +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import net.minecraft.server.v1_8_R1.NBTTagCompound; +import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class SpawnEggMeta_1_8_R1 extends SpawnEggMeta { + + private ItemStack stack; + + public SpawnEggMeta_1_8_R1(ItemStack stack) { + this.stack = stack; + } + + public String getNBTEntityID() { + net.minecraft.server.v1_8_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); + + NBTTagCompound tag = nmsStack.getTag(); + + return tag == null ? null : tag.getCompound("EntityTag").getString("id"); + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R2.java b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R2.java new file mode 100644 index 0000000..dab17d9 --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R2.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.interfaces.spawneggmeta; + + +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import net.minecraft.server.v1_8_R2.NBTTagCompound; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class SpawnEggMeta_1_8_R2 extends SpawnEggMeta { + + private ItemStack stack; + + public SpawnEggMeta_1_8_R2(ItemStack stack) { + this.stack = stack; + } + + public String getNBTEntityID() { + net.minecraft.server.v1_8_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); + + NBTTagCompound tag = nmsStack.getTag(); + + return tag == null ? null : tag.getCompound("EntityTag").getString("id"); + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R3.java b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R3.java new file mode 100644 index 0000000..ec0e13c --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_8_R3.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.interfaces.spawneggmeta; + + +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import net.minecraft.server.v1_8_R3.NBTTagCompound; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class SpawnEggMeta_1_8_R3 extends SpawnEggMeta { + + private ItemStack stack; + + public SpawnEggMeta_1_8_R3(ItemStack stack) { + this.stack = stack; + } + + public String getNBTEntityID() { + net.minecraft.server.v1_8_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); + + NBTTagCompound tag = nmsStack.getTag(); + + return tag == null ? null : tag.getCompound("EntityTag").getString("id"); + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_9_R1.java b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_9_R1.java new file mode 100644 index 0000000..654324d --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_9_R1.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.interfaces.spawneggmeta; + + +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import net.minecraft.server.v1_9_R1.NBTTagCompound; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class SpawnEggMeta_1_9_R1 extends SpawnEggMeta { + + private ItemStack stack; + + public SpawnEggMeta_1_9_R1(ItemStack stack) { + this.stack = stack; + } + + public String getNBTEntityID() { + net.minecraft.server.v1_9_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); + + NBTTagCompound tag = nmsStack.getTag(); + + return tag == null ? null : tag.getCompound("EntityTag").getString("id"); + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_9_R2.java b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_9_R2.java new file mode 100644 index 0000000..13e1f46 --- /dev/null +++ b/src/de/epiceric/shopchest/interfaces/spawneggmeta/SpawnEggMeta_1_9_R2.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.interfaces.spawneggmeta; + + +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import net.minecraft.server.v1_9_R2.NBTTagCompound; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class SpawnEggMeta_1_9_R2 extends SpawnEggMeta { + + private ItemStack stack; + + public SpawnEggMeta_1_9_R2(ItemStack stack) { + this.stack = stack; + } + + public String getNBTEntityID() { + net.minecraft.server.v1_9_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); + + NBTTagCompound tag = nmsStack.getTag(); + + return tag == null ? null : tag.getCompound("EntityTag").getString("id"); + } +} \ No newline at end of file diff --git a/src/de/epiceric/shopchest/language/EnchantmentName.java b/src/de/epiceric/shopchest/language/EnchantmentName.java new file mode 100644 index 0000000..2dc8ea6 --- /dev/null +++ b/src/de/epiceric/shopchest/language/EnchantmentName.java @@ -0,0 +1,42 @@ +package de.epiceric.shopchest.language; + +import org.bukkit.enchantments.Enchantment; + +public class EnchantmentName { + + private Enchantment enchantment; + private String localizedName; + + public EnchantmentName(Enchantment enchantment, String localizedName) { + this.enchantment = enchantment; + this.localizedName = localizedName; + } + + + public Enchantment getEnchantment() { + return enchantment; + } + + public String getLocalizedName() { + return localizedName; + } + + public static class EnchantmentLevelName { + private int level; + private String localizedName; + + public EnchantmentLevelName(int level, String localizedName) { + this.level = level; + this.localizedName = localizedName; + } + + public int getLevel() { + return level; + } + + public String getLocalizedName() { + return localizedName; + } + } + +} diff --git a/src/de/epiceric/shopchest/language/EntityName.java b/src/de/epiceric/shopchest/language/EntityName.java new file mode 100644 index 0000000..072be34 --- /dev/null +++ b/src/de/epiceric/shopchest/language/EntityName.java @@ -0,0 +1,22 @@ +package de.epiceric.shopchest.language; + +import org.bukkit.entity.EntityType; + +public class EntityName { + + private String localizedName; + private EntityType entityType; + + public EntityName(EntityType entityType, String localizedName) { + this.entityType = entityType; + this.localizedName = localizedName; + } + + public EntityType getEntityType() { + return entityType; + } + + public String getLocalizedName() { + return localizedName; + } +} diff --git a/src/de/epiceric/shopchest/language/ItemName.java b/src/de/epiceric/shopchest/language/ItemName.java new file mode 100644 index 0000000..e8c00e4 --- /dev/null +++ b/src/de/epiceric/shopchest/language/ItemName.java @@ -0,0 +1,35 @@ +package de.epiceric.shopchest.language; + +import org.bukkit.Material; + +public class ItemName { + + private Material material; + private int subID; + private String localizedName; + + public ItemName(Material material, int subID, String localizedName) { + this.material = material; + this.subID = subID; + this.localizedName = localizedName; + } + + public ItemName(Material material, String localizedName) { + this.material = material; + this.subID = 0; + this.localizedName = localizedName; + } + + public Material getMaterial() { + return material; + } + + public int getSubID() { + return subID; + } + + public String getLocalizedName() { + return localizedName; + } + +} diff --git a/src/de/epiceric/shopchest/language/LanguageUtils.java b/src/de/epiceric/shopchest/language/LanguageUtils.java new file mode 100644 index 0000000..929220c --- /dev/null +++ b/src/de/epiceric/shopchest/language/LanguageUtils.java @@ -0,0 +1,1079 @@ +package de.epiceric.shopchest.language; + +import de.epiceric.shopchest.ShopChest; +import de.epiceric.shopchest.config.LanguageConfiguration; +import de.epiceric.shopchest.config.Regex; +import de.epiceric.shopchest.interfaces.SpawnEggMeta; +import de.epiceric.shopchest.interfaces.spawneggmeta.*; +import de.epiceric.shopchest.utils.Utils; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.EntityType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BookMeta; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionType; + +import java.util.ArrayList; + +public class LanguageUtils { + + private static ShopChest plugin = ShopChest.getInstance(); + private static LanguageConfiguration langConfig = plugin.getLanguageConfig(); + + private static ArrayList itemNames = new ArrayList<>(); + private static ArrayList enchantmentNames = new ArrayList<>(); + private static ArrayList enchantmentLevelNames = new ArrayList<>(); + private static ArrayList potionEffectNames = new ArrayList<>(); + private static ArrayList entityNames = new ArrayList<>(); + private static ArrayList potionNames = new ArrayList<>(); + private static ArrayList musicDiscNames = new ArrayList<>(); + private static ArrayList messages = new ArrayList<>(); + + + public static void load() { + itemNames.add(new ItemName(Material.STONE, langConfig.getString("tile.stone.stone.name", "Stone"))); + itemNames.add(new ItemName(Material.STONE, 1, langConfig.getString("tile.stone.granite.name", "Granite"))); + itemNames.add(new ItemName(Material.STONE, 2, langConfig.getString("tile.stone.graniteSmooth.name", "Polished Granite"))); + itemNames.add(new ItemName(Material.STONE, 3, langConfig.getString("tile.stone.diorite.name", "Diorite"))); + itemNames.add(new ItemName(Material.STONE, 4, langConfig.getString("tile.stone.dioriteSmooth.name", "Polished Diorite"))); + itemNames.add(new ItemName(Material.STONE, 5, langConfig.getString("tile.stone.andesite.name", "Andesite"))); + itemNames.add(new ItemName(Material.STONE, 6, langConfig.getString("tile.stone.andesiteSmooth.name", "Polished Andesite"))); + itemNames.add(new ItemName(Material.GRASS, langConfig.getString("tile.grass.name", "Grass Block"))); + itemNames.add(new ItemName(Material.DIRT, langConfig.getString("tile.dirt.default.name", "Dirt"))); + itemNames.add(new ItemName(Material.DIRT, 1, langConfig.getString("tile.dirt.coarse.name", "Coarse Dirt"))); + itemNames.add(new ItemName(Material.DIRT, 2, langConfig.getString("tile.dirt.podzol.name", "Podzol"))); + itemNames.add(new ItemName(Material.COBBLESTONE, langConfig.getString("tile.stonebrick.name", "Cobblestone"))); + itemNames.add(new ItemName(Material.WOOD, langConfig.getString("tile.wood.oak.name", "Oak Wood Planks"))); + itemNames.add(new ItemName(Material.WOOD, 1, langConfig.getString("tile.wood.spruce.name", "Spruce Wood Planks"))); + itemNames.add(new ItemName(Material.WOOD, 2, langConfig.getString("tile.wood.birch.name", "Birch Wood Planks"))); + itemNames.add(new ItemName(Material.WOOD, 3, langConfig.getString("tile.wood.jungle.name", "Jungle Wood Planks"))); + itemNames.add(new ItemName(Material.WOOD, 4, langConfig.getString("tile.wood.acacia.name", "Acacia Wood Planks"))); + itemNames.add(new ItemName(Material.WOOD, 5, langConfig.getString("tile.wood.big_oak.name", "Dark Oak Wood Planks"))); + itemNames.add(new ItemName(Material.SAPLING, langConfig.getString("tile.sapling.oak.name", "Oak Sapling"))); + itemNames.add(new ItemName(Material.SAPLING, 1, langConfig.getString("tile.sapling.spruce.name", "Spruce Sapling"))); + itemNames.add(new ItemName(Material.SAPLING, 2, langConfig.getString("tile.sapling.birch.name", "Birch Sapling"))); + itemNames.add(new ItemName(Material.SAPLING, 3, langConfig.getString("tile.sapling.jungle.name", "Jungle Sapling"))); + itemNames.add(new ItemName(Material.SAPLING, 4, langConfig.getString("tile.sapling.acacia.name", "Acacia Sapling"))); + itemNames.add(new ItemName(Material.SAPLING, 5, langConfig.getString("tile.sapling.big_oak.name", "Dark Oak Sapling"))); + itemNames.add(new ItemName(Material.BEDROCK, langConfig.getString("tile.bedrock.name", "Bedrock"))); + itemNames.add(new ItemName(Material.WATER, langConfig.getString("tile.water.name", "Water"))); + itemNames.add(new ItemName(Material.LAVA, langConfig.getString("tile.lava.name", "Lava"))); + itemNames.add(new ItemName(Material.SAND, langConfig.getString("tile.sand.default.name", "Sand"))); + itemNames.add(new ItemName(Material.SAND, 1, langConfig.getString("tile.sand.red.name", "Red Sand"))); + itemNames.add(new ItemName(Material.GRAVEL, langConfig.getString("tile.gravel.name", "Gravel"))); + itemNames.add(new ItemName(Material.GOLD_ORE, langConfig.getString("tile.oreGold.name", "Gold Ore"))); + itemNames.add(new ItemName(Material.IRON_ORE, langConfig.getString("tile.oreIron.name", "Iron Ore"))); + itemNames.add(new ItemName(Material.COAL_ORE, langConfig.getString("tile.oreCoal.name", "Coal Ore"))); + itemNames.add(new ItemName(Material.LOG, langConfig.getString("tile.log.oak.name", "Oak Wood"))); + itemNames.add(new ItemName(Material.LOG, 1, langConfig.getString("tile.log.spruce.name", "Spruce Wood"))); + itemNames.add(new ItemName(Material.LOG, 2, langConfig.getString("tile.log.birch.name", "Birch Wood"))); + itemNames.add(new ItemName(Material.LOG, 3, langConfig.getString("tile.log.jungle.name", "Jungle Wood"))); + itemNames.add(new ItemName(Material.LEAVES, langConfig.getString("tile.leaves.oak.name", "Oak Leaves"))); + itemNames.add(new ItemName(Material.LEAVES, 1, langConfig.getString("tile.leaves.spruce.name", "Spruce Leaves"))); + itemNames.add(new ItemName(Material.LEAVES, 2, langConfig.getString("tile.leaves.birch.name", "Birch Leaves"))); + itemNames.add(new ItemName(Material.LEAVES, 3, langConfig.getString("tile.leaves.jungle.name", "Jungle Leaves"))); + itemNames.add(new ItemName(Material.SPONGE, langConfig.getString("tile.sponge.dry.name", "Sponge"))); + itemNames.add(new ItemName(Material.SPONGE, 1, langConfig.getString("tile.sponge.wet.name", "Wet Sponge"))); + itemNames.add(new ItemName(Material.GLASS, langConfig.getString("tile.glass.name", "Glass"))); + itemNames.add(new ItemName(Material.LAPIS_ORE, langConfig.getString("tile.oreLapis.name", "Lapis Lazuli Ore"))); + itemNames.add(new ItemName(Material.LAPIS_BLOCK, langConfig.getString("tile.blockLapis.name", "Lapis Lazuli Block"))); + itemNames.add(new ItemName(Material.DISPENSER, langConfig.getString("tile.dispenser.name", "Dispenser"))); + itemNames.add(new ItemName(Material.SANDSTONE, langConfig.getString("tile.sandstone.default.name", "Sandstone"))); + itemNames.add(new ItemName(Material.SANDSTONE, 1, langConfig.getString("tile.sandstone.chiseled.name", "Chiseled Sandstone"))); + itemNames.add(new ItemName(Material.SANDSTONE, 2, langConfig.getString("tile.sandstone.smooth.name", "Smooth Sandstone"))); + itemNames.add(new ItemName(Material.NOTE_BLOCK, langConfig.getString("tile.musicBlock.name", "Note Block"))); + itemNames.add(new ItemName(Material.BED, langConfig.getString("tile.bed.name", "Bed"))); + itemNames.add(new ItemName(Material.POWERED_RAIL, langConfig.getString("tile.goldenRail.name", "Powered Rail"))); + itemNames.add(new ItemName(Material.DETECTOR_RAIL, langConfig.getString("tile.detectorRail.name", "Detector Rail"))); + itemNames.add(new ItemName(Material.PISTON_STICKY_BASE, langConfig.getString("tile.pistonStickyBase.name", "Sticky Piston"))); + itemNames.add(new ItemName(Material.WEB, langConfig.getString("tile.web.name", "Web"))); + itemNames.add(new ItemName(Material.LONG_GRASS, langConfig.getString("tile.tallgrass.shrub.name", "Shrub"))); + itemNames.add(new ItemName(Material.LONG_GRASS, 1, langConfig.getString("tile.tallgrass.grass.name", "Grass"))); + itemNames.add(new ItemName(Material.LONG_GRASS, 2, langConfig.getString("tile.tallgrass.fern.name", "Fern"))); + itemNames.add(new ItemName(Material.DEAD_BUSH, langConfig.getString("tile.deadbush.name", "Dead Bush"))); + itemNames.add(new ItemName(Material.PISTON_BASE, langConfig.getString("tile.pistonBase.name", "Piston"))); + itemNames.add(new ItemName(Material.WOOL, langConfig.getString("tile.cloth.white.name", "Wool"))); + itemNames.add(new ItemName(Material.WOOL, 1, langConfig.getString("tile.cloth.orange.name", "Orange Wool"))); + itemNames.add(new ItemName(Material.WOOL, 2, langConfig.getString("tile.cloth.magenta.name", "Magenta Wool"))); + itemNames.add(new ItemName(Material.WOOL, 3, langConfig.getString("tile.cloth.lightBlue.name", "Light Blue Wool"))); + itemNames.add(new ItemName(Material.WOOL, 4, langConfig.getString("tile.cloth.yellow.name", "Yellow Wool"))); + itemNames.add(new ItemName(Material.WOOL, 5, langConfig.getString("tile.cloth.lime.name", "Lime Wool"))); + itemNames.add(new ItemName(Material.WOOL, 6, langConfig.getString("tile.cloth.pink.name", "Pink Wool"))); + itemNames.add(new ItemName(Material.WOOL, 7, langConfig.getString("tile.cloth.gray.name", "Gray Wool"))); + itemNames.add(new ItemName(Material.WOOL, 8, langConfig.getString("tile.cloth.silver.name", "Light Gray Wool"))); + itemNames.add(new ItemName(Material.WOOL, 9, langConfig.getString("tile.cloth.cyan.name", "Cyan Wool"))); + itemNames.add(new ItemName(Material.WOOL, 10, langConfig.getString("tile.cloth.purple.name", "Purple Wool"))); + itemNames.add(new ItemName(Material.WOOL, 11, langConfig.getString("tile.cloth.blue.name", "Blue Wool"))); + itemNames.add(new ItemName(Material.WOOL, 12, langConfig.getString("tile.cloth.brown.name", "Brown Wool"))); + itemNames.add(new ItemName(Material.WOOL, 13, langConfig.getString("tile.cloth.green.name", "Green Wool"))); + itemNames.add(new ItemName(Material.WOOL, 14, langConfig.getString("tile.cloth.red.name", "Red Wool"))); + itemNames.add(new ItemName(Material.WOOL, 15, langConfig.getString("tile.cloth.black.name", "Black Wool"))); + itemNames.add(new ItemName(Material.YELLOW_FLOWER, langConfig.getString("tile.flower1.dandelion.name", "Dandelion"))); + itemNames.add(new ItemName(Material.RED_ROSE, langConfig.getString("tile.flower2.poppy.name", "Poppy"))); + itemNames.add(new ItemName(Material.RED_ROSE, 1, langConfig.getString("tile.flower2.blueOrchid.name", "Blue Orchid"))); + itemNames.add(new ItemName(Material.RED_ROSE, 2, langConfig.getString("tile.flower2.allium.name", "Allium"))); + itemNames.add(new ItemName(Material.RED_ROSE, 3, langConfig.getString("tile.flower2.houstonia.name", "Azure Bluet"))); + itemNames.add(new ItemName(Material.RED_ROSE, 4, langConfig.getString("tile.flower2.tulipRed.name", "Red Tulip"))); + itemNames.add(new ItemName(Material.RED_ROSE, 5, langConfig.getString("tile.flower2.tulipOrange.name", "Orange Tulip"))); + itemNames.add(new ItemName(Material.RED_ROSE, 6, langConfig.getString("tile.flower2.tulipWhite.name", "White Tulip"))); + itemNames.add(new ItemName(Material.RED_ROSE, 7, langConfig.getString("tile.flower2.tulipPink.name", "Pink Tulip"))); + itemNames.add(new ItemName(Material.RED_ROSE, 8, langConfig.getString("tile.flower2.oxeyeDaisy.name", "Oxeye Daisy"))); + itemNames.add(new ItemName(Material.BROWN_MUSHROOM, langConfig.getString("tile.mushroom.name", "Mushroom"))); + itemNames.add(new ItemName(Material.RED_MUSHROOM, langConfig.getString("tile.mushroom.name", "Mushroom"))); + itemNames.add(new ItemName(Material.GOLD_BLOCK, langConfig.getString("tile.blockGold.name", "Block of Gold"))); + itemNames.add(new ItemName(Material.IRON_BLOCK, langConfig.getString("tile.blockIron.name", "Block of Iron"))); + itemNames.add(new ItemName(Material.STEP, langConfig.getString("tile.stoneSlab.stone.name", "Stone Slab"))); + itemNames.add(new ItemName(Material.STEP, 1, langConfig.getString("tile.stoneSlab.sand.name", "Sandstone Slab"))); + itemNames.add(new ItemName(Material.STEP, 2, langConfig.getString("tile.stoneSlab.wood.name", "Wooden Slab"))); + itemNames.add(new ItemName(Material.STEP, 3, langConfig.getString("tile.stoneSlab.cobble.name", "Cobblestone Slab"))); + itemNames.add(new ItemName(Material.STEP, 4, langConfig.getString("tile.stoneSlab.brick.name", "Brick Slab"))); + itemNames.add(new ItemName(Material.STEP, 5, langConfig.getString("tile.stoneSlab.smoothStoneBrick.name", "Stone Brick Slab"))); + itemNames.add(new ItemName(Material.STEP, 6, langConfig.getString("tile.stoneSlab.netherBrick.name", "Nether Brick Slab"))); + itemNames.add(new ItemName(Material.STEP, 7, langConfig.getString("tile.stoneSlab.quartz.name", "Quartz Slab"))); + itemNames.add(new ItemName(Material.BRICK, langConfig.getString("tile.brick.name", "Brick"))); + itemNames.add(new ItemName(Material.TNT, langConfig.getString("tile.tnt.name", "TNT"))); + itemNames.add(new ItemName(Material.BOOKSHELF, langConfig.getString("tile.bookshelf.name", "Bookshelf"))); + itemNames.add(new ItemName(Material.MOSSY_COBBLESTONE, langConfig.getString("tile.stoneMoss.name", "Moss Stone"))); + itemNames.add(new ItemName(Material.OBSIDIAN, langConfig.getString("tile.obsidian.name", "Obsidian"))); + itemNames.add(new ItemName(Material.TORCH, langConfig.getString("tile.torch.name", "Torch"))); + itemNames.add(new ItemName(Material.FIRE, langConfig.getString("tile.fire.name", "Fire"))); + itemNames.add(new ItemName(Material.MOB_SPAWNER, langConfig.getString("tile.mobSpawner.name", "Mob Spawner"))); + itemNames.add(new ItemName(Material.WOOD_STAIRS, langConfig.getString("tile.stairsWood.name", "Oak Wood Stairs"))); + itemNames.add(new ItemName(Material.CHEST, langConfig.getString("tile.chest.name", "Chest"))); + itemNames.add(new ItemName(Material.DIAMOND_ORE, langConfig.getString("tile.oreDiamond.name", "Diamond Ore"))); + itemNames.add(new ItemName(Material.DIAMOND_BLOCK, langConfig.getString("tile.blockDiamond.name", "Block of Diamond"))); + itemNames.add(new ItemName(Material.WORKBENCH, langConfig.getString("tile.workbench.name", "Crafting Table"))); + itemNames.add(new ItemName(Material.SOIL, langConfig.getString("tile.farmland.name", "Farmland"))); + itemNames.add(new ItemName(Material.FURNACE, langConfig.getString("tile.furnace.name", "Furnace"))); + itemNames.add(new ItemName(Material.LADDER, langConfig.getString("tile.ladder.name", "Ladder"))); + itemNames.add(new ItemName(Material.RAILS, langConfig.getString("tile.rail.name", "Rail"))); + itemNames.add(new ItemName(Material.COBBLESTONE_STAIRS, langConfig.getString("tile.stairsStone.name", "Stone Stairs"))); + itemNames.add(new ItemName(Material.LEVER, langConfig.getString("tile.lever.name", "Lever"))); + itemNames.add(new ItemName(Material.STONE_PLATE, langConfig.getString("tile.pressurePlateStone.name", "Stone Pressure Plate"))); + itemNames.add(new ItemName(Material.WOOD_PLATE, langConfig.getString("tile.pressurePlateWood.name", "Wooden Pressure Plate"))); + itemNames.add(new ItemName(Material.REDSTONE_ORE, langConfig.getString("tile.oreRedstone.name", "Redstone Ore"))); + itemNames.add(new ItemName(Material.REDSTONE_TORCH_ON, langConfig.getString("tile.notGate.name", "Redstone Torch"))); + itemNames.add(new ItemName(Material.SNOW, langConfig.getString("tile.snow.name", "Snow"))); + itemNames.add(new ItemName(Material.ICE, langConfig.getString("tile.ice.name", "Ice"))); + itemNames.add(new ItemName(Material.SNOW_BLOCK, langConfig.getString("tile.snow.name", "Snow"))); + itemNames.add(new ItemName(Material.CACTUS, langConfig.getString("tile.cactus.name", "Cactus"))); + itemNames.add(new ItemName(Material.CLAY, langConfig.getString("tile.clay.name", "Clay"))); + itemNames.add(new ItemName(Material.JUKEBOX, langConfig.getString("tile.jukebox.name", "Jukebox"))); + itemNames.add(new ItemName(Material.FENCE, langConfig.getString("tile.fence.name", "Oak Fence"))); + itemNames.add(new ItemName(Material.PUMPKIN, langConfig.getString("tile.pumpkin.name", "Pumpkin"))); + itemNames.add(new ItemName(Material.NETHERRACK, langConfig.getString("tile.hellrock.name", "Netherrack"))); + itemNames.add(new ItemName(Material.SOUL_SAND, langConfig.getString("tile.hellsand.name", "Soul Sand"))); + itemNames.add(new ItemName(Material.GLOWSTONE, langConfig.getString("tile.lightgem.name", "Glowstone"))); + itemNames.add(new ItemName(Material.PORTAL, langConfig.getString("tile.portal.name", "Portal"))); + itemNames.add(new ItemName(Material.JACK_O_LANTERN, langConfig.getString("tile.litpumpkin.name", "Jack o'Lantern"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, langConfig.getString("tile.stainedGlass.white.name", "White Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 1, langConfig.getString("tile.stainedGlass.orange.name", "Orange Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 2, langConfig.getString("tile.stainedGlass.magenta.name", "Magenta Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 3, langConfig.getString("tile.stainedGlass.lightBlue.name", "Light Blue Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 4, langConfig.getString("tile.stainedGlass.yellow.name", "Yellow Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 5, langConfig.getString("tile.stainedGlass.lime.name", "Lime Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 6, langConfig.getString("tile.stainedGlass.pink.name", "Pink Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 7, langConfig.getString("tile.stainedGlass.gray.name", "Gray Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 8, langConfig.getString("tile.stainedGlass.silver.name", "Light Gray Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 9, langConfig.getString("tile.stainedGlass.cyan.name", "Cyan Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 10, langConfig.getString("tile.stainedGlass.purple.name", "Purple Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 11, langConfig.getString("tile.stainedGlass.blue.name", "Blue Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 12, langConfig.getString("tile.stainedGlass.brown.name", "Brown Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 13, langConfig.getString("tile.stainedGlass.green.name", "Green Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 14, langConfig.getString("tile.stainedGlass.red.name", "Red Stained Glass"))); + itemNames.add(new ItemName(Material.STAINED_GLASS, 15, langConfig.getString("tile.stainedGlass.black.name", "Black Stained Glass"))); + itemNames.add(new ItemName(Material.TRAP_DOOR, langConfig.getString("tile.trapdoor.name", "Wooden Trapdoor"))); + itemNames.add(new ItemName(Material.MONSTER_EGGS, langConfig.getString("tile.monsterStoneEgg.stone.name", "Stone Monster Egg"))); + itemNames.add(new ItemName(Material.MONSTER_EGGS, 1, langConfig.getString("tile.monsterStoneEgg.cobble.name", "Cobblestone Monster Egg"))); + itemNames.add(new ItemName(Material.MONSTER_EGGS, 2, langConfig.getString("tile.monsterStoneEgg.brick.name", "Stone Brick Monster Egg"))); + itemNames.add(new ItemName(Material.MONSTER_EGGS, 3, langConfig.getString("tile.monsterStoneEgg.mossybrick.name", "Mossy Stone Brick Monster Egg"))); + itemNames.add(new ItemName(Material.MONSTER_EGGS, 4, langConfig.getString("tile.monsterStoneEgg.crackedbrick.name", "Cracked Stone Brick Monster Egg"))); + itemNames.add(new ItemName(Material.MONSTER_EGGS, 5, langConfig.getString("tile.monsterStoneEgg.chiseledbrick.name", "Chiseled Stone Brick Monster Egg"))); + itemNames.add(new ItemName(Material.SMOOTH_BRICK, langConfig.getString("tile.stonebricksmooth.default.name", "Stone Bricks"))); + itemNames.add(new ItemName(Material.SMOOTH_BRICK, 1, langConfig.getString("tile.stonebricksmooth.mossy.name", "Mossy Stone Bricks"))); + itemNames.add(new ItemName(Material.SMOOTH_BRICK, 2, langConfig.getString("tile.stonebricksmooth.cracked.name", "Cracked Stone Bricks"))); + itemNames.add(new ItemName(Material.SMOOTH_BRICK, 3, langConfig.getString("tile.stonebricksmooth.chiseled.name", "Chiseled Stone Bricks"))); + itemNames.add(new ItemName(Material.HUGE_MUSHROOM_1, langConfig.getString("tile.mushroom.name", "Mushroom"))); + itemNames.add(new ItemName(Material.HUGE_MUSHROOM_2, langConfig.getString("tile.mushroom.name", "Mushroom"))); + itemNames.add(new ItemName(Material.IRON_FENCE, langConfig.getString("tile.fenceIron.name", "Iron Bars"))); + itemNames.add(new ItemName(Material.THIN_GLASS, langConfig.getString("tile.thinGlass.name", "Glass Pane"))); + itemNames.add(new ItemName(Material.MELON_BLOCK, langConfig.getString("tile.melon.name", "Melon"))); + itemNames.add(new ItemName(Material.VINE, langConfig.getString("tile.vine.name", "Vines"))); + itemNames.add(new ItemName(Material.FENCE_GATE, langConfig.getString("tile.fenceGate.name", "Oak Fence Gate"))); + itemNames.add(new ItemName(Material.BRICK_STAIRS, langConfig.getString("tile.stairsBrick.name", "Brick Stairs"))); + itemNames.add(new ItemName(Material.SMOOTH_STAIRS, langConfig.getString("tile.stairsStoneBrickSmooth.name", "Stone Brick Stairs"))); + itemNames.add(new ItemName(Material.MYCEL, langConfig.getString("tile.mycel.name", "Mycelium"))); + itemNames.add(new ItemName(Material.WATER_LILY, langConfig.getString("tile.waterlily.name", "Lily Pad"))); + itemNames.add(new ItemName(Material.NETHER_BRICK, langConfig.getString("tile.netherBrick.name", "Nether Brick"))); + itemNames.add(new ItemName(Material.NETHER_FENCE, langConfig.getString("tile.netherFence.name", "Nether Brick Fence"))); + itemNames.add(new ItemName(Material.NETHER_BRICK_STAIRS, langConfig.getString("tile.stairsNetherBrick.name", "Nether Brick Stairs"))); + itemNames.add(new ItemName(Material.ENCHANTMENT_TABLE, langConfig.getString("tile.enchantmentTable.name", "Enchantment Table"))); + itemNames.add(new ItemName(Material.ENDER_PORTAL_FRAME, langConfig.getString("tile.endPortalFrame.name", "End Portal Frame"))); + itemNames.add(new ItemName(Material.ENDER_STONE, langConfig.getString("tile.whiteStone.name", "End Stone"))); + itemNames.add(new ItemName(Material.DRAGON_EGG, langConfig.getString("tile.dragonEgg.name", "Dragon Egg"))); + itemNames.add(new ItemName(Material.REDSTONE_LAMP_OFF, langConfig.getString("tile.redstoneLight.name", "Redstone Lamp"))); + itemNames.add(new ItemName(Material.WOOD_STEP, langConfig.getString("tile.woodSlab.oak.name", "Oak Wood Slab"))); + itemNames.add(new ItemName(Material.WOOD_STEP, 1, langConfig.getString("tile.woodSlab.spruce.name", "Spruce Wood Slab"))); + itemNames.add(new ItemName(Material.WOOD_STEP, 2, langConfig.getString("tile.woodSlab.birch.name", "Birch Wood Slab"))); + itemNames.add(new ItemName(Material.WOOD_STEP, 3, langConfig.getString("tile.woodSlab.jungle.name", "Jungle Wood Slab"))); + itemNames.add(new ItemName(Material.WOOD_STEP, 4, langConfig.getString("tile.woodSlab.acacia.name", "Acacia Wood Slab"))); + itemNames.add(new ItemName(Material.WOOD_STEP, 5, langConfig.getString("tile.woodSlab.big_oak.name", "Dark Oak Wood Slab"))); + itemNames.add(new ItemName(Material.SANDSTONE_STAIRS, langConfig.getString("tile.stairsSandStone.name", "Mycelium"))); + itemNames.add(new ItemName(Material.EMERALD_ORE, langConfig.getString("tile.oreEmerald.name", "Emerald Ore"))); + itemNames.add(new ItemName(Material.ENDER_CHEST, langConfig.getString("tile.enderChest.name", "Ender Chest"))); + itemNames.add(new ItemName(Material.TRIPWIRE_HOOK, langConfig.getString("tile.tripWireSource.name", "Tripwire Hook"))); + itemNames.add(new ItemName(Material.EMERALD_BLOCK, langConfig.getString("tile.blockEmerald.name", "Block of Emerald"))); + itemNames.add(new ItemName(Material.SPRUCE_WOOD_STAIRS, langConfig.getString("tile.stairsWoodSpruce.name", "Spruce Wood Stairs"))); + itemNames.add(new ItemName(Material.BIRCH_WOOD_STAIRS, langConfig.getString("tile.stairsWoodBirch.name", "Birch Wood Stairs"))); + itemNames.add(new ItemName(Material.JUNGLE_WOOD_STAIRS, langConfig.getString("tile.stairsWoodJungle.name", "Jungle Wood Stairs"))); + itemNames.add(new ItemName(Material.COMMAND, langConfig.getString("tile.commandBlock.name", "Command Block"))); + itemNames.add(new ItemName(Material.BEACON, langConfig.getString("tile.beacon.name", "Beacon"))); + itemNames.add(new ItemName(Material.COBBLE_WALL, langConfig.getString("tile.cobbleWall.normal.name", "Cobblestone Wall"))); + itemNames.add(new ItemName(Material.COBBLE_WALL, 1, langConfig.getString("tile.cobbleWall.mossy.name", "Mossy Cobblestone Wall"))); + itemNames.add(new ItemName(Material.WOOD_BUTTON, langConfig.getString("tile.button.name", "Button"))); + itemNames.add(new ItemName(Material.ANVIL, langConfig.getString("tile.anvil.intact.name", "Anvil"))); + itemNames.add(new ItemName(Material.ANVIL, 1, langConfig.getString("tile.anvil.slightlyDamaged.name", "Slightly Damaged Anvil"))); + itemNames.add(new ItemName(Material.ANVIL, 2, langConfig.getString("tile.anvil.veryDamaged.name", "Very Damaged Anvil"))); + itemNames.add(new ItemName(Material.TRAPPED_CHEST, langConfig.getString("tile.chestTrap.name", "Trapped Chest"))); + itemNames.add(new ItemName(Material.GOLD_PLATE, langConfig.getString("tile.weightedPlate_light.name", "Weighted Pressure Plate (Light)"))); + itemNames.add(new ItemName(Material.IRON_PLATE, langConfig.getString("tile.weightedPlate_heavy.name", "Weighted Pressure Plate (Heavy)"))); + itemNames.add(new ItemName(Material.DAYLIGHT_DETECTOR, langConfig.getString("tile.daylightDetector.name", "Daylight Sensor"))); + itemNames.add(new ItemName(Material.REDSTONE_BLOCK, langConfig.getString("tile.blockRedstone.name", "Block of Redstone"))); + itemNames.add(new ItemName(Material.QUARTZ_ORE, langConfig.getString("tile.netherquartz.name", "Nether Quartz Ore"))); + itemNames.add(new ItemName(Material.HOPPER, langConfig.getString("tile.hopper.name", "Hopper"))); + itemNames.add(new ItemName(Material.QUARTZ_BLOCK, langConfig.getString("tile.quartzBlock.default.name", "Block of Quartz"))); + itemNames.add(new ItemName(Material.QUARTZ_BLOCK, langConfig.getString("tile.quartzBlock.chiseled.name", "Chiseled Quartz Block"))); + itemNames.add(new ItemName(Material.QUARTZ_BLOCK, langConfig.getString("tile.quartzBlock.lines.name", "Pillar Quartz Block"))); + itemNames.add(new ItemName(Material.QUARTZ_STAIRS, langConfig.getString("tile.stairsQuartz.name", "Quartz Stairs"))); + itemNames.add(new ItemName(Material.ACTIVATOR_RAIL, langConfig.getString("tile.activatorRail.name", "Activator Rail"))); + itemNames.add(new ItemName(Material.DROPPER, langConfig.getString("tile.dropper.name", "Dropper"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, langConfig.getString("tile.clayHardenedStained.white.name", "White Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 1, langConfig.getString("tile.clayHardenedStained.orange.name", "Orange Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 2, langConfig.getString("tile.clayHardenedStained.magenta.name", "Magenta Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 3, langConfig.getString("tile.clayHardenedStained.lightBlue.name", "Light Blue Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 4, langConfig.getString("tile.clayHardenedStained.yellow.name", "Yellow Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 5, langConfig.getString("tile.clayHardenedStained.lime.name", "Lime Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 6, langConfig.getString("tile.clayHardenedStained.pink.name", "Pink Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 7, langConfig.getString("tile.clayHardenedStained.gray.name", "Gray Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 8, langConfig.getString("tile.clayHardenedStained.silver.name", "Light Gray Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 9, langConfig.getString("tile.clayHardenedStained.cyan.name", "Cyan Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 10, langConfig.getString("tile.clayHardenedStained.purple.name", "Purple Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 11, langConfig.getString("tile.clayHardenedStained.blue.name", "Blue Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 12, langConfig.getString("tile.clayHardenedStained.brown.name", "Brown Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 13, langConfig.getString("tile.clayHardenedStained.green.name", "Green Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 14, langConfig.getString("tile.clayHardenedStained.red.name", "Red Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_CLAY, 15, langConfig.getString("tile.clayHardenedStained.black.name", "Black Hardened Clay"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, langConfig.getString("tile.thinStainedGlass.white.name", "White Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 1, langConfig.getString("tile.thinStainedGlass.orange.name", "Orange Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 2, langConfig.getString("tile.thinStainedGlass.magenta.name", "Magenta Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 3, langConfig.getString("tile.thinStainedGlass.lightBlue.name", "Light Blue Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 4, langConfig.getString("tile.thinStainedGlass.yellow.name", "Yellow Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 5, langConfig.getString("tile.thinStainedGlass.lime.name", "Lime Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 6, langConfig.getString("tile.thinStainedGlass.pink.name", "Pink Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 7, langConfig.getString("tile.thinStainedGlass.gray.name", "Gray Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 8, langConfig.getString("tile.thinStainedGlass.silver.name", "Light Gray Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 9, langConfig.getString("tile.thinStainedGlass.cyan.name", "Cyan Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 10, langConfig.getString("tile.thinStainedGlass.purple.name", "Purple Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 11, langConfig.getString("tile.thinStainedGlass.blue.name", "Blue Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 12, langConfig.getString("tile.thinStainedGlass.brown.name", "Brown Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 13, langConfig.getString("tile.thinStainedGlass.green.name", "Green Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 14, langConfig.getString("tile.thinStainedGlass.red.name", "Red Stained Glass Pane"))); + itemNames.add(new ItemName(Material.STAINED_GLASS_PANE, 15, langConfig.getString("tile.thinStainedGlass.black.name", "Black Stained Glass Pane"))); + itemNames.add(new ItemName(Material.LEAVES_2, langConfig.getString("tile.leaves.acacia.name", "Acacia Leaves"))); + itemNames.add(new ItemName(Material.LEAVES_2, 1, langConfig.getString("tile.leaves.big_oak.name", "Dark Oak Leaves"))); + itemNames.add(new ItemName(Material.LOG_2, langConfig.getString("tile.log.acacia.name", "Acacia Wood"))); + itemNames.add(new ItemName(Material.LOG_2, 1, langConfig.getString("tile.log.big_oak.name", "Dark Oak Wood"))); + itemNames.add(new ItemName(Material.ACACIA_STAIRS, langConfig.getString("tile.stairsWoodAcacia.name", "Acacia Wood Stairs"))); + itemNames.add(new ItemName(Material.DARK_OAK_STAIRS, langConfig.getString("tile.stairsWoodDarkOak.name", "Dark Oak Wood Stairs"))); + itemNames.add(new ItemName(Material.SLIME_BLOCK, langConfig.getString("tile.slime.name", "Slime Block"))); + itemNames.add(new ItemName(Material.BARRIER, langConfig.getString("tile.barrier.name", "Barrier"))); + itemNames.add(new ItemName(Material.IRON_TRAPDOOR, langConfig.getString("tile.ironTrapdoor.name", "Iron Trapdoor"))); + itemNames.add(new ItemName(Material.PRISMARINE, langConfig.getString("tile.prismarine.rough.name", "Prismarine"))); + itemNames.add(new ItemName(Material.PRISMARINE, 1, langConfig.getString("tile.prismarine.bricks.name", "Prismarine Bricks"))); + itemNames.add(new ItemName(Material.PRISMARINE, 2, langConfig.getString("tile.prismarine.dark.name", "Dark Prismarine"))); + itemNames.add(new ItemName(Material.SEA_LANTERN, langConfig.getString("tile.seaLantern.name", "Sea Lantern"))); + itemNames.add(new ItemName(Material.HAY_BLOCK, langConfig.getString("tile.hayBlock.name", "Hay Bale"))); + itemNames.add(new ItemName(Material.CARPET, langConfig.getString("tile.woolCarpet.white.name", "White Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 1, langConfig.getString("tile.woolCarpet.orange.name", "Orange Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 2, langConfig.getString("tile.woolCarpet.magenta.name", "Magenta Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 3, langConfig.getString("tile.woolCarpet.lightBlue.name", "Light Blue Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 4, langConfig.getString("tile.woolCarpet.yellow.name", "Yellow Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 5, langConfig.getString("tile.woolCarpet.lime.name", "Lime Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 6, langConfig.getString("tile.woolCarpet.pink.name", "Pink Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 7, langConfig.getString("tile.woolCarpet.gray.name", "Gray Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 8, langConfig.getString("tile.woolCarpet.silver.name", "Light Gray Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 9, langConfig.getString("tile.woolCarpet.cyan.name", "Cyan Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 10, langConfig.getString("tile.woolCarpet.purple.name", "Purple Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 11, langConfig.getString("tile.woolCarpet.blue.name", "Blue Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 12, langConfig.getString("tile.woolCarpet.brown.name", "Brown Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 13, langConfig.getString("tile.woolCarpet.green.name", "Green Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 14, langConfig.getString("tile.woolCarpet.red.name", "Red Carpet"))); + itemNames.add(new ItemName(Material.CARPET, 15, langConfig.getString("tile.woolCarpet.black.name", "Black Carpet"))); + itemNames.add(new ItemName(Material.HARD_CLAY, langConfig.getString("tile.clayHardened.name", "Hardened Clay"))); + itemNames.add(new ItemName(Material.COAL_BLOCK, langConfig.getString("tile.blockCoal.name", "Block of Coal"))); + itemNames.add(new ItemName(Material.PACKED_ICE, langConfig.getString("tile.icePacked.name", "Packed Ice"))); + itemNames.add(new ItemName(Material.DOUBLE_PLANT, langConfig.getString("tile.doublePlant.sunflower.name", "Sunflower"))); + itemNames.add(new ItemName(Material.DOUBLE_PLANT, 1, langConfig.getString("tile.doublePlant.syringa.name", "Lilac"))); + itemNames.add(new ItemName(Material.DOUBLE_PLANT, 2, langConfig.getString("tile.doublePlant.grass.name", "Double Tallgrass"))); + itemNames.add(new ItemName(Material.DOUBLE_PLANT, 3, langConfig.getString("tile.doublePlant.fern.name", "Large Fern"))); + itemNames.add(new ItemName(Material.DOUBLE_PLANT, 4, langConfig.getString("tile.doublePlant.rose.name", "Rose Bush"))); + itemNames.add(new ItemName(Material.DOUBLE_PLANT, 5, langConfig.getString("tile.doublePlant.paeonia.name", "Peony"))); + itemNames.add(new ItemName(Material.RED_SANDSTONE, langConfig.getString("tile.redSandStone.default.name", "Red Sandstone"))); + itemNames.add(new ItemName(Material.RED_SANDSTONE, 1, langConfig.getString("tile.redSandStone.chiseled.name", "Chiseled Red Sandstone"))); + itemNames.add(new ItemName(Material.RED_SANDSTONE, 2, langConfig.getString("tile.redSandStone.smooth.name", "Smooth Red Sandstone"))); + itemNames.add(new ItemName(Material.RED_SANDSTONE_STAIRS, langConfig.getString("tile.stairsRedSandStone.name", "Red Sandstone Stairs"))); + itemNames.add(new ItemName(Material.STONE_SLAB2, langConfig.getString("tile.stoneSlab2.red_sandstone.name", "Red Sandstone Slab"))); + itemNames.add(new ItemName(Material.SPRUCE_FENCE_GATE, langConfig.getString("tile.spruceFenceGate.name", "Spruce Fence Gate"))); + itemNames.add(new ItemName(Material.BIRCH_FENCE_GATE, langConfig.getString("tile.birchFenceGate.name", "Birch Fence Gate"))); + itemNames.add(new ItemName(Material.JUNGLE_FENCE_GATE, langConfig.getString("tile.jungleFenceGate.name", "Jungle Fence Gate"))); + itemNames.add(new ItemName(Material.DARK_OAK_FENCE_GATE, langConfig.getString("tile.darkOakFenceGate.name", "Dark Oak Fence Gate"))); + itemNames.add(new ItemName(Material.ACACIA_FENCE_GATE, langConfig.getString("tile.acaciaFenceGate.name", "Acacia Fence Gate"))); + itemNames.add(new ItemName(Material.SPRUCE_FENCE, langConfig.getString("tile.spruceFence.name", "Spruce Fence"))); + itemNames.add(new ItemName(Material.BIRCH_FENCE, langConfig.getString("tile.birchFence.name", "Birch Fence"))); + itemNames.add(new ItemName(Material.JUNGLE_FENCE, langConfig.getString("tile.jungleFence.name", "Jungle Fence"))); + itemNames.add(new ItemName(Material.DARK_OAK_FENCE, langConfig.getString("tile.darkOakFence.name", "Dark Oak Fence"))); + itemNames.add(new ItemName(Material.ACACIA_FENCE, langConfig.getString("tile.acaciaFence.name", "Acacia Fence"))); + + if (Utils.getMajorVersion() >= 9) { + itemNames.add(new ItemName(Material.END_ROD, langConfig.getString("tile.endRod.name", "End Rod"))); + itemNames.add(new ItemName(Material.CHORUS_PLANT, langConfig.getString("tile.chorusPlant.name", "Chorus Plant"))); + itemNames.add(new ItemName(Material.CHORUS_FLOWER, langConfig.getString("tile.chorusFlower.name", "Chorus Flower"))); + itemNames.add(new ItemName(Material.PURPUR_BLOCK, langConfig.getString("tile.purpurBlock.name", "Purpur Block"))); + itemNames.add(new ItemName(Material.PURPUR_PILLAR, langConfig.getString("tile.purpurPillar.name", "Purpur Pillar"))); + itemNames.add(new ItemName(Material.PURPUR_STAIRS, langConfig.getString("tile.stairsPurpur.name", "Purpur Stairs"))); + itemNames.add(new ItemName(Material.PURPUR_SLAB, langConfig.getString("tile.purpurSlab.name", "Purpur Slab"))); + itemNames.add(new ItemName(Material.END_BRICKS, langConfig.getString("tile.endBricks.name", "End Stone Bricks"))); + itemNames.add(new ItemName(Material.GRASS_PATH, langConfig.getString("tile.grassPath.name", "Grass Path"))); + itemNames.add(new ItemName(Material.COMMAND_REPEATING, langConfig.getString("tile.repeatingCommandBlock.name", "Repeating Command Block"))); + itemNames.add(new ItemName(Material.COMMAND_CHAIN, langConfig.getString("tile.chainCommandBlock.name", "Chain Command Block"))); + itemNames.add(new ItemName(Material.STRUCTURE_BLOCK, langConfig.getString("tile.structureBlock.name", "Structure Block"))); + } + + if (Utils.getMajorVersion() >= 10) { + itemNames.add(new ItemName(Material.MAGMA, langConfig.getString("tile.magma.name", "Magma Block"))); + itemNames.add(new ItemName(Material.NETHER_WART_BLOCK, langConfig.getString("tile.netherWartBlock.name", "Nether Wart Block"))); + itemNames.add(new ItemName(Material.RED_NETHER_BRICK, langConfig.getString("tile.redNetherBrick.name", "Red Nether Brick"))); + itemNames.add(new ItemName(Material.BONE_BLOCK, langConfig.getString("tile.boneBlock.name", "Bone Block"))); + itemNames.add(new ItemName(Material.STRUCTURE_VOID, langConfig.getString("tile.structureVoid.name", "Structure Void"))); + } + + itemNames.add(new ItemName(Material.IRON_SPADE, langConfig.getString("item.shovelIron.name", "Iron Shovel"))); + itemNames.add(new ItemName(Material.IRON_PICKAXE, langConfig.getString("item.pickaxeIron.name", "Iron Pickaxe"))); + itemNames.add(new ItemName(Material.IRON_AXE, langConfig.getString("item.hatchetIron.name", "Iron Axe"))); + itemNames.add(new ItemName(Material.FLINT_AND_STEEL, langConfig.getString("item.flintAndSteel.name", "Flint and Steel"))); + itemNames.add(new ItemName(Material.APPLE, langConfig.getString("item.apple.name", "Apple"))); + itemNames.add(new ItemName(Material.BOW, langConfig.getString("item.bow.name", "Bow"))); + itemNames.add(new ItemName(Material.ARROW, langConfig.getString("item.arrow.name", "Arrow"))); + itemNames.add(new ItemName(Material.COAL, langConfig.getString("item.coal.name", "Coal"))); + itemNames.add(new ItemName(Material.COAL, 1, langConfig.getString("item.charcoal.name", "Charcoal"))); + itemNames.add(new ItemName(Material.DIAMOND, langConfig.getString("item.diamond.name", "Diamond"))); + itemNames.add(new ItemName(Material.IRON_INGOT, langConfig.getString("item.ingotIron.name", "Iron Ingot"))); + itemNames.add(new ItemName(Material.GOLD_INGOT, langConfig.getString("item.ingotGold.name", "Gold Ingot"))); + itemNames.add(new ItemName(Material.IRON_SWORD, langConfig.getString("item.swordIron.name", "Iron Sword"))); + itemNames.add(new ItemName(Material.WOOD_SWORD, langConfig.getString("item.swordWood.name", "Wooden Sword"))); + itemNames.add(new ItemName(Material.WOOD_SPADE, langConfig.getString("item.shovelWood.name", "Wooden Shovel"))); + itemNames.add(new ItemName(Material.WOOD_PICKAXE, langConfig.getString("item.pickaxeWood.name", "Wooden Pickaxe"))); + itemNames.add(new ItemName(Material.WOOD_AXE, langConfig.getString("item.hatchetWood.name", "Wooden Axe"))); + itemNames.add(new ItemName(Material.STONE_SWORD, langConfig.getString("item.swordStone.name", "Stone Sword"))); + itemNames.add(new ItemName(Material.STONE_SPADE, langConfig.getString("item.shovelStone.name", "Stone Shovel"))); + itemNames.add(new ItemName(Material.STONE_PICKAXE, langConfig.getString("item.pickaxeStone.name", "Stone Pickaxe"))); + itemNames.add(new ItemName(Material.STONE_AXE, langConfig.getString("item.hatchetStone.name", "Stone Axe"))); + itemNames.add(new ItemName(Material.DIAMOND_SWORD, langConfig.getString("item.swordDiamond.name", "Diamond Sword"))); + itemNames.add(new ItemName(Material.DIAMOND_SPADE, langConfig.getString("item.shovelDiamond.name", "Diamond Shovel"))); + itemNames.add(new ItemName(Material.DIAMOND_PICKAXE, langConfig.getString("item.pickaxeDiamond.name", "Diamond Pickaxe"))); + itemNames.add(new ItemName(Material.DIAMOND_AXE, langConfig.getString("item.hatchetDiamond.name", "Diamond Axe"))); + itemNames.add(new ItemName(Material.STICK, langConfig.getString("item.stick.name", "Stick"))); + itemNames.add(new ItemName(Material.BOWL, langConfig.getString("item.bowl.name", "Bowl"))); + itemNames.add(new ItemName(Material.MUSHROOM_SOUP, langConfig.getString("item.mushroomStew.name", "Mushroom Stew"))); + itemNames.add(new ItemName(Material.GOLD_SWORD, langConfig.getString("item.swordGold.name", "Golden Sword"))); + itemNames.add(new ItemName(Material.GOLD_SPADE, langConfig.getString("item.shovelGold.name", "Golden Shovel"))); + itemNames.add(new ItemName(Material.GOLD_PICKAXE, langConfig.getString("item.pickaxeGold.name", "Golden Pickaxe"))); + itemNames.add(new ItemName(Material.GOLD_AXE, langConfig.getString("item.hatchetGold.name", "Golden Axe"))); + itemNames.add(new ItemName(Material.STRING, langConfig.getString("item.string.name", "String"))); + itemNames.add(new ItemName(Material.FEATHER, langConfig.getString("item.feather.name", "Feather"))); + itemNames.add(new ItemName(Material.SULPHUR, langConfig.getString("item.sulphur.name", "Gunpowder"))); + itemNames.add(new ItemName(Material.WOOD_HOE, langConfig.getString("item.hoeWood.name", "Wooden Hoe"))); + itemNames.add(new ItemName(Material.STONE_HOE, langConfig.getString("item.hoeStone.name", "Stone Hoe"))); + itemNames.add(new ItemName(Material.IRON_HOE, langConfig.getString("item.hoeIron.name", "Iron Hoe"))); + itemNames.add(new ItemName(Material.DIAMOND_HOE, langConfig.getString("item.hoeDiamond.name", "Diamond Hoe"))); + itemNames.add(new ItemName(Material.GOLD_HOE, langConfig.getString("item.hoeGold.name", "Golden Hoe"))); + itemNames.add(new ItemName(Material.SEEDS, langConfig.getString("item.seeds.name", "Seeds"))); + itemNames.add(new ItemName(Material.WHEAT, langConfig.getString("item.wheat.name", "Wheat"))); + itemNames.add(new ItemName(Material.BREAD, langConfig.getString("item.bread.name", "Bread"))); + itemNames.add(new ItemName(Material.LEATHER_HELMET, langConfig.getString("item.helmetCloth.name", "Leather Cap"))); + itemNames.add(new ItemName(Material.LEATHER_CHESTPLATE, langConfig.getString("item.chestplateCloth.name", "Leather Tunic"))); + itemNames.add(new ItemName(Material.LEATHER_LEGGINGS, langConfig.getString("item.leggingsCloth.name", "Leather Pants"))); + itemNames.add(new ItemName(Material.LEATHER_BOOTS, langConfig.getString("item.bootsCloth.name", "Leather Boots"))); + itemNames.add(new ItemName(Material.CHAINMAIL_HELMET, langConfig.getString("item.helmetChain.name", "Chain Helmet"))); + itemNames.add(new ItemName(Material.CHAINMAIL_CHESTPLATE, langConfig.getString("item.chestplateChain.name", "Chain Chestplate"))); + itemNames.add(new ItemName(Material.CHAINMAIL_LEGGINGS, langConfig.getString("item.leggingsChain.name", "Chain Leggings"))); + itemNames.add(new ItemName(Material.CHAINMAIL_BOOTS, langConfig.getString("item.bootsChain.name", "Chain Boots"))); + itemNames.add(new ItemName(Material.IRON_HELMET, langConfig.getString("item.helmetIron.name", "Iron Helmet"))); + itemNames.add(new ItemName(Material.IRON_CHESTPLATE, langConfig.getString("item.chestplateIron.name", "Iron Chestplate"))); + itemNames.add(new ItemName(Material.IRON_LEGGINGS, langConfig.getString("item.leggingsIron.name", "Iron Leggings"))); + itemNames.add(new ItemName(Material.IRON_BOOTS, langConfig.getString("item.bootsIron.name", "Iron Boots"))); + itemNames.add(new ItemName(Material.DIAMOND_HELMET, langConfig.getString("item.helmetDiamond.name", "Diamond Helmet"))); + itemNames.add(new ItemName(Material.DIAMOND_CHESTPLATE, langConfig.getString("item.chestplateDiamond.name", "Diamond Chestplate"))); + itemNames.add(new ItemName(Material.DIAMOND_LEGGINGS, langConfig.getString("item.leggingsDiamond.name", "Diamond Leggings"))); + itemNames.add(new ItemName(Material.DIAMOND_BOOTS, langConfig.getString("item.bootsDiamond.name", "Diamond Boots"))); + itemNames.add(new ItemName(Material.GOLD_HELMET, langConfig.getString("item.helmetGold.name", "Golden Helmet"))); + itemNames.add(new ItemName(Material.GOLD_CHESTPLATE, langConfig.getString("item.chestplateGold.name", "Golden Chestplate"))); + itemNames.add(new ItemName(Material.GOLD_LEGGINGS, langConfig.getString("item.leggingsGold.name", "Golden Leggings"))); + itemNames.add(new ItemName(Material.GOLD_BOOTS, langConfig.getString("item.bootsGold.name", "Golden Boots"))); + itemNames.add(new ItemName(Material.FLINT, langConfig.getString("item.flint.name", "Flint"))); + itemNames.add(new ItemName(Material.PORK, langConfig.getString("item.porkchopRaw.name", "Raw Porkchop"))); + itemNames.add(new ItemName(Material.GRILLED_PORK, langConfig.getString("item.porkchopCooked.name", "Cooked Porkchop"))); + itemNames.add(new ItemName(Material.PAINTING, langConfig.getString("item.painting.name", "Painting"))); + itemNames.add(new ItemName(Material.GOLDEN_APPLE, langConfig.getString("item.appleGold.name", "Golden Apple"))); + itemNames.add(new ItemName(Material.GOLDEN_APPLE, 1, langConfig.getString("item.appleGold.name", "Golden Apple"))); + itemNames.add(new ItemName(Material.SIGN, langConfig.getString("item.sign.name", "Sign"))); + itemNames.add(new ItemName(Material.WOOD_DOOR, langConfig.getString("item.doorOak.name", "Oak Door"))); + itemNames.add(new ItemName(Material.BUCKET, langConfig.getString("item.bucket.name", "Bucket"))); + itemNames.add(new ItemName(Material.WATER_BUCKET, langConfig.getString("item.bucketWater.name", "Water Bucket"))); + itemNames.add(new ItemName(Material.LAVA_BUCKET, langConfig.getString("item.bucketLava.name", "Lava Bucket"))); + itemNames.add(new ItemName(Material.MINECART, langConfig.getString("item.minecart.name", "Minecart"))); + itemNames.add(new ItemName(Material.SADDLE, langConfig.getString("item.saddle.name", "Saddle"))); + itemNames.add(new ItemName(Material.IRON_DOOR, langConfig.getString("item.doorIron.name", "Iron Door"))); + itemNames.add(new ItemName(Material.REDSTONE, langConfig.getString("item.redstone.name", "Redstone"))); + itemNames.add(new ItemName(Material.SNOW_BALL, langConfig.getString("item.snowball.name", "Snowball"))); + itemNames.add(new ItemName(Material.BOAT, langConfig.getString("item.boat.oak.name", "Oak Boat"))); + itemNames.add(new ItemName(Material.LEATHER, langConfig.getString("item.leather.name", "Leather"))); + itemNames.add(new ItemName(Material.MILK_BUCKET, langConfig.getString("item.milk.name", "Milk"))); + itemNames.add(new ItemName(Material.BRICK, langConfig.getString("item.brick.name", "Brick"))); + itemNames.add(new ItemName(Material.CLAY_BALL, langConfig.getString("item.clay.name", "Clay"))); + itemNames.add(new ItemName(Material.SUGAR_CANE, langConfig.getString("item.reeds.name", "Sugar Canes"))); + itemNames.add(new ItemName(Material.PAPER, langConfig.getString("item.paper.name", "Paper"))); + itemNames.add(new ItemName(Material.BOOK, langConfig.getString("item.book.name", "Book"))); + itemNames.add(new ItemName(Material.SLIME_BALL, langConfig.getString("item.slimeball.name", "Slimeball"))); + itemNames.add(new ItemName(Material.STORAGE_MINECART, langConfig.getString("item.minecartChest.name", "Minecart with Chest"))); + itemNames.add(new ItemName(Material.POWERED_MINECART, langConfig.getString("item.minecartFurnace.name", "Minecart with Furnace"))); + itemNames.add(new ItemName(Material.EGG, langConfig.getString("item.egg.name", "Egg"))); + itemNames.add(new ItemName(Material.COMPASS, langConfig.getString("item.compass.name", "Compass"))); + itemNames.add(new ItemName(Material.FISHING_ROD, langConfig.getString("item.fishingRod.name", "Fishing Rod"))); + itemNames.add(new ItemName(Material.WATCH, langConfig.getString("item.clock.name", "Clock"))); + itemNames.add(new ItemName(Material.GLOWSTONE_DUST, langConfig.getString("item.yellowDust.name", "Glowstone Dust"))); + itemNames.add(new ItemName(Material.RAW_FISH, langConfig.getString("item.fish.cod.raw.name", "Raw Fish"))); + itemNames.add(new ItemName(Material.RAW_FISH, 1, langConfig.getString("item.fish.salmon.raw.name", "Raw Salmon"))); + itemNames.add(new ItemName(Material.RAW_FISH, 2, langConfig.getString("item.fish.clownfish.raw.name", "Clownfish"))); + itemNames.add(new ItemName(Material.RAW_FISH, 3, langConfig.getString("item.fish.pufferfish.raw.name", "Pufferfish"))); + itemNames.add(new ItemName(Material.COOKED_FISH, langConfig.getString("item.fish.cod.cooked.name", "Cooked Fish"))); + itemNames.add(new ItemName(Material.COOKED_FISH, 1, langConfig.getString("item.fish.salmon.cooked.name", "Cooked Salmon"))); + itemNames.add(new ItemName(Material.INK_SACK, langConfig.getString("item.dyePowder.black.name", "Ink Sac"))); + itemNames.add(new ItemName(Material.INK_SACK, 1, langConfig.getString("item.dyePowder.red.name", "Rose Red"))); + itemNames.add(new ItemName(Material.INK_SACK, 2, langConfig.getString("item.dyePowder.green.name", "Cactus Green"))); + itemNames.add(new ItemName(Material.INK_SACK, 3, langConfig.getString("item.dyePowder.brown.name", "Cocoa Beans"))); + itemNames.add(new ItemName(Material.INK_SACK, 4, langConfig.getString("item.dyePowder.blue.name", "Lapis Lazuli"))); + itemNames.add(new ItemName(Material.INK_SACK, 5, langConfig.getString("item.dyePowder.purple.name", "Purple Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 6, langConfig.getString("item.dyePowder.cyan.name", "Cyan Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 7, langConfig.getString("item.dyePowder.silver.name", "Light Gray Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 8, langConfig.getString("item.dyePowder.gray.name", "Gray Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 9, langConfig.getString("item.dyePowder.pink.name", "Pink Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 10, langConfig.getString("item.dyePowder.lime.name", "Lime Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 11, langConfig.getString("item.dyePowder.yellow.name", "Dandelion Yellow"))); + itemNames.add(new ItemName(Material.INK_SACK, 12, langConfig.getString("item.dyePowder.lightBlue.name", "Light Blue Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 13, langConfig.getString("item.dyePowder.magenta.name", "Magenta Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 14, langConfig.getString("item.dyePowder.orange.name", "Orange Dye"))); + itemNames.add(new ItemName(Material.INK_SACK, 15, langConfig.getString("item.dyePowder.white.name", "Bone Meal"))); + itemNames.add(new ItemName(Material.BONE, langConfig.getString("item.bone.name", "Bone"))); + itemNames.add(new ItemName(Material.SUGAR, langConfig.getString("item.sugar.name", "Sugar"))); + itemNames.add(new ItemName(Material.CAKE, langConfig.getString("item.cake.name", "Cake"))); + itemNames.add(new ItemName(Material.BED, langConfig.getString("item.bed.name", "Bed"))); + itemNames.add(new ItemName(Material.DIODE, langConfig.getString("item.diode.name", "Redstone Repeater"))); + itemNames.add(new ItemName(Material.COOKIE, langConfig.getString("item.cookie.name", "Cookie"))); + itemNames.add(new ItemName(Material.MAP, langConfig.getString("item.map.name", "Map"))); + itemNames.add(new ItemName(Material.SHEARS, langConfig.getString("item.shears.name", "Shears"))); + itemNames.add(new ItemName(Material.MELON, langConfig.getString("item.melon.name", "Melon"))); + itemNames.add(new ItemName(Material.PUMPKIN_SEEDS, langConfig.getString("item.seeds_pumpkin.name", "Pumpkin Seeds"))); + itemNames.add(new ItemName(Material.MELON_SEEDS, langConfig.getString("item.seeds_melon.name", "Melon Seeds"))); + itemNames.add(new ItemName(Material.RAW_BEEF, langConfig.getString("item.beefRaw.name", "Raw Beef"))); + itemNames.add(new ItemName(Material.COOKED_BEEF, langConfig.getString("item.beefCooked.name", "Steak"))); + itemNames.add(new ItemName(Material.RAW_CHICKEN, langConfig.getString("item.chickenRaw.name", "Raw Chicken"))); + itemNames.add(new ItemName(Material.COOKED_CHICKEN, langConfig.getString("item.chickenCooked.name", "Cooked Chicken"))); + itemNames.add(new ItemName(Material.ROTTEN_FLESH, langConfig.getString("item.rottenFlesh.name", "Rotten Flesh"))); + itemNames.add(new ItemName(Material.ENDER_PEARL, langConfig.getString("item.enderPearl.name", "Ender Pearl"))); + itemNames.add(new ItemName(Material.BLAZE_ROD, langConfig.getString("item.blazeRod.name", "Blaze Rod"))); + itemNames.add(new ItemName(Material.GHAST_TEAR, langConfig.getString("item.ghastTear.name", "Ghast Tear"))); + itemNames.add(new ItemName(Material.GOLD_NUGGET, langConfig.getString("item.goldNugget.name", "Gold Nugget"))); + itemNames.add(new ItemName(Material.NETHER_WARTS, langConfig.getString("item.netherStalkSeeds.name", "Nether Wart"))); + itemNames.add(new ItemName(Material.POTION, langConfig.getString("item.potion.name", "Potion"))); + itemNames.add(new ItemName(Material.GLASS_BOTTLE, langConfig.getString("item.glassBottle.name", "Glass Bottle"))); + itemNames.add(new ItemName(Material.SPIDER_EYE, langConfig.getString("item.spiderEye.name", "Spider Eye"))); + itemNames.add(new ItemName(Material.FERMENTED_SPIDER_EYE, langConfig.getString("item.fermentedSpiderEye.name", "Fermented Spider Eye"))); + itemNames.add(new ItemName(Material.BLAZE_POWDER, langConfig.getString("item.blazePowder.name", "Blaze Powder"))); + itemNames.add(new ItemName(Material.MAGMA_CREAM, langConfig.getString("item.magmaCream.name", "Magma Cream"))); + itemNames.add(new ItemName(Material.BREWING_STAND_ITEM, langConfig.getString("item.brewingStand.name", "Brewing Stand"))); + itemNames.add(new ItemName(Material.CAULDRON_ITEM, langConfig.getString("item.cauldron.name", "Cauldron"))); + itemNames.add(new ItemName(Material.EYE_OF_ENDER, langConfig.getString("item.eyeOfEnder.name", "Eye of Ender"))); + itemNames.add(new ItemName(Material.SPECKLED_MELON, langConfig.getString("item.speckledMelon.name", "Glistering Melon"))); + itemNames.add(new ItemName(Material.MONSTER_EGG, langConfig.getString("item.monsterPlacer.name", "Spawn"))); + itemNames.add(new ItemName(Material.EXP_BOTTLE, langConfig.getString("item.expBottle.name", "Bottle o' Enchanting"))); + itemNames.add(new ItemName(Material.FIREWORK_CHARGE, langConfig.getString("item.fireball.name", "Fire Charge"))); + itemNames.add(new ItemName(Material.BOOK_AND_QUILL, langConfig.getString("item.writingBook.name", "Book and Quill"))); + itemNames.add(new ItemName(Material.WRITTEN_BOOK, langConfig.getString("item.writtenBook.name", "Written Book"))); + itemNames.add(new ItemName(Material.EMERALD, langConfig.getString("item.emerald.name", "Emerald"))); + itemNames.add(new ItemName(Material.ITEM_FRAME, langConfig.getString("item.frame.name", "Item Frame"))); + itemNames.add(new ItemName(Material.FLOWER_POT_ITEM, langConfig.getString("item.flowerPot.name", "Flower Pot"))); + itemNames.add(new ItemName(Material.CARROT_ITEM, langConfig.getString("item.carrots.name", "Carrot"))); + itemNames.add(new ItemName(Material.POTATO_ITEM, langConfig.getString("item.potato.name", "Potato"))); + itemNames.add(new ItemName(Material.BAKED_POTATO, langConfig.getString("item.potatoBaked.name", "Baked Potato"))); + itemNames.add(new ItemName(Material.POISONOUS_POTATO, langConfig.getString("item.potatoPoisonous.name", "Poisonous Potato"))); + itemNames.add(new ItemName(Material.EMPTY_MAP, langConfig.getString("item.emptyMap.name", "Empty Map"))); + itemNames.add(new ItemName(Material.GOLDEN_CARROT, langConfig.getString("item.carrotGolden.name", "Golden Carrot"))); + itemNames.add(new ItemName(Material.SKULL_ITEM, langConfig.getString("item.skull.skeleton.name", "Skeleton Skull"))); + itemNames.add(new ItemName(Material.SKULL_ITEM, 1, langConfig.getString("item.skull.wither.name", "Wither Skeleton Skull"))); + itemNames.add(new ItemName(Material.SKULL_ITEM, 2, langConfig.getString("item.skull.zombie.name", "Zombie Head"))); + itemNames.add(new ItemName(Material.SKULL_ITEM, 3, langConfig.getString("item.skull.char.name", "Head"))); + itemNames.add(new ItemName(Material.SKULL_ITEM, 4, langConfig.getString("item.skull.creeper.name", "Creeper Head"))); + itemNames.add(new ItemName(Material.SKULL_ITEM, 5, langConfig.getString("item.skull.dragon.name", "Creeper Head"))); + itemNames.add(new ItemName(Material.CARROT_STICK, langConfig.getString("item.carrotOnAStick.name", "Carrot on a Stick"))); + itemNames.add(new ItemName(Material.NETHER_STAR, langConfig.getString("item.netherStar.name", "Nether Star"))); + itemNames.add(new ItemName(Material.PUMPKIN_PIE, langConfig.getString("item.pumpkinPie.name", "Pumpkin Pie"))); + itemNames.add(new ItemName(Material.FIREWORK, langConfig.getString("item.fireworks.name", "Firework Rocket"))); + itemNames.add(new ItemName(Material.FIREWORK_CHARGE, langConfig.getString("item.fireworksCharge.name", "Firework Star"))); + itemNames.add(new ItemName(Material.ENCHANTED_BOOK, langConfig.getString("item.enchantedBook.name", "Enchanted Book"))); + itemNames.add(new ItemName(Material.REDSTONE_COMPARATOR, langConfig.getString("item.comparator.name", "Redstone Comparator"))); + itemNames.add(new ItemName(Material.NETHER_BRICK_ITEM, langConfig.getString("item.netherbrick.name", "Nether Brick"))); + itemNames.add(new ItemName(Material.QUARTZ, langConfig.getString("item.netherquartz.name", "Nether Quartz"))); + itemNames.add(new ItemName(Material.EXPLOSIVE_MINECART, langConfig.getString("item.minecartTnt.name", "Minecart with TNT"))); + itemNames.add(new ItemName(Material.HOPPER_MINECART, langConfig.getString("item.minecartHopper.name", "Minecart with Hopper"))); + itemNames.add(new ItemName(Material.PRISMARINE_SHARD, langConfig.getString("item.prismarineShard.name", "Prismarine Shard"))); + itemNames.add(new ItemName(Material.PRISMARINE_CRYSTALS, langConfig.getString("item.prismarineCrystals.name", "Prismarine Crystals"))); + itemNames.add(new ItemName(Material.RABBIT, langConfig.getString("item.rabbitRaw.name", "Raw Rabbit"))); + itemNames.add(new ItemName(Material.COOKED_RABBIT, langConfig.getString("item.rabbitCooked.name", "Cooked Rabbit"))); + itemNames.add(new ItemName(Material.RABBIT_STEW, langConfig.getString("item.rabbitStew.name", "Rabbit Stew"))); + itemNames.add(new ItemName(Material.RABBIT_FOOT, langConfig.getString("item.rabbitFoot.name", "Rabbit's Foot"))); + itemNames.add(new ItemName(Material.RABBIT_HIDE, langConfig.getString("item.rabbitHide.name", "Rabbit Hide"))); + itemNames.add(new ItemName(Material.ARMOR_STAND, langConfig.getString("item.armorStand.name", "Armor Stand"))); + itemNames.add(new ItemName(Material.IRON_BARDING, langConfig.getString("item.horsearmormetal.name", "Iron Horse Armor"))); + itemNames.add(new ItemName(Material.GOLD_BARDING, langConfig.getString("item.horsearmorgold.name", "Gold Horse Armor"))); + itemNames.add(new ItemName(Material.DIAMOND_BARDING, langConfig.getString("item.horsearmordiamond.name", "Diamond Horse Armor"))); + itemNames.add(new ItemName(Material.LEASH, langConfig.getString("item.leash.name", "Lead"))); + itemNames.add(new ItemName(Material.NAME_TAG, langConfig.getString("item.nameTag.name", "Name Tag"))); + itemNames.add(new ItemName(Material.COMMAND_MINECART, langConfig.getString("item.minecartCommandBlock.name", "Minecart with Command Block"))); + itemNames.add(new ItemName(Material.MUTTON, langConfig.getString("item.muttonRaw.name", "Raw Mutton"))); + itemNames.add(new ItemName(Material.COOKED_MUTTON, langConfig.getString("item.muttonCooked.name", "Cooked Mutton"))); + itemNames.add(new ItemName(Material.BANNER, langConfig.getString("item.banner.black.name", "Black Banner"))); //TODO ADD BANNER DESCRIPTIONS + itemNames.add(new ItemName(Material.BANNER, 1, langConfig.getString("item.banner.red.name", "Red Banner"))); + itemNames.add(new ItemName(Material.BANNER, 2, langConfig.getString("item.banner.green.name", "Green Banner"))); + itemNames.add(new ItemName(Material.BANNER, 3, langConfig.getString("item.banner.brown.name", "Brown Banner"))); + itemNames.add(new ItemName(Material.BANNER, 4, langConfig.getString("item.banner.blue.name", "Blue Banner"))); + itemNames.add(new ItemName(Material.BANNER, 5, langConfig.getString("item.banner.purple.name", "Purple Banner"))); + itemNames.add(new ItemName(Material.BANNER, 6, langConfig.getString("item.banner.cyan.name", "Cyan Banner"))); + itemNames.add(new ItemName(Material.BANNER, 7, langConfig.getString("item.banner.silver.name", "Light Gray Banner"))); + itemNames.add(new ItemName(Material.BANNER, 8, langConfig.getString("item.banner.gray.name", "Gray Banner"))); + itemNames.add(new ItemName(Material.BANNER, 9, langConfig.getString("item.banner.pink.name", "Pink Banner"))); + itemNames.add(new ItemName(Material.BANNER, 10, langConfig.getString("item.banner.lime.name", "Lime Banner"))); + itemNames.add(new ItemName(Material.BANNER, 11, langConfig.getString("item.banner.yellow.name", "Yellow Banner"))); + itemNames.add(new ItemName(Material.BANNER, 12, langConfig.getString("item.banner.lightBlue.name", "Light Blue Banner"))); + itemNames.add(new ItemName(Material.BANNER, 13, langConfig.getString("item.banner.magenta.name", "Magenta Banner"))); + itemNames.add(new ItemName(Material.BANNER, 14, langConfig.getString("item.banner.orange.name", "Orange Banner"))); + itemNames.add(new ItemName(Material.BANNER, 15, langConfig.getString("item.banner.white.name", "White Banner"))); + itemNames.add(new ItemName(Material.END_CRYSTAL, langConfig.getString("item.end_crystal.name", "End Crystal"))); + itemNames.add(new ItemName(Material.SPRUCE_DOOR_ITEM, langConfig.getString("item.doorSpruce.name", "Spruce Door"))); + itemNames.add(new ItemName(Material.BIRCH_DOOR_ITEM, langConfig.getString("item.doorBirch.name", "Birch Door"))); + itemNames.add(new ItemName(Material.JUNGLE_DOOR_ITEM, langConfig.getString("item.doorJungle.name", "Jungle Door"))); + itemNames.add(new ItemName(Material.ACACIA_DOOR_ITEM, langConfig.getString("item.doorAcacia.name", "Acacia Door"))); + itemNames.add(new ItemName(Material.DARK_OAK_DOOR_ITEM, langConfig.getString("item.doorDarkOak.name", "Dark Oak Door"))); + itemNames.add(new ItemName(Material.CHORUS_FRUIT, langConfig.getString("item.chorusFruit.name", "Chorus Fruit"))); + itemNames.add(new ItemName(Material.CHORUS_FRUIT_POPPED, langConfig.getString("item.chorusFruitPopped.name", "Popped Chorus Fruit"))); + itemNames.add(new ItemName(Material.BEETROOT, langConfig.getString("item.beetroot.name", "Beetroot"))); + itemNames.add(new ItemName(Material.BEETROOT_SEEDS, langConfig.getString("item.beetroot_seeds.name", "Beetroot Seeds"))); + itemNames.add(new ItemName(Material.BEETROOT_SOUP, langConfig.getString("item.beetroot_soup.name", "Beetroot Soup"))); + itemNames.add(new ItemName(Material.DRAGONS_BREATH, langConfig.getString("item.dragon_breath.name", "Dragon's Breath"))); + itemNames.add(new ItemName(Material.SPECTRAL_ARROW, langConfig.getString("item.spectral_arrow.name", "Spectral Arrow"))); + itemNames.add(new ItemName(Material.TIPPED_ARROW, langConfig.getString("item.tipped_arrow.name", "Tipped Arrow"))); + itemNames.add(new ItemName(Material.SHIELD, langConfig.getString("item.shield.name", "Shield"))); //TODO ADD SHIELD DESCRIPTIONS + itemNames.add(new ItemName(Material.ELYTRA, langConfig.getString("item.elytra.name", "Elytra"))); + itemNames.add(new ItemName(Material.BOAT_SPRUCE, langConfig.getString("item.boat.spruce.name", "Spruce Boat"))); + itemNames.add(new ItemName(Material.BOAT_BIRCH, langConfig.getString("item.boat.birch.name", "Birch Boat"))); + itemNames.add(new ItemName(Material.BOAT_JUNGLE, langConfig.getString("item.boat.jungle.name", "Jungle Boat"))); + itemNames.add(new ItemName(Material.BOAT_ACACIA, langConfig.getString("item.boat.acacia.name", "Acacia Boat"))); + itemNames.add(new ItemName(Material.BOAT_DARK_OAK, langConfig.getString("item.boat.dark_oak.name", "Dark Oak Boat"))); + itemNames.add(new ItemName(Material.GOLD_RECORD, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.GREEN_RECORD, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_3, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_4, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_5, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_6, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_7, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_8, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_9, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_10, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_11, langConfig.getString("item.record.name", "Music Disc"))); + itemNames.add(new ItemName(Material.RECORD_12, langConfig.getString("item.record.name", "Music Disc"))); + + enchantmentNames.add(new EnchantmentName(Enchantment.ARROW_DAMAGE, langConfig.getString("enchantment.arrowDamage", "Power"))); + enchantmentNames.add(new EnchantmentName(Enchantment.ARROW_FIRE, langConfig.getString("enchantment.arrowFire", "Flame"))); + enchantmentNames.add(new EnchantmentName(Enchantment.ARROW_INFINITE, langConfig.getString("enchantment.arrowInfinite", "Infinity"))); + enchantmentNames.add(new EnchantmentName(Enchantment.ARROW_KNOCKBACK, langConfig.getString("enchantment.arrowKnockback", "Punch"))); + enchantmentNames.add(new EnchantmentName(Enchantment.DAMAGE_ALL, langConfig.getString("enchantment.damage.all", "Sharpness"))); + enchantmentNames.add(new EnchantmentName(Enchantment.DAMAGE_ARTHROPODS, langConfig.getString("enchantment.damage.arthropods", "Bane of Arthropods"))); + enchantmentNames.add(new EnchantmentName(Enchantment.DAMAGE_UNDEAD, langConfig.getString("enchantment.damange.undead", "Smite"))); + enchantmentNames.add(new EnchantmentName(Enchantment.DIG_SPEED, langConfig.getString("enchantment.digging", "Efficiency"))); + enchantmentNames.add(new EnchantmentName(Enchantment.DURABILITY, langConfig.getString("enchantment.durability", "Unbreaking"))); + enchantmentNames.add(new EnchantmentName(Enchantment.FIRE_ASPECT, langConfig.getString("enchantment.fire", "Fire Aspect"))); + enchantmentNames.add(new EnchantmentName(Enchantment.LURE, langConfig.getString("enchantment.fishingSpeed", "Lure"))); + enchantmentNames.add(new EnchantmentName(Enchantment.KNOCKBACK, langConfig.getString("enchantment.knockback", "Knockback"))); + enchantmentNames.add(new EnchantmentName(Enchantment.LOOT_BONUS_MOBS, langConfig.getString("enchantment.lootBonus", "Looting"))); + enchantmentNames.add(new EnchantmentName(Enchantment.LOOT_BONUS_BLOCKS, langConfig.getString("enchantment.lootBonusDigger", "Fortune"))); + enchantmentNames.add(new EnchantmentName(Enchantment.LUCK, langConfig.getString("enchantment.lootBonusFishing", "Luck of the Sea"))); + enchantmentNames.add(new EnchantmentName(Enchantment.OXYGEN, langConfig.getString("enchantment.oxygen", "Respiration"))); + enchantmentNames.add(new EnchantmentName(Enchantment.PROTECTION_ENVIRONMENTAL, langConfig.getString("enchantment.protect.all", "Protection"))); + enchantmentNames.add(new EnchantmentName(Enchantment.PROTECTION_EXPLOSIONS, langConfig.getString("enchantment.protect.explosion", "Blast Protection"))); + enchantmentNames.add(new EnchantmentName(Enchantment.PROTECTION_FALL, langConfig.getString("enchantment.protect.fall", "Feather Falling"))); + enchantmentNames.add(new EnchantmentName(Enchantment.PROTECTION_FIRE, langConfig.getString("enchantment.protect.fire", "Fire Protection"))); + enchantmentNames.add(new EnchantmentName(Enchantment.PROTECTION_PROJECTILE, langConfig.getString("enchantment.protect.projectile", "Projectile Protection"))); + enchantmentNames.add(new EnchantmentName(Enchantment.THORNS, langConfig.getString("enchantment.thorns", "Thorns"))); + enchantmentNames.add(new EnchantmentName(Enchantment.SILK_TOUCH, langConfig.getString("enchantment.untouching", "Silk Touch"))); + enchantmentNames.add(new EnchantmentName(Enchantment.DEPTH_STRIDER, langConfig.getString("enchantment.waterWalker", "Depth Strider"))); + enchantmentNames.add(new EnchantmentName(Enchantment.WATER_WORKER, langConfig.getString("enchantment.waterWorker", "Aqua Affinity"))); + + if (Utils.getMajorVersion() >= 9) { + enchantmentNames.add(new EnchantmentName(Enchantment.FROST_WALKER, langConfig.getString("enchantment.frostWalker", "Frost Walker"))); + enchantmentNames.add(new EnchantmentName(Enchantment.MENDING, langConfig.getString("enchantment.mending", "Mending"))); + } + + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(1, langConfig.getString("enchantment.level.1", "I"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(2, langConfig.getString("enchantment.level.2", "II"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(3, langConfig.getString("enchantment.level.3", "II"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(4, langConfig.getString("enchantment.level.4", "IV"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(5, langConfig.getString("enchantment.level.5", "V"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(6, langConfig.getString("enchantment.level.6", "VI"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(7, langConfig.getString("enchantment.level.7", "VII"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(8, langConfig.getString("enchantment.level.8", "VIII"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(9, langConfig.getString("enchantment.level.9", "IX"))); + enchantmentLevelNames.add(new EnchantmentName.EnchantmentLevelName(10, langConfig.getString("enchantment.level.10", "X"))); + + entityNames.add(new EntityName(EntityType.CREEPER, langConfig.getString("entity.Creeper.name", "Creeper"))); + entityNames.add(new EntityName(EntityType.SKELETON, langConfig.getString("entity.Skeleton.name", "Skeleton"))); + entityNames.add(new EntityName(EntityType.SPIDER, langConfig.getString("entity.Spider.name", "Spider"))); + entityNames.add(new EntityName(EntityType.ZOMBIE, langConfig.getString("entity.Zombie.name", "Zombie"))); + entityNames.add(new EntityName(EntityType.SLIME, langConfig.getString("entity.Slime.name", "Slime"))); + entityNames.add(new EntityName(EntityType.GHAST, langConfig.getString("entity.Ghast.name", "Ghast"))); + entityNames.add(new EntityName(EntityType.PIG_ZOMBIE, langConfig.getString("entity.PigZombie.name", "Zombie Pigman"))); + entityNames.add(new EntityName(EntityType.ENDERMAN, langConfig.getString("entity.Enderman.name", "Enderman"))); + entityNames.add(new EntityName(EntityType.CAVE_SPIDER, langConfig.getString("entity.CaveSpider.name", "Cave Spider"))); + entityNames.add(new EntityName(EntityType.SILVERFISH, langConfig.getString("entity.Silverfish.name", "Silverfish"))); + entityNames.add(new EntityName(EntityType.BLAZE, langConfig.getString("entity.Blaze.name", "Blaze"))); + entityNames.add(new EntityName(EntityType.MAGMA_CUBE, langConfig.getString("entity.LavaSlime.name", "Magma Cube"))); + entityNames.add(new EntityName(EntityType.BAT, langConfig.getString("entity.Bat.name", "Bat"))); + entityNames.add(new EntityName(EntityType.WITCH, langConfig.getString("entity.Witch.name", "Witch"))); + entityNames.add(new EntityName(EntityType.ENDERMITE, langConfig.getString("entity.Endermite.name", "Endermite"))); + entityNames.add(new EntityName(EntityType.GUARDIAN, langConfig.getString("entity.Guardian.name", "Guardian"))); + entityNames.add(new EntityName(EntityType.PIG, langConfig.getString("entity.Pig.name", "Pig"))); + entityNames.add(new EntityName(EntityType.SHEEP, langConfig.getString("entity.Sheep.name", "Sheep"))); + entityNames.add(new EntityName(EntityType.COW, langConfig.getString("entity.Cow.name", "Cow"))); + entityNames.add(new EntityName(EntityType.CHICKEN, langConfig.getString("entity.Chicken.name", "Chicken"))); + entityNames.add(new EntityName(EntityType.SQUID, langConfig.getString("entity.Squid.name", "Squid"))); + entityNames.add(new EntityName(EntityType.WOLF, langConfig.getString("entity.Wolf.name", "Wolf"))); + entityNames.add(new EntityName(EntityType.MUSHROOM_COW, langConfig.getString("entity.MushroomCow.name", "Mooshroom"))); + entityNames.add(new EntityName(EntityType.OCELOT, langConfig.getString("entity.Ocelot.name", "Bat"))); + entityNames.add(new EntityName(EntityType.HORSE, langConfig.getString("entity.EntityHorse.name", "Horse"))); + entityNames.add(new EntityName(EntityType.RABBIT, langConfig.getString("entity.Rabbit.name", "Rabbit"))); + entityNames.add(new EntityName(EntityType.VILLAGER, langConfig.getString("entity.Villager.name", "Villager"))); + + if (Utils.getMajorVersion() >= 9) { + entityNames.add(new EntityName(EntityType.SHULKER, langConfig.getString("entity.Shulker.name", "Shulker"))); + } + + if (Utils.getMajorVersion() >= 10) { + entityNames.add(new EntityName(EntityType.POLAR_BEAR, langConfig.getString("entity.PolarBear.name", "Polar Bear"))); + } + + potionEffectNames.add(new PotionEffectName(PotionType.FIRE_RESISTANCE, langConfig.getString("effect.fireResistance", "Fire Resistance"))); + potionEffectNames.add(new PotionEffectName(PotionType.INSTANT_DAMAGE, langConfig.getString("effect.harm", "Instant Damage"))); + potionEffectNames.add(new PotionEffectName(PotionType.INSTANT_HEAL, langConfig.getString("effect.heal", "Instant Health"))); + potionEffectNames.add(new PotionEffectName(PotionType.INVISIBILITY, langConfig.getString("effect.invisibility", "Invisibility"))); + potionEffectNames.add(new PotionEffectName(PotionType.JUMP, langConfig.getString("effect.jump", "Jump Boost"))); + potionEffectNames.add(new PotionEffectName(PotionType.NIGHT_VISION, langConfig.getString("effect.nightVision", "Night Vision"))); + potionEffectNames.add(new PotionEffectName(PotionType.POISON, langConfig.getString("effect.poison", "Poison"))); + potionEffectNames.add(new PotionEffectName(PotionType.REGEN, langConfig.getString("effect.regeneration", "Regeneration"))); + potionEffectNames.add(new PotionEffectName(PotionType.SLOWNESS, langConfig.getString("effect.moveSlowdown", "Slowness"))); + potionEffectNames.add(new PotionEffectName(PotionType.SPEED, langConfig.getString("effect.moveSpeed", "Speed"))); + potionEffectNames.add(new PotionEffectName(PotionType.STRENGTH, langConfig.getString("effect.damageBoost", "Strength"))); + potionEffectNames.add(new PotionEffectName(PotionType.WATER_BREATHING, langConfig.getString("effect.waterBreathing", "Water Breathing"))); + potionEffectNames.add(new PotionEffectName(PotionType.WEAKNESS, langConfig.getString("effect.weakness", "Weakness"))); + potionEffectNames.add(new PotionEffectName(PotionType.WATER, langConfig.getString("effect.none", "No Effects"))); + potionEffectNames.add(new PotionEffectName(PotionType.AWKWARD, langConfig.getString("effect.none", "No Effects"))); + + if (Utils.getMajorVersion() >= 9) { + potionEffectNames.add(new PotionEffectName(PotionType.LUCK, langConfig.getString("effect.luck", "Luck"))); + potionEffectNames.add(new PotionEffectName(PotionType.MUNDANE, langConfig.getString("effect.none", "No Effects"))); + potionEffectNames.add(new PotionEffectName(PotionType.THICK, langConfig.getString("effect.none", "No Effects"))); + potionEffectNames.add(new PotionEffectName(PotionType.UNCRAFTABLE, langConfig.getString("effect.none", "No Effects"))); + } + + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.AWKWARD, langConfig.getString("potion.effect.awkward", "Awkward Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.FIRE_RESISTANCE, langConfig.getString("potion.effect.fire_resistance", "Potion of Fire Resistance"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.INSTANT_DAMAGE, langConfig.getString("potion.effect.harming", "Potion of Harming"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.INSTANT_HEAL, langConfig.getString("potion.effect.healing", "Potion of Healing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.INVISIBILITY, langConfig.getString("potion.effect.invisibility", "Potion of Invisibility"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.JUMP, langConfig.getString("potion.effect.leaping", "Potion of Leaping"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.NIGHT_VISION, langConfig.getString("potion.effect.night_vision", "Potion of Night Vision"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.POISON, langConfig.getString("potion.effect.poison", "Potion of Poison"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.REGEN, langConfig.getString("potion.effect.regeneration", "Potion of Regeneration"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.SLOWNESS, langConfig.getString("potion.effect.slowness", "Potion of Slowness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.SPEED, langConfig.getString("potion.effect.swiftness", "Potion of Swiftness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.STRENGTH, langConfig.getString("potion.effect.strength", "Potion of Strength"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.WATER_BREATHING, langConfig.getString("potion.effect.water_breathing", "Potion of Water Breathing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.WEAKNESS, langConfig.getString("potion.effect.weakness", "Potion of Weakness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.WATER, langConfig.getString("potion.effect.water", "Water Bottle"))); + + if (Utils.getMajorVersion() >= 9) { + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.LUCK, langConfig.getString("potion.effect.luck", "Potion of Luck"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.MUNDANE, langConfig.getString("potion.effect.mundane", "Mundane Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.THICK, langConfig.getString("potion.effect.thick", "Thick Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.POTION, PotionType.UNCRAFTABLE, langConfig.getString("potion.effect.empty", "Uncraftable Potion"))); + } + + if (Utils.getMajorVersion() >= 9) { + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.AWKWARD, langConfig.getString("tipped_arrow.effect.awkward", "Tipped Arrow"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.FIRE_RESISTANCE, langConfig.getString("tipped_arrow.effect.fire_resistance", "Arrow of Fire Resistance"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.INSTANT_DAMAGE, langConfig.getString("tipped_arrow.effect.harming", "Arrow of Harming"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.INSTANT_HEAL, langConfig.getString("tipped_arrow.effect.healing", "Arrow of Healing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.INVISIBILITY, langConfig.getString("tipped_arrow.effect.invisibility", "Arrow of Invisibility"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.JUMP, langConfig.getString("tipped_arrow.effect.leaping", "Arrow of Leaping"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.NIGHT_VISION, langConfig.getString("tipped_arrow.effect.night_vision", "Arrow of Night Vision"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.POISON, langConfig.getString("tipped_arrow.effect.poison", "Arrow of Poison"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.REGEN, langConfig.getString("tipped_arrow.effect.regeneration", "Arrow of Regeneration"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.SLOWNESS, langConfig.getString("tipped_arrow.effect.slowness", "Arrow of Slowness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.SPEED, langConfig.getString("tipped_arrow.effect.swiftness", "Arrow of Swiftness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.STRENGTH, langConfig.getString("tipped_arrow.effect.strength", "Arrow of Strength"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.WATER_BREATHING, langConfig.getString("tipped_arrow.effect.water_breathing", "Arrow of Water Breathing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.WEAKNESS, langConfig.getString("tipped_arrow.effect.weakness", "Arrow of Weakness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.WATER, langConfig.getString("tipped_arrow.effect.water", "Arrow of Splashing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.LUCK, langConfig.getString("tipped_arrow.effect.luck", "Arrow of Luck"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.MUNDANE, langConfig.getString("tipped_arrow.effect.mundane", "Tipped Arrow"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.THICK, langConfig.getString("tipped_arrow.effect.thick", "Tipped Arrow"))); + potionNames.add(new PotionName(PotionName.PotionItemType.TIPPED_ARROW, PotionType.UNCRAFTABLE, langConfig.getString("tipped_arrow.effect.empty", "Tipped Arrow"))); + } + + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.AWKWARD, langConfig.getString("splash_potion.effect.awkward", "Awkward Splash Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.FIRE_RESISTANCE, langConfig.getString("splash_potion.effect.fire_resistance", "Splash Potion of Fire Resistance"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.INSTANT_DAMAGE, langConfig.getString("splash_potion.effect.harming", "Splash Potion of Harming"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.INSTANT_HEAL, langConfig.getString("splash_potion.effect.healing", "Splash Potion of Healing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.INVISIBILITY, langConfig.getString("splash_potion.effect.invisibility", "Splash Potion of Invisibility"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.JUMP, langConfig.getString("splash_potion.effect.leaping", "Splash Potion of Leaping"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.NIGHT_VISION, langConfig.getString("splash_potion.effect.night_vision", "Splash Potion of Night Vision"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.POISON, langConfig.getString("splash_potion.effect.poison", "Splash Potion of Poison"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.REGEN, langConfig.getString("splash_potion.effect.regeneration", "Splash Potion of Regeneration"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.SLOWNESS, langConfig.getString("splash_potion.effect.slowness", "Splash Potion of Slowness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.SPEED, langConfig.getString("splash_potion.effect.swiftness", "Splash Potion of Swiftness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.STRENGTH, langConfig.getString("splash_potion.effect.strength", "Splash Potion of Strength"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.WATER_BREATHING, langConfig.getString("splash_potion.effect.water_breathing", "Splash Potion of Water Breathing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.WEAKNESS, langConfig.getString("splash_potion.effect.weakness", "Splash Potion of Weakness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.WATER, langConfig.getString("splash_potion.effect.water", "Splash Water Bottle"))); + + if (Utils.getMajorVersion() >= 9) { + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.LUCK, langConfig.getString("splash_potion.effect.luck", "Splash Potion of Luck"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.MUNDANE, langConfig.getString("splash_potion.effect.mundane", "Mundane Splash Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.THICK, langConfig.getString("splash_potion.effect.thick", "Thick Splash Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.SPLASH_POTION, PotionType.UNCRAFTABLE, langConfig.getString("splash_potion.effect.empty", "Splash Uncraftable Potion"))); + } + + if (Utils.getMajorVersion() >= 9) { + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.AWKWARD, langConfig.getString("lingering_potion.effect.awkward", "Awkward Lingering Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.FIRE_RESISTANCE, langConfig.getString("lingering_potion.effect.fire_resistance", "Lingering Potion of Fire Resistance"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.INSTANT_DAMAGE, langConfig.getString("lingering_potion.effect.harming", "Lingering Potion of Harming"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.INSTANT_HEAL, langConfig.getString("lingering_potion.effect.healing", "Lingering Potion of Healing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.INVISIBILITY, langConfig.getString("lingering_potion.effect.invisibility", "Lingering Potion of Invisibility"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.JUMP, langConfig.getString("lingering_potion.effect.leaping", "Lingering Potion of Leaping"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.NIGHT_VISION, langConfig.getString("lingering_potion.effect.night_vision", "Lingering Potion of Night Vision"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.POISON, langConfig.getString("lingering_potion.effect.poison", "Lingering Potion of Poison"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.REGEN, langConfig.getString("lingering_potion.effect.regeneration", "Lingering Potion of Regeneration"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.SLOWNESS, langConfig.getString("lingering_potion.effect.slowness", "Lingering Potion of Slowness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.SPEED, langConfig.getString("lingering_potion.effect.swiftness", "Lingering Potion of Swiftness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.STRENGTH, langConfig.getString("lingering_potion.effect.strength", "Lingering Potion of Strength"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.WATER_BREATHING, langConfig.getString("lingering_potion.effect.water_breathing", "Lingering Potion of Water Breathing"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.WEAKNESS, langConfig.getString("lingering_potion.effect.weakness", "Lingering Potion of Weakness"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.WATER, langConfig.getString("lingering_potion.effect.water", "Lingering Water Bottle"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.LUCK, langConfig.getString("lingering_potion.effect.luck", "Lingering Potion of Luck"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.MUNDANE, langConfig.getString("lingering_potion.effect.mundane", "Mundane Lingering Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.THICK, langConfig.getString("lingering_potion.effect.thick", "Thick Lingering Potion"))); + potionNames.add(new PotionName(PotionName.PotionItemType.LINGERING_POTION, PotionType.UNCRAFTABLE, langConfig.getString("lingering_potion.effect.empty", "Lingering Uncraftable Potion"))); + } + + musicDiscNames.add(new MusicDiscName(Material.GOLD_RECORD, langConfig.getString("item.record.13.desc", "C418 - 13"))); + musicDiscNames.add(new MusicDiscName(Material.GREEN_RECORD, langConfig.getString("item.record.cat.desc", "C418 - cat"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_3, langConfig.getString("item.record.blocks.desc", "C418 - blocks"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_4, langConfig.getString("item.record.chirp.desc", "C418 - chirp"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_5, langConfig.getString("item.record.far.desc", "C418 - far"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_6, langConfig.getString("item.record.mall.desc", "C418 - mall"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_7, langConfig.getString("item.record.mellohi.desc", "C418 - mellohi"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_8, langConfig.getString("item.record.stal.desc", "C418 - stal"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_9, langConfig.getString("item.record.strad.desc", "C418 - strad"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_10, langConfig.getString("item.record.ward.desc", "C418 - ward"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_11, langConfig.getString("item.record.11.desc", "C418 - 11"))); + musicDiscNames.add(new MusicDiscName(Material.RECORD_12, langConfig.getString("item.record.wait.desc", "C418 - wait"))); + + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_CREATED, langConfig.getString("message.shop-created", "&6Shop created."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CHEST_ALREADY_SHOP, langConfig.getString("message.chest-already-shop", "&cChest already shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_REMOVED, langConfig.getString("message.shop-removed", "&6Shop removed."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CHEST_NO_SHOP, langConfig.getString("message.chest-no-shop", "&cChest is not a shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_CREATE_NOT_ENOUGH_MONEY, langConfig.getString("message.shop-create-not-enough-money", "&cNot enough money. You need &6%CREATION-PRICE% &cto create a shop."), Regex.CREATION_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_VENDOR, langConfig.getString("message.shopInfo.vendor", "&6Vendor: &e%VENDOR%"), Regex.VENDOR)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_PRODUCT, langConfig.getString("message.shopInfo.product", "&6Product: &e%AMOUNT% x %ITEMNAME%"), Regex.AMOUNT, Regex.ITEM_NAME)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_STOCK, langConfig.getString("message.shopInfo.stock", "&6In Stock: &e%AMOUNT%"), Regex.AMOUNT)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_ENCHANTMENTS, langConfig.getString("message.shopInfo.enchantments", "&6Enchantments: &e%ENCHANTMENT%"), Regex.ENCHANTMENT)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_POTION_EFFECT, langConfig.getString("message.shopInfo.potion-effect", "&6Potion Effect: &e%POTION-EFFECT%"), Regex.POTION_EFFECT)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_MUSIC_TITLE, langConfig.getString("message.shopInfo.music-disc-title", "&6Music Disc Title: &e%MUSIC-TITLE%"), Regex.MUSIC_TITLE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_NONE, langConfig.getString("message.shopInfo.none", "&7None"))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_PRICE, langConfig.getString("message.shopInfo.price", "&6Price: Buy: &e%BUY-PRICE%&6 Sell: &e%SELL-PRICE%"), Regex.BUY_PRICE, Regex.SELL_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_DISABLED, langConfig.getString("message.shopInfo.disabled", "&7Disabled"))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_NORMAL, langConfig.getString("message.shopInfo.is-normal", "&6Type: &eNormal"))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_INFO_ADMIN, langConfig.getString("message.shopInfo.is-admin", "&6Type: &eAdmin"))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.BUY_SELL_DISABLED, langConfig.getString("message.buy-and-sell-disabled", "&cYou can't create a shop with buying and selling disabled."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.BUY_SUCCESS, langConfig.getString("message.buy-success", "&aYou bought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a from &6%VENDOR%&a."), Regex.AMOUNT, Regex.ITEM_NAME, Regex.BUY_PRICE, Regex.VENDOR)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.BUY_SUCESS_ADMIN, langConfig.getString("message.buy-sucess-admin", "&aYou bought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a."), Regex.AMOUNT, Regex.ITEM_NAME, Regex.BUY_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SELL_SUCESS, langConfig.getString("message.sell-success", "&aYou sold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a to &6%VENDOR%&a."), Regex.AMOUNT, Regex.ITEM_NAME, Regex.SELL_PRICE, Regex.VENDOR)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SELL_SUCESS_ADMIN, langConfig.getString("message.sell-success-admin", "&aYou sold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a."), Regex.AMOUNT, Regex.ITEM_NAME, Regex.SELL_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SOMEONE_BOUGHT, langConfig.getString("message.someone-bought", "&6%PLAYER% &abought &6%AMOUNT% x %ITEMNAME%&a for &6%BUY-PRICE%&a from your shop."), Regex.PLAYER, Regex.AMOUNT, Regex.ITEM_NAME, Regex.BUY_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SOMEONE_SOLD, langConfig.getString("message.someone-sold", "&6%PLAYER% &asold &6%AMOUNT% x %ITEMNAME%&a for &6%SELL-PRICE%&a to your shop."), Regex.PLAYER, Regex.AMOUNT, Regex.ITEM_NAME, Regex.SELL_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NOT_ENOUGH_INVENTORY_SPACE, langConfig.getString("message.not-enough-inventory-space", "&cNot enough space in inventory."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CHEST_NOT_ENOUGH_INVENTORY_SPACE, langConfig.getString("message.chest-not-enough-inventory-space", "&cShop is full."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NOT_ENOUGH_MONEY, langConfig.getString("message.not-enough-money", "&cNot enough money."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NOT_ENOUGH_ITEMS, langConfig.getString("message.not-enough-items", "&cNot enough items."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.VENDOR_NOT_ENOUGH_MONEY, langConfig.getString("message.vendor-not-enough-money", "&cVendor has not enough money."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.OUT_OF_STOCK, langConfig.getString("message.out-of-stock", "&cShop out of stock."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.ERROR_OCCURRED, langConfig.getString("message.error-occurred", "&cAn error occurred: %ERROR%"), Regex.ERROR)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.AMOUNT_PRICE_NOT_NUMBER, langConfig.getString("message.amount-and-price-not-number", "&cAmount and price must be a number."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_ITEM_IN_HAND, langConfig.getString("message.no-item-in-hand", "&cNo item in hand"))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_CREATE, langConfig.getString("message.click-chest-to-create-shop", "&aClick a chest to create a shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_REMOVE, langConfig.getString("message.click-chest-to-remove-shop", "&aClick a shop-chest to remove the shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_INFO, langConfig.getString("message.click-chest-for-info", "&aClick a shop to retrieve information."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.OPENED_SHOP, langConfig.getString("message.opened-shop", "&aYou opened %VENDOR%'s shop."), Regex.VENDOR)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_BREAK_SHOP, langConfig.getString("message.cannot-break-shop", "&cYou can't break a shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_SELL_BROKEN_ITEM, langConfig.getString("message.cannot-sell-broken-item", "&cYou can't sell a broken item."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.BUY_PRICE_TOO_LOW, langConfig.getString("message.buy-price-too-low", "&cThe buy price must be higher than %MIN-PRICE%."), Regex.MIN_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SELL_PRICE_TOO_LOW, langConfig.getString("message.sell-price-too-low", "&cThe sell price must be higher than %MIN-PRICE%."), Regex.MIN_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.BUYING_DISABLED, langConfig.getString("message.buying-disabled", "&cBuying is disabled at this shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SELLING_DISABLED, langConfig.getString("message.selling-disabled", "&cSelling is disabled at this shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.RELOADED_SHOPS, langConfig.getString("message.reloaded-shops", "&aSuccessfully reloaded %AMOUNT% shop/s."), Regex.AMOUNT)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.SHOP_LIMIT_REACHED, langConfig.getString("message.shop-limit-reached", "&cYou reached your limit of &6%LIMIT% &cshop/s."), Regex.LIMIT)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.OCCUPIED_SHOP_SLOTS, langConfig.getString("message.occupied-shop-slots", "&6You have &c%AMOUNT%/%LIMIT% &6shop slot/s occupied."), Regex.AMOUNT, Regex.LIMIT)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_SELL_ITEM, langConfig.getString("message.cannot-sell-item", "&cYou cannot create a shop with this item."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, langConfig.getString("message.update.update-available", "&6&lVersion &c%VERSION% &6of &cShopChest &6is available &chere."), Regex.VERSION)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD, langConfig.getString("message.update.click-to-download", "Click to download"))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.UPDATE_NO_UPDATE, langConfig.getString("message.update.no-update", "&6&lNo new update available."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.UPDATE_CHECKING, langConfig.getString("message.update.checking", "&6&lChecking for updates..."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.UPDATE_ERROR, langConfig.getString("message.update.error", "&c&lError while checking for updates."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.HOLOGRAM_FORMAT, langConfig.getString("message.hologram.format", "%AMOUNT% * %ITEMNAME%"), Regex.AMOUNT, Regex.ITEM_NAME)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.HOLOGRAM_BUY_SELL, langConfig.getString("message.hologram.buy-and-sell", "Buy %BUY-PRICE% | %SELL-PRICE% Sell"), Regex.BUY_PRICE, Regex.SELL_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.HOLOGRAM_BUY, langConfig.getString("message.hologram.only-buy", "Buy %BUY-PRICE%"), Regex.BUY_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.HOLOGRAM_SELL, langConfig.getString("message.hologram.only-sell", "Sell %SELL-PRICE%"), Regex.SELL_PRICE)); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_CREATE, langConfig.getString("message.noPermission.create", "&cYou don't have permission to create a shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_CREATE_ADMIN, langConfig.getString("message.noPermission.create-admin", "&cYou don't have permission to create an admin shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_OPEN_OTHERS, langConfig.getString("message.noPermission.open-others", "&cYou don't have permission to open this chest."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_BUY, langConfig.getString("message.noPermission.buy", "&cYou don't have permission to buy something."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_SELL, langConfig.getString("message.noPermission.sell", "&cYou don't have permission to sell something."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_REMOVE_OTHERS, langConfig.getString("message.noPermission.remove-others", "&cYou don't have permission to remove this shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_RELOAD, langConfig.getString("message.noPermission.reload", "&cYou don't have permission to reload the shops."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_UPDATE, langConfig.getString("message.noPermission.update", "&cYou don't have permission to check for updates."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_LIMITS, langConfig.getString("message.noPermission.limits", "&cYou don't have permission to view the shop limits."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_CREATE, langConfig.getString("message.commandDescription.create", "Create a shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_REMOVE, langConfig.getString("message.commandDescription.remove", "Remove a shop."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_INFO, langConfig.getString("message.commandDescription.info", "Retrieve shop information."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_RELOAD, langConfig.getString("message.commandDescription.reload", "Reload shops."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_UPDATE, langConfig.getString("message.commandDescription.update", "Check for Updates."))); + messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_LIMITS, langConfig.getString("message.commandDescription.limits", "View shop limits."))); + } + + public static String getItemName(ItemStack stack) { + if (stack.hasItemMeta()) { + ItemMeta meta = stack.getItemMeta(); + if (meta.getDisplayName() != null) { + return meta.getDisplayName(); + } else if (meta instanceof BookMeta) { + return ((BookMeta) meta).getTitle(); + } + } + + Material material = stack.getType(); + int subID = (int) stack.getDurability(); + + if (stack.getItemMeta() instanceof PotionMeta) { + PotionMeta meta = (PotionMeta) stack.getItemMeta(); + PotionType potionType = meta.getBasePotionData().getType(); + + for (PotionName potionName : potionNames) { + if (material == Material.POTION) { + if (potionName.getPotionItemType() == PotionName.PotionItemType.POTION && potionName.getPotionType() == potionType) { + return potionName.getLocalizedName(); + } + } else if (material == Material.SPLASH_POTION) { + if (potionName.getPotionItemType() == PotionName.PotionItemType.SPLASH_POTION && potionName.getPotionType() == potionType) { + return potionName.getLocalizedName(); + } + } else { + if (Utils.getMajorVersion() >= 9) { + if (material == Material.LINGERING_POTION) { + if (potionName.getPotionItemType() == PotionName.PotionItemType.LINGERING_POTION && potionName.getPotionType() == potionType) { + return potionName.getLocalizedName(); + } + } else if (material == Material.TIPPED_ARROW) { + if (potionName.getPotionItemType() == PotionName.PotionItemType.TIPPED_ARROW && potionName.getPotionType() == potionType) { + return potionName.getLocalizedName(); + } + } + } + } + } + } + + for (ItemName itemName : itemNames) { + if (itemName.getMaterial() == Material.MONSTER_EGG && material == Material.MONSTER_EGG) { + SpawnEggMeta spawnEggMeta; + + switch (Utils.getServerVersion()) { + case "v1_8_R1": + spawnEggMeta = new SpawnEggMeta_1_8_R1(stack); + break; + case "v1_8_R2": + spawnEggMeta = new SpawnEggMeta_1_8_R2(stack); + break; + case "v1_8_R3": + spawnEggMeta = new SpawnEggMeta_1_8_R3(stack); + break; + case "v1_9_R1": + spawnEggMeta = new SpawnEggMeta_1_9_R1(stack); + break; + case "v1_9_R2": + spawnEggMeta = new SpawnEggMeta_1_9_R2(stack); + break; + case "v1_10_R1": + spawnEggMeta = new SpawnEggMeta_1_10_R1(stack); + break; + default: + return itemName.getLocalizedName(); + + } + + EntityType spawnedType = spawnEggMeta.getEntityTypeFromNBTEntityID(spawnEggMeta.getNBTEntityID()); + + for (EntityName entityName : entityNames) { + if (entityName.getEntityType() == spawnedType) { + return itemName.getLocalizedName() + " " + entityName.getLocalizedName(); + } + } + + return itemName.getLocalizedName() + " " + capitalizeDefaultString(spawnedType.toString()); + + } + + if ((itemName.getSubID() == subID) && (itemName.getMaterial() == material)) { + return itemName.getLocalizedName(); + } + + } + + return capitalizeDefaultString(material.toString()); + } + + public static String getEnchantmentName(Enchantment enchantment, int level) { + String enchantmentString = capitalizeDefaultString(enchantment.getName()); + String levelString = langConfig.getString("enchantment.level." + level, String.valueOf(level)); + + for (EnchantmentName enchantmentName : enchantmentNames) { + if (enchantmentName.getEnchantment().equals(enchantment)) { + enchantmentString = enchantmentName.getLocalizedName(); + } + } + + for (EnchantmentName.EnchantmentLevelName enchantmentLevelName : enchantmentLevelNames) { + if (enchantmentLevelName.getLevel() == level) { + levelString = enchantmentLevelName.getLocalizedName(); + } + } + + return enchantmentString + " " + levelString; + } + + public static String getPotionEffectName(ItemStack itemStack) { + PotionMeta potionMeta = (PotionMeta) itemStack.getItemMeta(); + + String potionEffectString = capitalizeDefaultString(potionMeta.getBasePotionData().getType().toString()); + String upgradeString = potionMeta.getBasePotionData().isUpgraded() ? "II" : ""; + + for (PotionEffectName potionEffectName : potionEffectNames) { + if (potionEffectName.getEffect() == potionMeta.getBasePotionData().getType()) { + potionEffectString = potionEffectName.getLocalizedName(); + } + } + + return potionEffectString + (upgradeString.length() > 0 ? " " + upgradeString : ""); + } + + public static String getMusicDiscName(Material musicDiscMaterial) { + for (MusicDiscName musicDiscName : musicDiscNames) { + if (musicDiscMaterial == musicDiscName.getMusicDiscMaterial()) { + return musicDiscName.getLocalizedName(); + } + } + + return ""; + } + + public static String getMessage(LocalizedMessage.Message message, LocalizedMessage.ReplacedRegex... replacedRegexes) { + String _message = ChatColor.RED + "An error occurred: Message not found: " + message.toString(); + + ArrayList neededRegexes = new ArrayList<>(); + ArrayList usedRegexes = new ArrayList<>(); + + for (LocalizedMessage localizedMessage : messages) { + if (localizedMessage.getMessage() == message) { + _message = localizedMessage.getLocalizedString(); + for (LocalizedMessage.ReplacedRegex replacedRegex : replacedRegexes) { + neededRegexes.add(replacedRegex.getRegex()); + for (int i = 0; i < localizedMessage.getRegexes().length; i++) { + if (localizedMessage.getRegexes()[i] == replacedRegex.getRegex()) { + Regex regex = replacedRegex.getRegex(); + String toReplace = replacedRegex.getReplace(); + if (regex == Regex.BUY_PRICE || regex == Regex.SELL_PRICE || regex == Regex.MIN_PRICE || regex == Regex.CREATION_PRICE) { + double price = Double.parseDouble(toReplace); + toReplace = plugin.getEconomy().format(price); + } + _message = _message.replace(regex.getName(), toReplace); + usedRegexes.add(regex); + break; + } + } + } + } + } + + if (!neededRegexes.containsAll(usedRegexes)) { + for (Regex regex : usedRegexes) { + if (!neededRegexes.contains(regex)) { + plugin.getLogger().warning("Regex '" + regex.toString() + "' was not used in message '" + message.toString() + "'"); + } + } + } + + return _message; + } + + private static String capitalizeDefaultString(String string) { + string = string.replace("_", " "); + String newString = ""; + + if (string.contains(" ")) { + for (int i = 0; i < string.split(" ").length; i++) { + String part = string.split(" ")[i].toLowerCase(); + part = part.substring(0, 1).toUpperCase() + part.substring(1); + newString = newString + part + (i == string.split(" ").length - 1 ? "" : " "); + } + + return newString; + } else { + newString = string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase(); + } + + return newString; + } + + +} + diff --git a/src/de/epiceric/shopchest/language/LocalizedMessage.java b/src/de/epiceric/shopchest/language/LocalizedMessage.java new file mode 100644 index 0000000..d87a255 --- /dev/null +++ b/src/de/epiceric/shopchest/language/LocalizedMessage.java @@ -0,0 +1,128 @@ +package de.epiceric.shopchest.language; + +import de.epiceric.shopchest.config.Regex; +import org.bukkit.ChatColor; + +public class LocalizedMessage { + + private Message message; + private Regex[] regexes; + private String localizedString; + + public LocalizedMessage(Message message, String localizedString, Regex... regexes) { + this.message = message; + this.regexes = regexes; + this.localizedString = ChatColor.translateAlternateColorCodes('&', localizedString); + } + + public LocalizedMessage(Message message, String localizedString) { + this.message = message; + this.localizedString = ChatColor.translateAlternateColorCodes('&', localizedString); + } + + public Message getMessage() { + return message; + } + + public Regex[] getRegexes() { + return regexes; + } + + public String getLocalizedString() { + return localizedString; + } + + public enum Message { + SHOP_CREATED, + CHEST_ALREADY_SHOP, + SHOP_REMOVED, + CHEST_NO_SHOP, + SHOP_CREATE_NOT_ENOUGH_MONEY, + SHOP_INFO_VENDOR, + SHOP_INFO_PRODUCT, + SHOP_INFO_STOCK, + SHOP_INFO_ENCHANTMENTS, + SHOP_INFO_POTION_EFFECT, + SHOP_INFO_MUSIC_TITLE, + SHOP_INFO_NONE, + SHOP_INFO_PRICE, + SHOP_INFO_DISABLED, + SHOP_INFO_NORMAL, + SHOP_INFO_ADMIN, + BUY_SELL_DISABLED, + BUY_SUCCESS, + BUY_SUCESS_ADMIN, + SELL_SUCESS, + SELL_SUCESS_ADMIN, + SOMEONE_BOUGHT, + SOMEONE_SOLD, + NOT_ENOUGH_INVENTORY_SPACE, + CHEST_NOT_ENOUGH_INVENTORY_SPACE, + NOT_ENOUGH_MONEY, + NOT_ENOUGH_ITEMS, + VENDOR_NOT_ENOUGH_MONEY, + OUT_OF_STOCK, + ERROR_OCCURRED, + AMOUNT_PRICE_NOT_NUMBER, + NO_ITEM_IN_HAND, + CLICK_CHEST_CREATE, + CLICK_CHEST_REMOVE, + CLICK_CHEST_INFO, + OPENED_SHOP, + CANNOT_BREAK_SHOP, + CANNOT_SELL_BROKEN_ITEM, + BUY_PRICE_TOO_LOW, + SELL_PRICE_TOO_LOW, + BUYING_DISABLED, + SELLING_DISABLED, + RELOADED_SHOPS, + SHOP_LIMIT_REACHED, + OCCUPIED_SHOP_SLOTS, + CANNOT_SELL_ITEM, + UPDATE_AVAILABLE, + UPDATE_CLICK_TO_DOWNLOAD, + UPDATE_NO_UPDATE, + UPDATE_CHECKING, + UPDATE_ERROR, + HOLOGRAM_FORMAT, + HOLOGRAM_BUY_SELL, + HOLOGRAM_BUY, + HOLOGRAM_SELL, + NO_PERMISSION_CREATE, + NO_PERMISSION_CREATE_ADMIN, + NO_PERMISSION_OPEN_OTHERS, + NO_PERMISSION_BUY, + NO_PERMISSION_SELL, + NO_PERMISSION_REMOVE_OTHERS, + NO_PERMISSION_RELOAD, + NO_PERMISSION_UPDATE, + NO_PERMISSION_LIMITS, + COMMAND_DESC_CREATE, + COMMAND_DESC_REMOVE, + COMMAND_DESC_INFO, + COMMAND_DESC_RELOAD, + COMMAND_DESC_UPDATE, + COMMAND_DESC_LIMITS; + } + + public static class ReplacedRegex { + + private Regex regex; + private String replace; + + public ReplacedRegex(Regex regex, String replace) { + this.regex = regex; + this.replace = replace; + } + + public String getReplace() { + return replace; + } + + public Regex getRegex() { + return regex; + } + + } + +} diff --git a/src/de/epiceric/shopchest/language/MusicDiscName.java b/src/de/epiceric/shopchest/language/MusicDiscName.java new file mode 100644 index 0000000..d4ef8fe --- /dev/null +++ b/src/de/epiceric/shopchest/language/MusicDiscName.java @@ -0,0 +1,23 @@ +package de.epiceric.shopchest.language; + +import org.bukkit.Material; + +public class MusicDiscName { + + private Material musicDiscMaterial; + private String localizedName; + + public MusicDiscName(Material musicDiscMaterial, String localizedName) { + this.musicDiscMaterial = musicDiscMaterial; + this.localizedName = localizedName; + } + + public String getLocalizedName() { + return localizedName; + } + + public Material getMusicDiscMaterial() { + return musicDiscMaterial; + } + +} diff --git a/src/de/epiceric/shopchest/language/PotionEffectName.java b/src/de/epiceric/shopchest/language/PotionEffectName.java new file mode 100644 index 0000000..04a121e --- /dev/null +++ b/src/de/epiceric/shopchest/language/PotionEffectName.java @@ -0,0 +1,24 @@ +package de.epiceric.shopchest.language; + +import org.bukkit.potion.PotionType; + +public class PotionEffectName { + + private PotionType effect; + private String localizedName; + + public PotionEffectName(PotionType effect, String localizedName) { + this.effect = effect; + this.localizedName = localizedName; + } + + + public PotionType getEffect() { + return effect; + } + + public String getLocalizedName() { + return localizedName; + } + +} diff --git a/src/de/epiceric/shopchest/language/PotionName.java b/src/de/epiceric/shopchest/language/PotionName.java new file mode 100644 index 0000000..2db8916 --- /dev/null +++ b/src/de/epiceric/shopchest/language/PotionName.java @@ -0,0 +1,36 @@ +package de.epiceric.shopchest.language; + + +import org.bukkit.potion.PotionType; + +public class PotionName { + + private String localizedName; + private PotionItemType potionItemType; + private PotionType potionType; + + public PotionName(PotionItemType potionItemType, PotionType potionType, String localizedName) { + this.potionItemType = potionItemType; + this.localizedName = localizedName; + this.potionType = potionType; + } + + public PotionItemType getPotionItemType() { + return potionItemType; + } + + public PotionType getPotionType() { + return potionType; + } + + public String getLocalizedName() { + return localizedName; + } + + public enum PotionItemType { + POTION, + LINGERING_POTION, + SPLASH_POTION, + TIPPED_ARROW; + } +} diff --git a/src/de/epiceric/shopchest/shop/Shop.java b/src/de/epiceric/shopchest/shop/Shop.java index 0367959..a719622 100644 --- a/src/de/epiceric/shopchest/shop/Shop.java +++ b/src/de/epiceric/shopchest/shop/Shop.java @@ -1,10 +1,11 @@ package de.epiceric.shopchest.shop; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.config.Config; +import de.epiceric.shopchest.config.Regex; import de.epiceric.shopchest.interfaces.Hologram; import de.epiceric.shopchest.interfaces.hologram.*; -import de.epiceric.shopchest.utils.ItemNames; +import de.epiceric.shopchest.language.LanguageUtils; +import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.utils.Utils; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -155,14 +156,21 @@ public class Shop { } else holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 0.5); - holoText[0] = Config.hologram_format(product.getAmount(), ItemNames.lookup(product)); + holoText[0] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_FORMAT, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())), + new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product))); - if ((buyPrice <= 0) && (sellPrice > 0)) holoText[1] = Config.hologram_sell(sellPrice); - else if ((buyPrice > 0) && (sellPrice <= 0)) holoText[1] = Config.hologram_buy(buyPrice); - else if ((buyPrice > 0) && (sellPrice > 0)) holoText[1] = Config.hologram_buy_sell(buyPrice, sellPrice); - else holoText[1] = Config.hologram_buy_sell(buyPrice, sellPrice); + if ((buyPrice <= 0) && (sellPrice > 0)) + holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_SELL, new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice))); + else if ((buyPrice > 0) && (sellPrice <= 0)) + holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice))); + else if ((buyPrice > 0) && (sellPrice > 0)) + holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY_SELL, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)), + new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice))); + else + holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY_SELL, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)), + new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice))); - switch (Utils.getVersion(plugin.getServer())) { + switch (Utils.getServerVersion()) { case "v1_8_R1": hologram = new Hologram_1_8_R1(holoText, holoLocation); break; diff --git a/src/de/epiceric/shopchest/sql/Database.java b/src/de/epiceric/shopchest/sql/Database.java index 969ec14..388acd4 100644 --- a/src/de/epiceric/shopchest/sql/Database.java +++ b/src/de/epiceric/shopchest/sql/Database.java @@ -1,10 +1,10 @@ package de.epiceric.shopchest.sql; import de.epiceric.shopchest.ShopChest; -import de.epiceric.shopchest.utils.Utils; import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.utils.ShopUtils; +import de.epiceric.shopchest.utils.Utils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.OfflinePlayer; diff --git a/src/de/epiceric/shopchest/sql/MySQL.java b/src/de/epiceric/shopchest/sql/MySQL.java index 74cd6da..1f49300 100644 --- a/src/de/epiceric/shopchest/sql/MySQL.java +++ b/src/de/epiceric/shopchest/sql/MySQL.java @@ -21,10 +21,10 @@ public class MySQL extends Database { Class.forName("com.mysql.jdbc.Driver"); - String connectUrl = "jdbc:mysql://" + Config.database_mysql_host() + ":" + Config.database_mysql_port() + "/" + Config.database_mysql_database(); - plugin.getLogger().info("Connecting to MySQL Server \"" + connectUrl + "\" as user \"" + Config.database_mysql_username() + "\""); + String connectUrl = "jdbc:mysql://" + Config.database_mysql_host + ":" + Config.database_mysql_port + "/" + Config.database_mysql_database; + plugin.getLogger().info("Connecting to MySQL Server \"" + connectUrl + "\" as user \"" + Config.database_mysql_username + "\""); - connection = DriverManager.getConnection(connectUrl, Config.database_mysql_username(), Config.database_mysql_password()); + connection = DriverManager.getConnection(connectUrl, Config.database_mysql_username, Config.database_mysql_password); return connection; } catch (Exception ex) { diff --git a/src/de/epiceric/shopchest/utils/ArrowEffectNames.java b/src/de/epiceric/shopchest/utils/ArrowEffectNames.java deleted file mode 100644 index b18cb18..0000000 --- a/src/de/epiceric/shopchest/utils/ArrowEffectNames.java +++ /dev/null @@ -1,108 +0,0 @@ -package de.epiceric.shopchest.utils; - -import com.google.common.collect.ImmutableMap; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.PotionMeta; - -import java.util.Map; - -public class ArrowEffectNames { - - private static final Map effectMap = ImmutableMap.builder() - .put("FIRE_RESISTANCE", "Fire Resistance") - .put("INSTANT_DAMAGE", "Instant Damage") - .put("INSTANT_HEAL", "Instant Health") - .put("INVISIBILITY", "Invisibility") - .put("JUMP", "Jump Boost") - .put("LUCK", "Luck") - .put("NIGHT_VISION", "Night Vision") - .put("POISION", "Poison") - .put("REGEN", "Regeneration") - .put("SLOWNESS", "Slowness") - .put("SPEED", "Speed") - .put("STRENGTH", "Strength") - .put("WATER_BREATHING", "Water Breathing") - .put("WEAKNESS", "Weakness") - .build(); - - - public static String getTippedArrowName(ItemStack itemStack) { - - if (!(itemStack.getItemMeta() instanceof PotionMeta)) { - return null; - } - - String name; - - PotionMeta meta = (PotionMeta) itemStack.getItemMeta(); - - name = effectMap.get(meta.getBasePotionData().getType().toString()); - - if (meta.getBasePotionData().isUpgraded()) { - name += " II"; - switch (meta.getBasePotionData().getType()) { - case JUMP: - name += " (0:11)"; - break; - case SPEED: - name += " (0:11)"; - break; - case POISON: - name += " (0:02)"; - break; - case REGEN: - name += " (0:02)"; - break; - case STRENGTH: - name += " (0:11)"; - break; - default: - break; - } - } else { - switch (meta.getBasePotionData().getType()) { - case FIRE_RESISTANCE: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case INVISIBILITY: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case JUMP: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case LUCK: - name += " (0:37)"; - break; - case NIGHT_VISION: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case POISON: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "0:11" : "0:05") + ")"; - break; - case REGEN: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "0:11" : "0:05") + ")"; - break; - case SLOWNESS: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "0:30" : "0:11") + ")"; - break; - case SPEED: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case STRENGTH: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case WATER_BREATHING: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "1:00" : "0:22") + ")"; - break; - case WEAKNESS: - name += " (" + ((meta.getBasePotionData().isExtended()) ? "0:30" : "0:11") + ")"; - break; - default: - break; - } - } - - return name; - } - -} diff --git a/src/de/epiceric/shopchest/utils/ColorNames.java b/src/de/epiceric/shopchest/utils/ColorNames.java deleted file mode 100644 index 2fdb2d7..0000000 --- a/src/de/epiceric/shopchest/utils/ColorNames.java +++ /dev/null @@ -1,33 +0,0 @@ -package de.epiceric.shopchest.utils; - -import com.google.common.collect.ImmutableMap; -import org.bukkit.DyeColor; - -import java.util.Map; - -public class ColorNames { - - private static final Map map = ImmutableMap.builder() - .put(DyeColor.BLACK, "Black") - .put(DyeColor.BLUE, "Blue") - .put(DyeColor.BROWN, "Brown") - .put(DyeColor.CYAN, "Cyan") - .put(DyeColor.GRAY, "Light Gray") - .put(DyeColor.GREEN, "Green") - .put(DyeColor.LIGHT_BLUE, "Light Blue") - .put(DyeColor.LIME, "Lime") - .put(DyeColor.MAGENTA, "Magenta") - .put(DyeColor.ORANGE, "Orange") - .put(DyeColor.PINK, "Pink") - .put(DyeColor.PURPLE, "Purple") - .put(DyeColor.RED, "Red") - .put(DyeColor.SILVER, "Gray") - .put(DyeColor.WHITE, "White") - .put(DyeColor.YELLOW, "Yellow") - .build(); - - public static String getColorString(DyeColor dyeColor) { - return map.get(dyeColor); - } - -} diff --git a/src/de/epiceric/shopchest/utils/EnchantmentNames.java b/src/de/epiceric/shopchest/utils/EnchantmentNames.java deleted file mode 100644 index 7ccb64b..0000000 --- a/src/de/epiceric/shopchest/utils/EnchantmentNames.java +++ /dev/null @@ -1,83 +0,0 @@ -package de.epiceric.shopchest.utils; - -import com.google.common.collect.ImmutableMap; -import org.bukkit.enchantments.Enchantment; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class EnchantmentNames { - - private static final Map enchMap = ImmutableMap.builder() - .put("PROTECTION_ENVIRONMENTAL", "Protection") - .put("PROTECTION_FIRE", "Fire Protection") - .put("PROTECTION_FALL", "Feather Falling") - .put("PROTECTION_EXPLOSIONS", "Blast Protection") - .put("OXYGEN", "Respiration") - .put("WATER_WORKER", "Aqua Affinity") - .put("THORNS", "Thorns") - .put("DEPTH_STRIDER", "Depth Strider") - .put("DAMAGE_ALL", "Sharpness") - .put("DAMAGE_UNDEAD", "smite") - .put("DAMAGE_ARTHROPODS", "Bane of Arthropods") - .put("KNOCKBACK", "Knockback") - .put("FIRE_ASPECT", "Fire Aspect") - .put("LOOT_BONUS_MOBS", "Looting") - .put("DIG_SPEED", "Efficiency") - .put("SILK_TOUCH", "Silk Touch") - .put("DURABILITY", "Unbreaking") - .put("LOOT_BONUS_BLOCKS", "Fortune") - .put("ARROW_DAMAGE", "Power") - .put("ARROW_KNOCKBACK", "Punch") - .put("ARROW_FIRE", "Flame") - .put("ARROW_INFINITE", "Infinity") - .put("LUCK", "Luck of the Sea") - .put("LURE", "Lure") - .build(); - - public static String lookup(Enchantment enchantment, int level) { - String key = enchantment.getName(); - String name = enchMap.get(key); - - String levelString = getRomanNumber(level); - - return name + " " + levelString; - } - - public static String getRomanNumber(int Int) { - - LinkedHashMap roman_numerals = new LinkedHashMap(); - roman_numerals.put("M", 1000); - roman_numerals.put("CM", 900); - roman_numerals.put("D", 500); - roman_numerals.put("CD", 400); - roman_numerals.put("C", 100); - roman_numerals.put("XC", 90); - roman_numerals.put("L", 50); - roman_numerals.put("XL", 40); - roman_numerals.put("X", 10); - roman_numerals.put("IX", 9); - roman_numerals.put("V", 5); - roman_numerals.put("IV", 4); - roman_numerals.put("I", 1); - String res = ""; - for (Map.Entry entry : roman_numerals.entrySet()) { - int matches = Int / entry.getValue(); - res += repeat(entry.getKey(), matches); - Int = Int % entry.getValue(); - } - return res; - } - - public static String repeat(String s, int n) { - if (s == null) { - return null; - } - final StringBuilder sb = new StringBuilder(); - for (int i = 0; i < n; i++) { - sb.append(s); - } - return sb.toString(); - } - -} diff --git a/src/de/epiceric/shopchest/utils/ItemNames.java b/src/de/epiceric/shopchest/utils/ItemNames.java deleted file mode 100644 index b83734a..0000000 --- a/src/de/epiceric/shopchest/utils/ItemNames.java +++ /dev/null @@ -1,676 +0,0 @@ -package de.epiceric.shopchest.utils; - -import com.google.common.collect.ImmutableMap; -import org.bukkit.DyeColor; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.BookMeta; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.LeatherArmorMeta; - -import java.util.Map; - -public class ItemNames { - - private static final Map map = ImmutableMap.builder() - .put("1", "Stone") - .put("1:1", "Granite") - .put("1:2", "Polished Granite") - .put("1:3", "Diorite") - .put("1:4", "Polished Diorite") - .put("1:5", "Andesite") - .put("1:6", "Polished Andesite") - .put("2", "Grass Block") - .put("3", "Dirt") - .put("3:1", "Coarse Dirt") - .put("3:2", "Podzol") - .put("4", "Cobblestone") - .put("5", "Oak Wood Planks") - .put("5:1", "Spruce Wood Planks") - .put("5:2", "Birch Wood Planks") - .put("5:3", "Jungle Wood Planks") - .put("5:4", "Acacia Wood Planks") - .put("5:5", "Dark Oak Wood Planks") - .put("6", "Oak Sapling") - .put("6:1", "Spruce Sapling") - .put("6:2", "Birch Sapling") - .put("6:3", "Jungle Sapling") - .put("6:4", "Acacia Sapling") - .put("6:5", "Dark Oak Sapling") - .put("7", "Bedrock") - .put("8", "Water (No Spread)") - .put("9", "Water") - .put("10", "Lava (No Spread)") - .put("11", "Lava") - .put("12", "Sand") - .put("12:1", "Red Sand") - .put("13", "Gravel") - .put("14", "Gold Ore") - .put("15", "Iron Ore") - .put("16", "Coal Ore") - .put("17", "Oak Wood") - .put("17:1", "Spruce Wood") - .put("17:2", "Birch Wood") - .put("17:3", "Jungle Wood") - .put("18", "Oak Leaves") - .put("18:1", "Spruce Leaves") - .put("18:2", "Birch Leaves") - .put("18:3", "Jungle Leaves") - .put("19", "Sponge") - .put("19:1", "Wet Sponge") - .put("20", "Glass") - .put("21", "Lapis Lazuli Ore") - .put("22", "Lapis Lazuli Block") - .put("23", "Dispenser") - .put("24", "Sandstone") - .put("24:1", "Chiseled Sandstone") - .put("24:2", "Smooth Sandstone") - .put("25", "Note Block") - .put("26", "Bed") - .put("27", "Powered Rail") - .put("28", "Detector Rail") - .put("29", "Sticky Piston") - .put("30", "Web") - .put("31", "Shrub") - .put("31:1", "Grass") - .put("31:2", "Fern") - .put("32", "Dead Bush") - .put("33", "Piston") - .put("34", "Piston (Head)") - .put("35", "Wool") - .put("35:1", "Orange Wool") - .put("35:2", "Magenta Wool") - .put("35:3", "Light Blue Wool") - .put("35:4", "Yellow Wool") - .put("35:5", "Lime Wool") - .put("35:6", "Pink Wool") - .put("35:7", "Gray Wool") - .put("35:8", "Light Gray Wool") - .put("35:9", "Cyan Wool") - .put("35:10", "Purple Wool") - .put("35:11", "Blue Wool") - .put("35:12", "Brown Wool") - .put("35:13", "Green Wool") - .put("35:14", "Red Wool") - .put("35:15", "Black Wool") - .put("37", "Dandelion") - .put("38", "Rose") - .put("38:1", "Blue Orchid") - .put("38:2", "Allium") - .put("38:3", "Azure Bluet") - .put("38:4", "Red Tulip") - .put("38:5", "Orange Tulip") - .put("38:6", "White Tulip") - .put("38:7", "Pink Tulip") - .put("38:8", "Oxeye Daisy") - .put("39", "Brown Mushroom") - .put("40", "Red Mushroom") - .put("41", "Gold Block") - .put("42", "Iron Block") - .put("43", "Stone Slab (Double)") - .put("43:1", "Sandstone Slab (Double)") - .put("43:2", "Wooden Slab (Double)") - .put("43:3", "Cobblestone Slab (Double)") - .put("43:4", "Brick Slab (Double)") - .put("43:5", "Stone Brick Slab (Double)") - .put("43:6", "Nether Brick Slab (Double)") - .put("43:7", "Quartz Slab (Double)") - .put("43:8", "Smooth Stone Slab (Double)") - .put("43:9", "Smooth Sandstone Slab (Double)") - .put("44", "Stone Slab") - .put("44:1", "Sandstone Slab") - .put("44:2", "Wooden Slab") - .put("44:3", "Cobblestone Slab") - .put("44:4", "Brick Slab") - .put("44:5", "Stone Brick Slab") - .put("44:6", "Nether Brick Slab") - .put("44:7", "Quartz Slab") - .put("45", "Brick") - .put("46", "TNT") - .put("47", "Bookcase") - .put("48", "Moss Stone") - .put("49", "Obsidian") - .put("50", "Torch") - .put("51", "Fire") - .put("52", "Mob Spawner") - .put("53", "Oak Wood Stairs") - .put("54", "Chest") - .put("55", "Redstone Wire") - .put("56", "Diamond Ore") - .put("57", "Diamond Block") - .put("58", "Crafting Table") - .put("59", "Wheat (Crop)") - .put("60", "Farmland") - .put("61", "Furnace") - .put("62", "Furnace (Smelting)") - .put("63", "Sign (Block)") - .put("64", "Wood Door (Block)") - .put("65", "Ladder") - .put("66", "Rails") - .put("67", "Stone Stairs") - .put("68", "Sign (Wall Block)") - .put("69", "Lever") - .put("70", "Pressure Plate") - .put("71", "Iron Door (Block)") - .put("72", "Pressure Plate") - .put("73", "Redstone Ore") - .put("74", "Redstone Ore (Glowing)") - .put("75", "Redstone Torch (Off)") - .put("76", "Redstone Torch") - .put("77", "Button") - .put("78", "Snow") - .put("79", "Ice") - .put("80", "Snow Block") - .put("81", "Cactus") - .put("82", "Clay Block") - .put("83", "Sugar Cane (Block)") - .put("84", "Jukebox") - .put("85", "Fence") - .put("86", "Pumpkin") - .put("87", "Netherrack") - .put("88", "Soul Sand") - .put("89", "Glowstone") - .put("90", "Portal") - .put("91", "Jack-O-Lantern") - .put("92", "Cake (Block)") - .put("93", "Redstone Repeater (Block Off)") - .put("94", "Redstone Repeater (Block On)") - .put("95", "Stained Glass") - .put("96", "Wooden Trapdoor") - .put("97", "Stone Monster Egg") - .put("97:1", "Cobblestone Monster Egg") - .put("97:2", "Stone Brick Monster Egg") - .put("97:3", "Mossy Stone Brick Monster Egg") - .put("97:4", "Cracked Stone Brick Monster Egg") - .put("97:5", "Chiseled Stone Brick Monster Egg") - .put("98", "Stone Bricks") - .put("98:1", "Mossy Stone Bricks") - .put("98:2", "Cracked Stone Bricks") - .put("98:3", "Chiseled Stone Bricks") - .put("99", "Brown Mushroom (Block)") - .put("100", "Red Mushroom (Block)") - .put("101", "Iron Bars") - .put("102", "Glass Pane") - .put("103", "Melon (Block)") - .put("104", "Pumpkin Vine") - .put("105", "Melon Vine") - .put("106", "Vines") - .put("107", "Fence Gate") - .put("108", "Brick Stairs") - .put("109", "Stone Brick Stairs") - .put("110", "Mycelium") - .put("111", "Lily Pad") - .put("112", "Nether Brick") - .put("113", "Nether Brick Fence") - .put("114", "Nether Brick Stairs") - .put("115", "Nether Wart") - .put("116", "Enchantment Table") - .put("117", "Brewing Stand (Block)") - .put("118", "Cauldron (Block)") - .put("119", "End Portal") - .put("120", "End Portal Frame") - .put("121", "End Stone") - .put("122", "Dragon Egg") - .put("123", "Redstone Lamp (Inactive)") - .put("124", "Redstone Lamp (Active)") - .put("125", "Double Wood Slab") - .put("126", "Oak Wood Slab") - .put("126:1", "Spruce Wood Slab") - .put("126:2", "Birch Slab") - .put("126:3", "Jungle Slab") - .put("126:4", "Acacia Wood Slab") - .put("126:5", "Dark Oak Wood Slab") - .put("127", "Cocoa Plant") - .put("128", "Sandstone Stairs") - .put("129", "Emerald Ore") - .put("130", "Ender Chest") - .put("131", "Tripwire Hook") - .put("132", "Tripwire") - .put("133", "Emerald Block") - .put("134", "Spruce Wood Stairs") - .put("135", "Birch Wood Stairs") - .put("136", "Jungle Wood Stairs") - .put("137", "Command Block") - .put("138", "Beacon Block") - .put("139", "Cobblestone Wall") - .put("139:1", "Mossy Cobblestone Wall") - .put("140", "Flower Pot") - .put("141", "Carrots") - .put("142", "Potatoes") - .put("143", "Button") - .put("144", "Head") - .put("145", "Anvil") - .put("146", "Trapped Chest") - .put("147", "Weighted Pressure Plate (Light)") - .put("148", "Weighted Pressure Plate (Heavy)") - .put("149", "Redstone Comparator (inactive)") - .put("150", "Redstone Comparator (active)") - .put("151", "Daylight Sensor") - .put("152", "Redstone Block") - .put("153", "Nether Quartz Ore") - .put("154", "Hopper") - .put("155", "Quartz Block") - .put("155:1", "Chiseled Quartz Block") - .put("155:2", "Pillar Quartz Block") - .put("156", "Quartz Stairs") - .put("157", "Activator Rail") - .put("158", "Dropper") - .put("159", "Stained Clay") - .put("160", "Stained Glass Pane") - .put("161", "Acacia Leaves") - .put("161:1", "Dark Oak Leaves") - .put("162", "Acacia Wood") - .put("162:1", "Dark Oak Wood") - .put("163", "Acacia Wood Stairs") - .put("164", "Dark Oak Wood Stairs") - .put("165", "Slime Block") - .put("166", "Barrier") - .put("167", "Iron Trapdoor") - .put("168", "Prismarine") - .put("168:1", "Prismarine Bricks") - .put("168:2", "Dark Prismarine") - .put("169", "Sea Lantern") - .put("170", "Hay Block") - .put("171", "Carpet") - .put("172", "Hardened Clay") - .put("173", "Block of Coal") - .put("174", "Packed Ice") - .put("175", "Sunflower") - .put("175:1", "Lilac") - .put("175:2", "Double Tallgrass") - .put("175:3", "Large Fern") - .put("175:4", "Rose Bush") - .put("175:5", "Peony") - .put("178", "Daylight Sensor (Inverted)") - .put("179", "Red Sandstone") - .put("179:1", "Chiseled Red Sandstone") - .put("179:2", "Smooth Red Sandstone") - .put("180", "Red Sandstone Stairs") - .put("182", "Red Sandstone Slab") - .put("183", "Spruce Fence Gate") - .put("184", "Birch Fence Gate") - .put("185", "Jungle Fence Gate") - .put("186", "Dark Oak Fence Gate") - .put("187", "Acacia Fence Gate") - .put("188", "Spruce Fence") - .put("189", "Birch Fence") - .put("190", "Jungle Fence") - .put("191", "Dark Oak Fence") - .put("192", "Acacia Fence") - .put("198", "End Rod") - .put("199", "Chorus Plant") - .put("200", "Chorus Flower") - .put("201", "Purpur Block") - .put("202", "Purpur Pillar") - .put("203", "Purpur Stairs") - .put("204", "Purpur Slab (Double)") - .put("205", "Purpur Slab") - .put("206", "End Stone Bricks") - .put("208", "Grass Path") - .put("209", "End Gateway") - .put("210", "Repeating Command Block") - .put("211", "Chain Command Block") - .put("212", "Frosted Ice") - .put("213", "Magma Block") - .put("214", "Nether Wart Block") - .put("215", "Red Nether Brick") - .put("216", "Bone Block") - .put("217", "Structure Void") - .put("255", "Structure Block") - .put("256", "Iron Shovel") - .put("257", "Iron Pickaxe") - .put("258", "Iron Axe") - .put("259", "Flint and Steel") - .put("260", "Apple") - .put("261", "Bow") - .put("262", "Arrow") - .put("263", "Coal") - .put("263:1", "Charcoal") - .put("264", "Diamond") - .put("265", "Iron Ingot") - .put("266", "Gold Ingot") - .put("267", "Iron Sword") - .put("268", "Wooden Sword") - .put("269", "Wooden Shovel") - .put("270", "Wooden Pickaxe") - .put("271", "Wooden Axe") - .put("272", "Stone Sword") - .put("273", "Stone Shovel") - .put("274", "Stone Pickaxe") - .put("275", "Stone Axe") - .put("276", "Diamond Sword") - .put("277", "Diamond Shovel") - .put("278", "Diamond Pickaxe") - .put("279", "Diamond Axe") - .put("280", "Stick") - .put("281", "Bowl") - .put("282", "Mushroom Stew") - .put("283", "Gold Sword") - .put("284", "Gold Shovel") - .put("285", "Gold Pickaxe") - .put("286", "Gold Axe") - .put("287", "String") - .put("288", "Feather") - .put("289", "Gunpowder") - .put("290", "Wooden Hoe") - .put("291", "Stone Hoe") - .put("292", "Iron Hoe") - .put("293", "Diamond Hoe") - .put("294", "Gold Hoe") - .put("295", "Seeds") - .put("296", "Wheat") - .put("297", "Bread") - .put("298", "Leather Helmet") - .put("299", "Leather Chestplate") - .put("300", "Leather Leggings") - .put("301", "Leather Boots") - .put("302", "Chainmail Helmet") - .put("303", "Chainmail Chestplate") - .put("304", "Chainmail Leggings") - .put("305", "Chainmail Boots") - .put("306", "Iron Helmet") - .put("307", "Iron Chestplate") - .put("308", "Iron Leggings") - .put("309", "Iron Boots") - .put("310", "Diamond Helmet") - .put("311", "Diamond Chestplate") - .put("312", "Diamond Leggings") - .put("313", "Diamond Boots") - .put("314", "Gold Helmet") - .put("315", "Gold Chestplate") - .put("316", "Gold Leggings") - .put("317", "Gold Boots") - .put("318", "Flint") - .put("319", "Raw Porkchop") - .put("320", "Cooked Porkchop") - .put("321", "Painting") - .put("322", "Gold Apple") - .put("322:1", "Gold Apple (Enchanted)") - .put("323", "Sign") - .put("324", "Wooden Door") - .put("325", "Bucket") - .put("326", "Water Bucket") - .put("327", "Lava Bucket") - .put("328", "Minecart") - .put("329", "Saddle") - .put("330", "Iron Door") - .put("331", "Redstone") - .put("332", "Snowball") - .put("333", "Boat") - .put("334", "Leather") - .put("335", "Milk Bucket") - .put("336", "Brick") - .put("337", "Clay") - .put("338", "Sugar Cane") - .put("339", "Paper") - .put("340", "Book") - .put("341", "Slime Ball") - .put("342", "Storage Minecart") - .put("343", "Powered Minecart") - .put("344", "Egg") - .put("345", "Compass") - .put("346", "Fishing Rod") - .put("347", "Watch") - .put("348", "Glowstone Dust") - .put("349", "Raw Fish") - .put("349:1", "Raw Salmon") - .put("349:2", "Clownfish") - .put("349:3", "Pufferfish") - .put("350", "Cooked Fish") - .put("350:1", "Cooked Salmon") - .put("351", "Ink Sac") - .put("351:1", "Rose Red") - .put("351:2", "Cactus Green") - .put("351:3", "Cocoa Bean") - .put("351:4", "Lapis Lazuli") - .put("351:5", "Purple Dye") - .put("351:6", "Cyan Dye") - .put("351:7", "Light Gray Dye") - .put("351:8", "Gray Dye") - .put("351:9", "Pink Dye") - .put("351:10", "Lime Dye") - .put("351:11", "Dandelion Yellow") - .put("351:12", "Light Blue Dye") - .put("351:13", "Magenta Dye") - .put("351:14", "Orange Dye") - .put("351:15", "Bone Meal") - .put("352", "Bone") - .put("353", "Sugar") - .put("354", "Cake") - .put("355", "Bed") - .put("356", "Redstone Repeater") - .put("357", "Cookie") - .put("358", "Map") - .put("359", "Shears") - .put("360", "Melon") - .put("361", "Pumpkin Seeds") - .put("362", "Melon Seeds") - .put("363", "Raw Beef") - .put("364", "Steak") - .put("365", "Raw Chicken") - .put("366", "Roast Chicken") - .put("367", "Rotten Flesh") - .put("368", "Ender Pearl") - .put("369", "Blaze Rod") - .put("370", "Ghast Tear") - .put("371", "Gold Nugget") - .put("372", "Nether Wart") - .put("373", "Water Bottle") - .put("373:16", "Awkward Potion") - .put("373:32", "Thick Potion") - .put("373:64", "Mundane Potion") - .put("373:8193", "Regeneration Potion (0:45)") - .put("373:8194", "Swiftness Potion (3:00)") - .put("373:8195", "Fire Resistance Potion (3:00)") - .put("373:8196", "Poison Potion (0:45)") - .put("373:8197", "Healing Potion") - .put("373:8200", "Weakness Potion (1:30)") - .put("373:8201", "Strength Potion (3:00)") - .put("373:8202", "Slowness Potion (1:30)") - .put("373:8203", "Potion of Leaping (3:00)") - .put("373:8204", "Harming Potion") - .put("373:8225", "Regeneration Potion II (0:22)") - .put("373:8226", "Swiftness Potion II (1:30)") - .put("373:8228", "Poison Potion II (0:22)") - .put("373:8229", "Healing Potion II") - .put("373:8230", "Night Vision Potion (3:00)") - .put("373:8233", "Strength Potion II (1:30)") - .put("373:8235", "Potion of Leaping (1:30)") - .put("373:8236", "Harming Potion II") - .put("373:8237", "Water Breathing Potion (3:00)") - .put("373:8238", "Invisibility Potion (3:00)") - .put("373:8257", "Regeneration Potion (2:00)") - .put("373:8258", "Swiftness Potion (8:00)") - .put("373:8259", "Fire Resistance Potion (8:00)") - .put("373:8260", "Poison Potion (2:00)") - .put("373:8262", "Night Vision Potion (8:00)") - .put("373:8264", "Weakness Potion (4:00)") - .put("373:8265", "Strength Potion (8:00)") - .put("373:8266", "Slowness Potion (4:00)") - .put("373:8269", "Water Breathing Potion (8:00)") - .put("373:8270", "Invisibility Potion (8:00)") - .put("373:16378", "Fire Resistance Splash (2:15)") - .put("373:16385", "Regeneration Splash (0:33)") - .put("373:16386", "Swiftness Splash (2:15)") - .put("373:16388", "Poison Splash (0:33)") - .put("373:16389", "Healing Splash") - .put("373:16392", "Weakness Splash (1:07)") - .put("373:16393", "Strength Splash (2:15)") - .put("373:16394", "Slowness Splash (1:07)") - .put("373:16396", "Harming Splash") - .put("373:16418", "Swiftness Splash II (1:07)") - .put("373:16420", "Poison Splash II (0:16)") - .put("373:16421", "Healing Splash II") - .put("373:16422", "Night Vision Splash (2:15)") - .put("373:16425", "Strength Splash II (1:07)") - .put("373:16428", "Harming Splash II") - .put("373:16429", "Water Breathing Splash (2:15)") - .put("373:16430", "Invisibility Splash (2:15)") - .put("373:16449", "Regeneration Splash (1:30)") - .put("373:16450", "Swiftness Splash (6:00)") - .put("373:16451", "Fire Resistance Splash (6:00)") - .put("373:16452", "Poison Splash (1:30)") - .put("373:16454", "Night Vision Splash (6:00)") - .put("373:16456", "Weakness Splash (3:00)") - .put("373:16457", "Strength Splash (6:00)") - .put("373:16458", "Slowness Splash (3:00)") - .put("373:16461", "Water Breathing Splash (6:00)") - .put("373:16462", "Invisibility Splash (6:00)") - .put("373:16471", "Regeneration Splash II (0:16)") - .put("374", "Glass Bottle") - .put("375", "Spider Eye") - .put("376", "Fermented Spider Eye") - .put("377", "Blaze Powder") - .put("378", "Magma Cream") - .put("379", "Brewing Stand") - .put("380", "Cauldron") - .put("381", "Eye of Ender") - .put("382", "Glistering Melon") - .put("383", "Spawn Egg") - .put("383:50", "Spawn Creeper") - .put("383:51", "Spawn Skeleton") - .put("383:52", "Spawn Spider") - .put("383:54", "Spawn Zombie") - .put("383:55", "Spawn Slime") - .put("383:56", "Spawn Ghast") - .put("383:57", "Spawn Pigman") - .put("383:58", "Spawn Enderman") - .put("383:59", "Spawn Cave Spider") - .put("383:60", "Spawn Silverfish") - .put("383:61", "Spawn Blaze") - .put("383:62", "Spawn Magma Cube") - .put("383:65", "Spawn Bat") - .put("383:66", "Spawn Witch") - .put("383:67", "Spawn Endermite") - .put("383:68", "Spawn Guardian") - .put("383:90", "Spawn Pig") - .put("383:91", "Spawn Sheep") - .put("383:92", "Spawn Cow") - .put("383:93", "Spawn Chicken") - .put("383:94", "Spawn Squid") - .put("383:95", "Spawn Wolf") - .put("383:96", "Spawn Mooshroom") - .put("383:98", "Spawn Ocelot") - .put("383:100", "Spawn Horse") - .put("383:101", "Spawn Rabbit") - .put("383:120", "Spawn Villager") - .put("384", "Bottle o' Enchanting") - .put("385", "Fire Charge") - .put("386", "Book and Quill") - .put("387", "Written Book") - .put("388", "Emerald") - .put("389", "Item Frame") - .put("390", "Flower Pot") - .put("391", "Carrot") - .put("392", "Potato") - .put("393", "Baked Potato") - .put("394", "Poisonous Potato") - .put("395", "Empty Map") - .put("396", "Golden Carrot") - .put("397", "Skull Item") - .put("397:0", "Skeleton Skull") - .put("397:1", "Wither Skeleton Skull") - .put("397:2", "Zombie Head") - .put("397:3", "Head") - .put("397:4", "Creeper Head") - .put("397:5", "Dragon Head") - .put("398", "Carrot on a Stick") - .put("399", "Nether Star") - .put("400", "Pumpkin Pie") - .put("401", "Firework Rocket") - .put("402", "Firework Star") - .put("403", "Enchanted Book") - .put("404", "Redstone Comparator") - .put("405", "Nether Brick") - .put("406", "Nether Quartz") - .put("407", "Minecart with TNT") - .put("408", "Minecart with Hopper") - .put("409", "Prismarine Shard") - .put("410", "Prismarine Crystals") - .put("411", "Raw Rabbit") - .put("412", "Cooked Rabbit") - .put("413", "Rabbit Stew") - .put("414", "Rabbit Foot") - .put("415", "Rabbit Hide") - .put("417", "Iron Horse Armor") - .put("418", "Gold Horse Armor") - .put("419", "Diamond Horse Armor") - .put("420", "Lead") - .put("421", "Name Tag") - .put("422", "Minecart with Command Block") - .put("423", "Raw Mutton") - .put("424", "Cooked Mutton") - .put("425", "Banner") - .put("426", "End Crystal") - .put("427", "Spruce Door") - .put("428", "Birch Door") - .put("429", "Jungle Door") - .put("430", "Acacia Door") - .put("431", "Dark Oak Door") - .put("432", "Chorus Fruit") - .put("433", "Popped Chorus Fruit") - .put("434", "Beetroot") - .put("435", "Beetroot Seeds") - .put("436", "Beetroot Soup") - .put("437", "Dragon Breath") - .put("438", "Splash Potion") - .put("439", "Spectral Arrow") - .put("440", "Tipped Arrow") - .put("441", "Lingering Potion") - .put("442", "Shield") - .put("443", "Elytra") - .put("444", "Spruce Boat") - .put("445", "Birch Boat") - .put("446", "Jungle Boat") - .put("447", "Acacia Boat") - .put("448", "Dark Oak Boat") - .put("2256", "Music Disk (13)") - .put("2257", "Music Disk (Cat)") - .put("2258", "Music Disk (Blocks)") - .put("2259", "Music Disk (Chirp)") - .put("2260", "Music Disk (Far)") - .put("2261", "Music Disk (Mall)") - .put("2262", "Music Disk (Mellohi)") - .put("2263", "Music Disk (Stal)") - .put("2264", "Music Disk (Strad)") - .put("2265", "Music Disk (Ward)") - .put("2266", "Music Disk (11)") - .put("2267", "Music Disk (wait)") - .build(); - - public static String lookup(ItemStack stack) { - if (stack.hasItemMeta()) { - ItemMeta meta = stack.getItemMeta(); - if (meta.getDisplayName() != null) { - return meta.getDisplayName(); - } else if (meta instanceof BookMeta) { - return ((BookMeta) meta).getTitle(); - } - } - - String result; - String key = Integer.toString(stack.getTypeId()); - Material mat = stack.getType(); - if ((mat == Material.WOOL || mat == Material.CARPET) && stack.getDurability() == 0) { - // special case: white wool/carpet is just called "Wool" or "Carpet" - result = map.get(key); - } else if (mat == Material.WOOL || mat == Material.CARPET || mat == Material.STAINED_CLAY || mat == Material.STAINED_GLASS || mat == Material.STAINED_GLASS_PANE || mat == Material.BANNER) { - DyeColor dc = DyeColor.getByWoolData((byte) stack.getDurability()); - result = dc == null ? map.get(key) : ColorNames.getColorString(dc) + " " + map.get(key); - } else if (mat == Material.LEATHER_HELMET || mat == Material.LEATHER_CHESTPLATE || mat == Material.LEATHER_LEGGINGS || mat == Material.LEATHER_BOOTS) { - LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) stack.getItemMeta(); - DyeColor dc = DyeColor.getByColor(leatherArmorMeta.getColor()); - result = dc == null ? map.get(key) : ColorNames.getColorString(dc) + " " + map.get(key); - } else if (stack.getDurability() != 0) { - result = map.get(key + ":" + stack.getDurability()); - if (result == null) { - result = map.get(key); - } - } else { - result = map.containsKey(key) ? map.get(key) : stack.getType().toString(); - } - - return result; - } - -} diff --git a/src/de/epiceric/shopchest/utils/ShopUtils.java b/src/de/epiceric/shopchest/utils/ShopUtils.java index e8dd4a7..8515c5c 100644 --- a/src/de/epiceric/shopchest/utils/ShopUtils.java +++ b/src/de/epiceric/shopchest/utils/ShopUtils.java @@ -4,15 +4,13 @@ import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.sql.Database; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; +import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.Chest; import org.bukkit.block.DoubleChest; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Item; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.inventory.InventoryHolder; import java.util.ArrayList; @@ -23,15 +21,12 @@ import java.util.UUID; public class ShopUtils { private static HashMap shopLocation = new HashMap<>(); + private static ShopChest plugin = ShopChest.getInstance(); public static Shop getShop(Location location) { Location newLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ()); - if (shopLocation.containsKey(newLocation)) { - return shopLocation.get(newLocation); - } else { - return null; - } + return shopLocation.get(newLocation); } public static boolean isShop(Location location) { @@ -69,7 +64,7 @@ public class ShopUtils { } if (addToDatabase) - ShopChest.database.addShop(shop); + plugin.getShopDatabase().addShop(shop); } } @@ -96,20 +91,20 @@ public class ShopUtils { shop.removeHologram(); if (removeFromDatabase) - ShopChest.database.removeShop(shop); + plugin.getShopDatabase().removeShop(shop); } } public static int getShopLimit(Player p) { - int limit = Config.default_limit(); + int limit = Config.default_limit; - if (ShopChest.perm.hasGroupSupport()) { + if (plugin.getPermission().hasGroupSupport()) { List groups = new ArrayList(); - for (String key : Config.shopLimits_group()) { - for (int i = 0; i < ShopChest.perm.getGroups().length; i++) { - if (ShopChest.perm.getGroups()[i].equals(key)) { - if (ShopChest.perm.playerInGroup(p, key)) { + for (String key : Config.shopLimits_group) { + for (int i = 0; i < plugin.getPermission().getGroups().length; i++) { + if (plugin.getPermission().getGroups()[i].equals(key)) { + if (plugin.getPermission().playerInGroup(p, key)) { groups.add(key); } } @@ -137,7 +132,7 @@ public class ShopUtils { } } - for (String key : Config.shopLimits_player()) { + for (String key : Config.shopLimits_player) { int pLimit = ShopChest.getInstance().getConfig().getInt("shop-limits.player." + key); if (Utils.isUUID(key)) { if (p.getUniqueId().equals(UUID.fromString(key))) { @@ -163,16 +158,27 @@ public class ShopUtils { return shopCount; } - public static void reloadShops(Player player) { + public static int reloadShops() { for (Shop shop : ShopUtils.getShops()) { ShopUtils.removeShop(shop, false); } + for (World world : Bukkit.getWorlds()) { + for (Entity entity : world.getEntities()) { + if (entity instanceof Item) { + Item item = (Item) entity; + if (item.hasMetadata("shopItem")) { + item.remove(); + } + } + } + } + int count = 0; - for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) { + for (int id = 1; id < plugin.getShopDatabase().getHighestID() + 1; id++) { try { - Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP); + Shop shop = (Shop) plugin.getShopDatabase().get(id, Database.ShopInfo.SHOP); ShopUtils.addShop(shop, false); } catch (NullPointerException e) { continue; @@ -181,10 +187,6 @@ public class ShopUtils { count++; } - if (player != null) player.sendMessage(Config.reloaded_shops(count)); - - for (Player p : Bukkit.getOnlinePlayers()) { - Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation())); - } + return count; } } diff --git a/src/de/epiceric/shopchest/utils/UpdateChecker.java b/src/de/epiceric/shopchest/utils/UpdateChecker.java index bb65b74..5afa653 100644 --- a/src/de/epiceric/shopchest/utils/UpdateChecker.java +++ b/src/de/epiceric/shopchest/utils/UpdateChecker.java @@ -1,9 +1,11 @@ package de.epiceric.shopchest.utils; import de.epiceric.shopchest.ShopChest; -import org.jsoup.Connection; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; public class UpdateChecker { @@ -19,39 +21,54 @@ public class UpdateChecker { public UpdateCheckerResult updateNeeded() { try { - Connection con = Jsoup.connect("http://textuploader.com/all1l/raw"); - con.userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"); + URL url = new URL("http://textuploader.com/all1l/raw"); + URLConnection conn = url.openConnection(); + conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"); + conn.connect(); - Document doc = con.get(); + InputStreamReader isr = new InputStreamReader(conn.getInputStream()); + BufferedReader br = new BufferedReader(isr); - version = doc.text().split("\\|")[0]; - link = url + "download?version=" + doc.text().split("\\|")[1]; + String line = br.readLine(); + + isr.close(); + br.close(); + + version = line.split("\\|")[0]; + link = url + "download?version=" + line.split("\\|")[1]; if (plugin.getDescription().getVersion().equals(version)) return UpdateCheckerResult.FALSE; else return UpdateCheckerResult.TRUE; - } catch (Exception | Error e) { + } catch (Exception e) { return UpdateCheckerResult.ERROR; } } public String[] getBroadcast() { try { - Connection con = Jsoup.connect("http://textuploader.com/5b51f/raw"); - con.userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"); + URL url = new URL("http://textuploader.com/5b51f/raw"); + URLConnection conn = url.openConnection(); + conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"); + conn.connect(); - Document doc = con.get(); + InputStreamReader isr = new InputStreamReader(conn.getInputStream()); + BufferedReader br = new BufferedReader(isr); - String broadcast = doc.text(); + String line = br.readLine(); - String[] messages = broadcast.split("#n"); + isr.close(); + br.close(); - if (!broadcast.equals("/")) + String[] messages = line.split("#n"); + + if (!line.equals("/")) return messages; } catch (Exception | Error e) { + e.printStackTrace(); } return null; diff --git a/src/de/epiceric/shopchest/utils/Utils.java b/src/de/epiceric/shopchest/utils/Utils.java index 0b7e3e4..3b44226 100644 --- a/src/de/epiceric/shopchest/utils/Utils.java +++ b/src/de/epiceric/shopchest/utils/Utils.java @@ -2,17 +2,12 @@ package de.epiceric.shopchest.utils; import org.apache.commons.codec.binary.Base64; import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.Server; import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; -import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; -import java.util.HashMap; public class Utils { @@ -22,7 +17,7 @@ public class Utils { ArrayList inventoryItems = new ArrayList<>(); if (inventory instanceof PlayerInventory) { - if (getVersion(Bukkit.getServer()).contains("1_9")) { + if (getMajorVersion() >= 9) { inventoryItems.add(inventory.getItem(40)); } @@ -47,12 +42,16 @@ public class Utils { return amount; } - public static String getVersion(Server server) { - String packageName = server.getClass().getPackage().getName(); + public static String getServerVersion() { + String packageName = Bukkit.getServer().getClass().getPackage().getName(); return packageName.substring(packageName.lastIndexOf('.') + 1); } + public static int getMajorVersion() { + return Integer.valueOf(getServerVersion().split("_")[1]); + } + public static boolean isUUID(String string) { return string.matches("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[34][0-9a-fA-F]{3}-[89ab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}"); }