Fix container owner NPE (#808)

This commit is contained in:
IzzelAliz 2022-11-07 19:04:07 +08:00
parent 50b2acdf17
commit bdc85d3846
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338

View File

@ -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<InventoryView> cir) {
ArclightCaptures.captureContainerOwner(this.getHandle());
}
@Inject(method = "getOpenInventory", at = @At("RETURN"))
private void arclight$resetPlayer(CallbackInfoReturnable<InventoryView> cir) {
ArclightCaptures.resetContainerOwner();
}
@Override
public void setHandle(Entity entity) {
super.setHandle(entity);