API

Shaderpakete

Ein Shaderpaket verändert das Aussehen des ganzen Bildes: Farben, Licht und Effekte. Es besteht aus Daten, nicht aus einer Mod: Spieler installieren es, indem sie seinen Ordner kopieren.

Ein Paket installieren

Kopiere den Ordner des Pakets nach shaderpacks/ im Spielordner. Dasselbe Paket funktioniert weiter, wenn Minecraft aktualisiert wird, denn Crafting passt es an das Spiel an.

Text
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glsl

Die Paketdatei

shaderpack.json benennt das Paket und listet seine Durchgänge auf. Sie laufen der Reihe nach, jeder auf dem Bild, das der vorherige erzeugt hat.

shaderpacks/sepia/shaderpack.jsonJSON
{ "name": "Sepia", "passes": ["tone.glsl", "vignette.glsl"] }

Ein Durchgang

Ein Durchgang ist eine GLSL-Datei mit einer einzigen Funktion:

shaderpacks/sepia/tone.glslGLSL
vec4 effect(vec4 color, vec2 uv) {
    float grey = dot(color.rgb, vec3(0.299, 0.587, 0.114));
    return vec4(grey * 1.07, grey * 0.74, grey * 0.43, 1.0);
}

color ist die Farbe des Pixels und uv seine Position auf dem Bildschirm, von (0, 0) bis (1, 1). Die Funktion gibt die neue Farbe zurück. In jedem Durchgang stehen außerdem drei Dinge bereit:

Name Was du bekommst
crafting_scene(uv) liest das Bild an einer beliebigen Position: Unschärfe, Kanten, Verzerrung
crafting_screen die Bildschirmgröße in Pixeln (vec2)
crafting_time die Zeit in Sekunden: Animationen, Pulse

Weitere Beispiele

Eine Vignette, die die Ecken abdunkelt:

shaderpacks/sepia/vignette.glslGLSL
vec4 effect(vec4 color, vec2 uv) {
    vec2 d = uv - 0.5;
    d.x *= crafting_screen.x / crafting_screen.y;
    float v = smoothstep(0.85, 0.25, length(d));
    return vec4(color.rgb * v, 1.0);
}

Eine sanfte Welle mit crafting_time und crafting_scene:

shaderpacks/sepia/wave.glslGLSL
vec4 effect(vec4 color, vec2 uv) {
    vec2 shift = vec2(sin(uv.y * 30.0 + crafting_time * 2.0) * 0.002, 0.0);
    return crafting_scene(uv + shift);
}

Das Paket auswählen

Öffne im Spielordner config/crafting/client.toml und setze shader_pack auf den Ordnernamen des Pakets. Leer bedeutet keines. Starte danach das Spiel.

config/crafting/client.tomlTOML
shader_pack = "sepia"

Das Paket wirkt in Welten; Menüs sehen normal aus.

Wenn ein Durchgang einen Fehler hat

Das Spiel zeigt eine Ressourcenwarnung und das Bild bleibt normal. Das Spielprotokoll sagt, was falsch ist, in welcher Datei und Zeile.