API

Geräusche und Partikel

Eigene Geräusche und Partikel werden wie Texturen mit der Mod ausgeliefert, und du benutzt sie über ihre ID wie die des Spiels. Du deklarierst sie wie den Rest der Inhalte.

Geräusche

content/sounds.craftCraftScript
sound "ruby_chime" { file: "ruby/chime", subtitle: "A ruby chimes", pitch: 1.2 }

sound "ruby_crumble" { files: ["ruby/crumble_1", "ruby/crumble_2"], subtitle: "Ruby ore crumbles", volume: 0.8 }
Eigenschaft Werte Standard
file Dateipfad ohne Endung: ruby/chime ist sounds/ruby/chime.ogg der Mod sounds/<id>.ogg
files mehrere Pfade, jedes Mal wird zufällig einer abgespielt —
subtitle was angezeigt wird, wenn Untertitel an sind —
volume 0–1 1
pitch Tonhöhe, 1 ist das Original 1

Es wird wie jedes Geräusch des Spiels abgespielt: player.play_sound("rubies:ruby_chime") für einen Spieler, world().play_sound(location, "rubies:ruby_chime") an einem Ort. Die Dateien sind .ogg.

Partikel

content/particles.craftCraftScript
particle "ruby_spark" { textures: ["ruby_spark_0", "ruby_spark_1"], motion: "sparkle" }
Eigenschaft Werte Standard
textures Bilder aus textures/particle/, ohne Endung. Mehrere ergeben eine Animation, in dieser Reihenfolge textures/particle/<id>.png
motion float_up: steigt auf und verblasst. flame: fast still, schrumpft. sparkle: treibt und funkelt. drift: schwebt auf der Stelle. float_up

Du erzeugst ihn über seine ID: world().spawn_particle("rubies:ruby_spark", location, 30, 1.5, 0.02), mit Anzahl, Streuung und Geschwindigkeit wie bei den Partikeln des Spiels. Um ein einzelnes Partikel in eine bestimmte Richtung zu schicken, übergib stattdessen eine Geschwindigkeit: world().spawn_particle("minecraft:end_rod", location, vector(0, 0.1, 0)), in Blöcken pro Tick. Partikel, die zu einem Ort hingezogen werden, wie minecraft:enchant, starten bei location + Geschwindigkeit und fliegen zur location.

Ein echter Einsatz

Wenn in der Beispiel-Mod ein Erz einen zusätzlichen Rubin fallen lässt, erklingt das Glockenspiel und Funken fliegen dort, wo der Block war:

events/mining.craftCraftScript
import { give_rubies } from "/lib/rewards"
import { SETTINGS } from "/settings"

on break(e) {
    let p = e.player
    if p == null { return }
    if e.block.type == "minecraft:diamond_ore" and chance(SETTINGS["bonus_chance"]) {
        give_rubies(p, 1)
        p.play_sound("rubies:ruby_chime")
        p.world.spawn_particle("rubies:ruby_spark", e.block.location, 12, 0.4, 0.02)
    }
}

In Kotlin

content/Sounds.ktKotlin
package com.example.rubies.content

object Sounds {
    const val CHIME = "rubies:ruby_chime"

    fun register(content: ContentBuilder) {
        content.sound("ruby_chime") { file("ruby/chime"); subtitle = "A ruby chimes"; pitch = 1.2f }
        content.sound("ruby_crumble") { file("ruby/crumble_1"); file("ruby/crumble_2"); subtitle = "Ruby ore crumbles"; volume = 0.8f }
    }
}
content/Particles.ktKotlin
package com.example.rubies.content

object Particles {
    const val SPARK = "rubies:ruby_spark"

    fun register(content: ContentBuilder) {
        content.particle("ruby_spark") { texture("ruby_spark_0"); texture("ruby_spark_1"); motion = ParticleMotion.SPARKLE }
    }
}

sound(id) { file(...); subtitle; volume; pitch } und particle(id) { texture(...); motion = ParticleMotion.SPARKLE } innerhalb des ContentBuilder. Zum Abspielen und Erzeugen: player.playSound(id), world.playSound(at, id), world.spawnParticle(id, at, count, spread, speed) und world.spawnParticle(id, at, Vector(0.0, 0.1, 0.0)).

Dateien

Mod Wo
CraftScript (Ordner) mods/rubies/sounds/ruby/chime.ogg, mods/rubies/textures/particle/ruby_spark_0.png
Kotlin oder Java src/main/resources/assets/rubies/sounds/ruby/chime.ogg, …/assets/rubies/textures/particle/ruby_spark_0.png