9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

修复consume replacement屯物品

This commit is contained in:
XiaoMoMi
2025-11-26 16:16:08 +08:00
parent 8b7e257e6a
commit 89dce806f8

View File

@@ -426,7 +426,7 @@ public class ItemEventListener implements Listener {
} }
} }
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOW) @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onConsumeItem(PlayerItemConsumeEvent event) { public void onConsumeItem(PlayerItemConsumeEvent event) {
ItemStack consumedItem = event.getItem(); ItemStack consumedItem = event.getItem();
if (ItemStackUtils.isEmpty(consumedItem)) return; if (ItemStackUtils.isEmpty(consumedItem)) return;
@@ -435,9 +435,11 @@ public class ItemEventListener implements Listener {
if (optionalCustomItem.isEmpty()) { if (optionalCustomItem.isEmpty()) {
return; return;
} }
Player player = event.getPlayer();
BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player);
Cancellable cancellable = Cancellable.of(event::isCancelled, event::setCancelled); Cancellable cancellable = Cancellable.of(event::isCancelled, event::setCancelled);
CustomItem<ItemStack> customItem = optionalCustomItem.get(); CustomItem<ItemStack> customItem = optionalCustomItem.get();
PlayerOptionalContext context = PlayerOptionalContext.of(BukkitAdaptors.adapt(event.getPlayer()), ContextHolder.builder() PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer, ContextHolder.builder()
.withParameter(DirectContextParameters.ITEM_IN_HAND, wrapped) .withParameter(DirectContextParameters.ITEM_IN_HAND, wrapped)
.withParameter(DirectContextParameters.EVENT, cancellable) .withParameter(DirectContextParameters.EVENT, cancellable)
.withParameter(DirectContextParameters.HAND, event.getHand() == EquipmentSlot.HAND ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND) .withParameter(DirectContextParameters.HAND, event.getHand() == EquipmentSlot.HAND ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND)
@@ -448,12 +450,20 @@ public class ItemEventListener implements Listener {
} }
if (event.getPlayer().getGameMode() != GameMode.CREATIVE) { if (event.getPlayer().getGameMode() != GameMode.CREATIVE) {
Key replacement = customItem.settings().consumeReplacement(); Key replacement = customItem.settings().consumeReplacement();
if (wrapped.count() == 1) {
if (replacement == null) { if (replacement == null) {
event.setReplacement(null); event.setReplacement(null);
} else { } else {
ItemStack replacementItem = this.plugin.itemManager().buildItemStack(replacement, BukkitAdaptors.adapt(event.getPlayer())); ItemStack replacementItem = this.plugin.itemManager().buildItemStack(replacement, serverPlayer);
event.setReplacement(replacementItem); event.setReplacement(replacementItem);
} }
} else {
event.setReplacement(null);
Item<ItemStack> replacementItem = this.plugin.itemManager().createWrappedItem(replacement, serverPlayer);
if (replacementItem != null) {
PlayerUtils.giveItem(serverPlayer, 1, replacementItem);
}
}
} }
} }