diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftHumanEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftHumanEntityMixin.java index 25020337..c9e8e672 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftHumanEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftHumanEntityMixin.java @@ -1,6 +1,7 @@ package io.izzel.arclight.common.mixin.bukkit; import io.izzel.arclight.common.mod.server.ArclightForgePermissible; +import io.izzel.arclight.common.mod.util.ArclightCaptures; import io.izzel.arclight.i18n.ArclightConfig; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; @@ -8,18 +9,22 @@ import org.bukkit.craftbukkit.v.CraftServer; import org.bukkit.craftbukkit.v.entity.CraftEntity; import org.bukkit.craftbukkit.v.entity.CraftHumanEntity; import org.bukkit.craftbukkit.v.inventory.CraftInventoryPlayer; +import org.bukkit.inventory.InventoryView; import org.bukkit.permissions.PermissibleBase; import org.bukkit.permissions.ServerOperator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = CraftHumanEntity.class, remap = false) public abstract class CraftHumanEntityMixin extends CraftEntity { // @formatter:off @Shadow private CraftInventoryPlayer inventory; + @Shadow public abstract Player getHandle(); // @formatter:on public CraftHumanEntityMixin(CraftServer server, Entity entity) { @@ -35,6 +40,16 @@ public abstract class CraftHumanEntityMixin extends CraftEntity { } } + @Inject(method = "getOpenInventory", at = @At("HEAD")) + private void arclight$capturePlayer(CallbackInfoReturnable cir) { + ArclightCaptures.captureContainerOwner(this.getHandle()); + } + + @Inject(method = "getOpenInventory", at = @At("RETURN")) + private void arclight$resetPlayer(CallbackInfoReturnable cir) { + ArclightCaptures.resetContainerOwner(); + } + @Override public void setHandle(Entity entity) { super.setHandle(entity);