MC Toolkit

Anleitungen / Bauen & Ressourcen

Benutzerdefinierte Gemälde und Schallplatten brauchen zwei Pakete, und die Installation von nur einem ist der übliche Fehler

Das Datenpaket registriert den Inhalt; das Ressourcenpaket liefert die Textur und den Klang. Nur das Datenpaket, und es wird registriert, ohne dass etwas angezeigt wird. Dazu das 16×16-Limit und was die Schallplattenlänge wirklich steuert.

Gemälde und Musikschallplatten sind in modernem Java beide echte Registries, was bedeutet, dass du sie hinzufügen kannst, anstatt Vanilla-Einträge zu ersetzen. Nichts, was du hinzufügst, verdrängt ein vorhandenes Gemälde oder eine Schallplatte.

Der Haken ist, dass der Inhalt auf zwei verschiedene Pakettypen aufgeteilt ist, und jeder allein nutzlos ist.

Was wohin gehört

Das Datenpaket registriert die Sache:

data/<ns>/painting_variant/<id>.json    asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json        sound_event, description, length_in_seconds, comparator_output

Das Ressourcenpaket liefert, was du siehst und hörst:

assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json

Installiere nur das Datenpaket, und der Inhalt wird erfolgreich registriert — er existiert, /give findet ihn, und es gibt einfach keine Textur und kein Audio. Das ist ein viel verwirrenderes Ergebnis als ein glatter Fehlschlag, und es ist der übliche Grund, warum ein benutzerdefiniertes Gemälde „nicht funktioniert" hat. Das Tool auf dieser Seite liefert beide in einer einzigen Zip-Datei, genau damit sie nicht getrennt werden können.

Beachte die beiden pack.mcmeta-Dateien. Es sind separate Pakete mit separaten Identitäten; es gibt kein kombiniertes Format, das beide enthält.

Registry-IDs sind strenger als Dateinamen

Eine ID darf nur a-z, 0-9, _, . und - enthalten (plus / für Unterordner). Bei allem anderen überspringt das Spiel diese Datei mit einer „Invalid path"-Zeile im Log — das Paket lädt, und der Eintrag existiert einfach nie, was schwerer zu erkennen ist als ein Fehlschlag. Großbuchstaben und Leerzeichen sind die beiden, die Leute erwischen, weil beide im Dateinamen, den du hereingezogen hast, völlig normal sind.

Gemälde: bis zu 16×16, und 17 bricht das Paket

Vanillas eigene Gemälde reichen von 1 × 1 bis 4 × 4 Blöcke, und dieses Tool bietet denselben Bereich. Das Format erlaubt mehr: 26.3 liest width und height als ganze Blöcke von 1 bis 16, und ein 16 × 16 Gemälde lädt, hängt und bleibt an jeder Wand mit 16 × 16 Blöcken Platz — getestet auf einem 26.3-Server. Was entscheidet, ob ein Gemälde hängen bleibt, ist der Platz, nicht die Größe: Eines, das nicht passt, wo es hängt, fällt als Item herunter, und ein Vanilla-1 × 1 ohne etwas dahinter fällt genauso.

Jenseits von 16 begrenzt das Spiel die Zahl nicht, es verweigert sie. "width": 17 schlägt fehl mit „Value must be within range [1;16]", der gesamte Registry-Ladevorgang stoppt damit, und die Welt öffnet sich nicht, bis das Paket entfernt wird.

Die Größe wird im JSON als width und height deklariert, in Blöcken. Sie wird nicht aus dem PNG abgeleitet, also ist ein 3 × 1 Gemälde, dessen Textur quadratisch ist, eine gültige Datei, die gestreckt angezeigt wird.

Schallplattenlänge ist kein Etikett

length_in_seconds ist, wann das Spiel entscheidet, dass der Track vorbei ist. Eine Sekunde nach der deklarierten Länge schneidet der Plattenspieler den Ton ab, stoppt die Musiknoten und schaltet das Redstone-Signal ab, das er ausgibt, während ein Lied spielt — volle Stärke, an die Blöcke um ihn herum, genau so lange, wie er denkt, dass der Track noch läuft.

Eine ungenaue Länge ist also kein kosmetischer Fehler. Deklariere einen 200-Sekunden-Track als 100, und die Musik wird auf halber Strecke abgeschnitten, wobei das Signal im selben Moment abfällt; deklariere ihn als 300, und der Plattenspieler hält sein Signal durch 100 Sekunden Stille aufrecht. So oder so löst Redstone, das auf das Ende einer Schallplatte wartet, zur falschen Zeit aus. Dieses Tool liest die echte Dauer aus der Datei, anstatt dich sie eintippen zu lassen, genau aus diesem Grund.

Ein Komparator liest etwas anderes: comparator_output, eine feste Zahl von 0 bis 15, die so lange gilt, wie die Schallplatte im Plattenspieler sitzt, ob spielend oder beendet. Sie steigt nicht über den Track an, und die Länge ändert sie nicht — Vanilla nutzt sie, um Schallplatten zu unterscheiden (13 gibt 1, Katze 2, Blocks 3).

Tracks werden außerdem mit "stream": true in sounds.json geschrieben. Musik ist lang, und einen vollen Track vor dem Abspielen in den Speicher zu laden ruckelt — Streaming ist die richtige Standardeinstellung für alles in Schallplattenlänge und die falsche für einen kurzen Soundeffekt.

Eigene Gemälde und Schallplatten →

Weitere Anleitungen

Alle ansehen →