diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/inventory/CraftItemStackMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/inventory/CraftItemStackMixin.java new file mode 100644 index 00000000..10ce54ff --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/inventory/CraftItemStackMixin.java @@ -0,0 +1,15 @@ +package io.izzel.arclight.common.mixin.bukkit.inventory; + +import net.minecraft.world.item.ItemStack; +import org.bukkit.craftbukkit.v.inventory.CraftItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(CraftItemStack.class) +public abstract class CraftItemStackMixin { + @Redirect(method = "asCraftMirror", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isEmpty()Z")) + private static boolean arclight$asCraftMirror$ItemStack$isEmpty(ItemStack instance) { + return false; + } +} diff --git a/arclight-common/src/main/resources/mixins.arclight.bukkit.json b/arclight-common/src/main/resources/mixins.arclight.bukkit.json index b976472d..230bcc00 100644 --- a/arclight-common/src/main/resources/mixins.arclight.bukkit.json +++ b/arclight-common/src/main/resources/mixins.arclight.bukkit.json @@ -45,6 +45,7 @@ "Registry_SimpleRegistryMixin", "StandardMessengerMixin", "WatchdogThreadMixin", + "inventory.CraftItemStackMixin", "util.BlockStateListPopulatorMixin", "util.DelegatedGeneratorAccessMixin", "util.DummyGeneratorAccessMixin" diff --git a/arclight-neoforge/src/main/java/io/izzel/arclight/neoforge/mixin/core/world/item/ItemStackMixin_NeoForge.java b/arclight-neoforge/src/main/java/io/izzel/arclight/neoforge/mixin/core/world/item/ItemStackMixin_NeoForge.java index 7089ff17..842d9f7d 100644 --- a/arclight-neoforge/src/main/java/io/izzel/arclight/neoforge/mixin/core/world/item/ItemStackMixin_NeoForge.java +++ b/arclight-neoforge/src/main/java/io/izzel/arclight/neoforge/mixin/core/world/item/ItemStackMixin_NeoForge.java @@ -40,9 +40,6 @@ public abstract class ItemStackMixin_NeoForge implements ItemStackBridge, IItemS @Decorate(method = "hurtAndBreak(ILnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Consumer;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;processDurabilityChange(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/item/ItemStack;I)I")) private int arclight$itemDamage(ServerLevel serverLevel, ItemStack itemStack, int i, @Local(ordinal = 0) LivingEntity damager) throws Throwable { - if (itemStack == null) { - itemStack = ItemStack.EMPTY; - } int result = (int) DecorationOps.callsite().invoke(serverLevel, itemStack, i); if (damager instanceof ServerPlayer) { PlayerItemDamageEvent event = new PlayerItemDamageEvent(((ServerPlayerEntityBridge) damager).bridge$getBukkitEntity(), CraftItemStack.asCraftMirror((ItemStack) (Object) this), result);