Extractor: Make Recipes work

This commit is contained in:
Snowiiii 2024-11-01 18:17:19 +01:00
parent 1b510eaa21
commit b090c34228
7 changed files with 42 additions and 17 deletions

View File

@ -47,7 +47,7 @@ class Extractor : ModInitializer {
try { try {
val out = outputDirectory.resolve(ext.fileName()) val out = outputDirectory.resolve(ext.fileName())
val fileWriter = FileWriter(out.toFile(), StandardCharsets.UTF_8) val fileWriter = FileWriter(out.toFile(), StandardCharsets.UTF_8)
gson.toJson(ext.extract(server.registryManager), fileWriter) gson.toJson(ext.extract(server), fileWriter)
fileWriter.close() fileWriter.close()
logger.info("Wrote " + out.toAbsolutePath()) logger.info("Wrote " + out.toAbsolutePath())
} catch (e: java.lang.Exception) { } catch (e: java.lang.Exception) {
@ -61,6 +61,6 @@ class Extractor : ModInitializer {
fun fileName(): String fun fileName(): String
@Throws(Exception::class) @Throws(Exception::class)
fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement fun extract(server: MinecraftServer): JsonElement
} }
} }

View File

@ -4,8 +4,8 @@ import com.google.gson.JsonArray
import com.google.gson.JsonElement import com.google.gson.JsonElement
import com.google.gson.JsonObject import com.google.gson.JsonObject
import de.snowii.extractor.Extractor import de.snowii.extractor.Extractor
import net.minecraft.registry.DynamicRegistryManager
import net.minecraft.registry.Registries import net.minecraft.registry.Registries
import net.minecraft.server.MinecraftServer
import net.minecraft.util.math.BlockPos import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Box import net.minecraft.util.math.Box
import net.minecraft.world.EmptyBlockView import net.minecraft.world.EmptyBlockView
@ -17,7 +17,7 @@ class Blocks : Extractor.Extractor {
return "blocks.json" return "blocks.json"
} }
override fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement { override fun extract(server: MinecraftServer): JsonElement {
val topLevelJson = JsonObject() val topLevelJson = JsonObject()
val blocksJson = JsonArray() val blocksJson = JsonArray()

View File

@ -7,9 +7,9 @@ import com.mojang.serialization.JsonOps
import de.snowii.extractor.Extractor import de.snowii.extractor.Extractor
import net.minecraft.component.ComponentMap import net.minecraft.component.ComponentMap
import net.minecraft.item.Item import net.minecraft.item.Item
import net.minecraft.registry.DynamicRegistryManager
import net.minecraft.registry.RegistryKeys import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryOps import net.minecraft.registry.RegistryOps
import net.minecraft.server.MinecraftServer
class Items : Extractor.Extractor { class Items : Extractor.Extractor {
@ -18,10 +18,10 @@ class Items : Extractor.Extractor {
} }
override fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement { override fun extract(server: MinecraftServer): JsonElement {
val itemsJson = JsonArray() val itemsJson = JsonArray()
for (item in registryManager.getOrThrow(RegistryKeys.ITEM).streamEntries().toList()) { for (item in server.registryManager.getOrThrow(RegistryKeys.ITEM).streamEntries().toList()) {
val itemJson = JsonObject() val itemJson = JsonObject()
itemJson.addProperty("id", item.key.orElseThrow().value.toString()) itemJson.addProperty("id", item.key.orElseThrow().value.toString())
@ -35,7 +35,7 @@ class Items : Extractor.Extractor {
itemJson.add( itemJson.add(
"components", "components",
ComponentMap.CODEC.encodeStart( ComponentMap.CODEC.encodeStart(
RegistryOps.of(JsonOps.INSTANCE, registryManager), RegistryOps.of(JsonOps.INSTANCE, server.registryManager),
realItem.components realItem.components
).getOrThrow() ).getOrThrow()
) )

View File

@ -10,6 +10,7 @@ import net.minecraft.network.listener.PacketListener
import net.minecraft.network.packet.PacketType import net.minecraft.network.packet.PacketType
import net.minecraft.network.state.* import net.minecraft.network.state.*
import net.minecraft.registry.DynamicRegistryManager import net.minecraft.registry.DynamicRegistryManager
import net.minecraft.server.MinecraftServer
class Packet : Extractor.Extractor { class Packet : Extractor.Extractor {
@ -17,7 +18,7 @@ class Packet : Extractor.Extractor {
return "packets.json" return "packets.json"
} }
override fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement { override fun extract(server: MinecraftServer): JsonElement {
val packetsJson = JsonArray() val packetsJson = JsonArray()
serializeFactory(HandshakeStates.C2S_FACTORY, packetsJson) serializeFactory(HandshakeStates.C2S_FACTORY, packetsJson)

View File

@ -7,6 +7,7 @@ import de.snowii.extractor.Extractor
import net.minecraft.registry.DynamicRegistryManager import net.minecraft.registry.DynamicRegistryManager
import net.minecraft.registry.Registries import net.minecraft.registry.Registries
import net.minecraft.registry.RegistryKeys import net.minecraft.registry.RegistryKeys
import net.minecraft.server.MinecraftServer
class Particles : Extractor.Extractor { class Particles : Extractor.Extractor {
@ -14,7 +15,7 @@ class Particles : Extractor.Extractor {
return "particles.json" return "particles.json"
} }
override fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement { override fun extract(server: MinecraftServer): JsonElement {
val particlesJson = JsonArray() val particlesJson = JsonArray()
for (particle in Registries.PARTICLE_TYPE) { for (particle in Registries.PARTICLE_TYPE) {

View File

@ -8,25 +8,47 @@ import de.snowii.extractor.Extractor
import net.minecraft.recipe.Recipe import net.minecraft.recipe.Recipe
import net.minecraft.registry.DynamicRegistryManager import net.minecraft.registry.DynamicRegistryManager
import net.minecraft.registry.RegistryKeys import net.minecraft.registry.RegistryKeys
import net.minecraft.server.MinecraftServer
class Recipes : Extractor.Extractor { class Recipes : Extractor.Extractor {
override fun fileName(): String { override fun fileName(): String {
return "recipes.json" return "recipes.json"
} }
override fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement { override fun extract(server: MinecraftServer): JsonElement {
val recipesJson = JsonArray() val recipesJson = JsonArray()
val gson = Gson() val gson = Gson()
for (recipeRaw in registryManager.getOrThrow(RegistryKeys.RECIPE).streamEntries().toList()) { for (recipeRaw in server.recipeManager.values()) {
val recipeJson = JsonObject() val recipeJson = JsonObject()
recipeJson.addProperty("id", recipeRaw.key.orElseThrow().value.toString()) recipeJson.addProperty("name", recipeRaw.id.value.toString())
recipeJson.addProperty("name", recipeRaw.key.orElseThrow().value.toString())
val recipe: Recipe<*> = recipeRaw.value() val recipe: Recipe<*> = recipeRaw.value()
recipeJson.addProperty("group", recipe.group) recipeJson.addProperty("group", recipe.group)
recipeJson.addProperty("ingredients", gson.toJson(recipe.ingredientPlacement.ingredients)) recipeJson.addProperty("type", recipe.type.toString())
recipeJson.addProperty("placementSlots", gson.toJson(recipe.ingredientPlacement.placementSlots)) val placementArray = JsonArray()
for (slot in recipe.ingredientPlacement.placementSlots) {
val placementJson = JsonObject()
if (slot.isPresent) {
placementJson.addProperty("position", slot.orElseThrow().placerOutputPosition)
}
placementArray.add(placementJson);
}
recipeJson.add("placementSlots", placementArray);
val ingredientArray = JsonArray()
for (ingredient in recipe.ingredientPlacement.ingredients) {
if (ingredient != null) {
val items = ingredient.matchingItems;
val ingredientJson = JsonObject()
for (item in items) {
ingredientJson.addProperty("id", item.idAsString)
}
ingredientArray.add(ingredientJson);
}
}
recipeJson.add("ingredients", ingredientArray);
// recipeJson.addProperty("placementSlots", gson.toJson(recipe.ingredientPlacement.placementSlots))
recipesJson.add(recipeJson) recipesJson.add(recipeJson)
} }

View File

@ -6,6 +6,7 @@ import com.google.gson.JsonObject
import de.snowii.extractor.Extractor import de.snowii.extractor.Extractor
import net.minecraft.registry.DynamicRegistryManager import net.minecraft.registry.DynamicRegistryManager
import net.minecraft.registry.Registries import net.minecraft.registry.Registries
import net.minecraft.server.MinecraftServer
class Sounds : Extractor.Extractor { class Sounds : Extractor.Extractor {
@ -13,7 +14,7 @@ class Sounds : Extractor.Extractor {
return "sounds.json" return "sounds.json"
} }
override fun extract(registryManager: DynamicRegistryManager.Immutable): JsonElement { override fun extract(server: MinecraftServer): JsonElement {
val itemsJson = JsonArray() val itemsJson = JsonArray()
for (sound in Registries.SOUND_EVENT) { for (sound in Registries.SOUND_EVENT) {