Merge branch 'development'

This commit is contained in:
Christian Koop 2022-03-18 20:37:13 +01:00
commit d41f093a88
No known key found for this signature in database
GPG Key ID: 89A8181384E010A3
14 changed files with 128 additions and 118 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.songoda</groupId> <groupId>com.songoda</groupId>
<artifactId>EpicEnchants</artifactId> <artifactId>EpicEnchants</artifactId>
<version>1.2.2</version> <version>1.2.3</version>
<name>EpicEnchants</name> <name>EpicEnchants</name>
<description>Unlock the potential of your weapons, tools and armor by making your own custom enchants.</description> <description>Unlock the potential of your weapons, tools and armor by making your own custom enchants.</description>
@ -116,7 +116,7 @@
<dependency> <dependency>
<groupId>com.songoda</groupId> <groupId>com.songoda</groupId>
<artifactId>SongodaCore</artifactId> <artifactId>SongodaCore</artifactId>
<version>2.6.11</version> <version>2.6.12</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@ -17,7 +17,20 @@ import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.projectiles.ProjectileSource; 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 { public class EntityListener implements Listener {
private final EpicEnchants instance; private final EpicEnchants instance;

View File

@ -1,7 +1,7 @@
package com.songoda.epicenchants.listeners.item; package com.songoda.epicenchants.listeners.item;
import com.songoda.core.nms.nbt.NBTCompound; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
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.EpicEnchants;
import com.songoda.epicenchants.objects.Enchant; import com.songoda.epicenchants.objects.Enchant;
import com.songoda.epicenchants.utils.single.RomanNumber; import com.songoda.epicenchants.utils.single.RomanNumber;
@ -17,7 +17,7 @@ public class BlackScrollListener extends ItemListener {
@Override @Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) { 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; return;
} }
@ -31,11 +31,11 @@ public class BlackScrollListener extends ItemListener {
} }
String id = getRandomElement(compound.getKeys()); String id = getRandomElement(compound.getKeys());
int level = compound.getInt(id); int level = compound.getInteger(id);
Enchant enchant = instance.getEnchantManager().getValueUnsafe(id); Enchant enchant = instance.getEnchantManager().getValueUnsafe(id);
ItemStack toSet = instance.getEnchantUtils().removeEnchant(event.getCurrentItem(), enchant); 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); event.setCurrentItem(toSet);
instance.getLocale().getMessage("blackscroll.success") instance.getLocale().getMessage("blackscroll.success")

View File

@ -1,7 +1,7 @@
package com.songoda.epicenchants.listeners.item; package com.songoda.epicenchants.listeners.item;
import com.songoda.core.compatibility.CompatibleMaterial; 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.EpicEnchants;
import com.songoda.epicenchants.enums.EnchantResult; import com.songoda.epicenchants.enums.EnchantResult;
import com.songoda.epicenchants.events.EnchantApplyEvent; import com.songoda.epicenchants.events.EnchantApplyEvent;
@ -30,16 +30,16 @@ public class BookListener extends ItemListener {
@Override @Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) { 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; return;
} }
event.setCancelled(true); event.setCancelled(true);
ItemStack toApply = event.getCurrentItem(); 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; return;
} }
// get total amount of enchantments on item // get total amount of enchantments on item
@ -53,9 +53,9 @@ public class BookListener extends ItemListener {
return; return;
} }
int level = cursor.getNBTObject("level").asInt(); int level = cursor.getInteger("level");
int successRate = cursor.getNBTObject("success-rate").asInt(); int successRate = cursor.getInteger("success-rate");
int destroyRate = cursor.getNBTObject("destroy-rate").asInt(); int destroyRate = cursor.getInteger("destroy-rate");
EnchantApplyEvent enchantEvent = new EnchantApplyEvent(toApply, enchant, level, successRate, destroyRate); EnchantApplyEvent enchantEvent = new EnchantApplyEvent(toApply, enchant, level, successRate, destroyRate);
Bukkit.getPluginManager().callEvent(enchantEvent); Bukkit.getPluginManager().callEvent(enchantEvent);
@ -83,7 +83,7 @@ public class BookListener extends ItemListener {
@Override @Override
void onClick(PlayerInteractEvent event, NBTItem clicked) { 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; return;
} }
@ -93,7 +93,7 @@ public class BookListener extends ItemListener {
return; 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> enchant = instance.getEnchantManager().getRandomEnchant(group); Optional<Enchant> enchant = instance.getEnchantManager().getRandomEnchant(group);

View File

@ -1,6 +1,6 @@
package com.songoda.epicenchants.listeners.item; 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.EpicEnchants;
import com.songoda.epicenchants.objects.Enchant; import com.songoda.epicenchants.objects.Enchant;
import com.songoda.epicenchants.objects.Group; import com.songoda.epicenchants.objects.Group;
@ -16,28 +16,28 @@ public class DustListener extends ItemListener {
@Override @Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) { void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) {
if (!cursor.has("dust") || !cursor.getNBTObject("dust").asBoolean()) { if (!cursor.hasKey("dust") || !cursor.getBoolean("dust")) {
return; return;
} }
if (!current.has("book-item") || !current.getNBTObject("book-item").asBoolean()) { if (!current.hasKey("book-item") || !current.getBoolean("book-item")) {
return; 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; return;
} }
int successRate = current.getNBTObject("success-rate").asInt(); int successRate = current.getInteger("success-rate");
if (successRate == 100) { if (successRate == 100) {
return; return;
} }
successRate = Math.min(successRate + cursor.getNBTObject("percentage").asInt(), 100); successRate = Math.min(successRate + cursor.getInteger("percentage"), 100);
event.setCurrentItem(enchant.getBook().get(enchant, current.getNBTObject("level").asInt(), successRate, current.getNBTObject("destroy-rate").asInt())); event.setCurrentItem(enchant.getBook().get(enchant, current.getInteger("level"), successRate, current.getInteger("destroy-rate")));
event.setCancelled(true); event.setCancelled(true);
useItem(event); useItem(event);
@ -45,7 +45,7 @@ public class DustListener extends ItemListener {
@Override @Override
void onClick(PlayerInteractEvent event, NBTItem clicked) { 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; return;
} }
@ -55,8 +55,8 @@ public class DustListener extends ItemListener {
return; return;
} }
Group group = instance.getGroupManager().getValueUnsafe(clicked.getNBTObject("group").asString()); Group group = instance.getGroupManager().getValueUnsafe(clicked.getString("group"));
int rate = ThreadLocalRandom.current().nextInt(clicked.getNBTObject("min-rate").asInt(), clicked.getNBTObject("max-rate").asInt()); int rate = ThreadLocalRandom.current().nextInt(clicked.getInteger("min-rate"), clicked.getInteger("max-rate"));
useItem(event); useItem(event);
event.getPlayer().getInventory().addItem(instance.getSpecialItems().getDust(group, null, rate, false)); event.getPlayer().getInventory().addItem(instance.getSpecialItems().getDust(group, null, rate, false));

View File

@ -1,7 +1,6 @@
package com.songoda.epicenchants.listeners.item; package com.songoda.epicenchants.listeners.item;
import com.songoda.core.nms.NmsManager; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.core.nms.nbt.NBTItem;
import com.songoda.epicenchants.EpicEnchants; import com.songoda.epicenchants.EpicEnchants;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -32,7 +31,7 @@ public abstract class ItemListener implements Listener {
return; 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) @EventHandler(priority = EventPriority.HIGHEST)
@ -45,7 +44,7 @@ public abstract class ItemListener implements Listener {
return; return;
} }
onClick(event, NmsManager.getNbt().of(event.getItem())); onClick(event, new NBTItem(event.getItem()));
} }
void useItem(InventoryClickEvent event) { void useItem(InventoryClickEvent event) {

View File

@ -1,7 +1,7 @@
package com.songoda.epicenchants.listeners.item; package com.songoda.epicenchants.listeners.item;
import com.songoda.core.compatibility.CompatibleMaterial; 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.EpicEnchants;
import com.songoda.epicenchants.utils.objects.ItemBuilder; import com.songoda.epicenchants.utils.objects.ItemBuilder;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
@ -15,13 +15,13 @@ public class WhiteScrollListener extends ItemListener {
@Override @Override
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) { 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; return;
} }
event.setCancelled(true); event.setCancelled(true);
if (current.has("protected")) { if (current.hasKey("protected")) {
instance.getLocale().getMessage("whitescroll.alreadyapplied") instance.getLocale().getMessage("whitescroll.alreadyapplied")
.sendPrefixedMessage(event.getWhoClicked()); .sendPrefixedMessage(event.getWhoClicked());
return; return;
@ -30,10 +30,10 @@ public class WhiteScrollListener extends ItemListener {
if (!instance.getItemGroup().isValid(CompatibleMaterial.getMaterial(event.getCurrentItem()))) if (!instance.getItemGroup().isValid(CompatibleMaterial.getMaterial(event.getCurrentItem())))
return; return;
current.set("protected", true); current.setBoolean("protected", true);
instance.getLocale().getMessage("whitescrollapplied").sendPrefixedMessage(event.getWhoClicked()); 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); event.getClickedInventory().setItem(event.getSlot(), toSet);
useItem(event); useItem(event);

View File

@ -1,8 +1,7 @@
package com.songoda.epicenchants.menus; package com.songoda.epicenchants.menus;
import com.songoda.core.hooks.EconomyManager; import com.songoda.core.hooks.EconomyManager;
import com.songoda.core.nms.NmsManager; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.core.nms.nbt.NBTItem;
import com.songoda.epicenchants.EpicEnchants; import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.objects.Enchant; import com.songoda.epicenchants.objects.Enchant;
import com.songoda.epicenchants.objects.Group; import com.songoda.epicenchants.objects.Group;
@ -123,9 +122,9 @@ public class AlchemistMenu extends FastInv {
ItemStack toHandle = itemStack.clone(); ItemStack toHandle = itemStack.clone();
toHandle.setAmount(1); 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); instance.getLocale().getMessage("alchemist.notinterested").sendPrefixedMessage(player);
return false; return false;
} }
@ -136,13 +135,13 @@ public class AlchemistMenu extends FastInv {
return false; return false;
} }
int successRate = nbtItem.getNBTObject("success-rate").asInt(); int successRate = nbtItem.getInteger("success-rate");
// Both slots empty // Both slots empty
if (getInventory().getItem(LEFT_SLOT) == null && getInventory().getItem(RIGHT_SLOT) == null) { if (getInventory().getItem(LEFT_SLOT) == null && getInventory().getItem(RIGHT_SLOT) == null) {
if (nbtItem.has("book-item")) { if (nbtItem.hasKey("book-item")) {
Enchant enchant = instance.getEnchantManager().getValue(nbtItem.getNBTObject("enchant").asString()).orElseThrow(() -> new IllegalStateException("Book without enchant!")); Enchant enchant = instance.getEnchantManager().getValue(nbtItem.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
int level = nbtItem.getNBTObject("level").asInt(); int level = nbtItem.getInteger("level");
if (enchant.getMaxLevel() == level) { if (enchant.getMaxLevel() == level) {
instance.getLocale().getMessage("alchemist.maxlevelbook") instance.getLocale().getMessage("alchemist.maxlevelbook")
@ -150,7 +149,7 @@ public class AlchemistMenu extends FastInv {
return false; return false;
} }
} else { } 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) { if (group.getOrder() == instance.getGroupManager().getValues().stream().mapToInt(Group::getOrder).max().orElse(0) || successRate == 100) {
instance.getLocale().getMessage("alchemist." + (successRate == 100 ? "maxpercentagedust" : "highestgroupdust")) instance.getLocale().getMessage("alchemist." + (successRate == 100 ? "maxpercentagedust" : "highestgroupdust"))
@ -163,21 +162,21 @@ public class AlchemistMenu extends FastInv {
return true; 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; int emptySlot = getInventory().getItem(LEFT_SLOT) == null ? LEFT_SLOT : RIGHT_SLOT;
if (other.has("book-item")) { if (other.hasKey("book-item")) {
if (!nbtItem.getNBTObject("enchant").asString().equals(other.getNBTObject("enchant").asString())) { if (!nbtItem.getString("enchant").equals(other.getString("enchant"))) {
instance.getLocale().getMessage("alchemist.differentenchantment").sendPrefixedMessage(player); instance.getLocale().getMessage("alchemist.differentenchantment").sendPrefixedMessage(player);
return false; 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); instance.getLocale().getMessage("alchemist.differentlevels").sendPrefixedMessage(player);
return false; return false;
} }
} else { } 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); instance.getLocale().getMessage("alchemist.differentgroups").sendPrefixedMessage(player);
return false; return false;
} }
@ -200,18 +199,18 @@ public class AlchemistMenu extends FastInv {
return; return;
} }
NBTItem leftItem = NmsManager.getNbt().of(getInventory().getItem(LEFT_SLOT)); NBTItem leftItem = new NBTItem(getInventory().getItem(LEFT_SLOT));
NBTItem rightItem = NmsManager.getNbt().of(getInventory().getItem(RIGHT_SLOT)); NBTItem rightItem = new NBTItem(getInventory().getItem(RIGHT_SLOT));
int ecoCost; int ecoCost;
int expCost; int expCost;
if (leftItem.has("book-item")) { if (leftItem.hasKey("book-item")) {
int level = leftItem.getNBTObject("level").asInt(); int level = leftItem.getInteger("level");
Enchant enchant = instance.getEnchantManager().getValue(leftItem.getNBTObject("enchant").asString()).orElseThrow(() -> new IllegalStateException("Book without enchant!")); Enchant enchant = instance.getEnchantManager().getValue(leftItem.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
int leftSuccess = leftItem.getNBTObject("success-rate").asInt(); int leftSuccess = leftItem.getInteger("success-rate");
int rightSuccess = rightItem.getNBTObject("success-rate").asInt(); int rightSuccess = rightItem.getInteger("success-rate");
int leftDestroy = leftItem.getNBTObject("destroy-rate").asInt(); int leftDestroy = leftItem.getInteger("destroy-rate");
int rightDestroy = rightItem.getNBTObject("destroy-rate").asInt(); int rightDestroy = rightItem.getInteger("destroy-rate");
Placeholder[] placeholders = new Placeholder[] { Placeholder[] placeholders = new Placeholder[] {
of("left_success_rate", leftSuccess), 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)); getInventory().setItem(PREVIEW_SLOT, enchant.getBook().get(enchant, level + 1, successRate, destroyRate));
} else { } 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[] { Placeholder[] placeholders = new Placeholder[] {
of("left_percentage", leftItem.getNBTObject("percentage").asInt()), of("left_percentage", leftItem.getInteger("percentage")),
of("right_percentage", rightItem.getNBTObject("percentage").asInt()) of("right_percentage", rightItem.getInteger("percentage"))
}; };
int successRate = getFromFormula("dust.percentage-formula", placeholders); int successRate = getFromFormula("dust.percentage-formula", placeholders);

View File

@ -1,8 +1,7 @@
package com.songoda.epicenchants.menus; package com.songoda.epicenchants.menus;
import com.songoda.core.nms.NmsManager; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
import com.songoda.core.nms.nbt.NBTCompound; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.core.nms.nbt.NBTItem;
import com.songoda.epicenchants.EpicEnchants; import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.enums.ItemType; import com.songoda.epicenchants.enums.ItemType;
import com.songoda.epicenchants.objects.Enchant; import com.songoda.epicenchants.objects.Enchant;
@ -169,9 +168,9 @@ public class TinkererMenu extends FastInv {
return NONE; 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; return BOOK;
} }
@ -206,7 +205,7 @@ public class TinkererMenu extends FastInv {
switch (itemType) { switch (itemType) {
case BOOK: 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; break;
case ENCHANTED: case ENCHANTED:
getInventory().setItem(emptySlot.get().getValue(), instance.getHookManager().getUltimateBottles().get().createBottle("Tinkerer", getExpAmount(finalItemStack))); 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); 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(); return total.get();
} }
@ -250,7 +249,7 @@ public class TinkererMenu extends FastInv {
enchantments.getKeys().forEach(key -> { enchantments.getKeys().forEach(key -> {
Enchant enchant = instance.getEnchantManager().getValueUnsafe(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(); return total.get();

View File

@ -1,6 +1,6 @@
package com.songoda.epicenchants.objects; 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.EpicEnchants;
import com.songoda.epicenchants.utils.objects.ItemBuilder; import com.songoda.epicenchants.utils.objects.ItemBuilder;
import com.songoda.epicenchants.utils.settings.Settings; import com.songoda.epicenchants.utils.settings.Settings;
@ -81,13 +81,13 @@ public class BookItem {
.lore(toSet); .lore(toSet);
NBTItem nbtItem = itemBuilder.nbt(); NBTItem nbtItem = itemBuilder.nbt();
nbtItem.set("book-item", true); nbtItem.setBoolean("book-item", true);
nbtItem.set("success-rate", successRate); nbtItem.setInteger("success-rate", successRate);
nbtItem.set("destroy-rate", destroyRate); nbtItem.setInteger("destroy-rate", destroyRate);
nbtItem.set("level", level); nbtItem.setInteger("level", level);
nbtItem.set("enchant", enchant.getIdentifier()); nbtItem.setString("enchant", enchant.getIdentifier());
return nbtItem.finish(); return nbtItem.getItem();
} }
public static class BookItemBuilder { public static class BookItemBuilder {

View File

@ -1,8 +1,7 @@
package com.songoda.epicenchants.utils; package com.songoda.epicenchants.utils;
import com.songoda.core.nms.NmsManager; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
import com.songoda.core.nms.nbt.NBTCompound; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.core.nms.nbt.NBTItem;
import com.songoda.core.utils.TextUtils; import com.songoda.core.utils.TextUtils;
import com.songoda.epicenchants.EpicEnchants; import com.songoda.epicenchants.EpicEnchants;
import com.songoda.epicenchants.enums.EnchantResult; import com.songoda.epicenchants.enums.EnchantResult;
@ -49,7 +48,7 @@ public class EnchantUtils {
} }
public Tuple<ItemStack, EnchantResult> apply(ItemStack itemStack, Enchant enchant, int level, int successRate, int destroyRate) { public Tuple<ItemStack, EnchantResult> 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<Enchant, Integer> currentEnchantMap = getEnchants(itemStack); Map<Enchant, Integer> currentEnchantMap = getEnchants(itemStack);
Set<String> currentIds = currentEnchantMap.keySet().stream().map(Enchant::getIdentifier).collect(Collectors.toSet()); Set<String> currentIds = currentEnchantMap.keySet().stream().map(Enchant::getIdentifier).collect(Collectors.toSet());
@ -71,8 +70,8 @@ public class EnchantUtils {
if (GeneralUtils.chance(destroyRate)) { if (GeneralUtils.chance(destroyRate)) {
if (hasProtection) { if (hasProtection) {
NBTItem nbtItem = new ItemBuilder(itemStack).removeLore(instance.getSpecialItems().getWhiteScrollLore()).nbt(); NBTItem nbtItem = new ItemBuilder(itemStack).removeLore(instance.getSpecialItems().getWhiteScrollLore()).nbt();
nbtItem.remove("protected"); nbtItem.removeKey("protected");
return Tuple.of(nbtItem.finish(), PROTECTED); return Tuple.of(nbtItem.getItem(), PROTECTED);
} }
return Tuple.of(new ItemStack(Material.AIR), BROKEN_FAILURE); return Tuple.of(new ItemStack(Material.AIR), BROKEN_FAILURE);
} }
@ -94,19 +93,19 @@ public class EnchantUtils {
NBTItem nbtItem = itemBuilder.nbt(); NBTItem nbtItem = itemBuilder.nbt();
NBTCompound compound = nbtItem.getCompound("enchants"); NBTCompound compound = nbtItem.getOrCreateCompound("enchants");
compound.set(enchant.getIdentifier(), level); compound.setInteger(enchant.getIdentifier(), level);
return Tuple.of(nbtItem.finish(), SUCCESS); return Tuple.of(nbtItem.getItem(), SUCCESS);
} }
public Map<Enchant, Integer> getEnchants(ItemStack itemStack) { public Map<Enchant, Integer> getEnchants(ItemStack itemStack) {
if (itemStack == null || itemStack.getType() == Material.AIR) { if (itemStack == null || itemStack.getType() == Material.AIR) {
return Collections.emptyMap(); 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(); return Collections.emptyMap();
} }
@ -117,7 +116,7 @@ public class EnchantUtils {
} }
return compound.getKeys().stream().filter(key -> instance.getEnchantManager().getValueUnsafe(key) != null) 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) { public void handlePlayer(@NotNull Player player, @Nullable LivingEntity opponent, Event event, TriggerType triggerType) {
@ -139,7 +138,7 @@ public class EnchantUtils {
return null; return null;
} }
NBTItem nbtItem = NmsManager.getNbt().of(itemStack); NBTItem nbtItem = new NBTItem(itemStack);
if (nbtItem.getCompound("enchants") == null) { if (nbtItem.getCompound("enchants") == null) {
return itemStack; return itemStack;
@ -148,8 +147,8 @@ public class EnchantUtils {
String format = enchant.getFormat().replace("{level}", "").trim(); String format = enchant.getFormat().replace("{level}", "").trim();
String text = format.isEmpty() ? enchant.getColoredIdentifier(false) : format; String text = format.isEmpty() ? enchant.getColoredIdentifier(false) : format;
nbtItem.getCompound("enchants").remove(enchant.getIdentifier()); nbtItem.getCompound("enchants").removeKey(enchant.getIdentifier());
ItemBuilder output = new ItemBuilder(nbtItem.finish()); ItemBuilder output = new ItemBuilder(nbtItem.getItem());
output.removeLore(TextUtils.formatText(text)); output.removeLore(TextUtils.formatText(text));
return output.build(); return output.build();
} }

View File

@ -1,6 +1,6 @@
package com.songoda.epicenchants.utils; 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.EpicEnchants;
import com.songoda.epicenchants.objects.Group; import com.songoda.epicenchants.objects.Group;
import com.songoda.epicenchants.utils.objects.ItemBuilder; import com.songoda.epicenchants.utils.objects.ItemBuilder;
@ -24,8 +24,8 @@ public class SpecialItems {
public ItemStack getWhiteScroll(int amount) { public ItemStack getWhiteScroll(int amount) {
NBTItem nbtItem = new ItemBuilder(instance.getFileManager().getConfiguration("items/special-items").getConfigurationSection("white-scroll")).nbt(); NBTItem nbtItem = new ItemBuilder(instance.getFileManager().getConfiguration("items/special-items").getConfigurationSection("white-scroll")).nbt();
nbtItem.set("white-scroll", true); nbtItem.setBoolean("white-scroll", true);
ItemStack itemStack = nbtItem.finish(); ItemStack itemStack = nbtItem.getItem();
itemStack.setAmount(amount); 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; 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 nbtItem = new ItemBuilder(instance.getFileManager().getConfiguration("items/special-items").getConfigurationSection("black-scroll"), of("success-rate", successRate)).nbt();
nbtItem.set("black-scroll", true); nbtItem.setBoolean("black-scroll", true);
nbtItem.set("success-rate", successRate); nbtItem.setInteger("success-rate", successRate);
ItemStack itemStack = nbtItem.finish(); ItemStack itemStack = nbtItem.getItem();
itemStack.setAmount(amount); itemStack.setAmount(amount);
@ -51,14 +51,14 @@ public class SpecialItems {
of("group-color", group.getColor()), of("group-color", group.getColor()),
of("group-name", group.getName())).nbt(); of("group-name", group.getName())).nbt();
nbtItem.set("mystery-book", true); nbtItem.setBoolean("mystery-book", true);
nbtItem.set("group", group.getIdentifier()); nbtItem.setString("group", group.getIdentifier());
return nbtItem.finish(); return nbtItem.getItem();
} }
public ItemStack getSecretDust(NBTItem book) { public ItemStack getSecretDust(NBTItem book) {
Group group = instance.getEnchantManager().getValueUnsafe(book.getNBTObject("enchant").asString()).getGroup(); Group group = instance.getEnchantManager().getValueUnsafe(book.getString("enchant")).getGroup();
return getSecretDust(group, (int) Math.floor(book.getNBTObject("success-rate").asInt() / 10.0)); return getSecretDust(group, (int) Math.floor(book.getInteger("success-rate") / 10.0));
} }
public ItemStack getSecretDust(Group group, int max) { public ItemStack getSecretDust(Group group, int max) {
@ -68,11 +68,11 @@ public class SpecialItems {
of("max-rate", max), of("max-rate", max),
of("min-rate", 0)).nbt(); of("min-rate", 0)).nbt();
nbtItem.set("secret-dust", true); nbtItem.setBoolean("secret-dust", true);
nbtItem.set("group", group.getIdentifier()); nbtItem.setString("group", group.getIdentifier());
nbtItem.set("max-rate", max + 1); nbtItem.setInteger("max-rate", max + 1);
nbtItem.set("min-rate", 1); nbtItem.setInteger("min-rate", 1);
return nbtItem.finish(); return nbtItem.getItem();
} }
public ItemStack getDust(Group group, @Nullable String type, int percentage, boolean command) { public ItemStack getDust(Group group, @Nullable String type, int percentage, boolean command) {
@ -108,14 +108,14 @@ public class SpecialItems {
of("percentage", percentage)).nbt(); of("percentage", percentage)).nbt();
if (type.equalsIgnoreCase("mystery")) { if (type.equalsIgnoreCase("mystery")) {
return nbtItem.finish(); return nbtItem.getItem();
} }
nbtItem.set("dust", true); nbtItem.setBoolean("dust", true);
nbtItem.set("percentage", percentage); nbtItem.setInteger("percentage", percentage);
nbtItem.set("group", group.getIdentifier()); nbtItem.setString("group", group.getIdentifier());
return nbtItem.finish(); return nbtItem.getItem();
} }
public String getWhiteScrollLore() { public String getWhiteScrollLore() {

View File

@ -1,7 +1,6 @@
package com.songoda.epicenchants.utils.objects; package com.songoda.epicenchants.utils.objects;
import com.songoda.core.nms.NmsManager; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
import com.songoda.core.nms.nbt.NBTItem;
import com.songoda.epicenchants.objects.Placeholder; import com.songoda.epicenchants.objects.Placeholder;
import com.songoda.epicenchants.utils.single.ConfigParser; import com.songoda.epicenchants.utils.single.ConfigParser;
import com.songoda.epicenchants.utils.single.GeneralUtils; import com.songoda.epicenchants.utils.single.GeneralUtils;
@ -265,7 +264,7 @@ public class ItemBuilder {
} }
public NBTItem nbt() { public NBTItem nbt() {
return NmsManager.getNbt().of(build()); return new NBTItem(build());
} }
/* /*

View File

@ -99,6 +99,8 @@ public class GeneralUtils {
} }
public static Object parseJS(String toParse, String type, Object def) { 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."); return MathUtils.eval(toParse, "[EpicEnchants] One of your " + type + " expressions is not properly formatted.");
} }
} }