Skip to content

Commit d1107a0

Browse files
committed
Fix in-world item light source data reload not applying.
1 parent ba51d64 commit d1107a0

File tree

6 files changed

+40
-18
lines changed

6 files changed

+40
-18
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,10 @@
202202
- Added settings access in Sodium.
203203
- Updated Simplified Chinese translations ([#242](https://github.com/LambdAurora/LambDynamicLights/pull/242)).
204204

205+
### 3.1.1
206+
207+
- Fixed in-world item light source data reload not applying.
208+
205209
[SpruceUI]: https://github.com/LambdAurora/SpruceUI "SpruceUI page"
206210
[pridelib]: https://github.com/Queerbric/pridelib "Pridelib page"
207211
[Sodium]: https://modrinth.com/mod/sodium "Sodium Modrinth page"

build_logic/src/main/kotlin/lambdynamiclights/Constants.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.gradle.accessors.dm.LibrariesForLibs
55
object Constants {
66
const val GROUP = "dev.lambdaurora"
77
const val NAME = "lambdynamiclights"
8-
const val VERSION = "3.1.0"
8+
const val VERSION = "3.1.1"
99
const val JAVA_VERSION = 21
1010

1111
private var minecraftVersion: String? = null

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

+2-14
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@
2121
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
2222
import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents;
2323
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
24-
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
2524
import net.fabricmc.loader.api.FabricLoader;
2625
import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
2726
import net.minecraft.client.Minecraft;
2827
import net.minecraft.client.renderer.LevelRenderer;
2928
import net.minecraft.client.renderer.LightTexture;
3029
import net.minecraft.core.BlockPos;
3130
import net.minecraft.resources.Identifier;
32-
import net.minecraft.resources.io.ResourceManager;
3331
import net.minecraft.resources.io.ResourceType;
3432
import net.minecraft.world.entity.Entity;
3533
import net.minecraft.world.entity.LivingEntity;
@@ -54,7 +52,7 @@
5452
* Represents the LambDynamicLights mod.
5553
*
5654
* @author LambdAurora
57-
* @version 3.1.0
55+
* @version 3.1.1
5856
* @since 1.0.0
5957
*/
6058
public class LambDynLights implements ClientModInitializer {
@@ -82,17 +80,7 @@ public void onInitializeClient() {
8280
.map(EntrypointContainer::getEntrypoint)
8381
.forEach(initializer -> initializer.onInitializeDynamicLights(this.itemLightSources));
8482

85-
ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() {
86-
@Override
87-
public Identifier getFabricId() {
88-
return Identifier.of(LambDynLightsConstants.NAMESPACE, "dynamiclights_resources");
89-
}
90-
91-
@Override
92-
public void reload(ResourceManager manager) {
93-
LambDynLights.this.itemLightSources.load(manager);
94-
}
95-
});
83+
ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(this.itemLightSources);
9684

9785
CommonLifecycleEvents.TAGS_LOADED.register((registries, client) -> {
9886
this.itemLightSources.apply(registries);

src/main/java/dev/lambdaurora/lambdynlights/resource/item/ItemLightSources.java

+30-2
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,21 @@
1515
import com.mojang.serialization.DynamicOps;
1616
import com.mojang.serialization.JsonOps;
1717
import dev.lambdaurora.lambdynlights.LambDynLights;
18+
import dev.lambdaurora.lambdynlights.LambDynLightsConstants;
1819
import dev.lambdaurora.lambdynlights.api.item.ItemLightSource;
1920
import dev.lambdaurora.lambdynlights.api.item.ItemLightSourceManager;
2021
import dev.yumi.commons.TriState;
22+
import dev.yumi.commons.Unit;
2123
import dev.yumi.commons.event.Event;
24+
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
2225
import net.fabricmc.loader.api.FabricLoader;
26+
import net.minecraft.client.Minecraft;
2327
import net.minecraft.core.RegistryAccess;
2428
import net.minecraft.resources.Identifier;
2529
import net.minecraft.resources.RegistryOps;
2630
import net.minecraft.resources.io.Resource;
2731
import net.minecraft.resources.io.ResourceManager;
32+
import net.minecraft.util.profiling.Profiler;
2833
import net.minecraft.world.item.ItemStack;
2934
import net.minecraft.world.level.block.Block;
3035
import org.slf4j.Logger;
@@ -34,25 +39,48 @@
3439
import java.io.InputStreamReader;
3540
import java.util.ArrayList;
3641
import java.util.List;
42+
import java.util.concurrent.CompletableFuture;
43+
import java.util.concurrent.Executor;
3744

3845
/**
3946
* Represents an item light sources manager.
4047
*
4148
* @author LambdAurora
42-
* @version 3.0.0
49+
* @version 3.1.1
4350
* @since 1.3.0
4451
*/
45-
public final class ItemLightSources implements ItemLightSourceManager {
52+
public final class ItemLightSources implements ItemLightSourceManager, IdentifiableResourceReloadListener {
4653
private static final Logger LOGGER = LoggerFactory.getLogger("LambDynamicLights|ItemLightSources");
54+
private static final Identifier RESOURCE_RELOADER_ID = Identifier.of(LambDynLightsConstants.NAMESPACE, "dynamiclights_resources");
4755
private static final String SILENCE_ERROR_KEY = "silence_error";
4856
private static final boolean FORCE_LOG_ERRORS = TriState.fromProperty("lambdynamiclights.resource.force_log_errors")
4957
.toBooleanOrElse(FabricLoader.getInstance().isDevelopmentEnvironment());
5058

5159
private final Event<Identifier, OnRegister> onRegisterEvent = LambDynLights.EVENT_MANAGER.create(OnRegister.class);
60+
private final Minecraft client = Minecraft.getInstance();
5261

5362
private final List<LoadedItemLightSource> loadedLightSources = new ArrayList<>();
5463
private final List<ItemLightSource> lightSources = new ArrayList<>();
5564

65+
@Override
66+
public Identifier getFabricId() {
67+
return RESOURCE_RELOADER_ID;
68+
}
69+
70+
@Override
71+
public CompletableFuture<Void> reload(Synchronizer synchronizer, ResourceManager resourceManager, Profiler prepareProfiler, Profiler applyProfiler, Executor prepareExecutor, Executor applyExecutor) {
72+
return CompletableFuture.supplyAsync(() -> {
73+
this.load(resourceManager);
74+
return Unit.INSTANCE;
75+
}, prepareExecutor)
76+
.thenCompose(synchronizer::whenPrepared)
77+
.thenAcceptAsync((reloadState) -> {
78+
if (this.client.level != null) {
79+
this.apply(this.client.level.registryAccess());
80+
}
81+
}, applyExecutor);
82+
}
83+
5684
/**
5785
* Loads the item light source data from resource pack.
5886
*

src/main/resources/assets/lambdynlights/lang/en_us.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@
1717
"lambdynlights.tooltip.mode.3": "%s is smooth dynamic lighting.",
1818
"lambdynlights.tooltip.self_light_source": "Enables first-person dynamic lighting. It's recommended to disable this if you're using shaders that has their own dynamic lighting.",
1919
"lambdynlights.tooltip.tnt_lighting": "Sets the TNT dynamic lighting mode.\n- %s disables TNT dynamic lighting.\n- %s sets a constant luminance.\n- %s sets a dynamic luminance.",
20-
"lambdynlights.tooltip.water_sensitive": "Enables the water-sensitive light sources check. This means that some items will not emit light while being submerged in water."
20+
"lambdynlights.tooltip.water_sensitive": "Enables the water-sensitive light sources check. This means that some items will not emit light while being submerged in water.",
21+
"modmenu.bluesky": "Bluesky"
2122
}

src/main/resources/fabric.mod.json

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"modmenu.discord": "https://discord.lambdaurora.dev/",
5353
"modmenu.github_releases": "https://github.com/LambdAurora/LambDynamicLights/releases",
5454
"modmenu.modrinth": "https://modrinth.com/mod/lambdynamiclights",
55+
"modmenu.bluesky": "https://bsky.app/profile/lambdaurora.dev",
5556
"modmenu.twitter": "https://twitter.com/LambdAurora"
5657
}
5758
},

0 commit comments

Comments
 (0)