Add event for external enchantment and config registering.

Fix startup.
This commit is contained in:
alexcrea 2024-07-10 14:26:55 +02:00
parent 365d0ea847
commit a5c647776c
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
9 changed files with 108 additions and 40 deletions

View file

@ -32,8 +32,12 @@ public class EnchantmentApi {
if(!CAEnchantmentRegistry.getInstance().register(enchantment)) return false; if(!CAEnchantmentRegistry.getInstance().register(enchantment)) return false;
// Add enchantment to gui. // Add enchantment to gui.
EnchantCostConfigGui.INSTANCE.updateValueForGeneric(enchantment, true); if(EnchantCostConfigGui.getInstance() != null){
EnchantLimitConfigGui.INSTANCE.updateValueForGeneric(enchantment, true); EnchantCostConfigGui.getInstance().updateValueForGeneric(enchantment, true);
}
if(EnchantLimitConfigGui.getInstance() != null){
EnchantLimitConfigGui.getInstance().updateValueForGeneric(enchantment, true);
}
return true; return true;
} }
@ -72,8 +76,12 @@ public class EnchantmentApi {
*/ */
public static boolean unregisterEnchantment(@Nullable CAEnchantment enchantment){ public static boolean unregisterEnchantment(@Nullable CAEnchantment enchantment){
// Remove from gui // Remove from gui
EnchantCostConfigGui.INSTANCE.removeGeneric(enchantment); if(EnchantCostConfigGui.getInstance() != null){
EnchantLimitConfigGui.INSTANCE.removeGeneric(enchantment); EnchantCostConfigGui.getInstance().removeGeneric(enchantment);
}
if(EnchantLimitConfigGui.getInstance() != null){
EnchantLimitConfigGui.getInstance().removeGeneric(enchantment);
}
return CAEnchantmentRegistry.getInstance().unregister(enchantment); return CAEnchantmentRegistry.getInstance().unregister(enchantment);
} }

View file

@ -0,0 +1,19 @@
package xyz.alexcrea.cuanvil.api.event;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class CAConfigReadyEvent extends Event {
private static final HandlerList HANDLERS = new HandlerList();
public static HandlerList getHandlerList() {
return HANDLERS;
}
@Override
public HandlerList getHandlers() {
return HANDLERS;
}
}

View file

@ -0,0 +1,18 @@
package xyz.alexcrea.cuanvil.api.event;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class CAEnchantRegistryReadyEvent extends Event {
private static final HandlerList HANDLERS = new HandlerList();
public static HandlerList getHandlerList() {
return HANDLERS;
}
@Override
public HandlerList getHandlers() {
return HANDLERS;
}
}

View file

@ -58,7 +58,7 @@ public class MainConfigGui extends ChestGui {
enchantLimitMeta.setLore(Collections.singletonList("\u00A77Click here to open enchantment level limit menu")); enchantLimitMeta.setLore(Collections.singletonList("\u00A77Click here to open enchantment level limit menu"));
enchantLimitItemstack.setItemMeta(enchantLimitMeta); enchantLimitItemstack.setItemMeta(enchantLimitMeta);
GuiItem enchantLimitItem = GuiGlobalItems.goToGuiItem(enchantLimitItemstack, EnchantLimitConfigGui.INSTANCE); GuiItem enchantLimitItem = GuiGlobalItems.goToGuiItem(enchantLimitItemstack, new EnchantLimitConfigGui());
pane.bindItem('2', enchantLimitItem); pane.bindItem('2', enchantLimitItem);
// enchant cost item // enchant cost item
@ -70,7 +70,7 @@ public class MainConfigGui extends ChestGui {
enchantCostMeta.setLore(Collections.singletonList("\u00A77Click here to open enchantment costs menu")); enchantCostMeta.setLore(Collections.singletonList("\u00A77Click here to open enchantment costs menu"));
enchantCostItemstack.setItemMeta(enchantCostMeta); enchantCostItemstack.setItemMeta(enchantCostMeta);
GuiItem enchantCostItem = GuiGlobalItems.goToGuiItem(enchantCostItemstack, EnchantCostConfigGui.INSTANCE); GuiItem enchantCostItem = GuiGlobalItems.goToGuiItem(enchantCostItemstack, new EnchantCostConfigGui());
pane.bindItem('3', enchantCostItem); pane.bindItem('3', enchantCostItem);
// Enchantment Conflicts item // Enchantment Conflicts item

View file

@ -12,6 +12,7 @@ import org.bukkit.Material;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.config.ConfigHolder;
import xyz.alexcrea.cuanvil.dependency.protocolib.PacketManager; import xyz.alexcrea.cuanvil.dependency.protocolib.PacketManager;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
@ -31,8 +32,9 @@ import java.util.Collections;
*/ */
public class BasicConfigGui extends ChestGui implements ValueUpdatableGui { public class BasicConfigGui extends ChestGui implements ValueUpdatableGui {
private static BasicConfigGui INSTANCE; private static BasicConfigGui INSTANCE = null;
@Nullable
public static BasicConfigGui getInstance() { public static BasicConfigGui getInstance() {
return INSTANCE; return INSTANCE;
} }
@ -43,7 +45,7 @@ public class BasicConfigGui extends ChestGui implements ValueUpdatableGui {
*/ */
public BasicConfigGui(PacketManager packetManager) { public BasicConfigGui(PacketManager packetManager) {
super(4, "\u00A78Basic Config", CustomAnvil.instance); super(4, "\u00A78Basic Config", CustomAnvil.instance);
INSTANCE = this; if(INSTANCE == null) INSTANCE = this;
this.packetManager = packetManager; this.packetManager = packetManager;
init(); init();

View file

@ -4,6 +4,7 @@ import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.config.ConfigHolder;
import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.enchant.CAEnchantment;
import xyz.alexcrea.cuanvil.enchant.EnchantmentProperties; import xyz.alexcrea.cuanvil.enchant.EnchantmentProperties;
@ -24,18 +25,21 @@ public class EnchantCostConfigGui extends AbstractEnchantConfigGui<EnchantCostSe
private static final String SECTION_NAME = "enchant_values"; private static final String SECTION_NAME = "enchant_values";
public static final EnchantCostConfigGui INSTANCE = new EnchantCostConfigGui(); private static EnchantCostConfigGui INSTANCE = null;
static { @Nullable
INSTANCE.init(); public static EnchantCostConfigGui getInstance() {
return INSTANCE;
} }
/** /**
* Constructor of this Global gui for enchantment cost settings. * Constructor of this Global gui for enchantment cost settings.
*/ */
private EnchantCostConfigGui() { public EnchantCostConfigGui() {
super("\u00A78Enchantment Level Cost"); super("\u00A78Enchantment Level Cost");
if(INSTANCE == null) INSTANCE = this;
init();
} }
@Override @Override

View file

@ -2,6 +2,7 @@ package xyz.alexcrea.cuanvil.gui.config.global;
import com.github.stefvanschie.inventoryframework.gui.GuiItem; import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import org.bukkit.Material; import org.bukkit.Material;
import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.config.ConfigHolder;
import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.enchant.CAEnchantment;
import xyz.alexcrea.cuanvil.gui.config.settings.IntSettingsGui; import xyz.alexcrea.cuanvil.gui.config.settings.IntSettingsGui;
@ -17,18 +18,21 @@ public class EnchantLimitConfigGui extends AbstractEnchantConfigGui<IntSettingsG
private static final String SECTION_NAME = "enchant_limits"; private static final String SECTION_NAME = "enchant_limits";
public static final EnchantLimitConfigGui INSTANCE = new EnchantLimitConfigGui(); private static EnchantLimitConfigGui INSTANCE = null;
static { @Nullable
INSTANCE.init(); public static EnchantLimitConfigGui getInstance() {
return INSTANCE;
} }
/** /**
* Constructor of this Global gui for enchantment level limit settings. * Constructor of this Global gui for enchantment level limit settings.
*/ */
private EnchantLimitConfigGui() { public EnchantLimitConfigGui() {
super("\u00A78Enchantment Level Limit"); super("\u00A78Enchantment Level Limit");
if(INSTANCE == null) INSTANCE = this;
init();
} }
@Override @Override

View file

@ -4,6 +4,8 @@ import io.delilaheve.util.ConfigOptions
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.configuration.file.YamlConfiguration import org.bukkit.configuration.file.YamlConfiguration
import org.bukkit.plugin.java.JavaPlugin import org.bukkit.plugin.java.JavaPlugin
import xyz.alexcrea.cuanvil.api.event.CAConfigReadyEvent
import xyz.alexcrea.cuanvil.api.event.CAEnchantRegistryReadyEvent
import xyz.alexcrea.cuanvil.command.EditConfigExecutor import xyz.alexcrea.cuanvil.command.EditConfigExecutor
import xyz.alexcrea.cuanvil.command.ReloadExecutor import xyz.alexcrea.cuanvil.command.ReloadExecutor
import xyz.alexcrea.cuanvil.config.ConfigHolder import xyz.alexcrea.cuanvil.config.ConfigHolder
@ -88,28 +90,7 @@ 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")
} }
// Load dependency // Add commands
DependencyManager.loadDependency()
// Register vanilla enchantments
CAEnchantmentRegistry.getInstance().registerStartupEnchantments()
// Load config
val success = ConfigHolder.loadConfig()
if (!success) return
// temporary: handle 1.21 update
Update_1_21.handleUpdate()
// Load gui constants //TODO maybe something better later
MainConfigGui.getInstance().init(DependencyManager.packetManager)
GuiSharedConstant.loadConstants()
// Register enchantment of compatible plugin and load configuration change.
DependencyManager.registerEnchantments()
DependencyManager.handleCompatibilityConfig(this)
// Add commands to reload the plugin
prepareCommand() prepareCommand()
// Load chat listener // Load chat listener
@ -121,6 +102,38 @@ class CustomAnvil : JavaPlugin() {
// Load metrics // Load metrics
Metrics(this, bstatsPluginId) Metrics(this, bstatsPluginId)
// Load other things
Bukkit.getScheduler().scheduleSyncDelayedTask(this, {loadEnchantmentSystem()}, 0L)
}
private fun loadEnchantmentSystem(){
// Load dependency
DependencyManager.loadDependency()
// Register enchantments
CAEnchantmentRegistry.getInstance().registerStartupEnchantments()
DependencyManager.registerEnchantments()
val enchantReadyEvent = CAEnchantRegistryReadyEvent()
server.pluginManager.callEvent(enchantReadyEvent)
// Load config
val success = ConfigHolder.loadConfig()
if (!success) return
// temporary: handle 1.21 update
Update_1_21.handleUpdate()
val configReadyEvent = CAConfigReadyEvent()
server.pluginManager.callEvent(configReadyEvent)
// Load gui constants //TODO maybe something better later
MainConfigGui.getInstance().init(DependencyManager.packetManager)
GuiSharedConstant.loadConstants()
// Register enchantment of compatible plugin and load configuration change.
DependencyManager.handleCompatibilityConfig(this)
} }
fun reloadResource( fun reloadResource(

View file

@ -36,8 +36,8 @@ class ReloadExecutor : CommandExecutor {
// Then update all global gui containing value from config // Then update all global gui containing value from config
BasicConfigGui.getInstance()?.updateGuiValues() BasicConfigGui.getInstance()?.updateGuiValues()
EnchantCostConfigGui.INSTANCE.updateGuiValues() EnchantCostConfigGui.getInstance()?.updateGuiValues()
EnchantLimitConfigGui.INSTANCE.updateGuiValues() EnchantLimitConfigGui.getInstance()?.updateGuiValues()
EnchantConflictGui.INSTANCE.reloadValues() EnchantConflictGui.INSTANCE.reloadValues()
GroupConfigGui.INSTANCE.reloadValues() GroupConfigGui.INSTANCE.reloadValues()