API
Sons e partículas
Sons e partículas personalizados vêm dentro do mod, como as texturas, e você os usa pelo id, igual aos do próprio jogo. Você os declara como o resto do conteúdo.
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 }| Propriedade | Valores | Padrão |
|---|---|---|
file |
caminho do arquivo sem extensão: ruby/chime é o sounds/ruby/chime.ogg do mod |
sounds/<id>.ogg |
files |
vários caminhos; um é tocado ao acaso a cada vez | — |
subtitle |
o que aparece quando as legendas estão ativadas | — |
volume |
0–1 | 1 |
pitch |
tom; 1 é o original | 1 |
Ele toca como qualquer som do jogo: player.play_sound("rubies:ruby_chime") para um jogador, world().play_sound(location, "rubies:ruby_chime") em um local. Os arquivos são .ogg.
Partículas
particle "ruby_spark" { textures: ["ruby_spark_0", "ruby_spark_1"], motion: "sparkle" }| Propriedade | Valores | Padrão |
|---|---|---|
textures |
imagens de textures/particle/, sem extensão. Várias formam uma animação, nessa ordem |
textures/particle/<id>.png |
motion |
float_up: sobe e desaparece. flame: quase parada, encolhe. sparkle: se desloca e cintila. drift: flutua no lugar. |
float_up |
Você a gera pelo id: world().spawn_particle("rubies:ruby_spark", location, 30, 1.5, 0.02), com quantidade, dispersão e velocidade como as partículas do jogo. Para enviar uma partícula em uma direção dada, passe uma velocidade no lugar: world().spawn_particle("minecraft:end_rod", location, vector(0, 0.1, 0)), em blocos por tick. As partículas que são atraídas para um lugar, como minecraft:enchant, começam em location + velocity e voam até location.
Um uso real
No mod de exemplo, quando um minério dropa um rubi a mais, o som toca e faíscas saltam onde estava o bloco:
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)
}
}Em 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 } e particle(id) { texture(...); motion = ParticleMotion.SPARKLE } dentro do ContentBuilder. Para tocar e gerar: player.playSound(id), world.playSound(at, id), world.spawnParticle(id, at, count, spread, speed) e world.spawnParticle(id, at, Vector(0.0, 0.1, 0.0)).
Arquivos
| Mod | Onde |
|---|---|
| CraftScript (pasta) | 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 |