Merge pull request #87

Fix dupe exp on Grindstone
This commit is contained in:
Will FP
2021-10-07 09:42:54 +01:00
committed by GitHub

View File

@@ -46,37 +46,21 @@ public class GrindstoneListeners extends PluginDependent<EcoPlugin> implements L
if (player.getOpenInventory().getTopInventory().getType() != InventoryType.GRINDSTONE) {
return;
}
if (event.getSlotType() != InventoryType.SlotType.RESULT) {
return;
}
GrindstoneInventory inventory = (GrindstoneInventory) player.getOpenInventory().getTopInventory();
this.getPlugin().getScheduler().runLater(() -> {
ItemStack top = inventory.getItem(0);
ItemStack bottom = inventory.getItem(1);
ItemStack out = inventory.getItem(2);
Map<Enchantment, Integer> toKeep = GrindstoneMerge.doMerge(top, bottom);
if (toKeep.isEmpty()) {
inventory.setItem(2, out);
}
if (out == null) {
return;
}
ItemStack newOut = out.clone();
if (newOut.getItemMeta() instanceof EnchantmentStorageMeta meta) {
toKeep.forEach(((enchantment, integer) -> {
meta.addStoredEnchant(enchantment, integer, true);
}));
newOut.setItemMeta(meta);
} else {
ItemMeta meta = newOut.getItemMeta();
toKeep.forEach(((enchantment, integer) -> {
meta.addEnchant(enchantment, integer, true);
}));
newOut.setItemMeta(meta);
}
ItemStack top = inventory.getItem(0);
ItemStack bottom = inventory.getItem(1);
ItemStack out = inventory.getItem(2);
if (out == null) {
return;
}
this.getPlugin().getScheduler().runLater(() -> {
Set<Enchantment> enchants = new HashSet<>();
if (top != null) {
enchants.addAll(top.getEnchantments().keySet());
@@ -91,21 +75,9 @@ public class GrindstoneListeners extends PluginDependent<EcoPlugin> implements L
NumberUtils.randFloat(-1, 1),
NumberUtils.randFloat(-1, 1)
);
ExperienceOrb orb = (ExperienceOrb) loc.getWorld().spawnEntity(loc, EntityType.EXPERIENCE_ORB);
orb.setExperience(enchants.size() * 15);
}
this.getPlugin().getScheduler().run(() -> {
inventory.setItem(2, newOut);
if (!toKeep.isEmpty()) {
for (Entity entity : player.getNearbyEntities(10, 10, 10)) {
if (entity.getType() == EntityType.EXPERIENCE_ORB) {
entity.remove();
}
}
}
});
}, 1);
}
}