Add enchant squared wrapper.

Fix dependency not being load before enchantment registering.
This commit is contained in:
alexcrea 2024-06-16 13:46:27 +02:00
parent aad9974baf
commit aa1f3a446e
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
6 changed files with 65 additions and 11 deletions

View file

@ -10,7 +10,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.dependency.DependencyManager;
import xyz.alexcrea.cuanvil.enchant.wrapped.VanillaEnchant;
import xyz.alexcrea.cuanvil.enchant.wrapped.VanillaEnchantment;
import java.util.*;
import java.util.logging.Level;
@ -230,7 +230,7 @@ public abstract class WrappedEnchantment {
*/
public static void registerEnchantments(){
for (Enchantment enchantment : Enchantment.values()) {
register(new VanillaEnchant(enchantment));
register(new VanillaEnchantment(enchantment));
}
if(DependencyManager.INSTANCE.getEnchantmentSquaredCompatibility() != null){

View file

@ -0,0 +1,47 @@
package xyz.alexcrea.cuanvil.enchant.wrapped;
import me.athlaeos.enchantssquared.enchantments.CustomEnchant;
import me.athlaeos.enchantssquared.managers.CustomEnchantManager;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import xyz.alexcrea.cuanvil.enchant.WrappedEnchantment;
import java.util.Map;
import java.util.Objects;
public class EnchantSquaredEnchantment extends WrappedEnchantment {
private final @NotNull CustomEnchant enchant;
public EnchantSquaredEnchantment(@NotNull CustomEnchant enchant, @NotNull Plugin enchantSquared) {
super(Objects.requireNonNull(NamespacedKey.fromString(enchant.getType().toLowerCase(), enchantSquared)), null, enchant.getMaxLevel());
this.enchant = enchant;
}
//TODO optimise for bulk operation
@Override
public int getLevel(@NotNull ItemStack item, @NotNull ItemMeta meta) {
return CustomEnchantManager.getInstance().getEnchantStrength(item, this.enchant.getType());
}
@Override
public boolean isEnchantmentPresent(@NotNull ItemStack item, @NotNull ItemMeta meta) {
Map<CustomEnchant, Integer> enchants = CustomEnchantManager.getInstance().getItemsEnchantsFromPDC(item);
return enchants.containsKey(this.enchant);
}
@Override
public void addEnchantmentUnsafe(@NotNull ItemStack item, int level) {
CustomEnchantManager.getInstance().addEnchant(item, this.enchant.getType(), level);
}
@Override
public void removeFrom(@NotNull ItemStack item) {
CustomEnchantManager.getInstance().removeEnchant(item, this.enchant.getType());
}
}

View file

@ -12,11 +12,11 @@ import xyz.alexcrea.cuanvil.enchant.WrappedEnchantment;
import java.util.Locale;
public class VanillaEnchant extends WrappedEnchantment {
public class VanillaEnchantment extends WrappedEnchantment {
private final @NotNull Enchantment enchantment;
public VanillaEnchant(@NotNull Enchantment enchantment){
public VanillaEnchantment(@NotNull Enchantment enchantment){
super(enchantment.getKey(),
getRarity(enchantment),
enchantment.getMaxLevel());