diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java index d19079d0c..a82a0dc65 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java @@ -248,7 +248,7 @@ public class BukkitBlockManager extends AbstractBlockManager { int vanillaStateCount; if (plugin.hasMod()) { try { - Class modClass = ReflectionUtils.getClazz("net.momirealms.craftengine.mod.CraftEnginePlugin"); + Class modClass = ReflectionUtils.getClazz(CraftEngine.MOD_CLASS); Field amountField = ReflectionUtils.getDeclaredField(modClass, "vanillaRegistrySize"); vanillaStateCount = (int) amountField.get(null); } catch (Exception e) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java index cb5384fff..4a271e3f8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java @@ -57,7 +57,7 @@ public class BukkitCraftEngine extends CraftEngine { super.classPathAppender = new ReflectionClassPathAppender(this); super.scheduler = new BukkitSchedulerAdapter(this); super.logger = new JavaPluginLogger(bootstrap.getLogger()); - Class modClass = ReflectionUtils.getClazz("net.momirealms.craftengine.mod.CraftEnginePlugin"); + Class modClass = ReflectionUtils.getClazz(MOD_CLASS); if (modClass != null) { Field isSuccessfullyRegistered = ReflectionUtils.getDeclaredField(modClass, "isSuccessfullyRegistered"); try { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java index 7ec1bda60..8f9af68dd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.List; public abstract class CraftEngine implements Plugin { + public static final String MOD_CLASS = "net.momirealms.craftengine.mod.CraftEnginePlugin"; public static final String NAMESPACE = "craftengine"; private static CraftEngine instance; protected Platform platform; @@ -52,6 +53,7 @@ public abstract class CraftEngine implements Plugin { protected SenderFactory senderFactory; protected TemplateManager templateManager; protected PluginLogger logger; + private boolean isReloading; protected CraftEngine() { instance = this; @@ -71,20 +73,29 @@ public abstract class CraftEngine implements Plugin { @Override public void reload() { - this.translationManager.reload(); - this.configManager.reload(); - this.templateManager.reload(); - this.furnitureManager.reload(); - this.fontManager.reload(); - this.itemManager.reload(); - this.recipeManager.reload(); - this.blockManager.reload(); - this.worldManager.reload(); - this.packManager.reload(); - this.blockManager.delayedLoad(); - this.recipeManager.delayedLoad().thenRunAsync(() -> { - this.packManager.generateResourcePack(); - }, this.scheduler.async()); + if (this.isReloading) return; + this.isReloading = true; + try { + this.translationManager.reload(); + this.configManager.reload(); + this.templateManager.reload(); + this.furnitureManager.reload(); + this.fontManager.reload(); + this.itemManager.reload(); + this.recipeManager.reload(); + this.blockManager.reload(); + this.worldManager.reload(); + this.packManager.reload(); + this.blockManager.delayedLoad(); + } finally { + this.recipeManager.delayedLoad().thenRunAsync(() -> { + try { + this.packManager.generateResourcePack(); + } finally { + this.isReloading = false; + } + }, this.scheduler.async()); + } } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java index 3bfb15575..ea4b5e507 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java @@ -125,7 +125,7 @@ public class ConfigManager implements Reloadable { // recipe enableRecipeSystem = config.getBoolean("recipe.enable", true); - Class modClazz = ReflectionUtils.getClazz("net.momirealms.craftengine.mod.CraftEnginePlugin"); + Class modClazz = ReflectionUtils.getClazz(CraftEngine.MOD_CLASS); if (modClazz != null) { Method setMaxChainMethod = ReflectionUtils.getStaticMethod(modClazz, new String[] {"setMaxChainUpdate"}, void.class, int.class); try {