From 4f0b56e2dcc3c8709b3e15b69cab92286fb9e899 Mon Sep 17 00:00:00 2001 From: Sn0wStorm Date: Sun, 1 Dec 2019 23:50:56 +0100 Subject: [PATCH] Config updater for 2.0 + config fixes & fix for unlabeled --- resources/config/patches/de18.txt | 58 +++ resources/config/patches/en18.txt | 58 +++ resources/config/patches/fr18.txt | 59 +++ resources/config/v12/de/config.yml | 34 +- resources/config/v12/en/config.yml | 35 +- resources/config/v12/fr/config.yml | 35 +- resources/config/v12/it/config.yml | 49 +- resources/config/v13/de/config.yml | 29 +- resources/config/v13/en/config.yml | 94 ++-- resources/config/v13/fr/config.yml | 30 +- resources/config/v13/it/config.yml | 44 +- resources/config/v13/zh/config.yml | 28 +- src/com/dre/brewery/Brew.java | 2 +- src/com/dre/brewery/P.java | 98 ++-- .../brewery/api/events/ConfigLoadEvent.java | 1 + src/com/dre/brewery/filedata/BConfig.java | 8 +- .../dre/brewery/filedata/ConfigUpdater.java | 454 ++++++++++++++++-- src/com/dre/brewery/lore/BrewLore.java | 25 +- src/com/dre/brewery/utility/LegacyUtil.java | 6 +- 19 files changed, 845 insertions(+), 302 deletions(-) create mode 100644 resources/config/patches/de18.txt create mode 100644 resources/config/patches/en18.txt create mode 100644 resources/config/patches/fr18.txt diff --git a/resources/config/patches/de18.txt b/resources/config/patches/de18.txt new file mode 100644 index 0000000..d123be4 --- /dev/null +++ b/resources/config/patches/de18.txt @@ -0,0 +1,58 @@ + + + +# -- Eigene Items Definieren -- +# Die festgelegte id kann dann in einem Rezept verwendet werden + +# matchAny: true wenn es schon reicht wenn eine der Angaben zutrifft +# material: Welche Art das Item haben muss +# name: Welchen Namen das Item haben muss (Farbcodes möglich: z.b. &6) +# lore: Was in der Lore des Items stehen muss + +customItems: + bsp-item: +# Ein Barriere Item das Mauer heißt und in der Lore die angegebene Zeile hat +%%%%MAT1%%%% + name: 'Mauer' + lore: + - '&7Besonders gut geschützt' + + bsp-item2: +# Mit matchAny muss nur eine der Angaben zutreffen. +# Hier also eine der Türarten, oder ein Item namens Buchenholztür, oder ein Item mit 'Eine Tür' in der Lore + matchAny: true +%%%%MAT2%%%% + name: + - 'Buchenholztür' + lore: + - 'Eine Tür' + + himbeere: + name: '&cHimbeere' + + +# -- Zutaten im Kessel -- +# Hier kann angegeben werden welche Zutaten in den Kessel getan werden können und was mit ihnen geschieht. + + # name: Name des Basistrankes der aus dem Kessel kommt (Farbcodes möglich: z.b. &6) + # ingredients: Auflistung von 'Material/Anzahl' + # Halte ein Item in der Hand und benutze /brew ItemName um dessen Material herauszufinden und für ein Rezept zu benutzen + # (Item-ids anstatt Material können in Bukkit nicht mehr benutzt werden) + # Eine Liste von allen Materialien kann hier gefunden werden: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Farbe des Trankes der aus dem Kessel kommt + # Benutzbare Farben: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Oder RGB Farben (Hex: also zB '99FF33') (Ohne #) (mit '') (Einfach nach "HTML color" im Internet suchen) + # lore: Auflistung von zusätzlichem Text auf dem Trank. (Farbcodes möglich: z.b. &6) + +cauldron: + bsp: + name: Beispiel + ingredients: + - Bedrock/2 + - Diamond + color: BLACK + lore: + - Ein Beispiel für einen Basistrank + - So kommt er aus dem Kessel + +# -- Eine Zutat: -- diff --git a/resources/config/patches/en18.txt b/resources/config/patches/en18.txt new file mode 100644 index 0000000..5e34330 --- /dev/null +++ b/resources/config/patches/en18.txt @@ -0,0 +1,58 @@ + + + +# -- Define custom items -- +# The defined id can then be used in recipes + +# matchAny: true if it is already enough if one of the info matches +# material: Which type the item has to be +# name: Which name the item has to be (Formatting codes possible: such as &6) +# lore: What has to be in the lore of the item + +customItems: + ex-item: + # A Barrier item called Wall and has the given line in its lore +%%%%MAT1%%%% + name: 'Wall' + lore: + - '&7Very well protected' + + ex-item2: + # Using matchAny only one of the following has to match. + # In this case on of the door types, or an item called Beechwood Door, or an item with 'A door' in its lore + matchAny: true +%%%%MAT2%%%% + name: + - 'Beechwood Door' + lore: + - 'A door' + + rasp: + name: '&cRaspberry' + + +# -- Ingredients in the Cauldron -- +# Which Ingredients are accepted by the Cauldron and the base potion resulting from them + + # name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) + # ingredients: List of 'material/amount' + # With an item in your hand, use /brew ItemName to get its material for use in a recipe + # (Item-ids instead of material are not supported by bukkit anymore and will not work) + # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Color of the potion from a cauldron. + # Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) + # lore: List of additional text on the base potion. (Formatting codes possible: such as &6) + +cauldron: + ex: + name: Example + ingredients: + - Bedrock/2 + - Diamond + color: BLACK + lore: + - An example for a Base Potion + - This is how it comes out of a Cauldron + + # -- One Ingredient: -- diff --git a/resources/config/patches/fr18.txt b/resources/config/patches/fr18.txt new file mode 100644 index 0000000..f2bda51 --- /dev/null +++ b/resources/config/patches/fr18.txt @@ -0,0 +1,59 @@ + + + +# -- Définir des objets personnalisés -- +# L'id défini peut ensuite être utilisé dans les recettes + +# matchAny: si c'est déjà assez si l'une des infos correspond +# material: le type d'article à utiliser +# name: Quel nom l'article doit porter (codes de formatage possibles : tels que &6) +# lore: Ce qui doit être dans la lore de l'objet + +customItems: + ex-item: + # Un objet Barrière appelé "Wall" et qui a la ligne donnée dans sa lore +%%%%MAT1%%%% + name: 'Wall' + lore: + - '&7Very well protected' + + ex-item2: + # En utilisant matchAny, un seul des éléments suivants doit correspondre. + # Dans ce cas, l'un des types de porte, ou un article appelé "Beechwood Door", ou un objet avec "A door" dans sa lore. + matchAny: true +%%%%MAT2%%%% + name: + - 'Beechwood Door' + lore: + - 'A door' + + rasp: + name: '&cRaspberry' + + +# -- Ingrédients dans le chaudron -- +# Quels sont les ingrédients acceptés par le chaudron et la potion de base qui en résulte + + # name: Nom de la potion de base qui sort du chaudron (codes de formatage possibles : tels que &6) + # ingredients: Liste des 'matériaux/montant' + # Avec un objet en main, utilisez /brew ItemName pour obtenir son matériau pour une recette de cuisine + # (Les id d'objets à la place des matériaux sont obsolètes pour bukkit) + # Une liste des matériaux peuvent-être trouvés ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color : Couleur de la potion provenant d'un chaudron. + # Couleurs disponibles : DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # (Dans l'ordre : Rouge foncé, Rouge, Rouge clair, Orange, Rose, Bleu, Cyan, Eau, Vert, Noir, Gris, Gris clair) + # Ou couleurs RGB (hex: par exemple '99FF33') (avec '') (recherche de "HTML color" sur internet) + # lore: Liste de texte supplémentaire sur la potion de base. (Formatting codes possible: such as &6) + +cauldron: + ex: + name: Exemple + ingredients: + - Bedrock/2 + - Diamond + color: BLACK + lore: + - Un exemple pour une potion de base + - Voici comment il sort d'un chaudron + + # -- Un ingrédient: -- diff --git a/resources/config/v12/de/config.yml b/resources/config/v12/de/config.yml index 7d2b47d..ab2c9ea 100644 --- a/resources/config/v12/de/config.yml +++ b/resources/config/v12/de/config.yml @@ -80,7 +80,7 @@ autosave: 3 debug: false # Config Version -version: '1.8' +version: '2.0' oldMat: true @@ -88,10 +88,10 @@ oldMat: true # -- Eigene Items Definieren -- # Die festgelegte id kann dann in einem Rezept verwendet werden -# matchAny: true wenn es schon reicht wenn eine der Angaben zutrifft -# material: Welche Art das Item haben muss -# name: Welchen Namen das Item haben muss (Farbcodes möglich: z.b. &6) -# lore: Was in der Lore des Items stehen muss +# matchAny: true wenn es schon reicht wenn eine der Angaben zutrifft +# material: Welche Art das Item haben muss +# name: Welchen Namen das Item haben muss (Farbcodes möglich: z.b. &6) +# lore: Was in der Lore des Items stehen muss customItems: bsp-item: @@ -120,15 +120,15 @@ customItems: # -- Zutaten im Kessel -- # Hier kann angegeben werden welche Zutaten in den Kessel getan werden können und was mit ihnen geschieht. -# name: Name des Basistrankes der aus dem Kessel kommt (Farbcodes möglich: z.b. &6) -# ingredients: Auflistung von 'Material/Anzahl' -# Halte ein Item in der Hand und benutze /brew ItemName um dessen Material herauszufinden und für ein Rezept zu benutzen -# (Item-ids anstatt Material können in Bukkit nicht mehr benutzt werden) -# Eine Liste von allen Materialien kann hier gefunden werden: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Farbe des Trankes der aus dem Kessel kommt -# Benutzbare Farben: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Oder RGB Farben (Hex: also zB '99FF33') (Ohne #) (mit '') (Einfach nach "HTML color" im Internet suchen) -# lore: Auflistung von zusätzlichem Text auf dem Trank. (Farbcodes möglich: z.b. &6) + # name: Name des Basistrankes der aus dem Kessel kommt (Farbcodes möglich: z.b. &6) + # ingredients: Auflistung von 'Material/Anzahl' + # Halte ein Item in der Hand und benutze /brew ItemName um dessen Material herauszufinden und für ein Rezept zu benutzen + # (Item-ids anstatt Material können in Bukkit nicht mehr benutzt werden) + # Eine Liste von allen Materialien kann hier gefunden werden: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Farbe des Trankes der aus dem Kessel kommt + # Benutzbare Farben: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Oder RGB Farben (Hex: also zB '99FF33') (Ohne #) (mit '') (Einfach nach "HTML color" im Internet suchen) + # lore: Auflistung von zusätzlichem Text auf dem Trank. (Farbcodes möglich: z.b. &6) cauldron: @@ -197,8 +197,8 @@ cauldron: # (Item-ids anstatt Material können in Bukkit nicht mehr benutzt werden) # Eine Liste von allen Materialien kann hier gefunden werden: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html # Es kann ein Data-Wert (durability) angegeben werden, weglassen ignoriert diesen beim hinzufügen einer Zutat -# Wenn Vault installiert ist können normale englische Item Namen verwendet werden, anstatt Material, ID und Data! -# Vault erkennt Namen wie "Jungle Leaves" anstatt "LEAVES,3". Dies macht es viel einfacher! +# Plugin Items mit 'Plugin:Id' (Im Moment ExoticGarden, Slimefun, MMOItems, Brewery) +# Oder ein oben definiertes Custom Item # cookingtime: Zeit in Echtminuten die die Zutaten kochen müssen # distillruns: Wie oft destilliert werden muss für vollen Alkoholgehalt (0=ohne Destillieren) # distilltime: Wie lange (in sekunden) ein Destillations-Durchlauf braucht (0=Standard Zeit von 40 sek) MC Standard wäre 20 sek @@ -229,12 +229,10 @@ recipes: bsp: name: Schlechtes Beispiel/Beispiel/Gutes Beispiel ingredients: - - SUGAR_CANE/5 - DIAMOND/1 - INK_SACK,3/20 - WOOD,1/8 - BEDROCK/1 -# - Jungle Leaves/64 # Nur mit Vault - Brewery:Weißbier/2 # - ExoticGarden:Grape/3 - bsp-item/4 diff --git a/resources/config/v12/en/config.yml b/resources/config/v12/en/config.yml index d16df4b..746130e 100644 --- a/resources/config/v12/en/config.yml +++ b/resources/config/v12/en/config.yml @@ -81,7 +81,7 @@ autosave: 3 debug: false # Config Version -version: '1.8' +version: '2.0' oldMat: true @@ -89,10 +89,10 @@ oldMat: true # -- Define custom items -- # The defined id can then be used in recipes -# matchAny: true if it is already enough if one of the info matches -# material: Which type the item has to be -# name: Which name the item has to be (Formatting codes possible: such as &6) -# lore: What has to be in the lore of the item +# matchAny: true if it is already enough if one of the info matches +# material: Which type the item has to be +# name: Which name the item has to be (Formatting codes possible: such as &6) +# lore: What has to be in the lore of the item customItems: ex-item: @@ -121,15 +121,15 @@ customItems: # -- Ingredients in the Cauldron -- # Which Ingredients are accepted by the Cauldron and the base potion resulting from them -# name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) -# ingredients: List of 'material/amount' -# With an item in your hand, use /brew ItemName to get its material for use in a recipe -# (Item-ids instead of material are not supported by bukkit anymore and will not work) -# A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Color of the potion from a cauldron. -# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) -# lore: List of additional text on the base potion. (Formatting codes possible: such as &6) + # name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) + # ingredients: List of 'material/amount' + # With an item in your hand, use /brew ItemName to get its material for use in a recipe + # (Item-ids instead of material are not supported by bukkit anymore and will not work) + # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Color of the potion from a cauldron. + # Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) + # lore: List of additional text on the base potion. (Formatting codes possible: such as &6) cauldron: ex: @@ -198,8 +198,8 @@ cauldron: # (Item-ids instead of material are not supported by bukkit anymore and will not work) # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html # You can specify a data (durability) value, omitting it will ignore the data value of the added ingredient -# If Vault is installed normal names can be used instead of material or id, so using Vault is highly recommended. -# Vault will recognize things like "Jungle Leaves" instead of "LEAVES,3" +# Plugin items with 'plugin:id' (Currently supporting ExoticGarden, Slimefun, MMOItems, Brewery) +# Or a custom item defined above # cookingtime: Time in real minutes ingredients have to boil # distillruns: How often it has to be distilled for full alcohol (0=without distilling) # distilltime: How long (in seconds) one distill-run takes (0=Default time of 40 sec) MC Default would be 20 sec @@ -236,8 +236,7 @@ recipes: - Brewery:Wheatbeer/2 # - ExoticGarden:Grape/3 - BEDROCK/1 -# - Jungle Leaves/64 # Only with Vault -# - Green Dye/6 # Only with Vault + - ex-item/4 cookingtime: 3 distillruns: 2 distilltime: 60 diff --git a/resources/config/v12/fr/config.yml b/resources/config/v12/fr/config.yml index 5015706..5ff25d1 100644 --- a/resources/config/v12/fr/config.yml +++ b/resources/config/v12/fr/config.yml @@ -82,7 +82,7 @@ autosave: 3 debug: false # Version de configuration -version: '1.8' +version: '2.0' oldMat: true @@ -90,10 +90,10 @@ oldMat: true # -- Définir des objets personnalisés -- # L'id défini peut ensuite être utilisé dans les recettes -# matchAny: si c'est déjà assez si l'une des infos correspond -# material: le type d'article à utiliser -# name: Quel nom l'article doit porter (codes de formatage possibles : tels que &6) -# lore: Ce qui doit être dans la lore de l'objet +# matchAny: si c'est déjà assez si l'une des infos correspond +# material: le type d'article à utiliser +# name: Quel nom l'article doit porter (codes de formatage possibles : tels que &6) +# lore: Ce qui doit être dans la lore de l'objet customItems: ex-item: @@ -122,16 +122,16 @@ customItems: # -- Ingrédients dans le chaudron -- # Quels sont les ingrédients acceptés par le chaudron et la potion de base qui en résulte -# name: Nom de la potion de base qui sort du chaudron (codes de formatage possibles : tels que &6) -# ingredients: Liste des 'matériaux/montant' -# Avec un objet en main, utilisez /brew ItemName pour obtenir son matériau pour une recette de cuisine -# (Les id d'objets à la place des matériaux sont obsolètes pour bukkit) -# Une liste des matériaux peuvent-être trouvés ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color : Couleur de la potion provenant d'un chaudron. -# Couleurs disponibles : DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# (Dans l'ordre : Rouge foncé, Rouge, Rouge clair, Orange, Rose, Bleu, Cyan, Eau, Vert, Noir, Gris, Gris clair) -# Ou couleurs RGB (hex: par exemple '99FF33') (avec '') (recherche de "HTML color" sur internet) -# lore: Liste de texte supplémentaire sur la potion de base. (Formatting codes possible: such as &6) + # name: Nom de la potion de base qui sort du chaudron (codes de formatage possibles : tels que &6) + # ingredients: Liste des 'matériaux/montant' + # Avec un objet en main, utilisez /brew ItemName pour obtenir son matériau pour une recette de cuisine + # (Les id d'objets à la place des matériaux sont obsolètes pour bukkit) + # Une liste des matériaux peuvent-être trouvés ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color : Couleur de la potion provenant d'un chaudron. + # Couleurs disponibles : DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # (Dans l'ordre : Rouge foncé, Rouge, Rouge clair, Orange, Rose, Bleu, Cyan, Eau, Vert, Noir, Gris, Gris clair) + # Ou couleurs RGB (hex: par exemple '99FF33') (avec '') (recherche de "HTML color" sur internet) + # lore: Liste de texte supplémentaire sur la potion de base. (Formatting codes possible: such as &6) cauldron: ex: @@ -200,8 +200,6 @@ cauldron: # Ex: 'Sugar_Cane' # Une liste des matériaux peuvent-être trouvés ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html # Vous pouvez spécifier une data (Ex: 5,3 -> Planche de bois de jungle), si vous ne le faites pas la data ne sera pas prise en compte (Ex : 5 -> Bois en général) -# If Vault is installed normal names can be used instead of material or id, so using Vault is highly recommended. -# Vault will recognize things like "Jungle Leaves" instead of "5,3" # Plugin items avec 'plugin:id' (Actuellement supporté ExoticGarden, Slimefun, MMOItems, Brewery) # Ou un élément personnalisé défini ci-dessus # cookingtime: Temps en minutes réelles durant lesquelles les ingrédients devront bouillir @@ -245,8 +243,7 @@ recipes: - Brewery:Wheatbeer/2 # - ExoticGarden:Grape/3 - BEDROCK/1 -# - Jungle Leaves/64 # Only with Vault -# - Green Dye/6 # Only with Vault + - ex-item/4 cookingtime: 3 distillruns: 2 distilltime: 60 diff --git a/resources/config/v12/it/config.yml b/resources/config/v12/it/config.yml index bc84f0a..99bb64b 100644 --- a/resources/config/v12/it/config.yml +++ b/resources/config/v12/it/config.yml @@ -81,7 +81,7 @@ autosave: 3 debug: false # Versione del config -version: '1.8' +version: '2.0' oldMat: true @@ -89,10 +89,10 @@ oldMat: true # -- Define custom items -- # The defined id can then be used in recipes -# matchAny: true if it is already enough if one of the info matches -# material: Which type the item has to be -# name: Which name the item has to be (Formatting codes possible: such as &6) -# lore: What has to be in the lore of the item +# matchAny: true if it is already enough if one of the info matches +# material: Which type the item has to be +# name: Which name the item has to be (Formatting codes possible: such as &6) +# lore: What has to be in the lore of the item customItems: ex-item: @@ -121,15 +121,15 @@ customItems: # -- Ingredients in the Cauldron -- # Which Ingredients are accepted by the Cauldron and the base potion resulting from them -# name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) -# ingredients: List of 'material/amount' -# With an item in your hand, use /brew ItemName to get its material for use in a recipe -# (Item-ids instead of material are not supported by bukkit anymore and will not work) -# A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Color of the potion from a cauldron. -# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) -# lore: List of additional text on the base potion. (Formatting codes possible: such as &6) + # name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) + # ingredients: List of 'material/amount' + # With an item in your hand, use /brew ItemName to get its material for use in a recipe + # (Item-ids instead of material are not supported by bukkit anymore and will not work) + # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Color of the potion from a cauldron. + # Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) + # lore: List of additional text on the base potion. (Formatting codes possible: such as &6) cauldron: ex: @@ -144,39 +144,39 @@ cauldron: # -- One Ingredient: -- wheat: - name: Fermented wheat + name: Frumento fermentato ingredients: WHEAT sugarcane: - name: Sugar brew + name: Miscela zuccherata ingredients: SUGAR_CANE color: 'f1ffad' # yellowish green apple: - name: Apple cider + name: Sidro di mele ingredients: APPLE potato: - name: Potatomash + name: Purè di patate ingredients: POTATO_ITEM grass: - name: Boiled herbs + name: Erbe bollite ingredients: LONG_GRASS color: '99ff66' # bright green rmushroom: - name: Mushroom brew + name: Miscela ai funghi ingredients: RED_MUSHROOM color: 'ff5c33' # amber red cocoa: - name: Chocolately brew + name: Miscela colorata ingredients: INK_SACK color: '804600' # mocca milk: - name: Milky water + name: Acqua lattea ingredients: MILK_BUCKET color: BRIGHT_GREY @@ -196,8 +196,6 @@ cauldron: # (Gli id invece dei materiali sono "disapprovati" da Bukkit e potrebbero non funzionare in futuro!) # Una lista di materiali può essere trovata qui: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html # Puoi specificare dei dati dell'oggetto, ma se omesso sarà semplicemente ignorato. -# Se Vault è installato i nomi normali possono essere usati invece del materiale o dell'id quindi l'uso di Vault è fortemente consigliato. -# Vault riconoscerà cose come "Jungle Leaves" invece di "LEAVES,3". # Plugin items with 'plugin:id' (Currently supporting ExoticGarden, Slimefun, MMOItems, Brewery) # Or a custom item defined above # cookingtime: Tempo in minuti richiesto dagli ingredienti per bollire @@ -236,8 +234,7 @@ recipes: - Brewery:Wheatbeer/2 # - ExoticGarden:Grape/3 - BEDROCK/1 -# - Jungle Leaves/64 # Solo con Vault -# - Green Dye/6 # Solo con Vault + - ex-item/4 cookingtime: 3 distillruns: 2 distilltime: 60 diff --git a/resources/config/v13/de/config.yml b/resources/config/v13/de/config.yml index 38a6d9e..7c9c1bb 100644 --- a/resources/config/v13/de/config.yml +++ b/resources/config/v13/de/config.yml @@ -80,17 +80,17 @@ autosave: 3 debug: false # Config Version -version: '1.8' +version: '2.0' # -- Eigene Items Definieren -- # Die festgelegte id kann dann in einem Rezept verwendet werden -# matchAny: true wenn es schon reicht wenn eine der Angaben zutrifft -# material: Welche Art das Item haben muss -# name: Welchen Namen das Item haben muss (Farbcodes möglich: z.b. &6) -# lore: Was in der Lore des Items stehen muss +# matchAny: true wenn es schon reicht wenn eine der Angaben zutrifft +# material: Welche Art das Item haben muss +# name: Welchen Namen das Item haben muss (Farbcodes möglich: z.b. &6) +# lore: Was in der Lore des Items stehen muss customItems: bsp-item: @@ -120,16 +120,15 @@ customItems: # -- Zutaten im Kessel -- # Hier kann angegeben werden welche Zutaten in den Kessel getan werden können und was mit ihnen geschieht. -# name: Name des Basistrankes der aus dem Kessel kommt (Farbcodes möglich: z.b. &6) -# ingredients: Auflistung von 'Material/Anzahl' -# Halte ein Item in der Hand und benutze /brew ItemName um dessen Material herauszufinden und für ein Rezept zu benutzen -# (Item-ids anstatt Material können in Bukkit nicht mehr benutzt werden) -# Eine Liste von allen Materialien kann hier gefunden werden: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Farbe des Trankes der aus dem Kessel kommt -# Benutzbare Farben: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Oder RGB Farben (Hex: also zB '99FF33') (Ohne #) (mit '') (Einfach nach "HTML color" im Internet suchen) -# lore: Auflistung von zusätzlichem Text auf dem Trank. (Farbcodes möglich: z.b. &6) - + # name: Name des Basistrankes der aus dem Kessel kommt (Farbcodes möglich: z.b. &6) + # ingredients: Auflistung von 'Material/Anzahl' + # Halte ein Item in der Hand und benutze /brew ItemName um dessen Material herauszufinden und für ein Rezept zu benutzen + # (Item-ids anstatt Material können in Bukkit nicht mehr benutzt werden) + # Eine Liste von allen Materialien kann hier gefunden werden: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Farbe des Trankes der aus dem Kessel kommt + # Benutzbare Farben: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Oder RGB Farben (Hex: also zB '99FF33') (Ohne #) (mit '') (Einfach nach "HTML color" im Internet suchen) + # lore: Auflistung von zusätzlichem Text auf dem Trank. (Farbcodes möglich: z.b. &6) cauldron: bsp: diff --git a/resources/config/v13/en/config.yml b/resources/config/v13/en/config.yml index 2cef828..92b636b 100644 --- a/resources/config/v13/en/config.yml +++ b/resources/config/v13/en/config.yml @@ -81,17 +81,17 @@ autosave: 3 debug: false # Config Version -version: '1.8' +version: '2.0' # -- Define custom items -- # The defined id can then be used in recipes -# matchAny: true if it is already enough if one of the info matches -# material: Which type the item has to be -# name: Which name the item has to be (Formatting codes possible: such as &6) -# lore: What has to be in the lore of the item +# matchAny: true if it is already enough if one of the info matches +# material: Which type the item has to be +# name: Which name the item has to be (Formatting codes possible: such as &6) +# lore: What has to be in the lore of the item customItems: ex-item: @@ -121,15 +121,15 @@ customItems: # -- Ingredients in the Cauldron -- # Which Ingredients are accepted by the Cauldron and the base potion resulting from them -# name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) -# ingredients: List of 'material/amount' -# With an item in your hand, use /brew ItemName to get its material for use in a recipe -# (Item-ids instead of material are not supported by bukkit anymore and will not work) -# A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Color of the potion from a cauldron. -# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) -# lore: List of additional text on the base potion. (Formatting codes possible: such as &6) + # name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) + # ingredients: List of 'material/amount' + # With an item in your hand, use /brew ItemName to get its material for use in a recipe + # (Item-ids instead of material are not supported by bukkit anymore and will not work) + # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Color of the potion from a cauldron. + # Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) + # lore: List of additional text on the base potion. (Formatting codes possible: such as &6) cauldron: ex: @@ -365,41 +365,41 @@ recipes: - POISON/10 absinthe: - name: Poor Absinthe/Absinthe/Strong Absinthe - ingredients: - - Grass/15 - cookingtime: 3 - distillruns: 6 - distilltime: 80 - color: GREEN - difficulty: 8 - alcohol: 45 - effects: - - POISON/20-30 + name: Poor Absinthe/Absinthe/Strong Absinthe + ingredients: + - Grass/15 + cookingtime: 3 + distillruns: 6 + distilltime: 80 + color: GREEN + difficulty: 8 + alcohol: 45 + effects: + - POISON/20-30 - potato_soup: - name: Potato soup - ingredients: - - Potato/5 - - Grass/3 - cookingtime: 3 - color: PINK - difficulty: 1 - effects: - - HEAL/0-1 + potato_soup: + name: Potato soup + ingredients: + - Potato/5 + - Grass/3 + cookingtime: 3 + color: PINK + difficulty: 1 + effects: + - HEAL/0-1 - coffee: - name: Stale Coffee/Coffee/Strong Coffee - ingredients: - - Cocoa_Beans/12 - - Milk_Bucket/2 - cookingtime: 2 - color: BLACK - difficulty: 3 - lore: + &8Probably a week old - effects: - - REGENERATION/1/2-5 - - SPEED/1/30-140 + coffee: + name: Stale Coffee/Coffee/Strong Coffee + ingredients: + - Cocoa_Beans/12 + - Milk_Bucket/2 + cookingtime: 2 + color: BLACK + difficulty: 3 + lore: + &8Probably a week old + effects: + - REGENERATION/1/2-5 + - SPEED/1/30-140 # More Recipes ideas: Cachaca, Gin, Whiskey, Tequila, Cider, etc. as well as high quality abbreviations like golden vodka etc. # I will not add more Recipes to the default config, as they would be public and viewable by users to cheat. diff --git a/resources/config/v13/fr/config.yml b/resources/config/v13/fr/config.yml index 6dac476..f622d0b 100644 --- a/resources/config/v13/fr/config.yml +++ b/resources/config/v13/fr/config.yml @@ -82,17 +82,17 @@ autosave: 3 debug: false # Version de configuration -version: '1.8' +version: '2.0' # -- Définir des objets personnalisés -- # L'id défini peut ensuite être utilisé dans les recettes -# matchAny: si c'est déjà assez si l'une des infos correspond -# material: le type d'article à utiliser -# name: Quel nom l'article doit porter (codes de formatage possibles : tels que &6) -# lore: Ce qui doit être dans la lore de l'objet +# matchAny: si c'est déjà assez si l'une des infos correspond +# material: le type d'article à utiliser +# name: Quel nom l'article doit porter (codes de formatage possibles : tels que &6) +# lore: Ce qui doit être dans la lore de l'objet customItems: ex-item: @@ -122,16 +122,16 @@ customItems: # -- Ingrédients dans le chaudron -- # Quels sont les ingrédients acceptés par le chaudron et la potion de base qui en résulte -# name: Nom de la potion de base qui sort du chaudron (codes de formatage possibles : tels que &6) -# ingredients: Liste des 'matériaux/montant' -# Avec un objet en main, utilisez /brew ItemName pour obtenir son matériau pour une recette de cuisine -# (Les id d'objets à la place des matériaux sont obsolètes pour bukkit) -# Une liste des matériaux peuvent-être trouvés ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color : Couleur de la potion provenant d'un chaudron. -# Couleurs disponibles : DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# (Dans l'ordre : Rouge foncé, Rouge, Rouge clair, Orange, Rose, Bleu, Cyan, Eau, Vert, Noir, Gris, Gris clair) -# Ou couleurs RGB (hex: par exemple '99FF33') (avec '') (recherche de "HTML color" sur internet) -# lore: Liste de texte supplémentaire sur la potion de base. (Formatting codes possible: such as &6) + # name: Nom de la potion de base qui sort du chaudron (codes de formatage possibles : tels que &6) + # ingredients: Liste des 'matériaux/montant' + # Avec un objet en main, utilisez /brew ItemName pour obtenir son matériau pour une recette de cuisine + # (Les id d'objets à la place des matériaux sont obsolètes pour bukkit) + # Une liste des matériaux peuvent-être trouvés ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color : Couleur de la potion provenant d'un chaudron. + # Couleurs disponibles : DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # (Dans l'ordre : Rouge foncé, Rouge, Rouge clair, Orange, Rose, Bleu, Cyan, Eau, Vert, Noir, Gris, Gris clair) + # Ou couleurs RGB (hex: par exemple '99FF33') (avec '') (recherche de "HTML color" sur internet) + # lore: Liste de texte supplémentaire sur la potion de base. (Formatting codes possible: such as &6) cauldron: ex: diff --git a/resources/config/v13/it/config.yml b/resources/config/v13/it/config.yml index a32eac1..c94df82 100644 --- a/resources/config/v13/it/config.yml +++ b/resources/config/v13/it/config.yml @@ -81,17 +81,17 @@ autosave: 3 debug: false # Versione del config -version: '1.8' +version: '2.0' # -- Define custom items -- # The defined id can then be used in recipes -# matchAny: true if it is already enough if one of the info matches -# material: Which type the item has to be -# name: Which name the item has to be (Formatting codes possible: such as &6) -# lore: What has to be in the lore of the item +# matchAny: true if it is already enough if one of the info matches +# material: Which type the item has to be +# name: Which name the item has to be (Formatting codes possible: such as &6) +# lore: What has to be in the lore of the item customItems: ex-item: @@ -121,15 +121,15 @@ customItems: # -- Ingredients in the Cauldron -- # Which Ingredients are accepted by the Cauldron and the base potion resulting from them -# name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) -# ingredients: List of 'material/amount' -# With an item in your hand, use /brew ItemName to get its material for use in a recipe -# (Item-ids instead of material are not supported by bukkit anymore and will not work) -# A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Color of the potion from a cauldron. -# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) -# lore: List of additional text on the base potion. (Formatting codes possible: such as &6) + # name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) + # ingredients: List of 'material/amount' + # With an item in your hand, use /brew ItemName to get its material for use in a recipe + # (Item-ids instead of material are not supported by bukkit anymore and will not work) + # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Color of the potion from a cauldron. + # Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) + # lore: List of additional text on the base potion. (Formatting codes possible: such as &6) cauldron: ex: @@ -144,39 +144,39 @@ cauldron: # -- One Ingredient: -- wheat: - name: Fermented wheat + name: Frumento fermentato ingredients: Wheat sugarcane: - name: Sugar brew + name: Miscela zuccherata ingredients: Sugar_Cane color: 'f1ffad' # yellowish green apple: - name: Apple cider + name: Sidro di mele ingredients: Apple potato: - name: Potatomash + name: Purè di patate ingredients: Potato grass: - name: Boiled herbs + name: Erbe bollite ingredients: Grass color: '99ff66' # bright green rmushroom: - name: Mushroom brew + name: Miscela ai funghi ingredients: Red_Mushroom color: 'ff5c33' # amber red cocoa: - name: Chocolately brew + name: Miscela colorata ingredients: Cocoa_Beans color: '804600' # mocca milk: - name: Milky water + name: Acqua lattea ingredients: Milk_Bucket color: BRIGHT_GREY diff --git a/resources/config/v13/zh/config.yml b/resources/config/v13/zh/config.yml index 8c5d79a..3703208 100644 --- a/resources/config/v13/zh/config.yml +++ b/resources/config/v13/zh/config.yml @@ -83,17 +83,17 @@ autosave: 3 debug: false # 配置文件版本 -version: '1.8' +version: '2.0' # -- Define custom items -- # The defined id can then be used in recipes -# matchAny: true if it is already enough if one of the info matches -# material: Which type the item has to be -# name: Which name the item has to be (Formatting codes possible: such as &6) -# lore: What has to be in the lore of the item +# matchAny: true if it is already enough if one of the info matches +# material: Which type the item has to be +# name: Which name the item has to be (Formatting codes possible: such as &6) +# lore: What has to be in the lore of the item customItems: ex-item: @@ -123,15 +123,15 @@ customItems: # -- Ingredients in the Cauldron -- # Which Ingredients are accepted by the Cauldron and the base potion resulting from them -# name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) -# ingredients: List of 'material/amount' -# With an item in your hand, use /brew ItemName to get its material for use in a recipe -# (Item-ids instead of material are not supported by bukkit anymore and will not work) -# A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html -# color: Color of the potion from a cauldron. -# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY -# Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) -# lore: List of additional text on the base potion. (Formatting codes possible: such as &6) + # name: Name of the base potion coming out of the Cauldron (Formatting codes possible: such as &6) + # ingredients: List of 'material/amount' + # With an item in your hand, use /brew ItemName to get its material for use in a recipe + # (Item-ids instead of material are not supported by bukkit anymore and will not work) + # A list of materials can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html + # color: Color of the potion from a cauldron. + # Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY + # Or RGB colors (hex: for example '99FF33') (with '') (search for "HTML color" on the internet) + # lore: List of additional text on the base potion. (Formatting codes possible: such as &6) cauldron: ex: diff --git a/src/com/dre/brewery/Brew.java b/src/com/dre/brewery/Brew.java index 3620397..4dbacd7 100644 --- a/src/com/dre/brewery/Brew.java +++ b/src/com/dre/brewery/Brew.java @@ -647,7 +647,7 @@ public class Brew implements Cloneable { lore.updateAgeLore(BConfig.colorInBarrels); } if (ageTime > 0.5) { - if (BConfig.colorInBarrels && !unlabeled && currentRecipe != null) { + if (BConfig.colorInBarrels) { lore.updateWoodLore(true); } lore.updateQualityStars(BConfig.colorInBarrels); diff --git a/src/com/dre/brewery/P.java b/src/com/dre/brewery/P.java index 64c882e..26ccc6f 100644 --- a/src/com/dre/brewery/P.java +++ b/src/com/dre/brewery/P.java @@ -13,19 +13,15 @@ import com.dre.brewery.recipe.BRecipe; import com.dre.brewery.utility.BUtil; import com.dre.brewery.utility.LegacyUtil; import org.apache.commons.lang.math.NumberUtils; -import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.CommandSender; +import org.bukkit.command.PluginCommand; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.HandlerList; import org.bukkit.plugin.java.JavaPlugin; -import java.io.File; -import java.util.HashMap; -import java.util.Map; - public class P extends JavaPlugin { public static P p; public static boolean debug; @@ -67,7 +63,6 @@ public class P extends JavaPlugin { //MC 1.13 uses a different NBT API than the newer versions.. // We decide here which to use, the new or the old or none at all - P.debug = true; if (LegacyUtil.initNbt()) { useNBT = true; } @@ -81,11 +76,12 @@ public class P extends JavaPlugin { // load the Config try { FileConfiguration cfg = BConfig.loadConfigFile(); - if (cfg == null || !BConfig.readConfig(cfg)) { + if (cfg == null) { p = null; getServer().getPluginManager().disablePlugin(this); return; } + BConfig.readConfig(cfg); } catch (Exception e) { e.printStackTrace(); p = null; @@ -104,8 +100,11 @@ public class P extends JavaPlugin { inventoryListener = new InventoryListener(); worldListener = new WorldListener(); integrationListener = new IntegrationListener(); - getCommand("Brewery").setExecutor(new CommandListener()); - getCommand("Brewery").setTabCompleter(new TabListener()); + PluginCommand c = getCommand("Brewery"); + if (c != null) { + c.setExecutor(new CommandListener()); + c.setTabCompleter(new TabListener()); + } p.getServer().getPluginManager().registerEvents(blockListener, p); p.getServer().getPluginManager().registerEvents(playerListener, p); @@ -148,25 +147,8 @@ public class P extends JavaPlugin { // save Data to Disk DataSave.save(true); - // delete Data from Ram - Barrel.barrels.clear(); - BCauldron.bcauldrons.clear(); - BRecipe.getConfigRecipes().clear(); - BRecipe.numConfigRecipes = 0; - BCauldronRecipe.acceptedMaterials.clear(); - BCauldronRecipe.acceptedCustom.clear(); - BCauldronRecipe.acceptedSimple.clear(); - BCauldronRecipe.getConfigRecipes().clear(); - BCauldronRecipe.numConfigRecipes = 0; - BConfig.customItems.clear(); - BConfig.hasSlimefun = null; - BConfig.hasMMOItems = null; - BPlayer.clear(); - Brew.legacyPotions.clear(); - Wakeup.wakeups.clear(); - DistortChat.words.clear(); - DistortChat.ignoreText.clear(); - DistortChat.commands = null; + // delete config data, in case this is a reload and to clear up some ram + clearConfigData(); this.log(this.getDescription().getName() + " disabled!"); } @@ -177,11 +159,41 @@ public class P extends JavaPlugin { } FileConfiguration cfg = BConfig.loadConfigFile(); if (cfg == null) { - // Could not read yml file, do not proceed + // Could not read yml file, do not proceed, error was printed return; } // clear all existent config Data + clearConfigData(); + + // load the Config + try { + BConfig.readConfig(cfg); + } catch (Exception e) { + e.printStackTrace(); + p = null; + getServer().getPluginManager().disablePlugin(this); + return; + } + + // Reload Recipes + boolean successful = true; + for (Brew brew : Brew.legacyPotions.values()) { + if (!brew.reloadRecipe()) { + successful = false; + } + } + if (sender != null) { + if (!successful) { + msg(sender, p.languageReader.get("Error_Recipeload")); + } else { + p.msg(sender, p.languageReader.get("CMD_Reload")); + } + } + BConfig.reloader = null; + } + + private void clearConfigData() { BRecipe.getConfigRecipes().clear(); BRecipe.numConfigRecipes = 0; BCauldronRecipe.acceptedMaterials.clear(); @@ -201,34 +213,6 @@ public class P extends JavaPlugin { e.printStackTrace(); } } - - // load the Config - try { - if (!BConfig.readConfig(cfg)) { - p = null; - getServer().getPluginManager().disablePlugin(this); - return; - } - } catch (Exception e) { - e.printStackTrace(); - p = null; - getServer().getPluginManager().disablePlugin(this); - return; - } - - // Reload Recipes - boolean successful = true; - for (Brew brew : Brew.legacyPotions.values()) { - if (!brew.reloadRecipe()) { - successful = false; - } - } - if (!successful && sender != null) { - msg(sender, p.languageReader.get("Error_Recipeload")); - } else { - p.msg(sender, p.languageReader.get("CMD_Reload")); - } - BConfig.reloader = null; } public static P getInstance() { diff --git a/src/com/dre/brewery/api/events/ConfigLoadEvent.java b/src/com/dre/brewery/api/events/ConfigLoadEvent.java index 3c4e615..e4ea2af 100644 --- a/src/com/dre/brewery/api/events/ConfigLoadEvent.java +++ b/src/com/dre/brewery/api/events/ConfigLoadEvent.java @@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * The Brewery Config was reloaded. + *

The Recipes added by a Plugin to the Added Recipes will not be reloaded and stay where they are. */ public class ConfigLoadEvent extends Event { private static final HandlerList handlers = new HandlerList(); diff --git a/src/com/dre/brewery/filedata/BConfig.java b/src/com/dre/brewery/filedata/BConfig.java index 7a9dc9f..5588440 100644 --- a/src/com/dre/brewery/filedata/BConfig.java +++ b/src/com/dre/brewery/filedata/BConfig.java @@ -36,7 +36,7 @@ import java.util.Map; public class BConfig { - public static final String configVersion = "1.8"; + public static final String configVersion = "2.0"; public static boolean updateCheck; public static CommandSender reloader; @@ -146,7 +146,7 @@ public class BConfig { return null; } - public static boolean readConfig(FileConfiguration config) { + public static void readConfig(FileConfiguration config) { // Set the Language p.language = config.getString("language", "en"); @@ -162,7 +162,7 @@ public class BConfig { if (!version.equals(configVersion) || (oldMat && P.use1_13)) { File file = new File(P.p.getDataFolder(), "config.yml"); copyDefaultConfigs(true); - new ConfigUpdater(file).update(version, oldMat, p.language); + new ConfigUpdater(file).update(version, oldMat, p.language, config); P.p.log("Config Updated to version: " + configVersion); config = YamlConfiguration.loadConfiguration(file); } @@ -326,6 +326,6 @@ public class BConfig { ConfigLoadEvent event = new ConfigLoadEvent(); P.p.getServer().getPluginManager().callEvent(event); - return true; + } } diff --git a/src/com/dre/brewery/filedata/ConfigUpdater.java b/src/com/dre/brewery/filedata/ConfigUpdater.java index b03e232..2e955fd 100644 --- a/src/com/dre/brewery/filedata/ConfigUpdater.java +++ b/src/com/dre/brewery/filedata/ConfigUpdater.java @@ -1,17 +1,16 @@ package com.dre.brewery.filedata; -import com.dre.brewery.utility.LegacyUtil; import com.dre.brewery.P; +import com.dre.brewery.utility.LegacyUtil; import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; +import java.io.*; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; +import java.util.Objects; public class ConfigUpdater { @@ -49,6 +48,25 @@ public class ConfigUpdater { config.addAll(index, Arrays.asList(newLines)); } + public void removeLine(int index) { + config.remove(index); + } + + public void addLinesAt(String[] search, int offset, String... newLines) { + int index = indexOfStart(search[0]); + int s = 1; + while (index == -1 && s < search.length) { + index = indexOfStart(search[s]); + s++; + } + + if (index != -1) { + addLines(index + offset, newLines); + } else { + appendLines(newLines); + } + } + public void saveConfig() { StringBuilder stringBuilder = new StringBuilder(); for (String line : config) { @@ -110,7 +128,7 @@ public class ConfigUpdater { // ---- Updating to newer Versions ---- // Update from a specified Config version and language to the newest version - public void update(String fromVersion, boolean oldMat, String lang) { + public void update(String fromVersion, boolean oldMat, String lang, FileConfiguration yml) { if (fromVersion.equals("0.5")) { // Version 0.5 was only released for de, but with en as setting, so default to de if (!lang.equals("de")) { @@ -187,12 +205,24 @@ public class ConfigUpdater { fromVersion = "1.8"; } + if (fromVersion.equals("1.8")) { + if (de) { + update18de(yml); + } else if (lang.equals("fr")) { + update18fr(yml); + } else { + update18en(yml); + } + updateVersion(BConfig.configVersion); + fromVersion = BConfig.configVersion; + } + if (P.use1_13 && oldMat) { updateMaterials(true); updateMaterialDescriptions(de); } - if (!fromVersion.equals("1.8")) { + if (!fromVersion.equals(BConfig.configVersion)) { P.p.log(P.p.languageReader.get("Error_ConfigUpdate", fromVersion)); return; } @@ -551,12 +581,12 @@ public class ConfigUpdater { if (index != -1) { index = indexOfStart("# (WEAKNESS, INCREASE_DAMAGE, SLOW und SPEED sind immer verborgen.) Mögliche Effekte:"); if (index != -1) { - config.remove(index); + removeLine(index); } } index = indexOfStart("# Bei Effekten mit sofortiger Wirkung "); if (index != -1) { - config.remove(index); + removeLine(index); } } @@ -650,12 +680,12 @@ public class ConfigUpdater { if (index != -1) { index = indexOfStart("# (WEAKNESS, INCREASE_DAMAGE, SLOW and SPEED are always hidden.) Possible Effects:"); if (index != -1) { - config.remove(index); + removeLine(index); } } index = indexOfStart("# instant effects "); if (index != -1) { - config.remove(index); + removeLine(index); } } @@ -718,7 +748,7 @@ public class ConfigUpdater { int index = indexOfStart("# SamplePlugin = installiertes home plugin. Unterstützt: ManagerXL."); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Ob der Spieler nach etwas kürzerem Ausloggen an einem zufälligen Ort \"aufwacht\" (diese müssen durch '/br Wakeup add"); @@ -840,7 +870,7 @@ public class ConfigUpdater { int index = indexOfStart("# SamplePlugin = installed home plugin. Supports: ManagerXL."); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# If the player \"wakes up\" at a random place when offline for some time while drinking (the places have to be defined with '/br Wakeup add'"); @@ -1246,13 +1276,354 @@ public class ConfigUpdater { if (P.use1_13) updateMaterialDescriptions(false); } + private void update18de(FileConfiguration yml) { + int index = indexOfStart("# Löschen einzelner Einstellungen"); + if (index != -1) { + removeLine(index); + } + + addLinesAt(new String[] {"colorInBrewer:", "colorInBarrels:", "hangoverDays:", "language:"}, 1, "", + "# Ob in den Iteminformationen immer 1-5 Sterne für die Qualität angezeigt werden sollen, oder nur beim brauen [true]", + "alwaysShowQuality: true", + "", + "# Ob in den Iteminformationen immer der Alkoholgehalt angezeigt weden soll, oder nur im Braustand [false]", + "alwaysShowAlc: false"); + + addLinesAt(new String[] {"maxBrewsInMCBarrels:", "openLargeBarrelEverywhere:", "language:"}, 1, "", + "# Benutzte Zutaten und andere Brau-Daten werden in allen Brewery Tränken gespeichert. Um zu verhindern,", + "# dass gehackte clients diese Daten auslesen um Rezepte herauszufinden, können diese encodiert werden.", + "# Einziger Nachteil: Tränke können nur auf Servern mit dem gleichen encodeKey benutzt werden.", + "# Dies kann also aktiviert werden um Rezept-cheating schwerer zu machen, aber keine Tränke per World Download, Schematic, o.ä. geteilt werden. [false]", + "enableEncode: false", + "encodeKey: 0"); + + addLinesAt(new String[] {"autosave:", "version:"}, 1, "", + "# Debug Nachrichten im Log anzeigen [false]", + "debug: false"); + + index = indexOfStart("oldMat:") + 1; + if (index == 0) { + index = indexOfStart("version:") + 1; + if (index == 0) { + index = 2; + } + } + // Custom Items and start of cauldron section + applyPatch("config/patches/de18.txt", index); + + index = indexOfStart("%%%%MAT1%%%%"); + if (index != -1) { + if (P.use1_13) { + setLine(index, " material: Barrier"); + } else { + setLine(index, " material: BEDROCK"); + } + } + index = indexOfStart("%%%%MAT2%%%%"); + if (index != -1) { + removeLine(index); + if (P.use1_13) { + addLines(index, " material:", + " - Acacia_Door", + " - Oak_Door", + " - Spruce_Door"); + } else { + addLines(index, " material:", + " - WOODEN_DOOR", + " - IRON_DOOR"); + } + } + + index = indexOfStart("# -- Eine Zutat:"); + if (index == -1) { + index = indexOfStart("cauldron:"); + if (index == -1) { + // Patch failed + index = indexOfStart("version:"); + if (index == -1) { + index = 0; + } + addLines(index + 1, "cauldron:"); + index ++; + } + } + convertCookedSection(yml, index + 1); + + addLinesAt(new String[]{"# Eine Liste von allen Materialien", "# ingredients:"}, 1, + "# Plugin Items mit 'Plugin:Id' (Im Moment ExoticGarden, Slimefun, MMOItems, Brewery)", + "# Oder ein oben definiertes Custom Item"); + + addLinesAt(new String[]{"# alcohol:", "# difficulty:", "# ingredients:", "# -- Rezepte"}, 1, + "# lore: Auflistung von zusätzlichem Text auf dem fertigen Trank. (Farbcodes möglich: z.b. &6)", + "# Lore nur für bestimmte Qualität möglich mit + Schlecht, ++ Mittel, +++ Gut, vorne anhängen.", + "# servercommands: Liste von Befehlen ausgeführt vom Server wenn der Trank getrunken wird", + "# playercommands: Liste von Befehlen ausgeführt vom Spieler wenn der Trank getrunken wird", + "# drinkmessage: Nachricht im Chat beim trinken des Trankes", + "# drinktitle: Nachricht als Titel auf dem Bildschirm an den Spieler beim trinken des Trankes"); + + addLinesAt(new String[]{"useGriefPrevention:", "useWorldGuard:", "# -- Plugin Kompatiblit"}, 1, "useGMInventories: true"); + + index = indexOfStart("# cooked:"); + if (index != -1) { + removeLine(index); + } + index = indexOfStart("# [Beispiel] MATERIAL:"); + if (index != -1) { + removeLine(index); + } + + } + + private void update18fr(FileConfiguration yml) { + int index = indexOfStart("# Supprimer un para"); + if (index != -1) { + removeLine(index); + } + + addLinesAt(new String[] {"colorInBrewer:", "colorInBarrels:", "hangoverDays:", "language:"}, 1, "\n" + + "# Toujours montrer les 1-5 étoiles sur les objets en fonction de leur qualité. S'ils sont faux, ils n'apparaîtront que lors de l'infusion. [true]", + "alwaysShowQuality: true", + "", + "# Toujours indiquer la teneur en alcool sur les objets. S'il est false, il n'apparaîtra que dans le stand de brassage. [false]", + "alwaysShowAlc: false"); + + addLinesAt(new String[] {"maxBrewsInMCBarrels:", "openLargeBarrelEverywhere:", "language:"}, 1, "", + "# Les ingrédients et autres données de brassage utilisés sont sauvegardés dans tous les articles de brasserie. [false]", + "# Pour empêcher les clients piratés de lire exactement ce qui a été utilisé pour infuser un élément, les données peuvent être encodées/brouillées.", + "# Il s'agit d'un processus rapide pour empêcher les joueurs de pirater des recettes, une fois qu'ils mettent la main sur une bière.", + "# Seul inconvénient: Les boissons brassicoles ne peuvent être utilisés que sur un autre serveur avec la même clé de chiffrement.", + "# Activez cette option si vous voulez rendre la tricherie des recettes plus difficile, mais ne partagez pas les infusions par téléchargement mondial, schémas ou autres moyens.", + "enableEncode: false", + "encodeKey: 0"); + + addLinesAt(new String[] {"autosave:", "version:"}, 1, "", + "# Show debug messages in log [false]", + "debug: false"); + + index = indexOfStart("oldMat:") + 1; + if (index == 0) { + index = indexOfStart("version:") + 1; + if (index == 0) { + index = 2; + } + } + // Custom Items and start of cauldron section + applyPatch("config/patches/fr18.txt", index); + + index = indexOfStart("%%%%MAT1%%%%"); + if (index != -1) { + if (P.use1_13) { + setLine(index, " material: Barrier"); + } else { + setLine(index, " material: BEDROCK"); + } + } + index = indexOfStart("%%%%MAT2%%%%"); + if (index != -1) { + removeLine(index); + if (P.use1_13) { + addLines(index, " material:", + " - Acacia_Door", + " - Oak_Door", + " - Spruce_Door"); + } else { + addLines(index, " material:", + " - WOODEN_DOOR", + " - IRON_DOOR"); + } + } + + index = indexOfStart(" # -- Un ingr"); + if (index == -1) { + index = indexOfStart("cauldron:"); + if (index == -1) { + // Patch failed + index = indexOfStart("version:"); + if (index == -1) { + index = 0; + } + addLines(index + 1, "cauldron:"); + index ++; + } + } + convertCookedSection(yml, index + 1); + + addLinesAt(new String[]{"# Une liste des mat", "# ingredients:"}, 1, + "# Plugin items avec 'plugin:id' (Actuellement supporté ExoticGarden, Slimefun, MMOItems, Brewery)", + "# Ou un élément personnalisé défini ci-dessus"); + + addLinesAt(new String[]{"# alcohol:", "# difficulty:", "# ingredients:", "# -- Recette "}, 1, + "# lore: Liste des textes supplémentaires sur le breuvage fini. (Codes de formatage possibles : tels que &6)", + "# Texte spécifique de qualité possible, en utilisant + mauvais, ++ normal, +++ bon, ajouté à l'avant de la ligne.", + "# servercommands: Liste des commandes exécutées par le serveur lors de la consommation de la potion", + "# playercommands: Liste des commandes exécutées par le joueur lors de la consommation de la potion", + "# drinkmessage: Chat-message au joueur lorsqu'il boit la potion", + "# drinktitle: Titre à l'écran du joueur lorsqu'il boit la potion"); + + addLinesAt(new String[]{"useGriefPrevention:", "useWorldGuard:", "# -- Plugin Compatibility"}, 1, "useGMInventories: true"); + + index = indexOfStart("# cooked:"); + if (index != -1) { + removeLine(index); + } + index = indexOfStart("# [Exemple] MATERIEL"); + if (index != -1) { + removeLine(index); + } + + } + + private void update18en(FileConfiguration yml) { + int index = indexOfStart("# Deleting of single settings"); + if (index != -1) { + removeLine(index); + } + + addLinesAt(new String[] {"colorInBrewer:", "colorInBarrels:", "hangoverDays:", "language:"}, 1, "", + "# Always show the 1-5 stars on the item depending on the quality. If false, they will only appear when brewing [true]", + "alwaysShowQuality: true", + "", + "# Always show the alcohol content on the item. If false, it will only show in the brewing stand [false]", + "alwaysShowAlc: false"); + + addLinesAt(new String[] {"maxBrewsInMCBarrels:", "openLargeBarrelEverywhere:", "language:"}, 1, "", + "# The used Ingredients and other brewing-data is saved to all Brewery Items. To prevent", + "# hacked clients from reading what exactly was used to brew an item, the data can be encoded/scrambled.", + "# This is a fast process to stop players from hacking out recipes, once they get hold of a brew.", + "# Only drawback: brew items can only be used on another server with the same encodeKey.", + "# So enable this if you want to make recipe cheating harder, but don't share any brews by world download, schematics, or other means. [false]", + "enableEncode: false", + "encodeKey: 0"); + + addLinesAt(new String[] {"autosave:", "version:"}, 1, "", + "# Show debug messages in log [false]", + "debug: false"); + + index = indexOfStart("oldMat:") + 1; + if (index == 0) { + index = indexOfStart("version:") + 1; + if (index == 0) { + index = 2; + } + } + // Custom Items and start of cauldron section + applyPatch("config/patches/en18.txt", index); + + index = indexOfStart("%%%%MAT1%%%%"); + if (index != -1) { + if (P.use1_13) { + setLine(index, " material: Barrier"); + } else { + setLine(index, " material: BEDROCK"); + } + } + index = indexOfStart("%%%%MAT2%%%%"); + if (index != -1) { + removeLine(index); + if (P.use1_13) { + addLines(index, " material:", + " - Acacia_Door", + " - Oak_Door", + " - Spruce_Door"); + } else { + addLines(index, " material:", + " - WOODEN_DOOR", + " - IRON_DOOR"); + } + } + + index = indexOfStart(" # -- One Ingredient"); + if (index == -1) { + index = indexOfStart("cauldron:"); + if (index == -1) { + // Patch failed + index = indexOfStart("version:"); + if (index == -1) { + index = 0; + } + addLines(index + 1, "cauldron:"); + index ++; + } + } + convertCookedSection(yml, index + 1); + + addLinesAt(new String[]{"# A list of materials", "# ingredients:"}, 1, + "# Plugin items with 'plugin:id' (Currently supporting ExoticGarden, Slimefun, MMOItems, Brewery)", + "# Or a custom item defined above"); + + addLinesAt(new String[]{"# alcohol:", "# difficulty:", "# ingredients:", "# -- Recipes"}, 1, + "# lore: List of additional text on the finished brew. (Formatting codes possible: such as &6)", + "# Specific lore for quality possible, using + bad, ++ normal, +++ good, added to the front of the line.", + "# servercommands: List of Commands executed by the Server when drinking the brew", + "# playercommands: List of Commands executed by the Player when drinking the brew", + "# drinkmessage: Chat-message to the Player when drinking the Brew", + "# drinktitle: Title on Screen to the Player when drinking the Brew"); + + addLinesAt(new String[]{"useGriefPrevention:", "useWorldGuard:", "# -- Plugin Compatibility"}, 1, "useGMInventories: true"); + + index = indexOfStart("# cooked:"); + if (index != -1) { + removeLine(index); + } + index = indexOfStart("# [Example] MATERIAL:"); + if (index != -1) { + removeLine(index); + } + + } + + + + private void convertCookedSection(FileConfiguration yml, int toLine) { + ConfigurationSection cookedSection = yml.getConfigurationSection("cooked"); + if (cookedSection != null) { + for (String ing : cookedSection.getKeys(false)) { + String name = cookedSection.getString(ing); + addLines(toLine, + " " + ing.toLowerCase() + ":", + " name: " + name, + " ingredients:", + " - " + ing, + ""); + toLine += 5; + } + + int index = indexOfStart("cooked:"); + if (index != -1) { + int size = cookedSection.getKeys(false).size(); + while (size >= 0) { + removeLine(index); + size--; + } + } + } + + + } + + public void applyPatch(String resourcePath, int toLine) { + try { + List patch = new ArrayList<>(); + BufferedReader reader = new BufferedReader(new InputStreamReader(Objects.requireNonNull(P.p.getResource(resourcePath), "Resource not found"))); + String currentLine; + while((currentLine = reader.readLine()) != null) { + patch.add(currentLine); + } + reader.close(); + config.addAll(toLine, patch); + } catch (IOException | NullPointerException e) { + P.p.errorLog("Could not apply Patch: " + resourcePath); + e.printStackTrace(); + } + } + // Update all Materials to Minecraft 1.13 private void updateMaterials(boolean toMC113) { int index; if (toMC113) { index = indexOfStart("oldMat:"); if (index != -1) { - config.remove(index); + removeLine(index); } } else { index = indexOfStart("version:"); @@ -1311,6 +1682,29 @@ public class ConfigUpdater { index++; } } + + index = indexOfStart("cauldron:"); + if (index != -1) { + index++; + int endIndex = indexOfStart("recipes:"); + if (endIndex < index) { + endIndex = indexOfStart(" cookingtime:"); + } + if (endIndex < index) { + endIndex = indexOfStart("useWorldGuard:"); + } + while (index < endIndex) { + if (config.get(index).matches("^\\s+ingredients:.*")) { + index++; + while (config.get(index).matches("^\\s+- .+")) { + line = config.get(index); + setLine(index, convertMaterial(line, "^\\s+- ", "(,.*|)/.*", toMC113)); + index++; + } + } + index++; + } + } } private String convertMaterial(String line, String regexPrefix, String regexPostfix, boolean toMC113) { @@ -1362,33 +1756,33 @@ public class ConfigUpdater { index = indexOfStart("# Es kann ein Data-Wert (durability) angegeben werden"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Wenn Vault installiert ist"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Vault erkennt Namen wie"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# - Jungle Leaves/64 # Nur mit Vault"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# - Green Dye/6 # Nur mit Vault"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Ein 'X' an den Namen"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Effekte sind ab der 1.9 immer verborgen"); if (index != -1) { - config.remove(index); + removeLine(index); } } else { index = indexOfStart("# ingredients: List of 'material,data/amount'"); @@ -1398,33 +1792,33 @@ public class ConfigUpdater { index = indexOfStart("# You can specify a data (durability) value"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# If Vault is installed normal names can be used"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Vault will recognize things"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# - Jungle Leaves/64 # Only with Vault"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# - Green Dye/6 # Only with Vault"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Suffix name with 'X' to hide effect"); if (index != -1) { - config.remove(index); + removeLine(index); } index = indexOfStart("# Effects are always hidden in 1.9 and newer"); if (index != -1) { - config.remove(index); + removeLine(index); } } } diff --git a/src/com/dre/brewery/lore/BrewLore.java b/src/com/dre/brewery/lore/BrewLore.java index 163fce2..c81fa94 100644 --- a/src/com/dre/brewery/lore/BrewLore.java +++ b/src/com/dre/brewery/lore/BrewLore.java @@ -147,7 +147,7 @@ public class BrewLore { if (brew.getDistillRuns() <= 0) return; String prefix; byte distillRuns = brew.getDistillRuns(); - if (qualityColor && brew.hasRecipe()) { + if (qualityColor && !brew.isUnlabeled() && brew.hasRecipe()) { prefix = getQualityColor(brew.getIngredients().getDistillQuality(brew.getCurrentRecipe(), distillRuns)); } else { prefix = "§7"; @@ -168,7 +168,7 @@ public class BrewLore { public void updateAgeLore(boolean qualityColor) { String prefix; float age = brew.getAgeTime(); - if (qualityColor && brew.hasRecipe()) { + if (qualityColor && !brew.isUnlabeled() && brew.hasRecipe()) { prefix = getQualityColor(brew.getIngredients().getAgeQuality(brew.getCurrentRecipe(), age)); } else { prefix = "§7"; @@ -191,7 +191,7 @@ public class BrewLore { * @param qualityColor If the lore should have colors according to quality */ public void updateWoodLore(boolean qualityColor) { - if (qualityColor && brew.hasRecipe()) { + if (qualityColor && brew.hasRecipe() && !brew.isUnlabeled()) { int quality = brew.getIngredients().getWoodQuality(brew.getCurrentRecipe(), brew.getWood()); addOrReplaceLore(Type.WOOD, getQualityColor(quality), P.p.languageReader.get("Brew_Woodtype")); } else { @@ -260,15 +260,16 @@ public class BrewLore { } updateCustomLore(); + if (toQuality && brew.isUnlabeled()) { + return; + } updateQualityStars(toQuality); - if (!brew.isUnlabeled()) { - // Ingredients - updateIngredientLore(toQuality); + // Ingredients + updateIngredientLore(toQuality); - // Cooking - updateCookLore(toQuality); - } + // Cooking + updateCookLore(toQuality); // Distilling updateDistillLore(toQuality); @@ -279,10 +280,8 @@ public class BrewLore { } // WoodType - if (!brew.isUnlabeled()) { - if (brew.getAgeTime() > 0.5) { - updateWoodLore(toQuality); - } + if (brew.getAgeTime() > 0.5) { + updateWoodLore(toQuality); } updateAlc(false); diff --git a/src/com/dre/brewery/utility/LegacyUtil.java b/src/com/dre/brewery/utility/LegacyUtil.java index 13f039e..33a09f1 100644 --- a/src/com/dre/brewery/utility/LegacyUtil.java +++ b/src/com/dre/brewery/utility/LegacyUtil.java @@ -261,17 +261,17 @@ public class LegacyUtil { try { Class.forName("org.bukkit.persistence.PersistentDataContainer"); NewNbtVer = true; - P.p.debugLog("Using the NEW nbt api"); + P.p.log("Using the NEW nbt api"); return true; } catch (ClassNotFoundException e) { try { Class.forName("org.bukkit.inventory.meta.tags.CustomItemTagContainer"); NewNbtVer = false; - P.p.debugLog("Using the OLD nbt api"); + P.p.log("Using the OLD nbt api"); return true; } catch (ClassNotFoundException ex) { NewNbtVer = false; - P.p.debugLog("No nbt api found, using Lore Save System"); + P.p.log("No nbt api found, using Lore Save System"); return false; } }