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
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
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:
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
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 }
}
}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 |