Updated Docs, and Cortections

This commit is contained in:
Brian Neumann-Fopiano
2026-08-08 00:29:48 -06:00
parent c40e1cf152
commit 506787f51a
70 changed files with 9485 additions and 3050 deletions
@@ -32,7 +32,7 @@ public class IrisDuration {
@Desc("Milliseconds (1000ms = 1 second)")
private int milliseconds = 0;
@Desc("Minecraft Ticks (20 minecraft ticks = 1 second")
@Desc("Minecraft Ticks (20 minecraft ticks = 1 second)")
private int minecraftTicks = 0;
@Desc("Seconds (60 seconds = 1 minute)")
@@ -50,10 +50,10 @@ public class IrisDuration {
@Desc("Minecraft Days (1 minecraft day = 20 real minutes)")
private int minecraftDays = 0;
@Desc("Minecraft Weeks (1 minecraft week = 2 real hours and 18 real minutes)")
@Desc("Minecraft Weeks (7 minecraft days = 2 real hours and 20 real minutes)")
private int minecraftWeeks = 0;
@Desc("Minecraft Lunar Cycles (1 minecraft lunar cycle = 2 real hours and 36 real minutes)")
@Desc("Minecraft Lunar Cycles (8 minecraft days = 2 real hours and 40 real minutes)")
private int minecraftLunarCycles = 0;
@Desc("REAL (not minecraft) Days")
@@ -71,9 +71,8 @@ public class IrisDuration {
+ TimeUnit.DAYS.toMillis(getDays())
+ (getMinecraftTicks() * 50L)
+ (getMinecraftHours() * 50000L)
+ (getMinecraftWeeks() * 50000L)
+ (getMinecraftDays() * 24000L)
+ (getMinecraftWeeks() * 168000L)
+ (getMinecraftLunarCycles() * 192000L);
+ (getMinecraftDays() * 1_200_000L)
+ (getMinecraftWeeks() * 8_400_000L)
+ (getMinecraftLunarCycles() * 9_600_000L);
}
}
@@ -35,16 +35,16 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Desc("Represents a dimension")
@Desc("Represents a pack modification schema")
@Data
@EqualsAndHashCode(callSuper = false)
public class IrisMod extends IrisRegistrant {
@MinNumber(2)
@Required
@Desc("The human readable name of this dimension")
private String name = "A Dimension Mod";
@Desc("The human-readable name of this pack modification")
private String name = "A Pack Modification";
@Desc("If this mod only works with a specific dimension, define it's load key here. Such as overworld, or flat. Otherwise iris will assume this mod works with anything.")
@Desc("The optional dimension load key this modification targets. An empty value does not restrict the target.")
private String forDimension = "";
@MinNumber(-1)
@@ -93,7 +93,7 @@ public class IrisMod extends IrisRegistrant {
private KList<IrisModObjectPlacementRegionInjector> regionObjectPlacementInjectors = new KList<>();
@ArrayType(min = 1, type = IrisModRegionReplacer.class)
@Desc("Replace biomes with other biomes")
@Desc("Replace regions with other regions")
private KList<IrisModRegionReplacer> regionReplacers = new KList<>();
@ArrayType(min = 1, type = IrisObjectReplace.class)
@@ -18,9 +18,7 @@
package art.arcane.iris.engine.object;
import art.arcane.iris.engine.object.annotations.ArrayType;
import art.arcane.iris.engine.object.annotations.Desc;
import art.arcane.iris.engine.object.annotations.RegistryListResource;
import art.arcane.iris.engine.object.annotations.Required;
import art.arcane.iris.engine.object.annotations.Snippet;
import lombok.AllArgsConstructor;
@@ -37,7 +35,6 @@ import lombok.experimental.Accessors;
public class IrisModNoiseStyleReplacer {
@Required
@Desc("A noise style to find")
@ArrayType(type = String.class, min = 1)
private NoiseStyle find = NoiseStyle.IRIS;
@Required
@@ -46,6 +43,5 @@ public class IrisModNoiseStyleReplacer {
@Required
@Desc("A noise style to replace it with")
@RegistryListResource(IrisBiome.class)
private IrisGeneratorStyle replace = new IrisGeneratorStyle();
}
@@ -42,7 +42,7 @@ public class IrisModObjectPlacementBiomeInjector {
private String biome = "";
@Required
@Desc("A biome to inject into the region")
@Desc("Object placements to inject into the biome")
@ArrayType(type = IrisObjectPlacement.class, min = 1)
private KList<IrisObjectPlacement> place = new KList<>();
}
@@ -37,12 +37,12 @@ import lombok.experimental.Accessors;
@Data
public class IrisModObjectPlacementRegionInjector {
@Required
@Desc("The biome to find")
@Desc("The region to find")
@RegistryListResource(IrisRegion.class)
private String biome = "";
@Required
@Desc("A biome to inject into the region")
@Desc("Object placements to inject into the region")
@ArrayType(type = IrisObjectPlacement.class, min = 1)
private KList<IrisObjectPlacement> place = new KList<>();
}
@@ -33,7 +33,7 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Desc("A biome replacer")
@Desc("An object replacer")
@Data
public class IrisModObjectReplacer {
@Required
@@ -44,6 +44,6 @@ public class IrisModObjectReplacer {
@Required
@Desc("An object to replace it with")
@RegistryListResource(IrisBiome.class)
@RegistryListResource(IrisObject.class)
private String replace = "";
}
@@ -31,16 +31,16 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Desc("Translate objects")
@Desc("Limits object placement by minimum and maximum world height")
@Data
public class IrisObjectLimit {
@MinNumber(0)
@MaxNumber(1024)
@MinNumber(-2048)
@MaxNumber(2048)
@Desc("The minimum height for placement (bottom of object)")
private int minimumHeight = -2048;
@MinNumber(0)
@MaxNumber(1024)
@MinNumber(-2048)
@MaxNumber(2048)
@Desc("The maximum height for placement (top of object)")
private int maximumHeight = 2048;
@@ -31,7 +31,7 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Desc("Translate objects")
@Desc("Limits placement to a minimum and maximum terrain slope")
@Data
public class IrisSlopeClip {
@MinNumber(0)
@@ -0,0 +1,38 @@
package art.arcane.iris.engine.object;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class IrisDurationTest {
@Test
public void convertsRealAndMinecraftUnitsToMilliseconds() {
IrisDuration duration = new IrisDuration();
duration.setMilliseconds(1);
duration.setMinecraftTicks(1);
duration.setSeconds(1);
duration.setMinutes(1);
duration.setMinecraftHours(1);
duration.setHours(1);
duration.setMinecraftDays(1);
duration.setMinecraftWeeks(1);
duration.setMinecraftLunarCycles(1);
duration.setDays(1);
assertEquals(109_311_051L, duration.toMilliseconds());
}
@Test
public void convertsMinecraftCalendarUnitsUsingTwentyMinuteDays() {
IrisDuration day = new IrisDuration();
IrisDuration week = new IrisDuration();
IrisDuration lunarCycle = new IrisDuration();
day.setMinecraftDays(1);
week.setMinecraftWeeks(1);
lunarCycle.setMinecraftLunarCycles(1);
assertEquals(1_200_000L, day.toMilliseconds());
assertEquals(8_400_000L, week.toMilliseconds());
assertEquals(9_600_000L, lunarCycle.toMilliseconds());
}
}
@@ -0,0 +1,44 @@
package art.arcane.iris.engine.object;
import art.arcane.iris.engine.object.annotations.ArrayType;
import art.arcane.iris.engine.object.annotations.Desc;
import art.arcane.iris.engine.object.annotations.MaxNumber;
import art.arcane.iris.engine.object.annotations.MinNumber;
import art.arcane.iris.engine.object.annotations.RegistryListResource;
import org.junit.Test;
import java.lang.reflect.Field;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
public class SchemaMetadataCorrectionsTest {
@Test
public void objectHeightLimitsAdmitTheirDefaults() throws Exception {
Field minimum = IrisObjectLimit.class.getDeclaredField("minimumHeight");
Field maximum = IrisObjectLimit.class.getDeclaredField("maximumHeight");
assertEquals(-2048D, minimum.getAnnotation(MinNumber.class).value(), 0D);
assertEquals(2048D, minimum.getAnnotation(MaxNumber.class).value(), 0D);
assertEquals(-2048D, maximum.getAnnotation(MinNumber.class).value(), 0D);
assertEquals(2048D, maximum.getAnnotation(MaxNumber.class).value(), 0D);
}
@Test
public void correctedTypesDescribeTheSchemaTheyExpose() {
assertEquals("Represents a pack modification schema", IrisMod.class.getAnnotation(Desc.class).value());
assertEquals("Limits object placement by minimum and maximum world height",
IrisObjectLimit.class.getAnnotation(Desc.class).value());
assertEquals("Limits placement to a minimum and maximum terrain slope",
IrisSlopeClip.class.getAnnotation(Desc.class).value());
}
@Test
public void modReplacerMetadataUsesItsActualTypes() throws Exception {
Field noiseFind = IrisModNoiseStyleReplacer.class.getDeclaredField("find");
Field objectReplace = IrisModObjectReplacer.class.getDeclaredField("replace");
assertFalse(noiseFind.isAnnotationPresent(ArrayType.class));
assertEquals(IrisObject.class, objectReplace.getAnnotation(RegistryListResource.class).value());
}
}