diff --git a/pom.xml b/pom.xml
index 05ddfd0..b9474fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.songoda
EpicEnchants
- 1.2.2
+ 1.2.3
EpicEnchants
Unlock the potential of your weapons, tools and armor by making your own custom enchants.
@@ -116,7 +116,7 @@
com.songoda
SongodaCore
- 2.6.11
+ 2.6.12
compile
diff --git a/src/main/java/com/songoda/epicenchants/listeners/EntityListener.java b/src/main/java/com/songoda/epicenchants/listeners/EntityListener.java
index dc30f1e..b304764 100644
--- a/src/main/java/com/songoda/epicenchants/listeners/EntityListener.java
+++ b/src/main/java/com/songoda/epicenchants/listeners/EntityListener.java
@@ -17,7 +17,20 @@ import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.projectiles.ProjectileSource;
-import static com.songoda.epicenchants.enums.TriggerType.*;
+import static com.songoda.epicenchants.enums.TriggerType.ATTACK_MOB_MELEE;
+import static com.songoda.epicenchants.enums.TriggerType.ATTACK_MOB_RANGE;
+import static com.songoda.epicenchants.enums.TriggerType.ATTACK_PLAYER_MELEE;
+import static com.songoda.epicenchants.enums.TriggerType.ATTACK_PLAYER_RANGE;
+import static com.songoda.epicenchants.enums.TriggerType.DEFENSE_MOB_MELEE;
+import static com.songoda.epicenchants.enums.TriggerType.DEFENSE_MOB_RANGE;
+import static com.songoda.epicenchants.enums.TriggerType.DEFENSE_PLAYER_MELEE;
+import static com.songoda.epicenchants.enums.TriggerType.DEFENSE_PLAYER_RANGE;
+import static com.songoda.epicenchants.enums.TriggerType.EXPLOSION_DAMAGE;
+import static com.songoda.epicenchants.enums.TriggerType.FALL_DAMAGE;
+import static com.songoda.epicenchants.enums.TriggerType.FIRE_DAMAGE;
+import static com.songoda.epicenchants.enums.TriggerType.KILLED_MOB;
+import static com.songoda.epicenchants.enums.TriggerType.LAVA_DAMAGE;
+import static com.songoda.epicenchants.enums.TriggerType.POISON_DAMAGE;
public class EntityListener implements Listener {
private final EpicEnchants instance;
diff --git a/src/main/java/com/songoda/epicenchants/listeners/item/BlackScrollListener.java b/src/main/java/com/songoda/epicenchants/listeners/item/BlackScrollListener.java
index 928c88b..46737ce 100644
--- a/src/main/java/com/songoda/epicenchants/listeners/item/BlackScrollListener.java
+++ b/src/main/java/com/songoda/epicenchants/listeners/item/BlackScrollListener.java
@@ -1,7 +1,7 @@
package com.songoda.epicenchants.listeners.item;
-import com.songoda.core.nms.nbt.NBTCompound;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.objects.Enchant;
import com.songoda.epicenchants.utils.single.RomanNumber;
@@ -17,7 +17,7 @@ public class BlackScrollListener extends ItemListener {
@Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) {
- if (!cursor.has("black-scroll") || !cursor.getNBTObject("black-scroll").asBoolean()) {
+ if (!cursor.hasKey("black-scroll") || !cursor.getBoolean("black-scroll")) {
return;
}
@@ -31,11 +31,11 @@ public class BlackScrollListener extends ItemListener {
}
String id = getRandomElement(compound.getKeys());
- int level = compound.getInt(id);
+ int level = compound.getInteger(id);
Enchant enchant = instance.getEnchantManager().getValueUnsafe(id);
ItemStack toSet = instance.getEnchantUtils().removeEnchant(event.getCurrentItem(), enchant);
- event.getWhoClicked().getInventory().addItem(enchant.getBook().get(enchant, level, cursor.getInt("success-rate"), 100));
+ event.getWhoClicked().getInventory().addItem(enchant.getBook().get(enchant, level, cursor.getInteger("success-rate"), 100));
event.setCurrentItem(toSet);
instance.getLocale().getMessage("blackscroll.success")
diff --git a/src/main/java/com/songoda/epicenchants/listeners/item/BookListener.java b/src/main/java/com/songoda/epicenchants/listeners/item/BookListener.java
index 02391ca..625e6f7 100644
--- a/src/main/java/com/songoda/epicenchants/listeners/item/BookListener.java
+++ b/src/main/java/com/songoda/epicenchants/listeners/item/BookListener.java
@@ -1,7 +1,7 @@
package com.songoda.epicenchants.listeners.item;
import com.songoda.core.compatibility.CompatibleMaterial;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.enums.EnchantResult;
import com.songoda.epicenchants.events.EnchantApplyEvent;
@@ -30,16 +30,16 @@ public class BookListener extends ItemListener {
@Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) {
- if (!cursor.has("book-item") || !cursor.getNBTObject("book-item").asBoolean()) {
+ if (!cursor.hasKey("book-item") || !cursor.getBoolean("book-item")) {
return;
}
event.setCancelled(true);
ItemStack toApply = event.getCurrentItem();
- Enchant enchant = instance.getEnchantManager().getValue(cursor.getNBTObject("enchant").asString()).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
+ Enchant enchant = instance.getEnchantManager().getValue(cursor.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
- if (!enchant.getItemWhitelist().contains(CompatibleMaterial.getMaterial(current.finish()))) {
+ if (!enchant.getItemWhitelist().contains(CompatibleMaterial.getMaterial(current.getItem()))) {
return;
}
// get total amount of enchantments on item
@@ -53,9 +53,9 @@ public class BookListener extends ItemListener {
return;
}
- int level = cursor.getNBTObject("level").asInt();
- int successRate = cursor.getNBTObject("success-rate").asInt();
- int destroyRate = cursor.getNBTObject("destroy-rate").asInt();
+ int level = cursor.getInteger("level");
+ int successRate = cursor.getInteger("success-rate");
+ int destroyRate = cursor.getInteger("destroy-rate");
EnchantApplyEvent enchantEvent = new EnchantApplyEvent(toApply, enchant, level, successRate, destroyRate);
Bukkit.getPluginManager().callEvent(enchantEvent);
@@ -83,7 +83,7 @@ public class BookListener extends ItemListener {
@Override
void onClick(PlayerInteractEvent event, NBTItem clicked) {
- if (!clicked.has("mystery-book") || !clicked.getNBTObject("mystery-book").asBoolean()) {
+ if (!clicked.hasKey("mystery-book") || !clicked.getBoolean("mystery-book")) {
return;
}
@@ -93,7 +93,7 @@ public class BookListener extends ItemListener {
return;
}
- Group group = instance.getGroupManager().getValue(clicked.getNBTObject("group").asString()).orElseThrow(() -> new IllegalStateException("Book without group!"));
+ Group group = instance.getGroupManager().getValue(clicked.getString("group")).orElseThrow(() -> new IllegalStateException("Book without group!"));
Optional enchant = instance.getEnchantManager().getRandomEnchant(group);
diff --git a/src/main/java/com/songoda/epicenchants/listeners/item/DustListener.java b/src/main/java/com/songoda/epicenchants/listeners/item/DustListener.java
index a34506f..c291472 100644
--- a/src/main/java/com/songoda/epicenchants/listeners/item/DustListener.java
+++ b/src/main/java/com/songoda/epicenchants/listeners/item/DustListener.java
@@ -1,6 +1,6 @@
package com.songoda.epicenchants.listeners.item;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.objects.Enchant;
import com.songoda.epicenchants.objects.Group;
@@ -16,28 +16,28 @@ public class DustListener extends ItemListener {
@Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) {
- if (!cursor.has("dust") || !cursor.getNBTObject("dust").asBoolean()) {
+ if (!cursor.hasKey("dust") || !cursor.getBoolean("dust")) {
return;
}
- if (!current.has("book-item") || !current.getNBTObject("book-item").asBoolean()) {
+ if (!current.hasKey("book-item") || !current.getBoolean("book-item")) {
return;
}
- Enchant enchant = instance.getEnchantManager().getValue(current.getNBTObject("enchant").asString()).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
+ Enchant enchant = instance.getEnchantManager().getValue(current.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
- if (!enchant.getGroup().equals(instance.getGroupManager().getValue(cursor.getNBTObject("group").asString()).orElseThrow(() -> new IllegalStateException("Dust without group!")))) {
+ if (!enchant.getGroup().equals(instance.getGroupManager().getValue(cursor.getString("group")).orElseThrow(() -> new IllegalStateException("Dust without group!")))) {
return;
}
- int successRate = current.getNBTObject("success-rate").asInt();
+ int successRate = current.getInteger("success-rate");
if (successRate == 100) {
return;
}
- successRate = Math.min(successRate + cursor.getNBTObject("percentage").asInt(), 100);
- event.setCurrentItem(enchant.getBook().get(enchant, current.getNBTObject("level").asInt(), successRate, current.getNBTObject("destroy-rate").asInt()));
+ successRate = Math.min(successRate + cursor.getInteger("percentage"), 100);
+ event.setCurrentItem(enchant.getBook().get(enchant, current.getInteger("level"), successRate, current.getInteger("destroy-rate")));
event.setCancelled(true);
useItem(event);
@@ -45,7 +45,7 @@ public class DustListener extends ItemListener {
@Override
void onClick(PlayerInteractEvent event, NBTItem clicked) {
- if (!clicked.has("secret-dust") || !clicked.getNBTObject("secret-dust").asBoolean()) {
+ if (!clicked.hasKey("secret-dust") || !clicked.getBoolean("secret-dust")) {
return;
}
@@ -55,8 +55,8 @@ public class DustListener extends ItemListener {
return;
}
- Group group = instance.getGroupManager().getValueUnsafe(clicked.getNBTObject("group").asString());
- int rate = ThreadLocalRandom.current().nextInt(clicked.getNBTObject("min-rate").asInt(), clicked.getNBTObject("max-rate").asInt());
+ Group group = instance.getGroupManager().getValueUnsafe(clicked.getString("group"));
+ int rate = ThreadLocalRandom.current().nextInt(clicked.getInteger("min-rate"), clicked.getInteger("max-rate"));
useItem(event);
event.getPlayer().getInventory().addItem(instance.getSpecialItems().getDust(group, null, rate, false));
diff --git a/src/main/java/com/songoda/epicenchants/listeners/item/ItemListener.java b/src/main/java/com/songoda/epicenchants/listeners/item/ItemListener.java
index df40f67..96dbd6d 100644
--- a/src/main/java/com/songoda/epicenchants/listeners/item/ItemListener.java
+++ b/src/main/java/com/songoda/epicenchants/listeners/item/ItemListener.java
@@ -1,7 +1,6 @@
package com.songoda.epicenchants.listeners.item;
-import com.songoda.core.nms.NmsManager;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
@@ -32,7 +31,7 @@ public abstract class ItemListener implements Listener {
return;
}
- onApply(event, NmsManager.getNbt().of(event.getCursor()), NmsManager.getNbt().of(event.getCurrentItem()));
+ onApply(event, new NBTItem(event.getCursor()), new NBTItem(event.getCurrentItem()));
}
@EventHandler(priority = EventPriority.HIGHEST)
@@ -45,7 +44,7 @@ public abstract class ItemListener implements Listener {
return;
}
- onClick(event, NmsManager.getNbt().of(event.getItem()));
+ onClick(event, new NBTItem(event.getItem()));
}
void useItem(InventoryClickEvent event) {
diff --git a/src/main/java/com/songoda/epicenchants/listeners/item/WhiteScrollListener.java b/src/main/java/com/songoda/epicenchants/listeners/item/WhiteScrollListener.java
index 08debd6..ba3529a 100644
--- a/src/main/java/com/songoda/epicenchants/listeners/item/WhiteScrollListener.java
+++ b/src/main/java/com/songoda/epicenchants/listeners/item/WhiteScrollListener.java
@@ -1,7 +1,7 @@
package com.songoda.epicenchants.listeners.item;
import com.songoda.core.compatibility.CompatibleMaterial;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.utils.objects.ItemBuilder;
import org.bukkit.event.inventory.InventoryClickEvent;
@@ -15,13 +15,13 @@ public class WhiteScrollListener extends ItemListener {
@Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) {
- if (!cursor.has("white-scroll") || !cursor.getNBTObject("white-scroll").asBoolean()) {
+ if (!cursor.hasKey("white-scroll") || !cursor.getBoolean("white-scroll")) {
return;
}
event.setCancelled(true);
- if (current.has("protected")) {
+ if (current.hasKey("protected")) {
instance.getLocale().getMessage("whitescroll.alreadyapplied")
.sendPrefixedMessage(event.getWhoClicked());
return;
@@ -30,10 +30,10 @@ public class WhiteScrollListener extends ItemListener {
if (!instance.getItemGroup().isValid(CompatibleMaterial.getMaterial(event.getCurrentItem())))
return;
- current.set("protected", true);
+ current.setBoolean("protected", true);
instance.getLocale().getMessage("whitescrollapplied").sendPrefixedMessage(event.getWhoClicked());
- ItemStack toSet = new ItemBuilder(current.finish()).addLore(instance.getSpecialItems().getWhiteScrollLore()).build();
+ ItemStack toSet = new ItemBuilder(current.getItem()).addLore(instance.getSpecialItems().getWhiteScrollLore()).build();
event.getClickedInventory().setItem(event.getSlot(), toSet);
useItem(event);
diff --git a/src/main/java/com/songoda/epicenchants/menus/AlchemistMenu.java b/src/main/java/com/songoda/epicenchants/menus/AlchemistMenu.java
index 0fb3093..b9433aa 100644
--- a/src/main/java/com/songoda/epicenchants/menus/AlchemistMenu.java
+++ b/src/main/java/com/songoda/epicenchants/menus/AlchemistMenu.java
@@ -1,8 +1,7 @@
package com.songoda.epicenchants.menus;
import com.songoda.core.hooks.EconomyManager;
-import com.songoda.core.nms.NmsManager;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.objects.Enchant;
import com.songoda.epicenchants.objects.Group;
@@ -123,9 +122,9 @@ public class AlchemistMenu extends FastInv {
ItemStack toHandle = itemStack.clone();
toHandle.setAmount(1);
- NBTItem nbtItem = NmsManager.getNbt().of(toHandle);
+ NBTItem nbtItem = new NBTItem(toHandle);
- if (!nbtItem.has("book-item") && !nbtItem.has("dust")) {
+ if (!nbtItem.hasKey("book-item") && !nbtItem.hasKey("dust")) {
instance.getLocale().getMessage("alchemist.notinterested").sendPrefixedMessage(player);
return false;
}
@@ -136,13 +135,13 @@ public class AlchemistMenu extends FastInv {
return false;
}
- int successRate = nbtItem.getNBTObject("success-rate").asInt();
+ int successRate = nbtItem.getInteger("success-rate");
// Both slots empty
if (getInventory().getItem(LEFT_SLOT) == null && getInventory().getItem(RIGHT_SLOT) == null) {
- if (nbtItem.has("book-item")) {
- Enchant enchant = instance.getEnchantManager().getValue(nbtItem.getNBTObject("enchant").asString()).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
- int level = nbtItem.getNBTObject("level").asInt();
+ if (nbtItem.hasKey("book-item")) {
+ Enchant enchant = instance.getEnchantManager().getValue(nbtItem.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
+ int level = nbtItem.getInteger("level");
if (enchant.getMaxLevel() == level) {
instance.getLocale().getMessage("alchemist.maxlevelbook")
@@ -150,7 +149,7 @@ public class AlchemistMenu extends FastInv {
return false;
}
} else {
- Group group = instance.getGroupManager().getValue(nbtItem.getNBTObject("group").asString()).orElseThrow(() -> new IllegalStateException("Dust without group!"));
+ Group group = instance.getGroupManager().getValue(nbtItem.getString("group")).orElseThrow(() -> new IllegalStateException("Dust without group!"));
if (group.getOrder() == instance.getGroupManager().getValues().stream().mapToInt(Group::getOrder).max().orElse(0) || successRate == 100) {
instance.getLocale().getMessage("alchemist." + (successRate == 100 ? "maxpercentagedust" : "highestgroupdust"))
@@ -163,21 +162,21 @@ public class AlchemistMenu extends FastInv {
return true;
}
- NBTItem other = NmsManager.getNbt().of(getInventory().getItem(getInventory().getItem(LEFT_SLOT) == null ? RIGHT_SLOT : LEFT_SLOT));
+ NBTItem other = new NBTItem(getInventory().getItem(getInventory().getItem(LEFT_SLOT) == null ? RIGHT_SLOT : LEFT_SLOT));
int emptySlot = getInventory().getItem(LEFT_SLOT) == null ? LEFT_SLOT : RIGHT_SLOT;
- if (other.has("book-item")) {
- if (!nbtItem.getNBTObject("enchant").asString().equals(other.getNBTObject("enchant").asString())) {
+ if (other.hasKey("book-item")) {
+ if (!nbtItem.getString("enchant").equals(other.getString("enchant"))) {
instance.getLocale().getMessage("alchemist.differentenchantment").sendPrefixedMessage(player);
return false;
}
- if (nbtItem.getNBTObject("level").asInt() != other.getNBTObject("level").asInt()) {
+ if (nbtItem.getInteger("level") != other.getInteger("level")) {
instance.getLocale().getMessage("alchemist.differentlevels").sendPrefixedMessage(player);
return false;
}
} else {
- if (!nbtItem.getNBTObject("group").asString().equals(other.getNBTObject("group").asString())) {
+ if (!nbtItem.getString("group").equals(other.getString("group"))) {
instance.getLocale().getMessage("alchemist.differentgroups").sendPrefixedMessage(player);
return false;
}
@@ -200,18 +199,18 @@ public class AlchemistMenu extends FastInv {
return;
}
- NBTItem leftItem = NmsManager.getNbt().of(getInventory().getItem(LEFT_SLOT));
- NBTItem rightItem = NmsManager.getNbt().of(getInventory().getItem(RIGHT_SLOT));
+ NBTItem leftItem = new NBTItem(getInventory().getItem(LEFT_SLOT));
+ NBTItem rightItem = new NBTItem(getInventory().getItem(RIGHT_SLOT));
int ecoCost;
int expCost;
- if (leftItem.has("book-item")) {
- int level = leftItem.getNBTObject("level").asInt();
- Enchant enchant = instance.getEnchantManager().getValue(leftItem.getNBTObject("enchant").asString()).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
- int leftSuccess = leftItem.getNBTObject("success-rate").asInt();
- int rightSuccess = rightItem.getNBTObject("success-rate").asInt();
- int leftDestroy = leftItem.getNBTObject("destroy-rate").asInt();
- int rightDestroy = rightItem.getNBTObject("destroy-rate").asInt();
+ if (leftItem.hasKey("book-item")) {
+ int level = leftItem.getInteger("level");
+ Enchant enchant = instance.getEnchantManager().getValue(leftItem.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
+ int leftSuccess = leftItem.getInteger("success-rate");
+ int rightSuccess = rightItem.getInteger("success-rate");
+ int leftDestroy = leftItem.getInteger("destroy-rate");
+ int rightDestroy = rightItem.getInteger("destroy-rate");
Placeholder[] placeholders = new Placeholder[] {
of("left_success_rate", leftSuccess),
@@ -238,11 +237,11 @@ public class AlchemistMenu extends FastInv {
getInventory().setItem(PREVIEW_SLOT, enchant.getBook().get(enchant, level + 1, successRate, destroyRate));
} else {
- Group group = instance.getGroupManager().getValue(leftItem.getNBTObject("group").asString()).orElseThrow(() -> new IllegalStateException("Dust without group!"));
+ Group group = instance.getGroupManager().getValue(leftItem.getString("group")).orElseThrow(() -> new IllegalStateException("Dust without group!"));
Placeholder[] placeholders = new Placeholder[] {
- of("left_percentage", leftItem.getNBTObject("percentage").asInt()),
- of("right_percentage", rightItem.getNBTObject("percentage").asInt())
+ of("left_percentage", leftItem.getInteger("percentage")),
+ of("right_percentage", rightItem.getInteger("percentage"))
};
int successRate = getFromFormula("dust.percentage-formula", placeholders);
diff --git a/src/main/java/com/songoda/epicenchants/menus/TinkererMenu.java b/src/main/java/com/songoda/epicenchants/menus/TinkererMenu.java
index ef8f1d4..4a56f71 100644
--- a/src/main/java/com/songoda/epicenchants/menus/TinkererMenu.java
+++ b/src/main/java/com/songoda/epicenchants/menus/TinkererMenu.java
@@ -1,8 +1,7 @@
package com.songoda.epicenchants.menus;
-import com.songoda.core.nms.NmsManager;
-import com.songoda.core.nms.nbt.NBTCompound;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.enums.ItemType;
import com.songoda.epicenchants.objects.Enchant;
@@ -169,9 +168,9 @@ public class TinkererMenu extends FastInv {
return NONE;
}
- NBTItem nbtItem = NmsManager.getNbt().of(itemStack);
+ NBTItem nbtItem = new NBTItem(itemStack);
- if (nbtItem.has("book-item")) {
+ if (nbtItem.hasKey("book-item")) {
return BOOK;
}
@@ -206,7 +205,7 @@ public class TinkererMenu extends FastInv {
switch (itemType) {
case BOOK:
- getInventory().setItem(emptySlot.get().getValue(), instance.getSpecialItems().getSecretDust(NmsManager.getNbt().of(finalItemStack)));
+ getInventory().setItem(emptySlot.get().getValue(), instance.getSpecialItems().getSecretDust(new NBTItem(finalItemStack)));
break;
case ENCHANTED:
getInventory().setItem(emptySlot.get().getValue(), instance.getHookManager().getUltimateBottles().get().createBottle("Tinkerer", getExpAmount(finalItemStack)));
@@ -236,9 +235,9 @@ public class TinkererMenu extends FastInv {
total.addAndGet(section.getInt(enchantment.getName(), section.getInt("DEFAULT")) * level);
});
- NBTItem nbtItem = NmsManager.getNbt().of(itemStack);
+ NBTItem nbtItem = new NBTItem(itemStack);
- if (!nbtItem.has("enchants")) {
+ if (!nbtItem.hasKey("enchants")) {
return total.get();
}
@@ -250,7 +249,7 @@ public class TinkererMenu extends FastInv {
enchantments.getKeys().forEach(key -> {
Enchant enchant = instance.getEnchantManager().getValueUnsafe(key);
- total.addAndGet(section.getInt(enchant.getIdentifier(), enchant.getGroup().getTinkererExp()) * enchantments.getInt(key));
+ total.addAndGet(section.getInt(enchant.getIdentifier(), enchant.getGroup().getTinkererExp()) * enchantments.getInteger(key));
});
return total.get();
diff --git a/src/main/java/com/songoda/epicenchants/objects/BookItem.java b/src/main/java/com/songoda/epicenchants/objects/BookItem.java
index 01a92b6..816b695 100644
--- a/src/main/java/com/songoda/epicenchants/objects/BookItem.java
+++ b/src/main/java/com/songoda/epicenchants/objects/BookItem.java
@@ -1,6 +1,6 @@
package com.songoda.epicenchants.objects;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.utils.objects.ItemBuilder;
import com.songoda.epicenchants.utils.settings.Settings;
@@ -81,13 +81,13 @@ public class BookItem {
.lore(toSet);
NBTItem nbtItem = itemBuilder.nbt();
- nbtItem.set("book-item", true);
- nbtItem.set("success-rate", successRate);
- nbtItem.set("destroy-rate", destroyRate);
- nbtItem.set("level", level);
- nbtItem.set("enchant", enchant.getIdentifier());
+ nbtItem.setBoolean("book-item", true);
+ nbtItem.setInteger("success-rate", successRate);
+ nbtItem.setInteger("destroy-rate", destroyRate);
+ nbtItem.setInteger("level", level);
+ nbtItem.setString("enchant", enchant.getIdentifier());
- return nbtItem.finish();
+ return nbtItem.getItem();
}
public static class BookItemBuilder {
diff --git a/src/main/java/com/songoda/epicenchants/utils/EnchantUtils.java b/src/main/java/com/songoda/epicenchants/utils/EnchantUtils.java
index 09431bb..3c5d961 100644
--- a/src/main/java/com/songoda/epicenchants/utils/EnchantUtils.java
+++ b/src/main/java/com/songoda/epicenchants/utils/EnchantUtils.java
@@ -1,8 +1,7 @@
package com.songoda.epicenchants.utils;
-import com.songoda.core.nms.NmsManager;
-import com.songoda.core.nms.nbt.NBTCompound;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.core.utils.TextUtils;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.enums.EnchantResult;
@@ -49,7 +48,7 @@ public class EnchantUtils {
}
public Tuple apply(ItemStack itemStack, Enchant enchant, int level, int successRate, int destroyRate) {
- boolean hasProtection = NmsManager.getNbt().of(itemStack).has("protected");
+ boolean hasProtection = new NBTItem(itemStack).hasKey("protected");
Map currentEnchantMap = getEnchants(itemStack);
Set currentIds = currentEnchantMap.keySet().stream().map(Enchant::getIdentifier).collect(Collectors.toSet());
@@ -71,8 +70,8 @@ public class EnchantUtils {
if (GeneralUtils.chance(destroyRate)) {
if (hasProtection) {
NBTItem nbtItem = new ItemBuilder(itemStack).removeLore(instance.getSpecialItems().getWhiteScrollLore()).nbt();
- nbtItem.remove("protected");
- return Tuple.of(nbtItem.finish(), PROTECTED);
+ nbtItem.removeKey("protected");
+ return Tuple.of(nbtItem.getItem(), PROTECTED);
}
return Tuple.of(new ItemStack(Material.AIR), BROKEN_FAILURE);
}
@@ -94,19 +93,19 @@ public class EnchantUtils {
NBTItem nbtItem = itemBuilder.nbt();
- NBTCompound compound = nbtItem.getCompound("enchants");
- compound.set(enchant.getIdentifier(), level);
+ NBTCompound compound = nbtItem.getOrCreateCompound("enchants");
+ compound.setInteger(enchant.getIdentifier(), level);
- return Tuple.of(nbtItem.finish(), SUCCESS);
+ return Tuple.of(nbtItem.getItem(), SUCCESS);
}
public Map getEnchants(ItemStack itemStack) {
if (itemStack == null || itemStack.getType() == Material.AIR) {
return Collections.emptyMap();
}
- NBTItem nbtItem = NmsManager.getNbt().of(itemStack);
+ NBTItem nbtItem = new NBTItem(itemStack);
- if (!nbtItem.has("enchants")) {
+ if (!nbtItem.hasKey("enchants")) {
return Collections.emptyMap();
}
@@ -117,7 +116,7 @@ public class EnchantUtils {
}
return compound.getKeys().stream().filter(key -> instance.getEnchantManager().getValueUnsafe(key) != null)
- .collect(Collectors.toMap(key -> instance.getEnchantManager().getValueUnsafe(key), compound::getInt));
+ .collect(Collectors.toMap(key -> instance.getEnchantManager().getValueUnsafe(key), compound::getInteger));
}
public void handlePlayer(@NotNull Player player, @Nullable LivingEntity opponent, Event event, TriggerType triggerType) {
@@ -139,7 +138,7 @@ public class EnchantUtils {
return null;
}
- NBTItem nbtItem = NmsManager.getNbt().of(itemStack);
+ NBTItem nbtItem = new NBTItem(itemStack);
if (nbtItem.getCompound("enchants") == null) {
return itemStack;
@@ -148,8 +147,8 @@ public class EnchantUtils {
String format = enchant.getFormat().replace("{level}", "").trim();
String text = format.isEmpty() ? enchant.getColoredIdentifier(false) : format;
- nbtItem.getCompound("enchants").remove(enchant.getIdentifier());
- ItemBuilder output = new ItemBuilder(nbtItem.finish());
+ nbtItem.getCompound("enchants").removeKey(enchant.getIdentifier());
+ ItemBuilder output = new ItemBuilder(nbtItem.getItem());
output.removeLore(TextUtils.formatText(text));
return output.build();
}
diff --git a/src/main/java/com/songoda/epicenchants/utils/SpecialItems.java b/src/main/java/com/songoda/epicenchants/utils/SpecialItems.java
index 007012e..23b9eaf 100644
--- a/src/main/java/com/songoda/epicenchants/utils/SpecialItems.java
+++ b/src/main/java/com/songoda/epicenchants/utils/SpecialItems.java
@@ -1,6 +1,6 @@
package com.songoda.epicenchants.utils;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.objects.Group;
import com.songoda.epicenchants.utils.objects.ItemBuilder;
@@ -24,8 +24,8 @@ public class SpecialItems {
public ItemStack getWhiteScroll(int amount) {
NBTItem nbtItem = new ItemBuilder(instance.getFileManager().getConfiguration("items/special-items").getConfigurationSection("white-scroll")).nbt();
- nbtItem.set("white-scroll", true);
- ItemStack itemStack = nbtItem.finish();
+ nbtItem.setBoolean("white-scroll", true);
+ ItemStack itemStack = nbtItem.getItem();
itemStack.setAmount(amount);
@@ -36,10 +36,10 @@ public class SpecialItems {
int successRate = chance == -1 ? ThreadLocalRandom.current().nextInt(Settings.BLACK_MIN.getInt(), Settings.BLACK_MAX.getInt() + 1) : chance;
NBTItem nbtItem = new ItemBuilder(instance.getFileManager().getConfiguration("items/special-items").getConfigurationSection("black-scroll"), of("success-rate", successRate)).nbt();
- nbtItem.set("black-scroll", true);
- nbtItem.set("success-rate", successRate);
+ nbtItem.setBoolean("black-scroll", true);
+ nbtItem.setInteger("success-rate", successRate);
- ItemStack itemStack = nbtItem.finish();
+ ItemStack itemStack = nbtItem.getItem();
itemStack.setAmount(amount);
@@ -51,14 +51,14 @@ public class SpecialItems {
of("group-color", group.getColor()),
of("group-name", group.getName())).nbt();
- nbtItem.set("mystery-book", true);
- nbtItem.set("group", group.getIdentifier());
- return nbtItem.finish();
+ nbtItem.setBoolean("mystery-book", true);
+ nbtItem.setString("group", group.getIdentifier());
+ return nbtItem.getItem();
}
public ItemStack getSecretDust(NBTItem book) {
- Group group = instance.getEnchantManager().getValueUnsafe(book.getNBTObject("enchant").asString()).getGroup();
- return getSecretDust(group, (int) Math.floor(book.getNBTObject("success-rate").asInt() / 10.0));
+ Group group = instance.getEnchantManager().getValueUnsafe(book.getString("enchant")).getGroup();
+ return getSecretDust(group, (int) Math.floor(book.getInteger("success-rate") / 10.0));
}
public ItemStack getSecretDust(Group group, int max) {
@@ -68,11 +68,11 @@ public class SpecialItems {
of("max-rate", max),
of("min-rate", 0)).nbt();
- nbtItem.set("secret-dust", true);
- nbtItem.set("group", group.getIdentifier());
- nbtItem.set("max-rate", max + 1);
- nbtItem.set("min-rate", 1);
- return nbtItem.finish();
+ nbtItem.setBoolean("secret-dust", true);
+ nbtItem.setString("group", group.getIdentifier());
+ nbtItem.setInteger("max-rate", max + 1);
+ nbtItem.setInteger("min-rate", 1);
+ return nbtItem.getItem();
}
public ItemStack getDust(Group group, @Nullable String type, int percentage, boolean command) {
@@ -108,14 +108,14 @@ public class SpecialItems {
of("percentage", percentage)).nbt();
if (type.equalsIgnoreCase("mystery")) {
- return nbtItem.finish();
+ return nbtItem.getItem();
}
- nbtItem.set("dust", true);
- nbtItem.set("percentage", percentage);
- nbtItem.set("group", group.getIdentifier());
+ nbtItem.setBoolean("dust", true);
+ nbtItem.setInteger("percentage", percentage);
+ nbtItem.setString("group", group.getIdentifier());
- return nbtItem.finish();
+ return nbtItem.getItem();
}
public String getWhiteScrollLore() {
diff --git a/src/main/java/com/songoda/epicenchants/utils/objects/ItemBuilder.java b/src/main/java/com/songoda/epicenchants/utils/objects/ItemBuilder.java
index 46b36c5..e639708 100644
--- a/src/main/java/com/songoda/epicenchants/utils/objects/ItemBuilder.java
+++ b/src/main/java/com/songoda/epicenchants/utils/objects/ItemBuilder.java
@@ -1,7 +1,6 @@
package com.songoda.epicenchants.utils.objects;
-import com.songoda.core.nms.NmsManager;
-import com.songoda.core.nms.nbt.NBTItem;
+import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.epicenchants.objects.Placeholder;
import com.songoda.epicenchants.utils.single.ConfigParser;
import com.songoda.epicenchants.utils.single.GeneralUtils;
@@ -265,7 +264,7 @@ public class ItemBuilder {
}
public NBTItem nbt() {
- return NmsManager.getNbt().of(build());
+ return new NBTItem(build());
}
/*
diff --git a/src/main/java/com/songoda/epicenchants/utils/single/GeneralUtils.java b/src/main/java/com/songoda/epicenchants/utils/single/GeneralUtils.java
index 28bea07..83998e2 100644
--- a/src/main/java/com/songoda/epicenchants/utils/single/GeneralUtils.java
+++ b/src/main/java/com/songoda/epicenchants/utils/single/GeneralUtils.java
@@ -99,6 +99,8 @@ public class GeneralUtils {
}
public static Object parseJS(String toParse, String type, Object def) {
+ // FIXME: JavaScript != Math...
+ // Input "false ? (8 * 3) : (4 * 3)" fails for obvious reasons
return MathUtils.eval(toParse, "[EpicEnchants] One of your " + type + " expressions is not properly formatted.");
}
}