Minecraftforge: IResultFactory ou fabriques de recettes extensibles

Créé le 20 août 2017  ·  3Commentaires  ·  Source: MinecraftForge/MinecraftForge

Actuellement, il semble que la seule façon de définir un résultat personnalisé soit de créer un fichier pour chaque option et de mettre des conditions d'exclusion dans chacune, soit de créer votre propre usine de recettes. Le problème avec la fabrique de recettes est que les fabriques existantes sont définies soit comme des lambdas, soit comme des méthodes, et ne sont donc pas extensibles (ce qui signifie que vous devriez dupliquer tout le code même si tout ce que vous vouliez changer, c'est la façon dont le résultat est analysé).

Une solution simple serait de les déplacer dans une classe extensible avec un protected parseResult(JsonObject json, JsonContext context) moddeurs peuvent remplacer dans une sous-classe. Une solution peut-être plus propre serait de fournir un IResultFactory qui fonctionne comme toutes les autres usines.

En ce qui concerne mon cas d'utilisation : mon mod Ex Compressum prend en charge plusieurs variantes d'Ex Nihilo en même temps, ce qui signifie que certaines des recettes doivent s'ajuster automatiquement en fonction de la variante utilisée. Plusieurs fichiers avec forge:mod_loaded chacun fonctionneraient, mais ne seraient pas très élégants et excluraient la possibilité qu'un mod ajoute le support de leur côté. Un autre cas d'utilisation serait les recettes qui s'ajustent en fonction des configurations ou d'autres facteurs externes.

Usine de recettes de maquette à l'aide de la solution 1 (usines de recettes par défaut 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());
    }
}

Recette de maquette utilisant la solution 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"
    }
  ]
}

Je peux PR l'une ou l'autre solution une fois que je sais laquelle serait préférée.

Stale

Commentaire le plus utile

je vote pour la IResultFactory

Tous les 3 commentaires

je vote pour la IResultFactory

Ce problème a été automatiquement marqué comme obsolète, car il n'a pas eu d'activité depuis longtemps. Si ce problème est toujours d'actualité et doit rester ouvert, veuillez répondre avec une courte explication (par exemple "J'ai vérifié le code et ce problème est toujours d'actualité car ___." ou "Voici une capture d'écran de ce problème sur la dernière version"). Merci pour vos contributions!

Ce problème a été automatiquement fermé car il n'a pas eu d'activité depuis longtemps. N'hésitez pas à le rouvrir ou à créer un nouveau problème.

Cette page vous a été utile?
0 / 5 - 0 notes