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;
|
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.ArclightModChestedHorse;
|
||||||
import io.izzel.arclight.common.mod.server.entity.ArclightModEntity;
|
import io.izzel.arclight.common.mod.server.entity.ArclightModEntity;
|
||||||
import io.izzel.arclight.common.mod.server.entity.ArclightModHorse;
|
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.AbstractChestedHorseEntity;
|
||||||
import net.minecraft.entity.passive.horse.AbstractHorseEntity;
|
import net.minecraft.entity.passive.horse.AbstractHorseEntity;
|
||||||
import net.minecraft.entity.projectile.ProjectileEntity;
|
import net.minecraft.entity.projectile.ProjectileEntity;
|
||||||
|
import net.minecraftforge.common.util.FakePlayer;
|
||||||
import org.bukkit.craftbukkit.v.CraftServer;
|
import org.bukkit.craftbukkit.v.CraftServer;
|
||||||
import org.bukkit.craftbukkit.v.entity.CraftAgeable;
|
import org.bukkit.craftbukkit.v.entity.CraftAgeable;
|
||||||
import org.bukkit.craftbukkit.v.entity.CraftEntity;
|
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)
|
@Mixin(value = CraftEntity.class, remap = false)
|
||||||
public class CraftEntityMixin {
|
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"))
|
@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) {
|
private static void arclight$modEntity(CraftServer server, Entity entity, CallbackInfoReturnable<CraftEntity> cir) {
|
||||||
if (entity instanceof LivingEntity) {
|
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