Apply persisted Age lighting traits
Build / build (push) Canceled after 0s

This commit is contained in:
dnorberg committed 2026-09-22 16:18:21 -04:00
1 parent 73dec80ae6
commit 31ba6f9c15
5 files changed
+28 -7

No files matched your search

@@ -21,7 +21,7 @@ public record AgeDefinition(
public static final ResourceLocation RANDOM_VANILLA_PROFILE = ResourceLocation.fromNamespaceAndPath(
Rivencraft.MOD_ID, "random_vanilla"
);
public static final int CURRENT_GENERATION_VERSION = 3;
public static final int CURRENT_GENERATION_VERSION = 4;
public AgeDefinition {
Objects.requireNonNull(id, "id");
@@ -48,7 +48,7 @@ public final class AgeDimensionService {
loader.loadDynamicDimension(
age.dimensionId(),
createGenerator(server, age),
createDimensionType()
createDimensionType(age)
);
}
synchronizeImmersivePortals(server);
@@ -85,7 +85,7 @@ public final class AgeDimensionService {
ServerLevel loaded = DynamicDimensionRegistry.from(server).loadDynamicDimension(
definition.dimensionId(),
createGenerator(server, definition),
createDimensionType()
createDimensionType(definition)
);
if (loaded == null) {
Rivencraft.LOGGER.error("Failed to load Age {} as {}", definition.id(), definition.dimensionId());
@@ -231,10 +231,13 @@ public final class AgeDimensionService {
);
}
private static DimensionType createDimensionType() {
private static DimensionType createDimensionType(AgeDefinition age) {
AgeTraits.Lighting lighting = age.traits().lighting();
boolean hasSkyLight = lighting != AgeTraits.Lighting.DARK;
float ambientLight = lighting == AgeTraits.Lighting.BRIGHT ? 0.25F : 0.0F;
return new DimensionType(
OptionalLong.empty(),
true,
hasSkyLight,
false,
false,
true,
@@ -246,7 +249,7 @@ public final class AgeDimensionService {
384,
BlockTags.INFINIBURN_OVERWORLD,
BuiltinDimensionTypes.OVERWORLD_EFFECTS,
0.0F,
ambientLight,
new DimensionType.MonsterSettings(false, true, UniformInt.of(0, 7), 0)
);
}
@@ -175,6 +175,17 @@ public final class LinkingGameTests {
helper.assertTrue(level.dimension().location().equals(definition.dimensionId()),
"The " + profile + " profile must retain its assigned dimension id");
if (definition.traits().lighting() == AgeTraits.Lighting.DARK) {
helper.assertFalse(level.dimensionType().hasSkyLight(),
"Dark Lighting Ages must suppress dimension skylight");
} else {
helper.assertTrue(level.dimensionType().hasSkyLight(),
"Normal and Bright Lighting Ages must retain dimension skylight");
}
float expectedAmbientLight = definition.traits().lighting() == AgeTraits.Lighting.BRIGHT
? 0.25F : 0.0F;
helper.assertTrue(Math.abs(level.dimensionType().ambientLight() - expectedAmbientLight) < 0.0001F,
"The runtime dimension must apply the persisted lighting trait");
}
helper.succeed();
}