Skip to content

Commit

Permalink
Fix mixin conflict with SinytraConnector (#1155)
Browse files Browse the repository at this point in the history
  • Loading branch information
IzzelAliz committed Mar 2, 2024
1 parent 08ff605 commit 67c4e7b
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,10 @@
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;
Expand Down Expand Up @@ -340,20 +341,29 @@ private void executeModerately() {
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;
if (((CraftServer) Bukkit.getServer()).scoreboardManager == null) {
((CraftServer) Bukkit.getServer()).scoreboardManager = new CraftScoreboardManager((MinecraftServer) (Object) this, serverWorld.getScoreboard());
}
if (((WorldBridge) serverWorld).bridge$getGenerator() != null) {
((WorldBridge) serverWorld).bridge$getWorld().getPopulators().addAll(
((WorldBridge) serverWorld).bridge$getGenerator().getDefaultPopulators(
((WorldBridge) serverWorld).bridge$getWorld()));
@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());
}
if (((WorldBridge) serverWorld).bridge$getGenerator() != null) {
((WorldBridge) serverWorld).bridge$getWorld().getPopulators().addAll(
((WorldBridge) serverWorld).bridge$getGenerator().getDefaultPopulators(
((WorldBridge) serverWorld).bridge$getWorld()));
}
Bukkit.getPluginManager().callEvent(new WorldInitEvent(((WorldBridge) serverWorld).bridge$getWorld()));
}
Bukkit.getPluginManager().callEvent(new WorldInitEvent(((WorldBridge) serverWorld).bridge$getWorld()));
return ret;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -905,7 +905,7 @@ public Entity changeDimension(ServerLevel server, net.minecraftforge.common.util
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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ public boolean hurt(DamageSource source, float amount) {
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,7 @@ public int nextContainerCounter() {
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) {
}

Expand Down

0 comments on commit 67c4e7b

Please sign in to comment.