Created FastGetEnchants

This commit is contained in:
Auxilor
2020-12-19 21:19:57 +00:00
parent f258d5a6c7
commit e4e7f860bf
7 changed files with 188 additions and 31 deletions

View File

@@ -0,0 +1,10 @@
package com.willfp.ecoenchants.nms.api;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import java.util.Map;
public interface FastGetEnchantsWrapper {
Map<Enchantment, Integer> getEnchantmentsOnItem(ItemStack itemStack);
}

View File

@@ -0,0 +1,32 @@
package com.willfp.ecoenchants.nms.v1_15_R1;
import com.willfp.ecoenchants.nms.api.FastGetEnchantsWrapper;
import net.minecraft.server.v1_15_R1.NBTBase;
import net.minecraft.server.v1_15_R1.NBTTagCompound;
import net.minecraft.server.v1_15_R1.NBTTagList;
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
import org.bukkit.craftbukkit.v1_15_R1.util.CraftNamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
public class FastGetEnchants implements FastGetEnchantsWrapper {
@Override
public Map<Enchantment, Integer> getEnchantmentsOnItem(ItemStack itemStack) {
net.minecraft.server.v1_15_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagList enchantmentNBT = nmsStack.getEnchantments();
HashMap<Enchantment, Integer> foundEnchantments = new HashMap<>();
for (NBTBase base : enchantmentNBT) {
NBTTagCompound compound = (NBTTagCompound) base;
String key = compound.getString("id");
int level = '\uffff' & compound.getShort("lvl");
Enchantment found = Enchantment.getByKey(CraftNamespacedKey.fromStringOrNull(key));
if(found != null) foundEnchantments.put(found, level);
}
return foundEnchantments;
}
}

View File

@@ -0,0 +1,32 @@
package com.willfp.ecoenchants.nms.v1_16_R1;
import com.willfp.ecoenchants.nms.api.FastGetEnchantsWrapper;
import net.minecraft.server.v1_16_R1.NBTBase;
import net.minecraft.server.v1_16_R1.NBTTagCompound;
import net.minecraft.server.v1_16_R1.NBTTagList;
import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftItemStack;
import org.bukkit.craftbukkit.v1_16_R1.util.CraftNamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
public class FastGetEnchants implements FastGetEnchantsWrapper {
@Override
public Map<Enchantment, Integer> getEnchantmentsOnItem(ItemStack itemStack) {
net.minecraft.server.v1_16_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagList enchantmentNBT = nmsStack.getEnchantments();
HashMap<Enchantment, Integer> foundEnchantments = new HashMap<>();
for (NBTBase base : enchantmentNBT) {
NBTTagCompound compound = (NBTTagCompound) base;
String key = compound.getString("id");
int level = '\uffff' & compound.getShort("lvl");
Enchantment found = Enchantment.getByKey(CraftNamespacedKey.fromStringOrNull(key));
if(found != null) foundEnchantments.put(found, level);
}
return foundEnchantments;
}
}

View File

@@ -0,0 +1,32 @@
package com.willfp.ecoenchants.nms.v1_16_R2;
import com.willfp.ecoenchants.nms.api.FastGetEnchantsWrapper;
import net.minecraft.server.v1_16_R2.NBTBase;
import net.minecraft.server.v1_16_R2.NBTTagCompound;
import net.minecraft.server.v1_16_R2.NBTTagList;
import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftItemStack;
import org.bukkit.craftbukkit.v1_16_R2.util.CraftNamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
public class FastGetEnchants implements FastGetEnchantsWrapper {
@Override
public Map<Enchantment, Integer> getEnchantmentsOnItem(ItemStack itemStack) {
net.minecraft.server.v1_16_R2.ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagList enchantmentNBT = nmsStack.getEnchantments();
HashMap<Enchantment, Integer> foundEnchantments = new HashMap<>();
for (NBTBase base : enchantmentNBT) {
NBTTagCompound compound = (NBTTagCompound) base;
String key = compound.getString("id");
int level = '\uffff' & compound.getShort("lvl");
Enchantment found = Enchantment.getByKey(CraftNamespacedKey.fromStringOrNull(key));
if(found != null) foundEnchantments.put(found, level);
}
return foundEnchantments;
}
}

View File

@@ -0,0 +1,32 @@
package com.willfp.ecoenchants.nms.v1_16_R3;
import com.willfp.ecoenchants.nms.api.FastGetEnchantsWrapper;
import net.minecraft.server.v1_16_R3.NBTBase;
import net.minecraft.server.v1_16_R3.NBTTagCompound;
import net.minecraft.server.v1_16_R3.NBTTagList;
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack;
import org.bukkit.craftbukkit.v1_16_R3.util.CraftNamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
public class FastGetEnchants implements FastGetEnchantsWrapper {
@Override
public Map<Enchantment, Integer> getEnchantmentsOnItem(ItemStack itemStack) {
net.minecraft.server.v1_16_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
NBTTagList enchantmentNBT = nmsStack.getEnchantments();
HashMap<Enchantment, Integer> foundEnchantments = new HashMap<>();
for (NBTBase base : enchantmentNBT) {
NBTTagCompound compound = (NBTTagCompound) base;
String key = compound.getString("id");
int level = '\uffff' & compound.getShort("lvl");
Enchantment found = Enchantment.getByKey(CraftNamespacedKey.fromStringOrNull(key));
if(found != null) foundEnchantments.put(found, level);
}
return foundEnchantments;
}
}