Skip to content

Commit 100de58

Browse files
committed
Cleanup stuff for 2.3.2 release.
1 parent 1596f33 commit 100de58

11 files changed

+83
-49
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,13 @@
153153

154154
### 2.3.2
155155

156+
- Fixed Fabric API (Indigo Renderer) compatibility
157+
(by [#182](https://github.com/LambdAurora/LambDynamicLights/pull/182),
158+
issue [#172](https://github.com/LambdAurora/LambDynamicLights/issues/172)).
159+
- Fixed Sodium compatibility
160+
(by [#178](https://github.com/LambdAurora/LambDynamicLights/pull/178),
161+
issue [#175](https://github.com/LambdAurora/LambDynamicLights/issues/175)).
162+
- Fixed Minecraft version restriction.
156163
- Cleaned up some item light source code.
157164

158165
[SpruceUI]: https://github.com/LambdAurora/SpruceUI "SpruceUI page"

build.gradle

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
plugins {
2-
id 'fabric-loom' version '1.2.+'
2+
id 'fabric-loom' version '1.3.+'
33
id 'io.github.juuxel.loom-quiltflower' version '1.8.+'
44
id 'org.quiltmc.gradle.licenser' version '2.0.+'
55
id 'java-library'
66
id 'maven-publish'
7-
id 'com.github.johnrengelman.shadow' version '7.1.2'
7+
id 'com.github.johnrengelman.shadow' version '8.1.1'
88
id 'com.modrinth.minotaur' version '2.+'
99
id 'com.matthewprenger.cursegradle' version '1.4.+'
1010
}
@@ -13,11 +13,16 @@ import com.modrinth.minotaur.dependencies.ModDependency
1313

1414
group = project.maven_group
1515
version = "${project.mod_version}+${project.minecraft_version}"
16-
archivesBaseName = project.archives_base_name
16+
base.archivesName = project.archives_base_name
1717

1818
// This field defines the Java version your mod target.
1919
def targetJavaVersion = 17
2020

21+
if (!(System.getenv("CURSEFORGE_TOKEN") || System.getenv("MODRINTH_TOKEN"))) {
22+
version += "-local"
23+
}
24+
logger.lifecycle("Preparing version ${version}...")
25+
2126
boolean isMCVersionNonRelease() {
2227
return project.minecraft_version.matches('^\\d\\dw\\d\\d[a-z]$')
2328
|| project.minecraft_version.matches('\\d+\\.\\d+-(pre|rc)(\\d+)')
@@ -130,7 +135,7 @@ dependencies {
130135
transitive = false
131136
}
132137

133-
modImplementation "maven.modrinth:sodium:${project.sodium_version}"
138+
modRuntimeOnly "maven.modrinth:sodium:${project.sodium_version}"
134139

135140
shadow 'com.electronwill.night-config:core:3.6.6'
136141
shadow 'com.electronwill.night-config:toml:3.6.6'
@@ -159,7 +164,7 @@ processResources {
159164

160165
jar {
161166
from('LICENSE') {
162-
rename { "${it}_${project.archivesBaseName}" }
167+
rename { "${it}_${base.archivesName}" }
163168
}
164169
}
165170

@@ -171,7 +176,7 @@ license {
171176
shadowJar {
172177
dependsOn jar
173178
configurations = [project.configurations.shadow]
174-
destinationDirectory.set(file("${project.buildDir}/devlibs"))
179+
destinationDirectory.set(file("${project.layout.buildDirectory.get()}/devlibs"))
175180
archiveClassifier.set('dev')
176181

177182
relocate 'com.electronwill.nightconfig', 'dev.lambdaurora.lambdynlights.shadow.nightconfig'

gradle/wrapper/gradle-wrapper.jar

1.61 KB
Binary file not shown.
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
44
networkTimeout=10000
5+
validateDistributionUrl=true
56
zipStoreBase=GRADLE_USER_HOME
67
zipStorePath=wrapper/dists

gradlew

+6-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ done
8383
# This is normally unused
8484
# shellcheck disable=SC2034
8585
APP_BASE_NAME=${0##*/}
86-
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
86+
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87+
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
8788

8889
# Use the maximum available, or set MAX_FD != -1 to use that value.
8990
MAX_FD=maximum
@@ -130,10 +131,13 @@ location of your Java installation."
130131
fi
131132
else
132133
JAVACMD=java
133-
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
134+
if ! command -v java >/dev/null 2>&1
135+
then
136+
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
134137
135138
Please set the JAVA_HOME variable in your environment to match the
136139
location of your Java installation."
140+
fi
137141
fi
138142

139143
# Increase the maximum file descriptors if we can.

src/main/java/dev/lambdaurora/lambdynlights/LambDynLightsMixinPlugin.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* LambDynamicLights mixin plugin for conditional mixins.
2323
*
2424
* @author LambdAurora
25-
* @version 2.1.1
25+
* @version 2.3.2
2626
* @since 1.0.0
2727
*/
2828
public class LambDynLightsMixinPlugin implements IMixinConfigPlugin {
@@ -34,7 +34,7 @@ public LambDynLightsMixinPlugin() {
3434
this.conditionalMixins.put("dev.lambdaurora.lambdynlights.mixin.ltr.LilTaterBlockEntityMixin", ltrInstalled);
3535

3636
boolean sodium05XInstalled = LambDynLightsCompat.isSodium05XInstalled();
37-
this.conditionalMixins.put("dev.lambdaurora.lambdynlights.mixin.sodium.ArrayLightDataCache", sodium05XInstalled);
37+
this.conditionalMixins.put("dev.lambdaurora.lambdynlights.mixin.sodium.ArrayLightDataCacheMixin", sodium05XInstalled);
3838
this.conditionalMixins.put("dev.lambdaurora.lambdynlights.mixin.sodium.FlatLightPipelineMixin", sodium05XInstalled);
3939
this.conditionalMixins.put("dev.lambdaurora.lambdynlights.mixin.sodium.LightDataAccessMixin", sodium05XInstalled);
4040
}

src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/ArrayLightDataCacheMixin.java

+11-12
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import dev.lambdaurora.lambdynlights.LambDynLights;
1313
import dev.lambdaurora.lambdynlights.util.SodiumDynamicLightHandler;
14-
import me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess;
1514
import org.spongepowered.asm.mixin.Dynamic;
1615
import org.spongepowered.asm.mixin.Mixin;
1716
import org.spongepowered.asm.mixin.Pseudo;
@@ -21,16 +20,16 @@
2120

2221
@Pseudo
2322
@Mixin(targets = "me.jellysquid.mods.sodium.client.model.light.data.ArrayLightDataCache", remap = false)
24-
public abstract class ArrayLightDataCacheMixin extends LightDataAccess {
25-
@Dynamic
26-
@Inject(method = "get(III)I", at = @At("HEAD"))
27-
private void lambdynlights$storeLightPos(int x, int y, int z, CallbackInfoReturnable<Integer> cir) {
28-
if (!LambDynLights.get().config.getDynamicLightsMode().isEnabled())
29-
return;
23+
public abstract class ArrayLightDataCacheMixin {
24+
@Dynamic
25+
@Inject(method = "get(III)I", at = @At("HEAD"), require = 0)
26+
private void lambdynlights$storeLightPos(int x, int y, int z, CallbackInfoReturnable<Integer> cir) {
27+
if (!LambDynLights.get().config.getDynamicLightsMode().isEnabled())
28+
return;
3029

31-
// Store the current light position.
32-
// This is possible under smooth lighting scenarios, because AoFaceData in Sodium runs a get() call
33-
// before getting the lightmap.
34-
SodiumDynamicLightHandler.lambdynlights$pos.get().set(x, y, z);
35-
}
30+
// Store the current light position.
31+
// This is possible under smooth lighting scenarios, because AoFaceData in Sodium runs a get() call
32+
// before getting the lightmap.
33+
SodiumDynamicLightHandler.pos.get().set(x, y, z);
34+
}
3635
}

src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/FlatLightPipelineMixin.java

+16-6
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,20 @@
2323
@Pseudo
2424
@Mixin(targets = "me.jellysquid.mods.sodium.client.model.light.flat.FlatLightPipeline", remap = false)
2525
public abstract class FlatLightPipelineMixin {
26-
@Dynamic
27-
@Inject(method = "getOffsetLightmap", at = @At(value = "RETURN", ordinal = 1), remap = false, locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true)
28-
private void lambdynlights$getLightmap(BlockPos pos, Direction face, CallbackInfoReturnable<Integer> cir, int word, int adjWord) {
29-
int lightmap = SodiumDynamicLightHandler.lambdynlights$getLightmap(pos, adjWord, cir.getReturnValueI());
30-
cir.setReturnValue(lightmap);
31-
}
26+
@Dynamic
27+
@Inject(
28+
method = "getOffsetLightmap",
29+
at = @At(value = "RETURN", ordinal = 1),
30+
require = 0,
31+
remap = false,
32+
locals = LocalCapture.CAPTURE_FAILHARD,
33+
cancellable = true
34+
)
35+
private void lambdynlights$getLightmap(
36+
BlockPos pos, Direction face, CallbackInfoReturnable<Integer> cir,
37+
int word, int adjWord
38+
) {
39+
int lightmap = SodiumDynamicLightHandler.getLightmap(pos, adjWord, cir.getReturnValueI());
40+
cir.setReturnValue(lightmap);
41+
}
3242
}

src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/LightDataAccessMixin.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
@Pseudo
2121
@Mixin(targets = "me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess", remap = false)
2222
public abstract class LightDataAccessMixin {
23-
@Dynamic
24-
@Inject(method = "getLightmap", at = @At("RETURN"), remap = false, cancellable = true)
25-
private static void lambdynlights$getLightmap(int word, CallbackInfoReturnable<Integer> cir) {
26-
int lightmap = SodiumDynamicLightHandler.lambdynlights$getLightmap(SodiumDynamicLightHandler.lambdynlights$pos.get(), word, cir.getReturnValueI());
27-
cir.setReturnValue(lightmap);
28-
}
23+
@Dynamic
24+
@Inject(method = "getLightmap", at = @At("RETURN"), remap = false, require = 0, cancellable = true)
25+
private static void lambdynlights$getLightmap(int word, CallbackInfoReturnable<Integer> cir) {
26+
int lightmap = SodiumDynamicLightHandler.getLightmap(SodiumDynamicLightHandler.pos.get(), word, cir.getReturnValueI());
27+
cir.setReturnValue(lightmap);
28+
}
2929
}

src/main/java/dev/lambdaurora/lambdynlights/util/SodiumDynamicLightHandler.java

+13-14
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,25 @@
1010
package dev.lambdaurora.lambdynlights.util;
1111

1212
import dev.lambdaurora.lambdynlights.LambDynLights;
13-
import me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess;
1413
import net.minecraft.util.math.BlockPos;
1514
import org.jetbrains.annotations.ApiStatus;
1615

1716
@ApiStatus.Internal
1817
public interface SodiumDynamicLightHandler {
19-
// Stores the current light position being used by ArrayLightDataCache#get
20-
// We use ThreadLocal because Sodium's chunk builder is multithreaded, otherwise it will break
21-
// catastrophically.
22-
ThreadLocal<BlockPos.Mutable> lambdynlights$pos = ThreadLocal.withInitial(BlockPos.Mutable::new);
18+
// Stores the current light position being used by ArrayLightDataCache#get
19+
// We use ThreadLocal because Sodium's chunk builder is multithreaded, otherwise it will break
20+
// catastrophically.
21+
ThreadLocal<BlockPos.Mutable> pos = ThreadLocal.withInitial(BlockPos.Mutable::new);
2322

24-
static int lambdynlights$getLightmap(BlockPos pos, int word, int lightmap) {
25-
if (!LambDynLights.get().config.getDynamicLightsMode().isEnabled())
26-
return lightmap;
23+
static int getLightmap(BlockPos pos, int word, int lightmap) {
24+
if (!LambDynLights.get().config.getDynamicLightsMode().isEnabled())
25+
return lightmap;
2726

28-
// Equivalent to world.getBlockState(pos).isOpaqueFullCube(world, pos)
29-
if (LightDataAccess.unpackFO(word))
30-
return lightmap;
27+
// Equivalent to world.getBlockState(pos).isOpaqueFullCube(world, pos)
28+
if (/*LightDataAccess.unpackFO(word)*/ (word >>> 30 & 1) != 0)
29+
return lightmap;
3130

32-
double dynamic = LambDynLights.get().getDynamicLightLevel(pos);
33-
return LambDynLights.get().getLightmapWithDynamicLight(dynamic, lightmap);
34-
}
31+
double dynamic = LambDynLights.get().getDynamicLightLevel(pos);
32+
return LambDynLights.get().getLightmapWithDynamicLight(dynamic, lightmap);
33+
}
3534
}

src/main/resources/fabric.mod.json

+9
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@
4848
"optifabric": "*"
4949
},
5050
"custom": {
51+
"modmenu": {
52+
"links": {
53+
"modmenu.curseforge": "https://www.curseforge.com/minecraft/mc-mods/lambdynamiclights",
54+
"modmenu.discord": "https://discord.lambdaurora.dev/",
55+
"modmenu.github_releases": "https://github.com/LambdAurora/LambDynamicLights/releases",
56+
"modmenu.modrinth": "https://modrinth.com/mod/lambdynamiclights",
57+
"modmenu.twitter": "https://twitter.com/LambdAurora"
58+
}
59+
},
5160
"modupdater": {
5261
"strategy": "curseforge",
5362
"projectID": 393442

0 commit comments

Comments
 (0)