Hast du auch schon immer gedacht, dass die Welt doch nicht so rund ist, wie sie zu sein scheint? Hattest du jeher das Gefühl, dass die Kreiszahl eher quadratisch sein müsste?
Dann bist du genau hier richtig! Blockforum ist die neue Minecraft-Community. Werde Mitglied und teile mit uns Deine Leidenschaft. Wir freuen uns auf dich!

Der Zugriff auf das Forum ist für Gäste eingeschränkt, als registrierter Benutzer würden Dir alle Funktionen (wie z.B. Bildvergrößerung und Downloads) im Forum zur Verfügung stehen.

Ressourcenpaket - Blockstates, Blockmodelle & Itemmodelle

    • Tutorial

      Ressourcenpaket - Blockstates, Blockmodelle & Itemmodelle

      ← Zum Hauptthema

      In Absprache mit Loreley übernehme ich die Blockstates (Blockzustände) und Blockmodelle beim Ressourcenpakettutorial.

      Blockstates und Blockmodelle braucht man, wenn man entweder die Form eines Blockes verändern will, und/oder verschiedene Texturen für denselben Block zur Verfügung stellen will. Als Block zählt hier fast alles, was man platzieren kann, also auch so etwas wie eine Blume. Beispielsweise Rüstungsständer, Banner, Kisten und Fahrzeuge bilden hierbei allerdings eine Ausnahme.
      Man hat hier andere Möglichkeiten, als mit einem ctm-Mod wie OptiFine. Mit ctm kann man zwar auch einem Block variable Texturen zuweisen oder auch den verschiedenen Seiten unterschiedliche Texturen, allerdings ist es damit nicht möglich, Blöcke so zu verändern und anzusprechen, wie mit Blockstates und -modellen. Dafür bietet ctm andere Möglichkeiten, wie z.B. Connected Textures (verbundene Texturen). Darauf wird Loreley aber später noch genauer eingehen.

      Auf dieselbe Weise können auch Items verändert werden. Man kann beispielsweise einen Eimer in 3D erstellen. Dazu benötigt man dann Gegenstandsmodelle.

      Als erstes wird es um die Blockzustände (blockstates) gehen, und warum das überhaupt "Zustand" heißt, schließlich ist ein Block ja eigentlich nur quadratisch, praktisch und gut...

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      Blockstates (Blockzustände) - Allgemeines

      Die Blockzustände werden im Ressourcenpaket unter dem Pfad \assets\minecraft\blockstates gefunden.
      In einem Blockzustand wird immer auf mindestens ein Blockmodell verwiesen. Und auch nur dafür können die Blockstates verwendet werden: Zum Zuweisen von Blockmodellen.

      Die Struktur einer Blockstates-Datei sieht folgendermaßen aus (Schreibweise in der Datei siehe JSON-Format):
      • :nbtc: Haupt-Tag (namenslos)
        • :nbtc: variants: Beinhaltet die verschiedenen Zustände (Varianten) des Blockes
          • :nbtc: Zustand: Ein Zustand. Es gibt 2 Möglichkeiten, wie ein Zustand aufgebaut ist, hier die Erste, weiter unten die Zweite. Enthält in dieser Varainte alle Eigenschaften des Modells. Der Name des Tags ist die Bezeichnung des Zustandes. Bei den meisten Blöcken, gibt es nur einen Zustand, in diesem Falle ist der Tag-Name "normal".
            • :nbtst: model: Der Pfad der Modelldatei ab assets/minecraft/models/block. (Anstelle von \ werden hier / verwendet.)
            • :nbti: x: (Optional) Rotation des Modells auf der X-Achse. Kann nur in 90°-Schritten angegeben werden.
            • :nbti: y: (Optional) Rotation des Modells auf der Y-Achse. Kann nur in 90°-Schritten angegeben werden.
            • :nbtb: uvlock: (Optional) Gibt an, ob die Texturen mitgedreht werden sollen (false (Standard)) oder nicht (true)
          • :nbtli: Zustand2: Wie oben schon beschrieben, gibt es 2 Varianten für den Zustand. Ist er wie hier angegeben, kann er mehrere Modelle, die sich im Spiel zufällig abwechseln, enthalten.
            • :nbtc: ein Modell: Beinhaltet die Eigenschaften eines Modells.
              • :nbtedit: Alle Tags, die bei der 1. Variante des Zustandes verwendet wurden, können auch hier verwendet werden.
              • :nbti: weight: (Optional) Die Wahrscheinlichkeit, zu der dieses Modell in dieser Rotation verwendet wird. Standardmäßig ist es 1. Die Bedeutung dieser Werte werden weiter unten in diesem Beitrag erklärt.


      Wenn man sich das so ansieht, bietet Minecraft damit schon einige Möglichkeiten. Erst hierdurch ist es möglich, in Vanilla Minecraft einen Block mit zufälligen Texturen, oder sogar zufälligem Aussehen darzustellen.

      Modell zuweisen

      model-Tag

      Das ist echt recht gut umgesetzt von Minecraft: Man kann über Blockstates Modelle zuweisen. Sie müssen nur im Ordner assets/minecraft/models/block liegen, oder in einem Unterordner davon. Man ist hier also vollkommen freigestellt, wie man den models/block-Ordner strukturiert. Später in den Blockmodellen funktioniert das ganz ähnlich mit dem Zuweisen der Texturen. Ich habe beispielsweise einen flowers-Ordner unter Blockmodelle angelegt, in dem ich alle Modelldateien für Blumen speichere.
      Die Dateiendung *.json wird beim Dateipfad übrigens weggelassen.

      x-, y- und uvlock-Tag

      Dann hat man die Möglichkeit, das Modell auf der X- und Y-Achse zu drehen. Mit der Z-Achse geht das nicht, auch wenn das Wiki da etwas anderes behauptet. Es werden hierbei nicht die Texturen in dem Sinne gedreht, sondernern wirklich der gesamte Block. Würde man einen Kuchen auf der X-Achse um 180° drehen, stünde er auf dem Kopf.
      Dabei drehen sich aber die Texturen, durch die die Achse durchgeht, mit. Möchte man dies verhindern, kann man "uvlock" für dieses Modell auf true stellen.

      Der Herr Zufall

      Möchte man, dass die Blöcke variieren und nicht alle gleich aussehen, kann man auch den Zufall ins Spiel bringen.
      Dabei ist zu beachten, dass der Zustandstag kein Compound mehr ist, sondern ein List. In dieser Liste können dann mehrere Modelle angegeben werden. Man kann hierbei natürlich auch dieselbe Modell-Datei nehmen, und diese nur drehen. So macht es das Standardressourcenpaket bei Naturblöcken wie Erde und Gras - diese werden zufällig um die Y-Achse gedreht, sodass die obere Textur immer in eine anderer Richtung gedreht ist.
      Jetzt gibt es da ja noch dem weight-Tag. Dieser ist standardmäßig auf 1, kann aber auf jede andere beliebige Ganzzahl gesetzt werden. Die Tatsächliche Wahrscheinlichkeit errechnet sich aus allen weight-Werten. Addiert man alle weight-Werte, hat man die Entsprechung zu 100%.
      Beispiel: Es sind 3 unterschiedliche Modelle für einen Zustand definiert. Das 1. hat die Wahrscheinlichkeit 9, das 2. 16 und das 3. 25.
      9+16+25=50
      50 entspricht also 100%. Um die Entsprechung von 1% zu erhalten, muss man durch 100 teilen.
      Hier entspricht 1% also 0,5 Wahrscheinlichkeit. Teilt man jetzt die Wahrscheinlichkeiten der einzelnen Modelle durch 0,5, erhält man die Wahrscheinlichkeit in Prozent.
      In unserem Beispiel sähe das dann so aus: 9/0,5=18%; 16/0,5=32%; 25/0,5=50%.
      Standardmäßig ist weight 1, was bewirkt, dass alle Modelle immer gleichwahrscheinlich auftreten.

      Zustände

      Die einzelnen Zustände werden im folgendem Beitrag noch weiter erklärt, da dies sonst zu umfangreich für einen Beitrag würde.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      Blockstates (Blockzustände) - Dateien im Ordner "blockstates" und deren Inhalt.

      Bei den meisten Blöcken gibt es nur den Zustand "normal", bei einigen gibt es jedoch andere Zustände. Der Kuchen hat beispielsweise 7 Zustände. Sie sind nötig, da der Kuchen ja anders aussieht, wenn man von ihm isst, d.h. er wird kleiner.
      Und ich wünsche euch, dass ihr niemals das Feuer irgendwie verändern wollt. Hier gibt es nämlich 192 verschiedene Zustände, die damit zusammenhängen, ob das Feuer z.B. an der Wand oder an der Decke oder an der Wand und an der Decke brennt und so weiter. Alle Möglichkeiten ergeben hier 192 und damit ist Feuer auch der Spitzenreiter.

      Debug-Modus

      Alle Varianten könnt ihr euch auch im Debugmodus ansehen. Dazu müsst ihr beim Welterstellen mit gedrückter ⇧ Shift Taste zwischen den Welten schaltet.
      In dieser Welt sieht man die Dominanz das Feuers recht gut.



      Im F3-Modus kann man die Werte der Zustandsattribute des Blockes, welchen man gerade anguckt, rechts sehen.


      Der Zustandsname setzt sich, wenn es mehrere Zustände gibt, immer aus mindestens einem Attribut inklusive Wert zusammen. Manchmal gibt es auch mehrere Attribute, diese werden dann mit Kommas getrennt. Dies sieht beim Zauntor zum Beispiel so aus: "facing=south,in_wall=false,open=false". Das wäre dann der Tag-Name dieses Zustandes. Zu beachten ist, dass diese Tagnamen im JSON-Format in Anführungszeichen stehen müssen. Das geht zwar bei anderen Tag-Namen auch, ich mag das aber eher nicht so, da es für mich anders übersichtlicher ist. Anderenfalls kann man die Tag-Namen leicht mit Strings verwechseln.


      Die blockstates-Datei jedes Blockes


      Hier ist eine Liste mit allen Blöcken die es so in Minecraft gibt, alphabetisch sortiert. Die Attribute für die Zustände findet ihr in der Tabelle weiter unten, hier wird nur genannt, welcher Block welchen Zustand haben kann.

      [Tabelle in Arbeit]

      Alle Zustände im Überblick

      In alphabetischer Reihenfolge:
      Namemögliche WerteBeschreibung
      age0, 1, 2, 3, 4, 5, 6, 7Das Wachstumsstadium von Pflanzen. Für Setzlinge wird stage verwendet.
      allkeineStufen können per Befehl mit klatten Kanten erzeugt werden. Im Spiel gibt es nur bei Steinstufen einen Unterschied, man hat hier aber ein paar Varianten, die im Spiel nicht vorkommen und daher hat man hier die Möglichkeit "neue" Blöcke einzubinden.
      altfalse, trueJe nachdem, an welcher Seite und auf welcher Höhe das Feuer an dem Block brennt, werden 2 unterschiedliche Texturen verwendet.
      attachedfalse, trueGibt an, ob der Stolperdraht mit 2 Haken verbunden ist oder ob der Haken mit Stolperdraht und einem weiteren Haken verbunden ist.
      axisnone, x, y, zDie Achse, in die der Block ausgerichtet ist. Wird z.B. bei Stämmen verwendet. Facing wird nicht verwendet, da ein Baumstamm ja dann nicht in eine bestimmte Richtung guckt. Ist der Wert none, sind alle Seitenflächen bedeckt, kann nur durch einen Befehl erzeugt werden.
      bites0, 1, 2, 3, 4, 5, 6Gibt an, wie viele Kuchenstücke schon gegessen wurden.
      contentsacacia_sapling, allium, birch_sapling, blue_orchid, cactus, dandelion, dark_oak_sapling, dead_bush, empty, fern, houstonia, jungle_sapling, mushroom_brown, mushroom_red, oak_sapling, orange_tulip, oxeye_daisy, pink_tulip, red_tulip, rose, spruce_sapling, white_tulipDer Inhalt eines Blumentopfes.
      damage0, 1, 2Beim Amboss, wie beschädigt dieser ist.
      delay1, 2, 3, 4Die eingestellte Verzögerung eines Verstärkers.
      eastfalse, trueManchen Blöcken reicht das facing nicht aus. Beispielsweise Zäune können sich in mehrere Richtungen verbinden, daher wird hier für jede Richtung mit true und false gearbeitet.
      east (Redstone)none, side, upNone wenn das Redstone sich nicht nach Osten verbindet; side, wenn es sich nach Osten auf derselben Höhe verbindet und up wenn es sich Richtung Osten nach oben verbindet.
      extendedfalse, trueGibt an, ob ein Kolben ausgefahren ist.
      eyefalse, trueBei einem Endportalrahmen, ob ein Enderauge in ihm dargestellt wird oder nicht.
      facingdown, down_x, down_z, east, north, south, up, up_x, up_z, westDie Richtung, in die der Block schaut. Wird z.B. beim Werfer verwendet. Je nach Block fallen up und down weg. Beim Hebel gibt es statt up und down up_x, up_z, down_x und down_z, jenachdem, in welche Richtung der Hebel ausgerichtet ist.
      flipfalse, trueJe nachdem, an welcher Seite und auf welcher Höhe das Feuer an dem Block brennt, wird die Textur gespiegelt.
      half (bottom/top)bottom, topGibt an, ob sich der Block auf dem Boden oder an der Decke befindet.
      half (lower/upper)lower, upperGibt bei 2 Block hohen Objekten an, welcher Teil es ist.
      has_bottle_0false, trueWird beim Braustand verwendet und gibt an, ob im linken Slot eine Flasche ist.
      has_bottle_1false, trueWird beim Braustand verwendet und gibt an, ob im mittleren Slot eine Flasche ist.
      has_bottle_2false, trueWird beim Braustand verwendet und gibt an, ob im rechten Slot eine Flasche ist.
      hingeleft, rightGibt bei Türen die Seite an, auf der Sich die Türangel befindet. Normalerweise links, wenn allerdings links der Zür eine andere Tür ist, ist die Angel rechts.
      in_wallfalse, trueZauntore werden etwas tiefer dagestellt, wenn eine Steinmauer neben ihnen steht. Man könnte auf diese Weise auch Mauertore ins Spiel bringen.
      layer1, 2, 3, 4, 5, 6, 7, 8Gibt an, wie hoch die Schneeschicht ist.
      level0, 1, 2, 3Der Füllstand eines Kessels.
      lockedfalse, trueGibt an, ob ein Verstärker im Speichermodus ist, oder nicht.
      mapkeineWird bei einem Rahmen verwendet, wenn eine Karte in ihm ist.
      moisture0, 1, 2, 3, 4, 5, 6, 7Wie feucht das Ackerland ist. Im Überlebensmodus wird nur 0 für trocken und 7 für feucht verwendet. Mit einem Befehl lassen sich aber auch die anderen Stadien erzegen.
      modecompare, subtractOb ein Komparator im Vergleich- oder Subtrahierungsmodus ist.
      normalkeineWird verwendet, wenn es nur einen Zustand gibt, oder weitere Attribute ohne Werte.
      northfalse, trueManchen Blöcken reicht das facing nicht aus. Beispielsweise Zäune können sich in mehrere Richtungen verbinden, daher wird hier für jede Richtung mit true und false gearbeitet.
      north (Redstone)none, side, upNone wenn das Redstone sich nicht nach Norden verbindet; side, wenn es sich nach Noedwn auf derselben Höhe verbindet und up wenn es sich Richtung Norden nach oben verbindet.
      openfalse, trueBei Türen und Zauntoren: ob diese offen oder geschlossen sind.
      partfood, headDa das Bett 2 Blcke groß ist, setzt es sich aus diesen beiden Hälften zusammen.
      power0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15Einige Objekte können jenachdem, welche Stromstärke sie abgeben, das Modell wechseln. Meist gibt es im Standardpaket jedoch nur 1-2 unterschiedliche Modelle, obwohl immer 15 möglich sind.
      poweredfalse, trueEinige Gegenstände, die auf Redstone reagieren haben jenachdem, ob sie aktiviert sind, ein unterschiedliches Aussehen.
      shape (Schiene)ascending_east, ascending_north, ascending_south, ascending_west, east_west, north_east, north_south, north_west, south_east, south_westAusrichtung der Schiene. Ascending= Aufsteigend, north_east, north_west, south_east und south_west nur bei normalen Schiene, da es woanders keine Kurven gibt.
      shape (Treppe)inner_left, inner_right, outer_left, outer_right, straightGibt an, wie sich die Treppe mit umliegenden Treppen verbunden hat.
      shortfalse, trueDer ausgefahrene Teil eines Kolbens verwendet während des aus- und einfahrens kurzzeitig ein Modell, bei dem er kürzer ist.
      snowyfalse, trueBei einem Gras-, Myzelblock o.ä., ob eine Schneeschicht auf ihm ist.
      southfalse, trueManchen Blöcken reicht das facing nicht aus. Beispielsweise Zäune können sich in mehrere Richtungen verbinden, daher wird hier für jede Richtung mit true und false gearbeitet.
      south (Redstone)none, side, upNone wenn das Redstone sich nicht nach Süden verbindet; side, wenn es sich nach Süden auf derselben Höhe verbindet und up wenn es sich Richtung Süden nach oben verbindet.
      stage0, 1Das Wachstumsstadium von Setzlingen. Das Standardressourcenpaket verwendet für beide Werte dasselbe Modell. Bei anderen Pflanzen wie Weizen wird age verwendet.
      suspendedfalse, trueGibt an, ob der Haken oder deer Stolperdraht in der Luft hängt.
      typenormal, stickyOb der ausgefahrene Teil eines Kolbens klebrig ist oder nicht.
      upfalse, trueWenn auf einer Mauer ein anderer Block ist, befindet sich an dieser Stelle ein Pfeiler. Dazu wird dieser Zustand benötigt.
      upper0, 1, 20 ist, wenn das Feuer auf dem Boden ist, bei 1 ist es an der Decke und die Linie, bei der beide Flammen zusammen stoßen ist nach nord-süd ausgerichtet, bei 2 nach west-ost.
      variantall_inside, all_outside, all_stem, center, east, north, north_east, north_west,stem, south, south_east, south_westGibt an, auf welchen Seiten die Außentextur von Riesenpilzen gezeigt wird. Bei center ist nur die obere Textur eine Außentextur. Stem ist der Stiel. All_inside und All_Stem sind nur mit Befehl verfügbar. All_Outside erhält man, wenn man einen Pilzblock mit der Verzauberung Behutsamkeit abbaut
      westfalse, trueManchen Blöcken reicht das facing nicht aus. Beispielsweise Zäune können sich in mehrere Richtungen verbinden, daher wird hier für jede Richtung mit true und false gearbeitet.
      west (Redstone)none, side, upNone wenn das Redstone sich nicht nach Westen verbindet; side, wenn es sich nach Westen auf derselben Höhe verbindet und up wenn es sich Richtung Westen nach oben verbindet.
      wetfalse, trueGibt an, ob der Schwamm nass ist

    Du bist nicht angemeldet.
    Anmelden oder Registrieren