Skip to content

Commit dc72f2a

Browse files
authored
Merge pull request #185 from jchung01/alfheim-compat
Properly handle lighting engine for Alfheim v1.6+
2 parents f5beed4 + 1bcc7c3 commit dc72f2a

File tree

3 files changed

+14
-22
lines changed

3 files changed

+14
-22
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dev.redstudio.alfheim.lighting;
2+
3+
// stub class for Alfheim v1.6+
4+
public class LightingEngine {
5+
}

src/main/java/com/cleanroommc/client/util/TrackedDummyWorld.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.cleanroommc.client.util;
22

33
import com.cleanroommc.client.util.world.DummyWorld;
4-
import hellfirepvp.modularmachinery.ModularMachinery;
54
import net.minecraft.block.state.IBlockState;
65
import net.minecraft.init.Blocks;
76
import net.minecraft.tileentity.TileEntity;
@@ -12,11 +11,9 @@
1211

1312
import javax.annotation.Nonnull;
1413
import javax.vecmath.Vector3f;
15-
import java.lang.reflect.Field;
1614
import java.util.HashSet;
1715
import java.util.Map;
1816
import java.util.Set;
19-
import java.util.concurrent.atomic.AtomicReference;
2017
import java.util.function.BiFunction;
2118
import java.util.function.Predicate;
2219

@@ -40,26 +37,10 @@ public class TrackedDummyWorld extends DummyWorld {
4037

4138
public TrackedDummyWorld() {
4239
proxyWorld = null;
43-
initAlfheimLightingEngine();
4440
}
4541

4642
public TrackedDummyWorld(World world) {
4743
proxyWorld = world;
48-
initAlfheimLightingEngine();
49-
}
50-
51-
private void initAlfheimLightingEngine() {
52-
try {
53-
Field lightingEngineField = World.class.getDeclaredField("alfheim$lightingEngine");
54-
lightingEngineField.setAccessible(true);
55-
56-
if (lightingEngineField.get(this) == null) {
57-
lightingEngineField.set(this, new AtomicReference<>());
58-
}
59-
} catch (NoSuchFieldException ignored) {
60-
} catch (IllegalAccessException e) {
61-
ModularMachinery.log.error("Failed to initialize Alfheim lighting engine: ", e);
62-
}
6344
}
6445

6546
public void setRenderFilter(Predicate<BlockPos> renderFilter) {
@@ -141,4 +122,4 @@ public Vector3f getMinPos() {
141122
public Vector3f getMaxPos() {
142123
return maxPos;
143124
}
144-
}
125+
}

src/main/java/com/cleanroommc/client/util/world/DummyWorld.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cleanroommc.client.util.world;
22

3+
import dev.redstudio.alfheim.lighting.LightingEngine;
34
import hellfirepvp.modularmachinery.ModularMachinery;
45
import hellfirepvp.modularmachinery.common.base.Mods;
56
import net.minecraft.block.Block;
@@ -27,7 +28,6 @@ public class DummyWorld extends World {
2728

2829
private static final WorldSettings DEFAULT_SETTINGS = new WorldSettings(1L, GameType.SURVIVAL, true, false, WorldType.DEFAULT);
2930

30-
@SuppressWarnings("deprecation")
3131
public DummyWorld() {
3232
super(new DummySaveHandler(), new WorldInfo(DEFAULT_SETTINGS, "DummyServer"), new WorldProviderSurface(), new Profiler(), true);
3333
// Guarantee the dimension ID was not reset by the provider
@@ -117,13 +117,19 @@ public World init() {
117117

118118
@Override
119119
@Optional.Method(modid = "alfheim")
120-
public int getLightFromNeighborsFor(EnumSkyBlock type, BlockPos pos) {
120+
public int getLightFromNeighborsFor(@Nonnull EnumSkyBlock type, @Nonnull BlockPos pos) {
121121
return 15;
122122
}
123123

124+
@SuppressWarnings("unused")
124125
@Optional.Method(modid = "alfheim")
125126
public int alfheim$getLight(BlockPos pos, boolean checkNeighbors) {
126127
return 15;
127128
}
128129

130+
@SuppressWarnings("unused")
131+
@Optional.Method(modid = "alfheim")
132+
public LightingEngine getAlfheim$lightingEngine() {
133+
return null;
134+
}
129135
}

0 commit comments

Comments
 (0)