Skip to content

Commit d04ad64

Browse files
committed
better dynlights
1 parent 0d5ef9b commit d04ad64

15 files changed

Lines changed: 203 additions & 337 deletions

File tree

build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ dependencies {
108108
compileOnly(deobfCurse("automagy-222153:2285272"))
109109
// NTM 1.0.27_X5027
110110
compileOnly(deobfCurse("hbm-ntm-235439:5534354"))
111+
// Xaero's Minimap v21.10.43
112+
devOnlyNonPublishable(deobfCurse("xaeros_minimap-263420:5772981"))
113+
// Xaero's World Map 1.14.1.32
114+
devOnlyNonPublishable(deobfCurse("xaerosworldmap-317780:5658209"))
111115

112116
compileOnly("codechicken:codechickencore-mc1.7.10:1.4.0-mega:dev")
113117
}

src/main/java/com/falsepattern/falsetweaks/Compat.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ public static boolean optiFineInstalled() {
7777
return OPTIFINE;
7878
}
7979

80+
public static boolean dynamicLightsPresent() {
81+
return ModuleConfig.DYNAMIC_LIGHTS || optiFineHasDynamicLights();
82+
}
83+
8084
public static boolean optiFineHasDynamicLights() {
8185
if (!optiFineInstalled()) {
8286
return false;

src/main/java/com/falsepattern/falsetweaks/api/dynlights/DynamicLightsDriver.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
@StableAPI(since = "__EXPERIMENTAL__")
1111
public interface DynamicLightsDriver {
12+
@StableAPI.Expose
13+
DynamicLightsDriver forWorldMesh();
1214
@StableAPI.Expose
1315
boolean enabled();
1416
@StableAPI.Expose
@@ -22,19 +24,9 @@ public interface DynamicLightsDriver {
2224
@StableAPI.Expose
2325
int getCombinedLight(Entity entity, int combinedLight);
2426
@StableAPI.Expose
25-
int getCombinedLight(double lightPlayer, int combinedLight);
26-
@StableAPI.Expose
27-
double getLightLevel(int x, int y, int z);
28-
@StableAPI.Expose
29-
int getLightLevel(ItemStack itemStack);
30-
@StableAPI.Expose
31-
int getLightLevel(Entity entity);
32-
@StableAPI.Expose
3327
void removeLights(RenderGlobal renderGlobal);
3428
@StableAPI.Expose
3529
void clear();
3630
@StableAPI.Expose
3731
int getCount();
38-
@StableAPI.Expose
39-
ItemStack getItemStack(EntityItem entityItem);
4032
}

src/main/java/com/falsepattern/falsetweaks/api/dynlights/FTDynamicLights.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ public static boolean isDynamicLightsFast() {
2626
}
2727

2828
@StableAPI.Expose
29-
public static boolean isDynamicHandLight() {
30-
return DynamicLightsDrivers.isDynamicHandLight();
29+
public static boolean isDynamicHandLight(boolean forWorld) {
30+
return DynamicLightsDrivers.isDynamicHandLight(forWorld);
31+
}
32+
33+
@StableAPI.Expose
34+
public static boolean isCircular() {
35+
return DynamicLightsDrivers.isCircular();
3136
}
3237
}

src/main/java/com/falsepattern/falsetweaks/config/DynamicLightsConfig.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ public class DynamicLightsConfig {
1515
@Config.LangKey("config.falsetweaks.dynlights.hand_light")
1616
@Config.DefaultBoolean(true)
1717
public static boolean DYNAMIC_HAND_LIGHT;
18+
@Config.Comment("Set this to false if you want to make dynamic lights diamond-shaped, like block lights.")
19+
@Config.LangKey("config.falsetweaks.dynlights.circular")
20+
@Config.DefaultBoolean(true)
21+
public static boolean CIRCULAR;
1822
static {
1923
ConfigurationManager.selfInit();
2024
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.falsepattern.falsetweaks.mixin.mixins.client.dynlights.of;
2+
3+
import com.falsepattern.falsetweaks.modules.dynlights.DynamicLightsDrivers;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Redirect;
7+
8+
@Mixin(targets = "ChunkCacheOF",
9+
remap = false)
10+
public abstract class ChunkCacheOFMixin {
11+
@Redirect(method = "getLightBrightnessForSkyBlocksRaw",
12+
at = @At(value = "INVOKE",
13+
target = "LConfig;isDynamicLights()Z"),
14+
require = 1)
15+
private boolean ftDynamicLights() {
16+
return DynamicLightsDrivers.frontend.enabled();
17+
}
18+
19+
@Redirect(method = "getLightBrightnessForSkyBlocksRaw",
20+
at = @At(value = "INVOKE",
21+
target = "LDynamicLights;getCombinedLight(IIII)I"),
22+
require = 1)
23+
private int ftCombinedLights(int x, int y, int z, int combinedLight) {
24+
return DynamicLightsDrivers.frontend.getCombinedLight(x, y, z, combinedLight);
25+
}
26+
}

src/main/java/com/falsepattern/falsetweaks/mixin/mixins/client/dynlights/of/DynamicLightsMixin.java

Lines changed: 8 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,8 @@
44
import org.spongepowered.asm.mixin.Mixin;
55
import org.spongepowered.asm.mixin.Overwrite;
66

7-
import net.minecraft.block.Block;
87
import net.minecraft.client.renderer.RenderGlobal;
98
import net.minecraft.entity.Entity;
10-
import net.minecraft.entity.EntityLivingBase;
11-
import net.minecraft.entity.item.EntityItem;
12-
import net.minecraft.entity.item.EntityTNTPrimed;
13-
import net.minecraft.entity.monster.EntityBlaze;
14-
import net.minecraft.entity.monster.EntityCreeper;
15-
import net.minecraft.entity.monster.EntityMagmaCube;
16-
import net.minecraft.entity.projectile.EntityFireball;
17-
import net.minecraft.init.Blocks;
18-
import net.minecraft.init.Items;
19-
import net.minecraft.item.Item;
20-
import net.minecraft.item.ItemBlock;
21-
import net.minecraft.item.ItemStack;
22-
import net.minecraft.world.World;
23-
24-
import java.util.List;
259

2610
@Mixin(targets = "DynamicLights",
2711
remap = false)
@@ -33,7 +17,7 @@ public abstract class DynamicLightsMixin {
3317
*/
3418
@Overwrite
3519
public static void entityAdded(Entity entityIn, RenderGlobal renderGlobal) {
36-
DynamicLightsDrivers.backend.entityAdded(entityIn, renderGlobal);
20+
DynamicLightsDrivers.frontend.entityAdded(entityIn, renderGlobal);
3721
}
3822

3923
/**
@@ -42,7 +26,7 @@ public static void entityAdded(Entity entityIn, RenderGlobal renderGlobal) {
4226
*/
4327
@Overwrite
4428
public static void entityRemoved(Entity entityIn, RenderGlobal renderGlobal) {
45-
DynamicLightsDrivers.backend.entityRemoved(entityIn, renderGlobal);
29+
DynamicLightsDrivers.frontend.entityRemoved(entityIn, renderGlobal);
4630
}
4731

4832
/**
@@ -51,7 +35,7 @@ public static void entityRemoved(Entity entityIn, RenderGlobal renderGlobal) {
5135
*/
5236
@Overwrite
5337
public static void update(RenderGlobal renderGlobal) {
54-
DynamicLightsDrivers.backend.update(renderGlobal);
38+
DynamicLightsDrivers.frontend.update(renderGlobal);
5539
}
5640

5741
/**
@@ -60,7 +44,7 @@ public static void update(RenderGlobal renderGlobal) {
6044
*/
6145
@Overwrite
6246
public static int getCombinedLight(int x, int y, int z, int combinedLight) {
63-
return DynamicLightsDrivers.backend.getCombinedLight(x, y, z, combinedLight);
47+
return DynamicLightsDrivers.frontend.getCombinedLight(x, y, z, combinedLight);
6448
}
6549

6650
/**
@@ -69,43 +53,7 @@ public static int getCombinedLight(int x, int y, int z, int combinedLight) {
6953
*/
7054
@Overwrite
7155
public static int getCombinedLight(Entity entity, int combinedLight) {
72-
return DynamicLightsDrivers.backend.getCombinedLight(entity, combinedLight);
73-
}
74-
75-
/**
76-
* @author FalsePattern
77-
* @reason Integration
78-
*/
79-
@Overwrite
80-
public static int getCombinedLight(double lightPlayer, int combinedLight) {
81-
return DynamicLightsDrivers.backend.getCombinedLight(lightPlayer, combinedLight);
82-
}
83-
84-
/**
85-
* @author FalsePattern
86-
* @reason Integration
87-
*/
88-
@Overwrite
89-
public static double getLightLevel(int x, int y, int z) {
90-
return DynamicLightsDrivers.backend.getLightLevel(x, y, z);
91-
}
92-
93-
/**
94-
* @author FalsePattern
95-
* @reason Integration
96-
*/
97-
@Overwrite
98-
public static int getLightLevel(ItemStack itemStack) {
99-
return DynamicLightsDrivers.backend.getLightLevel(itemStack);
100-
}
101-
102-
/**
103-
* @author FalsePattern
104-
* @reason Integration
105-
*/
106-
@Overwrite
107-
public static int getLightLevel(Entity entity) {
108-
return DynamicLightsDrivers.backend.getLightLevel(entity);
56+
return DynamicLightsDrivers.frontend.getCombinedLight(entity, combinedLight);
10957
}
11058

11159
/**
@@ -114,7 +62,7 @@ public static int getLightLevel(Entity entity) {
11462
*/
11563
@Overwrite
11664
public static void removeLights(RenderGlobal renderGlobal) {
117-
DynamicLightsDrivers.backend.removeLights(renderGlobal);
65+
DynamicLightsDrivers.frontend.removeLights(renderGlobal);
11866
}
11967

12068
/**
@@ -123,7 +71,7 @@ public static void removeLights(RenderGlobal renderGlobal) {
12371
*/
12472
@Overwrite
12573
public static void clear() {
126-
DynamicLightsDrivers.backend.clear();
74+
DynamicLightsDrivers.frontend.clear();
12775
}
12876

12977
/**
@@ -132,16 +80,6 @@ public static void clear() {
13280
*/
13381
@Overwrite
13482
public static int getCount() {
135-
DynamicLightsDrivers.backend.clear();
136-
return DynamicLightsDrivers.backend.getCount();
137-
}
138-
139-
/**
140-
* @author FalsePattern
141-
* @reason Integration
142-
*/
143-
@Overwrite
144-
public static ItemStack getItemStack(EntityItem entityItem) {
145-
return DynamicLightsDrivers.backend.getItemStack(entityItem);
83+
return DynamicLightsDrivers.frontend.getCount();
14684
}
14785
}

src/main/java/com/falsepattern/falsetweaks/mixin/plugin/standard/Mixin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,8 @@ public enum Mixin implements IMixin {
310310
DynLights_WorldRendererMixin(Side.CLIENT, DYNLIGHTS_NONOF, "dynlights.WorldRendererMixin"),
311311
DynLights_NonThread_WorldClientMixin(Side.CLIENT, DYNLIGHTS_NONOF.and(THREADING.negate()), "dynlights.nonthread.WorldClientMixin"),
312312
DynLights_Thread_WorldClientMixin(Side.CLIENT, DYNLIGHTS_NONOF.and(THREADING), "dynlights.thread.WorldClientMixin"),
313-
DynLights_OF_DynamicLightsMixin(Side.CLIENT, condition(() -> ModuleConfig.DYNAMIC_LIGHTS).and(REQUIRE_OPTIFINE_WITH_DYNAMIC_LIGHTS), "dynlights.of.DynamicLightsMixin"),
313+
DynLights_OF_ChunkCacheOFMixin(Side.CLIENT, REQUIRE_OPTIFINE_WITH_DYNAMIC_LIGHTS, "dynlights.of.ChunkCacheOFMixin"),
314+
DynLights_OF_DynamicLightsMixin(Side.CLIENT, REQUIRE_OPTIFINE_WITH_DYNAMIC_LIGHTS, "dynlights.of.DynamicLightsMixin"),
314315

315316
//endregion Dynamic Lights Module
316317

src/main/java/com/falsepattern/falsetweaks/modules/dynlights/ChunkCacheFT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private int getLightBrightnessForSkyBlocksRaw(int x, int y, int z, int lightValu
5050
int light = super.getLightBrightnessForSkyBlocks(x, y, z, lightValue);
5151
val dl = FTDynamicLights.frontend();
5252
if (dl.enabled() && !this.getBlock(x, y, z).isOpaqueCube()) {
53-
light = DynamicLightsDrivers.frontend.getCombinedLight(x, y, z, light);
53+
light = dl.forWorldMesh().getCombinedLight(x, y, z, light);
5454
}
5555

5656
return light;

src/main/java/com/falsepattern/falsetweaks/modules/dynlights/DynamicLightsDrivers.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public class DynamicLightsDrivers {
1212
private static int backendPriority = 1000;
13-
public static DynamicLightsDriver backend;
13+
private static DynamicLightsDriver backend;
1414
public static DynamicLightsDriver frontend = DynamicLightsNoOp.INSTANCE;
1515
private static boolean initialized = false;
1616

@@ -30,16 +30,10 @@ public static void registerBackend(DynamicLightsDriver backend, int priority) {
3030

3131
public static void postInit() {
3232
initialized = true;
33-
if (Compat.optiFineHasDynamicLights()) {
34-
frontend = new DynamicLightsOF();
35-
} else if (DynamicLightsConfig.STATE != DynamicLightsConfig.DynamicLightsState.Disabled) {
36-
if (backend == null) {
37-
backend = new DynamicLights();
38-
}
39-
frontend = backend;
40-
} else {
41-
backend = frontend = DynamicLightsNoOp.INSTANCE;
33+
if (backend == null) {
34+
backend = DynamicLights.INSTANCE;
4235
}
36+
frontend = backend;
4337
}
4438

4539
public static boolean isDynamicLights() {
@@ -57,14 +51,22 @@ public static boolean isDynamicLightsFast() {
5751
return ModuleConfig.DYNAMIC_LIGHTS && DynamicLightsConfig.STATE == DynamicLightsConfig.DynamicLightsState.Fast;
5852
}
5953
}
60-
public static boolean isDynamicHandLight() {
54+
public static boolean isDynamicHandLight(boolean forWorld) {
6155
if (Compat.optiFineHasDynamicLights()) {
62-
return OptiFineCompat.isDynamicHandLight();
56+
if (Compat.isShaders()) {
57+
return OptiFineCompat.isDynamicHandLight();
58+
} else {
59+
return !(forWorld && Compat.neodymiumActive()) && OptiFineCompat.isDynamicLights();
60+
}
6361
} else {
64-
return ModuleConfig.DYNAMIC_LIGHTS && DynamicLightsConfig.STATE != DynamicLightsConfig.DynamicLightsState.Disabled && DynamicLightsConfig.DYNAMIC_HAND_LIGHT;
62+
return !(forWorld && Compat.neodymiumActive()) && ModuleConfig.DYNAMIC_LIGHTS && DynamicLightsConfig.STATE != DynamicLightsConfig.DynamicLightsState.Disabled && DynamicLightsConfig.DYNAMIC_HAND_LIGHT;
6563
}
6664
}
6765

66+
public static boolean isCircular() {
67+
return DynamicLightsConfig.CIRCULAR;
68+
}
69+
6870
private static class OptiFineCompat {
6971
public static boolean isDynamicLights() {
7072
return Config.isDynamicLights();

0 commit comments

Comments
 (0)