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:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user