Minecraftforge: IResultFactory o fábricas de recetas extensibles

Creado en 20 ago. 2017  ·  3Comentarios  ·  Fuente: MinecraftForge/MinecraftForge

Actualmente, parece que la única forma de definir un resultado personalizado es crear un archivo para cada opción y poner condiciones de exclusión en cada una, o crear su propia fábrica de recetas. El problema con la fábrica de recetas es que las fábricas existentes se definen como lambdas o métodos y, por lo tanto, no son extensibles (lo que significa que tendría que duplicar todo el código incluso si lo único que quisiera cambiar es cómo se analiza el resultado).

Una solución fácil sería moverlos a una clase extensible con protected parseResult(JsonObject json, JsonContext context) que los modders pueden anular en una subclase. Una solución posiblemente más limpia sería proporcionar un IResultFactory que funcione de manera similar a todas las demás fábricas.

En cuanto a mi caso de uso: mi mod Ex Compressum admite múltiples variantes de Ex Nihilo al mismo tiempo, lo que significa que algunas de las recetas deben ajustarse automáticamente según la variante que se esté utilizando. Varios archivos con forge:mod_loaded cada uno funcionarían, pero no serían muy elegantes y excluirían la posibilidad de que un mod agregue soporte de su lado. Otro caso de uso serían las recetas que se ajustan según las configuraciones u otros factores externos.

Fábrica de recetas de maquetas usando la Solución 1 (fábricas de recetas predeterminadas extensibles):

public class NihiloRecipeFactory extends ShapelessOreRecipe {
    <strong i="12">@Override</strong>
    public ItemStack parseResult(JsonObject json, JsonContext context) {
        return ExNihiloProvider.getNihiloItem(json.get("value").getAsString());
    }
}

Receta de maqueta usando la Solución 2 (IResultFactory):

{
  "type": "forge:ore_shapeless",
  "result": {
    "type": "excompressum:nihilo_result_item",
    "value": "DUST",
    "count": 9
  },
  "ingredients": [
    {
      "item": "excompressum:compressed_block",
      "data": 0
    }
  ],
  "conditions": [
    {
      "type": "excompressum:has_nihilo_item",
      "value": "DUST"
    }
  ]
}

Puedo PR cualquier solución una vez que sepa cuál sería la preferida.

Stale

Comentario más útil

yo voto por el IResultFactory

Todos 3 comentarios

yo voto por el IResultFactory

Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad en mucho tiempo. Si este problema sigue siendo relevante y debe permanecer abierto, responda con una breve explicación (p. ej., "Revisé el código y este problema sigue siendo relevante porque ___" o "Aquí hay una captura de pantalla de este problema en la última versión"). ¡Gracias por sus aportaciones!

Este problema se ha cerrado automáticamente porque no ha tenido actividad en mucho tiempo. Siéntase libre de reabrirlo o crear un nuevo problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones