Fix mixin conflict with SinytraConnector (#1155)
This commit is contained in:
parent
08ff605a23
commit
67c4e7b8e6
|
@ -73,9 +73,10 @@ import org.spongepowered.asm.mixin.Final;
|
|||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
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.ModifyArg;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
@ -340,10 +341,19 @@ public abstract class MinecraftServerMixin extends ReentrantBlockableEventLoop<T
|
|||
BukkitRegistry.registerEnvironments(this.registryAccess().registryOrThrow(Registries.LEVEL_STEM));
|
||||
}
|
||||
|
||||
@Redirect(method = "createLevels", at = @At(value = "INVOKE", remap = false, target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"))
|
||||
private Object arclight$worldInit(Map<Object, Object> map, Object key, Object value) {
|
||||
Object ret = map.put(key, value);
|
||||
ServerLevel serverWorld = (ServerLevel) value;
|
||||
@Unique private transient ServerLevel arclight$capturedLevel;
|
||||
|
||||
@ModifyArg(method = "createLevels", index = 1, at = @At(value = "INVOKE", remap = false, target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"))
|
||||
private Object arclight$worldInitCapture(Object value) {
|
||||
arclight$capturedLevel = (ServerLevel) value;
|
||||
return value;
|
||||
}
|
||||
|
||||
@Inject(method = "createLevels", at = @At(value = "INVOKE", remap = false, target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"))
|
||||
private void arclight$worldInit(ChunkProgressListener chunkProgressListener, CallbackInfo ci) {
|
||||
ServerLevel serverWorld = arclight$capturedLevel;
|
||||
arclight$capturedLevel = null;
|
||||
if (serverWorld != null) {
|
||||
if (((CraftServer) Bukkit.getServer()).scoreboardManager == null) {
|
||||
((CraftServer) Bukkit.getServer()).scoreboardManager = new CraftScoreboardManager((MinecraftServer) (Object) this, serverWorld.getScoreboard());
|
||||
}
|
||||
|
@ -353,7 +363,7 @@ public abstract class MinecraftServerMixin extends ReentrantBlockableEventLoop<T
|
|||
((WorldBridge) serverWorld).bridge$getWorld()));
|
||||
}
|
||||
Bukkit.getPluginManager().callEvent(new WorldInitEvent(((WorldBridge) serverWorld).bridge$getWorld()));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -905,7 +905,7 @@ public abstract class EntityMixin implements InternalEntityBridge, EntityBridge,
|
|||
entity.moveTo(portalinfo.pos.x, portalinfo.pos.y, portalinfo.pos.z, portalinfo.yRot, entity.getXRot());
|
||||
entity.setDeltaMovement(portalinfo.speed);
|
||||
world.addDuringTeleport(entity);
|
||||
if (((WorldBridge) world).bridge$getTypeKey() == LevelStem.END) {
|
||||
if (((WorldBridge) world).bridge$getTypeKey() == LevelStem.END && Level.END != null /* fabric dimensions v1 */) {
|
||||
ArclightCaptures.captureEndPortalEntity((Entity) (Object) this, spawnPortal);
|
||||
ServerLevel.makeObsidianPlatform(world);
|
||||
}
|
||||
|
|
|
@ -517,7 +517,7 @@ public abstract class LivingEntityMixin extends EntityMixin implements LivingEnt
|
|||
return false;
|
||||
} else if (this.level().isClientSide) {
|
||||
return false;
|
||||
} else if (this.dead || this.isRemoved() || this.getHealth() <= 0.0F) {
|
||||
} else if (this.dead || this.isRemoved() || this.isDeadOrDying()) {
|
||||
return false;
|
||||
} else if (source.is(DamageTypeTags.IS_FIRE) && this.hasEffect(MobEffects.FIRE_RESISTANCE)) {
|
||||
return false;
|
||||
|
|
|
@ -725,7 +725,7 @@ public abstract class ServerPlayerMixin extends PlayerMixin implements ServerPla
|
|||
return this.containerCounter;
|
||||
}
|
||||
|
||||
@Redirect(method = "openMenu", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;closeContainer()V"))
|
||||
@Redirect(method = "openMenu", require = 0, at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;closeContainer()V"))
|
||||
private void arclight$skipSwitch(ServerPlayer serverPlayer) {
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user