diff --git a/src/main/kotlin/com/steelextractor/SteelExtractor.kt b/src/main/kotlin/com/steelextractor/SteelExtractor.kt index 8c6e07f..6075f27 100644 --- a/src/main/kotlin/com/steelextractor/SteelExtractor.kt +++ b/src/main/kotlin/com/steelextractor/SteelExtractor.kt @@ -42,6 +42,7 @@ import com.steelextractor.extractors.PoiTypesExtractor import com.steelextractor.extractors.Potions import com.steelextractor.extractors.StatTypeRegistryExtractor import com.steelextractor.extractors.StructureStarts +import com.steelextractor.extractors.SuspiciousStewEffects import com.steelextractor.extractors.Tags import com.steelextractor.extractors.Waxables import kotlinx.io.IOException @@ -218,6 +219,7 @@ object SteelExtractor : ModInitializer { addUnlessDisabled("BLOCK_ENTITIES") { BlockEntities() } addUnlessDisabled("DATA_COMPONENTS") { DataComponents() } addUnlessDisabled("ITEMS") { Items() } + addUnlessDisabled("SUSPICIOUS_STEW_EFFECTS") { SuspiciousStewEffects() } addUnlessDisabled("PARTICLE_TYPES") { ParticleTypeRegistryExtractor() } addUnlessDisabled("POSITION_SOURCE_TYPES") { PositionSourceTypeRegistryExtractor() } addUnlessDisabled("VILLAGER_TYPES") { VillagerTypeRegistryExtractor() } diff --git a/src/main/kotlin/com/steelextractor/extractors/SuspiciousStewEffects.kt b/src/main/kotlin/com/steelextractor/extractors/SuspiciousStewEffects.kt new file mode 100644 index 0000000..2d7ab2e --- /dev/null +++ b/src/main/kotlin/com/steelextractor/extractors/SuspiciousStewEffects.kt @@ -0,0 +1,40 @@ +package com.steelextractor.extractors + +import com.google.gson.JsonArray +import com.google.gson.JsonElement +import com.google.gson.JsonObject +import com.mojang.serialization.JsonOps +import com.steelextractor.SteelExtractor +import net.minecraft.core.registries.BuiltInRegistries +import net.minecraft.resources.RegistryOps +import net.minecraft.server.MinecraftServer +import net.minecraft.world.item.component.SuspiciousStewEffects as VanillaSuspiciousStewEffects +import net.minecraft.world.level.block.SuspiciousEffectHolder + +/** Extracts the effect lists returned by vanilla `SuspiciousEffectHolder` items. */ +class SuspiciousStewEffects : SteelExtractor.Extractor { + override fun fileName(): String { + return "steel-registry/build_assets/suspicious_stew_effects.json" + } + + override fun extract(server: MinecraftServer): JsonElement { + val registryOps = RegistryOps.create(JsonOps.INSTANCE, server.registryAccess()) + val holders = JsonArray() + + for (item in BuiltInRegistries.ITEM) { + val effectHolder = SuspiciousEffectHolder.tryGet(item) ?: continue + val itemKey = BuiltInRegistries.ITEM.getKey(item) + val holderJson = JsonObject() + holderJson.addProperty("item", itemKey.toString()) + + val effectsJson = VanillaSuspiciousStewEffects.CODEC + .encodeStart(registryOps, effectHolder.suspiciousEffects) + .getOrThrow() + + holderJson.add("effects", effectsJson) + holders.add(holderJson) + } + + return holders + } +}