From 0c043344f031d4dc30e05b97b26ae2e6d90e684f Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Fri, 4 Sep 2020 16:10:22 +0800 Subject: [PATCH] Upstream: Fix getLocation for Cartography Table and Stonecutter --- .../container/CartographyContainerBridge.java | 8 -------- .../container/EnchantmentContainerBridge.java | 8 -------- .../container/GrindstoneContainerBridge.java | 8 -------- .../container/LoomContainerBridge.java | 8 -------- .../container/PosContainerBridge.java | 14 ++++++++++++++ .../container/WorkbenchContainerBridge.java | 8 -------- .../inventory/CraftingInventoryMixin.java | 8 +++----- .../container/CartographyContainer1Mixin.java | 19 +++++++++++++++++++ .../container/CartographyContainer2Mixin.java | 5 ++--- .../container/CartographyContainerMixin.java | 6 +++--- .../container/EnchantmentContainer1Mixin.java | 5 ++--- .../container/EnchantmentContainerMixin.java | 6 +++--- .../container/GrindstoneContainer1Mixin.java | 5 ++--- .../container/GrindstoneContainerMixin.java | 6 +++--- .../container/LoomContainer1Mixin.java | 7 +++---- .../container/LoomContainer2Mixin.java | 7 +++---- .../container/LoomContainerMixin.java | 4 ++-- .../container/StonecutterContainer1Mixin.java | 19 +++++++++++++++++++ .../container/StonecutterContainerMixin.java | 9 ++++++++- .../container/WorkbenchContainerMixin.java | 8 ++++---- .../main/resources/mixins.arclight.core.json | 2 ++ 21 files changed, 92 insertions(+), 78 deletions(-) delete mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/CartographyContainerBridge.java delete mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/EnchantmentContainerBridge.java delete mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/GrindstoneContainerBridge.java delete mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/LoomContainerBridge.java create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/PosContainerBridge.java delete mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/WorkbenchContainerBridge.java create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer1Mixin.java create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainer1Mixin.java diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/CartographyContainerBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/CartographyContainerBridge.java deleted file mode 100644 index 43077989..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/CartographyContainerBridge.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.izzel.arclight.common.bridge.inventory.container; - -import net.minecraft.util.IWorldPosCallable; - -public interface CartographyContainerBridge extends ContainerBridge { - - IWorldPosCallable bridge$getContainerAccess(); -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/EnchantmentContainerBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/EnchantmentContainerBridge.java deleted file mode 100644 index f648d60f..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/EnchantmentContainerBridge.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.izzel.arclight.common.bridge.inventory.container; - -import net.minecraft.util.IWorldPosCallable; - -public interface EnchantmentContainerBridge extends ContainerBridge { - - IWorldPosCallable bridge$getContainerAccess(); -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/GrindstoneContainerBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/GrindstoneContainerBridge.java deleted file mode 100644 index 030f8e6c..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/GrindstoneContainerBridge.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.izzel.arclight.common.bridge.inventory.container; - -import net.minecraft.util.IWorldPosCallable; - -public interface GrindstoneContainerBridge extends ContainerBridge { - - IWorldPosCallable bridge$getContainerAccess(); -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/LoomContainerBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/LoomContainerBridge.java deleted file mode 100644 index 24a90e16..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/LoomContainerBridge.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.izzel.arclight.common.bridge.inventory.container; - -import net.minecraft.util.IWorldPosCallable; - -public interface LoomContainerBridge extends ContainerBridge { - - IWorldPosCallable bridge$getWorldPos(); -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/PosContainerBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/PosContainerBridge.java new file mode 100644 index 00000000..dbb7921e --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/PosContainerBridge.java @@ -0,0 +1,14 @@ +package io.izzel.arclight.common.bridge.inventory.container; + +import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; +import net.minecraft.util.IWorldPosCallable; +import org.bukkit.Location; + +public interface PosContainerBridge extends ContainerBridge { + + IWorldPosCallable bridge$getWorldPos(); + + default Location bridge$getWorldLocation() { + return ((IWorldPosCallableBridge) bridge$getWorldPos()).bridge$getLocation(); + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/WorkbenchContainerBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/WorkbenchContainerBridge.java deleted file mode 100644 index 19108e94..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/container/WorkbenchContainerBridge.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.izzel.arclight.common.bridge.inventory.container; - -import net.minecraft.util.IWorldPosCallable; - -public interface WorkbenchContainerBridge extends ContainerBridge { - - IWorldPosCallable bridge$getContainerAccess(); -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/CraftingInventoryMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/CraftingInventoryMixin.java index 4d45e678..f20fd868 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/CraftingInventoryMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/CraftingInventoryMixin.java @@ -3,13 +3,11 @@ package io.izzel.arclight.common.mixin.core.inventory; import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge; import io.izzel.arclight.common.bridge.inventory.CraftingInventoryBridge; import io.izzel.arclight.common.bridge.inventory.IInventoryBridge; -import io.izzel.arclight.common.bridge.inventory.container.WorkbenchContainerBridge; -import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.WorkbenchContainer; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.NonNullList; @@ -110,8 +108,8 @@ public abstract class CraftingInventoryMixin implements CraftingInventoryBridge, @Override public Location getLocation() { - return this.eventHandler instanceof WorkbenchContainer - ? ((IWorldPosCallableBridge) ((WorkbenchContainerBridge) eventHandler).bridge$getContainerAccess()).bridge$getLocation() + return this.eventHandler instanceof PosContainerBridge + ? ((PosContainerBridge) eventHandler).bridge$getWorldLocation() : ((PlayerEntityBridge) owner).bridge$getBukkitEntity().getLocation(); } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer1Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer1Mixin.java new file mode 100644 index 00000000..aa838760 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer1Mixin.java @@ -0,0 +1,19 @@ +package io.izzel.arclight.common.mixin.core.inventory.container; + +import io.izzel.arclight.common.bridge.inventory.IInventoryBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; +import net.minecraft.inventory.container.CartographyContainer; +import org.bukkit.Location; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(targets = "net/minecraft/inventory/container/CartographyContainer$1") +public abstract class CartographyContainer1Mixin implements IInventoryBridge { + + @Shadow(aliases = {"this$0", "field_213911_a"}, remap = false) private CartographyContainer outerThis; + + @Override + public Location getLocation() { + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer2Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer2Mixin.java index 30d1f514..e470504c 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer2Mixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainer2Mixin.java @@ -1,8 +1,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.inventory.IInventoryBridge; -import io.izzel.arclight.common.bridge.inventory.container.CartographyContainerBridge; -import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import net.minecraft.inventory.container.CartographyContainer; import org.bukkit.Location; import org.spongepowered.asm.mixin.Mixin; @@ -15,6 +14,6 @@ public abstract class CartographyContainer2Mixin implements IInventoryBridge { @Override public Location getLocation() { - return ((IWorldPosCallableBridge) ((CartographyContainerBridge) outerThis).bridge$getContainerAccess()).bridge$getLocation(); + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainerMixin.java index 8e398092..6f5ee4d3 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/CartographyContainerMixin.java @@ -1,7 +1,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.entity.player.ServerPlayerEntityBridge; -import io.izzel.arclight.common.bridge.inventory.container.CartographyContainerBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.CraftResultInventory; @@ -21,7 +21,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CartographyContainer.class) -public abstract class CartographyContainerMixin extends ContainerMixin implements CartographyContainerBridge { +public abstract class CartographyContainerMixin extends ContainerMixin implements PosContainerBridge { // @formatter:off @Shadow @Final private IWorldPosCallable worldPosCallable; @@ -54,7 +54,7 @@ public abstract class CartographyContainerMixin extends ContainerMixin implement } @Override - public IWorldPosCallable bridge$getContainerAccess() { + public IWorldPosCallable bridge$getWorldPos() { return this.worldPosCallable; } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainer1Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainer1Mixin.java index adc7f0e8..fd7b22ea 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainer1Mixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainer1Mixin.java @@ -1,7 +1,6 @@ package io.izzel.arclight.common.mixin.core.inventory.container; -import io.izzel.arclight.common.bridge.inventory.container.EnchantmentContainerBridge; -import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import io.izzel.arclight.common.mixin.core.inventory.InventoryMixin; import net.minecraft.inventory.container.EnchantmentContainer; import org.bukkit.Location; @@ -15,6 +14,6 @@ public abstract class EnchantmentContainer1Mixin extends InventoryMixin { @Override public Location getLocation() { - return ((IWorldPosCallableBridge) ((EnchantmentContainerBridge) outerThis).bridge$getContainerAccess()).bridge$getLocation(); + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainerMixin.java index b62b3e1c..810a6bde 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/EnchantmentContainerMixin.java @@ -2,7 +2,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge; import io.izzel.arclight.common.bridge.entity.player.ServerPlayerEntityBridge; -import io.izzel.arclight.common.bridge.inventory.container.EnchantmentContainerBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.enchantment.EnchantmentData; @@ -52,7 +52,7 @@ import java.util.Map; import java.util.Random; @Mixin(EnchantmentContainer.class) -public abstract class EnchantmentContainerMixin extends ContainerMixin implements EnchantmentContainerBridge { +public abstract class EnchantmentContainerMixin extends ContainerMixin implements PosContainerBridge { // @formatter:off @Shadow @Final private IInventory tableInventory; @@ -278,7 +278,7 @@ public abstract class EnchantmentContainerMixin extends ContainerMixin implement } @Override - public IWorldPosCallable bridge$getContainerAccess() { + public IWorldPosCallable bridge$getWorldPos() { return this.worldPosCallable; } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainer1Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainer1Mixin.java index 43af6806..c430dd0a 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainer1Mixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainer1Mixin.java @@ -1,12 +1,11 @@ package io.izzel.arclight.common.mixin.core.inventory.container; -import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import io.izzel.arclight.common.mixin.core.inventory.InventoryMixin; import net.minecraft.inventory.container.GrindstoneContainer; import org.bukkit.Location; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import io.izzel.arclight.common.bridge.inventory.container.GrindstoneContainerBridge; @Mixin(targets = "net/minecraft/inventory/container/GrindstoneContainer$1") public abstract class GrindstoneContainer1Mixin extends InventoryMixin { @@ -15,6 +14,6 @@ public abstract class GrindstoneContainer1Mixin extends InventoryMixin { @Override public Location getLocation() { - return ((IWorldPosCallableBridge) ((GrindstoneContainerBridge) outerThis).bridge$getContainerAccess()).bridge$getLocation(); + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainerMixin.java index ad60848d..1aae0a79 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/GrindstoneContainerMixin.java @@ -1,7 +1,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge; -import io.izzel.arclight.common.bridge.inventory.container.GrindstoneContainerBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.container.Container; @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(GrindstoneContainer.class) -public abstract class GrindstoneContainerMixin extends ContainerMixin implements GrindstoneContainerBridge { +public abstract class GrindstoneContainerMixin extends ContainerMixin implements PosContainerBridge { @Shadow @Final private IInventory inputInventory; @Shadow @Final private IInventory outputInventory; @@ -42,7 +42,7 @@ public abstract class GrindstoneContainerMixin extends ContainerMixin implements } @Override - public IWorldPosCallable bridge$getContainerAccess() { + public IWorldPosCallable bridge$getWorldPos() { return this.worldPosCallable; } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer1Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer1Mixin.java index 7cde55dc..187781fd 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer1Mixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer1Mixin.java @@ -1,12 +1,11 @@ package io.izzel.arclight.common.mixin.core.inventory.container; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; +import io.izzel.arclight.common.mixin.core.inventory.InventoryMixin; import net.minecraft.inventory.container.LoomContainer; import org.bukkit.Location; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import io.izzel.arclight.common.bridge.inventory.container.LoomContainerBridge; -import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; -import io.izzel.arclight.common.mixin.core.inventory.InventoryMixin; @Mixin(targets = "net/minecraft/inventory/container/LoomContainer$1") public abstract class LoomContainer1Mixin extends InventoryMixin { @@ -15,6 +14,6 @@ public abstract class LoomContainer1Mixin extends InventoryMixin { @Override public Location getLocation() { - return ((IWorldPosCallableBridge) ((LoomContainerBridge) outerThis).bridge$getWorldPos()).bridge$getLocation(); + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer2Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer2Mixin.java index 6d0baab0..64d0dcb1 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer2Mixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainer2Mixin.java @@ -1,12 +1,11 @@ package io.izzel.arclight.common.mixin.core.inventory.container; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; +import io.izzel.arclight.common.mixin.core.inventory.InventoryMixin; import net.minecraft.inventory.container.LoomContainer; import org.bukkit.Location; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import io.izzel.arclight.common.bridge.inventory.container.LoomContainerBridge; -import io.izzel.arclight.common.bridge.util.IWorldPosCallableBridge; -import io.izzel.arclight.common.mixin.core.inventory.InventoryMixin; @Mixin(targets = "net/minecraft/inventory/container/LoomContainer$2") public abstract class LoomContainer2Mixin extends InventoryMixin { @@ -15,6 +14,6 @@ public abstract class LoomContainer2Mixin extends InventoryMixin { @Override public Location getLocation() { - return ((IWorldPosCallableBridge) ((LoomContainerBridge) outerThis).bridge$getWorldPos()).bridge$getLocation(); + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainerMixin.java index dd89309b..0d4fe45c 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/LoomContainerMixin.java @@ -1,7 +1,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge; -import io.izzel.arclight.common.bridge.inventory.container.LoomContainerBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.IInventory; @@ -19,7 +19,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(LoomContainer.class) -public abstract class LoomContainerMixin extends ContainerMixin implements LoomContainerBridge { +public abstract class LoomContainerMixin extends ContainerMixin implements PosContainerBridge { // @formatter:off @Shadow @Final private IInventory inputInventory; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainer1Mixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainer1Mixin.java new file mode 100644 index 00000000..1d3cac1a --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainer1Mixin.java @@ -0,0 +1,19 @@ +package io.izzel.arclight.common.mixin.core.inventory.container; + +import io.izzel.arclight.common.bridge.inventory.IInventoryBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; +import net.minecraft.inventory.container.StonecutterContainer; +import org.bukkit.Location; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(targets = "net/minecraft/inventory/container/StonecutterContainer$1") +public abstract class StonecutterContainer1Mixin implements IInventoryBridge { + + @Shadow(aliases = {"this$0", "field_213915_a"}, remap = false) private StonecutterContainer outerThis; + + @Override + public Location getLocation() { + return ((PosContainerBridge) outerThis).bridge$getWorldLocation(); + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainerMixin.java index fadd8fa4..8ed07a2e 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/StonecutterContainerMixin.java @@ -1,6 +1,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.CraftResultInventory; import net.minecraft.inventory.IInventory; @@ -17,11 +18,12 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(StonecutterContainer.class) -public abstract class StonecutterContainerMixin extends ContainerMixin { +public abstract class StonecutterContainerMixin extends ContainerMixin implements PosContainerBridge { // @formatter:off @Shadow @Final public IInventory inputInventory; @Shadow @Final private CraftResultInventory inventory; + @Shadow @Final private IWorldPosCallable worldPosCallable; // @formatter:on private CraftInventoryView bukkitEntity = null; @@ -42,4 +44,9 @@ public abstract class StonecutterContainerMixin extends ContainerMixin { bukkitEntity = new CraftInventoryView(((PlayerEntityBridge) this.playerInventory.player).bridge$getBukkitEntity(), inventory, (Container) (Object) this); return bukkitEntity; } + + @Override + public IWorldPosCallable bridge$getWorldPos() { + return this.worldPosCallable; + } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/WorkbenchContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/WorkbenchContainerMixin.java index 8104e7e7..f8d0c3a7 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/WorkbenchContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/WorkbenchContainerMixin.java @@ -3,7 +3,7 @@ package io.izzel.arclight.common.mixin.core.inventory.container; import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge; import io.izzel.arclight.common.bridge.inventory.CraftingInventoryBridge; import io.izzel.arclight.common.bridge.inventory.container.ContainerBridge; -import io.izzel.arclight.common.bridge.inventory.container.WorkbenchContainerBridge; +import io.izzel.arclight.common.bridge.inventory.container.PosContainerBridge; import io.izzel.arclight.common.mod.util.ArclightCaptures; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; @@ -37,12 +37,12 @@ import java.util.Optional; // todo 实现 @Mixin(WorkbenchContainer.class) -public abstract class WorkbenchContainerMixin extends ContainerMixin implements WorkbenchContainerBridge { +public abstract class WorkbenchContainerMixin extends ContainerMixin implements PosContainerBridge { // @formatter:off @Mutable @Shadow @Final private CraftingInventory craftMatrix; @Shadow @Final private CraftResultInventory craftResult; - @Accessor("worldPosCallable") public abstract IWorldPosCallable bridge$getContainerAccess(); + @Accessor("worldPosCallable") public abstract IWorldPosCallable bridge$getWorldPos(); // @formatter:on private CraftInventoryView bukkitEntity; @@ -60,7 +60,7 @@ public abstract class WorkbenchContainerMixin extends ContainerMixin implements @Inject(method = "onCraftMatrixChanged", at = @At("HEAD")) public void arclight$capture(IInventory inventoryIn, CallbackInfo ci) { - ArclightCaptures.captureWorkbenchContainer((Container) (Object) this); + ArclightCaptures.captureWorkbenchContainer((WorkbenchContainer) (Object) this); } /** diff --git a/arclight-common/src/main/resources/mixins.arclight.core.json b/arclight-common/src/main/resources/mixins.arclight.core.json index 8b126dad..2f7f53b6 100644 --- a/arclight-common/src/main/resources/mixins.arclight.core.json +++ b/arclight-common/src/main/resources/mixins.arclight.core.json @@ -266,6 +266,7 @@ "inventory.container.AbstractRepairContainerMixin", "inventory.container.BeaconContainerMixin", "inventory.container.BrewingStandContainerMixin", + "inventory.container.CartographyContainer1Mixin", "inventory.container.CartographyContainer2Mixin", "inventory.container.CartographyContainerMixin", "inventory.container.ChestContainerMixin", @@ -289,6 +290,7 @@ "inventory.container.ShulkerBoxContainerMixin", "inventory.container.SlotMixin", "inventory.container.SmithingTableContainerMixin", + "inventory.container.StonecutterContainer1Mixin", "inventory.container.StonecutterContainerMixin", "inventory.container.WorkbenchContainerMixin", "item.ArmorStandItemMixin",