[JAVA] So reduzieren Sie JsonModel of Item mithilfe des Forge-Ausdrucks BlockState

Überblick

Um beispielsweise ein Element mit Metadaten hinzuzufügen, benötigten Sie so viele JSON-Dateien wie die Anzahl der Metadaten (diesmal 4), aber wie geht das mit 2 (dasselbe Modell wiederverwenden)?

Umgebung

Minecraft-1.10.2 Minecraft-1.11.2 Minecraft-1.12.2

(* Ich habe es nicht ausprobiert, vielleicht sind andere Versionen möglich)

JSON-Datei zum Hinzufügen

(Im Folgenden ist modid die ID des Mods, der das Element hinzufügt.)

Erstellen Sie zunächst die folgende JSON-Datei in Assets / Modid / Models / ** Block ** / ** Stellen Sie zu diesem Zeitpunkt sicher, dass Sie es anstelle des Elements zur Modellposition des Blocks hinzufügen. **

item_generated.json


{
  "parent": "item/generated"
}
Dies ist ein Element, das wie eine normale Platte angezeigt wird. Wenn Sie Werkzeuge usw. ordnungsgemäß verwenden möchten, ändern Sie ** generiert ** in ** Handheld **.
Für andere Modelle (einschließlich selbst erstellter Modelle) können Sie sie verwenden, indem Sie sie unter Assets / Modid / Models / ** Block ** platzieren und das Modell angeben.

Erstellen Sie als Nächstes die folgende JSON-Datei in assets / modid / blockstates / (Fügen Sie so viele Metas hinzu, wie Sie Varianten hinzufügen möchten.)

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"
      }
    }]
  }
}
Texturspezifikationen werden als Layer0, Layer1 angezeigt, wenn die Anzahl steigt (es ist nicht bekannt, wie viele Blätter verwendet werden können).

Modellregistrierung (Kotlin)

Als nächstes wird die Registrierung des Modells hinzugefügt.

ClientProxy.kt


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

Gleiches gilt für Java

ClientProxy.java


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

Schließlich

Wahrscheinlich dasselbe wie Block, wenn Sie mit dem zweiten Argument von ModelResourceLocation spielen.

sample_item.json


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

Ich denke, es kann so geformt werden ~~ Aber ich habe es gestoppt, weil es nervt ~~.

Recommended Posts