Better fake player compatibility (#80)
This commit is contained in:
parent
33b0e468ab
commit
36f8c76dc6
@ -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<CraftEntity> 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<CraftEntity> cir) {
|
||||
if (entity instanceof LivingEntity) {
|
||||
|
||||
@ -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) {
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user