mirror of
https://github.com/Auxilor/EcoEnchants.git
synced 2025-02-27 06:21:59 +01:00
- Fixed descriptions saving as false for default
- Fixed not grindstoneable enchantments still being grindstoned
This commit is contained in:
parent
24ab170828
commit
a01b3d37f3
@ -15,9 +15,12 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.inventory.GrindstoneInventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class GrindstoneListeners extends PluginDependent<EcoPlugin> implements Listener {
|
||||
@ -51,11 +54,22 @@ public class GrindstoneListeners extends PluginDependent<EcoPlugin> implements L
|
||||
ItemStack top = inventory.getItem(0);
|
||||
ItemStack bottom = inventory.getItem(1);
|
||||
ItemStack out = inventory.getItem(2);
|
||||
|
||||
|
||||
if (out == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Enchantment, Integer> merged = GrindstoneMerge.doMerge(top, bottom);
|
||||
ItemMeta meta = out.getItemMeta();
|
||||
for (Enchantment enchantment : merged.keySet()) {
|
||||
if (meta instanceof EnchantmentStorageMeta storageMeta) {
|
||||
storageMeta.addStoredEnchant(enchantment, merged.get(enchantment), true);
|
||||
} else {
|
||||
meta.addEnchant(enchantment, merged.get(enchantment), true);
|
||||
}
|
||||
}
|
||||
out.setItemMeta(meta);
|
||||
|
||||
this.getPlugin().getScheduler().runLater(() -> {
|
||||
if (inventory.getItem(2) != null || event.isCancelled()) return;
|
||||
Set<Enchantment> enchants = new HashSet<>();
|
||||
@ -65,7 +79,7 @@ public class GrindstoneListeners extends PluginDependent<EcoPlugin> implements L
|
||||
if (bottom != null) {
|
||||
enchants.addAll(bottom.getEnchantments().keySet());
|
||||
}
|
||||
enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant));
|
||||
enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant) || merged.containsKey(enchantment));
|
||||
if (!enchants.isEmpty()) {
|
||||
Location loc = player.getLocation().clone().add(
|
||||
NumberUtils.randFloat(-1, 1),
|
||||
@ -78,4 +92,39 @@ public class GrindstoneListeners extends PluginDependent<EcoPlugin> implements L
|
||||
}, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* An additional grindstone listener for isGrindstoneable check.
|
||||
*
|
||||
* @param event The event to listen to.
|
||||
*/
|
||||
@EventHandler
|
||||
public void onGrindstoneFix(@NotNull final InventoryClickEvent event) {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
if (player.getOpenInventory().getTopInventory().getType() != InventoryType.GRINDSTONE) {
|
||||
return;
|
||||
}
|
||||
this.getPlugin().getScheduler().runLater(() -> {
|
||||
GrindstoneInventory inventory = (GrindstoneInventory) player.getOpenInventory().getTopInventory();
|
||||
|
||||
ItemStack top = inventory.getItem(0);
|
||||
ItemStack bottom = inventory.getItem(1);
|
||||
ItemStack out = inventory.getItem(2);
|
||||
|
||||
if (out == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Enchantment, Integer> merged = GrindstoneMerge.doMerge(top, bottom);
|
||||
ItemMeta meta = out.getItemMeta();
|
||||
for (Enchantment enchantment : merged.keySet()) {
|
||||
if (meta instanceof EnchantmentStorageMeta storageMeta) {
|
||||
storageMeta.addStoredEnchant(enchantment, merged.get(enchantment), true);
|
||||
} else {
|
||||
meta.addEnchant(enchantment, merged.get(enchantment), true);
|
||||
}
|
||||
}
|
||||
out.setItemMeta(meta);
|
||||
}, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ class PlayerProfile private constructor(
|
||||
Type.INT -> data[key] = handler.read(uuid, key, 0)
|
||||
Type.DOUBLE -> data[key] = handler.read(uuid, key, 0.0)
|
||||
Type.STRING -> data[key] = handler.read(uuid, key, "Unknown")
|
||||
Type.BOOLEAN -> data[key] = handler.read(uuid, key, false)
|
||||
Type.BOOLEAN -> data[key] = handler.read(uuid, key, true)
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ class PlayerProfile private constructor(
|
||||
Type.INT -> handler.write(uuid, key, profile.read(key, 0))
|
||||
Type.DOUBLE -> handler.write(uuid, key, profile.read(key, 0.0))
|
||||
Type.STRING -> handler.write(uuid, key, profile.read(key, "Unknown Value"))
|
||||
Type.BOOLEAN -> handler.write(uuid, key, profile.read(key, false))
|
||||
Type.BOOLEAN -> handler.write(uuid, key, profile.read(key, true))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user