API
Sons et particules
Les sons et les particules personnalisés sont livrés dans le mod, comme les textures, et tu les utilises par leur id comme ceux du jeu. Tu les déclares comme le reste du contenu.
Sons
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 }| Propriété | Valeurs | Par défaut |
|---|---|---|
file |
chemin du fichier sans extension : ruby/chime est le fichier sounds/ruby/chime.ogg du mod |
sounds/<id>.ogg |
files |
plusieurs chemins ; l’un d’eux est joué au hasard à chaque fois | — |
subtitle |
ce qui s’affiche quand les sous-titres sont activés | — |
volume |
0–1 | 1 |
pitch |
hauteur ; 1 est l’original | 1 |
Il se joue comme n’importe quel son du jeu : player.play_sound("rubies:ruby_chime") pour un joueur, world().play_sound(location, "rubies:ruby_chime") à un endroit. Les fichiers sont au format .ogg.
Particules
particle "ruby_spark" { textures: ["ruby_spark_0", "ruby_spark_1"], motion: "sparkle" }| Propriété | Valeurs | Par défaut |
|---|---|---|
textures |
images de textures/particle/, sans extension. Plusieurs forment une animation, dans cet ordre |
textures/particle/<id>.png |
motion |
float_up : monte et s’estompe. flame : presque immobile, rétrécit. sparkle : dérive et scintille. drift : flotte sur place. |
float_up |
Tu la fais apparaître par son id : world().spawn_particle("rubies:ruby_spark", location, 30, 1.5, 0.02), avec le nombre, la dispersion et la vitesse, comme pour les particules du jeu. Pour envoyer une particule dans une direction donnée, passe plutôt une vitesse : world().spawn_particle("minecraft:end_rod", location, vector(0, 0.1, 0)), en blocs par tick. Les particules attirées vers un endroit, comme minecraft:enchant, partent de location + vitesse et volent vers location.
Un vrai exemple
Dans le mod d’exemple, quand un minerai lâche un rubis en plus, le carillon retentit et des étincelles jaillissent là où était le bloc :
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)
}
}En 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 } et particle(id) { texture(...); motion = ParticleMotion.SPARKLE } dans le ContentBuilder. Pour jouer et faire apparaître : player.playSound(id), world.playSound(at, id), world.spawnParticle(id, at, count, spread, speed) et world.spawnParticle(id, at, Vector(0.0, 0.1, 0.0)).
Fichiers
| Mod | Où |
|---|---|
| CraftScript (dossier) | mods/rubies/sounds/ruby/chime.ogg, mods/rubies/textures/particle/ruby_spark_0.png |
| Kotlin ou Java | src/main/resources/assets/rubies/sounds/ruby/chime.ogg, …/assets/rubies/textures/particle/ruby_spark_0.png |