Skip to content

Commit bc069a2

Browse files
committed
Fix water-sensitivity check not working, and bad projectile lighting.
1 parent 8d5c13c commit bc069a2

File tree

11 files changed

+63
-57
lines changed

11 files changed

+63
-57
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,12 @@
206206

207207
- Fixed in-world item light source data reload not applying.
208208

209+
### 3.1.2
210+
211+
- Added base light of 8 to allays.
212+
- Fixed dynamic lighting of various projectiles.
213+
- Fixed water-sensitive items lighting up underwater while they shouldn't.
214+
209215
[SpruceUI]: https://github.com/LambdAurora/SpruceUI "SpruceUI page"
210216
[pridelib]: https://github.com/Queerbric/pridelib "Pridelib page"
211217
[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.1"
8+
const val VERSION = "3.1.2"
99
const val JAVA_VERSION = 21
1010

1111
private var minecraftVersion: String? = null

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

+6-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* Contains constants about LambDynamicLights.
1616
*
1717
* @author LambdAurora
18-
* @version 3.0.1
18+
* @version 3.1.2
1919
* @since 3.0.1
2020
*/
2121
public final class LambDynLightsConstants {
@@ -24,6 +24,11 @@ public final class LambDynLightsConstants {
2424
*/
2525
public static final String NAMESPACE = "lambdynlights";
2626

27+
/**
28+
* The unsupported development mode text.
29+
*/
30+
public static final String DEV_MODE_OVERLAY_TEXT = "[LambDynamicLights Dev Version (Unsupported)]";
31+
2732
/**
2833
* {@return {@code true} if this mod is in development mode, or {@code false} otherwise}
2934
*/

src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandler.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package dev.lambdaurora.lambdynlights.api;
1111

1212
import dev.lambdaurora.lambdynlights.LambDynLights;
13+
import net.minecraft.world.entity.Entity;
1314
import net.minecraft.world.entity.LivingEntity;
1415
import net.minecraft.world.entity.monster.Creeper;
1516
import org.jetbrains.annotations.NotNull;
@@ -22,7 +23,7 @@
2223
*
2324
* @param <T> The type of the light source.
2425
* @author LambdAurora
25-
* @version 1.3.0
26+
* @version 3.1.2
2627
* @since 1.1.0
2728
*/
2829
public interface DynamicLightHandler<T> {
@@ -52,7 +53,7 @@ default boolean isWaterSensitive(T lightSource) {
5253
* @param <T> The type of the entity.
5354
* @return The completed handler.
5455
*/
55-
static <T extends LivingEntity> @NotNull DynamicLightHandler<T> makeHandler(
56+
static <T extends Entity> @NotNull DynamicLightHandler<T> makeHandler(
5657
Function<T, Integer> luminance, Function<T, Boolean> waterSensitive
5758
) {
5859
return new DynamicLightHandler<>() {

src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandlers.java

+15-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
/**
2222
* @author LambdAurora
23-
* @version 3.0.0
23+
* @version 3.1.2
2424
* @since 1.1.0
2525
*/
2626
public final class DynamicLightHandlers {
@@ -32,6 +32,7 @@ private DynamicLightHandlers() {
3232
* Registers the default handlers.
3333
*/
3434
public static void registerDefaultHandlers() {
35+
registerDynamicLightHandler(EntityType.ALLAY, allay -> 8);
3536
registerDynamicLightHandler(EntityType.BLAZE, DynamicLightHandler.makeHandler(blaze -> 10, blaze -> true));
3637
registerDynamicLightHandler(EntityType.CREEPER, DynamicLightHandler.makeCreeperEntityHandler(null));
3738
registerDynamicLightHandler(EntityType.ENDERMAN, entity -> {
@@ -41,7 +42,8 @@ public static void registerDefaultHandlers() {
4142
return luminance;
4243
});
4344
registerDynamicLightHandler(EntityType.ITEM,
44-
entity -> LambDynLights.getLuminanceFromItemStack(entity.getItem(), entity.isSubmergedInWater()));
45+
entity -> LambDynLights.getLuminanceFromItemStack(entity.getItem(), entity.isSubmergedInWater())
46+
);
4547
registerDynamicLightHandler(EntityType.ITEM_FRAME, entity -> {
4648
var world = entity.level();
4749
return LambDynLights.getLuminanceFromItemStack(entity.getItem(), !world.getFluidState(entity.getBlockPos()).isEmpty());
@@ -56,6 +58,12 @@ public static void registerDefaultHandlers() {
5658
registerDynamicLightHandler(EntityType.GLOW_SQUID,
5759
entity -> (int) MathHelper.clampedLerp(0.f, 12.f, 1.f - entity.getDarkTicksRemaining() / 10.f)
5860
);
61+
62+
// Fireballs and other similar entities
63+
registerDynamicLightHandler(EntityType.FIREBALL, DynamicLightHandler.makeHandler(ball -> 14, ball -> true));
64+
registerDynamicLightHandler(EntityType.SMALL_FIREBALL, DynamicLightHandler.makeHandler(ball -> 12, ball -> true));
65+
registerDynamicLightHandler(EntityType.DRAGON_FIREBALL, ball -> 14);
66+
registerDynamicLightHandler(EntityType.WITHER_SKULL, ball -> 12);
5967
}
6068

6169
/**
@@ -99,8 +107,12 @@ private static <T> void register(DynamicLightHandlerHolder<T> holder, DynamicLig
99107
* @return {@code true} if the entity can light up, otherwise {@code false}
100108
*/
101109
public static <T extends Entity> boolean canLightUp(T entity) {
102-
if (entity == Minecraft.getInstance().player && !LambDynLights.get().config.getSelfLightSource().get())
110+
if (entity == Minecraft.getInstance().player) {
111+
if (!LambDynLights.get().config.getSelfLightSource().get())
112+
return false;
113+
} else if (!LambDynLights.get().config.getEntitiesLightSource().get()) {
103114
return false;
115+
}
104116

105117
var setting = DynamicLightHandlerHolder.cast(entity.getType()).lambdynlights$getSetting();
106118
return !(setting == null || !setting.get());

src/main/java/dev/lambdaurora/lambdynlights/mixin/DebugScreenOverlayMixin.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package dev.lambdaurora.lambdynlights.mixin;
1111

1212
import dev.lambdaurora.lambdynlights.LambDynLights;
13+
import dev.lambdaurora.lambdynlights.LambDynLightsConstants;
1314
import net.minecraft.TextFormatting;
1415
import net.minecraft.client.gui.components.DebugScreenOverlay;
1516
import org.spongepowered.asm.mixin.Mixin;
@@ -23,7 +24,7 @@
2324
* Adds a debug string for dynamic light sources tracking and updates.
2425
*
2526
* @author LambdAurora
26-
* @version 1.3.2
27+
* @version 3.1.2
2728
* @since 1.3.2
2829
*/
2930
@Mixin(DebugScreenOverlay.class)
@@ -46,5 +47,9 @@ private void onGetLeftText(CallbackInfoReturnable<List<String>> cir) {
4647

4748
builder.append(')');
4849
list.add(builder.toString());
50+
51+
if (LambDynLightsConstants.isDevMode()) {
52+
list.add(TextFormatting.RED + LambDynLightsConstants.DEV_MODE_OVERLAY_TEXT);
53+
}
4954
}
5055
}

src/main/java/dev/lambdaurora/lambdynlights/mixin/DevModeMixin.java

+12-4
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,37 @@
1111

1212
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
1313
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
14+
import dev.lambdaurora.lambdynlights.LambDynLightsConstants;
1415
import net.minecraft.client.Minecraft;
1516
import net.minecraft.client.gui.GuiGraphics;
1617
import net.minecraft.client.renderer.GameRenderer;
18+
import org.spongepowered.asm.mixin.Final;
1719
import org.spongepowered.asm.mixin.Mixin;
1820
import org.spongepowered.asm.mixin.Shadow;
1921
import org.spongepowered.asm.mixin.injection.At;
2022

2123
@Mixin(GameRenderer.class)
2224
public class DevModeMixin {
2325
@Shadow
24-
private Minecraft minecraft;
26+
@Final
27+
Minecraft minecraft;
2528

2629
@WrapOperation(
2730
method = "Lnet/minecraft/client/renderer/GameRenderer;render(Lnet/minecraft/client/DeltaTracker;Z)V",
2831
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphics;flush()V")
2932
)
3033
private void handler(GuiGraphics graphics, Operation<Void> original) {
31-
final String text = "[LambDynamicLights Dev Version (Unsupported)]";
3234
int bottom = this.minecraft.getWindow().getGuiScaledHeight();
3335
int y = bottom - this.minecraft.font.lineHeight;
3436

35-
graphics.fill(0, y - 4, this.minecraft.font.width(text) + 4, bottom, 0xaa000000);
36-
graphics.drawShadowedText(this.minecraft.font, text, 2, y - 2, 0xff0000);
37+
if (this.minecraft.isGameLoadFinished() && !this.minecraft.getDebugOverlay().showDebugScreen()) {
38+
graphics.fill(
39+
0, y - 4,
40+
this.minecraft.font.width(LambDynLightsConstants.DEV_MODE_OVERLAY_TEXT) + 4, bottom,
41+
0xaa000000
42+
);
43+
graphics.drawShadowedText(this.minecraft.font, LambDynLightsConstants.DEV_MODE_OVERLAY_TEXT, 2, y - 2, 0xff0000);
44+
}
3745
original.call(graphics);
3846
}
3947
}

src/main/java/dev/lambdaurora/lambdynlights/mixin/lightsource/AbstractHurtingProjectileEntityMixin.java

-39
This file was deleted.

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

+13-4
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
* Represents an item light sources manager.
4747
*
4848
* @author LambdAurora
49-
* @version 3.1.1
49+
* @version 3.1.2
5050
* @since 1.3.0
5151
*/
5252
public final class ItemLightSources implements ItemLightSourceManager, IdentifiableResourceReloadListener {
@@ -167,12 +167,21 @@ public Event<Identifier, OnRegister> onRegisterEvent() {
167167
public int getLuminance(ItemStack stack, boolean submergedInWater) {
168168
boolean shouldCareAboutWater = submergedInWater && LambDynLights.get().config.getWaterSensitiveCheck().get();
169169

170-
int luminance = Block.byItem(stack.getItem()).defaultState().getLightEmission();
170+
int luminance = 0;
171+
boolean matchedAny = false;
171172

172173
for (var data : lightSources) {
173-
if (shouldCareAboutWater && data.waterSensitive()) continue;
174+
if (data.predicate().test(stack)) {
175+
matchedAny = true;
174176

175-
luminance = Math.max(luminance, data.getLuminance(stack));
177+
if (shouldCareAboutWater && data.waterSensitive()) continue;
178+
179+
luminance = Math.max(luminance, data.getLuminance(stack));
180+
}
181+
}
182+
183+
if (!matchedAny) {
184+
luminance = Block.byItem(stack.getItem()).defaultState().getLightEmission();
176185
}
177186

178187
return luminance;

src/main/resources/fabric.mod.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"depends": {
3232
"fabricloader": ">=0.16.5",
3333
"fabric-api": ">=0.100.4+1.21",
34-
"minecraft": "~1.21",
34+
"minecraft": "~1.21 <1.21.2-",
3535
"spruceui": ">=5.1.0",
3636
"java": ">=21"
3737
},

src/main/resources/lambdynlights.lightsource.mixins.json

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"package": "dev.lambdaurora.lambdynlights.mixin.lightsource",
44
"compatibilityLevel": "JAVA_21",
55
"client": [
6-
"AbstractHurtingProjectileEntityMixin",
76
"AbstractMinecartEntityMixin",
87
"BlockAttachedEntityMixin",
98
"EntityMixin",

0 commit comments

Comments
 (0)