From 6d4146fc3dc00a26f337a7da64a8e19a1746a0a7 Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Fri, 12 Dec 2025 18:38:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmm=E8=8E=B7=E5=8F=96ce?= =?UTF-8?q?=E7=89=A9=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mythicmobs/MythicItemDropListener.java | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/mythicmobs/MythicItemDropListener.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/mythicmobs/MythicItemDropListener.java index 5b616b7fd..20deac887 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/mythicmobs/MythicItemDropListener.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/mythicmobs/MythicItemDropListener.java @@ -1,13 +1,16 @@ package net.momirealms.craftengine.bukkit.compatibility.mythicmobs; -import io.lumine.mythic.api.config.MythicLineConfig; import io.lumine.mythic.bukkit.events.MythicDropLoadEvent; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; +import net.momirealms.craftengine.core.item.CustomItem; import net.momirealms.craftengine.core.util.Key; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; + +import java.util.Locale; public class MythicItemDropListener implements Listener { private final BukkitCraftEngine plugin; @@ -17,15 +20,36 @@ public class MythicItemDropListener implements Listener { Bukkit.getPluginManager().registerEvents(this, plugin.javaPlugin()); } - @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(priority = EventPriority.MONITOR) public void onMythicDropLoad(MythicDropLoadEvent event) { - if (!event.getDropName().equalsIgnoreCase("craftengine")) return; - String argument = event.getArgument(); - Key itemId = Key.of(argument); - this.plugin.itemManager().getCustomItem(itemId).ifPresent(customItem -> { - String line = event.getContainer().getConfigLine(); - MythicLineConfig config = event.getConfig(); - event.register(new MythicItemDrop(line, config, customItem)); - }); + if (!"craftengine".equalsIgnoreCase(event.getDropName())) { + return; + } + String line = event.getContainer().getLine().toLowerCase(Locale.ROOT); + String itemId = extractItemId(line); + if (itemId == null || itemId.isEmpty()) { + return; + } + CustomItem customItem = this.plugin.itemManager().getCustomItem(Key.of(itemId)).orElse(null); + if (customItem == null) { + return; + } + event.register(new MythicItemDrop(line, event.getConfig(), customItem)); + } + + private static String extractItemId(String line) { + if (line.startsWith("craftengine ")) { + int nextSpaceIndex = line.indexOf(' ', 12); + return nextSpaceIndex == -1 + ? line.substring(12) + : line.substring(12, nextSpaceIndex); + } + if (line.startsWith("craftengine:")) { + int spaceIndex = line.indexOf(' ', 12); + return spaceIndex == -1 + ? line.substring(12) + : line.substring(12, spaceIndex); + } + return null; } }