Fix compile errors with 1.12.2.

This commit is contained in:
Acuadragon100
2026-05-15 15:16:16 +02:00
parent 536389af0b
commit 2dc38622e2
10 changed files with 74 additions and 62 deletions
@@ -77,43 +77,6 @@ public class CleanroomClientProxy implements AbstractModInitializer.IEventProxy
} }
//==============//
// world events //
//==============//
@SubscribeEvent
public void clientLevelLoadEvent(WorldEvent.Load event)
{
LOGGER.info("level load");
World level = event.getWorld();
if (!(level instanceof WorldClient clientLevel))
{
return;
}
IClientLevelWrapper clientLevelWrapper = ClientLevelWrapper.getWrapper(clientLevel, true);
ClientApi.INSTANCE.clientLevelLoadEvent(clientLevelWrapper);
}
@SubscribeEvent
public void clientLevelUnloadEvent(WorldEvent.Unload event)
{
LOGGER.info("level unload");
World level = event.getWorld();
if (!(level instanceof WorldClient clientLevel))
{
return;
}
IClientLevelWrapper clientLevelWrapper = ClientLevelWrapper.getWrapper(clientLevel);
ClientApi.INSTANCE.clientLevelUnloadEvent(clientLevelWrapper);
}
//==============// //==============//
// chunk events // // chunk events //
//==============// //==============//
@@ -26,7 +26,6 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
@@ -61,9 +60,8 @@ public class MixinEntityRenderer
return; return;
} }
IClientLevelWrapper clientLevel = mc.getWrappedClientLevel();
MinecraftRenderWrapper renderWrapper = (MinecraftRenderWrapper)SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class); MinecraftRenderWrapper renderWrapper = (MinecraftRenderWrapper)SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
renderWrapper.setLightmapId(lightmapTexture.getGlTextureId(), clientLevel); renderWrapper.setLightmapId(lightmapTexture.getGlTextureId());
} }
@Inject(at = @At("RETURN"), method = "setupFog") @Inject(at = @At("RETURN"), method = "setupFog")
@@ -1,5 +1,6 @@
package com.seibel.distanthorizons.common.commonMixins; package com.seibel.distanthorizons.common.commonMixins;
#if MC_VER > MC_1_12_2
import com.seibel.distanthorizons.common.wrappers.modAccessor.ImmersivePortalsAccessorCommon; import com.seibel.distanthorizons.common.wrappers.modAccessor.ImmersivePortalsAccessorCommon;
import com.seibel.distanthorizons.core.pos.DhChunkPos; import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos;
@@ -36,3 +37,4 @@ public class MixinImmersivePortalsRenderStatesCommon
} }
} }
#endif
@@ -10,7 +10,6 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRen
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
#if MC_VER <= MC_1_12_2 #if MC_VER <= MC_1_12_2
#else #else
@@ -9,6 +9,7 @@ import net.minecraft.client.multiplayer.WorldClient;
#else #else
import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.ClientLevel;
#endif #endif
import net.minecraft.client.Minecraft;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.Collections; import java.util.Collections;
@@ -33,7 +34,7 @@ public class KeyedClientLevelManager implements IKeyedClientLevelManager
private final Map<String, KeyInfo> keysByDimensionName = new ConcurrentHashMap<>(); private final Map<String, KeyInfo> keysByDimensionName = new ConcurrentHashMap<>();
/** Cache for already keyed level wrappers to maintain object identity. */ /** Cache for already keyed level wrappers to maintain object identity. */
private final Map<ClientLevel, IServerKeyedClientLevel> keyedLevelsCache = Collections.synchronizedMap(new WeakHashMap<>()); private final Map<#if MC_VER > MC_1_12_2 ClientLevel #else WorldClient #endif, IServerKeyedClientLevel> keyedLevelsCache = Collections.synchronizedMap(new WeakHashMap<>());
/** Allows to keep level manager enabled between loading different keyed levels */ /** Allows to keep level manager enabled between loading different keyed levels */
private volatile boolean enabled = false; private volatile boolean enabled = false;
@@ -61,11 +62,15 @@ public class KeyedClientLevelManager implements IKeyedClientLevelManager
@Nullable @Nullable
public IServerKeyedClientLevel getServerKeyedLevel() public IServerKeyedClientLevel getServerKeyedLevel()
{ {
#if MC_VER > MC_1_12_2
return this.getServerKeyedLevel(Minecraft.getInstance().level); return this.getServerKeyedLevel(Minecraft.getInstance().level);
#else
return this.getServerKeyedLevel(Minecraft.getMinecraft().world);
#endif
} }
@Nullable @Nullable
public IServerKeyedClientLevel getServerKeyedLevel(@Nullable ClientLevel level) public IServerKeyedClientLevel getServerKeyedLevel(@Nullable #if MC_VER > MC_1_12_2 ClientLevel #else WorldClient #endif level)
{ {
if (level == null) if (level == null)
{ {
@@ -131,7 +136,9 @@ public class KeyedClientLevelManager implements IKeyedClientLevelManager
synchronized (this.keyedLevelsCache) synchronized (this.keyedLevelsCache)
{ {
this.keyedLevelsCache.keySet().removeIf(level -> { this.keyedLevelsCache.keySet().removeIf(level -> {
#if MC_VER <= MC_1_21_10 #if MC_VER <= MC_1_12_2
String levelDim = level.provider.getDimensionType().getName();
#elif MC_VER <= MC_1_21_10
String levelDim = level.dimension().location().toString(); String levelDim = level.dimension().location().toString();
#else #else
String levelDim = level.dimension().identifier().toString(); String levelDim = level.dimension().identifier().toString();
@@ -142,7 +149,7 @@ public class KeyedClientLevelManager implements IKeyedClientLevelManager
// 4. Return the keyed wrapper for whatever level the core passed us, // 4. Return the keyed wrapper for whatever level the core passed us,
// but only if it matches the dimension we just keyed. // but only if it matches the dimension we just keyed.
return this.getServerKeyedLevel((ClientLevel) clientLevel.getWrappedMcObject()); return this.getServerKeyedLevel((#if MC_VER > MC_1_12_2 ClientLevel #else WorldClient #endif) clientLevel.getWrappedMcObject());
} }
@Override @Override
@@ -20,6 +20,7 @@
package com.seibel.distanthorizons.common.wrappers.minecraft; package com.seibel.distanthorizons.common.wrappers.minecraft;
import java.io.File; import java.io.File;
import java.util.Arrays;
#if MC_VER > MC_1_12_2 #if MC_VER > MC_1_12_2
import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.platform.Window;
@@ -52,6 +53,9 @@ import net.minecraft.profiler.Profiler;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.DimensionType;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.DimensionManager;
#else #else
import net.minecraft.CrashReport; import net.minecraft.CrashReport;
import net.minecraft.client.CloudStatus; import net.minecraft.client.CloudStatus;
@@ -62,9 +66,9 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.util.profiling.ProfilerFiller;
import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.Level;
#endif #endif
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
#if MC_VER < MC_1_19_2 && MC_VER > MC_1_12_2 #if MC_VER < MC_1_19_2 && MC_VER > MC_1_12_2
@@ -81,7 +85,9 @@ import net.minecraft.client.GraphicsStatus;
#else #else
#endif #endif
#if MC_VER <= MC_1_21_10 #if MC_VER <= MC_1_12_2
import net.minecraft.util.ResourceLocation;
#elif MC_VER <= MC_1_21_10
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
#else #else
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
@@ -89,7 +95,7 @@ import net.minecraft.resources.Identifier;
#if MC_VER > MC_1_19_2 #if MC_VER > MC_1_19_2
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
#else #elif MC_VER > MC_1_12_2
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
#endif #endif
@@ -628,7 +634,12 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
public IServerLevelWrapper getWrappedServerLevel(String levelKey) public IServerLevelWrapper getWrappedServerLevel(String levelKey)
{ {
if (!hasSinglePlayerServer()) return null; if (!hasSinglePlayerServer()) return null;
#if MC_VER <= MC_1_21_10 #if MC_VER <= MC_1_12_2
DimensionType levelID = null;
try {
levelID = DimensionType.byName(levelKey);
} catch (IllegalArgumentException ignored) {}
#elif MC_VER <= MC_1_21_10
ResourceLocation levelID = ResourceLocation.tryParse(levelKey); ResourceLocation levelID = ResourceLocation.tryParse(levelKey);
#else #else
Identifier levelID = Identifier.tryParse(levelKey); Identifier levelID = Identifier.tryParse(levelKey);
@@ -637,11 +648,17 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
#if MC_VER > MC_1_19_2 #if MC_VER > MC_1_19_2
ResourceKey<Level> resourceKey = ResourceKey.create(Registries.DIMENSION, levelID); ResourceKey<Level> resourceKey = ResourceKey.create(Registries.DIMENSION, levelID);
#else #elif MC_VER > MC_1_12_2
ResourceKey<Level> resourceKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, levelID); ResourceKey<Level> resourceKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, levelID);
#else
int dimensionID = Arrays.stream(DimensionManager.getDimensions(levelID)).findFirst().orElse(0); //TODO Maybe 1.12 should use the dimension number as the level key instead?
#endif #endif
#if MC_VER <= MC_1_12_2
WorldServer level = MINECRAFT.getIntegratedServer().getWorld(dimensionID);
#else
ServerLevel level = MINECRAFT.getSingleplayerServer().getLevel(resourceKey); ServerLevel level = MINECRAFT.getSingleplayerServer().getLevel(resourceKey);
#endif
return ServerLevelWrapper.getWrapper(level); return ServerLevelWrapper.getWrapper(level);
} }
@@ -3,13 +3,21 @@ package com.seibel.distanthorizons.common.wrappers.minecraft;
import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper; import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.server.dedicated.DedicatedServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
#if MC_VER <= MC_1_21_10 #if MC_VER > MC_1_12_2
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
#else
import net.minecraft.world.DimensionType;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.DimensionManager;
#endif
#if MC_VER <= MC_1_12_2
#elif MC_VER <= MC_1_21_10
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
#else #else
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
@@ -17,11 +25,12 @@ import net.minecraft.resources.Identifier;
#if MC_VER > MC_1_19_2 #if MC_VER > MC_1_19_2
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
#else #elif MC_VER > MC_1_12_2
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
#endif #endif
import java.io.File; import java.io.File;
import java.util.Arrays;
public class MinecraftServerWrapper implements IMinecraftSharedWrapper public class MinecraftServerWrapper implements IMinecraftSharedWrapper
{ {
@@ -85,7 +94,12 @@ public class MinecraftServerWrapper implements IMinecraftSharedWrapper
@Override @Override
public IServerLevelWrapper getWrappedServerLevel(String levelKey) public IServerLevelWrapper getWrappedServerLevel(String levelKey)
{ {
#if MC_VER <= MC_1_21_10 #if MC_VER <= MC_1_12_2
DimensionType levelID = null;
try {
levelID = DimensionType.byName(levelKey);
} catch (IllegalArgumentException e) {}
#elif MC_VER <= MC_1_21_10
ResourceLocation levelID = ResourceLocation.tryParse(levelKey); ResourceLocation levelID = ResourceLocation.tryParse(levelKey);
#else #else
Identifier levelID = Identifier.tryParse(levelKey); Identifier levelID = Identifier.tryParse(levelKey);
@@ -94,11 +108,17 @@ public class MinecraftServerWrapper implements IMinecraftSharedWrapper
#if MC_VER > MC_1_19_2 #if MC_VER > MC_1_19_2
ResourceKey<Level> resourceKey = ResourceKey.create(Registries.DIMENSION, levelID); ResourceKey<Level> resourceKey = ResourceKey.create(Registries.DIMENSION, levelID);
#else #elif MC_VER > MC_1_12_2
ResourceKey<Level> resourceKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, levelID); ResourceKey<Level> resourceKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, levelID);
#else
int dimensionID = Arrays.stream(DimensionManager.getDimensions(levelID)).findFirst().orElse(0);
#endif #endif
#if MC_VER > MC_1_12_2
ServerLevel level = dedicatedServer.getLevel(resourceKey); ServerLevel level = dedicatedServer.getLevel(resourceKey);
#else
WorldServer level = dedicatedServer.getWorld(dimensionID);
#endif
return ServerLevelWrapper.getWrapper(level); return ServerLevelWrapper.getWrapper(level);
} }
@@ -18,7 +18,7 @@
*/ */
package com.seibel.distanthorizons.common.wrappers.modAccessor; package com.seibel.distanthorizons.common.wrappers.modAccessor;
#if MC_VER > MC_1_12_2
import com.google.common.base.Suppliers; import com.google.common.base.Suppliers;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
@@ -131,3 +131,5 @@ public abstract class ImmersivePortalsAccessorCommon extends ImmersivePortalsAbs
} }
} }
#endif
@@ -152,9 +152,13 @@ public class ClientLevelWrapper implements IClientLevelWrapper
} }
} }
private static #if MC_VER > MC_1_12_2 ClientLevel #else WorldClient #endif clientLevel() {
return #if MC_VER > MC_1_12_2 MINECRAFT.level #else MINECRAFT.world #endif;
}
public static void tickCleanup() public static void tickCleanup()
{ {
if (MINECRAFT.level == null) if (clientLevel() == null)
{ {
return; return;
} }
@@ -169,7 +173,7 @@ public class ClientLevelWrapper implements IClientLevelWrapper
{ {
ClientLevelWrapper wrapper = ref.get(); ClientLevelWrapper wrapper = ref.get();
if (wrapper != null if (wrapper != null
&& wrapper.level != MINECRAFT.level) && wrapper.level != clientLevel())
{ {
// We use the synchronized getter to prevent race conditions with markAccessed() // We use the synchronized getter to prevent race conditions with markAccessed()
if (currentTime - wrapper.getLastAccessTime() > timeout) if (currentTime - wrapper.getLastAccessTime() > timeout)
@@ -186,7 +190,7 @@ public class ClientLevelWrapper implements IClientLevelWrapper
// to ensure atomicity with respect to markAccessed() // to ensure atomicity with respect to markAccessed()
synchronized(wrapper) synchronized(wrapper)
{ {
if (wrapper.level != MINECRAFT.level if (wrapper.level != clientLevel()
&& currentTime - wrapper.getLastAccessTime() > timeout) && currentTime - wrapper.getLastAccessTime() > timeout)
{ {
LOGGER.debug("Unloading level [" + wrapper.getDhIdentifier() + "] due to inactivity"); LOGGER.debug("Unloading level [" + wrapper.getDhIdentifier() + "] due to inactivity");