From dddb2e1474ca7d131038dfd0ea01c9e718a500f8 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Fri, 29 Jan 2021 12:47:47 +0800 Subject: [PATCH] Fix furnace exp are not cleared (#137) --- .../core/tileentity/AbstractFurnaceTileEntityMixin.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/tileentity/AbstractFurnaceTileEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/tileentity/AbstractFurnaceTileEntityMixin.java index 570743c6..970d51af 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/tileentity/AbstractFurnaceTileEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/tileentity/AbstractFurnaceTileEntityMixin.java @@ -2,6 +2,7 @@ package io.izzel.arclight.common.mixin.core.tileentity; import io.izzel.arclight.common.bridge.entity.player.ServerPlayerEntityBridge; import io.izzel.arclight.common.bridge.tileentity.AbstractFurnaceTileEntityBridge; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.block.Blocks; import net.minecraft.entity.item.ExperienceOrbEntity; import net.minecraft.entity.player.PlayerEntity; @@ -10,6 +11,7 @@ import net.minecraft.item.Items; import net.minecraft.item.crafting.IRecipe; import net.minecraft.tileentity.AbstractFurnaceTileEntity; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.World; @@ -23,6 +25,7 @@ import org.bukkit.event.inventory.FurnaceBurnEvent; import org.bukkit.event.inventory.FurnaceExtractEvent; import org.bukkit.event.inventory.FurnaceSmeltEvent; import org.bukkit.inventory.InventoryHolder; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; @@ -46,6 +49,7 @@ public abstract class AbstractFurnaceTileEntityMixin extends LockableTileEntityM @Shadow protected abstract boolean canSmelt(@Nullable IRecipe recipeIn); @Shadow public abstract void setRecipeUsed(@Nullable IRecipe recipe); @Shadow public abstract List> grantStoredRecipeExperience(World world, Vector3d pos); + @Shadow @Final private Object2IntOpenHashMap recipes; // @formatter:on public List transaction = new ArrayList<>(); @@ -134,7 +138,10 @@ public abstract class AbstractFurnaceTileEntityMixin extends LockableTileEntityM arclight$captureAmount = amount; arclight$captureFurnace = (AbstractFurnaceTileEntity) (Object) this; arclight$capturePlayer = entity; - return this.grantStoredRecipeExperience(world, pos); + List> list = this.grantStoredRecipeExperience(world, pos); + entity.unlockRecipes(list); + this.recipes.clear(); + return list; } finally { arclight$item = null; arclight$captureAmount = 0;