From 0ed51c7dadd00802c8ee389b62ef61f44174fd0c Mon Sep 17 00:00:00 2001 From: 1robie Date: Tue, 27 Jan 2026 20:01:11 +0100 Subject: [PATCH 1/2] fix: enhance variant component initialization with error handling and version checks --- .../menu/common/utils/nms/NmsVersion.java | 8 +++ .../fr/maxlego08/menu/ZComponentsManager.java | 53 ++++++++++++++----- 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/Common/src/main/java/fr/maxlego08/menu/common/utils/nms/NmsVersion.java b/Common/src/main/java/fr/maxlego08/menu/common/utils/nms/NmsVersion.java index e5171107..56c2cfbf 100644 --- a/Common/src/main/java/fr/maxlego08/menu/common/utils/nms/NmsVersion.java +++ b/Common/src/main/java/fr/maxlego08/menu/common/utils/nms/NmsVersion.java @@ -238,6 +238,14 @@ public boolean isNewNMSVersion() { return version >= V_1_17.version; } + public boolean is1_11OrNewer() { + return version >= V_1_11.version; + } + + public boolean is1_12OrNewer() { + return version >= V_1_12.version; + } + public boolean isNewItemStackAPI() { return version >= V_1_21.version; } diff --git a/src/main/java/fr/maxlego08/menu/ZComponentsManager.java b/src/main/java/fr/maxlego08/menu/ZComponentsManager.java index 301cf44c..107205ef 100644 --- a/src/main/java/fr/maxlego08/menu/ZComponentsManager.java +++ b/src/main/java/fr/maxlego08/menu/ZComponentsManager.java @@ -10,6 +10,7 @@ import fr.maxlego08.menu.itemstack.components.spigot.SpigotVariantComponent; import fr.maxlego08.menu.loader.components.paper.*; import fr.maxlego08.menu.loader.components.spigot.*; +import fr.maxlego08.menu.zcore.logger.Logger; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -28,7 +29,14 @@ private boolean isPaperAndMiniMessageEnabled(MenuPlugin plugin){ public void initializeDefaultComponents(MenuPlugin plugin) { NmsVersion currentVersion = NmsVersion.getCurrentVersion(); if (currentVersion.isAttributItemStack()){ // 1.20.5+ - this.initializeVariantComponents(plugin); + try { + this.initializeVariantComponents(plugin); + } catch (Exception e) { + if (Configuration.enableDebug) { + Logger.info("Failed to initialize variant item components:"); + e.printStackTrace(); + } + } this.registerComponent(new SpigotBlockStateItemComponentLoader()); this.registerComponent(new SpigotAttributeModifiersItemComponentLoader(plugin)); @@ -131,32 +139,49 @@ public void initializeDefaultComponents(MenuPlugin plugin) { } private void initializeVariantComponents(MenuPlugin plugin) { + NmsVersion currentVersion = NmsVersion.getCurrentVersion(); VariantItemComponentLoaderFactory loaderFactory = plugin.isPaper() ? new PaperVariantItemComponentLoader(new PaperVariantComponent()) : new SpigotVariantItemComponentLoader(new SpigotVariantComponent()); - this.registerComponent(loaderFactory.getLoaderAxolotl()); this.registerComponent(loaderFactory.getLoaderCatCollar()); this.registerComponent(loaderFactory.getLoaderCatVariant()); - this.registerComponent(loaderFactory.getLoaderChicken()); - this.registerComponent(loaderFactory.getLoaderCow()); - this.registerComponent(loaderFactory.getLoaderFox()); - this.registerComponent(loaderFactory.getLoaderFrog()); this.registerComponent(loaderFactory.getLoaderHorse()); - this.registerComponent(loaderFactory.getLoaderLlama()); - this.registerComponent(loaderFactory.getLoaderMushroomCow()); - this.registerComponent(loaderFactory.getLoaderPainting()); - this.registerComponent(loaderFactory.getLoaderParrot()); - this.registerComponent(loaderFactory.getLoaderPig()); this.registerComponent(loaderFactory.getLoaderRabbit()); this.registerComponent(loaderFactory.getLoaderSalmon()); this.registerComponent(loaderFactory.getLoaderSheep()); - this.registerComponent(loaderFactory.getLoaderShulkerBox()); this.registerComponent(loaderFactory.getLoaderTropicalFishBaseColor()); this.registerComponent(loaderFactory.getLoaderTropicalFishPatternColor()); this.registerComponent(loaderFactory.getLoaderVillager()); - this.registerComponent(loaderFactory.getLoaderWolfCollar()); - this.registerComponent(loaderFactory.getLoaderWolfVariant()); + + if (currentVersion.isNewMaterial()){ // 1.13+ + this.registerComponent(loaderFactory.getLoaderFox()); + this.registerComponent(loaderFactory.getLoaderMushroomCow()); + } + if (currentVersion.isNewNMSVersion()){ // 1.17+ + this.registerComponent(loaderFactory.getLoaderAxolotl()); + } + if (currentVersion.isAttributItemStack()){ // 1.20.5+ + this.registerComponent(loaderFactory.getLoaderWolfCollar()); + this.registerComponent(loaderFactory.getLoaderWolfVariant()); + this.registerComponent(loaderFactory.getLoaderPainting()); + } + if (currentVersion.is1_21_5OrNewer()){ // 1.21.5+ + this.registerComponent(loaderFactory.getLoaderChicken()); + this.registerComponent(loaderFactory.getLoaderCow()); + this.registerComponent(loaderFactory.getLoaderPig()); + } + if (currentVersion.isNewNBTVersion()) { // 1.18+ + this.registerComponent(loaderFactory.getLoaderFrog()); + } + if (currentVersion.is1_11OrNewer()){ // 1.11+ + this.registerComponent(loaderFactory.getLoaderLlama()); + this.registerComponent(loaderFactory.getLoaderShulkerBox()); + } + if (currentVersion.is1_12OrNewer()) { // 1.12+ + this.registerComponent(loaderFactory.getLoaderParrot()); + } + } From 978b3c3b661c558a661c970ac280df0fd1a3303c Mon Sep 17 00:00:00 2001 From: 1robie Date: Tue, 27 Jan 2026 20:46:19 +0100 Subject: [PATCH 2/2] fix: shutdown register task --- .../listener/PacketAnimationListener.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Hooks/PacketEvents/src/main/java/fr/maxlego08/menu/hooks/packetevents/listener/PacketAnimationListener.java b/Hooks/PacketEvents/src/main/java/fr/maxlego08/menu/hooks/packetevents/listener/PacketAnimationListener.java index 470f06fc..7fcccf70 100644 --- a/Hooks/PacketEvents/src/main/java/fr/maxlego08/menu/hooks/packetevents/listener/PacketAnimationListener.java +++ b/Hooks/PacketEvents/src/main/java/fr/maxlego08/menu/hooks/packetevents/listener/PacketAnimationListener.java @@ -90,9 +90,9 @@ public void onPacketSend(PacketSendEvent event) { } }; - if (Bukkit.isPrimaryThread() || this.plugin.isEnabled()) { + if (Bukkit.isPrimaryThread()) { task.run(); - } else { + } else if (this.plugin.isEnabled()) { this.plugin.getScheduler().runNextTick(w -> task.run()); } } else if (packetType == PacketType.Play.Server.CLOSE_WINDOW){ @@ -110,9 +110,9 @@ public void onPacketSend(PacketSendEvent event) { } }; - if (Bukkit.isPrimaryThread() || this.plugin.isEnabled()) { + if (Bukkit.isPrimaryThread()) { task.run(); - } else { + } else if (this.plugin.isEnabled()) { this.plugin.getScheduler().runNextTick(w -> task.run()); } } else if (packetType == PacketType.Play.Server.WINDOW_ITEMS){ @@ -148,9 +148,9 @@ public void onPacketSend(PacketSendEvent event) { } }; - if (Bukkit.isPrimaryThread() || !this.plugin.isEnabled()) { + if (Bukkit.isPrimaryThread()) { task.run(); - } else { + } else if (this.plugin.isEnabled()) { this.plugin.getScheduler().runNextTick(w -> task.run()); } }