diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java index 7a07392..667fc6d 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java @@ -9,7 +9,9 @@ import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.group.EnchantConflictGroup; import xyz.alexcrea.cuanvil.gui.config.global.EnchantConflictGui; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * Custom Anvil api for conflict registry. @@ -56,7 +58,8 @@ public class ConflictAPI { ConfigHolder.CONFLICT_HOLDER.getConflictManager().addConflict(conflict); // Add conflict to gui - EnchantConflictGui.INSTANCE.updateValueForGeneric(conflict, true); + EnchantConflictGui conflictGui = EnchantConflictGui.getCurrentInstance(); + if(conflictGui != null) conflictGui.updateValueForGeneric(conflict, true); return true; } @@ -137,7 +140,9 @@ public class ConflictAPI { prepareSaveTask(); // Remove from gui - EnchantConflictGui.INSTANCE.removeGeneric(conflict); + EnchantConflictGui conflictGui = EnchantConflictGui.getCurrentInstance(); + if(conflictGui != null) conflictGui.removeGeneric(conflict); + return true; } @@ -162,14 +167,16 @@ public class ConflictAPI { reloadChangeTask = Bukkit.getScheduler().scheduleSyncDelayedTask(CustomAnvil.instance, ()->{ ConfigHolder.CONFLICT_HOLDER.reload(); - EnchantConflictGui.INSTANCE.reloadValues(); + EnchantConflictGui conflictGui = EnchantConflictGui.getCurrentInstance(); + if(conflictGui != null) conflictGui.reloadValues(); + reloadChangeTask = -1; }, 0L); } static void logConflictOrigin(@NotNull ConflictBuilder builder){ - CustomAnvil.instance.getLogger().warning("Conflict " + builder.getName() +" came from " + builder.getSourceName() + "."); + CustomAnvil.instance.getLogger().warning("Conflict " + builder.getName() + " came from " + builder.getSourceName() + "."); } /** diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java index e5172f8..ed628fe 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java @@ -72,7 +72,8 @@ public class CustomAnvilRecipeApi { prepareSaveTask(); // Add from gui - CustomRecipeConfigGui.INSTANCE.updateValueForGeneric(recipe, true); + CustomRecipeConfigGui recipeConfigGui = CustomRecipeConfigGui.getCurrentInstance(); + if(recipeConfigGui != null) recipeConfigGui.updateValueForGeneric(recipe, true); return true; } @@ -92,7 +93,8 @@ public class CustomAnvilRecipeApi { prepareSaveTask(); // Remove from gui - CustomRecipeConfigGui.INSTANCE.removeGeneric(recipe); + CustomRecipeConfigGui recipeConfigGui = CustomRecipeConfigGui.getCurrentInstance(); + if(recipeConfigGui != null) recipeConfigGui.removeGeneric(recipe); return true; } diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java index 0cbb650..ca061ba 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java @@ -60,7 +60,8 @@ public class MaterialGroupApi { if(!writeMaterialGroup(group, false)) return false; if(group instanceof IncludeGroup includeGroup){ - GroupConfigGui.INSTANCE.updateValueForGeneric(includeGroup, true); + GroupConfigGui configGui = GroupConfigGui.getCurrentInstance(); + if(configGui != null) configGui.updateValueForGeneric(includeGroup, true); } if(ConfigOptions.INSTANCE.getVerboseDebugLog()){ @@ -168,7 +169,8 @@ public class MaterialGroupApi { // Remove from gui if(group instanceof IncludeGroup includeGroup){ - GroupConfigGui.INSTANCE.removeGeneric(includeGroup); + GroupConfigGui configGui = GroupConfigGui.getCurrentInstance(); + if(configGui != null) configGui.removeGeneric(includeGroup); } return true; @@ -194,7 +196,10 @@ public class MaterialGroupApi { reloadChangeTask = Bukkit.getScheduler().scheduleSyncDelayedTask(CustomAnvil.instance, ()->{ ConfigHolder.ITEM_GROUP_HOLDER.reload(); - GroupConfigGui.INSTANCE.reloadValues(); + + GroupConfigGui configGui = GroupConfigGui.getCurrentInstance(); + if(configGui != null) configGui.reloadValues(); + reloadChangeTask = -1; }, 0L); diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java index b6c1062..db4da89 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java @@ -82,7 +82,7 @@ public class MainConfigGui extends ChestGui { enchantConflictMeta.setLore(Collections.singletonList("\u00A77Click here to open enchantment conflict menu")); enchantConflictItemstack.setItemMeta(enchantConflictMeta); - GuiItem enchantConflictItem = GuiGlobalItems.goToGuiItem(enchantConflictItemstack, EnchantConflictGui.INSTANCE); + GuiItem enchantConflictItem = GuiGlobalItems.goToGuiItem(enchantConflictItemstack, EnchantConflictGui.getInstance()); pane.bindItem('4', enchantConflictItem); // Group config items @@ -94,7 +94,7 @@ public class MainConfigGui extends ChestGui { groupMeta.setLore(Collections.singletonList("\u00A77Click here to open material group menu")); groupItemstack.setItemMeta(groupMeta); - GuiItem groupConfigItem = GuiGlobalItems.goToGuiItem(groupItemstack, GroupConfigGui.INSTANCE); + GuiItem groupConfigItem = GuiGlobalItems.goToGuiItem(groupItemstack, GroupConfigGui.getInstance()); pane.bindItem('5', groupConfigItem); @@ -107,7 +107,7 @@ public class MainConfigGui extends ChestGui { unitRepairMeta.setLore(Collections.singletonList("\u00A77Click here to open anvil unit repair menu")); unirRepairItemstack.setItemMeta(unitRepairMeta); - GuiItem unitRepairItem = GuiGlobalItems.goToGuiItem(unirRepairItemstack, UnitRepairConfigGui.INSTANCE); + GuiItem unitRepairItem = GuiGlobalItems.goToGuiItem(unirRepairItemstack, UnitRepairConfigGui.getInstance()); pane.bindItem('6', unitRepairItem); // Custom recipe item @@ -119,7 +119,7 @@ public class MainConfigGui extends ChestGui { customRecipeMeta.setLore(Collections.singletonList("\u00A77Click here to open anvil custom recipe menu")); customRecipeItemstack.setItemMeta(customRecipeMeta); - GuiItem customRecipeItem = GuiGlobalItems.goToGuiItem(customRecipeItemstack, CustomRecipeConfigGui.INSTANCE); + GuiItem customRecipeItem = GuiGlobalItems.goToGuiItem(customRecipeItemstack, CustomRecipeConfigGui.getInstance()); pane.bindItem('7', customRecipeItem); // quit item diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/CustomRecipeConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/CustomRecipeConfigGui.java index 797a3ab..d8fb9a5 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/CustomRecipeConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/CustomRecipeConfigGui.java @@ -5,6 +5,8 @@ import org.bukkit.Material; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui; import xyz.alexcrea.cuanvil.gui.config.list.elements.CustomRecipeSubSettingGui; @@ -17,10 +19,18 @@ import java.util.Collection; public class CustomRecipeConfigGui extends MappedGuiListConfigGui { - public final static CustomRecipeConfigGui INSTANCE = new CustomRecipeConfigGui(); + private static CustomRecipeConfigGui INSTANCE = new CustomRecipeConfigGui(); - static { - INSTANCE.init(); + @Nullable + public static CustomRecipeConfigGui getCurrentInstance(){ + return INSTANCE; + } + + @NotNull + public static CustomRecipeConfigGui getInstance(){ + if(INSTANCE == null) INSTANCE = new CustomRecipeConfigGui(); + + return INSTANCE; } private CustomRecipeConfigGui() { diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java index c4181df..a582ad0 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java @@ -5,6 +5,8 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.group.EnchantConflictGroup; import xyz.alexcrea.cuanvil.group.IncludeGroup; @@ -18,14 +20,25 @@ import java.util.Collection; public class EnchantConflictGui extends MappedGuiListConfigGui { - public static final EnchantConflictGui INSTANCE = new EnchantConflictGui(); + private static EnchantConflictGui INSTANCE; - static { - INSTANCE.init(); + @Nullable + public static EnchantConflictGui getCurrentInstance(){ + return INSTANCE; } + @NotNull + public static EnchantConflictGui getInstance(){ + if(INSTANCE == null) INSTANCE = new EnchantConflictGui(); + + return INSTANCE; + } + + private EnchantConflictGui() { super( "Conflict Config"); + + init(); } @Override diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java index d5fb430..80bbe8c 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java @@ -5,6 +5,8 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; import xyz.alexcrea.cuanvil.group.GroupType; @@ -20,14 +22,24 @@ import java.util.Collection; public class GroupConfigGui extends MappedGuiListConfigGui { - public final static GroupConfigGui INSTANCE = new GroupConfigGui(); + private static GroupConfigGui INSTANCE; - static { - INSTANCE.init(); + @Nullable + public static GroupConfigGui getCurrentInstance(){ + return INSTANCE; + } + + @NotNull + public static GroupConfigGui getInstance(){ + if(INSTANCE == null) INSTANCE = new GroupConfigGui(); + + return INSTANCE; } public GroupConfigGui() { super("Group Config"); + + init(); } @Override diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java index 30c5d2e..b1e171e 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java @@ -6,6 +6,8 @@ import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.gui.config.ask.SelectItemTypeGui; import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui; @@ -18,14 +20,24 @@ import java.util.Collection; public class UnitRepairConfigGui extends MappedGuiListConfigGui { - public static final UnitRepairConfigGui INSTANCE = new UnitRepairConfigGui(); + private static UnitRepairConfigGui INSTANCE; - static { - INSTANCE.init(); + @Nullable + public static UnitRepairConfigGui getCurrentInstance(){ + return INSTANCE; + } + + @NotNull + public static UnitRepairConfigGui getInstance(){ + if(INSTANCE == null) INSTANCE = new UnitRepairConfigGui(); + + return INSTANCE; } private UnitRepairConfigGui() { super("Unit Repair Config"); + + init(); } @Override diff --git a/src/main/kotlin/io/delilaheve/CustomAnvil.kt b/src/main/kotlin/io/delilaheve/CustomAnvil.kt index d62d7a2..f2442aa 100644 --- a/src/main/kotlin/io/delilaheve/CustomAnvil.kt +++ b/src/main/kotlin/io/delilaheve/CustomAnvil.kt @@ -128,6 +128,10 @@ class CustomAnvil : JavaPlugin() { // temporary: handle 1.21 update Update_1_21.handleUpdate() + // Register enchantment of compatible plugin and load configuration change. + DependencyManager.handleCompatibilityConfig() + + // Call config event val configReadyEvent = CAConfigReadyEvent() server.pluginManager.callEvent(configReadyEvent) @@ -135,8 +139,6 @@ class CustomAnvil : JavaPlugin() { MainConfigGui.getInstance().init(DependencyManager.packetManager) GuiSharedConstant.loadConstants() - // Register enchantment of compatible plugin and load configuration change. - DependencyManager.handleCompatibilityConfig() } fun reloadResource( diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/command/ReloadExecutor.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/command/ReloadExecutor.kt index ca5a205..e49793d 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/command/ReloadExecutor.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/command/ReloadExecutor.kt @@ -1,11 +1,15 @@ package xyz.alexcrea.cuanvil.command import io.delilaheve.CustomAnvil +import org.bukkit.Bukkit import org.bukkit.command.Command import org.bukkit.command.CommandExecutor import org.bukkit.command.CommandSender +import xyz.alexcrea.cuanvil.api.event.CAConfigReadyEvent import xyz.alexcrea.cuanvil.config.ConfigHolder +import xyz.alexcrea.cuanvil.dependency.DependencyManager import xyz.alexcrea.cuanvil.gui.config.global.* +import xyz.alexcrea.cuanvil.update.Update_1_21 class ReloadExecutor : CommandExecutor { override fun onCommand(sender: CommandSender, cmd: Command, cmdstr: String, args: Array): Boolean { @@ -39,10 +43,20 @@ class ReloadExecutor : CommandExecutor { EnchantCostConfigGui.getInstance()?.updateGuiValues() EnchantLimitConfigGui.getInstance()?.updateGuiValues() - EnchantConflictGui.INSTANCE.reloadValues() - GroupConfigGui.INSTANCE.reloadValues() - UnitRepairConfigGui.INSTANCE.reloadValues() - CustomRecipeConfigGui.INSTANCE.reloadValues() + EnchantConflictGui.getCurrentInstance()?.reloadValues() + GroupConfigGui.getCurrentInstance()?.reloadValues() + UnitRepairConfigGui.getCurrentInstance()?.reloadValues() + CustomRecipeConfigGui.getCurrentInstance()?.reloadValues() + + // temporary: handle 1.21 update + Update_1_21.handleUpdate() + + // Register enchantment of compatible plugin and load configuration change. + DependencyManager.handleCompatibilityConfig() + + // Call event + val configReadyEvent = CAConfigReadyEvent() + Bukkit.getServer().pluginManager.callEvent(configReadyEvent) return true } catch (e: Exception) {