diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java index eea43417..79e031d0 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java @@ -1,5 +1,6 @@ package io.izzel.arclight.common.mixin.bukkit; +import io.izzel.arclight.common.mod.server.entity.ArclightFakePlayer; import io.izzel.arclight.common.mod.server.entity.ArclightModChestedHorse; import io.izzel.arclight.common.mod.server.entity.ArclightModEntity; import io.izzel.arclight.common.mod.server.entity.ArclightModHorse; @@ -24,6 +25,7 @@ import net.minecraft.entity.passive.TameableEntity; import net.minecraft.entity.passive.horse.AbstractChestedHorseEntity; import net.minecraft.entity.passive.horse.AbstractHorseEntity; import net.minecraft.entity.projectile.ProjectileEntity; +import net.minecraftforge.common.util.FakePlayer; import org.bukkit.craftbukkit.v.CraftServer; import org.bukkit.craftbukkit.v.entity.CraftAgeable; import org.bukkit.craftbukkit.v.entity.CraftEntity; @@ -38,6 +40,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = CraftEntity.class, remap = false) public class CraftEntityMixin { + @Inject(method = "getEntity", cancellable = true, at = @At("HEAD")) + private static void arclight$fakePlayer(CraftServer server, Entity entity, CallbackInfoReturnable cir) { + if (entity instanceof FakePlayer) { + cir.setReturnValue(new ArclightFakePlayer(server, (FakePlayer) entity)); + } + } + @Inject(method = "getEntity", cancellable = true, at = @At(value = "NEW", target = "java/lang/AssertionError")) private static void arclight$modEntity(CraftServer server, Entity entity, CallbackInfoReturnable cir) { if (entity instanceof LivingEntity) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightFakePlayer.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightFakePlayer.java new file mode 100644 index 00000000..8032c0a3 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightFakePlayer.java @@ -0,0 +1,21 @@ +package io.izzel.arclight.common.mod.server.entity; + +import net.minecraft.entity.player.ServerPlayerEntity; +import org.bukkit.craftbukkit.v.CraftServer; +import org.bukkit.craftbukkit.v.entity.CraftPlayer; + +public class ArclightFakePlayer extends CraftPlayer { + + public ArclightFakePlayer(CraftServer server, ServerPlayerEntity entity) { + super(server, entity); + } + + @Override + public boolean isOp() { + return this.getHandle().getGameProfile().getId() != null && super.isOp(); + } + + @Override + public void setOp(boolean value) { + } +}