diff --git a/src/main/kotlin/de/snowii/extractor/Extractor.kt b/src/main/kotlin/de/snowii/extractor/Extractor.kt index e56fd4c..27a9aea 100644 --- a/src/main/kotlin/de/snowii/extractor/Extractor.kt +++ b/src/main/kotlin/de/snowii/extractor/Extractor.kt @@ -90,6 +90,9 @@ class Extractor : ModInitializer { CustomStats(), Stats(), SlotRanges(), + WorldClock(), + TimeLine(), + EnvironmentAttribute(), /* ChunkDumpTests.NoiseDump( "no_blend_no_beard_0_0.chunk", 0, diff --git a/src/main/kotlin/de/snowii/extractor/extractors/EnvironmentAttribute.kt b/src/main/kotlin/de/snowii/extractor/extractors/EnvironmentAttribute.kt new file mode 100644 index 0000000..08c8e5c --- /dev/null +++ b/src/main/kotlin/de/snowii/extractor/extractors/EnvironmentAttribute.kt @@ -0,0 +1,32 @@ +package de.snowii.extractor.extractors + +import com.google.gson.JsonElement +import com.google.gson.JsonObject +import com.mojang.serialization.JsonOps +import de.snowii.extractor.Extractor +import net.minecraft.core.registries.Registries +import net.minecraft.server.MinecraftServer +import net.minecraft.world.attribute.EnvironmentAttributes + +class EnvironmentAttribute : Extractor.Extractor { + override fun fileName(): String { + return "environement_attribute.json" + } + + override fun extract(server: MinecraftServer): JsonElement { + val environnementAttribute = JsonObject() + val ops = server.registryAccess().createSerializationContext(JsonOps.INSTANCE) + val registry = + server.registryAccess().lookupOrThrow(Registries.ENVIRONMENT_ATTRIBUTE) + for (attribute in registry) { + val sub = EnvironmentAttributes.CODEC + .encodeStart(ops,attribute) + .getOrThrow() as JsonObject; + environnementAttribute.add( + registry.getKey(attribute)!!.path, + sub + ) + } + return environnementAttribute + } +} \ No newline at end of file diff --git a/src/main/kotlin/de/snowii/extractor/extractors/TimeLine.kt b/src/main/kotlin/de/snowii/extractor/extractors/TimeLine.kt new file mode 100644 index 0000000..1ab7e58 --- /dev/null +++ b/src/main/kotlin/de/snowii/extractor/extractors/TimeLine.kt @@ -0,0 +1,33 @@ +package de.snowii.extractor.extractors + +import com.google.gson.JsonArray +import com.google.gson.JsonElement +import com.google.gson.JsonObject +import com.mojang.serialization.JsonOps +import de.snowii.extractor.Extractor +import net.minecraft.core.registries.Registries +import net.minecraft.server.MinecraftServer +import net.minecraft.world.timeline.Timeline + +class TimeLine : Extractor.Extractor { + override fun fileName(): String { + return "timeline.json" + } + + override fun extract(server: MinecraftServer): JsonElement { + val worldClockJson = JsonObject() + val ops = server.registryAccess().createSerializationContext(JsonOps.INSTANCE) + val registry = + server.registryAccess().lookupOrThrow(Registries.TIMELINE) + for (timeline in registry) { + val sub = Timeline.DIRECT_CODEC + .encodeStart(ops,timeline) + .getOrThrow() as JsonObject; + worldClockJson.add( + registry.getKey(timeline)!!.path, + sub + ) + } + return worldClockJson + } +} \ No newline at end of file diff --git a/src/main/kotlin/de/snowii/extractor/extractors/WorldClock.kt b/src/main/kotlin/de/snowii/extractor/extractors/WorldClock.kt new file mode 100644 index 0000000..c8ef9a4 --- /dev/null +++ b/src/main/kotlin/de/snowii/extractor/extractors/WorldClock.kt @@ -0,0 +1,27 @@ +package de.snowii.extractor.extractors + +import com.google.gson.JsonArray +import com.google.gson.JsonElement +import de.snowii.extractor.Extractor +import net.minecraft.core.registries.Registries +import net.minecraft.server.MinecraftServer + +class WorldClock : Extractor.Extractor { + override fun fileName(): String { + return "world_clock.json" + } + + override fun extract(server: MinecraftServer): JsonElement { + val worldClockJson = JsonArray() + val registry = + server.registryAccess().lookupOrThrow(Registries.WORLD_CLOCK) + + for (clock in registry) { + worldClockJson.add( + registry.getKey(clock)!!.path, + ) + } + + return worldClockJson + } +} \ No newline at end of file