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.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.dependency.DependencyManager; 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.*;
import java.util.logging.Level; import java.util.logging.Level;
@ -230,7 +230,7 @@ public abstract class WrappedEnchantment {
*/ */
public static void registerEnchantments(){ public static void registerEnchantments(){
for (Enchantment enchantment : Enchantment.values()) { for (Enchantment enchantment : Enchantment.values()) {
register(new VanillaEnchant(enchantment)); register(new VanillaEnchantment(enchantment));
} }
if(DependencyManager.INSTANCE.getEnchantmentSquaredCompatibility() != null){ 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; import java.util.Locale;
public class VanillaEnchant extends WrappedEnchantment { public class VanillaEnchantment extends WrappedEnchantment {
private final @NotNull Enchantment enchantment; private final @NotNull Enchantment enchantment;
public VanillaEnchant(@NotNull Enchantment enchantment){ public VanillaEnchantment(@NotNull Enchantment enchantment){
super(enchantment.getKey(), super(enchantment.getKey(),
getRarity(enchantment), getRarity(enchantment),
enchantment.getMaxLevel()); enchantment.getMaxLevel());

View file

@ -91,12 +91,12 @@ class CustomAnvil : JavaPlugin() {
logger.warning("Please note CustomAnvil is a more recent version of UnsafeEnchantsPlus") logger.warning("Please note CustomAnvil is a more recent version of UnsafeEnchantsPlus")
} }
// Register enchantments
WrappedEnchantment.registerEnchantments()
// Load dependency // Load dependency
DependencyManager.loadDependency() DependencyManager.loadDependency()
// Register enchantments
WrappedEnchantment.registerEnchantments()
// Load chat listener // Load chat listener
chatListener = ChatEventListener() chatListener = ChatEventListener()
pluginManager.registerEvents(chatListener, this) pluginManager.registerEvents(chatListener, this)

View file

@ -20,10 +20,9 @@ object DependencyManager {
// Enchantment Squared dependency // Enchantment Squared dependency
enchantmentSquaredCompatibility = enchantmentSquaredCompatibility =
if(pluginManager.isPluginEnabled("EnchantsSquared")) EnchantmentSquaredDependency() if(pluginManager.isPluginEnabled("EnchantsSquared")) EnchantmentSquaredDependency(pluginManager.getPlugin("EnchantsSquared")!!)
else null else null
} }
} }

View file

@ -1,9 +1,17 @@
package xyz.alexcrea.cuanvil.dependency package xyz.alexcrea.cuanvil.dependency
class EnchantmentSquaredDependency { import me.athlaeos.enchantssquared.managers.CustomEnchantManager
import org.bukkit.plugin.Plugin
import xyz.alexcrea.cuanvil.enchant.WrappedEnchantment
import xyz.alexcrea.cuanvil.enchant.wrapped.EnchantSquaredEnchantment
class EnchantmentSquaredDependency(private val enchantmentSquaredPlugin: Plugin) {
fun registerEnchantements(){ fun registerEnchantements(){
//TODO for (enchant in CustomEnchantManager.getInstance().allEnchants.values) {
WrappedEnchantment.register(EnchantSquaredEnchantment(enchant, enchantmentSquaredPlugin))
}
} }
} }