[JAVA] Comment réduire JsonModel of Item à l'aide de l'expression Forge BlockState

Aperçu

Par exemple, pour ajouter un élément avec des métadonnées, il vous fallait autant de fichiers json que le nombre de métadonnées (4 cette fois), mais comment le faire avec 2 (réutiliser le même modèle)

environnement

Minecraft-1.10.2 Minecraft-1.11.2 Minecraft-1.12.2

(* Je ne l'ai pas essayé, peut-être que d'autres versions sont possibles)

Fichier JSON à ajouter

(Ci-après, modid est l'ID du mod qui ajoute l'élément)

Tout d'abord, créez le fichier JSON suivant dans assets / modid / models / ** block ** / ** À ce stade, assurez-vous de l'ajouter à la position du modèle du bloc au lieu de l'élément **

item_generated.json


{
  "parent": "item/generated"
}

<détails> <résumé> Il s'agit d'un élément qui s'affiche comme une plaque normale, et si vous voulez avoir des outils, etc. correctement, remplacez ** généré ** par ** ordinateur de poche **. </ résumé>

Pour les autres modèles (y compris ceux fabriqués par vos soins), vous pouvez les utiliser en les plaçant sous assets / modid / models / ** block ** et en spécifiant le modèle.

Ensuite, créez le fichier JSON suivant dans assets / modid / blockstates / (Ajoutez autant de métas à ajouter aux variantes)

sample_item.json


{
  "forge_marker": 1,
  "defaults": {
    "model": "modid:item_generated",
    "transform": "forge:default-item",
    "uvlock": true
  },
  "variants": {
    "meta0": [{
      "textures": {
        "layer0": "modid:items/sample_item_0"
      }
    }],
    "meta1": [{
      "textures": {
        "layer0": "modid:items/sample_item_1"
      }
    }],
    "meta2": [{
      "textures": {
        "layer0": "modid:items/sample_item_2"
      }
    }],
    "meta3": [{
      "textures": {
        "layer0": "modid:items/sample_item_3"
      }
    }]
  }
}
Les spécifications de texture sont affichées les unes sur les autres à mesure que le nombre augmente, comme layer0 et layer1 (on ne sait pas combien de feuilles peuvent être utilisées).

Enregistrement du modèle (kotlin)

Vient ensuite l'enregistrement du modèle ajouté plus tôt.

ClientProxy.kt


for (i in 0 until 4) {
    ModelLoader.setCustomModelResourceLocation(sampleItem, i,
            ModelResourceLocation(ResourceLocation(modid, "sample_item"), "meta$i"))
}

La même chose est vraie pour java

ClientProxy.java


for (int i = 0; i < 4; i++) {
    ModelLoader.setCustomModelResourceLocation(sampleItem, i,
            new ModelResourceLocation(new ResourceLocation(modid, "sample_item"), "meta" + i));
}

finalement

Probablement le même que Block si vous jouez avec le deuxième argument de ModelResourceLocation,

sample_item.json


{
  "forge_marker": 1,
  "defaults": {
    "model": "modid:item_generated",
    "transform": "forge:default-item",
    "uvlock": true
  },
  "variants": {
    "meta": {
      "0":{   },
      "1":{   },
      "2":{   },
      "3":{   }
  }
}

Je pense que ça peut être façonné comme ça ~~ Mais je l'ai arrêté parce que c'est ennuyeux ~~.

Recommended Posts