From 3ece1a9bb44bf34066f236e2f85d88a454f08c89 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 1 Jun 2025 23:31:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E8=AE=BF=E9=97=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/plugin/BukkitCraftEnginePlugin.java | 1 - .../plugin/PaperCraftEngineBootstrap.java | 17 ++++++++++------- .../bukkit/block/BukkitBlockManager.java | 10 ++++++---- .../bukkit/plugin/BukkitCraftEngine.java | 10 +++++++--- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/bukkit/loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEnginePlugin.java b/bukkit/loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEnginePlugin.java index 6fbe25b93..5f9871d85 100644 --- a/bukkit/loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEnginePlugin.java +++ b/bukkit/loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEnginePlugin.java @@ -9,7 +9,6 @@ public class BukkitCraftEnginePlugin extends JavaPlugin { this.plugin = new BukkitCraftEngine(this); this.plugin.applyDependencies(); this.plugin.setUpConfig(); - this.plugin.injectRegistries(); } @Override diff --git a/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java b/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java index 807b5a8bf..df011e5ca 100644 --- a/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java +++ b/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java @@ -8,6 +8,7 @@ import net.momirealms.craftengine.bukkit.plugin.classpath.PaperClassPathAppender import net.momirealms.craftengine.core.plugin.logger.PluginLogger; import net.momirealms.craftengine.core.plugin.logger.Slf4jPluginLogger; import net.momirealms.craftengine.core.util.ReflectionUtils; +import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; @@ -44,13 +45,15 @@ public class PaperCraftEngineBootstrap implements PluginBootstrap { ); this.plugin.applyDependencies(); this.plugin.setUpConfig(); - context.getLifecycleManager().registerEventHandler(LifecycleEvents.DATAPACK_DISCOVERY, (e) -> { - try { - this.plugin.injectRegistries(); - } catch (Throwable ex) { - logger.warn("Failed to inject registries", ex); - } - }); + if (VersionHelper.isOrAbove1_21_4()) { + context.getLifecycleManager().registerEventHandler(LifecycleEvents.DATAPACK_DISCOVERY, (e) -> { + try { + this.plugin.injectRegistries(); + } catch (Throwable ex) { + logger.warn("Failed to inject registries", ex); + } + }); + } } @Override 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 11adfe017..3c2b798e2 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 @@ -91,8 +91,10 @@ public class BukkitBlockManager extends AbstractBlockManager { this.blockParser = new BlockParser(); this.initVanillaRegistry(); this.loadMappingsAndAdditionalBlocks(); - this.registerBlocks(); - this.registerEmptyBlock(); + if (!plugin.requiresRestart()) { + this.registerBlocks(); + this.registerEmptyBlock(); + } } @Override @@ -718,7 +720,7 @@ public class BukkitBlockManager extends AbstractBlockManager { Object blockHolder; Object resourceLocation = createResourceLocation(realBlockKey); - if (plugin.hasMod()) { + if (this.plugin.hasMod()) { newRealBlock = CoreReflections.method$Registry$get.invoke(MBuiltInRegistries.BLOCK, resourceLocation); newBlockState = getOnlyBlockState(newRealBlock); @@ -729,7 +731,7 @@ public class BukkitBlockManager extends AbstractBlockManager { try { newRealBlock = BlockGenerator.generateBlock(clientSideBlockType, clientSideBlock, blockProperties); } catch (Throwable throwable) { - plugin.logger().warn("Failed to generate dynamic block class", throwable); + this.plugin.logger().warn("Failed to generate dynamic block class", throwable); continue; } 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 d22a666ce..98fee0cc8 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 @@ -74,12 +74,12 @@ public class BukkitCraftEngine extends CraftEngine { private JavaPlugin javaPlugin; private final Path dataFolderPath; - public BukkitCraftEngine(JavaPlugin plugin) { + protected BukkitCraftEngine(JavaPlugin plugin) { this(new JavaPluginLogger(plugin.getLogger()), plugin.getDataFolder().toPath().toAbsolutePath(), new ReflectionClassPathAppender(plugin.getClass().getClassLoader())); this.setJavaPlugin(plugin); } - public BukkitCraftEngine(PluginLogger logger, Path dataFolderPath, ClassPathAppender classPathAppender) { + protected BukkitCraftEngine(PluginLogger logger, Path dataFolderPath, ClassPathAppender classPathAppender) { super((p) -> { CraftEngineReloadEvent event = new CraftEngineReloadEvent((BukkitCraftEngine) p); EventUtils.fireAndForget(event); @@ -128,6 +128,10 @@ public class BukkitCraftEngine extends CraftEngine { @Override public void onPluginLoad() { + if (super.blockManager == null) { + injectRegistries(); + } + if (this.requiresRestart) return; try { WorldStorageInjector.init(); } catch (Exception e) { @@ -172,7 +176,7 @@ public class BukkitCraftEngine extends CraftEngine { return; } this.successfullyEnabled = true; - if (this.hasMod && this.requiresRestart) { + if (this.requiresRestart) { logger().warn(" "); logger().warn(" "); logger().warn(" ");