pumpkin-api-zig/src/plugin.wit
2026-09-28 07:48:08 +00:00

14339 lines
379 KiB
Plaintext

/// The main entry point for a Pumpkin plugin.
/// This world defines the exports that the plugin must provide to the host
/// and the imports that the host provides to the plugin.
package pumpkin:plugin@0.1.0;
interface attributes {
enum attribute {
air-drag-modifier,
armor,
armor-toughness,
attack-damage,
attack-knockback,
attack-speed,
below-name-distance,
block-break-speed,
block-interaction-range,
bounciness,
burning-time,
camera-distance,
explosion-knockback-resistance,
entity-interaction-range,
fall-damage-multiplier,
flying-speed,
follow-range,
friction-modifier,
gravity,
jump-strength,
knockback-resistance,
luck,
max-absorption,
max-health,
mining-efficiency,
movement-efficiency,
movement-speed,
name-tag-distance,
oxygen-bonus,
safe-fall-distance,
scale,
sneaking-speed,
spawn-reinforcements,
step-height,
submerged-mining-speed,
sweeping-damage-ratio,
tempt-range,
water-movement-efficiency,
waypoint-transmit-range,
waypoint-receive-range,
}
enum modifier-operation {
add,
multiply-base,
multiply-total,
}
record attribute-modifier {
id: string,
amount: f64,
operation: modifier-operation,
}
}
interface biomes {
enum biome {
badlands,
bamboo-jungle,
basalt-deltas,
beach,
birch-forest,
cherry-grove,
cold-ocean,
crimson-forest,
dappled-forest,
dark-forest,
deep-cold-ocean,
deep-dark,
deep-frozen-ocean,
deep-lukewarm-ocean,
deep-ocean,
desert,
dripstone-caves,
end-barrens,
end-highlands,
end-midlands,
eroded-badlands,
flower-forest,
forest,
frozen-ocean,
frozen-peaks,
frozen-river,
grove,
ice-spikes,
jagged-peaks,
jungle,
lukewarm-ocean,
lush-caves,
mangrove-swamp,
meadow,
mushroom-fields,
nether-wastes,
ocean,
old-growth-birch-forest,
old-growth-pine-taiga,
old-growth-spruce-taiga,
pale-garden,
plains,
river,
savanna,
savanna-plateau,
small-end-islands,
snowy-beach,
snowy-plains,
snowy-slopes,
snowy-taiga,
soul-sand-valley,
sparse-jungle,
stony-peaks,
stony-shore,
sulfur-caves,
sunflower-plains,
swamp,
taiga,
the-end,
the-void,
warm-ocean,
warped-forest,
windswept-forest,
windswept-gravelly-hills,
windswept-hills,
windswept-savanna,
wooded-badlands,
}
}
/// Provides common types and utilities used across the entire plugin API.
interface common {
/// Serialized text component as a postcard byte array.
/// @deprecated Use the text-component resource from the text interface instead.
type raw-text-component = list<u8>;
/// Represents one entry in an NBT compound tag.
record nbt-entry {
key: string,
value: u32,
}
/// Represents a Minecraft NBT tag.
variant nbt-tag {
byte(s8),
short(s16),
int(s32),
long(s64),
float(f32),
double(f64),
byte-array(list<s8>),
string-tag(string),
list-tag(list<u32>),
compound(list<nbt-entry>),
int-array(list<s32>),
long-array(list<s64>),
}
/// Represents a Minecraft NBT tag tree.
record nbt-tree {
root: u32,
tags: list<nbt-tag>,
}
/// A position in the world grid (integers).
record block-pos {
x: s32,
y: s32,
z: s32,
}
/// A precise coordinate in the world (floats).
type position = tuple<f64, f64, f64>;
/// Represents the hands of a player.
enum hand {
left,
right,
}
/// Represents the game modes available in Minecraft.
enum game-mode {
survival,
creative,
adventure,
spectator,
}
/// The 16 base Minecraft colors.
enum named-color {
black,
dark-blue,
dark-green,
dark-aqua,
dark-red,
dark-purple,
gold,
gray,
dark-gray,
blue,
green,
aqua,
red,
light-purple,
yellow,
white,
}
/// An RGB color represented by its red, green, and blue components.
record rgb-color {
r: u8,
g: u8,
b: u8,
}
/// An ARGB color with alpha (transparency) channel.
record argb-color {
a: u8,
r: u8,
g: u8,
b: u8,
}
/// Represents the type of click interaction in a GUI.
enum click-type {
left,
right,
shift-left,
shift-right,
middle,
drop,
control-drop,
double-click,
number-key,
unknown,
}
/// Represents the various poses an entity can be in.
enum entity-pose {
standing,
fall-flying,
sleeping,
swimming,
spin-attack,
crouching,
long-jumping,
dying,
croaking,
using-tongue,
sitting,
roaring,
sniffing,
emerging,
digging,
sliding,
shooting,
inhaling,
}
/// All Minecraft-supported locales.
enum locale {
af-za,
ar-sa,
ast-es,
az-az,
ba-ru,
bar,
be-by,
bg-bg,
br-fr,
brb,
bs-ba,
ca-es,
cs-cz,
cy-gb,
da-dk,
de-at,
de-ch,
de-de,
el-gr,
en-au,
en-ca,
en-gb,
en-nz,
en-pt,
en-ud,
en-us,
enp,
enws,
eo-uy,
es-ar,
es-cl,
es-ec,
es-es,
es-mx,
es-uy,
es-ve,
esan,
et-ee,
eu-es,
fa-ir,
fi-fi,
fil-ph,
fo-fo,
fr-ca,
fr-fr,
fra-de,
fur-it,
fy-nl,
ga-ie,
gd-gb,
gl-es,
haw-us,
he-il,
hi-in,
hr-hr,
hu-hu,
hy-am,
id-id,
ig-ng,
io-en,
is-is,
isv,
it-it,
ja-jp,
jbo-en,
ka-ge,
kk-kz,
kn-in,
ko-kr,
ksh,
kw-gb,
la-la,
lb-lu,
li-li,
lmo,
lo-la,
lol-us,
lt-lt,
lv-lv,
lzh,
mk-mk,
mn-mn,
ms-my,
mt-mt,
nah,
nds-de,
nl-be,
nl-nl,
nn-no,
no-no,
oc-fr,
ovd,
pl-pl,
pt-br,
pt-pt,
qya-aa,
ro-ro,
rpr,
ru-ru,
ry-ua,
sah-sah,
se-no,
sk-sk,
sl-si,
so-so,
sq-al,
sr-cs,
sr-sp,
sv-se,
sxu,
szl,
ta-in,
th-th,
tl-ph,
tlh-aa,
tok,
tr-tr,
tt-ru,
uk-ua,
val-es,
vec-it,
vi-vn,
yi-de,
yo-ng,
zh-cn,
zh-hk,
zh-tw,
zlm-arab,
}
}
interface damage-types {
enum damage-type {
arrow,
bad-respawn-point,
cactus,
campfire,
cramming,
dragon-breath,
drown,
dry-out,
ender-pearl,
explosion,
fall,
falling-anvil,
falling-block,
falling-stalactite,
fireball,
fireworks,
fly-into-wall,
freeze,
generic,
generic-kill,
hot-floor,
in-fire,
in-wall,
indirect-magic,
lava,
lightning-bolt,
mace-smash,
magic,
mob-attack,
mob-attack-no-aggro,
mob-projectile,
on-fire,
out-of-world,
outside-border,
player-attack,
player-explosion,
sonic-boom,
spear,
spit,
stalagmite,
starve,
sting,
sulfur-cube-hot,
sweet-berry-bush,
thorns,
thrown,
trident,
unattributed-fireball,
wind-charge,
wither,
wither-skull,
}
}
interface data-components {
enum data-component {
custom-data,
max-stack-size,
max-damage,
damage,
unbreakable,
use-effects,
custom-name,
minimum-attack-charge,
damage-type,
item-name,
item-model,
lore,
rarity,
enchantments,
can-place-on,
can-break,
attribute-modifiers,
custom-model-data,
tooltip-display,
repair-cost,
creative-slot-lock,
enchantment-glint-override,
intangible-projectile,
food,
consumable,
use-remainder,
use-cooldown,
damage-resistant,
tool,
weapon,
attack-range,
enchantable,
equippable,
repairable,
glider,
tooltip-style,
death-protection,
blocks-attacks,
piercing-weapon,
kinetic-weapon,
attack-animation,
interact-animation,
additional-trade-cost,
block-transformer,
villager-food,
stored-enchantments,
dye,
dyed-color,
map-id,
map-decorations,
map-post-processing,
charged-projectiles,
bundle-contents,
potion-contents,
potion-duration-scale,
suspicious-stew-effects,
writable-book-content,
written-book-content,
trim,
debug-stick-state,
entity-data,
bucket-entity-data,
block-entity-data,
instrument,
provides-trim-material,
ominous-bottle-amplifier,
jukebox-playable,
provides-banner-patterns,
recipes,
lodestone-tracker,
firework-explosion,
fireworks,
profile,
note-block-sound,
banner-patterns,
base-color,
pot-decorations,
container,
block-state,
bees,
sulfur-cube-content,
lock,
container-loot,
break-sound,
compostable,
cooking-fuel,
brewing-fuel,
mob-visibility,
villager-variant,
wolf-variant,
wolf-sound-variant,
wolf-collar,
fox-variant,
salmon-size,
parrot-variant,
tropical-fish-pattern,
tropical-fish-base-color,
tropical-fish-pattern-color,
mooshroom-variant,
rabbit-variant,
pig-variant,
pig-sound-variant,
cow-variant,
cow-sound-variant,
chicken-variant,
chicken-sound-variant,
zombie-nautilus-variant,
frog-variant,
horse-variant,
painting-variant,
llama-variant,
axolotl-variant,
cat-variant,
cat-sound-variant,
cat-collar,
sheep-color,
shulker-color,
provides-pottery-pattern,
sign-text-front,
sign-text-back,
waxed,
cushion-color,
}
}
interface datapack {
/// Information about a discovered or loaded datapack.
record datapack-info {
id: string,
name: string,
description: string,
pack-format: u32,
is-enabled: bool,
recipe-count: u32,
function-count: u32,
}
/// Position options for enabling a datapack relative to other packs.
variant enable-position {
first,
last,
before(string),
after(string),
}
/// Global manager for inspecting and controlling server datapacks.
resource datapack-manager {
/// Returns all known datapacks (both enabled and available/disabled).
list-all-packs: func() -> list<datapack-info>;
/// Returns only currently enabled datapacks.
list-enabled-packs: func() -> list<datapack-info>;
/// Returns available (disabled) datapacks.
list-available-packs: func() -> list<datapack-info>;
/// Retrieves details about a specific datapack by name or ID.
get-pack: func(name: string) -> option<datapack-info>;
/// Checks if a datapack is currently enabled.
is-enabled: func(name: string) -> bool;
/// Enables a datapack with a specific priority position.
enable-pack: func(name: string, position: enable-position) -> result<_, string>;
/// Disables an enabled datapack.
disable-pack: func(name: string) -> result<_, string>;
/// Reloads all enabled datapacks, recipes, and function tags,
/// synchronizes recipes with online players, and triggers `#minecraft:load`.
reload: func() -> result<_, string>;
/// Executes a datapack function or function tag (e.g. "namespace:fn" or "#namespace:tag").
/// Returns the number of commands executed.
execute-function: func(name: string) -> result<u32, string>;
}
}
interface entity-statuses {
enum entity-status {
armadillo-peek,
armorstand-wobble,
boat-launch,
boat-sink,
body-break,
cancel-shake-wetness,
chest-break,
death,
dolphin-looking-for-treasure,
drown-particles,
eat-grass,
end-ram,
feet-break,
fireworks-explode,
fishing-rod-reel-in,
fox-eat,
full-debug-info,
guardian-attack-sound,
head-break,
honey-jump,
honey-slide,
in-love-hearts,
jump,
kinetic-hit,
legs-break,
love-hearts,
mainhand-break,
offer-flower,
offhand-break,
permission-level-admins,
permission-level-all,
permission-level-gamemasters,
permission-level-moderators,
permission-level-owners,
poof,
protected-from-death,
ravager-roared,
ravager-stunned,
reduced-debug-info,
saddle-break,
shake,
shake-wetness,
silverfish-merge-anim,
sniffer-digging-sound,
sonic-charge,
squid-anim-synch,
start-attacking,
start-ram,
stop-attacking,
stop-offer-flower,
swap-hands,
taming-failed,
taming-succeeded,
teleport,
tendrils-shiver,
tnt-prime,
trusting-failed,
trusting-succeeded,
use-item-complete,
villager-angry,
villager-happy,
villager-sweat,
witch-hat-magic,
zombie-converting,
}
}
interface entity-types {
enum entity-type {
acacia-boat,
acacia-chest-boat,
allay,
area-effect-cloud,
armadillo,
armor-stand,
arrow,
axolotl,
bamboo-chest-raft,
bamboo-raft,
bat,
bee,
birch-boat,
birch-chest-boat,
blaze,
block-display,
bogged,
breeze,
breeze-wind-charge,
camel,
camel-husk,
cat,
cave-spider,
cherry-boat,
cherry-chest-boat,
chest-minecart,
chicken,
cod,
command-block-minecart,
copper-golem,
cow,
creaking,
creeper,
cushion,
dark-oak-boat,
dark-oak-chest-boat,
dolphin,
donkey,
dragon-fireball,
drowned,
egg,
elder-guardian,
end-crystal,
ender-dragon,
ender-pearl,
enderman,
endermite,
evoker,
evoker-fangs,
experience-bottle,
experience-orb,
eye-of-ender,
falling-block,
fireball,
firework-rocket,
fishing-bobber,
fox,
frog,
furnace-minecart,
ghast,
giant,
glow-item-frame,
glow-squid,
goat,
guardian,
happy-ghast,
hoglin,
hopper-minecart,
horse,
husk,
illusioner,
interaction,
iron-golem,
item,
item-display,
item-frame,
jungle-boat,
jungle-chest-boat,
leash-knot,
lightning-bolt,
lingering-potion,
llama,
llama-spit,
magma-cube,
mangrove-boat,
mangrove-chest-boat,
mannequin,
marker,
minecart,
mooshroom,
mule,
nautilus,
oak-boat,
oak-chest-boat,
ocelot,
ominous-item-spawner,
painting,
pale-oak-boat,
pale-oak-chest-boat,
panda,
parched,
parrot,
phantom,
pig,
piglin,
piglin-brute,
pillager,
player,
polar-bear,
poplar-boat,
poplar-chest-boat,
pufferfish,
rabbit,
ravager,
salmon,
sheep,
shulker,
shulker-bullet,
silverfish,
skeleton,
skeleton-horse,
slime,
small-fireball,
sniffer,
snow-golem,
snowball,
spawner-minecart,
spectral-arrow,
spider,
splash-potion,
spruce-boat,
spruce-chest-boat,
squid,
stray,
strider,
sulfur-cube,
tadpole,
text-display,
tnt,
tnt-minecart,
trader-llama,
trident,
tropical-fish,
turtle,
vex,
villager,
vindicator,
wandering-trader,
warden,
wind-charge,
witch,
wither,
wither-skeleton,
wither-skull,
wolf,
zoglin,
zombie,
zombie-horse,
zombie-nautilus,
zombie-villager,
zombified-piglin,
}
}
interface game-events {
enum game-event {
block-activate,
block-attach,
block-change,
block-close,
block-deactivate,
block-destroy,
block-detach,
block-open,
block-place,
bounce,
container-close,
container-open,
drink,
eat,
elytra-glide,
entity-damage,
entity-die,
entity-dismount,
entity-interact,
entity-mount,
entity-place,
entity-action,
equip,
explode,
flap,
fluid-pickup,
fluid-place,
hit-ground,
instrument-play,
item-interact-finish,
item-interact-start,
jukebox-play,
jukebox-stop-play,
lightning-strike,
note-block-play,
prime-fuse,
projectile-land,
projectile-shoot,
sculk-sensor-tendrils-clicking,
shear,
shriek,
splash,
step,
swim,
teleport,
unequip,
resonate-1,
resonate-2,
resonate-3,
resonate-4,
resonate-5,
resonate-6,
resonate-7,
resonate-8,
resonate-9,
resonate-10,
resonate-11,
resonate-12,
resonate-13,
resonate-14,
resonate-15,
}
}
interface game-rules {
enum game-rule {
advance-time,
advance-weather,
allow-entering-nether-using-portals,
block-drops,
block-explosion-drop-decay,
command-block-output,
command-blocks-work,
drowning-damage,
elytra-movement-check,
ender-pearls-vanish-on-death,
entity-drops,
fall-damage,
fire-damage,
fire-spread-radius-around-player,
forgive-dead-players,
freeze-damage,
global-sound-events,
immediate-respawn,
keep-inventory,
lava-source-conversion,
limited-crafting,
locator-bar,
log-admin-commands,
max-block-modifications,
max-command-forks,
max-command-sequence-length,
max-entity-cramming,
max-minecart-speed,
max-snow-accumulation-height,
mob-drops,
mob-explosion-drop-decay,
mob-griefing,
natural-health-regeneration,
player-movement-check,
players-nether-portal-creative-delay,
players-nether-portal-default-delay,
players-sleeping-percentage,
projectiles-can-break-blocks,
pvp,
raids,
random-tick-speed,
reduced-debug-info,
respawn-radius,
send-command-feedback,
show-advancement-messages,
show-death-messages,
spawn-mobs,
spawn-monsters,
spawn-patrols,
spawn-phantoms,
spawn-wandering-traders,
spawn-wardens,
spawner-blocks-work,
spectators-generate-chunks,
spread-vines,
tnt-explodes,
tnt-explosion-drop-decay,
universal-anger,
water-source-conversion,
}
variant game-rule-value {
int(s32),
%bool(bool),
}
}
interface i18n {
use common.{locale};
/// Retrieves a translated string from the host.
///
/// # Arguments
/// * `key`: The namespaced translation key (e.g. `pumpkin:my_key`).
/// * `locale`: The target locale.
///
/// # Returns
/// The localized string, falling back to English or the key itself.
translate: func(key: string, locale: locale) -> string;
/// Loads custom translations from a JSON string.
///
/// # Arguments
/// * `namespace`: The namespace to associate these keys with.
/// * `json`: A JSON string containing a flat map of translations.
/// * `locale`: The target locale for these translations.
load-translations: func(namespace: string, json: string, locale: locale);
}
interface ipc {
type plugin-id = string;
type ipc-message = list<u8>;
/// Sends a message to the specified plugin, synchronously receiving a response (or an error).
send-ipc-message: func(recipient: plugin-id, message: ipc-message) -> result<result<ipc-message, string>>;
}
interface logging {
enum level {
trace,
debug,
info,
warn,
error,
}
/// log any general purpose message
log: func(level: level, message: string);
/// This function is meant to be used by the tracing crate.
log-tracing: func(event: list<u8>);
}
/// Plugin metadata describing the plugin and its compatibility.
interface metadata {
record plugin-metadata {
/// Name of the plugin.
name: string,
/// Plugin version (semver).
version: string,
/// Plugin authors.
authors: list<string>,
/// Short description of the plugin.
description: string,
/// Plugin dependencies.
dependencies: list<string>,
/// Permissions requested by the plugin.
permissions: list<string>,
}
get-metadata: func() -> plugin-metadata;
}
interface particles {
enum particle {
angry-villager,
block,
block-marker,
bubble,
sulfur-bubbles,
noxious-gas,
noxious-gas-cloud,
geyser,
geyser-base,
geyser-poof,
geyser-plume,
cloud,
copper-fire-flame,
crit,
damage-indicator,
dragon-breath,
dripping-lava,
falling-lava,
landing-lava,
dripping-water,
falling-water,
dust,
dust-color-transition,
effect,
elder-guardian,
enchanted-hit,
enchant,
end-rod,
entity-effect,
explosion-emitter,
explosion,
gust,
small-gust,
gust-emitter-large,
gust-emitter-small,
sonic-boom,
falling-dust,
firework,
fishing,
flame,
infested,
cherry-leaves,
pale-oak-leaves,
red-poplar-leaves,
orange-poplar-leaves,
yellow-poplar-leaves,
tinted-leaves,
sculk-soul,
sculk-charge,
sculk-charge-pop,
soul-fire-flame,
soul,
flash,
happy-villager,
composter,
heart,
instant-effect,
item,
vibration,
trail,
pause-mob-growth,
reset-mob-growth,
item-slime,
item-cobweb,
item-snowball,
large-smoke,
lava,
mycelium,
note,
poof,
portal,
rain,
smoke,
white-smoke,
sneeze,
spit,
squid-ink,
sweep-attack,
totem-of-undying,
underwater,
splash,
witch,
bubble-pop,
current-down,
bubble-column-up,
nautilus,
dolphin,
campfire-cosy-smoke,
campfire-signal-smoke,
dripping-honey,
falling-honey,
landing-honey,
falling-nectar,
falling-spore-blossom,
ash,
crimson-spore,
warped-spore,
spore-blossom-air,
dripping-obsidian-tear,
falling-obsidian-tear,
landing-obsidian-tear,
reverse-portal,
white-ash,
small-flame,
snowflake,
dripping-dripstone-lava,
falling-dripstone-lava,
dripping-dripstone-water,
falling-dripstone-water,
glow-squid-ink,
glow,
wax-on,
wax-off,
electric-spark,
scrape,
shriek,
egg-crack,
dust-plume,
trial-spawner-detection,
trial-spawner-detection-ominous,
vault-connection,
dust-pillar,
ominous-spawning,
raid-omen,
trial-omen,
block-crumble,
firefly,
sulfur-cube-goo,
}
}
interface permission {
/// Represents the player's permission level
///
/// Permission levels determine the player's access to commands and server operations.
/// Each numeric level corresponds to a specific role:
/// - `Zero`: `normal`: Player can use basic commands.
/// - `One`: `moderator`: Player can bypass spawn protection.
/// - `Two`: `gamemaster`: Player or executor can use more commands and player can use command blocks.
/// - `Three`: `admin`: Player or executor can use commands related to multiplayer management.
/// - `Four`: `owner`: Player or executor can use all of the commands, including commands related to server management.
enum permission-level {
zero,
one,
two,
three,
four,
}
/// Describes the default behavior for permissions
variant permission-default {
/// Permission is not granted by default
deny,
/// Permission is granted by default
allow,
/// Permission is granted by default to operators
op(permission-level),
}
/// A child permission entry
record permission-child {
node: string,
value: bool,
}
/// Defines a permission node in the system
record permission {
/// The full node name (e.g., "minecraft:command.gamemode")
node: string,
/// Description of what this permission does
description: string,
/// The default value of this permission
default: permission-default,
/// Children nodes that are affected by this permission
children: list<permission-child>,
}
}
interface potions {
enum potion-type {
water,
mundane,
thick,
awkward,
night-vision,
long-night-vision,
invisibility,
long-invisibility,
leaping,
long-leaping,
strong-leaping,
fire-resistance,
long-fire-resistance,
swiftness,
long-swiftness,
strong-swiftness,
slowness,
long-slowness,
strong-slowness,
turtle-master,
long-turtle-master,
strong-turtle-master,
water-breathing,
long-water-breathing,
healing,
strong-healing,
harming,
strong-harming,
poison,
long-poison,
strong-poison,
regeneration,
long-regeneration,
strong-regeneration,
strength,
long-strength,
strong-strength,
weakness,
long-weakness,
luck,
slow-falling,
long-slow-falling,
wind-charged,
weaving,
oozing,
infested,
}
}
/// Provides functionality to schedule tasks to be executed later on the server.
interface scheduler {
/// Schedules a task to be executed once after the specified number of ticks.
///
/// * `handler-id`: The unique ID of the handler to call when the task executes.
/// * `delay-ticks`: The number of game ticks to wait before execution (20 ticks = 1 second).
///
/// Returns a unique task ID that can be used to cancel the task.
schedule-delayed-task: func(handler-id: u32, delay-ticks: u64) -> u32;
/// Schedules a task to be executed repeatedly.
///
/// * `handler-id`: The unique ID of the handler to call when the task executes.
/// * `delay-ticks`: The number of game ticks to wait before the first execution.
/// * `period-ticks`: The number of game ticks between subsequent executions.
///
/// Returns a unique task ID that can be used to cancel the task.
schedule-repeating-task: func(handler-id: u32, delay-ticks: u64, period-ticks: u64) -> u32;
/// Cancels a scheduled task if it hasn't finished yet.
///
/// * `task-id`: The ID of the task to cancel.
cancel-task: func(task-id: u32);
}
interface screens {
enum screen {
generic-9x1,
generic-9x2,
generic-9x3,
generic-9x4,
generic-9x5,
generic-9x6,
generic-3x3,
crafter-3x3,
anvil,
beacon,
blast-furnace,
brewing-stand,
crafting,
enchantment,
furnace,
grindstone,
hopper,
lectern,
loom,
merchant,
shulker-box,
smithing,
smoker,
cartography-table,
stonecutter,
}
}
interface sounds {
enum sound-category {
master,
music,
records,
weather,
blocks,
hostile,
neutral,
players,
ambient,
voice,
ui,
}
enum sound {
entity-allay-ambient-with-item,
entity-allay-ambient-without-item,
entity-allay-death,
entity-allay-hurt,
entity-allay-item-given,
entity-allay-item-taken,
entity-allay-item-thrown,
ambient-cave,
ambient-basalt-deltas-additions,
ambient-basalt-deltas-loop,
ambient-basalt-deltas-mood,
ambient-crimson-forest-additions,
ambient-crimson-forest-loop,
ambient-crimson-forest-mood,
ambient-nether-wastes-additions,
ambient-nether-wastes-loop,
ambient-nether-wastes-mood,
ambient-soul-sand-valley-additions,
ambient-soul-sand-valley-loop,
ambient-soul-sand-valley-mood,
ambient-warped-forest-additions,
ambient-warped-forest-loop,
ambient-warped-forest-mood,
ambient-underwater-enter,
ambient-underwater-exit,
ambient-underwater-loop,
ambient-underwater-loop-additions,
ambient-underwater-loop-additions-rare,
ambient-underwater-loop-additions-ultra-rare,
block-amethyst-block-break,
block-amethyst-block-chime,
block-amethyst-block-fall,
block-amethyst-block-hit,
block-amethyst-block-place,
block-amethyst-block-resonate,
block-amethyst-block-step,
block-amethyst-cluster-break,
block-amethyst-cluster-fall,
block-amethyst-cluster-hit,
block-amethyst-cluster-place,
block-amethyst-cluster-step,
block-ancient-debris-break,
block-ancient-debris-step,
block-ancient-debris-place,
block-ancient-debris-hit,
block-ancient-debris-fall,
block-anvil-break,
block-anvil-destroy,
block-anvil-fall,
block-anvil-hit,
block-anvil-land,
block-anvil-place,
block-anvil-step,
block-anvil-use,
entity-armadillo-eat,
entity-armadillo-hurt,
entity-armadillo-hurt-reduced,
entity-armadillo-ambient,
entity-armadillo-step,
entity-armadillo-death,
entity-armadillo-roll,
entity-armadillo-land,
entity-armadillo-scute-drop,
entity-armadillo-unroll-finish,
entity-armadillo-peek,
entity-armadillo-unroll-start,
entity-armadillo-brush,
item-armor-equip-chain,
item-armor-equip-diamond,
item-armor-equip-elytra,
item-armor-equip-generic,
item-armor-equip-gold,
item-armor-equip-iron,
item-armor-equip-leather,
item-armor-equip-copper,
item-armor-equip-netherite,
item-armor-equip-turtle,
item-armor-equip-wolf,
item-armor-unequip-wolf,
item-armor-equip-nautilus,
item-armor-unequip-nautilus,
entity-armor-stand-break,
entity-armor-stand-fall,
entity-armor-stand-hit,
entity-armor-stand-place,
entity-arrow-hit,
entity-arrow-hit-player,
entity-arrow-shoot,
item-axe-strip,
item-axe-scrape,
item-axe-wax-off,
entity-axolotl-attack,
entity-axolotl-death,
entity-axolotl-hurt,
entity-axolotl-idle-air,
entity-axolotl-idle-water,
entity-axolotl-splash,
entity-axolotl-swim,
block-azalea-break,
block-azalea-fall,
block-azalea-hit,
block-azalea-place,
block-azalea-step,
block-azalea-leaves-break,
block-azalea-leaves-fall,
block-azalea-leaves-hit,
block-azalea-leaves-place,
block-azalea-leaves-step,
entity-baby-nautilus-ambient,
entity-baby-nautilus-ambient-land,
entity-baby-nautilus-death,
entity-baby-nautilus-death-land,
entity-baby-nautilus-eat,
entity-baby-nautilus-hurt,
entity-baby-nautilus-hurt-land,
entity-nautilus-riding,
entity-baby-nautilus-swim,
block-bamboo-break,
block-bamboo-fall,
block-bamboo-hit,
block-bamboo-place,
block-bamboo-step,
block-bamboo-sapling-break,
block-bamboo-sapling-hit,
block-bamboo-sapling-place,
block-bamboo-wood-break,
block-bamboo-wood-fall,
block-bamboo-wood-hit,
block-bamboo-wood-place,
block-bamboo-wood-step,
block-bamboo-wood-door-close,
block-bamboo-wood-door-open,
block-bamboo-wood-trapdoor-close,
block-bamboo-wood-trapdoor-open,
block-bamboo-wood-button-click-off,
block-bamboo-wood-button-click-on,
block-bamboo-wood-pressure-plate-click-off,
block-bamboo-wood-pressure-plate-click-on,
block-bamboo-wood-fence-gate-close,
block-bamboo-wood-fence-gate-open,
block-barrel-close,
block-barrel-open,
block-basalt-break,
block-basalt-step,
block-basalt-place,
block-basalt-hit,
block-basalt-fall,
entity-bat-ambient,
entity-bat-death,
entity-bat-hurt,
entity-bat-loop,
entity-bat-takeoff,
block-beacon-activate,
block-beacon-ambient,
block-beacon-deactivate,
block-beacon-power-select,
entity-bee-death,
entity-bee-hurt,
entity-bee-loop-aggressive,
entity-bee-loop,
entity-bee-sting,
entity-bee-pollinate,
block-beehive-drip,
block-beehive-enter,
block-beehive-exit,
block-beehive-shear,
block-beehive-work,
block-bell-use,
block-bell-resonate,
block-big-dripleaf-break,
block-big-dripleaf-fall,
block-big-dripleaf-hit,
block-big-dripleaf-place,
block-big-dripleaf-step,
entity-blaze-ambient,
entity-blaze-burn,
entity-blaze-death,
entity-blaze-hurt,
entity-blaze-shoot,
entity-boat-paddle-land,
entity-boat-paddle-water,
entity-bogged-ambient,
entity-bogged-death,
entity-bogged-hurt,
entity-bogged-shear,
entity-bogged-step,
block-bone-block-break,
block-bone-block-fall,
block-bone-block-hit,
block-bone-block-place,
block-bone-block-step,
item-bone-meal-use,
item-book-page-turn,
item-book-put,
block-blastfurnace-fire-crackle,
item-bottle-empty,
item-bottle-fill,
item-bottle-fill-dragonbreath,
entity-breeze-charge,
entity-breeze-deflect,
entity-breeze-inhale,
entity-breeze-idle-ground,
entity-breeze-idle-air,
entity-breeze-shoot,
entity-breeze-jump,
entity-breeze-land,
entity-breeze-slide,
entity-breeze-death,
entity-breeze-hurt,
entity-breeze-whirl,
entity-breeze-wind-burst,
block-brewing-stand-brew,
item-brush-brushing-generic,
item-brush-brushing-sand,
item-brush-brushing-gravel,
item-brush-brushing-sand-complete,
item-brush-brushing-gravel-complete,
block-bubble-column-bubble-pop,
block-bubble-column-upwards-ambient,
block-bubble-column-upwards-inside,
block-bubble-column-whirlpool-ambient,
block-bubble-column-whirlpool-inside,
ui-hud-bubble-pop,
item-bucket-empty,
item-bucket-empty-axolotl,
item-bucket-empty-fish,
item-bucket-empty-lava,
item-bucket-empty-powder-snow,
item-bucket-empty-sulfur-cube,
item-bucket-empty-tadpole,
item-bucket-fill,
item-bucket-fill-axolotl,
item-bucket-fill-fish,
item-bucket-fill-lava,
item-bucket-fill-powder-snow,
item-bucket-fill-sulfur-cube,
item-bucket-fill-tadpole,
item-bundle-drop-contents,
item-bundle-insert,
item-bundle-insert-fail,
item-bundle-remove-one,
block-cactus-flower-break,
block-cactus-flower-place,
block-cake-add-candle,
block-calcite-break,
block-calcite-step,
block-calcite-place,
block-calcite-hit,
block-calcite-fall,
entity-camel-husk-ambient,
entity-camel-husk-dash,
entity-camel-husk-dash-ready,
entity-camel-husk-death,
entity-camel-husk-eat,
entity-camel-husk-hurt,
entity-camel-husk-saddle,
entity-camel-husk-sit,
entity-camel-husk-stand,
entity-camel-husk-step,
entity-camel-husk-step-sand,
entity-camel-ambient,
entity-camel-dash,
entity-camel-dash-ready,
entity-camel-death,
entity-camel-eat,
entity-camel-hurt,
entity-camel-saddle,
entity-camel-sit,
entity-camel-stand,
entity-camel-step,
entity-camel-step-sand,
block-campfire-crackle,
block-candle-ambient,
block-candle-break,
block-candle-extinguish,
block-candle-fall,
block-candle-hit,
block-candle-place,
block-candle-step,
entity-baby-cat-ambient,
entity-baby-cat-stray-ambient,
entity-baby-cat-death,
entity-baby-cat-eat,
entity-baby-cat-hiss,
entity-baby-cat-beg-for-food,
entity-baby-cat-hurt,
entity-baby-cat-purr,
entity-baby-cat-purreow,
entity-cat-ambient,
entity-cat-stray-ambient,
entity-cat-hiss,
entity-cat-hurt,
entity-cat-death,
entity-cat-eat,
entity-cat-beg-for-food,
entity-cat-purr,
entity-cat-purreow,
entity-cat-royal-ambient,
entity-cat-royal-stray-ambient,
entity-cat-royal-hiss,
entity-cat-royal-hurt,
entity-cat-royal-death,
entity-cat-royal-eat,
entity-cat-royal-beg-for-food,
entity-cat-royal-purr,
entity-cat-royal-purreow,
block-cave-vines-break,
block-cave-vines-fall,
block-cave-vines-hit,
block-cave-vines-place,
block-cave-vines-step,
block-cave-vines-pick-berries,
block-chain-break,
block-chain-fall,
block-chain-hit,
block-chain-place,
block-chain-step,
block-cherry-wood-break,
block-cherry-wood-fall,
block-cherry-wood-hit,
block-cherry-wood-place,
block-cherry-wood-step,
block-cherry-sapling-break,
block-cherry-sapling-fall,
block-cherry-sapling-hit,
block-cherry-sapling-place,
block-cherry-sapling-step,
block-cherry-leaves-break,
block-cherry-leaves-fall,
block-cherry-leaves-hit,
block-cherry-leaves-place,
block-cherry-leaves-step,
block-cherry-wood-hanging-sign-step,
block-cherry-wood-hanging-sign-break,
block-cherry-wood-hanging-sign-fall,
block-cherry-wood-hanging-sign-hit,
block-cherry-wood-hanging-sign-place,
block-cherry-wood-door-close,
block-cherry-wood-door-open,
block-cherry-wood-trapdoor-close,
block-cherry-wood-trapdoor-open,
block-cherry-wood-button-click-off,
block-cherry-wood-button-click-on,
block-cherry-wood-pressure-plate-click-off,
block-cherry-wood-pressure-plate-click-on,
block-cherry-wood-fence-gate-close,
block-cherry-wood-fence-gate-open,
block-chest-close,
block-chest-locked,
block-chest-open,
entity-baby-chicken-ambient,
entity-baby-chicken-death,
entity-chicken-egg,
entity-baby-chicken-hurt,
entity-chicken-step,
entity-baby-chicken-step,
entity-chicken-ambient,
entity-chicken-hurt,
entity-chicken-death,
entity-chicken-picky-ambient,
entity-chicken-picky-hurt,
entity-chicken-picky-death,
block-chiseled-bookshelf-break,
block-chiseled-bookshelf-fall,
block-chiseled-bookshelf-hit,
block-chiseled-bookshelf-insert,
block-chiseled-bookshelf-insert-enchanted,
block-chiseled-bookshelf-step,
block-chiseled-bookshelf-pickup,
block-chiseled-bookshelf-pickup-enchanted,
block-chiseled-bookshelf-place,
block-chorus-flower-death,
block-chorus-flower-grow,
item-chorus-fruit-teleport,
block-cobweb-break,
block-cobweb-step,
block-cobweb-place,
block-cobweb-hit,
block-cobweb-fall,
entity-cod-ambient,
entity-cod-death,
entity-cod-flop,
entity-cod-hurt,
block-comparator-click,
block-composter-empty,
block-composter-fill,
block-composter-fill-success,
block-composter-ready,
block-conduit-activate,
block-conduit-ambient,
block-conduit-ambient-short,
block-conduit-attack-target,
block-conduit-deactivate,
block-copper-bulb-break,
block-copper-bulb-step,
block-copper-bulb-place,
block-copper-bulb-hit,
block-copper-bulb-fall,
block-copper-bulb-turn-on,
block-copper-bulb-turn-off,
block-copper-break,
block-copper-step,
block-copper-place,
block-copper-hit,
block-copper-fall,
block-copper-chest-close,
block-copper-chest-open,
block-copper-chest-weathered-close,
block-copper-chest-weathered-open,
block-copper-chest-oxidized-close,
block-copper-chest-oxidized-open,
block-copper-door-close,
block-copper-door-open,
entity-copper-golem-step,
entity-copper-golem-hurt,
entity-copper-golem-death,
entity-copper-golem-weathered-step,
entity-copper-golem-weathered-hurt,
entity-copper-golem-weathered-death,
entity-copper-golem-oxidized-step,
entity-copper-golem-oxidized-hurt,
entity-copper-golem-oxidized-death,
entity-copper-golem-spin,
entity-copper-golem-weathered-spin,
entity-copper-golem-oxidized-spin,
entity-copper-golem-no-item-get,
entity-copper-golem-no-item-no-get,
entity-copper-golem-item-drop,
entity-copper-golem-item-no-drop,
entity-copper-golem-become-statue,
block-copper-golem-statue-break,
block-copper-golem-statue-place,
block-copper-golem-statue-hit,
block-copper-golem-statue-step,
block-copper-golem-statue-fall,
entity-copper-golem-spawn,
entity-copper-golem-shear,
block-copper-grate-break,
block-copper-grate-step,
block-copper-grate-place,
block-copper-grate-hit,
block-copper-grate-fall,
block-copper-trapdoor-close,
block-copper-trapdoor-open,
block-coral-block-break,
block-coral-block-fall,
block-coral-block-hit,
block-coral-block-place,
block-coral-block-step,
entity-cow-milk,
entity-cow-ambient,
entity-cow-hurt,
entity-cow-death,
entity-cow-step,
entity-cow-moody-ambient,
entity-cow-moody-hurt,
entity-cow-moody-death,
entity-cow-moody-step,
block-crafter-craft,
block-crafter-fail,
entity-creaking-ambient,
entity-creaking-activate,
entity-creaking-deactivate,
entity-creaking-attack,
entity-creaking-death,
entity-creaking-step,
entity-creaking-freeze,
entity-creaking-unfreeze,
entity-creaking-spawn,
entity-creaking-sway,
entity-creaking-twitch,
block-creaking-heart-break,
block-creaking-heart-fall,
block-creaking-heart-hit,
block-creaking-heart-hurt,
block-creaking-heart-place,
block-creaking-heart-step,
block-creaking-heart-idle,
block-creaking-heart-spawn,
entity-creeper-death,
entity-creeper-hurt,
entity-creeper-primed,
block-crop-break,
item-crop-plant,
item-crossbow-hit,
item-crossbow-loading-end,
item-crossbow-loading-middle,
item-crossbow-loading-start,
item-crossbow-quick-charge-1,
item-crossbow-quick-charge-2,
item-crossbow-quick-charge-3,
item-crossbow-shoot,
entity-cushion-break,
entity-cushion-place,
entity-cushion-sit,
entity-cushion-get-up,
block-deadbush-idle,
block-decorated-pot-break,
block-decorated-pot-fall,
block-decorated-pot-hit,
block-decorated-pot-insert,
block-decorated-pot-insert-fail,
block-decorated-pot-step,
block-decorated-pot-place,
block-decorated-pot-shatter,
block-deepslate-bricks-break,
block-deepslate-bricks-fall,
block-deepslate-bricks-hit,
block-deepslate-bricks-place,
block-deepslate-bricks-step,
block-deepslate-break,
block-deepslate-fall,
block-deepslate-hit,
block-deepslate-place,
block-deepslate-step,
block-deepslate-tiles-break,
block-deepslate-tiles-fall,
block-deepslate-tiles-hit,
block-deepslate-tiles-place,
block-deepslate-tiles-step,
block-dispenser-dispense,
block-dispenser-fail,
block-dispenser-launch,
entity-dolphin-ambient,
entity-dolphin-ambient-water,
entity-dolphin-attack,
entity-dolphin-death,
entity-dolphin-eat,
entity-dolphin-hurt,
entity-dolphin-jump,
entity-dolphin-play,
entity-dolphin-splash,
entity-dolphin-swim,
entity-donkey-ambient,
entity-donkey-angry,
entity-donkey-chest,
entity-donkey-death,
entity-donkey-eat,
entity-donkey-hurt,
entity-donkey-jump,
block-dried-ghast-break,
block-dried-ghast-step,
block-dried-ghast-fall,
block-dried-ghast-ambient,
block-dried-ghast-ambient-water,
block-dried-ghast-place,
block-dried-ghast-place-in-water,
block-dried-ghast-transition,
block-dripstone-block-break,
block-dripstone-block-step,
block-dripstone-block-place,
block-dripstone-block-hit,
block-dripstone-block-fall,
block-dry-grass-ambient,
block-pointed-dripstone-break,
block-pointed-dripstone-step,
block-pointed-dripstone-place,
block-pointed-dripstone-hit,
block-pointed-dripstone-fall,
block-pointed-dripstone-land,
block-pointed-dripstone-drip-lava,
block-pointed-dripstone-drip-water,
block-pointed-dripstone-drip-lava-into-cauldron,
block-pointed-dripstone-drip-water-into-cauldron,
block-big-dripleaf-tilt-down,
block-big-dripleaf-tilt-up,
entity-drowned-ambient,
entity-drowned-ambient-water,
entity-drowned-death,
entity-drowned-death-water,
entity-drowned-hurt,
entity-drowned-hurt-water,
entity-drowned-shoot,
entity-drowned-step,
entity-drowned-swim,
item-dye-use,
entity-egg-throw,
entity-elder-guardian-ambient,
entity-elder-guardian-ambient-land,
entity-elder-guardian-curse,
entity-elder-guardian-death,
entity-elder-guardian-death-land,
entity-elder-guardian-flop,
entity-elder-guardian-hurt,
entity-elder-guardian-hurt-land,
item-elytra-flying,
block-enchantment-table-use,
block-ender-chest-close,
block-ender-chest-open,
entity-ender-dragon-ambient,
entity-ender-dragon-death,
entity-dragon-fireball-explode,
entity-ender-dragon-flap,
entity-ender-dragon-growl,
entity-ender-dragon-hurt,
entity-ender-dragon-shoot,
entity-ender-eye-death,
entity-ender-eye-launch,
entity-enderman-ambient,
entity-enderman-death,
entity-enderman-hurt,
entity-enderman-scream,
entity-enderman-stare,
entity-enderman-teleport,
entity-endermite-ambient,
entity-endermite-death,
entity-endermite-hurt,
entity-endermite-step,
entity-ender-pearl-throw,
block-end-gateway-spawn,
block-end-portal-frame-fill,
block-end-portal-spawn,
entity-evoker-ambient,
entity-evoker-cast-spell,
entity-evoker-celebrate,
entity-evoker-death,
entity-evoker-fangs-attack,
entity-evoker-hurt,
entity-evoker-prepare-attack,
entity-evoker-prepare-summon,
entity-evoker-prepare-wololo,
entity-experience-bottle-throw,
entity-experience-orb-pickup,
block-eyeblossom-open-long,
block-eyeblossom-open,
block-eyeblossom-close-long,
block-eyeblossom-close,
block-eyeblossom-idle,
block-fence-gate-close,
block-fence-gate-open,
item-firecharge-use,
block-firefly-bush-idle,
entity-firework-rocket-blast,
entity-firework-rocket-blast-far,
entity-firework-rocket-large-blast,
entity-firework-rocket-large-blast-far,
entity-firework-rocket-launch,
entity-firework-rocket-shoot,
entity-firework-rocket-twinkle,
entity-firework-rocket-twinkle-far,
block-fire-ambient,
block-fire-extinguish,
entity-fish-swim,
entity-fishing-bobber-retrieve,
entity-fishing-bobber-splash,
entity-fishing-bobber-throw,
item-flintandsteel-use,
block-flowering-azalea-break,
block-flowering-azalea-fall,
block-flowering-azalea-hit,
block-flowering-azalea-place,
block-flowering-azalea-step,
entity-fox-aggro,
entity-fox-ambient,
entity-fox-bite,
entity-fox-death,
entity-fox-eat,
entity-fox-hurt,
entity-fox-screech,
entity-fox-sleep,
entity-fox-sniff,
entity-fox-spit,
entity-fox-teleport,
block-suspicious-sand-break,
block-suspicious-sand-step,
block-suspicious-sand-place,
block-suspicious-sand-hit,
block-suspicious-sand-fall,
block-suspicious-gravel-break,
block-suspicious-gravel-step,
block-suspicious-gravel-place,
block-suspicious-gravel-hit,
block-suspicious-gravel-fall,
block-froglight-break,
block-froglight-fall,
block-froglight-hit,
block-froglight-place,
block-froglight-step,
block-frogspawn-step,
block-frogspawn-break,
block-frogspawn-fall,
block-frogspawn-hatch,
block-frogspawn-hit,
block-frogspawn-place,
entity-frog-ambient,
entity-frog-death,
entity-frog-eat,
entity-frog-hurt,
entity-frog-lay-spawn,
entity-frog-long-jump,
entity-frog-step,
entity-frog-tongue,
block-roots-break,
block-roots-step,
block-roots-place,
block-roots-hit,
block-roots-fall,
block-furnace-fire-crackle,
entity-generic-big-fall,
entity-generic-burn,
entity-generic-death,
entity-generic-drink,
entity-generic-eat,
entity-generic-explode,
entity-generic-extinguish-fire,
entity-generic-hurt,
entity-generic-small-fall,
entity-generic-splash,
entity-generic-swim,
entity-ghast-ambient,
entity-ghast-death,
entity-ghast-hurt,
entity-ghast-scream,
entity-ghast-shoot,
entity-ghast-warn,
entity-ghastling-ambient,
entity-ghastling-death,
entity-ghastling-hurt,
entity-ghastling-spawn,
block-gilded-blackstone-break,
block-gilded-blackstone-fall,
block-gilded-blackstone-hit,
block-gilded-blackstone-place,
block-gilded-blackstone-step,
block-glass-break,
block-glass-fall,
block-glass-hit,
block-glass-place,
block-glass-step,
item-glow-ink-sac-use,
entity-glow-item-frame-add-item,
entity-glow-item-frame-break,
entity-glow-item-frame-place,
entity-glow-item-frame-remove-item,
entity-glow-item-frame-rotate-item,
entity-glow-squid-ambient,
entity-glow-squid-death,
entity-glow-squid-hurt,
entity-glow-squid-squirt,
entity-goat-ambient,
entity-goat-death,
entity-goat-eat,
entity-goat-hurt,
entity-goat-long-jump,
entity-goat-milk,
entity-goat-prepare-ram,
entity-goat-ram-impact,
entity-goat-horn-break,
entity-goat-screaming-ambient,
entity-goat-screaming-death,
entity-goat-screaming-eat,
entity-goat-screaming-hurt,
entity-goat-screaming-long-jump,
entity-goat-screaming-milk,
entity-goat-screaming-prepare-ram,
entity-goat-screaming-ram-impact,
entity-goat-step,
item-golden-dandelion-use,
item-golden-dandelion-unuse,
block-grass-break,
block-grass-fall,
block-grass-hit,
block-grass-place,
block-grass-step,
block-gravel-break,
block-gravel-fall,
block-gravel-hit,
block-gravel-place,
block-gravel-step,
block-grindstone-use,
block-growing-plant-crop,
entity-guardian-ambient,
entity-guardian-ambient-land,
entity-guardian-attack,
entity-guardian-death,
entity-guardian-death-land,
entity-guardian-flop,
entity-guardian-hurt,
entity-guardian-hurt-land,
block-hanging-roots-break,
block-hanging-roots-fall,
block-hanging-roots-hit,
block-hanging-roots-place,
block-hanging-roots-step,
block-hanging-sign-step,
block-hanging-sign-break,
block-hanging-sign-fall,
block-hanging-sign-hit,
block-hanging-sign-place,
entity-happy-ghast-ambient,
entity-happy-ghast-death,
entity-happy-ghast-hurt,
entity-happy-ghast-riding,
block-heavy-core-break,
block-heavy-core-fall,
block-heavy-core-hit,
block-heavy-core-place,
block-heavy-core-step,
block-nether-wood-hanging-sign-step,
block-nether-wood-hanging-sign-break,
block-nether-wood-hanging-sign-fall,
block-nether-wood-hanging-sign-hit,
block-nether-wood-hanging-sign-place,
block-bamboo-wood-hanging-sign-step,
block-bamboo-wood-hanging-sign-break,
block-bamboo-wood-hanging-sign-fall,
block-bamboo-wood-hanging-sign-hit,
block-bamboo-wood-hanging-sign-place,
block-trial-spawner-break,
block-trial-spawner-step,
block-trial-spawner-place,
block-trial-spawner-hit,
block-trial-spawner-fall,
block-trial-spawner-spawn-mob,
block-trial-spawner-about-to-spawn-item,
block-trial-spawner-spawn-item,
block-trial-spawner-spawn-item-begin,
block-trial-spawner-detect-player,
block-trial-spawner-ominous-activate,
block-trial-spawner-ambient,
block-trial-spawner-ambient-ominous,
block-trial-spawner-open-shutter,
block-trial-spawner-close-shutter,
block-trial-spawner-eject-item,
entity-happy-ghast-equip,
entity-happy-ghast-unequip,
entity-happy-ghast-harness-goggles-up,
entity-happy-ghast-harness-goggles-down,
item-hoe-till,
entity-hoglin-ambient,
entity-hoglin-angry,
entity-hoglin-attack,
entity-hoglin-converted-to-zombified,
entity-hoglin-death,
entity-hoglin-hurt,
entity-hoglin-retreat,
entity-hoglin-step,
block-honey-block-break,
block-honey-block-fall,
block-honey-block-hit,
block-honey-block-place,
block-honey-block-slide,
block-honey-block-step,
item-honeycomb-wax-on,
item-honey-bottle-drink,
item-goat-horn-sound-0,
item-goat-horn-sound-1,
item-goat-horn-sound-2,
item-goat-horn-sound-3,
item-goat-horn-sound-4,
item-goat-horn-sound-5,
item-goat-horn-sound-6,
item-goat-horn-sound-7,
entity-horse-ambient,
entity-baby-horse-ambient,
entity-horse-angry,
entity-baby-horse-angry,
entity-horse-armor,
item-horse-armor-unequip,
entity-horse-breathe,
entity-baby-horse-breathe,
entity-horse-death,
entity-baby-horse-death,
entity-horse-eat,
entity-baby-horse-eat,
entity-horse-gallop,
entity-horse-hurt,
entity-baby-horse-hurt,
entity-horse-jump,
entity-horse-land,
entity-baby-horse-land,
entity-horse-saddle,
entity-horse-step,
entity-baby-horse-step,
entity-horse-step-wood,
entity-hostile-big-fall,
entity-hostile-death,
entity-hostile-hurt,
entity-hostile-small-fall,
entity-hostile-splash,
entity-hostile-swim,
entity-husk-ambient,
entity-husk-converted-to-zombie,
entity-husk-death,
entity-husk-hurt,
entity-husk-step,
entity-illusioner-ambient,
entity-illusioner-cast-spell,
entity-illusioner-death,
entity-illusioner-hurt,
entity-illusioner-mirror-move,
entity-illusioner-prepare-blindness,
entity-illusioner-prepare-mirror,
item-ink-sac-use,
block-iron-break,
block-iron-step,
block-iron-place,
block-iron-hit,
block-iron-fall,
block-iron-door-close,
block-iron-door-open,
entity-iron-golem-attack,
entity-iron-golem-damage,
entity-iron-golem-death,
entity-iron-golem-hurt,
entity-iron-golem-repair,
entity-iron-golem-step,
block-iron-trapdoor-close,
block-iron-trapdoor-open,
entity-item-frame-add-item,
entity-item-frame-break,
entity-item-frame-place,
entity-item-frame-remove-item,
entity-item-frame-rotate-item,
entity-item-break,
entity-item-pickup,
block-ladder-break,
block-ladder-fall,
block-ladder-hit,
block-ladder-place,
block-ladder-step,
block-lantern-break,
block-lantern-fall,
block-lantern-hit,
block-lantern-place,
block-lantern-step,
block-large-amethyst-bud-break,
block-large-amethyst-bud-place,
block-lava-ambient,
block-lava-extinguish,
block-lava-pop,
block-leaf-litter-break,
block-leaf-litter-step,
block-leaf-litter-place,
block-leaf-litter-hit,
block-leaf-litter-fall,
item-lead-untied,
item-lead-tied,
item-lead-break,
block-lever-click,
entity-lightning-bolt-impact,
entity-lightning-bolt-thunder,
entity-lingering-potion-throw,
entity-llama-ambient,
entity-llama-angry,
entity-llama-chest,
entity-llama-death,
entity-llama-eat,
entity-llama-hurt,
entity-llama-spit,
entity-llama-step,
entity-llama-swag,
item-llama-carpet-unequip,
entity-magma-cube-death-small,
block-lodestone-break,
block-lodestone-step,
block-lodestone-place,
block-lodestone-hit,
block-lodestone-fall,
item-lodestone-compass-lock,
item-spear-lunge-1,
item-spear-lunge-2,
item-spear-lunge-3,
item-mace-smash-air,
item-mace-smash-ground,
item-mace-smash-ground-heavy,
entity-magma-cube-death,
entity-magma-cube-hurt,
entity-magma-cube-hurt-small,
entity-magma-cube-jump,
entity-magma-cube-squish,
entity-magma-cube-squish-small,
block-mangrove-roots-break,
block-mangrove-roots-fall,
block-mangrove-roots-hit,
block-mangrove-roots-place,
block-mangrove-roots-step,
block-medium-amethyst-bud-break,
block-medium-amethyst-bud-place,
block-metal-break,
block-metal-fall,
block-metal-hit,
block-metal-place,
block-metal-pressure-plate-click-off,
block-metal-pressure-plate-click-on,
block-metal-step,
entity-minecart-inside-underwater,
entity-minecart-inside,
entity-minecart-riding,
entity-mooshroom-convert,
entity-mooshroom-eat,
entity-mooshroom-milk,
entity-mooshroom-suspicious-milk,
entity-mooshroom-shear,
block-moss-carpet-break,
block-moss-carpet-fall,
block-moss-carpet-hit,
block-moss-carpet-place,
block-moss-carpet-step,
block-pink-petals-break,
block-pink-petals-fall,
block-pink-petals-hit,
block-pink-petals-place,
block-pink-petals-step,
block-moss-break,
block-moss-fall,
block-moss-hit,
block-moss-place,
block-moss-step,
block-mud-break,
block-mud-fall,
block-mud-hit,
block-mud-place,
block-mud-step,
block-mud-bricks-break,
block-mud-bricks-fall,
block-mud-bricks-hit,
block-mud-bricks-place,
block-mud-bricks-step,
block-muddy-mangrove-roots-break,
block-muddy-mangrove-roots-fall,
block-muddy-mangrove-roots-hit,
block-muddy-mangrove-roots-place,
block-muddy-mangrove-roots-step,
entity-mule-ambient,
entity-mule-angry,
entity-mule-chest,
entity-mule-death,
entity-mule-eat,
entity-mule-hurt,
entity-mule-jump,
music-creative,
music-credits,
music-disc-5,
music-disc-11,
music-disc-13,
music-disc-blocks,
music-disc-bounce,
music-disc-cat,
music-disc-chirp,
music-disc-far,
music-disc-lava-chicken,
music-disc-mall,
music-disc-mellohi,
music-disc-pigstep,
music-disc-stal,
music-disc-strad,
music-disc-wait,
music-disc-ward,
music-disc-otherside,
music-disc-relic,
music-disc-creator,
music-disc-creator-music-box,
music-disc-precipice,
music-disc-tears,
music-dragon,
music-end,
music-game,
music-menu,
music-nether-basalt-deltas,
music-nether-crimson-forest,
music-overworld-deep-dark,
music-overworld-dripstone-caves,
music-overworld-grove,
music-overworld-jagged-peaks,
music-overworld-lush-caves,
music-overworld-swamp,
music-overworld-forest,
music-overworld-old-growth-taiga,
music-overworld-meadow,
music-overworld-cherry-grove,
music-nether-nether-wastes,
music-overworld-frozen-peaks,
music-overworld-snowy-slopes,
music-nether-soul-sand-valley,
music-overworld-stony-peaks,
music-nether-warped-forest,
music-overworld-flower-forest,
music-overworld-desert,
music-overworld-badlands,
music-overworld-jungle,
music-overworld-sparse-jungle,
music-overworld-bamboo-jungle,
music-overworld-sulfur-caves,
music-under-water,
entity-nautilus-ambient,
entity-nautilus-ambient-land,
entity-nautilus-dash,
entity-nautilus-dash-land,
entity-nautilus-dash-ready,
entity-nautilus-dash-ready-land,
entity-nautilus-death,
entity-nautilus-death-land,
entity-nautilus-eat,
entity-nautilus-hurt,
entity-nautilus-hurt-land,
entity-nautilus-swim,
block-nether-bricks-break,
block-nether-bricks-step,
block-nether-bricks-place,
block-nether-bricks-hit,
block-nether-bricks-fall,
block-nether-wart-break,
item-nether-wart-plant,
block-nether-wood-break,
block-nether-wood-fall,
block-nether-wood-hit,
block-nether-wood-place,
block-nether-wood-step,
block-nether-wood-door-close,
block-nether-wood-door-open,
block-nether-wood-trapdoor-close,
block-nether-wood-trapdoor-open,
block-nether-wood-button-click-off,
block-nether-wood-button-click-on,
block-nether-wood-pressure-plate-click-off,
block-nether-wood-pressure-plate-click-on,
block-nether-wood-fence-gate-close,
block-nether-wood-fence-gate-open,
intentionally-empty,
block-packed-mud-break,
block-packed-mud-fall,
block-packed-mud-hit,
block-packed-mud-place,
block-packed-mud-step,
block-stem-break,
block-stem-step,
block-stem-place,
block-stem-hit,
block-stem-fall,
block-nylium-break,
block-nylium-step,
block-nylium-place,
block-nylium-hit,
block-nylium-fall,
block-nether-sprouts-break,
block-nether-sprouts-step,
block-nether-sprouts-place,
block-nether-sprouts-hit,
block-nether-sprouts-fall,
block-fungus-break,
block-fungus-step,
block-fungus-place,
block-fungus-hit,
block-fungus-fall,
block-weeping-vines-break,
block-weeping-vines-step,
block-weeping-vines-place,
block-weeping-vines-hit,
block-weeping-vines-fall,
block-wart-block-break,
block-wart-block-step,
block-wart-block-place,
block-wart-block-hit,
block-wart-block-fall,
block-netherite-block-break,
block-netherite-block-step,
block-netherite-block-place,
block-netherite-block-hit,
block-netherite-block-fall,
block-netherrack-break,
block-netherrack-step,
block-netherrack-place,
block-netherrack-hit,
block-netherrack-fall,
block-note-block-basedrum,
block-note-block-bass,
block-note-block-bell,
block-note-block-chime,
block-note-block-flute,
block-note-block-guitar,
block-note-block-harp,
block-note-block-hat,
block-note-block-pling,
block-note-block-snare,
block-note-block-trumpet,
block-note-block-trumpet-exposed,
block-note-block-trumpet-oxidized,
block-note-block-trumpet-weathered,
block-note-block-xylophone,
block-note-block-iron-xylophone,
block-note-block-cow-bell,
block-note-block-didgeridoo,
block-note-block-bit,
block-note-block-banjo,
block-note-block-imitate-zombie,
block-note-block-imitate-skeleton,
block-note-block-imitate-creeper,
block-note-block-imitate-ender-dragon,
block-note-block-imitate-wither-skeleton,
block-note-block-imitate-piglin,
entity-ocelot-hurt,
entity-ocelot-ambient,
entity-ocelot-death,
item-ominous-bottle-dispose,
entity-painting-break,
entity-painting-place,
block-pale-hanging-moss-idle,
entity-panda-pre-sneeze,
entity-panda-sneeze,
entity-panda-ambient,
entity-panda-death,
entity-panda-eat,
entity-panda-step,
entity-panda-cant-breed,
entity-panda-aggressive-ambient,
entity-panda-worried-ambient,
entity-panda-hurt,
entity-panda-bite,
entity-parched-ambient,
entity-parched-death,
entity-parched-hurt,
entity-parched-step,
entity-parrot-ambient,
entity-parrot-death,
entity-parrot-eat,
entity-parrot-fly,
entity-parrot-hurt,
entity-parrot-imitate-blaze,
entity-parrot-imitate-bogged,
entity-parrot-imitate-breeze,
entity-parrot-imitate-camel-husk,
entity-parrot-imitate-creaking,
entity-parrot-imitate-creeper,
entity-parrot-imitate-drowned,
entity-parrot-imitate-elder-guardian,
entity-parrot-imitate-ender-dragon,
entity-parrot-imitate-endermite,
entity-parrot-imitate-evoker,
entity-parrot-imitate-ghast,
entity-parrot-imitate-guardian,
entity-parrot-imitate-hoglin,
entity-parrot-imitate-husk,
entity-parrot-imitate-illusioner,
entity-parrot-imitate-magma-cube,
entity-parrot-imitate-phantom,
entity-parrot-imitate-parched,
entity-parrot-imitate-piglin,
entity-parrot-imitate-piglin-brute,
entity-parrot-imitate-pillager,
entity-parrot-imitate-ravager,
entity-parrot-imitate-shulker,
entity-parrot-imitate-silverfish,
entity-parrot-imitate-skeleton,
entity-parrot-imitate-slime,
entity-parrot-imitate-spider,
entity-parrot-imitate-stray,
entity-parrot-imitate-vex,
entity-parrot-imitate-vindicator,
entity-parrot-imitate-warden,
entity-parrot-imitate-witch,
entity-parrot-imitate-wither,
entity-parrot-imitate-wither-skeleton,
entity-parrot-imitate-zoglin,
entity-parrot-imitate-zombie,
entity-parrot-imitate-zombie-horse,
entity-parrot-imitate-zombie-nautilus,
entity-parrot-imitate-zombie-villager,
entity-parrot-step,
entity-phantom-ambient,
entity-phantom-bite,
entity-phantom-death,
entity-phantom-flap,
entity-phantom-hurt,
entity-phantom-swoop,
entity-pig-saddle,
entity-pig-step,
entity-baby-pig-step,
entity-baby-pig-ambient,
entity-baby-pig-eat,
entity-baby-pig-hurt,
entity-baby-pig-death,
entity-pig-ambient,
entity-pig-hurt,
entity-pig-death,
entity-pig-eat,
entity-pig-mini-ambient,
entity-pig-mini-hurt,
entity-pig-mini-death,
entity-pig-mini-eat,
entity-pig-big-ambient,
entity-pig-big-hurt,
entity-pig-big-death,
entity-pig-big-eat,
entity-piglin-admiring-item,
entity-piglin-ambient,
entity-piglin-angry,
entity-piglin-celebrate,
entity-piglin-death,
entity-piglin-jealous,
entity-piglin-hurt,
entity-piglin-retreat,
entity-piglin-step,
entity-piglin-converted-to-zombified,
entity-piglin-brute-ambient,
entity-piglin-brute-angry,
entity-piglin-brute-death,
entity-piglin-brute-hurt,
entity-piglin-brute-step,
entity-piglin-brute-converted-to-zombified,
entity-pillager-ambient,
entity-pillager-celebrate,
entity-pillager-death,
entity-pillager-hurt,
block-piston-contract,
block-piston-extend,
entity-player-attack-crit,
entity-player-attack-knockback,
entity-player-attack-nodamage,
entity-player-attack-strong,
entity-player-attack-sweep,
entity-player-attack-weak,
entity-player-big-fall,
entity-player-breath,
entity-player-burp,
entity-player-death,
entity-player-hurt,
entity-player-hurt-drown,
entity-player-hurt-freeze,
entity-player-hurt-on-fire,
entity-player-hurt-sweet-berry-bush,
entity-player-levelup,
entity-player-small-fall,
entity-player-splash,
entity-player-splash-high-speed,
entity-player-swim,
entity-player-teleport,
entity-polar-bear-ambient,
entity-polar-bear-ambient-baby,
entity-polar-bear-death,
entity-polar-bear-hurt,
entity-polar-bear-step,
entity-polar-bear-warning,
block-polished-deepslate-break,
block-polished-deepslate-fall,
block-polished-deepslate-hit,
block-polished-deepslate-place,
block-polished-deepslate-step,
block-portal-ambient,
block-portal-travel,
block-portal-trigger,
block-powder-snow-break,
block-powder-snow-fall,
block-powder-snow-hit,
block-powder-snow-place,
block-powder-snow-step,
entity-puffer-fish-blow-out,
entity-puffer-fish-blow-up,
entity-puffer-fish-death,
entity-puffer-fish-flop,
entity-puffer-fish-hurt,
entity-puffer-fish-sting,
block-pumpkin-carve,
entity-rabbit-ambient,
entity-rabbit-attack,
entity-rabbit-death,
entity-rabbit-hurt,
entity-rabbit-jump,
event-raid-horn,
entity-ravager-ambient,
entity-ravager-attack,
entity-ravager-celebrate,
entity-ravager-death,
entity-ravager-hurt,
entity-ravager-step,
entity-ravager-stunned,
entity-ravager-roar,
block-nether-gold-ore-break,
block-nether-gold-ore-fall,
block-nether-gold-ore-hit,
block-nether-gold-ore-place,
block-nether-gold-ore-step,
block-nether-ore-break,
block-nether-ore-fall,
block-nether-ore-hit,
block-nether-ore-place,
block-nether-ore-step,
block-redstone-torch-burnout,
block-resin-break,
block-resin-fall,
block-resin-place,
block-resin-step,
block-resin-bricks-break,
block-resin-bricks-fall,
block-resin-bricks-hit,
block-resin-bricks-place,
block-resin-bricks-step,
block-respawn-anchor-ambient,
block-respawn-anchor-charge,
block-respawn-anchor-deplete,
block-respawn-anchor-set-spawn,
block-rooted-dirt-break,
block-rooted-dirt-fall,
block-rooted-dirt-hit,
block-rooted-dirt-place,
block-rooted-dirt-step,
entity-salmon-ambient,
entity-salmon-death,
entity-salmon-flop,
entity-salmon-hurt,
block-sand-break,
block-sand-fall,
block-sand-hit,
block-sand-place,
block-sand-step,
block-sand-idle,
block-scaffolding-break,
block-scaffolding-fall,
block-scaffolding-hit,
block-scaffolding-place,
block-scaffolding-step,
block-sculk-spread,
block-sculk-charge,
block-sculk-break,
block-sculk-fall,
block-sculk-hit,
block-sculk-place,
block-sculk-step,
block-sculk-catalyst-bloom,
block-sculk-catalyst-break,
block-sculk-catalyst-fall,
block-sculk-catalyst-hit,
block-sculk-catalyst-place,
block-sculk-catalyst-step,
block-sculk-sensor-clicking,
block-sculk-sensor-clicking-stop,
block-sculk-sensor-break,
block-sculk-sensor-fall,
block-sculk-sensor-hit,
block-sculk-sensor-place,
block-sculk-sensor-step,
block-sculk-shrieker-break,
block-sculk-shrieker-fall,
block-sculk-shrieker-hit,
block-sculk-shrieker-place,
block-sculk-shrieker-shriek,
block-sculk-shrieker-step,
block-sculk-vein-break,
block-sculk-vein-fall,
block-sculk-vein-hit,
block-sculk-vein-place,
block-sculk-vein-step,
entity-sheep-ambient,
entity-sheep-death,
entity-sheep-hurt,
entity-sheep-shear,
entity-sheep-step,
item-shears-snip,
block-shelf-activate,
block-shelf-break,
block-shelf-deactivate,
block-shelf-fall,
block-shelf-hit,
block-shelf-multi-swap,
block-shelf-place,
block-shelf-place-item,
block-shelf-single-swap,
block-shelf-step,
block-shelf-take-item,
item-shield-block,
item-shield-break,
block-shroomlight-break,
block-shroomlight-step,
block-shroomlight-place,
block-shroomlight-hit,
block-shroomlight-fall,
item-shovel-flatten,
entity-shulker-ambient,
block-shulker-box-close,
block-shulker-box-open,
entity-shulker-bullet-hit,
entity-shulker-bullet-hurt,
entity-shulker-close,
entity-shulker-death,
entity-shulker-hurt,
entity-shulker-hurt-closed,
entity-shulker-open,
entity-shulker-shoot,
entity-shulker-teleport,
entity-silverfish-ambient,
entity-silverfish-death,
entity-silverfish-hurt,
entity-silverfish-step,
entity-skeleton-ambient,
entity-skeleton-converted-to-stray,
entity-skeleton-death,
entity-skeleton-horse-ambient,
entity-skeleton-horse-death,
entity-skeleton-horse-hurt,
entity-skeleton-horse-swim,
entity-skeleton-horse-ambient-water,
entity-skeleton-horse-gallop-water,
entity-skeleton-horse-jump-water,
entity-skeleton-horse-step-water,
entity-skeleton-hurt,
entity-skeleton-shoot,
entity-skeleton-step,
entity-slime-attack,
entity-slime-death,
entity-slime-hurt,
entity-slime-jump,
entity-slime-squish,
block-slime-block-break,
block-slime-block-fall,
block-slime-block-hit,
block-slime-block-place,
block-slime-block-step,
block-small-amethyst-bud-break,
block-small-amethyst-bud-place,
block-small-dripleaf-break,
block-small-dripleaf-fall,
block-small-dripleaf-hit,
block-small-dripleaf-place,
block-small-dripleaf-step,
block-soul-sand-break,
block-soul-sand-step,
block-soul-sand-place,
block-soul-sand-hit,
block-soul-sand-fall,
block-soul-soil-break,
block-soul-soil-step,
block-soul-soil-place,
block-soul-soil-hit,
block-soul-soil-fall,
particle-soul-escape,
block-spawner-break,
block-spawner-fall,
block-spawner-hit,
block-spawner-place,
block-spawner-step,
item-spear-use,
item-spear-hit,
item-spear-attack,
item-spear-wood-use,
item-spear-wood-hit,
item-spear-wood-attack,
block-spore-blossom-break,
block-spore-blossom-fall,
block-spore-blossom-hit,
block-spore-blossom-place,
block-spore-blossom-step,
entity-strider-ambient,
entity-strider-happy,
entity-strider-retreat,
entity-strider-death,
entity-strider-hurt,
entity-strider-step,
entity-strider-step-lava,
entity-strider-eat,
entity-strider-saddle,
entity-slime-death-small,
entity-slime-hurt-small,
entity-slime-jump-small,
entity-slime-squish-small,
block-smithing-table-use,
block-smoker-smoke,
entity-sniffer-step,
entity-sniffer-eat,
entity-sniffer-idle,
entity-sniffer-hurt,
entity-sniffer-death,
entity-sniffer-drop-seed,
entity-sniffer-scenting,
entity-sniffer-sniffing,
entity-sniffer-searching,
entity-sniffer-digging,
entity-sniffer-digging-stop,
entity-sniffer-happy,
block-sniffer-egg-plop,
block-sniffer-egg-crack,
block-sniffer-egg-hatch,
entity-snowball-throw,
block-snow-break,
block-snow-fall,
entity-snow-golem-ambient,
entity-snow-golem-death,
entity-snow-golem-hurt,
entity-snow-golem-shoot,
entity-snow-golem-shear,
block-snow-hit,
block-snow-place,
block-snow-step,
entity-spider-ambient,
entity-spider-death,
entity-spider-hurt,
entity-spider-step,
entity-splash-potion-break,
entity-splash-potion-throw,
block-sponge-break,
block-sponge-fall,
block-sponge-hit,
block-sponge-place,
block-sponge-step,
block-sponge-absorb,
item-spyglass-use,
item-spyglass-stop-using,
entity-squid-ambient,
entity-squid-death,
entity-squid-hurt,
entity-squid-squirt,
block-stone-break,
block-stone-button-click-off,
block-stone-button-click-on,
block-stone-fall,
block-stone-hit,
block-stone-place,
block-stone-pressure-plate-click-off,
block-stone-pressure-plate-click-on,
block-stone-step,
entity-stray-ambient,
entity-stray-death,
entity-stray-hurt,
entity-stray-step,
block-sulfur-spike-break,
block-sulfur-spike-step,
block-sulfur-spike-place,
block-sulfur-spike-hit,
block-sulfur-spike-fall,
block-sulfur-spike-land,
block-sweet-berry-bush-break,
block-sweet-berry-bush-place,
block-sweet-berry-bush-pick-berries,
entity-tadpole-death,
entity-tadpole-flop,
entity-tadpole-grow-up,
entity-tadpole-hurt,
enchant-thorns-hit,
entity-tnt-primed,
item-totem-use,
item-trident-hit,
item-trident-hit-ground,
item-trident-return,
item-trident-riptide-1,
item-trident-riptide-2,
item-trident-riptide-3,
item-trident-throw,
item-trident-thunder,
block-tripwire-attach,
block-tripwire-click-off,
block-tripwire-click-on,
block-tripwire-detach,
entity-tropical-fish-ambient,
entity-tropical-fish-death,
entity-tropical-fish-flop,
entity-tropical-fish-hurt,
block-tuff-break,
block-tuff-step,
block-tuff-place,
block-tuff-hit,
block-tuff-fall,
block-tuff-bricks-break,
block-tuff-bricks-fall,
block-tuff-bricks-hit,
block-tuff-bricks-place,
block-tuff-bricks-step,
block-polished-tuff-break,
block-polished-tuff-fall,
block-polished-tuff-hit,
block-polished-tuff-place,
block-polished-tuff-step,
entity-turtle-ambient-land,
entity-turtle-death,
entity-turtle-death-baby,
entity-turtle-egg-break,
entity-turtle-egg-crack,
entity-turtle-egg-hatch,
entity-turtle-hurt,
entity-turtle-hurt-baby,
entity-turtle-lay-egg,
entity-turtle-shamble,
entity-turtle-shamble-baby,
entity-turtle-swim,
ui-button-click,
ui-loom-select-pattern,
ui-loom-take-result,
ui-cartography-table-take-result,
ui-stonecutter-take-result,
ui-stonecutter-select-recipe,
ui-toast-challenge-complete,
ui-toast-in,
ui-toast-out,
block-vault-activate,
block-vault-ambient,
block-vault-break,
block-vault-close-shutter,
block-vault-deactivate,
block-vault-eject-item,
block-vault-reject-rewarded-player,
block-vault-fall,
block-vault-hit,
block-vault-insert-item,
block-vault-insert-item-fail,
block-vault-open-shutter,
block-vault-place,
block-vault-step,
entity-vex-ambient,
entity-vex-charge,
entity-vex-death,
entity-vex-hurt,
entity-villager-ambient,
entity-villager-celebrate,
entity-villager-death,
entity-villager-hurt,
entity-villager-no,
entity-villager-trade,
entity-villager-yes,
entity-villager-work-armorer,
entity-villager-work-butcher,
entity-villager-work-cartographer,
entity-villager-work-cleric,
entity-villager-work-farmer,
entity-villager-work-fisherman,
entity-villager-work-fletcher,
entity-villager-work-leatherworker,
entity-villager-work-librarian,
entity-villager-work-mason,
entity-villager-work-shepherd,
entity-villager-work-toolsmith,
entity-villager-work-weaponsmith,
entity-vindicator-ambient,
entity-vindicator-celebrate,
entity-vindicator-death,
entity-vindicator-hurt,
block-vine-break,
block-vine-fall,
block-vine-hit,
block-vine-place,
block-vine-step,
block-lily-pad-place,
entity-wandering-trader-ambient,
entity-wandering-trader-death,
entity-wandering-trader-disappeared,
entity-wandering-trader-drink-milk,
entity-wandering-trader-drink-potion,
entity-wandering-trader-hurt,
entity-wandering-trader-no,
entity-wandering-trader-reappeared,
entity-wandering-trader-trade,
entity-wandering-trader-yes,
entity-warden-agitated,
entity-warden-ambient,
entity-warden-angry,
entity-warden-attack-impact,
entity-warden-death,
entity-warden-dig,
entity-warden-emerge,
entity-warden-heartbeat,
entity-warden-hurt,
entity-warden-listening,
entity-warden-listening-angry,
entity-warden-nearby-close,
entity-warden-nearby-closer,
entity-warden-nearby-closest,
entity-warden-roar,
entity-warden-sniff,
entity-warden-sonic-boom,
entity-warden-sonic-charge,
entity-warden-step,
entity-warden-tendril-clicks,
block-hanging-sign-waxed-interact-fail,
block-sign-waxed-interact-fail,
block-water-ambient,
weather-end-flash,
weather-rain,
weather-rain-above,
block-wet-grass-break,
block-wet-grass-fall,
block-wet-grass-hit,
block-wet-grass-place,
block-wet-grass-step,
block-wet-sponge-break,
block-wet-sponge-dries,
block-wet-sponge-fall,
block-wet-sponge-hit,
block-wet-sponge-place,
block-wet-sponge-step,
entity-wind-charge-wind-burst,
entity-wind-charge-throw,
entity-witch-ambient,
entity-witch-celebrate,
entity-witch-death,
entity-witch-drink,
entity-witch-hurt,
entity-witch-throw,
entity-wither-ambient,
entity-wither-break-block,
entity-wither-death,
entity-wither-hurt,
entity-wither-shoot,
entity-wither-skeleton-ambient,
entity-wither-skeleton-death,
entity-wither-skeleton-hurt,
entity-wither-skeleton-step,
entity-wither-spawn,
item-wolf-armor-break,
entity-baby-wolf-ambient,
item-wolf-armor-crack,
item-wolf-armor-damage,
item-wolf-armor-repair,
entity-baby-wolf-death,
entity-baby-wolf-growl,
entity-baby-wolf-hurt,
entity-baby-wolf-pant,
entity-wolf-shake,
entity-wolf-step,
entity-baby-wolf-step,
entity-baby-wolf-whine,
entity-wolf-ambient,
entity-wolf-death,
entity-wolf-growl,
entity-wolf-hurt,
entity-wolf-pant,
entity-wolf-whine,
entity-wolf-puglin-ambient,
entity-wolf-puglin-death,
entity-wolf-puglin-growl,
entity-wolf-puglin-hurt,
entity-wolf-puglin-pant,
entity-wolf-puglin-whine,
entity-wolf-sad-ambient,
entity-wolf-sad-death,
entity-wolf-sad-growl,
entity-wolf-sad-hurt,
entity-wolf-sad-pant,
entity-wolf-sad-whine,
entity-wolf-angry-ambient,
entity-wolf-angry-death,
entity-wolf-angry-growl,
entity-wolf-angry-hurt,
entity-wolf-angry-pant,
entity-wolf-angry-whine,
entity-wolf-grumpy-ambient,
entity-wolf-grumpy-death,
entity-wolf-grumpy-growl,
entity-wolf-grumpy-hurt,
entity-wolf-grumpy-pant,
entity-wolf-grumpy-whine,
entity-wolf-big-ambient,
entity-wolf-big-death,
entity-wolf-big-growl,
entity-wolf-big-hurt,
entity-wolf-big-pant,
entity-wolf-big-whine,
entity-wolf-cute-ambient,
entity-wolf-cute-death,
entity-wolf-cute-growl,
entity-wolf-cute-hurt,
entity-wolf-cute-pant,
entity-wolf-cute-whine,
block-wooden-door-close,
block-wooden-door-open,
block-wooden-trapdoor-close,
block-wooden-trapdoor-open,
block-wooden-button-click-off,
block-wooden-button-click-on,
block-wooden-pressure-plate-click-off,
block-wooden-pressure-plate-click-on,
block-wood-break,
block-wood-fall,
block-wood-hit,
block-wood-place,
block-wood-step,
block-wool-break,
block-wool-fall,
block-wool-hit,
block-wool-place,
block-wool-step,
entity-zoglin-ambient,
entity-zoglin-angry,
entity-zoglin-attack,
entity-zoglin-death,
entity-zoglin-hurt,
entity-zoglin-step,
entity-zombie-ambient,
entity-zombie-attack-wooden-door,
entity-zombie-attack-iron-door,
entity-zombie-break-wooden-door,
entity-zombie-converted-to-drowned,
entity-zombie-death,
entity-zombie-destroy-egg,
entity-zombie-horse-ambient,
entity-zombie-horse-angry,
entity-zombie-horse-death,
entity-zombie-horse-eat,
entity-zombie-horse-hurt,
entity-zombie-hurt,
entity-zombie-infect,
entity-zombie-nautilus-ambient,
entity-zombie-nautilus-ambient-land,
entity-zombie-nautilus-dash,
entity-zombie-nautilus-dash-land,
entity-zombie-nautilus-dash-ready,
entity-zombie-nautilus-dash-ready-land,
entity-zombie-nautilus-death,
entity-zombie-nautilus-death-land,
entity-zombie-nautilus-eat,
entity-zombie-nautilus-hurt,
entity-zombie-nautilus-hurt-land,
entity-zombie-nautilus-swim,
entity-zombified-piglin-ambient,
entity-zombified-piglin-angry,
entity-zombified-piglin-death,
entity-zombified-piglin-hurt,
entity-zombie-step,
entity-zombie-villager-ambient,
entity-zombie-villager-converted,
entity-zombie-villager-cure,
entity-zombie-villager-death,
entity-zombie-villager-hurt,
entity-zombie-villager-step,
event-mob-effect-bad-omen,
event-mob-effect-trial-omen,
event-mob-effect-raid-omen,
item-saddle-unequip,
item-nautilus-saddle-underwater-equip,
item-nautilus-saddle-equip,
block-sulfur-break,
block-sulfur-step,
block-sulfur-place,
block-sulfur-hit,
block-sulfur-fall,
block-potent-sulfur-break,
block-potent-sulfur-step,
block-potent-sulfur-place,
block-potent-sulfur-hit,
block-potent-sulfur-fall,
block-potent-sulfur-geyser-eruption,
block-potent-sulfur-geyser-eruption-active,
block-potent-sulfur-geyser-continuous-eruption,
block-potent-sulfur-geyser-continuous-eruption-active,
block-cinnabar-break,
block-cinnabar-step,
block-cinnabar-place,
block-cinnabar-hit,
block-cinnabar-fall,
entity-sulfur-cube-absorb,
entity-sulfur-cube-bounce,
entity-sulfur-cube-death,
entity-sulfur-cube-eject,
entity-sulfur-cube-hurt,
entity-sulfur-cube-jump,
entity-sulfur-cube-regular-hit,
entity-sulfur-cube-regular-push,
entity-sulfur-cube-bouncy-hit,
entity-sulfur-cube-bouncy-push,
entity-sulfur-cube-slow-bouncy-hit,
entity-sulfur-cube-slow-bouncy-push,
entity-sulfur-cube-slow-flat-hit,
entity-sulfur-cube-slow-flat-push,
entity-sulfur-cube-fast-flat-hit,
entity-sulfur-cube-fast-flat-push,
entity-sulfur-cube-light-hit,
entity-sulfur-cube-light-push,
entity-sulfur-cube-fast-sliding-hit,
entity-sulfur-cube-fast-sliding-push,
entity-sulfur-cube-slow-sliding-hit,
entity-sulfur-cube-slow-sliding-push,
entity-sulfur-cube-sticky-hit,
entity-sulfur-cube-sticky-push,
entity-sulfur-cube-high-resistance-hit,
entity-sulfur-cube-high-resistance-push,
entity-sulfur-cube-explosive-hit,
entity-sulfur-cube-explosive-push,
entity-sulfur-cube-hot-hit,
entity-sulfur-cube-hot-push,
entity-sulfur-cube-squish,
block-potent-sulfur-noxious-gas,
entity-small-sulfur-cube-death,
entity-small-sulfur-cube-hurt,
entity-small-sulfur-cube-jump,
entity-small-sulfur-cube-squish,
entity-small-sulfur-cube-eat,
block-shelf-mushroom-break,
block-shelf-mushroom-fall,
block-shelf-mushroom-place,
block-shelf-mushroom-step,
block-shelf-mushroom-bounce,
block-poplar-leaves-break,
block-poplar-leaves-hit,
block-poplar-leaves-fall,
block-poplar-leaves-place,
block-poplar-leaves-step,
block-poplar-leaves-ambient,
block-straw-bed-break,
block-straw-bed-break-leave,
block-straw-bed-step,
block-straw-bed-place,
block-straw-bed-hit,
block-straw-bed-fall,
block-red-shrub-break,
block-red-shrub-place,
}
}
interface statistics {
enum statistic-category {
mined,
crafted,
used,
broken,
picked-up,
dropped,
killed,
killed-by,
custom,
}
enum custom-statistic {
leave-game,
play-time,
total-world-time,
time-since-death,
time-since-rest,
sneak-time,
walk-one-cm,
crouch-one-cm,
sprint-one-cm,
walk-on-water-one-cm,
fall-one-cm,
climb-one-cm,
fly-one-cm,
walk-under-water-one-cm,
minecart-one-cm,
boat-one-cm,
pig-one-cm,
happy-ghast-one-cm,
horse-one-cm,
aviate-one-cm,
swim-one-cm,
strider-one-cm,
nautilus-one-cm,
jump,
drop,
damage-dealt,
damage-dealt-absorbed,
damage-dealt-resisted,
damage-taken,
damage-blocked-by-shield,
damage-absorbed,
damage-resisted,
deaths,
mob-kills,
animals-bred,
player-kills,
fish-caught,
talked-to-villager,
traded-with-villager,
eat-cake-slice,
fill-cauldron,
use-cauldron,
clean-armor,
clean-banner,
clean-shulker-box,
interact-with-brewingstand,
interact-with-beacon,
inspect-dropper,
inspect-hopper,
inspect-dispenser,
play-noteblock,
tune-noteblock,
pot-flower,
trigger-trapped-chest,
open-enderchest,
enchant-item,
play-record,
interact-with-furnace,
interact-with-crafting-table,
open-chest,
sleep-in-bed,
sleep-in-straw-bed,
open-shulker-box,
open-barrel,
interact-with-blast-furnace,
interact-with-smoker,
interact-with-lectern,
interact-with-campfire,
interact-with-cartography-table,
interact-with-loom,
interact-with-stonecutter,
bell-ring,
raid-trigger,
raid-win,
interact-with-anvil,
interact-with-grindstone,
target-hit,
interact-with-smithing-table,
}
}
interface status-effect {
enum status-effect-type {
speed,
slowness,
haste,
mining-fatigue,
strength,
instant-health,
instant-damage,
jump-boost,
nausea,
regeneration,
resistance,
fire-resistance,
water-breathing,
invisibility,
blindness,
night-vision,
hunger,
weakness,
poison,
wither,
health-boost,
absorption,
saturation,
glowing,
levitation,
luck,
unluck,
slow-falling,
conduit-power,
dolphins-grace,
bad-omen,
hero-of-the-village,
darkness,
trial-omen,
raid-omen,
wind-charged,
weaving,
oozing,
infested,
}
record status-effect-instance {
effect-type: status-effect-type,
duration: u32,
amplifier: u8,
ambient: bool,
show-particles: bool,
show-icon: bool,
}
}
interface text {
use common.{named-color, rgb-color, argb-color};
resource text-component {
/// Creates a plain text component.
text: static func(plain: string) -> text-component;
/// Creates a translation component.
translate: static func(key: string, %with: list<text-component>) -> text-component;
/// Creates a translation component with a Bedrock-specific fallback key.
translate-cross: static func(java-key: string, bedrock-key: string, %with: list<text-component>) -> text-component;
/// Creates an entity names / selector text component.
entity-names: static func(selector: string, separator: option<string>) -> text-component;
/// Creates a keybind text component (e.g., "key.jump").
keybind: static func(keybind: string) -> text-component;
/// Creates a custom translation component.
custom: static func(namespace: string, key: string, locale: string, %with: list<text-component>) -> text-component;
/// Parses a legacy Minecraft formatted string (using section signs '§' by default) into a text component.
from-legacy-string: static func(input: string) -> text-component;
/// Parses a legacy formatted string using a custom color code symbol (e.g. '&' or '§').
from-legacy-string-with-code: static func(input: string, code-symbol: char) -> text-component;
/// Parses a standard Minecraft JSON text component.
from-json: static func(json: string) -> result<text-component, string>;
/// Serializes the text component to JSON format.
to-json: func() -> string;
add-child: func(child: text-component);
add-text: func(text: string);
get-text: func() -> string;
encode: func() -> list<u8>;
to-pretty-console: func() -> string;
/// Style
color-named: func(color: named-color);
color-rgb: func(color: rgb-color);
gradient-named: func(colors: list<named-color>);
gradient: func(colors: list<rgb-color>);
rainbow: func();
bold: func(value: bool);
italic: func(value: bool);
underlined: func(value: bool);
strikethrough: func(value: bool);
obfuscated: func(value: bool);
/// Text inserted into chat when shift-clicked
insertion: func(text: string);
font: func(font: string);
shadow-color: func(color: argb-color);
/// Click events
click-open-url: func(url: string);
click-open-file: func(path: string);
click-run-command: func(command: string);
click-suggest-command: func(command: string);
click-change-page: func(page: u32);
click-copy-to-clipboard: func(text: string);
/// Hover events
hover-show-text: func(text: text-component);
/// Item data as SNBT string
hover-show-item: func(item: string);
hover-show-entity: func(entity-type: string, id: string, name: option<text-component>);
}
}
interface advancement {
use text.{text-component};
/// Frame type for an advancement.
enum frame-type {
task,
challenge,
goal,
}
/// Display information for an advancement.
record advancement-display {
title: text-component,
description: text-component,
frame: frame-type,
show-toast: bool,
hidden: bool,
announce-to-chat: bool,
background: option<string>,
x: f32,
y: f32,
}
/// Detailed information about an advancement.
record advancement-info {
id: string,
parent-id: option<string>,
criteria: list<string>,
display: option<advancement-display>,
}
/// Represents progress of an advancement for a player.
record advancement-progress {
advancement-id: string,
done: bool,
awarded-criteria: list<string>,
remaining-criteria: list<string>,
}
}
interface enchantments {
use text.{text-component};
/// Equipment slot where an enchantment is active.
enum attribute-modifier-slot {
any,
main-hand,
off-hand,
hand,
feet,
legs,
chest,
head,
armor,
body,
saddle,
}
/// Vanilla enchantments enum.
enum enchantment {
aqua-affinity,
bane-of-arthropods,
binding-curse,
blast-protection,
breach,
channeling,
density,
depth-strider,
efficiency,
feather-falling,
fire-aspect,
fire-protection,
flame,
fortune,
frost-walker,
impaling,
infinity,
knockback,
looting,
loyalty,
luck-of-the-sea,
lunge,
lure,
mending,
multishot,
piercing,
power,
projectile-protection,
protection,
punch,
quick-charge,
respiration,
riptide,
sharpness,
silk-touch,
smite,
soul-speed,
sweeping-edge,
swift-sneak,
thorns,
unbreaking,
vanishing-curse,
wind-burst,
}
/// Represents a custom enchantment definition.
record custom-enchantment {
/// Unique identifier for the enchantment (e.g. "my_plugin:lifesteal").
id: string,
/// Description or display name of the enchantment.
description: text-component,
/// Maximum level of the enchantment (e.g. 1..=10).
max-level: u32,
/// Base anvil repair/combination cost multiplier.
anvil-cost: u32,
/// Tag or item pattern for supported items (e.g. "#minecraft:enchantable/weapon").
supported-items: string,
/// Weight / rarity of the enchantment (higher = more common, default 5).
weight: u32,
/// Equipment slots where this enchantment is active.
slots: list<attribute-modifier-slot>,
/// List of exclusive/conflicting enchantment IDs.
exclusive-set: list<string>,
}
/// Global manager for registering and querying custom enchantments.
resource enchantment-manager {
/// Registers a new custom enchantment with the server.
register-enchantment: func(enchantment: custom-enchantment) -> result<_, string>;
/// Gets an enchantment definition by its ID.
get-enchantment: func(id: string) -> option<custom-enchantment>;
/// Checks if an enchantment ID is registered.
has-enchantment: func(id: string) -> bool;
/// Returns all registered custom enchantment IDs.
get-all-enchantment-ids: func() -> list<string>;
}
}
interface forms {
use text.{text-component};
enum image-type {
url,
path,
}
record form-image {
%type: image-type,
data: string,
}
record simple-form-button {
text: text-component,
image: option<form-image>,
}
record simple-form {
title: text-component,
content: text-component,
buttons: list<simple-form-button>,
}
record modal-form {
title: text-component,
content: text-component,
button1: text-component,
button2: text-component,
}
variant custom-form-element {
label(text-component),
toggle(tuple<text-component, bool>),
slider(tuple<text-component, f32, f32, f32, f32>),
/// text, min, max, step, default
step-slider(tuple<text-component, list<string>, u32>),
/// text, steps, default
dropdown(tuple<text-component, list<string>, u32>),
/// text, options, default
input(tuple<text-component, string, string>),
}
record custom-form {
title: text-component,
elements: list<custom-form-element>,
}
variant form {
simple(simple-form),
modal(modal-form),
custom(custom-form),
}
}
interface item-stack {
use attributes.{attribute, attribute-modifier};
use data-components.{data-component};
use enchantments.{attribute-modifier-slot, enchantment};
use text.{text-component};
use common.{nbt-entry, nbt-tree, nbt-tag};
/// Represents an enchantment and its level.
record enchantment-value {
enchantment: enchantment,
level: u32,
}
/// Represents a custom enchantment and its level on an item stack.
record custom-enchantment-value {
enchantment-id: string,
level: u32,
}
/// Represents an attribute modifier applied to an item stack for a specific slot.
record item-attribute-modifier {
attribute: attribute,
modifier: attribute-modifier,
slot: attribute-modifier-slot,
}
/// Represents a data component and its serialized value.
record data-component-value {
component: data-component,
/// The serialized value of the component.
value: list<u8>,
}
resource item-stack {
constructor(registry-key: string, count: u8);
/// Returns the unique registry key of the item (e.g., "minecraft:diamond").
get-registry-key: func() -> string;
/// Returns the number of items in the stack.
get-count: func() -> u8;
/// Sets the number of items in the stack.
set-count: func(count: u8);
/// Returns the maximum number of items that can be in this stack.
get-max-count: func() -> u8;
/// Returns all enchantments on this item stack.
get-enchantments: func() -> list<enchantment-value>;
/// Adds an enchantment to this item stack.
add-enchantment: func(enchantment: enchantment, level: u32);
/// Removes an enchantment from this item stack.
remove-enchantment: func(enchantment: enchantment);
/// Returns all custom enchantments on this item stack.
get-custom-enchantments: func() -> list<custom-enchantment-value>;
/// Adds a custom enchantment to this item stack.
add-custom-enchantment: func(enchantment-id: string, level: u32);
/// Removes a custom enchantment from this item stack.
remove-custom-enchantment: func(enchantment-id: string);
/// Returns the level of a custom enchantment on this item stack, if present.
get-custom-enchantment-level: func(enchantment-id: string) -> option<u32>;
/// Returns whether this item stack has a specific custom enchantment.
has-custom-enchantment: func(enchantment-id: string) -> bool;
/// Returns all attribute modifiers on this item stack.
get-attribute-modifiers: func() -> list<item-attribute-modifier>;
/// Adds an attribute modifier to this item stack.
add-attribute-modifier: func(modifier: item-attribute-modifier);
/// Removes all attribute modifiers for a specific attribute from this item stack.
remove-attribute-modifiers: func(attribute: attribute);
/// Clears all custom attribute modifiers from this item stack.
clear-attribute-modifiers: func();
/// Returns the lore of this item stack.
get-lore: func() -> list<text-component>;
/// Sets the lore of this item stack.
set-lore: func(lore: list<text-component>);
/// Adds a line to the lore of this item stack.
add-lore: func(line: text-component);
/// Returns the custom name of this item stack, if set.
get-custom-name: func() -> option<text-component>;
/// Sets the custom name of this item stack.
set-custom-name: func(name: option<text-component>);
/// Sets a namespaced custom data value on this item stack.
set-custom-data: func(namespace: string, key: string, value: nbt-tree);
/// Returns a namespaced custom data value from this item stack, if set.
get-custom-data: func(namespace: string, key: string) -> option<nbt-tree>;
/// Removes a namespaced custom data value from this item stack.
remove-custom-data: func(namespace: string, key: string);
/// Returns whether this item stack has a namespaced custom data value.
has-custom-data: func(namespace: string, key: string) -> bool;
/// Returns all data components on this item stack.
get-components: func() -> list<data-component-value>;
/// Sets a data component on this item stack.
set-component: func(component: data-component, value: list<u8>);
/// Removes a data component from this item stack.
remove-component: func(component: data-component);
}
}
interface inventory {
use item-stack.{item-stack};
use common.{hand};
/// Common inventory resource used across GUIs, player inventories, and containers.
resource inventory {
/// Returns the number of slots in this inventory.
get-size: func() -> u32;
/// Returns true if all slots in this inventory are empty.
is-empty: func() -> bool;
/// Returns the item in the specified slot index, or none if empty.
get-item: func(slot: u32) -> option<item-stack>;
/// Sets the item in the specified slot index.
set-item: func(slot: u32, item: option<item-stack>);
/// Removes and returns the item in the specified slot index.
remove-item: func(slot: u32) -> option<item-stack>;
/// Clears all items from this inventory.
clear: func();
/// Returns all items in this inventory as a list of slots.
get-all-items: func() -> list<option<item-stack>>;
/// Sets all items in this inventory from a list.
set-all-items: func(items: list<option<item-stack>>);
/// Counts the total number of items with the given ID in this inventory.
count-item: func(item-id: string) -> u32;
/// Checks if the inventory contains at least one item with the given ID.
contains-item: func(item-id: string) -> bool;
}
/// Specialized player inventory handle providing access to main inventory, armor, offhand, and hotbar.
resource player-inventory {
/// Returns the generic 36-slot inventory handle (hotbar + main storage).
as-inventory: func() -> inventory;
/// Returns the item currently held in the specified hand.
get-item-in-hand: func(hand: hand) -> option<item-stack>;
/// Sets the item in the specified hand.
set-item-in-hand: func(hand: hand, item: option<item-stack>);
/// Returns the currently selected hotbar slot index (0-8).
get-selected-slot: func() -> u8;
/// Sets the currently selected hotbar slot index (0-8).
set-selected-slot: func(slot: u8);
/// Armor slot accessors
get-helmet: func() -> option<item-stack>;
set-helmet: func(item: option<item-stack>);
get-chestplate: func() -> option<item-stack>;
set-chestplate: func(item: option<item-stack>);
get-leggings: func() -> option<item-stack>;
set-leggings: func(item: option<item-stack>);
get-boots: func() -> option<item-stack>;
set-boots: func(item: option<item-stack>);
get-off-hand: func() -> option<item-stack>;
set-off-hand: func(item: option<item-stack>);
/// Clears all armor slots.
clear-armor: func();
/// Clears the 36 main inventory slots.
clear-main: func();
/// Clears all slots (main inventory, armor, offhand).
clear-all: func();
}
}
interface block-entity {
use common.{block-pos, nbt-tree};
use item-stack.{item-stack};
use inventory.{inventory};
resource block-entity {
resource-location: func() -> string;
get-position: func() -> block-pos;
get-id: func() -> u32;
is-dirty: func() -> bool;
clear-dirty: func();
/// Sets a namespaced custom data value on this block entity.
set-custom-data: func(namespace: string, key: string, value: nbt-tree);
/// Returns a namespaced custom data value from this block entity, if set.
get-custom-data: func(namespace: string, key: string) -> option<nbt-tree>;
/// Removes a namespaced custom data value from this block entity.
remove-custom-data: func(namespace: string, key: string);
/// Returns whether this block entity has a namespaced custom data value.
has-custom-data: func(namespace: string, key: string) -> bool;
}
resource container-block-entity {
get-block-entity: func() -> block-entity;
/// Returns the generic inventory handle for this container.
get-inventory: func() -> inventory;
get-size: func() -> u32;
is-empty: func() -> bool;
get-stack: func(slot: u32) -> option<item-stack>;
set-stack: func(slot: u32, stack: option<item-stack>);
remove-stack: func(slot: u32) -> option<item-stack>;
clear: func();
}
resource command-block-entity {
get-block-entity: func() -> block-entity;
last-output: func() -> string;
track-output: func() -> bool;
success-count: func() -> u32;
command: func() -> string;
auto: func() -> bool;
condition-met: func() -> bool;
powered: func() -> bool;
}
enum dye-color {
white,
orange,
magenta,
light-blue,
yellow,
lime,
pink,
gray,
light-gray,
cyan,
purple,
blue,
brown,
green,
red,
black,
}
record sign-text {
messages: list<string>,
color: dye-color,
has-glowing-text: bool,
}
resource sign-block-entity {
get-block-entity: func() -> block-entity;
get-front-text: func() -> sign-text;
set-front-text: func(text: sign-text);
get-back-text: func() -> sign-text;
set-back-text: func(text: sign-text);
is-waxed: func() -> bool;
set-waxed: func(waxed: bool);
}
resource jukebox-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
is-playing: func() -> bool;
stop-playing: func();
start-playing: func(length-in-ticks: u64);
}
resource chest-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
viewer-count: func() -> u32;
}
resource mob-spawner-block-entity {
get-block-entity: func() -> block-entity;
get-spawn-count: func() -> s32;
get-spawn-range: func() -> s32;
get-delay: func() -> s32;
}
resource map-block-entity {
get-block-entity: func() -> block-entity;
get-map-id: func() -> s32;
set-map-id: func(map-id: s32);
get-colors: func() -> list<u8>;
set-colors: func(colors: list<u8>);
set-pixel: func(x: u32, y: u32, color: u8);
get-pixel: func(x: u32, y: u32) -> u8;
update: func();
stream-frame: func(frame-data: list<u8>);
}
resource hanging-sign-block-entity {
get-block-entity: func() -> block-entity;
get-front-text: func() -> sign-text;
set-front-text: func(text: sign-text);
get-back-text: func() -> sign-text;
set-back-text: func(text: sign-text);
is-waxed: func() -> bool;
set-waxed: func(waxed: bool);
}
resource trapped-chest-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
viewer-count: func() -> u32;
}
resource banner-block-entity {
get-block-entity: func() -> block-entity;
get-custom-name: func() -> option<string>;
}
resource barrel-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
viewer-count: func() -> u32;
}
resource beacon-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-primary-effect: func() -> s32;
get-secondary-effect: func() -> s32;
get-levels: func() -> s32;
}
resource bed-block-entity {
get-block-entity: func() -> block-entity;
}
resource beehive-block-entity {
get-block-entity: func() -> block-entity;
get-bee-count: func() -> u32;
}
resource bell-block-entity {
get-block-entity: func() -> block-entity;
is-ringing: func() -> bool;
get-ring-ticks: func() -> s32;
}
resource blasting-furnace-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-cooking-time-spent: func() -> u16;
get-cooking-total-time: func() -> u16;
get-lit-time-remaining: func() -> u16;
get-lit-total-time: func() -> u16;
is-burning: func() -> bool;
}
resource brewing-stand-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-brew-time: func() -> s32;
get-fuel: func() -> s32;
}
resource brushable-block-block-entity {
get-block-entity: func() -> block-entity;
}
resource calibrated-sculk-sensor-block-entity {
get-block-entity: func() -> block-entity;
}
resource campfire-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
}
resource chiseled-bookshelf-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-last-interacted-slot: func() -> s8;
}
resource comparator-block-entity {
get-block-entity: func() -> block-entity;
get-output-signal: func() -> u8;
}
resource conduit-block-entity {
get-block-entity: func() -> block-entity;
}
resource copper-golem-statue-block-entity {
get-block-entity: func() -> block-entity;
}
resource crafter-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-crafting-ticks-remaining: func() -> s32;
is-triggered: func() -> bool;
}
resource creaking-heart-block-entity {
get-block-entity: func() -> block-entity;
get-creaking-uuid: func() -> option<string>;
}
resource daylight-detector-block-entity {
get-block-entity: func() -> block-entity;
}
resource decorated-pot-block-entity {
get-block-entity: func() -> block-entity;
}
resource dispenser-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
}
resource dropper-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
}
resource enchanting-table-block-entity {
get-block-entity: func() -> block-entity;
}
resource end-gateway-block-entity {
get-block-entity: func() -> block-entity;
get-age: func() -> s64;
is-exact-teleport: func() -> bool;
}
resource end-portal-block-entity {
get-block-entity: func() -> block-entity;
}
resource ender-chest-block-entity {
get-block-entity: func() -> block-entity;
viewer-count: func() -> u32;
}
resource furnace-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-cooking-time-spent: func() -> u16;
get-cooking-total-time: func() -> u16;
get-lit-time-remaining: func() -> u16;
get-lit-total-time: func() -> u16;
is-burning: func() -> bool;
}
resource hopper-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-cooldown: func() -> s32;
}
resource jigsaw-block-entity {
get-block-entity: func() -> block-entity;
get-name: func() -> string;
get-target: func() -> string;
get-pool: func() -> string;
get-final-state: func() -> string;
get-selection-priority: func() -> s32;
get-placement-priority: func() -> s32;
}
resource lectern-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-page: func() -> u32;
}
resource piston-block-entity {
get-block-entity: func() -> block-entity;
get-progress: func() -> f32;
is-extending: func() -> bool;
is-source: func() -> bool;
}
resource potent-sulfur-block-entity {
get-block-entity: func() -> block-entity;
}
resource sculk-catalyst-block-entity {
get-block-entity: func() -> block-entity;
}
resource sculk-sensor-block-entity {
get-block-entity: func() -> block-entity;
}
resource sculk-shrieker-block-entity {
get-block-entity: func() -> block-entity;
get-warning-level: func() -> s32;
}
resource shelf-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
}
resource shulker-box-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
viewer-count: func() -> u32;
}
resource skull-block-entity {
get-block-entity: func() -> block-entity;
get-note-block-sound: func() -> option<string>;
}
resource smoker-block-entity {
get-block-entity: func() -> block-entity;
get-container: func() -> container-block-entity;
get-cooking-time-spent: func() -> u16;
get-cooking-total-time: func() -> u16;
get-lit-time-remaining: func() -> u16;
get-lit-total-time: func() -> u16;
is-burning: func() -> bool;
}
resource structure-block-block-entity {
get-block-entity: func() -> block-entity;
get-name: func() -> string;
get-author: func() -> string;
get-mode: func() -> string;
get-integrity: func() -> f32;
get-seed: func() -> s64;
}
resource test-block-block-entity {
get-block-entity: func() -> block-entity;
}
resource test-instance-block-block-entity {
get-block-entity: func() -> block-entity;
}
resource trial-spawner-block-entity {
get-block-entity: func() -> block-entity;
}
resource vault-block-entity {
get-block-entity: func() -> block-entity;
}
variant block-entity-type {
command-block-entity(command-block-entity),
sign-block-entity(sign-block-entity),
hanging-sign-block-entity(hanging-sign-block-entity),
jukebox-block-entity(jukebox-block-entity),
chest-block-entity(chest-block-entity),
trapped-chest-block-entity(trapped-chest-block-entity),
mob-spawner-block-entity(mob-spawner-block-entity),
map-block-entity(map-block-entity),
banner-block-entity(banner-block-entity),
barrel-block-entity(barrel-block-entity),
beacon-block-entity(beacon-block-entity),
bed-block-entity(bed-block-entity),
beehive-block-entity(beehive-block-entity),
bell-block-entity(bell-block-entity),
blasting-furnace-block-entity(blasting-furnace-block-entity),
brewing-stand-block-entity(brewing-stand-block-entity),
brushable-block-block-entity(brushable-block-block-entity),
calibrated-sculk-sensor-block-entity(calibrated-sculk-sensor-block-entity),
campfire-block-entity(campfire-block-entity),
chiseled-bookshelf-block-entity(chiseled-bookshelf-block-entity),
comparator-block-entity(comparator-block-entity),
conduit-block-entity(conduit-block-entity),
copper-golem-statue-block-entity(copper-golem-statue-block-entity),
crafter-block-entity(crafter-block-entity),
creaking-heart-block-entity(creaking-heart-block-entity),
daylight-detector-block-entity(daylight-detector-block-entity),
decorated-pot-block-entity(decorated-pot-block-entity),
dispenser-block-entity(dispenser-block-entity),
dropper-block-entity(dropper-block-entity),
enchanting-table-block-entity(enchanting-table-block-entity),
end-gateway-block-entity(end-gateway-block-entity),
end-portal-block-entity(end-portal-block-entity),
ender-chest-block-entity(ender-chest-block-entity),
furnace-block-entity(furnace-block-entity),
hopper-block-entity(hopper-block-entity),
jigsaw-block-entity(jigsaw-block-entity),
lectern-block-entity(lectern-block-entity),
piston-block-entity(piston-block-entity),
potent-sulfur-block-entity(potent-sulfur-block-entity),
sculk-catalyst-block-entity(sculk-catalyst-block-entity),
sculk-sensor-block-entity(sculk-sensor-block-entity),
sculk-shrieker-block-entity(sculk-shrieker-block-entity),
shelf-block-entity(shelf-block-entity),
shulker-box-block-entity(shulker-box-block-entity),
skull-block-entity(skull-block-entity),
smoker-block-entity(smoker-block-entity),
structure-block-block-entity(structure-block-block-entity),
test-block-block-entity(test-block-block-entity),
test-instance-block-block-entity(test-instance-block-block-entity),
trial-spawner-block-entity(trial-spawner-block-entity),
vault-block-entity(vault-block-entity),
container-block-entity(container-block-entity),
}
}
interface gui {
use text.{text-component};
use common.{click-type};
use item-stack.{item-stack};
use screens.{screen};
use inventory.{inventory};
resource gui {
constructor(%type: screen, title: text-component);
/// Returns the underlying inventory handle for this GUI.
get-inventory: func() -> inventory;
set-item: func(slot: u32, item: item-stack);
get-item: func(slot: u32) -> option<item-stack>;
/// Returns the type of this GUI.
get-type: func() -> screen;
/// Returns the title of this GUI.
get-title: func() -> text-component;
/// Returns the number of slots in this GUI.
get-size: func() -> u32;
/// Clears all items from the GUI.
clear-items: func();
/// Sets whether players can grab items out of the inventory.
set-allow-grab-items: func(allow: bool);
/// Returns whether players can grab items out of the inventory.
get-allow-grab-items: func() -> bool;
/// Sets whether players can put items into the inventory from their own.
set-allow-put-items: func(allow: bool);
/// Returns whether players can put items into the inventory from their own.
get-allow-put-items: func() -> bool;
}
}
/// Provides types and utilities for displaying rich dialogs to Java Edition players.
/// These dialogs support various layouts, body elements (text and items),
/// and interactive inputs (checkboxes, text fields, sliders).
interface java-dialogs {
use text.{text-component};
use item-stack.{item-stack};
/// Represents the layout and button configuration of a dialog.
enum dialog-type {
/// A simple dialog with a single "OK" button.
notice,
/// A dialog with "Yes" and "No" buttons.
confirmation,
/// A scrollable list of custom buttons.
multi-action,
/// A list of buttons that open other registered dialogs.
dialog-list,
/// A dedicated menu for displaying server-related links.
server-links,
}
/// Represents an element in the main content area of a dialog.
variant dialog-body {
/// A simple text message.
plain-message(text-component),
/// A visual item display.
item(item-stack),
}
/// A checkbox input control.
record dialog-input-bool {
label: text-component,
default-value: bool,
}
/// A text field input control.
record dialog-input-text {
label: text-component,
placeholder: text-component,
default-value: string,
}
/// A numerical range slider input control.
record dialog-input-number-range {
label: text-component,
min-value: f32,
max-value: f32,
initial-value: f32,
step: f32,
label-format: option<string>,
}
/// A multiple-choice selection input control.
record dialog-input-single-option {
label: text-component,
options: list<text-component>,
initial-index: u32,
}
/// Represents an interactive input control in a dialog.
variant dialog-input {
/// A checkbox for true/false states.
%bool(dialog-input-bool),
/// A simple string input field.
text(dialog-input-text),
/// A slider for numerical input within a range.
number-range(dialog-input-number-range),
/// A multiple-choice selection button.
single-option(dialog-input-single-option),
}
/// Defines what happens after a dialog is closed.
enum after-action {
/// Returns the player to the previous screen (e.g., keeping an inventory open).
peek,
/// Closes all open screens.
pop,
}
/// Represents a custom server-side action.
record custom-click-action {
/// A unique identifier for the action (sent back to the server).
id: string,
/// Optional binary data to send with the action.
payload: option<list<u8>>,
}
/// Represents an action triggered by a button click.
variant action {
/// Opens an external URL.
open-url(string),
/// Triggers a custom server-side callback with an ID and optional payload.
custom-click(custom-click-action),
}
/// Represents a clickable button in a dialog.
record action-button {
text: text-component,
tooltip: option<text-component>,
width: option<u32>,
action: action,
}
/// Built-in link types recognized by the Java Edition client.
enum link-type {
bug-report,
community-guidelines,
support,
status,
feedback,
community,
website,
forums,
news,
announcements,
}
/// The label for a link, which can be a built-in type or custom text.
variant link-label {
/// A built-in link type with a predefined icon/label.
built-in(link-type),
/// A custom text component label.
custom(text-component),
}
/// Represents a link displayed in a Java Edition dialog.
record link {
/// The label to display for the link.
label: link-label,
/// The URL the link points to.
url: string,
}
/// Represents a dialog shown to a Java Edition player.
record dialog {
/// The main title of the dialog.
title: text-component,
/// The layout type of the dialog.
%type: dialog-type,
/// A list of body elements to display in the main area.
body: list<dialog-body>,
/// A list of interactive input controls.
inputs: list<dialog-input>,
/// A list of clickable buttons (for multi-action and other types).
buttons: list<action-button>,
/// A list of links (primarily for server-links type).
links: list<link>,
/// What to do after the dialog is closed.
after-action: option<after-action>,
/// Whether the player can exit the dialog using the Esc key.
can-close-with-escape: bool,
/// The text shown on buttons that link to/open this dialog.
external-title: option<text-component>,
}
}
interface recipe {
use item-stack.{item-stack};
/// Recipe category for the recipe book.
enum recipe-category {
building,
redstone,
equipment,
misc,
food,
blocks,
}
/// Represents an ingredient in a recipe.
variant ingredient {
/// A specific item (e.g. "minecraft:diamond").
item(string),
/// A tag group of items (e.g., "minecraft:logs").
tag(string),
/// One of multiple specific items.
one-of(list<string>),
}
/// Represents a shaped crafting recipe.
record shaped-recipe {
/// The pattern of the recipe (e.g., ["# #", " s ", "# #"]).
pattern: list<string>,
/// Mapping of characters in the pattern to ingredients.
key: list<tuple<string, ingredient>>,
/// The resulting item stack.
output: item-stack,
/// The recipe group (optional).
group: option<string>,
/// The recipe category in the recipe book.
category: option<recipe-category>,
/// Whether to show a toast notification when the recipe is unlocked.
show-notification: option<bool>,
}
/// Represents a shapeless crafting recipe.
record shapeless-recipe {
/// The list of ingredients required.
ingredients: list<ingredient>,
/// The resulting item stack.
output: item-stack,
/// The recipe group (optional).
group: option<string>,
/// The recipe category in the recipe book.
category: option<recipe-category>,
}
/// Represents a cooking recipe (Smelting, Blasting, Smoking, Campfire).
record cooking-recipe {
/// The ingredient to cook.
ingredient: ingredient,
/// The resulting item stack.
output: item-stack,
/// Experience points awarded.
experience: f32,
/// Cooking time in ticks.
cooking-time: u32,
/// The recipe group (optional).
group: option<string>,
/// The recipe category in the recipe book.
category: option<recipe-category>,
}
/// Types of cooking stations.
enum cooking-type {
smelting,
blasting,
smoking,
campfire,
}
/// Common interface for registering recipes.
resource recipe-manager {
/// Registers a shaped crafting recipe.
register-shaped: func(id: string, recipe: shaped-recipe);
/// Registers a shapeless crafting recipe.
register-shapeless: func(id: string, recipe: shapeless-recipe);
/// Registers a cooking recipe.
register-cooking: func(id: string, station-type: cooking-type, recipe: cooking-recipe);
}
}
interface scoreboard {
use text.{text-component};
use common.{named-color};
enum render-type {
integer,
hearts,
}
variant number-format {
blank,
fixed(text-component),
}
enum display-slot {
player-list,
sidebar,
below-name,
sidebar-team-black,
sidebar-team-dark-blue,
sidebar-team-dark-green,
sidebar-team-dark-aqua,
sidebar-team-dark-red,
sidebar-team-dark-purple,
sidebar-team-gold,
sidebar-team-gray,
sidebar-team-dark-gray,
sidebar-team-blue,
sidebar-team-green,
sidebar-team-aqua,
sidebar-team-red,
sidebar-team-light-purple,
sidebar-team-yellow,
sidebar-team-white,
}
enum nametag-visibility {
always,
never,
hide-for-other-teams,
hide-for-own-team,
}
enum collision-rule {
always,
never,
push-other-teams,
push-own-team,
}
record team-settings {
display-name: text-component,
friendly-fire: bool,
see-friendly-invisibles: bool,
nametag-visibility: nametag-visibility,
collision-rule: collision-rule,
color: named-color,
prefix: text-component,
suffix: text-component,
}
resource scoreboard {
add-objective: func(name: string, display-name: text-component, render-type: render-type, number-format: option<number-format>);
update-objective: func(name: string, display-name: text-component, render-type: render-type, number-format: option<number-format>);
remove-objective: func(name: string);
set-display-slot: func(slot: display-slot, objective-name: string);
clear-display-slot: func(slot: display-slot);
update-score: func(entity-name: string, objective-name: string, value: s32, number-format: option<number-format>);
add-score: func(entity-name: string, objective-name: string, delta: s32) -> s32;
remove-score: func(entity-name: string, objective-name: string);
reset-entity-scores: func(entity-name: string);
create-team: func(name: string, settings: team-settings);
remove-team: func(name: string);
update-team: func(name: string, settings: team-settings);
add-player-to-team: func(team-name: string, player-name: string);
remove-player-from-team: func(team-name: string, player-name: string);
clear-team-players: func(team-name: string);
get-teams: func() -> list<string>;
get-team: func(name: string) -> option<team-settings>;
get-team-players: func(team-name: string) -> list<string>;
get-player-team: func(player-name: string) -> option<string>;
}
enum bedrock-sort-order {
ascending,
descending,
}
enum bedrock-display-slot {
player-list,
sidebar,
below-name,
}
resource bedrock-scoreboard {
add-objective: func(name: string, display-name: string, sort-order: bedrock-sort-order);
update-objective: func(name: string, display-name: string, sort-order: bedrock-sort-order);
remove-objective: func(name: string);
set-display-slot: func(slot: bedrock-display-slot, objective-name: string);
clear-display-slot: func(slot: bedrock-display-slot);
update-score: func(entity-name: string, objective-name: string, value: s32);
add-score: func(entity-name: string, objective-name: string, delta: s32) -> s32;
remove-score: func(entity-name: string, objective-name: string);
reset-entity-scores: func(entity-name: string);
}
}
interface uuid {
/// A 128-bit UUID represented as two 64-bit integers.
record uuid {
high: u64,
low: u64,
}
/// Generates a new random v4 UUID.
generate: func() -> uuid;
/// Parses a UUID from a string. Returns none if the string is not a valid UUID.
parse: func(s: string) -> option<uuid>;
/// Converts a UUID to its standard string representation.
to-string: func(id: uuid) -> string;
}
interface bedrock-packets {
use uuid.{uuid};
enum actor-event-id {
none,
jump,
hurt,
death,
start-attacking,
stop-attacking,
taming-failed,
taming-succeeded,
shake-wetness,
eat-grass,
fishhook-bubble,
fishhook-fish-pos,
fishhook-hook-time,
fishhook-tease,
squid-fleeing,
zombie-converting,
play-ambient,
spawn-alive,
start-offer-flower,
stop-offer-flower,
love-hearts,
villager-angry,
villager-happy,
witch-hat-magic,
fireworks-explode,
in-love-hearts,
silverfish-merge-animation,
guardian-attack-sound,
drink-potion,
throw-potion,
prime-tnt-cart,
prime-creeper,
air-supply,
deprecated-add-player-levels,
guardian-mining-fatigue,
agent-swing-arm,
dragon-start-death-anim,
ground-dust,
shake,
feed,
baby-age,
instant-death,
notify-trade,
leash-destroyed,
caravan-updated,
talisman-activate,
deprecated-update-structure-feature,
player-spawned-mob,
puke,
update-stack-size,
start-swimming,
balloon-pop,
treasure-hunt,
summon-agent,
finished-charging-item,
actor-grow-up,
vibration-detected,
drink-milk,
shake-wetness-stop,
kinetic-damage-dealt,
hurt-without-receiving-damage,
}
record s-actor-event {
target-runtime-id: s64,
event-id: actor-event-id,
data: s32,
fire-at-position: option<tuple<f64, f64, f64>>,
}
enum animate-action {
no-action,
swing-arm,
wake-up,
critical-hit,
magic-critical-hit,
}
enum actor-swing-source {
none,
build,
mine,
interact,
attack,
use-item,
throw-item,
drop-item,
event,
}
record s-animate {
action: animate-action,
target-actor-runtime-id: s64,
data: f32,
swing-source: option<actor-swing-source>,
}
record s-block-pick-request {
position: tuple<s32, s32, s32>,
with-data: bool,
max-slots: u8,
}
record s-client-cache-blob-status {
miss-hashes: list<s64>,
hit-hashes: list<s64>,
}
record s-client-cache-status {
is-cache-supported: bool,
}
record command-origin-data {
r-type: string,
uuid: uuid,
request-id: string,
player-id: s64,
}
record s-command-request {
command: string,
origin: command-origin-data,
is-internal: bool,
version: string,
}
record s-container-close {
container-id: u8,
container-type: u8,
server-initiated-close: bool,
}
record s-emote {
actor-runtime-id: s64,
emote-id: string,
emote-length-ticks: s32,
xuid: string,
platform-id: string,
%flags: u8,
}
record s-emote-list {
runtime-id: s64,
emote-piece-ids: list<uuid>,
}
enum action {
invalid,
stop-riding,
interact-update,
npc-open,
open-inventory,
}
record s-interact {
action: action,
target-runtime-id: s64,
position: option<tuple<f64, f64, f64>>,
}
variant inventory-action-source {
container,
%world,
creative,
todo,
unknown(s32),
}
record legacy-set-item-slot {
container-id: u8,
slots: list<u8>,
}
enum hand-slot {
mainhand,
offhand,
}
record stack-request-item {
identifier: option<string>,
metadata-value: s32,
count: s32,
block-runtime-id: s32,
extra-data: list<u8>,
}
record item-stack-request-action-create {
result-index: u8,
}
record item-stack-request-action-beacon-payment {
primary-effect-id: s32,
secondary-effect-id: s32,
}
record item-stack-request-action-mine-block {
hotbar-slot: s32,
predicted-durability: s32,
stack-id: s32,
}
record item-stack-request-action-craft-recipe {
recipe-id: s32,
repetitions: u8,
}
record item-stack-request-action-craft-recipe-auto {
recipe-id: s32,
repetitions: u8,
}
record item-stack-request-action-craft-creative {
creative-item-id: s32,
repetitions: u8,
}
record item-stack-request-action-optional {
recipe-id: s32,
filter-string-index: s32,
}
record item-stack-request-action-grindstone {
recipe-id: s32,
repair-cost: s32,
repetitions: u8,
}
record item-stack-request-action-loom {
pattern-id: string,
repetitions: u8,
}
record item-stack-request-action-craft-results-deprecated {
result-items: list<stack-request-item>,
times-crafted: u8,
}
enum loading-screen-packet-type {
start-loading-screen,
end-loading-screen,
}
record s-loading-screen {
loading-screen-packet-type: loading-screen-packet-type,
loading-screen-id: option<s32>,
}
record s-login {
protocol-version: s32,
jwt: list<u8>,
raw-token: list<u8>,
}
record skin-animation {
frames: f64,
image: string,
image-height: s32,
image-width: s32,
animation-type: s32,
animation-expression: s32,
}
record persona-piece {
is-default: bool,
pack-id: string,
piece-id: string,
piece-type: string,
product-id: string,
}
record persona-piece-tint-colour {
colours: list<string>,
piece-type: string,
}
record client-data {
client-random-id: s64,
device-os: s32,
device-id: string,
game-version: string,
language-code: string,
current-input-mode: s32,
default-input-mode: s32,
ui-profile: s32,
server-address: string,
device-model: string,
gui-scale: s32,
client-is-editor-capable: bool,
client-editor-connection-intent: s32,
max-view-distance: s32,
memory-tier: s32,
platform-type: s32,
graphics-mode: s32,
compatible-with-client-side-chunk-gen: bool,
platform-offline-id: string,
platform-online-id: string,
platform-user-id: string,
self-signed-id: string,
play-fab-id: string,
third-party-name: string,
third-party-name-only: bool,
skin-id: string,
skin-data: string,
skin-image-height: s32,
skin-image-width: s32,
skin-colour: string,
arm-size: string,
persona-skin: bool,
premium-skin: bool,
trusted-skin: bool,
override-skin: bool,
cape-data: string,
cape-id: string,
cape-image-height: s32,
cape-image-width: s32,
cape-on-classic-skin: bool,
skin-geometry: string,
skin-geometry-version: string,
skin-resource-patch: string,
animated-image-data: list<skin-animation>,
skin-animation-data: string,
persona-pieces: list<persona-piece>,
piece-tint-colours: list<persona-piece-tint-colour>,
}
record s-modal-form-response {
form-id: s32,
json-response: option<string>,
form-cancel-reason: option<u8>,
}
record s-packet-violation-warning {
violation-type: s32,
violation-severity: s32,
violation-packet-id: s32,
violation-context: string,
}
enum player-action-type {
unknown,
start-destroy-block,
abort-destroy-block,
stop-destroy-block,
get-updated-block,
drop-item,
start-sleeping,
stop-sleeping,
respawn,
start-jump,
start-sprinting,
stop-sprinting,
start-sneaking,
stop-sneaking,
creative-destroy-block,
change-dimension-ack,
start-gliding,
stop-gliding,
deny-destroy-block,
crack-block,
change-skin,
updated-enchanting-seed,
start-swimming,
stop-swimming,
start-spin-attack,
stop-spin-attack,
interact-with-block,
predict-destroy-block,
continue-destroy-block,
start-item-use-on,
stop-item-use-on,
handled-teleport,
missed-swing,
start-crawling,
stop-crawling,
start-flying,
stop-flying,
client-ack-server-data,
start-using-item,
internal-update,
count,
}
record s-player-action {
player-runtime-id: s64,
action: player-action-type,
block-position: tuple<s32, s32, s32>,
result-pos: tuple<s32, s32, s32>,
face: s32,
}
record player-block-action {
action: s32,
block-pos: tuple<s32, s32, s32>,
face: s32,
}
enum input-mode {
mouse,
touch,
game-pad,
motion-controller,
}
enum play-mode {
normal,
teaser,
screen,
exit-level,
num-modes,
}
enum interaction-model {
touch,
crosshair,
classic,
}
enum input-data {
ascend,
descend,
north-jump,
jump-down,
sprint-down,
change-height,
jumping,
auto-jumping-in-water,
sneaking,
sneak-down,
up,
down,
left,
right,
up-left,
up-right,
want-up,
want-down,
want-down-slow,
want-up-slow,
sprinting,
ascend-block,
descend-block,
sneak-toggle-down,
persist-sneak,
start-sprinting,
stop-sprinting,
start-sneaking,
stop-sneaking,
start-swimming,
stop-swimming,
start-jumping,
start-gliding,
stop-gliding,
perform-item-interaction,
perform-block-actions,
perform-item-stack-request,
handled-teleport,
emoting,
missed-swing,
start-crawling,
stop-crawling,
start-flying,
stop-flying,
client-ack-server-data,
client-predicted-vehicle,
paddling-left,
paddling-right,
block-breaking-delay-enabled,
horizontal-collision,
vertical-collision,
down-left,
down-right,
start-using-item,
camera-relative-movement-enabled,
rot-controlled-by-move-direction,
start-spin-attack,
stop-spin-attack,
is-hotbar-touch-only,
jump-released-raw,
jump-pressed-raw,
jump-current-raw,
sneak-released-raw,
sneak-pressed-raw,
sneak-current-raw,
internal-update,
}
record s-player-hotbar {
selected-slot: s32,
container-id: u8,
should-select-slot: bool,
}
variant ability-value {
%bool(bool),
float(f32),
}
record s-request-ability {
ability: s32,
value: ability-value,
}
record s-request-chunk-radius {
chunk-radius: s32,
max-chunk-radius: u8,
}
record s-request-network-settings {
client-network-version: s32,
}
record s-resource-pack-client-response {
response: u8,
download-size: s32,
pack-ids: list<string>,
}
enum respawn-state {
searching-for-spawn,
ready-to-spawn,
client-ready-to-spawn,
}
record s-respawn {
position: tuple<f64, f64, f64>,
state: respawn-state,
player-runtime-id: s64,
}
record s-set-local-player-as-initialized {
player-id: s64,
}
record s-set-player-inventory-options {
left-inventory-tab: s32,
right-inventory-tab: s32,
filtering: bool,
layout-inv: s32,
layout-craft: s32,
}
enum text-packet-type {
raw,
chat,
translation,
popup,
jukebox-popup,
tip,
system,
whisper,
announcement,
json-whisper,
json,
json-announcement,
}
record s-text {
needs-translation: bool,
r-type: text-packet-type,
source-name: string,
message: string,
parameters: list<string>,
xuid: string,
platform-chat-id: string,
filtered-message: option<string>,
}
record synced-attribute {
attribute-name: string,
min-value: f32,
current-value: f32,
max-value: f32,
}
record enum-data {
name: string,
values: list<s32>,
}
record chained-subcommand-relationship {
index: s32,
value: s32,
}
record chained-subcommand-data {
name: string,
subcommand-values: list<chained-subcommand-relationship>,
}
record param-data {
name: string,
parse-symbol: s32,
is-optional: bool,
options: u8,
}
record overload-data {
is-chaining: bool,
parameter-data: list<param-data>,
}
record soft-enum-data {
enum-name: string,
enum-options: list<string>,
}
record constrained-value-data {
enum-value-symbol: s32,
enum-symbol: s32,
constraint-indices: list<u8>,
}
record c-block-actor-data {
block-position: tuple<s32, s32, s32>,
actor-data-tags: string,
}
record c-block-event {
block-position: tuple<s32, s32, s32>,
event-type: s32,
event-value: s32,
}
record c-boss-event {
boss-entity-id: s64,
event-type: u8,
title: string,
filtered-title: string,
health-percentage: f32,
color: u8,
overlay: u8,
}
record c-change-dimension {
dimension-id: s32,
position: tuple<f64, f64, f64>,
respawn: bool,
loading-screen-id: option<s32>,
}
record c-chunk-radius-updated {
chunk-radius: s32,
}
record missing-blob-data {
blob-id: s64,
blob-data: list<u8>,
}
record c-client-cache-miss-response {
missing-blobs: list<missing-blob-data>,
}
enum build-platform {
unknown,
google,
ios,
osx,
amazon,
gear-vr,
uwp,
win32,
dedicated,
tv-os,
sony,
nintendo,
xbox,
windows-phone,
linux,
}
enum game-type {
unknown,
survival,
creative,
adventure,
default,
spectator,
}
enum player-permission-level {
visitor,
member,
operator,
custom,
}
enum command-permission-level {
any,
game-directors,
admin,
host,
owner,
internal,
}
record command-data {
name: string,
description: string,
%flags: s32,
permission-level: command-permission-level,
alias-enum: s32,
command-data-chained-subcommand-indexes: list<s32>,
overloads: list<overload-data>,
}
record c-available-commands {
enum-values: list<string>,
chained-subcommand-values: list<string>,
post-fixes: list<string>,
enum-data: list<enum-data>,
chained-subcommand-data: list<chained-subcommand-data>,
commands: list<command-data>,
soft-enums: list<soft-enum-data>,
constraints: list<constrained-value-data>,
}
record serialized-abilities-data-serialized-layer {
serialized-layer: s32,
abilities-set: s32,
ability-value: s32,
fly-speed: f32,
vertical-fly-speed: f32,
walk-speed: f32,
}
record serialized-abilities-data {
target-player-raw-id: s64,
player-permissions: player-permission-level,
command-permissions: command-permission-level,
layers: list<serialized-abilities-data-serialized-layer>,
}
record actor-link {
ridden-unique-id: s64,
rider-unique-id: s64,
link-type: u8,
immediate: bool,
rider-initiated: bool,
vehicle-angular-velocity: f32,
}
record c-container-open {
container-id: u8,
container-type: u8,
position: tuple<s32, s32, s32>,
target-entity-id: s64,
}
record c-correct-player-move-prediction {
prediction-type: u8,
pos: tuple<f64, f64, f64>,
pos-delta: tuple<f64, f64, f64>,
rotation: tuple<f64, f64>,
vehicle-angular-velocity: option<f32>,
on-ground: bool,
tick: s64,
}
record recipe-item-descriptor-item {
identifier: string,
metadata-value: s32,
}
variant recipe-item-descriptor {
empty,
item(recipe-item-descriptor-item),
tag(string),
}
record item-descriptor-count {
descriptor: recipe-item-descriptor,
count: s32,
}
record recipe-unlock-requirement {
context: s32,
}
enum creative-category {
all,
construction,
nature,
equipment,
items,
item-command-only,
undefined,
}
record c-disconnect {
reason: s32,
skip-message: bool,
message: string,
filtered-message: string,
}
enum rule-value {
null,
}
record game-rule {
rule-name: string,
rule-can-be-modified: bool,
rule-value: rule-value,
}
record c-gamerules-changed {
rule-data: list<game-rule>,
}
record item-data {
item-name: string,
item-id: s32,
is-component-based: bool,
item-version: s32,
component-data: list<u8>,
}
record c-item-registry {
items: list<item-data>,
}
record item-stack-response-slot-info {
requested-slot: u8,
slot: u8,
amount: u8,
item-stack-net-id: s32,
custom-name: string,
filtered-custom-name: string,
durability-correction: s32,
}
record c-level-event {
event-id: s32,
position: tuple<f64, f64, f64>,
data: s32,
}
enum level-event {
particles-destroy-block,
block-start-break,
block-stop-break,
block-update-break,
}
record c-level-sound-event {
sound-event: string,
position: tuple<f64, f64, f64>,
data: s32,
actor-identifier: string,
is-baby: bool,
is-global: bool,
actor-unique-id: s64,
fire-at-position: option<tuple<f64, f64, f64>>,
}
record c-mob-effect {
target-runtime-id: s64,
event-id: u8,
effect-id: s32,
effect-amplifier: s32,
show-particles: bool,
effect-duration-ticks: s32,
tick: s64,
ambient: bool,
}
record c-modal-form-request {
form-id: s32,
form-ui-json: string,
}
record c-move-actor-absolute {
actor-runtime-id: s64,
header: u8,
position: tuple<f64, f64, f64>,
rotation-x: u8,
rotation-y: u8,
rotation-y-head: u8,
}
record c-move-actor-delta {
entity-runtime-id: s64,
%flags: s32,
x: f32,
y: f32,
z: f32,
pitch: u8,
yaw: u8,
head-yaw: u8,
tick: s64,
}
record c-move-player {
player-runtime-id: s64,
position: tuple<f64, f64, f64>,
pitch: f32,
yaw: f32,
head-yaw: f32,
mode: u8,
on-ground: bool,
riding-runtime-id: s64,
teleport-cause: s32,
teleport-source-entity-type: s32,
tick: s64,
}
record c-network-chunk-publisher-update {
pos-for-view: tuple<s32, s32, s32>,
new-radius: s32,
server-build-chunk-list: list<tuple<f64, f64>>,
}
record c-network-settings {
compression-threshold: s32,
compression-algorithm: s32,
client-throttle-enabled: bool,
client-throttle-threshold: u8,
client-throttle-scalar: f32,
}
enum c-play-status {
login-success,
outdated-client,
outdated-server,
player-spawn,
invalid-tenant,
edition-mismatch-edu-to-vanilla,
edition-mismatch-vanilla-to-edu,
server-full-sub-client,
editor-mismatch-editor-to-vanilla,
editor-mismatch-vanilla-to-editor,
}
record c-player-hotbar {
selected-slot: s32,
container-id: u8,
should-select-slot: bool,
}
record piece-tint-color {
piece-type: string,
colors: list<s32>,
}
record skin {
skin-id: string,
play-fab-id: string,
resource-patch: list<u8>,
image-width: s32,
image-height: s32,
skin-data: list<u8>,
animations: list<skin-animation>,
cape-width: s32,
cape-height: s32,
cape-data: list<u8>,
geometry-data: list<u8>,
animation-data: list<u8>,
geometry-data-engine-version: list<u8>,
cape-id: string,
full-id: string,
arm-size: string,
skin-color: string,
persona-pieces: list<persona-piece>,
piece-tint-colors: list<piece-tint-color>,
is-premium: bool,
is-persona: bool,
persona-cape-on-classic: bool,
is-primary-user: bool,
override-appearance: bool,
is-trusted: bool,
profile-hash: string,
}
record player-list-entry {
uuid: uuid,
entity-unique-id: s64,
username: string,
xuid: string,
platform-chat-id: string,
build-platform: build-platform,
skin: skin,
is-teacher: bool,
is-host: bool,
is-sub-client: bool,
player-color: list<u8>,
}
record c-player-list {
action: u8,
entries: list<player-list-entry>,
}
record c-remove-actor {
target-actor-id: s64,
}
record c-remove-objective {
objective-name: string,
}
record pack-instance-id {
pack-id: string,
version: string,
sub-pack-name: string,
}
record pack-id-version {
pack-uuid: uuid,
pack-version: string,
}
record pack-info-data {
pack-id-version: pack-id-version,
pack-size: s64,
content-key: string,
subpack-name: string,
content-identity: string,
has-scripts: bool,
is-addon-pack: bool,
is-ray-tracing-capable: bool,
cdn-url: string,
}
record c-resource-packs-info {
resource-pack-required: bool,
has-addon-packs: bool,
has-scripts: bool,
force-disable-vibrant-visuals: bool,
world-template-id-and-version: pack-id-version,
resource-packs: list<pack-info-data>,
}
variant metadata-value {
byte(u8),
short(s32),
int(s32),
float(f32),
%string(string),
compound-tag,
item-pos(tuple<s32, s32, s32>),
int64(s64),
vec3(tuple<f64, f64, f64>),
}
record property-sync-data {
int-entries-list: list<tuple<s32, s32>>,
float-entries-list: list<tuple<s32, f32>>,
}
record c-add-actor {
target-actor-id: s64,
target-runtime-id: s64,
actor-type: string,
position: tuple<f64, f64, f64>,
velocity: tuple<f64, f64, f64>,
rotation: tuple<f64, f64>,
y-head-rotation: f32,
y-body-rotation: f32,
attributes-list: list<synced-attribute>,
actor-data: string,
synced-properties: property-sync-data,
actor-links: list<actor-link>,
}
record c-set-actor-data {
target-runtime-id: s64,
actor-data: string,
synced-properties: property-sync-data,
tick: s64,
}
record c-set-actor-link {
link: actor-link,
}
record c-set-actor-motion {
target-runtime-id: s64,
motion: tuple<f64, f64, f64>,
tick: s64,
}
record c-set-difficulty {
difficulty: s32,
}
record c-set-display-objective {
display-slot-name: string,
objective-name: string,
objective-display-name: string,
criteria-name: string,
sort-order: s32,
}
record c-set-health {
health: s32,
}
record c-set-player-game-type {
player-game-type: game-type,
}
record score-entry {
scoreboard-id: s64,
objective-name: string,
score: s32,
entry-type: s32,
entity-unique-id: s64,
custom-name: string,
}
record c-set-score {
action: s32,
entries: list<score-entry>,
}
enum spawn-position-type {
player-respawn,
world-respawn,
}
record c-set-spawn-position {
spawn-position-type: spawn-position-type,
block-position: tuple<s32, s32, s32>,
dimension-type: s32,
spawn-block-pos: tuple<s32, s32, s32>,
}
record c-set-time {
time: s32,
}
enum title-type {
clear,
reset,
title,
subtitle,
actionbar,
times,
title-text-object,
subtitle-text-object,
actionbar-text-object,
}
record c-set-title {
title-type: title-type,
title-text: string,
fade-in-time: s32,
stay-time: s32,
fade-out-time: s32,
xuid: string,
platform-online-id: string,
filtered-title-message: string,
}
record c-show-credits {
player-runtime-id: s64,
credits-state: s32,
}
record gathering-join-info {
experience-id: uuid,
experience-name: string,
experience-world-id: uuid,
experience-world-name: string,
creator-id: string,
unknown-uuid-1: uuid,
unknown-uuid-2: uuid,
server-id: string,
}
record store-entry-point-info {
store-id: string,
store-name: string,
}
record presence-info {
experience-name: string,
world-name: string,
}
record server-join-information {
gathering: option<gathering-join-info>,
store-entry-point: option<store-entry-point-info>,
presence: option<presence-info>,
}
record server-telemetry-data {
server-id: string,
scenario-id: string,
world-id: string,
owner-id: string,
}
record experiment-toggle {
name: string,
enabled: bool,
}
record experiments {
toggles: list<experiment-toggle>,
experiments-ever-toggled: bool,
}
record c-resource-pack-stack-packet {
texture-pack-required: bool,
texture-pack-list: list<pack-instance-id>,
base-game-version: string,
experiments: experiments,
include-editor-packs: bool,
}
enum game-publish-setting {
no-multi-play,
invite-only,
friends-only,
friends-of-friends,
public,
}
record level-settings {
seed: s64,
spawn-biome-type: s32,
custom-biome-name: string,
dimension: s32,
generator-type: s32,
world-gamemode: game-type,
hardcore: bool,
difficulty: s32,
spawn-position: tuple<s32, s32, s32>,
has-achievements-disabled: bool,
editor-world-type: s32,
is-created-in-editor: bool,
is-exported-from-editor: bool,
day-cycle-stop-time: s32,
education-edition-offer: s32,
has-education-features-enabled: bool,
education-product-id: string,
rain-level: f32,
lightning-level: f32,
has-confirmed-platform-locked-content: bool,
was-multiplayer-intended: bool,
was-lan-broadcasting-intended: bool,
xbox-live-broadcast-setting: game-publish-setting,
platform-broadcast-setting: game-publish-setting,
commands-enabled: bool,
is-texture-packs-required: bool,
rule-data: list<game-rule>,
experiments: experiments,
bonus-chest: bool,
has-start-with-map-enabled: bool,
permission-level: u8,
server-simulation-distance: s32,
has-locked-behavior-pack: bool,
has-locked-resource-pack: bool,
is-from-locked-world-template: bool,
is-using-msa-gamertags-only: bool,
is-from-world-template: bool,
is-world-template-option-locked: bool,
is-only-spawning-v1-villagers: bool,
is-disabling-personas: bool,
is-disabling-custom-skins: bool,
emote-chat-muted: bool,
game-version: string,
limited-world-width: s32,
limited-world-height: s32,
new-nether: bool,
edu-shared-uri-button-name: string,
edu-shared-uri-link-uri: string,
override-force-experimental-gameplay-has-value: bool,
chat-restriction-level: u8,
disable-player-interactions: bool,
server-editor-connection-policy: s32,
allow-anonymous-block-drops-in-editor-worlds: bool,
}
record c-start-game {
entity-id: s64,
runtime-entity-id: s64,
player-gamemode: game-type,
position: tuple<f64, f64, f64>,
pitch: f32,
yaw: f32,
level-settings: level-settings,
level-id: string,
level-name: string,
premium-world-template-id: string,
is-trial: bool,
rewind-history-size: s32,
server-authoritative-block-breaking: bool,
current-level-time: s64,
enchantment-seed: s32,
block-properties-size: s32,
multiplayer-correlation-id: string,
enable-itemstack-net-manager: bool,
server-version: string,
compound-id: u8,
compound-len: s32,
compound-end: u8,
block-registry-checksum: s64,
world-template-id: uuid,
enable-clientside-generation: bool,
blocknetwork-ids-are-hashed: bool,
server-auth-sounds: bool,
server-join-information: option<server-join-information>,
telemetry: server-telemetry-data,
}
record gg {
name: string,
id: u8,
len: s32,
end: u8,
}
record c-take-item-actor {
item-runtime-id: s64,
actor-runtime-id: s64,
}
record c-transfer {
server-address: string,
server-port: s32,
reload-world: bool,
}
record c-update-abilities {
data: serialized-abilities-data,
}
enum ability {
build,
mine,
doors-and-switches,
open-containers,
attack-players,
attack-mobs,
operator-commands,
teleport,
invulnerable,
flying,
may-fly,
instabuild,
lightning,
fly-speed,
walk-speed,
muted,
world-builder,
no-clip,
privileged-builder,
vertical-fly-speed,
ability-count,
}
record attribute-modifier {
id: string,
name: string,
amount: f32,
operation: s32,
operand: s32,
is-serializable: bool,
}
record attribute-data {
min-value: f32,
max-value: f32,
current-value: f32,
default-min-value: f32,
default-max-value: f32,
default-value: f32,
name: string,
modifiers: list<attribute-modifier>,
}
record c-update-attributes {
target-runtime-id: s64,
attribute-list: list<attribute-data>,
tick: s64,
}
record c-update-block {
block-position: tuple<s32, s32, s32>,
block-runtime-id: s32,
%flags: s32,
layer: s32,
}
record c-update-trade {
container-id: u8,
r-type: u8,
size: s32,
trader-tier: s32,
entity-unique-id: s64,
last-trading-player: s64,
display-name: string,
use-new-trade-screen: bool,
using-economy-trade: bool,
data: string,
}
record network-item-descriptor {
id: s32,
stack-size: s32,
aux-value: s32,
block-runtime-id: s32,
nbt-data: string,
place-on-blocks: list<string>,
destroy-blocks: list<string>,
shield-blocking-tick: s64,
}
record inventory-action {
source-type: s32,
window-id: option<s32>,
source-flags: option<s32>,
inventory-slot: s32,
old-item: network-item-descriptor,
new-item: network-item-descriptor,
}
record use-item-transaction-data {
action-type: s32,
trigger-type: u8,
block-position: tuple<s32, s32, s32>,
block-face: u8,
hot-bar-slot: s32,
hand: hand-slot,
item-in-hand: network-item-descriptor,
player-position: tuple<f64, f64, f64>,
click-position: tuple<f64, f64, f64>,
block-runtime-id: s32,
client-prediction: u8,
client-cooldown-state: u8,
}
record use-item-on-entity-transaction-data {
target-entity-runtime-id: s64,
action-type: s32,
hot-bar-slot: s32,
item-in-hand: network-item-descriptor,
player-position: tuple<f64, f64, f64>,
click-position: tuple<f64, f64, f64>,
}
record release-item-transaction-data {
action-type: s32,
hot-bar-slot: s32,
item-in-hand: network-item-descriptor,
head-position: tuple<f64, f64, f64>,
}
variant transaction-data {
normal(string),
mismatch(string),
use-item(use-item-transaction-data),
use-item-on-entity(use-item-on-entity-transaction-data),
release-item(release-item-transaction-data),
}
record s-inventory-transaction {
legacy-request-id: s32,
legacy-set-item-slots: list<legacy-set-item-slot>,
has-value: bool,
actions: list<inventory-action>,
transaction-type: s32,
transaction-data: transaction-data,
}
record player-use-item-transaction-data {
action-type: s32,
trigger-type: u8,
block-position: tuple<s32, s32, s32>,
block-face: u8,
hot-bar-slot: s32,
item-in-hand: network-item-descriptor,
player-position: tuple<f64, f64, f64>,
click-position: tuple<f64, f64, f64>,
block-runtime-id: s32,
client-prediction: u8,
client-cooldown-state: u8,
}
record player-inventory-action {
legacy-request-id: s32,
legacy-slots: list<legacy-set-item-slot>,
actions: list<inventory-action>,
transaction: player-use-item-transaction-data,
}
record bedrock-shapeless-recipe {
recipe-id: string,
input: list<item-descriptor-count>,
output: list<network-item-descriptor>,
uuid: uuid,
block: string,
priority: s32,
unlock-requirement: recipe-unlock-requirement,
recipe-network-id: s32,
}
record bedrock-shaped-recipe {
recipe-id: string,
width: s32,
height: s32,
input: list<item-descriptor-count>,
output: list<network-item-descriptor>,
uuid: uuid,
block: string,
priority: s32,
assume-symmetry: bool,
unlock-requirement: recipe-unlock-requirement,
recipe-network-id: s32,
}
variant bedrock-recipe {
shapeless(bedrock-shapeless-recipe),
shaped(bedrock-shaped-recipe),
}
record c-crafting-data {
recipes: list<bedrock-recipe>,
clean-recipes: bool,
}
record creative-group-info-payload {
creative-category: creative-category,
name: string,
group-icon-item: network-item-descriptor,
}
record creative-item-entry-payload {
id: s32,
item: network-item-descriptor,
group-index: s32,
}
record c-creative-content {
groups: list<creative-group-info-payload>,
entries: list<creative-item-entry-payload>,
}
record item-stack-wrapper {
id: s32,
stack-size: s32,
aux-value: s32,
block-runtime-id: s32,
nbt-data: string,
place-on-blocks: list<string>,
destroy-blocks: list<string>,
shield-blocking-tick: s64,
net-id: option<s32>,
}
record c-add-item-actor {
target-actor-id: s64,
target-runtime-id: s64,
item: item-stack-wrapper,
position: tuple<f64, f64, f64>,
velocity: tuple<f64, f64, f64>,
entity-data: string,
is-from-fishing: bool,
}
record network-item-stack-descriptor {
id: s32,
stack-size: s32,
aux-value: s32,
block-runtime-id: s32,
extra-data: list<u8>,
net-id: option<s32>,
}
record s-mob-equipment {
entity-runtime-id: s64,
item: network-item-stack-descriptor,
slot: u8,
selected-slot: u8,
container-id: u8,
}
record c-add-player {
uuid: uuid,
player-name: string,
target-runtime-id: s64,
platform-chat-id: string,
position: tuple<f64, f64, f64>,
velocity: tuple<f64, f64, f64>,
rotation: tuple<f64, f64>,
y-head-rotation: f32,
carried-item: network-item-stack-descriptor,
player-game-type: game-type,
entity-data: string,
synced-properties: property-sync-data,
abilities-data: serialized-abilities-data,
actor-links: list<actor-link>,
device-id: string,
build-platform: build-platform,
}
record c-mob-equipment {
target-runtime-id: s64,
item: network-item-stack-descriptor,
slot: u8,
selected-slot: u8,
container-id: u8,
}
enum container-name {
anvil-input,
anvil-material,
anvil-result-preview,
smithing-table-input,
smithing-table-material,
smithing-table-result-preview,
armor,
level-entity,
beacon-payment,
brewing-stand-input,
brewing-stand-result,
brewing-stand-fuel,
combined-hot-bar-and-inventory,
crafting-input,
crafting-output-preview,
recipe-construction,
recipe-nature,
recipe-items,
recipe-search,
recipe-search-bar,
recipe-equipment,
recipe-book,
enchanting-input,
enchanting-material,
furnace-fuel,
furnace-ingredient,
furnace-result,
horse-equip,
hot-bar,
inventory,
shulker-box,
trade-ingredient1,
trade-ingredient2,
trade-result-preview,
offhand,
compound-creator-input,
compound-creator-output-preview,
element-constructor-output-preview,
material-reducer-input,
material-reducer-output,
lab-table-input,
loom-input,
loom-dye,
loom-material,
loom-result-preview,
blast-furnace-ingredient,
smoker-ingredient,
trade2-ingredient1,
trade2-ingredient2,
trade2-result-preview,
grindstone-input,
grindstone-additional,
grindstone-result-preview,
stonecutter-input,
stonecutter-result-preview,
cartography-input,
cartography-additional,
cartography-result-preview,
barrel,
cursor,
created-output,
smithing-table-template,
crafter-level-entity,
dynamic,
recipe-food,
recipe-blocks,
recipe-furnace-items,
}
record full-container-name {
container-name: container-name,
dynamic-id: option<s32>,
}
record item-stack-request-slot-info {
container-name: full-container-name,
slot-id: u8,
stack-id: s32,
}
record item-stack-request-action-take {
count: u8,
source: item-stack-request-slot-info,
destination: item-stack-request-slot-info,
}
record item-stack-request-action-place {
count: u8,
source: item-stack-request-slot-info,
destination: item-stack-request-slot-info,
}
record item-stack-request-action-swap {
slot1: item-stack-request-slot-info,
slot2: item-stack-request-slot-info,
}
record item-stack-request-action-drop {
count: u8,
source: item-stack-request-slot-info,
randomly: bool,
}
record item-stack-request-action-destroy {
count: u8,
source: item-stack-request-slot-info,
}
record item-stack-request-action-consume {
count: u8,
source: item-stack-request-slot-info,
}
variant item-stack-request-action {
take(item-stack-request-action-take),
place(item-stack-request-action-place),
swap(item-stack-request-action-swap),
drop(item-stack-request-action-drop),
destroy(item-stack-request-action-destroy),
consume(item-stack-request-action-consume),
create(item-stack-request-action-create),
lab-table-combine,
beacon-payment(item-stack-request-action-beacon-payment),
mine-block(item-stack-request-action-mine-block),
craft-recipe(item-stack-request-action-craft-recipe),
craft-recipe-auto(item-stack-request-action-craft-recipe-auto),
craft-creative(item-stack-request-action-craft-creative),
optional(item-stack-request-action-optional),
grindstone(item-stack-request-action-grindstone),
loom(item-stack-request-action-loom),
craft-non-implemented,
craft-results-deprecated(item-stack-request-action-craft-results-deprecated),
}
record item-stack-request {
request-id: s32,
actions: list<item-stack-request-action>,
filter-strings: list<string>,
filter-cause: s32,
}
record s-item-stack-request {
requests: list<item-stack-request>,
}
record s-player-auth-input {
pitch: f32,
yaw: f32,
position: tuple<f64, f64, f64>,
move-vec: tuple<f64, f64>,
head-yaw: f32,
input-data: list<s64>,
input-mode: s32,
play-mode: s32,
interaction-model: s32,
interact-pitch: f32,
interact-yaw: f32,
tick: s64,
delta: tuple<f64, f64, f64>,
block-actions: option<list<player-block-action>>,
item-interaction: option<player-inventory-action>,
item-stack-request: option<item-stack-request>,
vehicle-rotation: option<tuple<f64, f64>>,
vehicle-unique-id: option<s64>,
analog-move: tuple<f64, f64>,
camera-orientation: tuple<f64, f64, f64>,
raw-move: tuple<f64, f64>,
}
record c-inventory-content {
container-id: s32,
slots: list<network-item-stack-descriptor>,
full-container-name: full-container-name,
storage-item: network-item-stack-descriptor,
}
record c-inventory-slot {
container-id: s32,
slot: s32,
full-container-name: option<full-container-name>,
storage-item: option<network-item-stack-descriptor>,
item: network-item-stack-descriptor,
}
record item-stack-response-container-info {
full-container-name: full-container-name,
slots: list<item-stack-response-slot-info>,
}
record item-stack-response-info {
%result: u8,
client-request-id: s32,
containers: list<item-stack-response-container-info>,
}
record c-item-stack-response {
responses: list<item-stack-response-info>,
}
record network-item-stack {
id: s32,
count: s32,
aux-value: s32,
block-runtime-id: s32,
extra-data: list<u8>,
}
variant serverbound-packet {
s-actor-event(s-actor-event),
s-animate(s-animate),
s-block-pick-request(s-block-pick-request),
s-client-cache-blob-status(s-client-cache-blob-status),
s-client-cache-status(s-client-cache-status),
s-command-request(s-command-request),
s-container-close(s-container-close),
s-emote(s-emote),
s-emote-list(s-emote-list),
s-interact(s-interact),
s-inventory-transaction(s-inventory-transaction),
s-item-stack-request(s-item-stack-request),
s-loading-screen(s-loading-screen),
s-login(s-login),
s-mob-equipment(s-mob-equipment),
s-modal-form-response(s-modal-form-response),
s-packet-violation-warning(s-packet-violation-warning),
s-player-action(s-player-action),
s-player-auth-input(s-player-auth-input),
s-player-hotbar(s-player-hotbar),
s-request-ability(s-request-ability),
s-request-chunk-radius(s-request-chunk-radius),
s-request-network-settings(s-request-network-settings),
s-resource-pack-client-response(s-resource-pack-client-response),
s-respawn(s-respawn),
s-set-local-player-as-initialized(s-set-local-player-as-initialized),
s-set-player-inventory-options(s-set-player-inventory-options),
s-text(s-text),
unknown,
}
variant clientbound-packet {
c-add-actor(c-add-actor),
c-add-item-actor(c-add-item-actor),
c-add-player(c-add-player),
c-available-commands(c-available-commands),
c-biome-definition-list,
c-block-actor-data(c-block-actor-data),
c-block-event(c-block-event),
c-boss-event(c-boss-event),
c-change-dimension(c-change-dimension),
c-chunk-radius-updated(c-chunk-radius-updated),
c-client-cache-miss-response(c-client-cache-miss-response),
c-container-open(c-container-open),
c-correct-player-move-prediction(c-correct-player-move-prediction),
c-crafting-data(c-crafting-data),
c-creative-content(c-creative-content),
c-disconnect(c-disconnect),
c-gamerules-changed(c-gamerules-changed),
c-inventory-content(c-inventory-content),
c-inventory-slot(c-inventory-slot),
c-item-registry(c-item-registry),
c-item-stack-response(c-item-stack-response),
c-jigsaw-structure-data,
c-level-event(c-level-event),
c-level-sound-event(c-level-sound-event),
c-mob-effect(c-mob-effect),
c-mob-equipment(c-mob-equipment),
c-modal-form-request(c-modal-form-request),
c-move-actor-absolute(c-move-actor-absolute),
c-move-actor-delta(c-move-actor-delta),
c-move-player(c-move-player),
c-network-chunk-publisher-update(c-network-chunk-publisher-update),
c-network-settings(c-network-settings),
c-play-status(c-play-status),
c-player-hotbar(c-player-hotbar),
c-player-list(c-player-list),
c-remove-actor(c-remove-actor),
c-remove-objective(c-remove-objective),
c-resource-pack-stack-packet(c-resource-pack-stack-packet),
c-resource-packs-info(c-resource-packs-info),
c-set-actor-data(c-set-actor-data),
c-set-actor-link(c-set-actor-link),
c-set-actor-motion(c-set-actor-motion),
c-set-difficulty(c-set-difficulty),
c-set-display-objective(c-set-display-objective),
c-set-health(c-set-health),
c-set-player-game-type(c-set-player-game-type),
c-set-score(c-set-score),
c-set-spawn-position(c-set-spawn-position),
c-set-time(c-set-time),
c-set-title(c-set-title),
c-show-credits(c-show-credits),
c-start-game(c-start-game),
c-take-item-actor(c-take-item-actor),
c-transfer(c-transfer),
c-update-abilities(c-update-abilities),
c-update-attributes(c-update-attributes),
c-update-block(c-update-block),
c-update-trade(c-update-trade),
c-voxel-shapes,
unknown,
}
}
interface java-packets {
use uuid.{uuid};
record config-s-client-information-config {
locale: string,
view-distance: u8,
chat-mode: s32,
chat-colors: bool,
skin-parts: u8,
main-hand: s32,
text-filtering: bool,
server-listing: bool,
}
record config-s-config-cookie-response {
key: string,
has-payload: bool,
payload: option<list<u8>>,
}
record config-s-custom-click-action {
action-id: string,
payload: option<list<u8>>,
}
record config-s-keep-alive {
keep-alive-id: s64,
}
record config-s-known-packs {
known-packs: list<string>,
}
record config-s-plugin-message {
channel: string,
data: list<u8>,
}
record config-s-config-pong {
id: s32,
}
variant resource-pack-response-result {
download-success,
download-fail,
downloaded,
accepted,
declined,
invalid-url,
reload-failed,
discarded,
unknown(s32),
}
record config-s-config-resource-pack {
uuid: uuid,
%result: s32,
}
record login-s-login-cookie-response {
key: string,
payload: option<list<u8>>,
}
record s-encryption-response {
shared-secret: list<u8>,
verify-token: list<u8>,
}
record login-s-login-start {
name: string,
uuid: uuid,
}
record login-s-login-plugin-response {
message-id: s32,
data: option<list<u8>>,
}
record s-attack {
entity-id: s32,
}
record s-block-entity-tag-query {
transaction-id: s32,
location: tuple<s32, s32, s32>,
}
record s-bundle-item-selected {
slot-id: s32,
selected-item-index: s32,
}
record s-change-difficulty {
difficulty: string,
}
record s-change-game-mode {
game-mode: string,
}
record s-chat-ack {
offset: s32,
}
record s-chat-command {
command: string,
}
record argument-signature {
name: string,
signature: list<u8>,
}
record s-chat-command-signed {
command: string,
timestamp: s64,
salt: s64,
argument-signatures: list<argument-signature>,
message-count: s32,
acknowledged: list<u8>,
checksum: u8,
}
record s-chat-message {
message: string,
timestamp: s64,
salt: s64,
signature: option<list<u8>>,
message-count: s32,
acknowledged: list<u8>,
checksum: u8,
}
record s-chunk-batch {
chunks-per-tick: f32,
}
enum slot-action-type {
pickup,
quick-move,
swap,
clone,
throw,
quick-craft,
pickup-all,
}
record s-click-slot {
sync-id: s32,
revision: s32,
slot: s32,
button: u8,
mode: slot-action-type,
length-of-array: s32,
array-of-changed-slots: list<tuple<s32, string>>,
carried-item: string,
}
record s-client-command {
action-id: s32,
}
record s-client-information-play {
locale: string,
view-distance: u8,
chat-mode: s32,
chat-colors: bool,
skin-parts: u8,
main-hand: s32,
text-filtering: bool,
server-listing: bool,
}
record s-close-container {
window-id: s32,
}
record s-command-suggestion {
id: s32,
command: string,
}
record s-confirm-teleport {
teleport-id: s32,
position: tuple<f64, f64, f64>,
yaw: f32,
pitch: f32,
}
record s-container-button-click {
window-id: s32,
button-id: s32,
}
record s-container-slot-state-changed {
slot-id: s32,
container-id: s32,
new-state: bool,
}
record s-cookie-response {
key: string,
payload: option<list<u8>>,
}
record s-custom-click-action {
action-id: string,
payload: option<list<u8>>,
}
record s-custom-payload {
channel: string,
data: list<u8>,
}
record s-debug-sample-subscription {
sample-type: s32,
}
record s-debug-subscription-request {
sample-type: s32,
}
record s-edit-book {
slot: s32,
pages: list<string>,
title: option<string>,
}
record s-entity-tag-query {
transaction-id: s32,
entity-id: s32,
}
record s-interact {
entity-id: s32,
r-type: s32,
target-position: option<tuple<f64, f64, f64>>,
hand: option<s32>,
sneaking: bool,
}
enum action-type {
interact,
attack,
interact-at,
}
record s-jigsaw-generate {
pos: tuple<s32, s32, s32>,
levels: s32,
keep-jigsaws: bool,
}
record s-keep-alive {
keep-alive-id: s64,
}
record s-lock-difficulty {
locked: bool,
}
record s-move-vehicle {
x: f64,
y: f64,
z: f64,
yaw: f32,
pitch: f32,
on-ground: bool,
}
record s-paddle-boat {
left-paddle: bool,
right-paddle: bool,
}
record s-pick-item-from-block {
pos: tuple<s32, s32, s32>,
include-data: bool,
}
record s-pick-item-from-entity {
id: s32,
include-data: bool,
}
record s-play-ping-request {
payload: s64,
}
record s-place-recipe {
container-id: u8,
recipe-display-id: s32,
use-max-items: bool,
}
record s-player-abilities {
%flags: u8,
fly-speed: option<f32>,
walk-speed: option<f32>,
}
record s-player-action {
status: s32,
position: tuple<s32, s32, s32>,
face: u8,
sequence: s32,
}
enum status {
started-digging,
cancelled-digging,
finished-digging,
drop-item-stack,
drop-item,
release-item-in-use,
swap-item,
spear-jab,
change-destroy-direction,
}
enum action {
start-sneaking,
stop-sneaking,
leave-bed,
start-sprinting,
stop-sprinting,
start-horse-jump,
stop-horse-jump,
open-vehicle-inventory,
start-flying-elytra,
}
record s-player-command {
entity-id: s32,
action: action,
jump-boost: s32,
}
record s-set-player-ground {
on-ground: bool,
}
record s-player-input {
input: u8,
}
record s-player-position {
position: tuple<f64, f64, f64>,
collision: u8,
}
record s-player-position-rotation {
position: tuple<f64, f64, f64>,
yaw: f32,
pitch: f32,
collision: u8,
}
record s-player-rotation {
yaw: f32,
pitch: f32,
ground: bool,
}
record s-player-session {
session-id: uuid,
expires-at: s64,
public-key: list<u8>,
key-signature: list<u8>,
}
record s-play-pong {
id: s32,
}
record s-recipe-book-change-settings {
book-type: s32,
is-open: bool,
is-filtering: bool,
}
record s-recipe-book-seen-recipe {
recipe-display-id: s32,
}
record s-rename-item {
item-name: string,
}
variant play-resource-pack-result {
download-success,
declined,
download-fail,
accepted,
downloaded,
invalid-url,
reload-failed,
discarded,
unknown(s32),
}
record s-play-resource-pack {
uuid: uuid,
%result: s32,
}
variant s-seen-advancement {
open-tab(string),
close-tab,
}
record s-select-trade {
selected-slot: s32,
}
record s-set-beacon {
primary-effect: option<s32>,
secondary-effect: option<s32>,
}
record s-set-command-block {
pos: tuple<s32, s32, s32>,
command: string,
mode: s32,
%flags: u8,
}
enum command-block-mode {
chain,
repeating,
impulse,
}
record s-set-command-minecart {
entity-id: s32,
command: string,
track-output: bool,
}
record s-set-creative-slot {
slot: s32,
clicked-item: string,
}
record game-rule-entry {
game-rule-key: string,
value: string,
}
record s-set-game-rule {
entries: list<game-rule-entry>,
}
record s-set-held-item {
slot: s32,
}
record s-set-jigsaw-block {
pos: tuple<s32, s32, s32>,
name: string,
target: string,
pool: string,
final-state: string,
joint: string,
selection-priority: s32,
placement-priority: s32,
}
record s-set-structure-block {
location: tuple<s32, s32, s32>,
action: s32,
mode: s32,
name: string,
offset-x: u8,
offset-y: u8,
offset-z: u8,
size-x: u8,
size-y: u8,
size-z: u8,
mirror: s32,
rotation: s32,
metadata: string,
integrity: f32,
seed: s64,
%flags: u8,
}
enum test-block-mode {
start,
log,
fail,
accept,
}
record s-set-test-block {
position: tuple<s32, s32, s32>,
mode: test-block-mode,
message: string,
}
record s-spectate-entity {
target: uuid,
}
record s-swing-arm {
hand: s32,
}
record s-teleport-to-entity {
target: uuid,
}
enum test-instance-block-action {
init,
query,
set,
reset,
save,
%export,
run,
}
record var-int-vector3 {
x: s32,
y: s32,
z: s32,
}
enum test-instance-block-status {
cleared,
running,
success,
failed,
}
record test-instance-block-data {
test: option<string>,
size: var-int-vector3,
rotation: string,
ignore-entities: bool,
status: test-instance-block-status,
error-message: option<string>,
}
record s-test-instance-block-action {
pos: tuple<s32, s32, s32>,
action: test-instance-block-action,
data: test-instance-block-data,
}
record s-update-sign {
location: tuple<s32, s32, s32>,
is-front-text: bool,
line-1: string,
line-2: string,
line-3: string,
line-4: string,
}
record s-use-item {
hand: s32,
sequence: s32,
yaw: f32,
pitch: f32,
}
record s-use-item-on {
hand: s32,
position: tuple<s32, s32, s32>,
face: s32,
cursor-pos: tuple<f64, f64, f64>,
inside-block: bool,
is-against-world-border: bool,
sequence: s32,
}
record status-s-status-ping-request {
payload: s64,
}
record config-c-config-add-resource-pack {
uuid: uuid,
url: string,
hash: string,
forced: bool,
prompt-message: option<string>,
}
record config-c-code-of-conduct {
code-of-conduct: string,
}
record config-c-config-disconnect {
reason: string,
}
record config-c-cookie-request {
key: string,
}
record config-c-config-custom-report-details {
details: list<tuple<string, string>>,
}
record config-c-feature-flags {
features: list<string>,
}
record config-c-known-packs {
known-packs: list<string>,
}
record config-c-config-ping {
id: s32,
}
record config-c-plugin-message {
channel: string,
data: list<u8>,
}
record config-c-config-post-effects {
effects: list<string>,
}
record config-c-registry-data {
registry-id: string,
entries: list<string>,
}
record config-c-config-remove-resource-pack {
uuid: option<uuid>,
}
record config-c-config-server-links {
links: list<string>,
}
record config-c-config-show-dialog {
dialog: string,
}
record config-c-store-cookie {
key: string,
payload: list<u8>,
}
record config-c-transfer {
host: string,
port: s32,
}
record config-c-update-tags {
tags: list<string>,
}
record login-c-login-cookie-request {
key: string,
}
record c-encryption-request {
server-id: string,
public-key: list<u8>,
verify-token: list<u8>,
should-authenticate: bool,
}
record login-c-login-disconnect {
json-reason: string,
}
record login-c-login-plugin-request {
message-id: s32,
channel: string,
data: list<u8>,
}
record login-c-set-compression {
threshold: s32,
}
record c-acknowledge-block-change {
sequence-id: s32,
}
record c-action-bar {
action-bar: string,
}
record c-add-resource-pack {
uuid: uuid,
url: string,
hash: string,
forced: bool,
prompt-message: option<string>,
}
record statistic {
category-id: s32,
statistic-id: s32,
value: s32,
}
record c-award-stats {
stats: list<statistic>,
}
record c-set-block-destroy-stage {
entity-id: s32,
location: tuple<s32, s32, s32>,
destroy-stage: u8,
}
record c-block-entity-data {
location: tuple<s32, s32, s32>,
r-type: s32,
nbt-data: list<u8>,
}
record c-block-event {
location: tuple<s32, s32, s32>,
action-id: u8,
action-parameter: u8,
block-type: s32,
}
record c-block-update {
location: tuple<s32, s32, s32>,
state-id: s32,
}
record bossevent-action-add {
title: string,
health: f32,
color: s32,
division: s32,
%flags: u8,
}
record bossevent-action-update-style {
color: s32,
dividers: s32,
}
variant bossevent-action {
add(bossevent-action-add),
remove,
update-health(f32),
update-tile(string),
update-style(bossevent-action-update-style),
update-flags(u8),
}
record c-boss-event {
uuid: uuid,
action: bossevent-action,
}
record c-center-chunk {
chunk-x: s32,
chunk-z: s32,
}
record c-change-difficulty {
difficulty: u8,
locked: bool,
}
record c-chunk-batch-end {
batch-size: s32,
}
record chunk-heightmaps {
world-surface: option<list<s64>>,
motion-blocking: option<list<s64>>,
motion-blocking-no-leaves: option<list<s64>>,
}
record chunk-block-entity {
packed-xz: u8,
y: s32,
type-id: s32,
data: string,
}
record chunk-biome-entry {
chunk-x: s32,
chunk-z: s32,
data: list<u8>,
}
record c-chunks-biomes {
chunks: list<chunk-biome-entry>,
}
record c-clear-title {
reset: bool,
}
record c-close-container {
sync-id: s32,
}
record c-combat-death {
player-id: s32,
message: string,
}
record c-combat-end {
duration-ticks: s32,
}
record command-suggestion {
suggestion: string,
tooltip: option<string>,
}
record c-command-suggestions {
id: s32,
start: s32,
length: s32,
matches: list<command-suggestion>,
}
record proto-node-type-literal {
name: string,
is-executable: bool,
redirect-target: option<s32>,
restricted: bool,
}
record argument-type-float {
min: option<f32>,
max: option<f32>,
}
record argument-type-double {
min: option<f64>,
max: option<f64>,
}
record argument-type-integer {
min: option<s32>,
max: option<s32>,
}
record argument-type-long {
min: option<s64>,
max: option<s64>,
}
record argument-type-entity {
%flags: u8,
}
record argument-type-score-holder {
%flags: u8,
}
record argument-type-time {
min: s32,
}
record argument-type-resource-or-tag {
identifier: string,
}
record argument-type-resource-or-tag-key {
identifier: string,
}
record argument-type-resource {
identifier: string,
}
record argument-type-resource-key {
identifier: string,
}
enum string-proto-arg-behavior {
single-word,
quotable-phrase,
greedy-phrase,
}
variant argument-type {
%bool,
float(argument-type-float),
double(argument-type-double),
integer(argument-type-integer),
long(argument-type-long),
%string(string-proto-arg-behavior),
entity(argument-type-entity),
game-profile,
block-pos,
column-pos,
vec3,
vec2,
block-state,
block-predicate,
item-stack,
item-predicate,
color,
hex-color,
component,
style,
message,
nbt-compound,
nbt-tag,
nbt-path,
objective,
objective-criteria,
operation,
particle,
angle,
rotation,
scoreboard-slot,
score-holder(argument-type-score-holder),
swizzle,
team,
item-slot,
item-slots,
resource-location,
function,
entity-anchor,
int-range,
float-range,
dimension,
gamemode,
time(argument-type-time),
resource-or-tag(argument-type-resource-or-tag),
resource-or-tag-key(argument-type-resource-or-tag-key),
%resource(argument-type-resource),
resource-key(argument-type-resource-key),
resource-selector,
template-mirror,
template-rotation,
heightmap,
loot-table,
loot-predicate,
loot-modifier,
dialog,
uuid,
}
enum suggestion-providers {
ask-server,
all-recipes,
available-sounds,
summonable-entities,
}
record proto-node-type-argument {
name: string,
is-executable: bool,
redirect-target: option<s32>,
parser: argument-type,
override-suggestion-type: option<suggestion-providers>,
restricted: bool,
}
variant proto-node-type {
root,
literal(proto-node-type-literal),
argument(proto-node-type-argument),
}
record proto-node {
children: list<s32>,
node-type: proto-node-type,
}
record c-commands {
nodes: list<proto-node>,
root-node-index: s32,
}
record c-play-cookie-request {
key: string,
}
record c-custom-chat-completions {
action: s32,
entries: list<string>,
}
record c-custom-payload {
channel: string,
data: list<u8>,
}
record c-play-custom-report-details {
details: list<tuple<string, string>>,
}
record c-damage-event {
entity-id: s32,
source-type-id: s32,
source-cause-id: s32,
source-direct-id: s32,
source-position: option<tuple<f64, f64, f64>>,
}
record c-debug-block-value {
pos: tuple<s32, s32, s32>,
name: string,
value: string,
}
record c-debug-chunk-value {
chunk-pos: tuple<f64, f64>,
name: string,
value: string,
}
record c-debug-entity-value {
entity-id: s32,
name: string,
value: string,
}
record c-debug-event {
name: string,
data: list<u8>,
}
record c-debug-sample {
sample: list<s64>,
sample-type: s32,
}
record c-delete-chat {
signature-id: s32,
signature: option<list<u8>>,
}
record c-play-disconnect {
reason: string,
}
record c-disguised-chat-message {
message: string,
chat-type: s32,
sender-name: string,
target-name: option<string>,
}
record c-display-objective {
position: s32,
score-name: string,
}
record c-entity-animation {
entity-id: s32,
animation: u8,
}
record c-swing-arm {
entity-id: s32,
off-hand: bool,
}
enum animation {
swing-main-arm,
leave-bed,
swing-offhand,
critical-effect,
magic-criticaleffect,
}
record c-set-entity-metadata {
entity-id: s32,
metadata: list<u8>,
}
record c-entity-position-sync {
entity-id: s32,
position: tuple<f64, f64, f64>,
delta: tuple<f64, f64, f64>,
yaw: f32,
pitch: f32,
on-ground: bool,
}
record c-entity-sound-effect {
sound-event: string,
sound-category: s32,
entity-id: s32,
volume: f32,
pitch: f32,
seed: s64,
}
record c-entity-status {
entity-id: s32,
entity-status: u8,
}
record c-entity-velocity {
entity-id: s32,
velocity: string,
}
record c-explosion {
center: tuple<f64, f64, f64>,
radius: f32,
block-count: s32,
knockback: option<tuple<f64, f64, f64>>,
particle: s32,
sound: string,
block-particles-pool-size: s32,
}
record c-game-event {
event: u8,
value: f32,
}
enum game-event {
no-respawn-block-available,
begin-raining,
end-raining,
change-game-mode,
win-game,
demo-event,
arrow-hit-player,
rain-level-change,
thunder-level-change,
play-pufferfish-string-sound,
play-elder-guardian-mob-appearance,
enabled-respawn-screen,
limited-crafting,
start-waiting-chunks,
}
record c-game-rule-values {
rules: list<tuple<string, string>>,
}
record c-game-test-highlight-pos {
pos: tuple<s32, s32, s32>,
color: s32,
label: string,
duration-ms: s32,
}
record c-head-rot {
entity-id: s32,
head-yaw: u8,
}
record c-hurt-animation {
entity-id: s32,
yaw: f32,
}
record c-initialize-world-border {
x: f64,
z: f64,
old-diameter: f64,
new-diameter: f64,
speed: s64,
portal-teleport-boundary: s32,
warning-blocks: s32,
warning-time: s32,
}
record c-item-cooldown {
group: string,
cooldown: s32,
}
record c-keep-alive {
keep-alive-id: s64,
}
record c-level-event {
event: s32,
location: tuple<s32, s32, s32>,
data: s32,
disable-relative-volume: bool,
}
record light-data {
trust-edges: bool,
sky-light-mask: list<s64>,
block-light-mask: list<s64>,
empty-sky-light-mask: list<s64>,
empty-block-light-mask: list<s64>,
sky-light-arrays: list<list<u8>>,
block-light-arrays: list<list<u8>>,
}
record c-chunk-data {
chunk-x: s32,
chunk-z: s32,
heightmaps: chunk-heightmaps,
data: list<u8>,
block-entities: list<chunk-block-entity>,
light-data: light-data,
}
record c-light-update {
chunk-x: s32,
chunk-z: s32,
light-data: light-data,
}
record map-icon {
icon-type: s32,
x: u8,
z: u8,
direction: u8,
display-name: option<string>,
}
record map-patch {
columns: u8,
rows: u8,
x: u8,
z: u8,
data: list<u8>,
}
record c-map-item-data {
map-id: s32,
scale: u8,
tracking-position: bool,
locked: bool,
icons: option<list<map-icon>>,
data: option<map-patch>,
}
record merchant-offer {
base-cost-a: string,
output: string,
cost-b: option<string>,
reward-exp: bool,
uses: s32,
max-uses: s32,
xp: s32,
special-price: s32,
price-multiplier: f32,
demand: s32,
}
record c-merchant-offers {
window-id: s32,
offers: list<merchant-offer>,
villager-level: s32,
experience: s32,
is-regular-villager: bool,
can-restock: bool,
}
record minecart-step {
position: tuple<f64, f64, f64>,
movement: tuple<f64, f64, f64>,
yaw: f32,
pitch: f32,
weight: f32,
}
record c-move-minecart-along-track {
entity-id: s32,
steps: list<minecart-step>,
}
record c-move-vehicle {
x: f64,
y: f64,
z: f64,
yaw: f32,
pitch: f32,
}
record c-multi-block-update {
chunk-section: tuple<f64, f64, f64>,
suppress-light-updates: bool,
updates: list<tuple<tuple<s32, s32, s32>, string>>,
}
record c-open-book {
hand: s32,
}
record c-open-mount-screen {
window-id: u8,
slot-count: s32,
entity-id: s32,
}
record c-open-screen {
sync-id: s32,
window-type: s32,
window-title: string,
}
record c-open-sign-editor {
location: tuple<s32, s32, s32>,
is-front-text: bool,
}
record c-particle {
force-spawn: bool,
important: bool,
position: tuple<f64, f64, f64>,
offset: tuple<f64, f64, f64>,
max-speed: f32,
particle-count: s32,
particle-id: s32,
data: list<u8>,
}
record c-play-ping {
id: s32,
}
record c-ping-response {
payload: s64,
}
record c-place-ghost-recipe {
window-id: u8,
recipe-id: string,
}
record c-player-abilities {
%flags: u8,
flying-speed: f32,
field-of-view: f32,
}
record init-chat {
session-id: uuid,
expires-at: s64,
public-key: list<u8>,
signature: list<u8>,
}
record previous-message {
id: s32,
signature: option<list<u8>>,
}
variant filter-type {
pass-through,
fully-filtered,
partially-filtered(list<s64>),
}
record c-player-chat-message {
global-index: s32,
sender: uuid,
index: s32,
message-signature: option<list<u8>>,
message: string,
timestamp: s64,
salt: s64,
previous-messages: list<previous-message>,
unsigned-content: option<string>,
filter-type: filter-type,
chat-type: s32,
sender-name: string,
target-name: option<string>,
}
record c-player-look-at {
from-anchor: s32,
target-x: f64,
target-y: f64,
target-z: f64,
entity: option<tuple<s32, s32>>,
}
record c-player-position {
teleport-id: s32,
position: tuple<f64, f64, f64>,
delta: tuple<f64, f64, f64>,
yaw: f32,
pitch: f32,
relatives: list<string>,
}
record c-remove-player-info {
players: list<uuid>,
}
record c-player-rotation {
yaw: f32,
pitch: f32,
}
record player-spawn-data {
dimension: string,
hashed-seed: s64,
game-mode: u8,
previous-gamemode: u8,
debug: bool,
is-flat: bool,
death-dimension-name: option<tuple<string, tuple<s32, s32, s32>>>,
portal-cooldown: s32,
sealevel: s32,
}
record c-login {
entity-id: s32,
is-hardcore: bool,
dimension-names: list<string>,
max-players: s32,
view-distance: s32,
simulated-distance: s32,
reduced-debug-info: bool,
enabled-respawn-screen: bool,
limited-crafting: bool,
spawn-data: player-spawn-data,
online-mode: bool,
enforce-secure-chat: bool,
}
record c-player-spawn-position {
dimension-name: string,
location: tuple<s32, s32, s32>,
yaw: f32,
pitch: f32,
}
record c-post-effects {
effects: list<string>,
}
record c-projectile-power {
entity-id: s32,
x-power: f64,
y-power: f64,
z-power: f64,
}
record c-recipe-book-add {
replace: bool,
}
record c-recipe-book-remove {
recipes: list<s32>,
}
record c-recipe-book-settings {
crafting-open: bool,
crafting-filtering: bool,
furnace-open: bool,
furnace-filtering: bool,
blast-furnace-open: bool,
blast-furnace-filtering: bool,
smoker-open: bool,
smoker-filtering: bool,
}
record c-remove-entities {
entity-ids: list<s32>,
}
record c-remove-mob-effect {
entity-id: s32,
effect-id: s32,
}
record c-remove-resource-pack {
uuid: option<uuid>,
}
record c-reset-score {
entity-name: string,
objective-name: option<string>,
}
record c-respawn {
player-spawn-info: player-spawn-data,
data-kept: u8,
}
record c-select-advancements-tab {
tab-id: option<string>,
}
record c-server-data {
motd: string,
icon-base64: option<string>,
}
record c-play-server-links {
links: list<string>,
}
record c-set-border-center {
x: f64,
z: f64,
}
record c-set-border-lerp-size {
old-diameter: f64,
new-diameter: f64,
speed: s64,
}
record c-set-border-size {
diameter: f64,
}
record c-set-border-warning-delay {
warning-time: s32,
}
record c-set-border-warning-distance {
warning-blocks: s32,
}
record c-set-camera {
camera-id: s32,
}
record c-set-chunk-cache-radius {
radius: s32,
}
record c-set-container-content {
window-id: s32,
state-id: s32,
slot-data: list<string>,
carried-item: string,
}
record c-set-container-property {
window-id: s32,
property: s32,
value: s32,
}
record c-set-container-slot {
window-id: u8,
state-id: s32,
slot: s32,
slot-data: string,
}
record c-set-cursor-item {
stack: string,
}
record c-set-entity-link {
attached-entity-id: s32,
holding-entity-id: s32,
leash: bool,
}
record c-set-equipment {
entity-id: s32,
equipment: list<tuple<u8, string>>,
}
record c-set-experience {
progress: f32,
level: s32,
total-experience: s32,
}
record c-set-health {
health: f32,
food: s32,
food-saturation: f32,
}
record c-set-selected-slot {
slot: u8,
}
record c-set-passengers {
entity-id: s32,
passengers: list<s32>,
}
record c-set-player-inventory {
slot: s32,
item: string,
}
enum team-method {
create,
remove,
update,
add-players,
remove-players,
}
record team-parameters {
display-name: string,
options: u8,
nametag-visibility: string,
collision-rule: string,
color: s32,
player-prefix: string,
player-suffix: string,
}
record c-set-player-team {
team-name: string,
method: team-method,
parameters: option<team-parameters>,
players: list<string>,
}
record c-set-simulation-distance {
simulation-distance: s32,
}
record c-update-time {
game-time: s64,
clock-updates: list<tuple<s32, s64, f32, f32>>,
}
record c-title-text {
title: string,
}
record c-title-animation {
fade-in-ticks: s32,
stay-ticks: s32,
fade-out-ticks: s32,
}
record c-play-show-dialog {
dialog: string,
}
record c-sound-effect {
sound-event: string,
sound-category: s32,
position: tuple<f64, f64, f64>,
volume: f32,
pitch: f32,
seed: s64,
}
record c-spawn-entity {
entity-id: s32,
entity-uuid: uuid,
r-type: s32,
position: tuple<f64, f64, f64>,
velocity: string,
pitch: u8,
yaw: u8,
head-yaw: u8,
data: s32,
}
record c-stop-sound {
sound-id: option<string>,
category: option<string>,
}
record c-store-cookie {
key: string,
payload: list<u8>,
}
record c-subtitle {
subtitle: string,
}
record c-system-chat-message {
content: string,
overlay: bool,
}
record c-tab-list {
header: string,
footer: string,
}
record c-tag-query-response {
transaction-id: s32,
nbt-bytes: list<u8>,
}
record c-take-item-entity {
entity-id: s32,
collector-entity-id: s32,
stack-amount: s32,
}
record c-teleport-entity {
entity-id: s32,
position: tuple<f64, f64, f64>,
delta: tuple<f64, f64, f64>,
yaw: f32,
pitch: f32,
relatives: list<string>,
on-ground: bool,
}
record c-test-instance-block-status {
pos: tuple<s32, s32, s32>,
status: s32,
message: option<string>,
}
record c-ticking-state {
tick-rate: f32,
is-frozen: bool,
}
record c-ticking-step {
tick-steps: s32,
}
record c-transfer {
host: string,
port: s32,
}
record c-unload-chunk {
x: s32,
z: s32,
}
record c-update-advancements {
reset: bool,
added: list<string>,
removed: list<string>,
progress: list<string>,
show-advancements: bool,
}
record attribute-modifier {
id: string,
amount: f64,
operation: u8,
}
record property {
id: s32,
value: f64,
modifiers: list<attribute-modifier>,
}
record c-login-success {
uuid: uuid,
username: string,
properties: list<property>,
strict-error-handling: bool,
session-id: uuid,
}
record player-action-add-player {
name: string,
properties: list<property>,
}
variant player-action {
add-player(player-action-add-player),
initialize-chat(option<init-chat>),
update-game-mode(s32),
update-listed(bool),
update-latency(s32),
update-display-name(option<string>),
update-list-order(s32),
update-hat(bool),
}
record player {
uuid: uuid,
actions: list<player-action>,
}
record c-player-info-update {
actions: u8,
players: list<player>,
}
record c-update-attributes {
entity-id: s32,
properties: list<property>,
}
record c-update-entity-pos {
entity-id: s32,
delta: tuple<f64, f64, f64>,
on-ground: bool,
}
record c-update-entity-pos-rot {
entity-id: s32,
delta: tuple<f64, f64, f64>,
yaw: u8,
pitch: u8,
on-ground: bool,
}
record c-update-entity-rot {
entity-id: s32,
yaw: u8,
pitch: u8,
on-ground: bool,
}
record c-update-mob-effect {
entity-id: s32,
effect-id: s32,
amplifier: s32,
duration: s32,
%flags: u8,
}
record c-update-objectives {
objective-name: string,
mode: u8,
display-name: string,
render-type: s32,
number-format: option<string>,
}
enum mode {
add,
remove,
update,
}
enum render-type {
integer,
hearts,
}
record c-update-recipes {
raw-data: list<u8>,
}
record c-update-score {
entity-name: string,
objective-name: string,
value: s32,
display-name: option<string>,
number-format: option<string>,
}
record c-update-tags-play {
tags: list<string>,
}
enum waypoint-operation {
track,
untrack,
update,
}
record waypoint-target-chunk {
x: s32,
z: s32,
}
variant waypoint-target {
position(tuple<s32, s32, s32>),
chunk(waypoint-target-chunk),
azimuth(f32),
empty,
}
record waypoint-icon {
style: option<string>,
color: s32,
}
record tracked-waypoint {
identifier: uuid,
icon: option<waypoint-icon>,
target: waypoint-target,
}
record c-waypoint {
operation: waypoint-operation,
waypoint: tracked-waypoint,
}
record c-world-event {
event: s32,
location: tuple<s32, s32, s32>,
data: s32,
disable-relative-volume: bool,
}
record status-c-ping-response {
payload: s64,
}
record status-c-status-response {
json-response: string,
}
variant serverbound-packet {
config-s-accept-code-of-conduct,
config-s-acknowledge-finish-config,
config-s-client-information-config(config-s-client-information-config),
config-s-config-cookie-response(config-s-config-cookie-response),
config-s-custom-click-action(config-s-custom-click-action),
config-s-keep-alive(config-s-keep-alive),
config-s-known-packs(config-s-known-packs),
config-s-plugin-message(config-s-plugin-message),
config-s-config-pong(config-s-config-pong),
config-s-config-resource-pack(config-s-config-resource-pack),
login-s-login-cookie-response(login-s-login-cookie-response),
login-s-login-acknowledged,
login-s-login-start(login-s-login-start),
login-s-login-plugin-response(login-s-login-plugin-response),
s-attack(s-attack),
s-block-entity-tag-query(s-block-entity-tag-query),
s-bundle-item-selected(s-bundle-item-selected),
s-change-difficulty(s-change-difficulty),
s-change-game-mode(s-change-game-mode),
s-chat-ack(s-chat-ack),
s-chat-command(s-chat-command),
s-chat-command-signed(s-chat-command-signed),
s-chat-message(s-chat-message),
s-chunk-batch(s-chunk-batch),
s-click-slot(s-click-slot),
s-client-command(s-client-command),
s-client-information-play(s-client-information-play),
s-client-tick-end,
s-close-container(s-close-container),
s-command-suggestion(s-command-suggestion),
s-configuration-acknowledged,
s-container-button-click(s-container-button-click),
s-container-slot-state-changed(s-container-slot-state-changed),
s-cookie-response(s-cookie-response),
s-custom-click-action(s-custom-click-action),
s-custom-payload(s-custom-payload),
s-debug-sample-subscription(s-debug-sample-subscription),
s-debug-subscription-request(s-debug-subscription-request),
s-edit-book(s-edit-book),
s-entity-tag-query(s-entity-tag-query),
s-interact(s-interact),
s-jigsaw-generate(s-jigsaw-generate),
s-keep-alive(s-keep-alive),
s-lock-difficulty(s-lock-difficulty),
s-move-vehicle(s-move-vehicle),
s-paddle-boat(s-paddle-boat),
s-pick-item-from-block(s-pick-item-from-block),
s-pick-item-from-entity(s-pick-item-from-entity),
s-play-ping-request(s-play-ping-request),
s-place-recipe(s-place-recipe),
s-player-abilities(s-player-abilities),
s-player-action(s-player-action),
s-player-command(s-player-command),
s-set-player-ground(s-set-player-ground),
s-player-input(s-player-input),
s-player-loaded,
s-player-position(s-player-position),
s-player-position-rotation(s-player-position-rotation),
s-player-rotation(s-player-rotation),
s-player-session(s-player-session),
s-play-pong(s-play-pong),
s-recipe-book-change-settings(s-recipe-book-change-settings),
s-recipe-book-seen-recipe(s-recipe-book-seen-recipe),
s-rename-item(s-rename-item),
s-play-resource-pack(s-play-resource-pack),
s-seen-advancement(s-seen-advancement),
s-select-trade(s-select-trade),
s-set-beacon(s-set-beacon),
s-set-command-block(s-set-command-block),
s-set-command-minecart(s-set-command-minecart),
s-set-creative-slot(s-set-creative-slot),
s-set-game-rule(s-set-game-rule),
s-set-held-item(s-set-held-item),
s-set-jigsaw-block(s-set-jigsaw-block),
s-set-structure-block(s-set-structure-block),
s-set-test-block(s-set-test-block),
s-spectate-entity(s-spectate-entity),
s-teleport-to-entity(s-teleport-to-entity),
s-test-instance-block-action(s-test-instance-block-action),
s-update-sign(s-update-sign),
s-use-item(s-use-item),
s-use-item-on(s-use-item-on),
status-s-status-ping-request(status-s-status-ping-request),
status-s-status-request,
unknown,
}
variant clientbound-packet {
config-c-config-add-resource-pack(config-c-config-add-resource-pack),
config-c-config-clear-dialog,
config-c-code-of-conduct(config-c-code-of-conduct),
config-c-config-disconnect(config-c-config-disconnect),
config-c-cookie-request(config-c-cookie-request),
config-c-config-custom-report-details(config-c-config-custom-report-details),
config-c-feature-flags(config-c-feature-flags),
config-c-finish-config,
config-c-known-packs(config-c-known-packs),
config-c-config-ping(config-c-config-ping),
config-c-plugin-message(config-c-plugin-message),
config-c-config-post-effects(config-c-config-post-effects),
config-c-registry-data(config-c-registry-data),
config-c-config-remove-resource-pack(config-c-config-remove-resource-pack),
config-c-config-reset-chat,
config-c-config-server-links(config-c-config-server-links),
config-c-config-show-dialog(config-c-config-show-dialog),
config-c-store-cookie(config-c-store-cookie),
config-c-transfer(config-c-transfer),
config-c-update-tags(config-c-update-tags),
login-c-login-cookie-request(login-c-login-cookie-request),
login-c-login-disconnect(login-c-login-disconnect),
login-c-login-plugin-request(login-c-login-plugin-request),
login-c-set-compression(login-c-set-compression),
c-acknowledge-block-change(c-acknowledge-block-change),
c-action-bar(c-action-bar),
c-add-resource-pack(c-add-resource-pack),
c-award-stats(c-award-stats),
c-set-block-destroy-stage(c-set-block-destroy-stage),
c-block-entity-data(c-block-entity-data),
c-block-event(c-block-event),
c-block-update(c-block-update),
c-boss-event(c-boss-event),
c-bundle-delimiter,
c-center-chunk(c-center-chunk),
c-change-difficulty(c-change-difficulty),
c-chunk-batch-end(c-chunk-batch-end),
c-chunk-batch-start,
c-chunks-biomes(c-chunks-biomes),
c-play-clear-dialog,
c-clear-title(c-clear-title),
c-close-container(c-close-container),
c-combat-death(c-combat-death),
c-combat-enter,
c-combat-end(c-combat-end),
c-command-suggestions(c-command-suggestions),
c-commands(c-commands),
c-play-cookie-request(c-play-cookie-request),
c-custom-chat-completions(c-custom-chat-completions),
c-custom-payload(c-custom-payload),
c-play-custom-report-details(c-play-custom-report-details),
c-damage-event(c-damage-event),
c-debug-block-value(c-debug-block-value),
c-debug-chunk-value(c-debug-chunk-value),
c-debug-entity-value(c-debug-entity-value),
c-debug-event(c-debug-event),
c-debug-sample(c-debug-sample),
c-delete-chat(c-delete-chat),
c-play-disconnect(c-play-disconnect),
c-disguised-chat-message(c-disguised-chat-message),
c-display-objective(c-display-objective),
c-entity-animation(c-entity-animation),
c-set-entity-metadata(c-set-entity-metadata),
c-entity-sound-effect(c-entity-sound-effect),
c-entity-status(c-entity-status),
c-entity-velocity(c-entity-velocity),
c-explosion(c-explosion),
c-game-event(c-game-event),
c-game-rule-values(c-game-rule-values),
c-game-test-highlight-pos(c-game-test-highlight-pos),
c-head-rot(c-head-rot),
c-hurt-animation(c-hurt-animation),
c-initialize-world-border(c-initialize-world-border),
c-item-cooldown(c-item-cooldown),
c-keep-alive(c-keep-alive),
c-level-event(c-level-event),
c-light-update(c-light-update),
c-login(c-login),
c-low-disk-space-warning,
c-map-item-data(c-map-item-data),
c-merchant-offers(c-merchant-offers),
c-move-minecart-along-track(c-move-minecart-along-track),
c-move-vehicle(c-move-vehicle),
c-multi-block-update(c-multi-block-update),
c-open-book(c-open-book),
c-open-mount-screen(c-open-mount-screen),
c-open-screen(c-open-screen),
c-open-sign-editor(c-open-sign-editor),
c-particle(c-particle),
c-play-ping(c-play-ping),
c-ping-response(c-ping-response),
c-place-ghost-recipe(c-place-ghost-recipe),
c-player-abilities(c-player-abilities),
c-player-chat-message(c-player-chat-message),
c-player-info-update(c-player-info-update),
c-player-look-at(c-player-look-at),
c-player-position(c-player-position),
c-remove-player-info(c-remove-player-info),
c-player-rotation(c-player-rotation),
c-player-spawn-position(c-player-spawn-position),
c-post-effects(c-post-effects),
c-projectile-power(c-projectile-power),
c-recipe-book-add(c-recipe-book-add),
c-recipe-book-remove(c-recipe-book-remove),
c-recipe-book-settings(c-recipe-book-settings),
c-remove-entities(c-remove-entities),
c-remove-mob-effect(c-remove-mob-effect),
c-remove-resource-pack(c-remove-resource-pack),
c-reset-score(c-reset-score),
c-respawn(c-respawn),
c-select-advancements-tab(c-select-advancements-tab),
c-server-data(c-server-data),
c-play-server-links(c-play-server-links),
c-set-border-center(c-set-border-center),
c-set-border-lerp-size(c-set-border-lerp-size),
c-set-border-size(c-set-border-size),
c-set-border-warning-delay(c-set-border-warning-delay),
c-set-border-warning-distance(c-set-border-warning-distance),
c-set-camera(c-set-camera),
c-set-chunk-cache-radius(c-set-chunk-cache-radius),
c-set-container-content(c-set-container-content),
c-set-container-property(c-set-container-property),
c-set-container-slot(c-set-container-slot),
c-set-cursor-item(c-set-cursor-item),
c-set-entity-link(c-set-entity-link),
c-set-equipment(c-set-equipment),
c-set-experience(c-set-experience),
c-set-health(c-set-health),
c-set-passengers(c-set-passengers),
c-set-player-inventory(c-set-player-inventory),
c-set-player-team(c-set-player-team),
c-set-simulation-distance(c-set-simulation-distance),
c-update-time(c-update-time),
c-title-text(c-title-text),
c-title-animation(c-title-animation),
c-play-show-dialog(c-play-show-dialog),
c-sound-effect(c-sound-effect),
c-spawn-entity(c-spawn-entity),
c-start-configuration,
c-stop-sound(c-stop-sound),
c-store-cookie(c-store-cookie),
c-subtitle(c-subtitle),
c-tab-list(c-tab-list),
c-tag-query-response(c-tag-query-response),
c-take-item-entity(c-take-item-entity),
c-teleport-entity(c-teleport-entity),
c-test-instance-block-status(c-test-instance-block-status),
c-ticking-state(c-ticking-state),
c-ticking-step(c-ticking-step),
c-transfer(c-transfer),
c-unload-chunk(c-unload-chunk),
c-update-advancements(c-update-advancements),
c-update-attributes(c-update-attributes),
c-update-entity-pos(c-update-entity-pos),
c-update-entity-pos-rot(c-update-entity-pos-rot),
c-update-entity-rot(c-update-entity-rot),
c-update-mob-effect(c-update-mob-effect),
c-update-objectives(c-update-objectives),
c-update-recipes(c-update-recipes),
c-update-score(c-update-score),
c-waypoint(c-waypoint),
c-world-event(c-world-event),
status-c-ping-response(status-c-ping-response),
status-c-status-response(status-c-status-response),
unknown,
}
}
interface %world {
use common.{position, entity-pose, block-pos, nbt-tree};
use block-entity.{block-entity, command-block-entity, block-entity-type};
use text.{text-component};
use scoreboard.{scoreboard};
use particles.{particle};
use sounds.{sound, sound-category};
use entity-types.{entity-type};
use biomes.{biome};
use attributes.{attribute, modifier-operation, attribute-modifier};
use item-stack.{item-stack};
use damage-types.{damage-type};
use game-rules.{game-rule, game-rule-value};
use uuid.{uuid};
/// Equipment slots available on living entities (mobs, armor stands, players).
enum equipment-slot {
main-hand,
off-hand,
feet,
legs,
chest,
head,
body,
saddle,
}
/// Defines how a block reacts when pushed by a piston.
enum piston-behavior {
/// Normal behavior; the block can be pushed and pulled.
normal,
/// The block is destroyed when pushed.
destroy,
/// The block cannot be pushed or pulled.
block,
/// The block is ignored by pistons.
ignore,
/// The block can only be pushed, not pulled.
push-only,
}
/// Predefined AI goals that can be added to mob entities.
variant builtin-ai-goal {
swim,
wander-around(f32),
melee-attack(f32),
look-at-player(f32),
look-around,
escape-danger(f32),
avoid-entity(f32),
blaze-attack,
creeper-ignite,
eat-grass,
zombie-attack(f32),
}
/// Node and terrain classification types evaluated during mob pathfinding.
enum path-node-type {
blocked,
open,
walkable,
walkable-door,
trapdoor,
powder-snow,
danger-powder-snow,
fence,
lava,
water,
water-border,
rail,
unpassable-rail,
danger-fire,
damage-fire,
danger-other,
damage-other,
door-open,
door-wood-closed,
door-iron-closed,
breach,
leaves,
sticky-honey,
cocoa,
damage-cautious,
danger-trapdoor,
}
/// Minecraft 16 dye colors.
enum dye-color {
white,
orange,
magenta,
light-blue,
yellow,
lime,
pink,
gray,
light-gray,
cyan,
purple,
blue,
brown,
green,
red,
black,
}
/// Villager profession identifiers.
enum villager-profession {
none,
armorer,
butcher,
cartographer,
cleric,
farmer,
fisherman,
fletcher,
leatherworker,
librarian,
mason,
nitwit,
shepherd,
toolsmith,
weaponsmith,
}
/// Specialized data for sheep entities.
record sheep-data {
color: dye-color,
is-sheared: bool,
}
/// Specialized data for wolf entities.
record wolf-data {
is-tamed: bool,
owner: option<uuid>,
is-sitting: bool,
collar-color: dye-color,
is-angry: bool,
is-begging: bool,
}
/// Specialized data for cat entities.
record cat-data {
is-tamed: bool,
owner: option<uuid>,
is-sitting: bool,
collar-color: dye-color,
}
/// Specialized data for villager entities.
record villager-data {
profession: villager-profession,
level: u8,
experience: u32,
}
/// Specialized data for creeper entities.
record creeper-data {
is-powered: bool,
fuse: s32,
is-ignited: bool,
explosion-radius: u8,
}
/// Specialized data for slime and magma cube entities.
record slime-data {
size: s32,
}
/// Specialized data for enderman entities.
record enderman-data {
carried-block-state: option<u16>,
is-screaming: bool,
is-staring: bool,
}
/// Specialized data for iron golem entities.
record iron-golem-data {
is-player-created: bool,
}
/// Specialized data for fox entities.
record fox-data {
is-sitting: bool,
is-sleeping: bool,
is-crouching: bool,
}
/// Specialized data for ageable animal mobs.
record ageable-data {
is-baby: bool,
age: s32,
in-love-ticks: s32,
}
/// Specialized data for zombie entities.
record zombie-data {
is-baby: bool,
can-break-doors: bool,
}
/// Defines how an explosion interacts with blocks in the world.
enum explosion-interaction {
/// No interaction with blocks.
none,
/// Blocks are destroyed and may drop loot.
block,
/// Interaction typical for mob-caused explosions.
mob,
/// Interaction typical for TNT explosions.
tnt,
/// Triggers specific block behaviors.
trigger,
}
/// Flags used to control block updates and notifications.
flags block-flags {
/// Notifies neighbor blocks of the change.
notify-neighbors,
/// Notifies client listeners of the change.
notify-listeners,
/// Forces the block state even if it's the same.
force-state,
/// Skips dropping items when the block is removed.
skip-drops,
/// Indicates the block was moved (e.g., by a piston).
moved,
/// Skips state replacement for redstone wires.
skip-redstone-wire-state-replacement,
/// Skips the callback when a block entity is replaced.
skip-block-entity-replaced-callback,
/// Skips the callback when a block is added.
skip-block-added-callback,
}
/// Flammability properties of a block.
record flammable {
spread-chance: u8,
burn-chance: u8,
}
/// Musical instruments used by note blocks.
enum noteblock-instrument {
harp,
basedrum,
snare,
hat,
bass,
flute,
bell,
guitar,
chime,
xylophone,
iron-xylophone,
cow-bell,
didgeridoo,
bit,
banjo,
pling,
trumpet,
trumpet-exposed,
trumpet-oxidized,
trumpet-weathered,
zombie,
skeleton,
creeper,
dragon,
wither-skeleton,
piglin,
custom-head,
}
/// Static definition of a Minecraft block type.
record block {
/// The internal numerical ID of the block type.
id: u16,
/// The unique namespaced ID (e.g., "minecraft:stone").
name: string,
/// How hard the block is to break (-1.0 for unbreakable blocks).
hardness: f32,
/// Resistance to explosions.
blast-resistance: f32,
/// The color of this block when displayed on a map.
map-color: u8,
/// The friction coefficient (0.6 default, 0.98 for ice).
slipperiness: f32,
/// How much this block affects entity walk speed.
velocity-multiplier: f32,
/// How much this block affects entity jump height.
jump-velocity-multiplier: f32,
/// The item ID associated with this block in inventory/drops.
item-id: u16,
/// The default block state ID when placed without extra properties.
default-state-id: u16,
/// All valid state IDs belonging to this block type.
state-ids: list<u16>,
/// Whether this block is solid by default.
is-solid: bool,
/// Whether this block is considered air.
is-air: bool,
/// Whether this block is flammable.
is-flammable: bool,
/// Flammability details if flammable.
flammable: option<flammable>,
}
/// A simple wrapper for a block state ID.
record block-state-id {
id: u16,
}
resource entity {
get-id: func() -> u32;
get-uuid: func() -> uuid;
get-type: func() -> entity-type;
get-position: func() -> position;
get-world: func() -> %world;
get-yaw: func() -> f32;
get-pitch: func() -> f32;
get-head-yaw: func() -> f32;
teleport: func(pos: position, world-ref: %world);
set-velocity: func(velocity: position);
get-velocity: func() -> position;
get-pose: func() -> entity-pose;
get-name: func() -> text-component;
set-custom-name: func(name: text-component);
get-custom-name: func() -> option<text-component>;
set-custom-name-visible: func(visible: bool);
is-custom-name-visible: func() -> bool;
is-invulnerable: func() -> bool;
set-invulnerable: func(invulnerable: bool);
get-fire-ticks: func() -> s32;
set-fire-ticks: func(ticks: s32);
get-fall-distance: func() -> f32;
set-fall-distance: func(distance: f32);
get-ticks-lived: func() -> s32;
set-ticks-lived: func(ticks: s32);
is-sneaking: func() -> bool;
set-sneaking: func(sneaking: bool);
is-sprinting: func() -> bool;
set-sprinting: func(sprinting: bool);
is-swimming: func() -> bool;
set-swimming: func(swimming: bool);
is-invisible: func() -> bool;
set-invisible: func(invisible: bool);
is-glowing: func() -> bool;
set-glowing: func(glowing: bool);
is-fall-flying: func() -> bool;
set-fall-flying: func(fall-flying: bool);
is-silent: func() -> bool;
set-silent: func(silent: bool);
has-gravity: func() -> bool;
set-has-gravity: func(gravity: bool);
get-width: func() -> f32;
get-height: func() -> f32;
set-rotation: func(yaw: f32, pitch: f32);
is-on-ground: func() -> bool;
is-on-fire: func() -> bool;
set-on-fire: func(on-fire: bool);
has-visual-fire: func() -> bool;
set-visual-fire: func(visual-fire: bool);
get-portal-cooldown: func() -> u32;
set-portal-cooldown: func(cooldown: u32);
get-remaining-air: func() -> s32;
set-remaining-air: func(air: s32);
get-max-air: func() -> s32;
get-eye-height: func() -> f32;
get-eye-position: func() -> position;
get-nearby-entities: func(x: f64, y: f64, z: f64) -> list<entity>;
get-vehicle: func() -> option<entity>;
set-vehicle: func(vehicle: option<entity>);
get-passengers: func() -> list<entity>;
add-passenger: func(passenger: entity);
remove-passenger: func(passenger: entity);
eject-passengers: func();
get-bounding-box: func() -> bounding-box;
is-in-water: func() -> bool;
is-in-lava: func() -> bool;
remove: func();
/// Performs a raycast from the entity's eye position in its looking direction.
raycast: func(max-distance: f64, fluid-handling: bool) -> option<raycast-result>;
/// Performs a ray-trace from the entity's eye position in its looking direction to find the targeted block.
ray-trace-block: func(max-distance: f64, include-fluids: bool) -> option<ray-trace-block-result>;
/// Performs a ray-trace from the entity's eye position in its looking direction to find the targeted entity.
ray-trace-entity: func(max-distance: f64) -> option<ray-trace-entity-result>;
/// Returns the entity currently targeted in the looking direction within the specified distance.
get-target-entity: func(max-distance: f64) -> option<entity>;
/// Sets a namespaced custom data value on this entity.
set-custom-data: func(namespace: string, key: string, value: nbt-tree);
/// Returns a namespaced custom data value from this entity, if set.
get-custom-data: func(namespace: string, key: string) -> option<nbt-tree>;
/// Removes a namespaced custom data value from this entity.
remove-custom-data: func(namespace: string, key: string);
/// Returns whether this entity has a namespaced custom data value.
has-custom-data: func(namespace: string, key: string) -> bool;
/// Returns this entity as a living-entity if it has health and attributes, or none otherwise.
as-living: func() -> option<living-entity>;
/// Returns this entity as a mob if it is an AI-driven mob entity, or none otherwise.
as-mob: func() -> option<mob>;
/// Returns whether this entity is a living entity.
is-living: func() -> bool;
/// Returns whether this entity is an AI-driven mob.
is-mob: func() -> bool;
}
/// Represents a living entity with health, combat stats, attributes, and equipment (mobs, players, armor stands).
resource living-entity {
/// Converts back to the base entity handle.
as-entity: func() -> entity;
/// Returns this living entity as a mob if it has AI/navigation, or none otherwise.
as-mob: func() -> option<mob>;
/// Returns whether this living entity is an AI-driven mob.
is-mob: func() -> bool;
/// Health & Combat
get-health: func() -> f32;
set-health: func(health: f32);
get-max-health: func() -> f32;
set-max-health: func(max-health: f32);
damage: func(amount: f32, damage-type: damage-type);
is-dead: func() -> bool;
get-absorption: func() -> f32;
set-absorption: func(amount: f32);
/// Attributes
get-attribute-value: func(attr: attribute) -> f64;
get-attribute-base: func(attr: attribute) -> f64;
set-attribute-base: func(attr: attribute, value: f64);
add-attribute-modifier: func(attr: attribute, modifier: attribute-modifier);
remove-attribute-modifier: func(attr: attribute, id: string);
get-attribute-modifiers: func(attr: attribute) -> list<attribute-modifier>;
reset-attribute: func(attr: attribute);
reset-all-attributes: func();
/// Equipment
get-equipment: func(slot: equipment-slot) -> option<item-stack>;
set-equipment: func(slot: equipment-slot, stack: option<item-stack>);
clear-equipment: func();
get-age: func() -> s32;
set-age: func(age: s32);
send-system-message: func(message: text-component);
}
/// Represents an AI-driven mob entity with goals, targeting, and pathfinding navigation (e.g. zombies, villagers).
resource mob {
/// Converts back to the base entity handle.
as-entity: func() -> entity;
/// Converts to the living-entity handle.
as-living: func() -> living-entity;
/// Goals & Targeting
add-ai-goal: func(priority: u8, goal: builtin-ai-goal);
add-custom-ai-goal: func(priority: u8, goal-id: u32);
clear-ai-goals: func();
set-ai-disabled: func(disabled: bool);
is-ai-disabled: func() -> bool;
set-target: func(target: option<entity>);
get-target: func() -> option<entity>;
/// Pathfinding & Navigation
navigate-to-pos: func(pos: position, speed: f64) -> bool;
navigate-to-entity: func(target: entity, speed: f64) -> bool;
stop-navigation: func();
is-navigating: func() -> bool;
has-reached-destination: func() -> bool;
set-navigation-speed: func(speed: f64);
can-reach: func(pos: position, max-distance: f32) -> bool;
set-pathfinding-malus: func(node-type: path-node-type, malus: f32);
get-pathfinding-malus: func(node-type: path-node-type) -> f32;
look-at: func(pos: position);
look-at-entity: func(target: entity);
/// Returns the specialized mob-specific data for this mob.
get-mob-data: func() -> mob-data;
/// Sets the specialized mob-specific data for this mob.
/// Returns false if the provided data variant is incompatible with this mob.
set-mob-data: func(data: mob-data) -> bool;
/// Sets the number of freeze ticks on this entity (0 to 140).
set-freeze-ticks: func(ticks: s32);
/// Returns the number of freeze ticks currently on this entity.
get-freeze-ticks: func() -> s32;
}
/// Result of an entity ray-trace operation.
record ray-trace-entity-result {
/// The entity that was hit.
entity: entity,
/// The exact hit coordinates in world space.
hit-pos: position,
/// The distance from the ray start to the hit position.
distance: f64,
}
resource chunk {
/// Gets the chunk's X coordinate.
get-x: func() -> s32;
/// Gets the chunk's Z coordinate.
get-z: func() -> s32;
/// Gets the block state ID at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
get-block-state-id: func(pos: block-pos) -> u16;
/// Gets detailed block state information at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
get-block-state: func(pos: block-pos) -> block-state;
/// Sets the block state at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
set-block-state: func(pos: block-pos, state: u16);
/// Gets the block at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
get-block: func(pos: block-pos) -> block;
/// Sets the block at the specified position relative to the chunk using its default state.
/// X and Z must be in the range [0, 15].
set-block: func(pos: block-pos, block: block);
/// Sets the block by block ID at the specified position relative to the chunk using its default state.
/// X and Z must be in the range [0, 15].
set-block-by-id: func(pos: block-pos, block-id: u16);
/// Gets the biome at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
get-biome: func(pos: block-pos) -> biome;
/// Gets the block entity at the specified position relative to the chunk, if any.
/// X and Z must be in the range [0, 15].
get-block-entity: func(pos: block-pos) -> option<block-entity-type>;
/// Gets the highest non-air block Y coordinate at the specified X and Z relative to the chunk.
/// X and Z must be in the range [0, 15].
get-top-block-y: func(x: s32, z: s32) -> s32;
/// Gets the sky light level at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
get-sky-light: func(pos: block-pos) -> u8;
/// Gets the block light level at the specified position relative to the chunk.
/// X and Z must be in the range [0, 15].
get-block-light: func(pos: block-pos) -> u8;
/// Sets a namespaced custom data value on this chunk.
set-custom-data: func(namespace: string, key: string, value: nbt-tree);
/// Returns a namespaced custom data value from this chunk, if set.
get-custom-data: func(namespace: string, key: string) -> option<nbt-tree>;
/// Removes a namespaced custom data value from this chunk.
remove-custom-data: func(namespace: string, key: string);
/// Returns whether this chunk has a namespaced custom data value.
has-custom-data: func(namespace: string, key: string) -> bool;
}
/// Represents the boundaries of a world.
resource world-border {
/// Gets the center X coordinate of the border.
get-center-x: func() -> f64;
/// Gets the center Z coordinate of the border.
get-center-z: func() -> f64;
/// Gets the center position of the border.
get-center: func() -> position;
/// Sets the center coordinates of the border.
set-center: func(x: f64, z: f64);
/// Gets the current diameter of the border.
get-diameter: func() -> f64;
/// Gets the current diameter of the border (alias for get-diameter).
get-size: func() -> f64;
/// Sets the diameter of the border, optionally with a speed (in ticks) for lerping.
set-diameter: func(diameter: f64, speed: option<u64>);
/// Sets the size of the border instantly.
set-size: func(size: f64);
/// Sets the size of the border with a transition duration in seconds.
set-size-transition: func(new-size: f64, time-seconds: u64);
/// Gets the target diameter when lerping/transitioning.
get-target-diameter: func() -> f64;
/// Gets the target transition duration/speed in ticks.
get-target-speed: func() -> s64;
/// Gets the distance from the border where warning effects start (in blocks).
get-warning-distance: func() -> s32;
/// Sets the warning distance (in blocks).
set-warning-distance: func(distance: s32);
/// Gets the time before a player hitting the border is warned (in seconds).
get-warning-delay: func() -> s32;
/// Sets the warning delay (in seconds).
set-warning-delay: func(delay: s32);
/// Gets the warning time (alias for get-warning-delay).
get-warning-time: func() -> s32;
/// Sets the warning time (alias for set-warning-delay).
set-warning-time: func(time: s32);
/// Gets the safe damage buffer distance outside the border (in blocks).
get-damage-buffer: func() -> f64;
/// Sets the safe damage buffer distance outside the border (in blocks).
set-damage-buffer: func(buffer: f64);
/// Gets the damage amount inflicted per block per second when outside the buffer.
get-damage-amount: func() -> f64;
/// Sets the damage amount inflicted per block per second when outside the buffer.
set-damage-amount: func(damage: f64);
/// Returns whether the specified coordinates are within the border.
contains: func(x: f64, z: f64) -> bool;
/// Returns whether the specified position is within the border.
contains-pos: func(pos: position) -> bool;
/// Resets the world border to vanilla default settings.
reset: func();
}
/// Represents an axis-aligned bounding box.
record bounding-box {
min: position,
max: position,
}
/// Detailed information about a block's state.
record block-state {
/// The internal numerical ID of the block state.
id: u16,
/// The numerical ID of the parent block type.
block-id: u16,
/// The namespaced identifier of the parent block type.
block-name: string,
/// The light level emitted by this block (0-15).
luminance: u8,
/// How much light this block blocks.
opacity: u8,
/// The hardness of the block, determining mining speed.
hardness: f32,
/// Whether this block is considered air.
is-air: bool,
/// Whether this block is a liquid.
is-liquid: bool,
/// Whether this block is a solid.
is-solid: bool,
/// Whether this block occupies a full cube.
is-full-cube: bool,
/// How this block behaves when pushed by a piston.
piston-behavior: piston-behavior,
/// Whether this block receives random ticks.
has-random-ticks: bool,
/// Whether this block can catch fire.
burnable: bool,
/// Whether a specific tool is required to mine this block and get drops.
tool-required: bool,
/// Whether this block has transparency on its sides.
sided-transparency: bool,
/// Whether this block can be replaced by another block (e.g., grass).
replaceable: bool,
/// Whether this block is considered a solid block for redstone purposes.
is-solid-block: bool,
/// The numerical ID of the block entity type, if any.
block-entity-type: u16,
/// The instrument used for note blocks when placed on top of this block.
instrument: noteblock-instrument,
/// The collision shapes of this block.
collision-shapes: list<bounding-box>,
/// The outline shapes of this block.
outline-shapes: list<bounding-box>,
/// Whether the bottom side of the block is solid.
down-side-solid: bool,
/// Whether the top side of the block is solid.
up-side-solid: bool,
/// Whether the north side of the block is solid.
north-side-solid: bool,
/// Whether the south side of the block is solid.
south-side-solid: bool,
/// Whether the west side of the block is solid.
west-side-solid: bool,
/// Whether the east side of the block is solid.
east-side-solid: bool,
/// Whether the center of the bottom side is solid.
down-center-solid: bool,
/// Whether the center of the top side is solid.
up-center-solid: bool,
/// The color of this block when displayed on a map.
map-color: u8,
/// The block state's property key-value pairs (e.g. facing=north).
properties: list<tuple<string, string>>,
}
/// Represents the configured shared spawn location for a world.
record world-spawn-location {
/// The block position of the shared world spawn.
pos: block-pos,
/// The yaw players should face when spawning here.
yaw: f32,
/// The pitch players should use when spawning here.
pitch: f32,
}
/// Represents a cardinal direction or block face.
enum block-direction {
down,
up,
north,
south,
west,
east,
}
/// Specialized data for shulker entities.
record shulker-data {
attached-face: block-direction,
peek-amount: u8,
color: option<dye-color>,
}
/// Tagged variant holding specialized data for specific mob types.
variant mob-data {
sheep(sheep-data),
wolf(wolf-data),
cat(cat-data),
villager(villager-data),
creeper(creeper-data),
slime(slime-data),
enderman(enderman-data),
iron-golem(iron-golem-data),
fox(fox-data),
ageable(ageable-data),
zombie(zombie-data),
shulker(shulker-data),
generic,
}
/// Result of a raycast operation.
record raycast-result {
/// The block position that was hit.
pos: block-pos,
/// The face of the block that was hit.
face: block-direction,
}
/// Detailed result of a block ray-trace operation.
record ray-trace-block-result {
/// The block position that was hit.
pos: block-pos,
/// The face of the block that was hit.
face: block-direction,
/// The exact hit coordinates in world space.
hit-pos: position,
}
/// Represents a Minecraft world (dimension).
resource %world {
/// Returns the unique identifier of this world.
get-id: func() -> string;
/// Gets the world border associated with this world (alias for get-world-border).
get-border: func() -> world-border;
/// Gets the world border associated with this world.
get-world-border: func() -> world-border;
/// Gets the chunk at the specified chunk coordinates.
get-chunk: func(x: s32, z: s32) -> option<chunk>;
/// Gets the block state ID at the specified position.
get-block-state-id: func(pos: block-pos) -> u16;
/// Gets detailed block state information at the specified position.
get-block-state: func(pos: block-pos) -> block-state;
/// Sets the block state at the specified position.
set-block-state: func(pos: block-pos, state: u16, update-flags: block-flags);
/// Gets the block type at the specified position.
get-block: func(pos: block-pos) -> block;
/// Gets the numerical block ID at the specified position.
get-block-id: func(pos: block-pos) -> u16;
/// Sets the block at the specified position using its default state.
set-block: func(pos: block-pos, block: block, update-flags: block-flags);
/// Sets the block at the specified position by numerical block ID using its default state.
set-block-by-id: func(pos: block-pos, block-id: u16, update-flags: block-flags);
/// Sets the block at the specified position by namespaced name using its default state.
/// Returns true if the block was recognized and set.
set-block-by-name: func(pos: block-pos, name: string, update-flags: block-flags) -> bool;
/// Returns the current time of day in ticks.
get-time-of-day: func() -> u64;
/// Sets the current time of day in ticks.
set-time-of-day: func(time: u64);
/// Returns the total age of the world in ticks.
get-world-age: func() -> u64;
/// Returns the dimension type (e.g., \"minecraft:overworld\").
get-dimension: func() -> string;
/// Returns the configured shared spawn location for this world.
get-spawn-location: func() -> world-spawn-location;
/// Gets the highest non-air block Y coordinate at the specified X and Z.
get-top-block-y: func(x: s32, z: s32) -> s32;
/// Gets the highest motion-blocking block Y coordinate.
get-motion-blocking-height: func(x: s32, z: s32) -> s32;
/// Returns whether it is currently raining or snowing.
is-raining: func() -> bool;
/// Sets whether it should be raining or snowing.
set-raining: func(raining: bool);
/// Returns whether there is currently a thunderstorm.
is-thundering: func() -> bool;
/// Sets whether there should be a thunderstorm.
set-thundering: func(thundering: bool);
/// Broadcasts a system message to all players in this world.
broadcast-system-message: func(message: text-component, overlay: bool);
/// Returns the scoreboard associated with this world.
get-scoreboard: func() -> scoreboard;
/// Plays a sound at the specified position for all players in the world.
play-sound: func(sound: sound, category: sound-category, pos: position, volume: f32, pitch: f32);
/// Plays a custom resource pack sound identifier at the specified position for all players in the world.
play-custom-sound: func(sound-name: string, category: sound-category, pos: position, volume: f32, pitch: f32);
/// Spawns particles at the specified position.
spawn-particle: func(particle: particle, pos: position, offset: position, max-speed: f32, count: s32);
/// Creates an explosion at the specified position.
create-explosion: func(pos: position, power: f32, create-fire: bool, interaction: explosion-interaction);
/// Returns the sea level of this world.
get-sea-level: func() -> s32;
/// Returns the minimum Y coordinate (bottom of the world).
get-min-y: func() -> s32;
/// Returns the sky light level at the specified position.
get-sky-light: func(pos: block-pos) -> u8;
/// Sets the sky light level at the specified position.
set-sky-light: func(pos: block-pos, level: u8);
/// Returns the block light level at the specified position.
get-block-light: func(pos: block-pos) -> u8;
/// Sets the block light level at the specified position.
set-block-light: func(pos: block-pos, level: u8);
/// Returns the biome at the specified position.
get-biome: func(pos: block-pos) -> biome;
/// Spawns an entity of the specified type at the given position.
spawn-entity: func(entity-type: entity-type, pos: position) -> entity;
/// Returns a list of all entities in this world.
get-entities: func() -> list<entity>;
/// Spawns a lightning bolt at the specified position.
strike-lightning: func(pos: position, effect-only: bool);
/// Performs a raycast from start position to end position to hit blocks.
ray-trace-blocks: func(start: position, end: position) -> option<position>;
/// Performs a raycast from start position to end position to hit blocks, with optional fluid handling.
ray-trace-block: func(start: position, end: position, include-fluids: bool) -> option<ray-trace-block-result>;
/// Performs a raycast from start position to end position to find the closest entity hit.
ray-trace-entity: func(start: position, end: position) -> option<ray-trace-entity-result>;
/// Performs a raycast from start position to end position to find all entities hit along the ray.
ray-trace-entities: func(start: position, end: position) -> list<ray-trace-entity-result>;
/// Returns the block entity at the specified position, if any.
get-block-entity: func(pos: block-pos) -> option<block-entity-type>;
/// Returns the raw NBT bytes of the block entity at the given position, if any.
get-block-entity-nbt: func(pos: block-pos) -> option<list<u8>>;
/// Restores a block entity from raw NBT bytes at the given position.
/// The NBT must contain a valid "id" field (e.g. "minecraft:chest").
set-block-entity-nbt: func(pos: block-pos, nbt-data: list<u8>) -> result<_, string>;
/// Returns the name of this world (e.g. "world", "world_nether", "arena_1").
get-name: func() -> string;
/// Saves all chunk data, block entities, and entities for this world to disk.
save: func() -> result<_, string>;
/// Sets a custom chunk generator for this world using a registered generator ID.
set-chunk-generator: func(generator-id: u32);
/// Sets a namespaced custom data value on this world.
set-custom-data: func(namespace: string, key: string, value: nbt-tree);
/// Returns a namespaced custom data value from this world, if set.
get-custom-data: func(namespace: string, key: string) -> option<nbt-tree>;
/// Removes a namespaced custom data value from this world.
remove-custom-data: func(namespace: string, key: string);
/// Returns whether this world has a namespaced custom data value.
has-custom-data: func(namespace: string, key: string) -> bool;
/// Gets the value of a game rule in this world.
get-game-rule: func(rule: game-rule) -> game-rule-value;
/// Sets the value of a game rule in this world.
set-game-rule: func(rule: game-rule, value: game-rule-value);
}
/// Generation phase for custom chunk generation.
enum generation-phase {
biomes,
noise,
surface,
features,
}
/// Mutable chunk buffer representing a 16x16 column during custom world generation.
resource chunk-buffer {
/// Returns the chunk X coordinate.
get-x: func() -> s32;
/// Returns the chunk Z coordinate.
get-z: func() -> s32;
/// Returns the minimum Y coordinate for this world.
get-min-y: func() -> s32;
/// Returns the height of the chunk in blocks.
get-height: func() -> u32;
/// Sets the block state ID at local coordinates (0..16, y, 0..16).
set-block-state-id: func(x: u8, y: s32, z: u8, state-id: u16);
/// Gets the block state ID at local coordinates (0..16, y, 0..16).
get-block-state-id: func(x: u8, y: s32, z: u8) -> u16;
/// Fills an entire horizontal 16x16 layer at the given Y level with a block state ID.
fill-layer: func(y: s32, state-id: u16);
/// Fills a vertical column from min-y to max-y at local (x, z) with a block state ID.
fill-range: func(x: u8, min-y: s32, max-y: s32, z: u8, state-id: u16);
/// Fills a 3D cuboid with a block state ID.
fill-cuboid: func(min-x: u8, min-y: s32, min-z: u8, max-x: u8, max-y: s32, max-z: u8, state-id: u16);
/// Sets the biome at local coordinates (0..16, y, 0..16).
set-biome: func(x: u8, y: s32, z: u8, biome: biome);
/// Fills the entire chunk with the given biome.
fill-biome: func(biome: biome);
}
/// A block's registry name and its property key-value pairs for a state ID.
record block-state-info {
name: string,
properties: list<tuple<string, string>>,
}
/// Resolves a block name and optional properties to a block state ID.
/// Returns none if the block name is unknown.
resolve-block-state: func(name: string, properties: list<tuple<string, string>>) -> option<u16>;
/// Resolves a block state ID back to its block name and properties.
/// Returns none if the state ID is unknown.
block-state-to-info: func(state-id: u16) -> option<block-state-info>;
/// Gets a block type by its numerical block ID.
get-block-by-id: func(id: u16) -> option<block>;
/// Gets a block type by its namespaced name (e.g., "minecraft:stone" or "stone").
get-block-by-name: func(name: string) -> option<block>;
/// Gets all registered blocks.
get-all-blocks: func() -> list<block>;
/// Gets the names of all registered blocks.
get-all-block-names: func() -> list<string>;
/// Gets the total number of registered block types.
get-block-count: func() -> u32;
/// Gets the total number of registered block states.
get-block-state-count: func() -> u32;
/// Gets all valid block states for a block type.
get-states-for-block: func(block: block) -> list<block-state>;
/// Gets all valid block states for a numerical block ID.
get-states-for-block-id: func(block-id: u16) -> list<block-state>;
/// Gets all valid state IDs for a numerical block ID.
get-state-ids-for-block-id: func(block-id: u16) -> list<u16>;
/// Gets property key-value pairs for a numerical block state ID.
get-block-properties: func(state-id: u16) -> list<tuple<string, string>>;
/// Gets the block type associated with a block state ID.
get-block-from-state-id: func(state-id: u16) -> option<block>;
/// Gets the block type associated with a block state.
get-block-from-state: func(state: block-state) -> block;
/// Gets the default block state for a block type.
get-default-state-from-block: func(block: block) -> block-state;
/// Gets the default block state for a numerical block ID.
get-default-state-from-block-id: func(block-id: u16) -> option<block-state>;
/// Gets the detailed block state for a numerical block state ID.
get-block-state-by-id: func(state-id: u16) -> option<block-state>;
}
interface display {
use %world.{entity};
use text.{text-component};
use item-stack.{item-stack};
use uuid.{uuid};
/// Billboard rendering constraints for display entities.
enum billboard-mode {
fixed,
vertical,
horizontal,
center,
}
/// Item display transformation modes for item display entities.
enum item-display-mode {
none,
thirdperson-lefthand,
thirdperson-righthand,
firstperson-lefthand,
firstperson-righthand,
head,
gui,
ground,
fixed,
}
/// Text alignment options for text display entities.
enum text-alignment {
center,
left,
right,
}
/// 3D single-precision vector.
record vector3f {
x: f32,
y: f32,
z: f32,
}
/// Single-precision quaternion representing a 3D rotation.
record quaternionf {
x: f32,
y: f32,
z: f32,
w: f32,
}
/// Transformation (translation, scale, left and right rotations) for display entities.
record display-transformation {
translation: vector3f,
scale: vector3f,
left-rotation: quaternionf,
right-rotation: quaternionf,
}
/// Common base resource for all display entities.
resource display-entity {
from-entity: static func(entity: borrow<entity>) -> option<display-entity>;
get-entity: func() -> entity;
get-transformation: func() -> display-transformation;
set-transformation: func(transformation: display-transformation);
get-interpolation-duration: func() -> s32;
set-interpolation-duration: func(duration: s32);
get-interpolation-start: func() -> s32;
set-interpolation-start: func(delta-ticks: s32);
get-teleport-duration: func() -> s32;
set-teleport-duration: func(duration: s32);
get-billboard: func() -> billboard-mode;
set-billboard: func(mode: billboard-mode);
get-view-range: func() -> f32;
set-view-range: func(range: f32);
get-shadow-radius: func() -> f32;
set-shadow-radius: func(radius: f32);
get-shadow-strength: func() -> f32;
set-shadow-strength: func(strength: f32);
get-display-width: func() -> f32;
set-display-width: func(width: f32);
get-display-height: func() -> f32;
set-display-height: func(height: f32);
get-glow-color-override: func() -> s32;
set-glow-color-override: func(color: s32);
get-brightness: func() -> s32;
set-brightness: func(brightness: s32);
}
/// Resource specifically for Block Display entities.
resource block-display-entity {
from-entity: static func(entity: borrow<entity>) -> option<block-display-entity>;
get-display: func() -> display-entity;
get-entity: func() -> entity;
get-block-state-id: func() -> u16;
set-block-state-id: func(state-id: u16);
}
/// Resource specifically for Item Display entities.
resource item-display-entity {
from-entity: static func(entity: borrow<entity>) -> option<item-display-entity>;
get-display: func() -> display-entity;
get-entity: func() -> entity;
get-item: func() -> option<item-stack>;
set-item: func(item: option<item-stack>);
get-item-display-mode: func() -> item-display-mode;
set-item-display-mode: func(mode: item-display-mode);
}
/// Resource specifically for Text Display entities.
resource text-display-entity {
from-entity: static func(entity: borrow<entity>) -> option<text-display-entity>;
get-display: func() -> display-entity;
get-entity: func() -> entity;
get-text: func() -> text-component;
set-text: func(text: text-component);
get-line-width: func() -> s32;
set-line-width: func(width: s32);
get-background: func() -> s32;
set-background: func(color: s32);
get-text-opacity: func() -> s8;
set-text-opacity: func(opacity: s8);
get-shadow: func() -> bool;
set-shadow: func(shadow: bool);
get-see-through: func() -> bool;
set-see-through: func(see-through: bool);
get-default-background: func() -> bool;
set-default-background: func(default-background: bool);
get-alignment: func() -> text-alignment;
set-alignment: func(alignment: text-alignment);
}
/// Resource specifically for Interaction entities.
resource interaction-entity {
from-entity: static func(entity: borrow<entity>) -> option<interaction-entity>;
get-entity: func() -> entity;
get-width: func() -> f32;
set-width: func(width: f32);
get-height: func() -> f32;
set-height: func(height: f32);
get-response: func() -> bool;
set-response: func(response: bool);
get-last-attacker: func() -> option<uuid>;
get-last-interaction: func() -> option<uuid>;
}
}
interface entity {
use %world.{entity, living-entity, mob, path-node-type, dye-color, villager-profession, mob-data, sheep-data, wolf-data, cat-data, villager-data, creeper-data, slime-data, enderman-data, iron-golem-data, fox-data, ageable-data, zombie-data, shulker-data, raycast-result, ray-trace-block-result, ray-trace-entity-result, block-direction};
}
/// Represents a player connected to the Minecraft server.
interface player {
use common.{hand, position, game-mode, block-pos};
use item-stack.{item-stack};
use %world.{%world, entity, ray-trace-block-result, ray-trace-entity-result};
use permission.{permission-level};
use text.{text-component};
use gui.{gui};
use forms.{form};
use java-dialogs.{dialog};
use java-packets.{clientbound-packet as java-packet};
use bedrock-packets.{clientbound-packet as bedrock-packet};
use uuid.{uuid};
use status-effect.{status-effect-type, status-effect-instance};
use scoreboard.{scoreboard, bedrock-scoreboard};
use advancement.{advancement-progress};
use damage-types.{damage-type};
use statistics.{statistic-category, custom-statistic};
use inventory.{inventory, player-inventory};
use sounds.{sound, sound-category};
use particles.{particle};
use entity-statuses.{entity-status};
/// Represents per-player weather condition overrides.
enum player-weather {
clear,
downfall,
}
/// Types of projectiles that can be launched by a player.
enum projectile-type {
arrow,
snowball,
egg,
ender-pearl,
splash-potion,
fireball,
small-fireball,
trident,
wind-charge,
}
/// Types of clientbound game events.
enum client-game-event {
no-respawn-block-available,
begin-raining,
end-raining,
change-game-mode,
win-game,
demo-event,
arrow-hit-player,
rain-level-change,
thunder-level-change,
play-pufferfish-string-sound,
play-elder-guardian-mob-appearance,
enabled-respawn-screen,
limited-crafting,
start-waiting-chunks,
}
/// Built-in known server link types displayed in the client Escape pause menu.
enum known-server-link {
bug-report,
community-guidelines,
support,
status,
feedback,
community,
website,
forums,
news,
announcements,
}
/// Label for a server link: either a built-in standard link type or a custom text component.
variant server-link-label {
known(known-server-link),
custom(text-component),
}
/// Represents a server link entry with a label and destination URL.
record server-link {
label: server-link-label,
url: string,
}
/// Various abilities a player can have.
record player-abilities {
/// Whether the player is invulnerable to damage.
invulnerable: bool,
/// Whether the player is currently flying.
flying: bool,
/// Whether the player is allowed to fly.
allow-flying: bool,
/// Whether the player is in creative mode.
creative: bool,
/// Whether the player can modify the world.
allow-modify-world: bool,
/// The speed at which the player flies.
fly-speed: f32,
/// The speed at which the player walks.
walk-speed: f32,
}
/// Represents a player's skin textures and metadata.
record player-skin {
/// The base64-encoded texture data (usually JSON containing skin/cape URLs).
value: string,
/// The optional signature for the texture data.
signature: option<string>,
}
/// Represents which skin parts are visible.
flags skin-parts {
cape,
jacket,
left-sleeve,
right-sleeve,
left-pants-leg,
right-pants-leg,
hat,
}
/// Represents the various abilities a Bedrock Edition player can have.
enum bedrock-ability {
/// Whether the player can build.
build,
/// Whether the player can mine blocks.
mine,
/// Whether the player can use doors and switches.
doors-and-switches,
/// Whether the player can open containers.
open-containers,
/// Whether the player can attack other players.
attack-players,
/// Whether the player can attack mobs.
attack-mobs,
/// Whether the player can use operator commands.
operator-commands,
/// Whether the player can teleport.
teleport,
/// Whether the player is invulnerable.
invulnerable,
/// Whether the player is currently flying.
flying,
/// Whether the player is allowed to fly.
may-fly,
/// Whether the player has instant build (creative).
instabuild,
/// Whether the player can use lightning-related abilities.
lightning,
/// The speed at which the player flies.
fly-speed,
/// The speed at which the player walks.
walk-speed,
/// Whether the player is muted.
muted,
/// Whether the player is a world builder.
world-builder,
/// Whether the player has no-clip enabled.
no-clip,
/// Whether the player is a privileged builder.
privileged-builder,
/// The speed at which the player flies vertically.
vertical-fly-speed,
}
/// Represents the various status flags a Bedrock Edition entity can have.
/// These flags control client-side rendering and behavior.
enum bedrock-status-flag {
/// Whether the entity is currently on fire.
on-fire,
/// Whether the entity is sneaking.
sneaking,
/// Whether the entity is riding another entity.
riding,
/// Whether the entity is sprinting.
sprinting,
/// Whether the entity is using an item (e.g., eating, blocking).
using-item,
/// Whether the entity is invisible.
invisible,
/// Whether the entity is tempted by an item.
tempted,
/// Whether the entity is in love (breeding).
in-love,
/// Whether the entity is saddled.
saddled,
/// Whether the entity is powered (e.g., charged creeper).
powered,
/// Whether the entity is ignited.
ignited,
/// Whether the entity is a baby.
baby,
/// Whether the entity is currently converting to another type.
converting,
/// Whether the entity is in a critical state.
critical,
/// Whether to show the entity's name tag.
show-name,
/// Whether to always show the entity's name tag.
always-show-name,
/// Whether the entity has no AI.
no-ai,
/// Whether the entity is silent.
silent,
/// Whether the entity is climbing a wall.
wall-climbing,
/// Whether the entity is climbing.
climb,
/// Whether the entity is swimming.
swim,
/// Whether the entity is flying.
fly,
/// Whether the entity is walking.
walk,
/// Whether the entity is resting.
resting,
/// Whether the entity is sitting.
sitting,
/// Whether the entity is angry.
angry,
/// Whether the entity is interested.
interested,
/// Whether the entity is charged.
charged,
/// Whether the entity is tamed.
tamed,
/// Whether the entity is orphaned.
orphaned,
/// Whether the entity is leashed.
leashed,
/// Whether the entity is sheared.
sheared,
/// Whether the entity is gliding (elytra).
gliding,
/// Whether the entity is an elder (e.g., elder guardian).
elder,
/// Whether the entity is moving.
moving,
/// Whether the entity is breathing.
breathing,
/// Whether the entity has a chest (e.g., donkey).
chested,
/// Whether the entity is stackable.
stackable,
/// Whether to show the bottom of the entity.
show-bottom,
/// Whether the entity is standing.
standing,
/// Whether the entity is shaking.
shaking,
/// Whether the entity is idling.
idling,
/// Whether the entity is casting (e.g., evoker).
casting,
/// Whether the entity is charging an attack.
charging,
/// Whether the entity is controlled by a keyboard.
keyboard-controlled,
/// Whether the entity is performing a power jump.
power-jump,
/// Whether the entity is dashing.
dash,
/// Whether the entity is lingering.
lingering,
/// Whether the entity has collision.
has-collision,
/// Whether the entity has gravity.
has-gravity,
/// Whether the entity is immune to fire.
fire-immune,
/// Whether the entity is dancing.
dancing,
/// Whether the entity is enchanted.
enchanted,
/// Whether a trident will return to the entity.
return-trident,
/// Whether the container is private.
container-private,
/// Whether the entity is transforming.
transforming,
/// Whether the entity damages nearby mobs.
damage-nearby-mobs,
/// Whether the entity is swimming.
swimming,
/// Whether the entity has been bribed.
bribed,
/// Whether the entity is pregnant.
pregnant,
/// Whether the entity is laying an egg.
laying-egg,
/// Whether a passenger can pick up the entity.
passenger-can-pick,
/// Whether the entity is transitioning to sitting.
transition-sitting,
/// Whether the entity is eating.
eating,
/// Whether the entity is laying down.
laying-down,
/// Whether the entity is sneezing.
sneezing,
/// Whether the entity is trusting.
trusting,
/// Whether the entity is rolling.
rolling,
/// Whether the entity is scared.
scared,
/// Whether the entity is in scaffolding.
in-scaffolding,
/// Whether the entity is over scaffolding.
over-scaffolding,
/// Whether the entity is descending through a block.
descend-through-block,
/// Whether the entity is blocking.
blocking,
/// Whether the entity is transitioning to blocking.
transition-blocking,
/// Whether the entity is blocked using a shield.
blocked-using-shield,
/// Whether the entity is blocked using a damaged shield.
blocked-using-damaged-shield,
/// Whether the entity is sleeping.
sleeping,
/// Whether the entity wants to wake up.
wants-to-wake,
/// Whether the entity shows interest in trading.
trade-interest,
/// Whether the entity can break doors.
door-breaker,
/// Whether the entity is breaking an obstruction.
breaking-obstruction,
/// Whether the entity can open doors.
door-opener,
/// Whether the entity is a captain (raid).
captain,
/// Whether the entity is stunned.
stunned,
/// Whether the entity is roaring.
roaring,
/// Whether the entity has a delayed attack.
delayed-attack,
/// Whether the entity is avoiding mobs.
avoiding-mobs,
/// Whether the entity is avoiding a block.
avoiding-block,
/// Whether the entity is facing a target for a ranged attack.
facing-target-to-range-attack,
/// Whether the entity is hidden when invisible.
hidden-when-invisible,
/// Whether the entity is in a UI.
in-ui,
/// Whether the entity is stalking.
stalking,
/// Whether the entity is emoting.
emoting,
/// Whether the entity is celebrating.
celebrating,
/// Whether the entity is admiring (piglin).
admiring,
/// Whether the entity is celebrating a special event.
celebrating-special,
/// Whether the entity is out of control.
out-of-control,
/// Whether the entity is performing a ram attack.
ram-attack,
/// Whether the entity is playing dead.
playing-dead,
/// Whether the entity is in an ascending block.
in-ascending-block,
/// Whether the entity is over a descending block.
over-descending-block,
/// Whether the entity is croaking (frog).
croaking,
/// Whether the entity is digesting a mob.
digest-mob,
/// Whether the entity has a jump goal.
jump-goal,
/// Whether the entity is emerging.
emerging,
/// Whether the entity is sniffing.
sniffing,
/// Whether the entity is digging.
digging,
/// Whether the entity is performing a sonic boom.
sonic-boom,
/// Whether the entity has a dash timeout.
has-dash-timeout,
/// Whether the entity is pushed towards the closest space.
push-towards-closest-space,
/// Whether the entity is scenting.
scenting,
/// Whether the entity is rising.
rising,
/// Whether the entity is feeling happy.
feeling-happy,
/// Whether the entity is searching.
searching,
/// Whether the entity is crawling.
crawling,
/// Whether the entity's body rotation is blocked.
body-rotation-blocked,
/// Whether the entity is rendered when invisible.
render-when-invisible,
/// Whether the entity's body rotation is axis-aligned.
body-rotation-axis-aligned,
/// Whether the entity is collidable.
collidable,
/// Whether the entity is air-controlled via WASD.
wasd-air-controlled,
/// Whether only the server can authorize a dismount.
does-server-auth-only-dismount,
/// Whether the body rotation always follows the head.
body-rotation-always-follows-head,
/// Whether the entity can use vertical movement actions.
can-use-vertical-movement-action,
/// Whether rotation is locked to the vehicle.
rotation-locked-to-vehicle,
}
/// Represents a specific version of the Minecraft Java Edition protocol.
enum java-minecraft-version {
v-1-7-2,
v-1-7-6,
v-1-8,
v-1-9,
v-1-9-1,
v-1-9-2,
v-1-9-3,
v-1-10,
v-1-11,
v-1-11-1,
v-1-12,
v-1-12-1,
v-1-12-2,
v-1-13,
v-1-13-1,
v-1-13-2,
v-1-14,
v-1-14-1,
v-1-14-2,
v-1-14-3,
v-1-14-4,
v-1-15,
v-1-15-1,
v-1-15-2,
v-1-16,
v-1-16-1,
v-1-16-2,
v-1-16-3,
v-1-16-4,
v-1-17,
v-1-17-1,
v-1-18,
v-1-18-2,
v-1-19,
v-1-19-1,
v-1-19-3,
v-1-19-4,
v-1-20,
v-1-20-2,
v-1-20-3,
v-1-20-5,
v-1-21,
v-1-21-2,
v-1-21-4,
v-1-21-5,
v-1-21-6,
v-1-21-7,
v-1-21-9,
v-1-21-11,
v-26-1,
v-26-2,
v-26-3,
unknown,
}
/// Represents a specific version of the Minecraft Bedrock Edition protocol.
enum bedrock-minecraft-version {
v-1-21,
v-1-26-30,
unknown,
}
/// The chat visibility settings for a player.
enum chat-mode {
/// Chat is fully enabled.
enabled,
/// Only system messages and commands are shown.
commands-only,
/// Chat is completely hidden.
hidden,
}
/// Represents settings for a Java Edition player.
record java-player-settings {
/// The player's preferred language (e.g., \"en_us\").
locale: string,
/// The maximum distance at which chunks are rendered.
view-distance: u8,
/// The player's chat visibility settings.
chat-mode: chat-mode,
/// Whether chat colors are enabled.
chat-colors: bool,
/// The player's skin configuration options.
skin-parts: skin-parts,
/// The player's dominant hand (left or right).
main-hand: hand,
/// Whether text filtering is enabled.
text-filtering: bool,
/// Whether the player wants to appear in the server list.
server-listing: bool,
}
/// Represents the operating system of a Bedrock Edition client.
enum bedrock-device-os {
android,
ios,
osx,
amazon,
gear-vr,
holo-lens,
windows-10,
win-32,
dedicated,
tv-os,
playstation,
nintendo,
xbox,
windows-phone,
linux,
/// Fallback for unrecognized operating systems.
unknown,
}
/// Represents the input mode used by a Bedrock Edition client.
enum bedrock-input-mode {
/// Unknown input mode.
unknown,
/// Mouse and keyboard.
mouse,
/// Touch screen.
touch,
/// Game controller.
game-pad,
/// Motion-based controller.
motion-controller,
}
/// Represents the UI profile used by a Bedrock Edition client.
enum bedrock-ui-profile {
/// Classic desktop UI.
classic,
/// Pocket/Mobile optimized UI.
pocket,
/// Unknown UI profile.
unknown,
}
/// Represents the graphics mode used by a Bedrock Edition client.
enum bedrock-graphics-mode {
simple,
fancy,
ray-traced,
unknown,
}
/// Represents settings and client data for a Bedrock Edition player.
record bedrock-player-settings {
/// The client's specific game version string.
game-version: string,
/// The operating system of the client device.
device-os: bedrock-device-os,
/// A unique identifier for the client device.
device-id: string,
/// The model name of the client device.
device-model: string,
/// The player's preferred language code (e.g., \"en_US\").
language-code: string,
/// The input mode currently used by the player.
current-input-mode: bedrock-input-mode,
/// The default input mode for the client device.
default-input-mode: bedrock-input-mode,
/// The UI layout profile used by the client.
ui-profile: bedrock-ui-profile,
/// The current GUI scale setting.
gui-scale: s32,
/// Whether the player is in Editor mode.
is-editor-mode: bool,
/// The maximum view distance the client supports.
max-view-distance: s32,
/// The memory tier of the client device (indicates performance level).
memory-tier: s32,
/// The graphics mode used by the client.
graphics-mode: bedrock-graphics-mode,
/// The player's unique PlayFab identifier.
playfab-id: string,
/// A random 64-bit ID generated by the client.
client-random-id: s64,
/// Platform-specific offline identifier.
platform-offline-id: string,
/// Platform-specific online identifier.
platform-online-id: string,
/// The unique ID of the player's current skin.
skin-id: string,
/// The model arm size (e.g., \"wide\" or \"slim\").
arm-size: string,
/// Whether the player is using a Character Creator (Persona) skin.
is-persona-skin: bool,
/// Whether the skin is a premium (paid) skin.
is-premium-skin: bool,
/// Whether the skin is from a trusted source.
is-trusted-skin: bool,
}
/// Protocol-level disconnect reasons for Minecraft Bedrock Edition.
enum bedrock-disconnect-reason {
unknown,
cant-connect-no-internet,
no-permissions,
unrecoverable-error,
third-party-blocked,
third-party-no-internet,
third-party-bad-ip,
third-party-no-server-or-server-locked,
version-mismatch,
skin-issue,
invite-session-not-found,
edu-level-settings-missing,
local-server-not-found,
legacy-disconnect,
user-leave-game-attempted,
platform-locked-skins-error,
realms-world-unassigned,
realms-server-cant-connect,
realms-server-hidden,
realms-server-disabled-beta,
realms-server-disabled,
cross-platform-disabled,
cant-connect,
session-not-found,
client-settings-incompatible-with-server,
server-full,
invalid-platform-skin,
edition-version-mismatch,
edition-mismatch,
level-newer-than-exe-version,
no-fail-occurred,
banned-skin,
timeout,
server-not-found,
outdated-server,
outdated-client,
no-premium-platform,
multiplayer-disabled,
no-wifi,
world-corruption,
no-reason,
disconnected,
invalid-player,
logged-in-other-location,
server-id-conflict,
not-allowed,
not-authenticated,
invalid-tenant,
unknown-packet,
unexpected-packet,
invalid-command-request-packet,
host-suspended,
login-packet-no-request,
login-packet-no-cert,
missing-client,
kicked,
kicked-for-exploit,
kicked-for-idle,
resource-pack-problem,
incompatible-pack,
out-of-storage,
invalid-level,
disconnect-packet,
block-mismatch,
invalid-heights,
invalid-widths,
connection-lost,
zombie-connection,
shutdown,
reason-not-set,
loading-state-timeout,
resource-pack-loading-failed,
searching-for-session-loading-screen-failed,
nether-net-protocol-version,
subsystem-status-error,
empty-auth-from-discovery,
empty-url-from-discovery,
expired-auth-from-discovery,
unknown-signal-service-sign-in-failure,
xbl-join-lobby-failure,
unspecified-client-instance-disconnection,
nether-net-session-not-found,
nether-net-create-peer-connection,
nether-net-ice,
nether-net-connect-request,
nether-net-connect-response,
nether-net-negotiation-timeout,
nether-net-inactivity-timeout,
stale-connection-being-replaced,
realms-session-not-found,
bad-packet,
nether-net-failed-to-create-offer,
nether-net-failed-to-create-answer,
nether-net-failed-to-set-local-description,
nether-net-failed-to-set-remote-description,
nether-net-negotiation-timeout-waiting-for-response,
nether-net-negotiation-timeout-waiting-for-accept,
nether-net-incoming-connection-ignored,
nether-net-signaling-parsing-failure,
nether-net-signaling-unknown-error,
nether-net-signaling-unicast-delivery-failed,
nether-net-signaling-broadcast-delivery-failed,
nether-net-signaling-generic-delivery-failed,
editor-mismatch-editor-world,
editor-mismatch-vanilla-world,
world-transfer-not-primary-client,
request-server-shutdown,
client-game-setup-cancelled,
client-game-setup-failed,
no-venue,
nether-net-signaling-signin-failed,
session-access-denied,
service-signin-issue,
nether-net-no-signaling-channel,
nether-net-not-logged-in,
nether-net-client-signaling-error,
sub-client-login-disabled,
deep-link-trying-to-open-demo-world-while-signed-in,
async-join-task-denied,
realms-timeline-required,
guest-without-host,
failed-to-join-experience,
nether-net-data-channel-closed,
discovery-environment-mismatch,
host-without-keys,
host-signed-out,
script-watchdog-exception,
script-memory-limit-exceeded,
storage-low-during-gameplay,
storage-full-during-gameplay,
level-storage-corruption,
edition-mismatch-vanilla-to-edu,
edition-mismatch-edu-to-vanilla,
editor-mismatch-editor-to-vanilla,
editor-mismatch-vanilla-to-editor,
deny-listed,
nonce-missing,
nonce-not-found,
nonce-expired,
nonce-not-valid,
host-disconnected,
editor-join-intent-policy-failure,
nether-net-identity-not-allowed,
invalid-name,
expired-token,
host-accepts-no-type-of-auth,
not-authenticated-fast-fail,
editor-not-allowed,
}
/// Policy for tearing down the player's network connection.
enum socket-teardown-policy {
/// Send the disconnect packet and gracefully close the connection.
graceful,
/// Send the disconnect packet and close the socket immediately.
immediate-close,
/// Terminate the connection immediately without sending any disconnect packet.
drop-connection,
}
/// Options for disconnecting a Java Edition player.
record java-kick-options {
/// The formatted text component displayed on the Java disconnect screen.
reason: text-component,
/// Whether to log the kick in the server console (default: true).
log-to-console: bool,
/// How the connection is closed (default: graceful).
teardown-policy: socket-teardown-policy,
}
/// Options for disconnecting a Bedrock Edition player.
record bedrock-kick-options {
/// Protocol level disconnect code (default: kicked).
reason: bedrock-disconnect-reason,
/// Message displayed on the Bedrock disconnect screen (default: "").
message: string,
/// Whether to suppress the disconnect message on the client screen (default: false).
skip-message: bool,
/// Filtered message string for safety/parental filters (default: "").
filtered-message: string,
/// Whether to log the kick in the server console (default: true).
log-to-console: bool,
/// How the connection is closed (default: graceful).
teardown-policy: socket-teardown-policy,
}
/// Options for banning a player.
record ban-player-options {
/// Ban reason displayed to the player and stored in the ban list.
reason: option<text-component>,
/// Source or authority responsible for the ban (default: "Plugin").
source: option<string>,
/// Ban expiration in RFC-3339 format, if temporary.
expires-at-utc: option<string>,
/// Ban duration in seconds from now, if temporary.
duration-seconds: option<u64>,
/// Whether to immediately kick the player if currently online (default: true).
kick-if-online: bool,
/// Whether to log the ban action to the server console (default: true).
log-to-console: bool,
}
/// Options for banning an IP address.
record ban-ip-options {
/// Ban reason stored in the IP ban list.
reason: option<text-component>,
/// Source or authority responsible for the ban (default: "Plugin").
source: option<string>,
/// Ban expiration in RFC-3339 format, if temporary.
expires-at-utc: option<string>,
/// Ban duration in seconds from now, if temporary.
duration-seconds: option<u64>,
/// Whether to immediately kick all online players with this IP (default: true).
kick-matching-players: bool,
/// Whether to log the IP ban action to the server console (default: true).
log-to-console: bool,
}
/// A handle to a player on the server.
resource player {
/// Returns the player as an entity.
as-entity: func() -> entity;
/// Returns the player's unique UUID as a string.
get-id: func() -> uuid;
/// Returns the player's username.
get-name: func() -> string;
/// Basic state
/// Returns the player's current position in the world.
get-position: func() -> position;
/// Returns the player's current yaw (horizontal rotation).
get-yaw: func() -> f32;
/// Returns the player's current pitch (vertical rotation).
get-pitch: func() -> f32;
/// Returns the world the player is currently in.
get-world: func() -> %world;
/// Returns the player's current game mode.
get-gamemode: func() -> game-mode;
/// Changes the player's game mode. Returns true if successful.
set-gamemode: func(mode: game-mode) -> bool;
/// Returns the player's locale (e.g., \"en_us\").
get-locale: func() -> string;
/// Returns the player's current ping in milliseconds.
get-ping: func() -> u32;
/// Permissions & metadata
/// Returns the player's permission level (0-4).
get-permission-level: func() -> permission-level;
/// Sets the player's permission level.
set-permission-level: func(level: permission-level);
/// Grants or denies a specific permission node for the player.
set-permission: func(node: string, value: bool);
/// Removes an explicitly set permission node from the player.
unset-permission: func(node: string);
/// Returns `Some(true)` if granted, `Some(false)` if denied, or `None` if not set.
has-permission-set: func(node: string) -> option<bool>;
/// Checks if the player has a specific permission node.
has-permission: func(node: string) -> bool;
/// Returns the player's display name, which may include formatting.
get-display-name: func() -> text-component;
/// Sets the player's display name.
set-display-name: func(display-name: text-component);
/// Gets the player's custom tab list name.
get-tab-list-name: func() -> option<text-component>;
/// Sets the player's custom tab list name.
set-tab-list-name: func(name: option<text-component>);
/// Messaging & titles
/// Sends a system message to the player's chat.
send-system-message: func(text: text-component, overlay: bool);
/// Deletes a signed chat message from the player's chat window using its 256-byte signature.
delete-message-by-signature: func(signature: list<u8>);
/// Deletes a signed chat message from the player's chat window using its signature cache ID.
delete-message-by-id: func(signature-id: s32);
/// Sets the header and footer of the player's Tab list.
set-tab-list-header-footer: func(header: text-component, footer: text-component);
/// Sets the sorting order of the player in the Tab list.
set-tab-list-order: func(order: s32);
/// Sets the latency (ping) shown for the player in the Tab list.
set-tab-list-latency: func(latency: s32);
/// Sets whether the player is visible in the Tab list.
set-tab-list-listed: func(listed: bool);
/// Shows a large title on the player's screen.
show-title: func(text: text-component);
/// Shows a smaller subtitle on the player's screen.
show-subtitle: func(text: text-component);
/// Shows a message in the action bar area.
show-actionbar: func(text: text-component);
/// Sets the fade-in, stay, and fade-out times for titles.
send-title-animation: func(fade-in: s32, stay: s32, fade-out: s32);
/// Camera & Spectating
/// Sets the player's camera to view from the perspective of another entity.
/// If `entity` is `none`, the camera is reset back to the player.
set-camera: func(entity: option<entity>);
/// Sets the player's camera to view from the perspective of an entity with the given entity ID.
/// If `entity-id` is the player's own entity ID, the camera is reset back to the player.
set-camera-entity-id: func(entity-id: u32);
/// Gets the entity ID of the entity that the player's camera is currently attached to,
/// or the player's own entity ID if the camera has not been overridden.
get-camera-entity-id: func() -> u32;
/// Resets the player's camera back to their own perspective.
reset-camera: func();
/// Audio & Particles
/// Plays a sound effect for this player at their current location.
play-sound: func(sound: sound, category: sound-category, volume: f32, pitch: f32);
/// Plays a sound effect for this player at a specific location.
play-sound-at: func(pos: position, sound: sound, category: sound-category, volume: f32, pitch: f32);
/// Stops a sound effect from playing for this player.
stop-sound: func(sound: option<sound>, category: option<sound-category>);
/// Plays a custom resource pack sound identifier for this player at their current location.
play-custom-sound: func(sound-name: string, category: sound-category, volume: f32, pitch: f32);
/// Plays a custom resource pack sound identifier for this player at a specific location.
play-custom-sound-at: func(pos: position, sound-name: string, category: sound-category, volume: f32, pitch: f32);
/// Stops a custom sound identifier from playing for this player.
stop-custom-sound: func(sound-name: option<string>, category: option<sound-category>);
/// Spawns particles visible only to this player.
spawn-particles: func(particle: particle, pos: position, count: u32, offset: position, max-speed: f32);
/// Visuals & Client Overrides
/// Sends a temporary fake block change to the player's client without modifying the server world.
send-block-change: func(pos: block-pos, block-id: u16);
/// Resets a temporary fake block change by resending the actual world block at that position.
reset-block-change: func(pos: block-pos);
/// Sends a hurt / damage-tilt animation to the player's client (causes screen shake in the given yaw direction).
send-hurt-animation: func(yaw: f32);
/// Opens a written book interface for the player from the specified hand.
open-book: func(hand: hand);
/// Forces the sign text editor to open for the player at the specified sign block position.
open-sign-editor: func(pos: block-pos, is-front-text: bool);
/// Velocity & Physics
/// Sets the player's velocity / motion vector.
set-velocity: func(velocity: position);
/// Applies directional knockback impulse to the player.
apply-knockback: func(strength: f64, x: f64, z: f64);
/// Movement Lock & Freezing
/// Sets whether the player's movement is locked (frozen in place) for cutscenes and NPC dialogues.
set-movement-locked: func(locked: bool);
/// Returns whether the player's movement is currently locked.
is-movement-locked: func() -> bool;
/// Sets the number of freeze ticks on the player (controlling the powdered snow / frostbite screen vignette).
set-freeze-ticks: func(ticks: s32);
/// Returns the current number of freeze ticks on the player.
get-freeze-ticks: func() -> s32;
/// Sends custom server links to the player (displayed in the client Esc pause menu in 1.21+).
set-server-links: func(links: list<server-link>);
/// Teleport & kick
/// Teleports the player to a position in a world.
teleport: func(position: position, yaw: option<f32>, pitch: option<f32>, %world: %world);
/// Teleports the player to another world at a specific position.
teleport-world: func(world-ref: %world, position: position, yaw: option<f32>, pitch: option<f32>);
/// Forces the player to respawn.
respawn: func();
/// Opens a GUI for the player.
open-gui: func(gui-ref: gui);
/// Bans the player with the specified options.
ban: func(options: ban-player-options);
/// Bans the player's IP address with the specified options.
ban-ip: func(options: ban-ip-options);
/// Transfers the player to another server.
transfer: func(host: string, port: u16);
/// Status Effects
/// Gives a status effect to the player.
add-effect: func(effect: status-effect-instance);
/// Removes a status effect from the player.
remove-effect: func(effect: status-effect-type);
/// Clears all active status effects from the player.
clear-effects: func();
/// Checks if a status effect is currently applied to the player.
has-effect: func(effect: status-effect-type) -> bool;
/// Returns the status effect instance applied to the player, if any.
get-effect: func(effect: status-effect-type) -> option<status-effect-instance>;
/// Returns all status effects currently applied to the player.
get-active-effects: func() -> list<status-effect-instance>;
/// Health & Damage
/// Heals the player by a specified amount.
heal: func(amount: f32);
/// Deals damage to the player by a specified amount with a damage type.
damage: func(amount: f32, damage-type: damage-type);
/// Kills the player instantly.
kill: func();
/// Statistics
/// Gets the value of a statistic for this player in the given category and ID.
get-statistic: func(category: statistic-category, stat-id: s32) -> s32;
/// Sets the value of a statistic for this player in the given category and ID.
set-statistic: func(category: statistic-category, stat-id: s32, value: s32);
/// Increments the value of a statistic for this player in the given category and ID.
increment-statistic: func(category: statistic-category, stat-id: s32, amount: s32);
/// Gets the value of a custom statistic for this player.
get-custom-statistic: func(stat: custom-statistic) -> s32;
/// Sets the value of a custom statistic for this player.
set-custom-statistic: func(stat: custom-statistic, value: s32);
/// Increments the value of a custom statistic for this player.
increment-custom-statistic: func(stat: custom-statistic, amount: s32);
/// Sends the player's updated statistics packet to the client.
send-stats: func();
/// Gets the team name that this player belongs to on their active scoreboard, if any.
get-team: func() -> option<string>;
/// Cooldowns
/// Starts an item cooldown for a specific item group name.
start-cooldown: func(group: string, duration-ticks: s32);
/// Returns the cooldown progress (0.0 to 1.0) for a specific item group.
get-cooldown: func(group: string) -> f32;
/// Checks if a specific item group is currently on cooldown.
is-on-cooldown: func(group: string) -> bool;
/// Abilities & Flight
/// Sets whether the player is allowed to fly.
set-allow-flight: func(allowed: bool);
/// Sets the player's flying speed.
set-fly-speed: func(speed: f32);
/// Sets the player's walking speed.
set-walk-speed: func(speed: f32);
/// Sets whether the player is invulnerable to damage.
set-invulnerable: func(invulnerable: bool);
/// Inventory
/// Returns the player's inventory handle for managing main storage, armor, and equipment.
get-inventory: func() -> player-inventory;
/// Returns the player's ender chest inventory handle.
get-ender-chest: func() -> inventory;
/// Returns the index of the currently selected hotbar slot (0-8).
get-selected-slot: func() -> u8;
/// Returns the item currently in the specified hand.
get-item-in-hand: func(hand: hand) -> option<item-stack>;
/// Returns the item in the specified inventory slot.
get-inventory-item: func(slot: u8) -> option<item-stack>;
/// Sets the item in the specified hand.
set-item-in-hand: func(hand: hand, stack: option<item-stack>);
/// Sets the item in the specified inventory slot.
set-inventory-item: func(slot: u8, stack: option<item-stack>);
/// Ender Chest Inventory
/// Returns the item in the specified ender chest slot (0-26).
get-ender-chest-item: func(slot: u8) -> option<item-stack>;
/// Sets the item in the specified ender chest slot (0-26).
set-ender-chest-item: func(slot: u8, stack: option<item-stack>);
/// Clears all items from the player's ender chest.
clear-ender-chest: func();
/// Opens the player's ender chest inventory screen for them.
open-ender-chest: func();
/// Status
/// Returns the player's current health.
get-health: func() -> f32;
/// Sets the player's current health.
set-health: func(health: f32);
/// Returns the player's maximum health.
get-max-health: func() -> f32;
/// Sets the player's maximum health.
set-max-health: func(max-health: f32);
/// Returns the player's food level (0-20).
get-food-level: func() -> u8;
/// Sets the player's food level.
set-food-level: func(food-level: u8);
/// Returns the player's food saturation level.
get-saturation: func() -> f32;
/// Sets the player's food saturation level.
set-saturation: func(saturation: f32);
/// Returns the player's food exhaustion level.
get-exhaustion: func() -> f32;
/// Sets the player's food exhaustion level.
set-exhaustion: func(exhaustion: f32);
/// Returns the player's current absorption amount.
get-absorption: func() -> f32;
/// Sets the player's current absorption amount.
set-absorption: func(absorption: f32);
/// Returns the player's total experience level.
get-experience-level: func() -> s32;
/// Returns the player's progress toward the next level (0.0 to 1.0).
get-experience-progress: func() -> f32;
/// Returns the total experience points the player has.
get-experience-points: func() -> s32;
/// Sets the player's total experience level.
set-experience-level: func(level: s32);
/// Sets the player's progress toward the next level.
set-experience-progress: func(progress: f32);
/// Sets the player's total experience points.
set-experience-points: func(points: s32);
/// Adds experience levels to the player.
add-experience-levels: func(levels: s32);
/// Adds experience points to the player.
add-experience-points: func(points: s32);
/// Returns whether the player is currently flying.
is-flying: func() -> bool;
/// Sets whether the player should be flying.
set-flying: func(flying: bool);
/// Returns the player's current abilities.
get-abilities: func() -> player-abilities;
/// Updates the player's abilities.
set-abilities: func(abilities: player-abilities);
/// Returns the player's IP address.
get-ip: func() -> string;
/// Returns the player's current skin textures.
get-skin: func() -> option<player-skin>;
/// Updates the player's skin textures.
/// Note: this only updates the fields, it doesn't reload the skin.
set-skin: func(skin: player-skin);
/// Returns which skin parts are visible.
get-skin-parts: func() -> skin-parts;
/// Sets which skin parts are visible.
set-skin-parts: func(parts: skin-parts);
/// Per-Player Environment & Overrides
/// Overrides the time of day shown to this player.
set-player-time: func(time: u64, relative: bool);
/// Resets the player's time to sync with the server world time.
reset-player-time: func();
/// Returns the custom time set for this player, if any.
get-player-time: func() -> option<u64>;
/// Checks if the custom player time is relative to the world time.
is-player-time-relative: func() -> bool;
/// Overrides the weather condition shown to this player.
set-player-weather: func(weather: player-weather);
/// Resets the player's weather to match the server world weather.
reset-player-weather: func();
/// Returns the custom weather set for this player, if any.
get-player-weather: func() -> option<player-weather>;
/// Sets the position where the player's compass points.
set-compass-target: func(pos: position);
/// Returns the position where the player's compass currently points.
get-compass-target: func() -> position;
/// Sets the player's custom respawn / bed location.
set-respawn-location: func(pos: position);
/// Returns the player's custom respawn / bed location, if set.
get-respawn-location: func() -> option<position>;
/// Hides another player from this player's view (vanish).
hide-player: func(other: player);
/// Shows a previously hidden player to this player.
show-player: func(other: player);
/// Checks if this player can see another specified player.
can-see: func(other: player) -> bool;
/// Checks if this player can see another specified player.
can-see-player: func(other: player) -> bool;
/// Sets the tab list ping / latency indicator in milliseconds.
set-tab-list-ping: func(latency-ms: s32);
/// Sets a client-side item cooldown overlay.
set-item-cooldown: func(item-id: string, ticks: s32);
/// Returns the remaining cooldown ticks for an item, if active.
get-item-cooldown: func(item-id: string) -> option<s32>;
/// Checks if an item is currently on cooldown.
has-item-cooldown: func(item-id: string) -> bool;
/// Performs a ray-trace from the player's eye position in looking direction to find the targeted block.
ray-trace-block: func(max-distance: f64, include-fluids: bool) -> option<ray-trace-block-result>;
/// Performs a ray-trace from the player's eye position in looking direction to find the targeted entity.
ray-trace-entity: func(max-distance: f64) -> option<ray-trace-entity-result>;
/// Returns the entity currently targeted in the looking direction within the specified distance.
get-target-entity: func(max-distance: f64) -> option<entity>;
/// Raycasts from the player's eyes to find the block being targeted.
get-target-block: func(max-distance: u32) -> option<position>;
/// Performs a raycast from the player's eyes to find the exact block and face being targeted.
get-target-block-exact: func(max-distance: f64, include-fluids: bool) -> option<ray-trace-block-result>;
/// Launches a projectile from the player's eyes in their line of sight.
launch-projectile: func(%type: projectile-type) -> option<entity>;
/// Advancements
/// Returns the progress of the specified advancement for this player, if the advancement exists.
get-advancement-progress: func(advancement-id: string) -> option<advancement-progress>;
/// Awards a specific criterion of an advancement to the player.
/// Returns true if the criterion was successfully awarded (was not already completed).
award-advancement-criterion: func(advancement-id: string, criterion: string) -> bool;
/// Revokes a specific criterion of an advancement from the player.
/// Returns true if the criterion was successfully revoked (was previously completed).
revoke-advancement-criterion: func(advancement-id: string, criterion: string) -> bool;
/// Awards all criteria of the specified advancement to the player.
/// Returns true if any criterion was newly awarded.
award-advancement: func(advancement-id: string) -> bool;
/// Revokes all criteria of the specified advancement from the player.
/// Returns true if any criterion was newly revoked.
revoke-advancement: func(advancement-id: string) -> bool;
/// Checks whether the player has completed the specified advancement.
has-advancement: func(advancement-id: string) -> bool;
/// Returns a list of all advancement IDs completed by this player.
get-completed-advancements: func() -> list<string>;
/// Returns the ID of the currently selected advancement tab for this player, if any.
get-selected-advancement-tab: func() -> option<string>;
/// Sets the selected advancement tab for this player (must be a root advancement ID).
set-selected-advancement-tab: func(tab-id: option<string>);
/// Returns a Java-specific player handle, if the player is connected via Java Edition.
///
/// This allows access to Java-exclusive features like sending specific packets
/// or retrieving the client brand.
as-java: func() -> option<java-player>;
/// Returns a Bedrock-specific player handle, if the player is connected via Bedrock Edition.
///
/// This allows access to Bedrock-exclusive features like custom forms
/// or detailed device information.
as-bedrock: func() -> option<bedrock-player>;
}
/// Represents a resource pack sent to a Java Edition player.
record java-resource-pack {
/// Unique identifier for the resource pack.
id: uuid,
/// The URL to the resource pack file.
url: string,
/// The SHA1 hash (40-character hex string) of the pack.
hash: string,
/// Whether the player is forced to accept the pack.
forced: bool,
/// Optional prompt message displayed in the pack acceptance screen.
prompt-message: option<text-component>,
}
/// Represents an individual Bedrock Edition resource pack entry.
record bedrock-resource-pack-entry {
/// Unique identifier for the Bedrock pack.
id: uuid,
/// Version string of the Bedrock pack (e.g., "1.0.0").
version: string,
/// Size of the pack in bytes.
size: u64,
/// Download URL for remote Bedrock packs.
download-url: string,
/// Optional encryption content key for encrypted packs.
content-key: option<string>,
/// Optional sub-pack name inside the archive.
sub-pack-name: option<string>,
/// Optional content identifier.
content-id: option<string>,
/// Whether the pack contains client scripts.
has-scripts: bool,
/// Whether the pack is marked as an addon pack.
addon-pack: bool,
/// Whether Ray Tracing / RTX features are enabled for the pack.
rtx-enabled: bool,
}
/// Represents the resource packs information payload sent to Bedrock clients.
record bedrock-resource-packs-info {
/// If true, players cannot join without accepting packs.
required: bool,
/// Whether the server offers addon packs.
has-addon-packs: bool,
/// Whether any of the packs contain client scripts.
has-scripts: bool,
/// Whether vibrant visuals should be forced disabled.
is-vibrant-visuals-force-disabled: bool,
/// World template ID, if any.
world-template-id: option<uuid>,
/// World template version, if any.
world-template-version: option<string>,
/// List of resource packs to send to the player.
packs: list<bedrock-resource-pack-entry>,
}
/// A handle to a player connected via the Java Edition.
resource java-player {
/// Returns the Minecraft Java Edition version of the player.
get-version: func() -> java-minecraft-version;
/// Returns the brand of the player's client (e.g., \"vanilla\", \"fabric\").
get-brand: func() -> string;
/// Returns the server address the player used to connect.
get-server-address: func() -> string;
/// Returns the player's configuration settings.
get-settings: func() -> java-player-settings;
/// Sends a Java-specific clientbound packet to the player.
send-packet: func(packet: java-packet);
/// Sends a custom payload packet (plugin message) to the player.
send-custom-payload: func(channel: string, data: list<u8>);
/// Shows a dialog to the player.
show-dialog: func(dialog: dialog);
/// Clears any currently shown dialog for the player.
clear-dialog: func();
/// Returns the Java scoreboard handle for this player.
get-scoreboard: func() -> scoreboard;
/// Resets the player's custom Java scoreboard back to the world scoreboard.
reset-scoreboard: func();
/// Sends a resource pack to the Java player.
send-resource-pack: func(pack: java-resource-pack);
/// Removes a specific resource pack by UUID for the Java player.
remove-resource-pack: func(id: uuid);
/// Clears all custom resource packs for the Java player.
clear-resource-packs: func();
/// Kicks the Java player with the specified options.
kick: func(options: java-kick-options);
/// Sends a clientbound GameEvent packet to the Java player.
send-game-event: func(event: client-game-event, value: f32);
/// Sends an entity status / animation event packet to the Java player for a specific entity ID.
send-entity-status: func(entity-id: s32, status: entity-status);
}
/// A handle to a player connected via the Bedrock Edition.
resource bedrock-player {
/// Returns the Minecraft Bedrock Edition version of the player.
get-version: func() -> bedrock-minecraft-version;
/// Returns the player's configuration settings.
get-settings: func() -> bedrock-player-settings;
/// Returns whether a specific Bedrock-only ability is enabled for the player.
get-ability: func(ability: bedrock-ability) -> bool;
/// Sets whether a specific Bedrock-only ability is enabled for the player.
set-ability: func(ability: bedrock-ability, value: bool);
/// Returns whether a specific Bedrock-only status flag is enabled for the player.
///
/// Status flags control things like whether the player is on fire, sneaking,
/// sprinting, or has specific visual effects.
get-status-flag: func(flag: bedrock-status-flag) -> bool;
/// Sets whether a specific Bedrock-only status flag is enabled for the player.
///
/// This can be used to manually trigger client-side visual states.
set-status-flag: func(flag: bedrock-status-flag, value: bool);
/// Sends a Bedrock-specific clientbound packet to the player.
send-packet: func(packet: bedrock-packet);
/// Opens a Bedrock custom form for the player.
open-form: func(form: form) -> u32;
/// Returns the Bedrock scoreboard handle for this player.
get-scoreboard: func() -> bedrock-scoreboard;
/// Resets the player's custom Bedrock scoreboard back to the world scoreboard.
reset-scoreboard: func();
/// Sends resource packs information to the Bedrock player.
send-resource-packs-info: func(info: bedrock-resource-packs-info);
/// Kicks the Bedrock player with the specified options.
kick: func(options: bedrock-kick-options);
}
/// Returns a list of all players in a specific world.
get-world-players: func(world-ref: %world) -> list<player>;
}
interface boss-bar {
use text.{text-component};
use player.{player};
/// Represents the color of a boss bar.
enum boss-bar-color {
pink,
blue,
red,
green,
yellow,
purple,
white,
}
/// Represents the notches/divisions of a boss bar.
enum boss-bar-division {
no-division,
notches-6,
notches-10,
notches-12,
notches-20,
}
/// Metadata flags that can be toggled on a boss bar.
record boss-bar-metadata {
/// Darkens the sky for players who see the boss bar.
darken-sky: bool,
/// If true, the bar is considered a "dragon bar" (used for Ender Dragon).
dragon-bar: bool,
/// If true, fog is created around the players who see the boss bar.
create-fog: bool,
}
/// Represents a boss bar that can be shown to players.
resource boss-bar {
/// Creates a new boss bar.
constructor(title: text-component, color: boss-bar-color, division: boss-bar-division);
/// Returns the title of this boss bar.
get-title: func() -> text-component;
/// Sets the title of this boss bar.
set-title: func(title: text-component);
/// Returns the health (0.0 to 1.0) of this boss bar.
get-health: func() -> f32;
/// Sets the health (0.0 to 1.0) of this boss bar.
set-health: func(health: f32);
/// Returns the color of this boss bar.
get-color: func() -> boss-bar-color;
/// Sets the color of this boss bar.
set-color: func(color: boss-bar-color);
/// Returns the division of this boss bar.
get-division: func() -> boss-bar-division;
/// Sets the division of this boss bar.
set-division: func(division: boss-bar-division);
/// Returns the currently active metadata on this boss bar.
get-metadata: func() -> boss-bar-metadata;
/// Updates the metadata on this boss bar.
set-metadata: func(metadata: boss-bar-metadata);
/// Adds a player to this boss bar, making it visible to them.
add-player: func(player: player);
/// Removes a player from this boss bar, hiding it from them.
remove-player: func(player: player);
/// Returns a list of all players currently seeing this boss bar.
get-players: func() -> list<player>;
/// Removes this boss bar from all players and cleans it up.
remove-all: func();
}
}
interface event {
use common.{block-pos, game-mode, hand, position, click-type};
use item-stack.{item-stack};
use enchantments.{enchantment};
use damage-types.{damage-type};
use screens.{screen};
use player.{player};
use text.{text-component};
use %world.{%world};
use java-packets.{serverbound-packet as java-serverbound-packet, clientbound-packet as java-clientbound-packet};
use bedrock-packets.{serverbound-packet as bedrock-serverbound-packet, clientbound-packet as bedrock-clientbound-packet};
use uuid.{uuid};
use java-dialogs.{dialog};
variant serverbound-packet {
java(java-serverbound-packet),
bedrock(bedrock-serverbound-packet),
unknown,
}
variant clientbound-packet {
java(java-clientbound-packet),
bedrock(bedrock-clientbound-packet),
unknown,
}
enum event-priority {
highest,
high,
normal,
low,
lowest,
}
record player-join-event-data {
player: player,
join-message: text-component,
cancelled: bool,
}
record player-leave-event-data {
player: player,
leave-message: text-component,
cancelled: bool,
}
record player-login-event-data {
player: player,
kick-message: text-component,
cancelled: bool,
}
record player-chat-event-data {
player: player,
message: string,
recipients: list<player>,
signature: option<list<u8>>,
cancelled: bool,
}
record player-command-send-event-data {
player: player,
command: string,
cancelled: bool,
}
record player-permission-check-event-data {
player: player,
permission: string,
permission-result: bool,
}
record player-move-event-data {
player: player,
from-position: position,
to-position: position,
cancelled: bool,
}
record player-teleport-event-data {
player: player,
from-position: position,
to-position: position,
cancelled: bool,
}
record player-change-world-event-data {
player: player,
previous-world: %world,
new-world: %world,
position: position,
yaw: f32,
pitch: f32,
cancelled: bool,
}
record player-respawn-event-data {
player: player,
previous-world: %world,
respawned-world: %world,
position: position,
yaw: f32,
pitch: f32,
alive: bool,
}
record player-exp-change-event-data {
player: player,
amount: s32,
}
record player-item-held-event-data {
player: player,
previous-slot: u8,
new-slot: u8,
cancelled: bool,
}
record player-changed-main-hand-event-data {
player: player,
main-hand: hand,
}
record player-gamemode-change-event-data {
player: player,
previous-gamemode: game-mode,
new-gamemode: game-mode,
cancelled: bool,
}
record player-custom-payload-event-data {
player: player,
channel: string,
data: list<u8>,
}
enum player-fish-state {
fishing,
caught-fish,
caught-entity,
in-ground,
failed-attempt,
reel-in,
bite,
}
record player-fish-event-data {
player: player,
caught-uuid: option<uuid>,
caught-type: string,
hook-uuid: uuid,
state: player-fish-state,
hand: hand,
exp-to-drop: s32,
cancelled: bool,
}
record player-egg-throw-event-data {
player: player,
egg-uuid: uuid,
hatching: bool,
num-hatches: u8,
hatching-type: string,
cancelled: bool,
}
enum entity-interaction-action {
interact,
attack,
interact-at,
}
enum interact-action {
left-click-block,
left-click-air,
right-click-air,
right-click-block,
}
record player-interact-event-data {
player: player,
action: interact-action,
clicked-pos: option<block-pos>,
block: string,
cancelled: bool,
}
record player-toggle-sneak-event-data {
player: player,
is-sneaking: bool,
cancelled: bool,
}
record player-toggle-flight-event-data {
player: player,
is-flying: bool,
cancelled: bool,
}
record player-toggle-sprint-event-data {
player: player,
is-sprinting: bool,
cancelled: bool,
}
record player-interact-unknown-entity-event-data {
player: player,
entity-id: s32,
action: entity-interaction-action,
cancelled: bool,
}
record inventory-click-event-data {
player: player,
window-type: option<screen>,
click-type: click-type,
slot: s16,
raw-slot: s16,
clicked-item: option<item-stack>,
cursor: option<item-stack>,
hotbar-button: s32,
cancelled: bool,
}
record inventory-close-event-data {
player: player,
window-type: option<screen>,
}
record block-redstone-event-data {
target-world: %world,
state-id: u16,
block-pos: block-pos,
old-current: s32,
new-current: s32,
cancelled: bool,
}
record block-break-event-data {
player: option<player>,
block: string,
block-pos: block-pos,
exp: u32,
should-drop: bool,
cancelled: bool,
}
record block-burn-event-data {
igniting-block: string,
block: string,
cancelled: bool,
}
record block-can-build-event-data {
block-to-build: string,
buildable: bool,
player: player,
block: string,
cancelled: bool,
}
record block-grow-event-data {
target-world: %world,
old-block: string,
old-state-id: u16,
new-block: string,
new-state-id: u16,
block-pos: block-pos,
cancelled: bool,
}
record block-place-event-data {
player: player,
block-placed: string,
block-placed-against: string,
block-pos: block-pos,
can-build: bool,
cancelled: bool,
}
record bedrock-form-response-event-data {
player: player,
form-id: u32,
response-data: option<string>,
}
record dialog-click-action-event-data {
player: player,
id: string,
payload: option<list<u8>>,
cancelled: bool,
}
record dialog-show-event-data {
player: player,
dialog: dialog,
cancelled: bool,
}
record dialog-clear-event-data {
player: player,
cancelled: bool,
}
record server-command-event-data {
command: string,
cancelled: bool,
}
record server-list-ping-address {
host: string,
port: u16,
}
record server-list-ping-event-data {
hostname: string,
address: server-list-ping-address,
motd: text-component,
max-players: u32,
num-players: u32,
favicon: option<string>,
}
enum server-load-type {
startup,
reload,
}
record server-load-event-data {
load-type: server-load-type,
}
record spawn-change-event-data {
target-world: %world,
previous-position: block-pos,
previous-yaw: f32,
previous-pitch: f32,
new-position: block-pos,
new-yaw: f32,
new-pitch: f32,
}
record server-broadcast-event-data {
message: text-component,
sender: text-component,
cancelled: bool,
}
record server-tick-start-event-data {
tick: s32,
}
record server-tick-end-event-data {
tick: s32,
duration-nanos: s64,
}
record packet-received-event-data {
player: player,
packet: serverbound-packet,
packet-id: s32,
raw-payload: list<u8>,
cancelled: bool,
}
record packet-sent-event-data {
player: player,
packet: clientbound-packet,
packet-id: s32,
raw-payload: list<u8>,
cancelled: bool,
}
record player-interact-entity-event-data {
player: player,
entity-id: s32,
action: entity-interaction-action,
sneaking: bool,
cancelled: bool,
}
record chunk-load-event-data {
target-world: %world,
chunk-x: s32,
chunk-z: s32,
cancelled: bool,
}
record chunk-save-event-data {
target-world: %world,
chunk-x: s32,
chunk-z: s32,
cancelled: bool,
}
record chunk-send-event-data {
target-world: %world,
chunk-x: s32,
chunk-z: s32,
cancelled: bool,
}
record entity-damage-event-data {
entity-id: s32,
damage: f32,
damage-type: damage-type,
cancelled: bool,
}
record entity-death-event-data {
entity-id: s32,
dropped-exp: s32,
}
record player-death-event-data {
player: player,
death-message: text-component,
dropped-exp: s32,
keep-inventory: bool,
cancelled: bool,
}
record entity-spawn-event-data {
entity-id: s32,
entity-type: string,
position: position,
target-world: %world,
cancelled: bool,
}
record entity-combust-event-data {
entity-id: s32,
duration-secs: f32,
cancelled: bool,
}
record entity-regain-health-event-data {
entity-id: s32,
amount: f32,
cancelled: bool,
}
record entity-air-change-event-data {
entity-id: s32,
amount: s32,
cancelled: bool,
}
record entity-breed-event-data {
father-id: s32,
mother-id: s32,
child-id: s32,
cancelled: bool,
}
record entity-dismount-event-data {
entity-id: s32,
dismounted-id: s32,
cancelled: bool,
}
record entity-dye-event-data {
entity-id: s32,
color: string,
player: option<player>,
cancelled: bool,
}
record entity-enter-love-mode-event-data {
entity-id: s32,
human-entity-id: option<s32>,
ticks-in-love: s32,
cancelled: bool,
}
record entity-explode-event-data {
entity-id: s32,
position: position,
yield-rate: f32,
cancelled: bool,
}
record entity-mount-event-data {
entity-id: s32,
mounted-id: s32,
cancelled: bool,
}
record entity-pickup-item-event-data {
entity-id: s32,
item-name: string,
count: u8,
cancelled: bool,
}
record entity-portal-event-data {
entity-id: s32,
portal-pos: block-pos,
cancelled: bool,
}
record entity-resurrect-event-data {
entity-id: s32,
cancelled: bool,
}
record entity-shoot-bow-event-data {
entity-id: s32,
weapon-name: string,
force: f32,
cancelled: bool,
}
record entity-tame-event-data {
entity-id: s32,
owner: player,
cancelled: bool,
}
record entity-target-event-data {
entity-id: s32,
target-id: option<s32>,
cancelled: bool,
}
record entity-teleport-event-data {
entity-id: s32,
from-position: position,
to-position: position,
cancelled: bool,
}
record entity-toggle-glide-event-data {
entity-id: s32,
is-gliding: bool,
cancelled: bool,
}
record entity-transform-event-data {
entity-id: s32,
new-entity-id: s32,
transform-reason: string,
cancelled: bool,
}
record creature-spawn-event-data {
entity-id: s32,
entity-type: string,
position: position,
target-world: %world,
spawn-reason: string,
player: option<player>,
cancelled: bool,
}
record ender-dragon-change-phase-event-data {
entity-id: s32,
current-phase: string,
new-phase: string,
cancelled: bool,
}
record entity-break-door-event-data {
entity-id: s32,
block-pos: block-pos,
cancelled: bool,
}
record entity-change-block-event-data {
entity-id: s32,
block-pos: block-pos,
new-block: string,
cancelled: bool,
}
record entity-damage-by-block-event-data {
entity-id: s32,
damager-pos: option<block-pos>,
damage: f32,
cause: string,
cancelled: bool,
}
record entity-damage-by-entity-event-data {
entity-id: s32,
damager-id: s32,
damage: f32,
cause: string,
cancelled: bool,
}
record entity-drop-item-event-data {
entity-id: s32,
item-name: string,
count: u8,
cancelled: bool,
}
record entity-enter-block-event-data {
entity-id: s32,
block-pos: block-pos,
cancelled: bool,
}
record entity-exhaustion-event-data {
entity-id: s32,
exhaustion: f32,
cancelled: bool,
}
record entity-interact-event-data {
entity-id: s32,
block-pos: block-pos,
cancelled: bool,
}
record entity-knockback-event-data {
entity-id: s32,
hit-by-id: option<s32>,
knockback: position,
cancelled: bool,
}
record entity-place-event-data {
entity-id: s32,
block-pos: block-pos,
block-name: string,
cancelled: bool,
}
record entity-pose-change-event-data {
entity-id: s32,
pose: string,
cancelled: bool,
}
record entity-potion-effect-event-data {
entity-id: s32,
effect-name: string,
duration: s32,
amplifier: u8,
cancelled: bool,
}
record entity-spell-cast-event-data {
entity-id: s32,
spell: string,
cancelled: bool,
}
record entity-target-living-entity-event-data {
entity-id: s32,
target-id: option<s32>,
reason: string,
cancelled: bool,
}
record entity-toggle-swim-event-data {
entity-id: s32,
is-swimming: bool,
cancelled: bool,
}
record explosion-prime-event-data {
entity-id: s32,
radius: f32,
fire: bool,
cancelled: bool,
}
record firework-explode-event-data {
entity-id: s32,
cancelled: bool,
}
record food-level-change-event-data {
entity-id: s32,
food-level: u8,
cancelled: bool,
}
record item-despawn-event-data {
entity-id: s32,
cancelled: bool,
}
record item-merge-event-data {
entity-id: s32,
target-id: s32,
cancelled: bool,
}
record item-spawn-event-data {
entity-id: s32,
position: position,
item-name: string,
cancelled: bool,
}
record piglin-barter-event-data {
entity-id: s32,
input-item: item-stack,
outcome: list<item-stack>,
cancelled: bool,
}
record projectile-hit-event-data {
entity-id: s32,
hit-position: position,
hit-entity-id: option<s32>,
cancelled: bool,
}
record projectile-launch-event-data {
entity-id: s32,
shooter-id: option<s32>,
cancelled: bool,
}
record sheep-dye-wool-event-data {
entity-id: s32,
dye-color: u8,
player-id: option<s32>,
cancelled: bool,
}
record sheep-regrow-wool-event-data {
entity-id: s32,
cancelled: bool,
}
record slime-split-event-data {
entity-id: s32,
count: s32,
cancelled: bool,
}
record strider-temperature-change-event-data {
entity-id: s32,
is-shivering: bool,
cancelled: bool,
}
record villager-acquire-trade-event-data {
entity-id: s32,
recipe-index: s32,
cancelled: bool,
}
record villager-career-change-event-data {
entity-id: s32,
profession: string,
reason: string,
cancelled: bool,
}
record villager-replenish-trade-event-data {
entity-id: s32,
restock-quantity: s32,
cancelled: bool,
}
record warden-anger-change-event-data {
entity-id: s32,
target-id: s32,
old-anger: s32,
new-anger: s32,
cancelled: bool,
}
record area-effect-cloud-apply-event-data {
entity-id: s32,
affected-entities: list<s32>,
cancelled: bool,
}
record arrow-body-count-change-event-data {
entity-id: s32,
old-amount: u32,
new-amount: u32,
cancelled: bool,
}
record bat-toggle-sleep-event-data {
entity-id: s32,
is-awake: bool,
cancelled: bool,
}
record creeper-power-event-data {
entity-id: s32,
lightning-id: option<s32>,
cause: string,
cancelled: bool,
}
record entity-combust-by-block-event-data {
entity-id: s32,
combuster: block-pos,
duration: f32,
cancelled: bool,
}
record entity-combust-by-entity-event-data {
entity-id: s32,
combuster-id: s32,
duration: f32,
cancelled: bool,
}
record entity-knockback-by-entity-event-data {
entity-id: s32,
hit-by-id: s32,
force: f64,
x: f64,
z: f64,
cancelled: bool,
}
record entity-portal-enter-event-data {
entity-id: s32,
location: block-pos,
cancelled: bool,
}
record entity-portal-exit-event-data {
entity-id: s32,
from-pos: block-pos,
to-pos: option<block-pos>,
cancelled: bool,
}
record entity-remove-event-data {
entity-id: s32,
cause: string,
cancelled: bool,
}
record entity-target-block-event-data {
entity-id: s32,
block-pos: block-pos,
cancelled: bool,
}
record entity-unleash-event-data {
entity-id: s32,
reason: string,
cancelled: bool,
}
record exp-bottle-event-data {
entity-id: s32,
experience: s32,
location: block-pos,
show-effect: bool,
cancelled: bool,
}
record horse-jump-event-data {
entity-id: s32,
power: f32,
cancelled: bool,
}
record lingering-potion-splash-event-data {
entity-id: s32,
location: block-pos,
potion-item: string,
cancelled: bool,
}
record pig-zap-event-data {
entity-id: s32,
lightning-id: s32,
pig-zombie-id: s32,
cancelled: bool,
}
record pig-zombie-anger-event-data {
entity-id: s32,
target-id: option<s32>,
new-anger: s32,
cancelled: bool,
}
record potion-splash-event-data {
entity-id: s32,
location: block-pos,
potion-item: string,
affected-entities: list<s32>,
cancelled: bool,
}
record spawner-spawn-event-data {
entity-id: s32,
spawner-pos: block-pos,
cancelled: bool,
}
record trial-spawner-spawn-event-data {
entity-id: s32,
spawner-pos: block-pos,
cancelled: bool,
}
record villager-reputation-change-event-data {
entity-id: s32,
target-id: s32,
reputation-change: s32,
cancelled: bool,
}
record player-item-consume-event-data {
player: player,
item-name: string,
cancelled: bool,
}
record player-item-damage-event-data {
player: player,
item-name: string,
damage: s32,
cancelled: bool,
}
record player-drop-item-event-data {
player: player,
item-name: string,
count: u8,
cancelled: bool,
}
record player-bed-enter-event-data {
player: player,
bed-pos: block-pos,
cancelled: bool,
}
record player-bed-leave-event-data {
player: player,
bed-pos: block-pos,
}
record player-bucket-empty-event-data {
player: player,
block-pos: block-pos,
bucket: string,
cancelled: bool,
}
record player-bucket-fill-event-data {
player: player,
block-pos: block-pos,
bucket: string,
cancelled: bool,
}
record async-player-chat-event-data {
player: player,
message: string,
format: text-component,
cancelled: bool,
}
record async-player-pre-login-event-data {
player-name: string,
player-uuid: string,
ip-address: string,
kick-message: text-component,
cancelled: bool,
}
record player-advancement-done-event-data {
player: player,
advancement-id: string,
cancelled: bool,
}
record player-animation-event-data {
player: player,
animation-type: string,
cancelled: bool,
}
record player-armor-stand-manipulate-event-data {
player: player,
armor-stand-id: s32,
slot: u8,
cancelled: bool,
}
record player-bucket-entity-event-data {
player: player,
entity-id: s32,
bucket-item: string,
cancelled: bool,
}
record player-changed-world-event-data {
player: player,
from-world: %world,
to-world: %world,
cancelled: bool,
}
record player-channel-event-data {
player: player,
channel: string,
cancelled: bool,
}
record player-command-preprocess-event-data {
player: player,
command: string,
cancelled: bool,
}
record player-edit-book-event-data {
player: player,
slot: u32,
pages: list<string>,
title: option<string>,
signing: bool,
cancelled: bool,
}
record player-elytra-boost-event-data {
player: player,
firework-id: s32,
cancelled: bool,
}
record player-exp-cooldown-change-event-data {
player: player,
new-cooldown: s32,
cancelled: bool,
}
record player-harvest-block-event-data {
player: player,
block-pos: block-pos,
harvested-items: list<item-stack>,
cancelled: bool,
}
record player-hide-entity-event-data {
player: player,
entity-id: s32,
cancelled: bool,
}
record player-item-break-event-data {
player: player,
item-name: string,
}
record player-item-mend-event-data {
player: player,
item-name: string,
repair-amount: s32,
exp-consumed: s32,
cancelled: bool,
}
record player-kick-event-data {
player: player,
reason: string,
cancelled: bool,
}
record player-leash-entity-event-data {
player: player,
entity-id: s32,
holder-id: s32,
cancelled: bool,
}
record player-level-change-event-data {
player: player,
old-level: s32,
new-level: s32,
}
record player-locale-change-event-data {
player: player,
new-locale: string,
cancelled: bool,
}
record player-name-entity-event-data {
player: player,
entity-id: s32,
name: text-component,
cancelled: bool,
}
record player-open-sign-event-data {
player: player,
block-pos: block-pos,
is-front: bool,
cancelled: bool,
}
record player-portal-event-data {
player: player,
from-pos: block-pos,
to-pos: option<block-pos>,
cancelled: bool,
}
record player-pre-login-event-data {
player-name: string,
player-uuid: string,
ip-address: string,
kick-message: text-component,
cancelled: bool,
}
record player-riptide-event-data {
player: player,
item-name: string,
cancelled: bool,
}
record player-shear-entity-event-data {
player: player,
entity-id: s32,
hand: u8,
cancelled: bool,
}
record player-show-entity-event-data {
player: player,
entity-id: s32,
cancelled: bool,
}
record player-spawn-change-event-data {
player: player,
new-spawn: option<block-pos>,
forced: bool,
cancelled: bool,
}
record player-statistic-increment-event-data {
player: player,
statistic-id: string,
amount: s32,
cancelled: bool,
}
record player-swap-hands-event-data {
player: player,
cancelled: bool,
}
record player-take-lectern-book-event-data {
player: player,
block-pos: block-pos,
book: item-stack,
cancelled: bool,
}
record player-unleash-entity-event-data {
player: player,
entity-id: s32,
cancelled: bool,
}
record player-velocity-event-data {
player: player,
velocity: position,
cancelled: bool,
}
record player-input-event-data {
player: player,
input: string,
cancelled: bool,
}
record player-interact-at-entity-event-data {
player: player,
entity-id: s32,
clicked-x: f64,
clicked-y: f64,
clicked-z: f64,
hand: u8,
cancelled: bool,
}
record player-links-send-event-data {
player: player,
links: list<string>,
cancelled: bool,
}
record player-pickup-arrow-event-data {
player: player,
arrow-id: s32,
cancelled: bool,
}
record player-recipe-book-click-event-data {
player: player,
recipe-id: string,
make-all: bool,
cancelled: bool,
}
record player-recipe-book-settings-change-event-data {
player: player,
book-type: string,
is-open: bool,
is-filtering: bool,
cancelled: bool,
}
record player-recipe-discover-event-data {
player: player,
recipe-id: string,
cancelled: bool,
}
record player-register-channel-event-data {
player: player,
channel: string,
cancelled: bool,
}
record player-resource-pack-status-event-data {
player: player,
pack-id: string,
status: string,
cancelled: bool,
}
record player-spawn-location-event-data {
player: player,
spawn-pos: position,
cancelled: bool,
}
record player-unregister-channel-event-data {
player: player,
channel: string,
cancelled: bool,
}
record raid-finish-event-data {
victory: bool,
cancelled: bool,
}
record raid-spawn-wave-event-data {
wave: u32,
pos: block-pos,
cancelled: bool,
}
record raid-stop-event-data {
reason: string,
cancelled: bool,
}
record raid-trigger-event-data {
pos: block-pos,
cancelled: bool,
}
record block-damage-event-data {
player: player,
block-pos: block-pos,
insta-break: bool,
cancelled: bool,
}
record block-ignite-event-data {
block-pos: block-pos,
cancelled: bool,
}
record block-from-to-event-data {
from-pos: block-pos,
to-pos: block-pos,
cancelled: bool,
}
record block-form-event-data {
block-pos: block-pos,
cancelled: bool,
}
record block-fade-event-data {
block-pos: block-pos,
cancelled: bool,
}
record block-dispense-event-data {
block-pos: block-pos,
item-name: string,
cancelled: bool,
}
record block-explode-event-data {
block-pos: block-pos,
yield-rate: f32,
cancelled: bool,
}
record block-physics-event-data {
block-pos: block-pos,
changed-pos: block-pos,
cancelled: bool,
}
record block-piston-extend-event-data {
block-pos: block-pos,
direction: string,
cancelled: bool,
}
record block-piston-retract-event-data {
block-pos: block-pos,
direction: string,
cancelled: bool,
}
record note-play-event-data {
block-pos: block-pos,
instrument: string,
note: u8,
cancelled: bool,
}
record sign-change-event-data {
player: player,
block-pos: block-pos,
lines: list<string>,
cancelled: bool,
}
record sponge-absorb-event-data {
block-pos: block-pos,
cancelled: bool,
}
record tnt-prime-event-data {
block-pos: block-pos,
prime-reason: string,
cancelled: bool,
}
record map-initialize-event-data {
map-id: s32,
}
record hanging-break-event-data {
entity-id: s32,
remover-entity-id: option<s32>,
cancelled: bool,
}
record hanging-break-by-entity-event-data {
entity-id: s32,
remover-entity-id: s32,
cancelled: bool,
}
record hanging-place-event-data {
entity-id: s32,
player: option<player>,
block-pos: block-pos,
block-face: string,
cancelled: bool,
}
record bell-resonate-event-data {
block-pos: block-pos,
target-world: %world,
cancelled: bool,
}
record bell-ring-event-data {
block-pos: block-pos,
target-world: %world,
entity-id: option<s32>,
direction: option<string>,
cancelled: bool,
}
record block-brush-event-data {
block-pos: block-pos,
target-world: %world,
player: player,
item: item-stack,
cancelled: bool,
}
record block-cook-event-data {
block-pos: block-pos,
target-world: %world,
source: item-stack,
%result: item-stack,
cancelled: bool,
}
record block-damage-abort-event-data {
player: player,
block-pos: block-pos,
target-world: %world,
item-in-hand: item-stack,
}
record block-dispense-armor-event-data {
block-pos: block-pos,
target-world: %world,
target-entity-id: s32,
item: item-stack,
cancelled: bool,
}
record block-dispense-loot-event-data {
block-pos: block-pos,
target-world: %world,
items: list<item-stack>,
cancelled: bool,
}
record block-drop-item-event-data {
block-pos: block-pos,
target-world: %world,
player: option<player>,
items: list<item-stack>,
cancelled: bool,
}
record block-exp-event-data {
block-pos: block-pos,
target-world: %world,
exp: s32,
}
record block-fertilize-event-data {
block-pos: block-pos,
target-world: %world,
player: option<player>,
changed-blocks: list<tuple<block-pos, u16>>,
cancelled: bool,
}
record block-multi-place-event-data {
player: player,
target-world: %world,
placed-blocks: list<tuple<block-pos, u16>>,
cancelled: bool,
}
record block-receive-game-event-data {
block-pos: block-pos,
target-world: %world,
game-event: string,
source-entity-id: option<s32>,
cancelled: bool,
}
record block-shear-entity-event-data {
block-pos: block-pos,
target-world: %world,
target-entity-id: s32,
item: item-stack,
cancelled: bool,
}
record block-spread-event-data {
source-pos: block-pos,
target-pos: block-pos,
target-world: %world,
new-state-id: u16,
cancelled: bool,
}
record brewing-start-event-data {
block-pos: block-pos,
target-world: %world,
brewing-time: s32,
cancelled: bool,
}
record campfire-start-event-data {
block-pos: block-pos,
target-world: %world,
item: item-stack,
slot: u8,
cooking-time: s32,
cancelled: bool,
}
record cauldron-level-change-event-data {
block-pos: block-pos,
target-world: %world,
old-level: s32,
new-level: s32,
reason: string,
entity-id: option<s32>,
cancelled: bool,
}
record crafter-craft-event-data {
block-pos: block-pos,
target-world: %world,
%result: item-stack,
cancelled: bool,
}
record entity-block-form-event-data {
entity-id: s32,
block-pos: block-pos,
target-world: %world,
new-state-id: u16,
cancelled: bool,
}
record fluid-level-change-event-data {
block-pos: block-pos,
target-world: %world,
new-state-id: u16,
cancelled: bool,
}
record inventory-block-start-event-data {
block-pos: block-pos,
target-world: %world,
}
record leaves-decay-event-data {
block-pos: block-pos,
target-world: %world,
cancelled: bool,
}
record moisture-change-event-data {
block-pos: block-pos,
target-world: %world,
new-moisture: s32,
cancelled: bool,
}
record sculk-bloom-event-data {
block-pos: block-pos,
target-world: %world,
charge: s32,
cancelled: bool,
}
record vault-display-item-event-data {
block-pos: block-pos,
target-world: %world,
item: item-stack,
cancelled: bool,
}
record weather-change-event-data {
target-world: %world,
to-weather-state: bool,
cancelled: bool,
}
record thunder-change-event-data {
target-world: %world,
to-thunder-state: bool,
cancelled: bool,
}
record world-load-event-data {
target-world: %world,
}
record world-unload-event-data {
target-world: %world,
cancelled: bool,
}
record async-structure-generate-event-data {
world-name: string,
structure-name: string,
pos: block-pos,
cancelled: bool,
}
record async-structure-spawn-event-data {
world-name: string,
structure-name: string,
pos: block-pos,
cancelled: bool,
}
record chunk-populate-event-data {
chunk-x: s32,
chunk-z: s32,
cancelled: bool,
}
record chunk-unload-event-data {
chunk-x: s32,
chunk-z: s32,
cancelled: bool,
}
record entities-load-event-data {
chunk-x: s32,
chunk-z: s32,
entity-count: u32,
cancelled: bool,
}
record entities-unload-event-data {
chunk-x: s32,
chunk-z: s32,
entity-count: u32,
cancelled: bool,
}
record generic-game-event-data {
event-id: string,
pos: position,
cancelled: bool,
}
record loot-generate-event-data {
loot-table: string,
cancelled: bool,
}
record portal-create-event-data {
pos: block-pos,
portal-type: string,
cancelled: bool,
}
record structure-grow-event-data {
pos: block-pos,
species: string,
bone-meal: bool,
cancelled: bool,
}
record time-skip-event-data {
skip-amount: s64,
cancelled: bool,
}
record world-init-event-data {
target-world: %world,
}
record world-save-event-data {
world-name: string,
cancelled: bool,
}
record inventory-open-event-data {
player: player,
cancelled: bool,
}
record inventory-drag-event-data {
player: player,
cancelled: bool,
}
record craft-item-event-data {
player: player,
recipe-id: string,
cancelled: bool,
}
record furnace-smelt-event-data {
block-pos: block-pos,
source-item: string,
result-item: string,
cancelled: bool,
}
record brew-event-data {
block-pos: block-pos,
fuel-level: u8,
cancelled: bool,
}
record brewing-stand-fuel-event-data {
block-pos: block-pos,
fuel-power: u16,
cancelled: bool,
}
record furnace-burn-event-data {
block-pos: block-pos,
fuel-item: string,
burn-time: u32,
cancelled: bool,
}
record furnace-extract-event-data {
player: player,
block-pos: block-pos,
item-id: string,
item-amount: u32,
exp-gained: f32,
}
record furnace-start-smelt-event-data {
block-pos: block-pos,
source-item: string,
cooking-time: u32,
cancelled: bool,
}
record hopper-inventory-search-event-data {
block-pos: block-pos,
search-pos: block-pos,
cancelled: bool,
}
record inventory-creative-event-data {
player: player,
slot: s16,
item-id: string,
item-count: u8,
cancelled: bool,
}
record inventory-interact-event-data {
player: player,
cancelled: bool,
}
record inventory-move-item-event-data {
source-pos: block-pos,
target-pos: block-pos,
item-id: string,
item-amount: u32,
cancelled: bool,
}
record inventory-pickup-item-event-data {
block-pos: block-pos,
item-entity-id: s32,
item-id: string,
cancelled: bool,
}
record prepare-anvil-event-data {
player: player,
rename-text: string,
repair-cost: u32,
}
record prepare-grindstone-event-data {
player: player,
result-item: option<string>,
}
record prepare-inventory-result-event-data {
player: player,
result-item: option<string>,
}
record prepare-item-craft-event-data {
player: player,
recipe-id: string,
cancelled: bool,
}
record prepare-smithing-event-data {
player: player,
result-item: option<string>,
}
record smith-item-event-data {
player: player,
recipe-id: string,
cancelled: bool,
}
record trade-select-event-data {
player: player,
slot-index: u8,
cancelled: bool,
}
record vehicle-block-collision-event-data {
vehicle-id: s32,
block-pos: block-pos,
cancelled: bool,
}
record vehicle-collision-event-data {
vehicle-id: s32,
cancelled: bool,
}
record vehicle-create-event-data {
vehicle-id: s32,
cancelled: bool,
}
record vehicle-damage-event-data {
vehicle-id: s32,
damage: f32,
attacker-id: option<s32>,
cancelled: bool,
}
record vehicle-destroy-event-data {
vehicle-id: s32,
attacker-id: option<s32>,
cancelled: bool,
}
record vehicle-enter-event-data {
vehicle-id: s32,
entered-id: s32,
cancelled: bool,
}
record vehicle-entity-collision-event-data {
vehicle-id: s32,
collided-entity-id: s32,
cancelled: bool,
}
record vehicle-exit-event-data {
vehicle-id: s32,
exited-id: s32,
cancelled: bool,
}
record vehicle-move-event-data {
vehicle-id: s32,
from-position: position,
to-position: position,
cancelled: bool,
}
record vehicle-update-event-data {
vehicle-id: s32,
cancelled: bool,
}
record enchantment-offer {
cost: s32,
enchantment-id: s32,
enchantment-level: s32,
}
record prepare-item-enchant-event-data {
player: player,
item: item-stack,
offers: list<enchantment-offer>,
bookshelf-count: s32,
cancelled: bool,
}
record enchantment-value {
enchantment: enchantment,
level: u32,
}
record enchant-item-event-data {
player: player,
item: item-stack,
%option: s32,
cost: s32,
enchantments-to-add: list<enchantment-value>,
cancelled: bool,
}
record lightning-strike-event-data {
position: position,
is-effect: bool,
cancelled: bool,
}
enum event-type {
player-join-event,
player-leave-event,
player-login-event,
player-chat-event,
player-command-send-event,
player-permission-check-event,
player-move-event,
player-teleport-event,
player-change-world-event,
player-respawn-event,
player-exp-change-event,
player-item-held-event,
player-changed-main-hand-event,
player-gamemode-change-event,
player-custom-payload-event,
player-fish-event,
player-egg-throw-event,
player-interact-unknown-entity-event,
player-interact-entity-event,
player-interact-event,
player-toggle-sneak-event,
player-toggle-flight-event,
player-toggle-sprint-event,
inventory-click-event,
inventory-close-event,
block-redstone-event,
block-break-event,
block-burn-event,
block-can-build-event,
block-grow-event,
block-place-event,
bedrock-form-response-event,
dialog-click-action-event,
dialog-show-event,
dialog-clear-event,
server-command-event,
server-list-ping-event,
server-load-event,
spawn-change-event,
server-broadcast-event,
server-tick-start-event,
server-tick-end-event,
packet-received-event,
packet-sent-event,
chunk-load-event,
chunk-save-event,
chunk-send-event,
entity-damage-event,
entity-death-event,
player-death-event,
entity-spawn-event,
entity-combust-event,
entity-regain-health-event,
entity-air-change-event,
entity-breed-event,
entity-dismount-event,
entity-dye-event,
entity-enter-love-mode-event,
entity-explode-event,
entity-mount-event,
entity-pickup-item-event,
entity-portal-event,
entity-resurrect-event,
entity-shoot-bow-event,
entity-tame-event,
entity-target-event,
entity-teleport-event,
entity-toggle-glide-event,
entity-transform-event,
player-item-consume-event,
player-item-damage-event,
player-drop-item-event,
player-bed-enter-event,
player-bed-leave-event,
player-bucket-empty-event,
player-bucket-fill-event,
block-damage-event,
block-ignite-event,
block-from-to-event,
block-form-event,
block-fade-event,
block-dispense-event,
block-explode-event,
block-physics-event,
block-piston-extend-event,
block-piston-retract-event,
note-play-event,
sign-change-event,
sponge-absorb-event,
tnt-prime-event,
weather-change-event,
thunder-change-event,
world-load-event,
world-unload-event,
async-structure-generate-event,
async-structure-spawn-event,
chunk-populate-event,
chunk-unload-event,
entities-load-event,
entities-unload-event,
generic-game-event,
loot-generate-event,
portal-create-event,
structure-grow-event,
time-skip-event,
world-init-event,
world-save-event,
inventory-open-event,
inventory-drag-event,
craft-item-event,
furnace-smelt-event,
brew-event,
brewing-stand-fuel-event,
furnace-burn-event,
furnace-extract-event,
furnace-start-smelt-event,
hopper-inventory-search-event,
inventory-creative-event,
inventory-interact-event,
inventory-move-item-event,
inventory-pickup-item-event,
prepare-anvil-event,
prepare-grindstone-event,
prepare-inventory-result-event,
prepare-item-craft-event,
prepare-smithing-event,
smith-item-event,
trade-select-event,
vehicle-block-collision-event,
vehicle-collision-event,
vehicle-create-event,
vehicle-damage-event,
vehicle-destroy-event,
vehicle-enter-event,
vehicle-entity-collision-event,
vehicle-exit-event,
vehicle-move-event,
vehicle-update-event,
prepare-item-enchant-event,
enchant-item-event,
map-initialize-event,
hanging-break-event,
hanging-break-by-entity-event,
hanging-place-event,
bell-resonate-event,
bell-ring-event,
block-brush-event,
block-cook-event,
block-damage-abort-event,
block-dispense-armor-event,
block-dispense-loot-event,
block-drop-item-event,
block-exp-event,
block-fertilize-event,
block-multi-place-event,
block-receive-game-event,
block-shear-entity-event,
block-spread-event,
brewing-start-event,
campfire-start-event,
cauldron-level-change-event,
crafter-craft-event,
entity-block-form-event,
fluid-level-change-event,
inventory-block-start-event,
leaves-decay-event,
moisture-change-event,
sculk-bloom-event,
vault-display-item-event,
creature-spawn-event,
ender-dragon-change-phase-event,
entity-break-door-event,
entity-change-block-event,
entity-damage-by-block-event,
entity-damage-by-entity-event,
entity-drop-item-event,
entity-enter-block-event,
entity-exhaustion-event,
entity-interact-event,
entity-knockback-event,
entity-place-event,
entity-pose-change-event,
entity-potion-effect-event,
entity-spell-cast-event,
entity-target-living-entity-event,
entity-toggle-swim-event,
explosion-prime-event,
firework-explode-event,
food-level-change-event,
item-despawn-event,
item-merge-event,
item-spawn-event,
piglin-barter-event,
projectile-hit-event,
projectile-launch-event,
sheep-dye-wool-event,
sheep-regrow-wool-event,
slime-split-event,
strider-temperature-change-event,
villager-acquire-trade-event,
villager-career-change-event,
villager-replenish-trade-event,
warden-anger-change-event,
area-effect-cloud-apply-event,
arrow-body-count-change-event,
bat-toggle-sleep-event,
creeper-power-event,
entity-combust-by-block-event,
entity-combust-by-entity-event,
entity-knockback-by-entity-event,
entity-portal-enter-event,
entity-portal-exit-event,
entity-remove-event,
entity-target-block-event,
entity-unleash-event,
exp-bottle-event,
horse-jump-event,
lingering-potion-splash-event,
pig-zap-event,
pig-zombie-anger-event,
potion-splash-event,
spawner-spawn-event,
trial-spawner-spawn-event,
villager-reputation-change-event,
async-player-chat-event,
async-player-pre-login-event,
player-advancement-done-event,
player-animation-event,
player-armor-stand-manipulate-event,
player-bucket-entity-event,
player-changed-world-event,
player-channel-event,
player-command-preprocess-event,
player-edit-book-event,
player-elytra-boost-event,
player-exp-cooldown-change-event,
player-harvest-block-event,
player-hide-entity-event,
player-item-break-event,
player-item-mend-event,
player-kick-event,
player-leash-entity-event,
player-level-change-event,
player-locale-change-event,
player-name-entity-event,
player-open-sign-event,
player-portal-event,
player-pre-login-event,
player-riptide-event,
player-shear-entity-event,
player-show-entity-event,
player-spawn-change-event,
player-statistic-increment-event,
player-swap-hands-event,
player-take-lectern-book-event,
player-unleash-entity-event,
player-velocity-event,
player-input-event,
player-interact-at-entity-event,
player-links-send-event,
player-pickup-arrow-event,
player-recipe-book-click-event,
player-recipe-book-settings-change-event,
player-recipe-discover-event,
player-register-channel-event,
player-resource-pack-status-event,
player-spawn-location-event,
player-unregister-channel-event,
raid-finish-event,
raid-spawn-wave-event,
raid-stop-event,
raid-trigger-event,
lightning-strike-event,
}
variant event {
player-join-event(player-join-event-data),
player-leave-event(player-leave-event-data),
player-login-event(player-login-event-data),
player-chat-event(player-chat-event-data),
player-command-send-event(player-command-send-event-data),
player-permission-check-event(player-permission-check-event-data),
player-move-event(player-move-event-data),
player-teleport-event(player-teleport-event-data),
player-change-world-event(player-change-world-event-data),
player-respawn-event(player-respawn-event-data),
player-exp-change-event(player-exp-change-event-data),
player-item-held-event(player-item-held-event-data),
player-changed-main-hand-event(player-changed-main-hand-event-data),
player-gamemode-change-event(player-gamemode-change-event-data),
player-custom-payload-event(player-custom-payload-event-data),
player-fish-event(player-fish-event-data),
player-egg-throw-event(player-egg-throw-event-data),
player-interact-unknown-entity-event(player-interact-unknown-entity-event-data),
player-interact-entity-event(player-interact-entity-event-data),
player-interact-event(player-interact-event-data),
player-toggle-sneak-event(player-toggle-sneak-event-data),
player-toggle-flight-event(player-toggle-flight-event-data),
player-toggle-sprint-event(player-toggle-sprint-event-data),
inventory-click-event(inventory-click-event-data),
inventory-close-event(inventory-close-event-data),
block-redstone-event(block-redstone-event-data),
block-break-event(block-break-event-data),
block-burn-event(block-burn-event-data),
block-can-build-event(block-can-build-event-data),
block-grow-event(block-grow-event-data),
block-place-event(block-place-event-data),
dialog-click-action-event(dialog-click-action-event-data),
dialog-show-event(dialog-show-event-data),
dialog-clear-event(dialog-clear-event-data),
bedrock-form-response-event(bedrock-form-response-event-data),
server-command-event(server-command-event-data),
server-list-ping-event(server-list-ping-event-data),
server-load-event(server-load-event-data),
spawn-change-event(spawn-change-event-data),
server-broadcast-event(server-broadcast-event-data),
server-tick-start-event(server-tick-start-event-data),
server-tick-end-event(server-tick-end-event-data),
packet-received-event(packet-received-event-data),
packet-sent-event(packet-sent-event-data),
chunk-load-event(chunk-load-event-data),
chunk-save-event(chunk-save-event-data),
chunk-send-event(chunk-send-event-data),
entity-damage-event(entity-damage-event-data),
entity-death-event(entity-death-event-data),
player-death-event(player-death-event-data),
entity-spawn-event(entity-spawn-event-data),
entity-combust-event(entity-combust-event-data),
entity-regain-health-event(entity-regain-health-event-data),
entity-air-change-event(entity-air-change-event-data),
entity-breed-event(entity-breed-event-data),
entity-dismount-event(entity-dismount-event-data),
entity-dye-event(entity-dye-event-data),
entity-enter-love-mode-event(entity-enter-love-mode-event-data),
entity-explode-event(entity-explode-event-data),
entity-mount-event(entity-mount-event-data),
entity-pickup-item-event(entity-pickup-item-event-data),
entity-portal-event(entity-portal-event-data),
entity-resurrect-event(entity-resurrect-event-data),
entity-shoot-bow-event(entity-shoot-bow-event-data),
entity-tame-event(entity-tame-event-data),
entity-target-event(entity-target-event-data),
entity-teleport-event(entity-teleport-event-data),
entity-toggle-glide-event(entity-toggle-glide-event-data),
entity-transform-event(entity-transform-event-data),
player-item-consume-event(player-item-consume-event-data),
player-item-damage-event(player-item-damage-event-data),
player-drop-item-event(player-drop-item-event-data),
player-bed-enter-event(player-bed-enter-event-data),
player-bed-leave-event(player-bed-leave-event-data),
player-bucket-empty-event(player-bucket-empty-event-data),
player-bucket-fill-event(player-bucket-fill-event-data),
block-damage-event(block-damage-event-data),
block-ignite-event(block-ignite-event-data),
block-from-to-event(block-from-to-event-data),
block-form-event(block-form-event-data),
block-fade-event(block-fade-event-data),
block-dispense-event(block-dispense-event-data),
block-explode-event(block-explode-event-data),
block-physics-event(block-physics-event-data),
block-piston-extend-event(block-piston-extend-event-data),
block-piston-retract-event(block-piston-retract-event-data),
note-play-event(note-play-event-data),
sign-change-event(sign-change-event-data),
sponge-absorb-event(sponge-absorb-event-data),
tnt-prime-event(tnt-prime-event-data),
weather-change-event(weather-change-event-data),
thunder-change-event(thunder-change-event-data),
world-load-event(world-load-event-data),
world-unload-event(world-unload-event-data),
async-structure-generate-event(async-structure-generate-event-data),
async-structure-spawn-event(async-structure-spawn-event-data),
chunk-populate-event(chunk-populate-event-data),
chunk-unload-event(chunk-unload-event-data),
entities-load-event(entities-load-event-data),
entities-unload-event(entities-unload-event-data),
generic-game-event(generic-game-event-data),
loot-generate-event(loot-generate-event-data),
portal-create-event(portal-create-event-data),
structure-grow-event(structure-grow-event-data),
time-skip-event(time-skip-event-data),
world-init-event(world-init-event-data),
world-save-event(world-save-event-data),
inventory-open-event(inventory-open-event-data),
inventory-drag-event(inventory-drag-event-data),
craft-item-event(craft-item-event-data),
furnace-smelt-event(furnace-smelt-event-data),
brew-event(brew-event-data),
brewing-stand-fuel-event(brewing-stand-fuel-event-data),
furnace-burn-event(furnace-burn-event-data),
furnace-extract-event(furnace-extract-event-data),
furnace-start-smelt-event(furnace-start-smelt-event-data),
hopper-inventory-search-event(hopper-inventory-search-event-data),
inventory-creative-event(inventory-creative-event-data),
inventory-interact-event(inventory-interact-event-data),
inventory-move-item-event(inventory-move-item-event-data),
inventory-pickup-item-event(inventory-pickup-item-event-data),
prepare-anvil-event(prepare-anvil-event-data),
prepare-grindstone-event(prepare-grindstone-event-data),
prepare-inventory-result-event(prepare-inventory-result-event-data),
prepare-item-craft-event(prepare-item-craft-event-data),
prepare-smithing-event(prepare-smithing-event-data),
smith-item-event(smith-item-event-data),
trade-select-event(trade-select-event-data),
vehicle-block-collision-event(vehicle-block-collision-event-data),
vehicle-collision-event(vehicle-collision-event-data),
vehicle-create-event(vehicle-create-event-data),
vehicle-damage-event(vehicle-damage-event-data),
vehicle-destroy-event(vehicle-destroy-event-data),
vehicle-enter-event(vehicle-enter-event-data),
vehicle-entity-collision-event(vehicle-entity-collision-event-data),
vehicle-exit-event(vehicle-exit-event-data),
vehicle-move-event(vehicle-move-event-data),
vehicle-update-event(vehicle-update-event-data),
prepare-item-enchant-event(prepare-item-enchant-event-data),
enchant-item-event(enchant-item-event-data),
map-initialize-event(map-initialize-event-data),
hanging-break-event(hanging-break-event-data),
hanging-break-by-entity-event(hanging-break-by-entity-event-data),
hanging-place-event(hanging-place-event-data),
bell-resonate-event(bell-resonate-event-data),
bell-ring-event(bell-ring-event-data),
block-brush-event(block-brush-event-data),
block-cook-event(block-cook-event-data),
block-damage-abort-event(block-damage-abort-event-data),
block-dispense-armor-event(block-dispense-armor-event-data),
block-dispense-loot-event(block-dispense-loot-event-data),
block-drop-item-event(block-drop-item-event-data),
block-exp-event(block-exp-event-data),
block-fertilize-event(block-fertilize-event-data),
block-multi-place-event(block-multi-place-event-data),
block-receive-game-event(block-receive-game-event-data),
block-shear-entity-event(block-shear-entity-event-data),
block-spread-event(block-spread-event-data),
brewing-start-event(brewing-start-event-data),
campfire-start-event(campfire-start-event-data),
cauldron-level-change-event(cauldron-level-change-event-data),
crafter-craft-event(crafter-craft-event-data),
entity-block-form-event(entity-block-form-event-data),
fluid-level-change-event(fluid-level-change-event-data),
inventory-block-start-event(inventory-block-start-event-data),
leaves-decay-event(leaves-decay-event-data),
moisture-change-event(moisture-change-event-data),
sculk-bloom-event(sculk-bloom-event-data),
vault-display-item-event(vault-display-item-event-data),
creature-spawn-event(creature-spawn-event-data),
ender-dragon-change-phase-event(ender-dragon-change-phase-event-data),
entity-break-door-event(entity-break-door-event-data),
entity-change-block-event(entity-change-block-event-data),
entity-damage-by-block-event(entity-damage-by-block-event-data),
entity-damage-by-entity-event(entity-damage-by-entity-event-data),
entity-drop-item-event(entity-drop-item-event-data),
entity-enter-block-event(entity-enter-block-event-data),
entity-exhaustion-event(entity-exhaustion-event-data),
entity-interact-event(entity-interact-event-data),
entity-knockback-event(entity-knockback-event-data),
entity-place-event(entity-place-event-data),
entity-pose-change-event(entity-pose-change-event-data),
entity-potion-effect-event(entity-potion-effect-event-data),
entity-spell-cast-event(entity-spell-cast-event-data),
entity-target-living-entity-event(entity-target-living-entity-event-data),
entity-toggle-swim-event(entity-toggle-swim-event-data),
explosion-prime-event(explosion-prime-event-data),
firework-explode-event(firework-explode-event-data),
food-level-change-event(food-level-change-event-data),
item-despawn-event(item-despawn-event-data),
item-merge-event(item-merge-event-data),
item-spawn-event(item-spawn-event-data),
piglin-barter-event(piglin-barter-event-data),
projectile-hit-event(projectile-hit-event-data),
projectile-launch-event(projectile-launch-event-data),
sheep-dye-wool-event(sheep-dye-wool-event-data),
sheep-regrow-wool-event(sheep-regrow-wool-event-data),
slime-split-event(slime-split-event-data),
strider-temperature-change-event(strider-temperature-change-event-data),
villager-acquire-trade-event(villager-acquire-trade-event-data),
villager-career-change-event(villager-career-change-event-data),
villager-replenish-trade-event(villager-replenish-trade-event-data),
warden-anger-change-event(warden-anger-change-event-data),
area-effect-cloud-apply-event(area-effect-cloud-apply-event-data),
arrow-body-count-change-event(arrow-body-count-change-event-data),
bat-toggle-sleep-event(bat-toggle-sleep-event-data),
creeper-power-event(creeper-power-event-data),
entity-combust-by-block-event(entity-combust-by-block-event-data),
entity-combust-by-entity-event(entity-combust-by-entity-event-data),
entity-knockback-by-entity-event(entity-knockback-by-entity-event-data),
entity-portal-enter-event(entity-portal-enter-event-data),
entity-portal-exit-event(entity-portal-exit-event-data),
entity-remove-event(entity-remove-event-data),
entity-target-block-event(entity-target-block-event-data),
entity-unleash-event(entity-unleash-event-data),
exp-bottle-event(exp-bottle-event-data),
horse-jump-event(horse-jump-event-data),
lingering-potion-splash-event(lingering-potion-splash-event-data),
pig-zap-event(pig-zap-event-data),
pig-zombie-anger-event(pig-zombie-anger-event-data),
potion-splash-event(potion-splash-event-data),
spawner-spawn-event(spawner-spawn-event-data),
trial-spawner-spawn-event(trial-spawner-spawn-event-data),
villager-reputation-change-event(villager-reputation-change-event-data),
async-player-chat-event(async-player-chat-event-data),
async-player-pre-login-event(async-player-pre-login-event-data),
player-advancement-done-event(player-advancement-done-event-data),
player-animation-event(player-animation-event-data),
player-armor-stand-manipulate-event(player-armor-stand-manipulate-event-data),
player-bucket-entity-event(player-bucket-entity-event-data),
player-changed-world-event(player-changed-world-event-data),
player-channel-event(player-channel-event-data),
player-command-preprocess-event(player-command-preprocess-event-data),
player-edit-book-event(player-edit-book-event-data),
player-elytra-boost-event(player-elytra-boost-event-data),
player-exp-cooldown-change-event(player-exp-cooldown-change-event-data),
player-harvest-block-event(player-harvest-block-event-data),
player-hide-entity-event(player-hide-entity-event-data),
player-item-break-event(player-item-break-event-data),
player-item-mend-event(player-item-mend-event-data),
player-kick-event(player-kick-event-data),
player-leash-entity-event(player-leash-entity-event-data),
player-level-change-event(player-level-change-event-data),
player-locale-change-event(player-locale-change-event-data),
player-name-entity-event(player-name-entity-event-data),
player-open-sign-event(player-open-sign-event-data),
player-portal-event(player-portal-event-data),
player-pre-login-event(player-pre-login-event-data),
player-riptide-event(player-riptide-event-data),
player-shear-entity-event(player-shear-entity-event-data),
player-show-entity-event(player-show-entity-event-data),
player-spawn-change-event(player-spawn-change-event-data),
player-statistic-increment-event(player-statistic-increment-event-data),
player-swap-hands-event(player-swap-hands-event-data),
player-take-lectern-book-event(player-take-lectern-book-event-data),
player-unleash-entity-event(player-unleash-entity-event-data),
player-velocity-event(player-velocity-event-data),
player-input-event(player-input-event-data),
player-interact-at-entity-event(player-interact-at-entity-event-data),
player-links-send-event(player-links-send-event-data),
player-pickup-arrow-event(player-pickup-arrow-event-data),
player-recipe-book-click-event(player-recipe-book-click-event-data),
player-recipe-book-settings-change-event(player-recipe-book-settings-change-event-data),
player-recipe-discover-event(player-recipe-discover-event-data),
player-register-channel-event(player-register-channel-event-data),
player-resource-pack-status-event(player-resource-pack-status-event-data),
player-spawn-location-event(player-spawn-location-event-data),
player-unregister-channel-event(player-unregister-channel-event-data),
raid-finish-event(raid-finish-event-data),
raid-spawn-wave-event(raid-spawn-wave-event-data),
raid-stop-event(raid-stop-event-data),
raid-trigger-event(raid-trigger-event-data),
lightning-strike-event(lightning-strike-event-data),
}
}
interface server {
use player.{player, ban-player-options, ban-ip-options, server-link, known-server-link, server-link-label};
use common.{game-mode};
use %world.{%world};
use text.{text-component};
use uuid.{uuid};
use recipe.{recipe-manager};
use enchantments.{enchantment-manager, custom-enchantment};
use permission.{permission-level};
use advancement.{advancement-info};
use datapack.{datapack-manager, datapack-info};
/// Represents an operator entry in the ops configuration.
record op-entry {
uuid: uuid,
name: string,
level: permission-level,
bypasses-player-limit: bool,
}
/// Interface for querying and managing server operators.
resource op-manager {
/// Checks if a player UUID is currently an operator.
is-op: func(id: uuid) -> bool;
/// Retrieves the operator entry for a player UUID, if present.
get-op: func(id: uuid) -> option<op-entry>;
/// Gets the effective permission level for a player UUID (returns zero if not op).
get-permission-level: func(id: uuid) -> permission-level;
/// Grants operator status to a player (online or offline) with the specified level and bypass setting.
op-player: func(name: string, id: uuid, level: permission-level, bypasses-player-limit: bool);
/// Revokes operator status from a player (online or offline). Returns true if the player was previously op.
deop-player: func(id: uuid) -> bool;
/// Returns a list of all operator entries on the server.
list-ops: func() -> list<op-entry>;
}
/// Represents a banned player entry in the ban list.
record banned-player-entry {
uuid: uuid,
name: string,
created: string,
source: string,
expires: option<string>,
reason: string,
}
/// Represents a banned IP entry in the IP ban list.
record banned-ip-entry {
ip: string,
created: string,
source: string,
expires: option<string>,
reason: string,
}
/// Global manager for player and IP bans.
resource ban-manager {
/// Checks if a player UUID is currently banned.
is-player-banned: func(id: uuid) -> bool;
/// Retrieves the ban entry for a player UUID, if banned.
get-player-ban: func(id: uuid) -> option<banned-player-entry>;
/// Bans a player by name and UUID with the specified options (works for online and offline players).
ban-player: func(name: string, id: uuid, options: ban-player-options);
/// Removes a player ban by UUID. Returns true if the player was banned.
unban-player: func(id: uuid) -> bool;
/// Returns all currently active player bans.
list-player-bans: func() -> list<banned-player-entry>;
/// Checks if an IP address is currently banned.
is-ip-banned: func(ip: string) -> bool;
/// Retrieves the ban entry for an IP address, if banned.
get-ip-ban: func(ip: string) -> option<banned-ip-entry>;
/// Bans an IP address with the specified options.
ban-ip: func(ip: string, options: ban-ip-options);
/// Removes an IP ban. Returns true if the IP was banned.
unban-ip: func(ip: string) -> bool;
/// Returns all currently active IP bans.
list-ip-bans: func() -> list<banned-ip-entry>;
}
/// Represents a player entry in the server whitelist.
record whitelist-entry {
uuid: uuid,
name: string,
}
/// Global manager for the server whitelist.
resource whitelist-manager {
/// Returns whether the whitelist is currently enabled.
is-enabled: func() -> bool;
/// Enables or disables the server whitelist. If enabled and enforce-whitelist is set, kicks non-whitelisted players.
set-enabled: func(enabled: bool);
/// Checks if a player UUID is on the whitelist.
is-whitelisted: func(id: uuid) -> bool;
/// Adds a player to the whitelist (online or offline). Returns true if newly added.
add-player: func(name: string, id: uuid) -> bool;
/// Removes a player from the whitelist. Returns true if the player was on the whitelist.
remove-player: func(id: uuid) -> bool;
/// Returns all whitelisted player entries.
list-entries: func() -> list<whitelist-entry>;
}
/// Represents the difficulty setting of a Minecraft server.
enum difficulty {
/// Hostile mobs do not spawn. Players regain health automatically.
peaceful,
/// Hostile mobs deal less damage.
easy,
/// Standard Minecraft difficulty.
normal,
/// Hostile mobs deal more damage.
hard,
}
/// Represents the three main Minecraft dimensions.
enum dimension {
overworld,
nether,
end,
}
record sys-info {
cpu-count: option<u32>,
total-memory: option<u64>,
used-memory: option<u64>,
os-name: option<string>,
os-version: option<string>,
pumpkin-version: string,
}
variant command-sender {
console,
player(player),
}
/// Represents the global server instance.
resource server {
/// Returns system information (CPU, Memory, OS).
/// Fields are returned only if the plugin has the corresponding permissions.
get-sys-info: func() -> sys-info;
/// Returns the current difficulty level of the server.
get-difficulty: func() -> difficulty;
/// Returns the total number of players currently connected to the server.
get-player-count: func() -> u32;
/// Returns the rolling average Milliseconds Per Tick (MSPT).
/// A value below 50.0 is required for a stable 20 TPS.
get-mspt: func() -> f64;
/// Returns the effective Ticks Per Second (TPS).
/// Ideal value is 20.0.
get-tps: func() -> f64;
/// Returns a list of all online players across all worlds.
get-all-players: func() -> list<player>;
/// Searches for a player by their exact name.
get-player-by-name: func(name: string) -> option<player>;
/// Searches for a player by their UUID string.
get-player-by-uuid: func(id: uuid) -> option<player>;
/// Returns a list of all worlds on this server.
get-all-worlds: func() -> list<%world>;
/// Gets a world by its dimension name (e.g., "minecraft:overworld") or custom world name (e.g., "world", "arena_1").
get-world-by-name: func(name: string) -> option<%world>;
/// Checks if a world exists by name or dimension.
has-world: func(name: string) -> bool;
execute-command: func(command: string, sender: command-sender);
/// Creates or loads a world by its name and dimension.
/// If a world with the given name already exists, it will be returned.
create-world: func(name: string, dimension: dimension) -> %world;
/// Unloads and saves a world by its name or dimension.
/// Returns an error if the world cannot be found, is the primary/default world, or still has players inside.
unload-world: func(name: string) -> result<_, string>;
/// Saves all players, player advancements, and loaded worlds to disk.
save-all: func() -> result<_, string>;
/// Returns a list of all online players in a specific world.
get-players-in-world: func(world-ref: %world) -> list<player>;
/// Returns the number of online players in a specific world.
get-player-count-in-world: func(world-ref: %world) -> u32;
/// Broadcasts a system chat message to all players.
broadcast: func(message: string);
/// Deletes a signed chat message from all players' chat windows using its 256-byte signature.
delete-message-by-signature: func(signature: list<u8>);
/// Deletes a signed chat message from all players' chat windows using its signature cache ID.
delete-message-by-id: func(signature-id: s32);
/// Broadcasts a tab list header and footer to all players.
broadcast-tab-list-header-footer: func(header: text-component, footer: text-component);
/// Returns the maximum number of players allowed on the server.
get-max-players: func() -> u32;
/// Returns whether the server is in hardcore mode.
is-hardcore: func() -> bool;
/// Returns whether the server is in online mode (authenticates with Mojang).
is-online-mode: func() -> bool;
/// Returns the server's Message of the Day (MOTD).
get-motd: func() -> string;
/// Returns whether the server has a whitelist enabled.
has-whitelist: func() -> bool;
/// Returns whether the server allows the Nether dimension.
get-allow-nether: func() -> bool;
/// Returns whether the server allows the End dimension.
get-allow-end: func() -> bool;
/// Returns the server's maximum view distance.
get-view-distance: func() -> u8;
/// Returns the server's maximum simulation distance.
get-simulation-distance: func() -> u8;
/// Returns the server's default gamemode.
get-default-gamemode: func() -> game-mode;
/// Returns the recipe manager to register custom recipes.
get-recipe-manager: func() -> recipe-manager;
/// Returns the operator manager to query or modify server operators.
get-op-manager: func() -> op-manager;
/// Returns the global ban manager for querying and modifying player and IP bans.
get-ban-manager: func() -> ban-manager;
/// Returns the global whitelist manager for querying and modifying the server whitelist.
get-whitelist-manager: func() -> whitelist-manager;
/// Returns detailed information about an advancement by its ID (e.g., "minecraft:story/mine_stone" or "story/mine_stone").
get-advancement: func(id: string) -> option<advancement-info>;
/// Returns a list of all registered advancement IDs on the server.
get-all-advancement-ids: func() -> list<string>;
/// Returns the global enchantment manager for registering and querying custom enchantments.
get-enchantment-manager: func() -> enchantment-manager;
/// Returns information about an enchantment by its ID (vanilla or custom).
get-enchantment: func(id: string) -> option<custom-enchantment>;
/// Returns a list of all registered enchantment IDs (custom and vanilla) on the server.
get-all-enchantment-ids: func() -> list<string>;
/// Returns the global datapack manager for inspecting, enabling, disabling, and reloading datapacks.
get-datapack-manager: func() -> datapack-manager;
/// Broadcasts custom server links to all connected players (displayed in the client Esc pause menu in 1.21+).
set-server-links: func(links: list<server-link>);
}
}
interface command {
use %world.{%world, entity};
use player.{player};
use block-entity.{command-block-entity};
use common.{position, block-pos, locale, game-mode};
use item-stack.{item-stack};
use server.{server, difficulty};
use text.{text-component};
variant command-error {
invalid-consumption(option<string>),
invalid-requirement,
permission-denied,
command-failed(text-component),
}
resource command-node {
literal: static func(name: string) -> command-node;
argument: static func(name: string, %type: argument-type) -> command-node;
then: func(node: command-node);
execute-with-handler-id: func(handler-id: u32);
suggest-with-handler-id: func(handler-id: u32);
require-with-handler-id: func(handler-id: u32);
}
record suggestion-request {
input: string,
cursor: u32,
start: u32,
remaining: string,
}
record command-suggestion {
value: string,
tooltip: option<text-component>,
}
record command-suggestions {
start: u32,
length: u32,
values: list<command-suggestion>,
}
record entity-argument {
single: bool,
players-only: bool,
}
variant command-sender-type {
rcon,
console,
player(player),
command-block(tuple<command-block-entity, %world>),
dummy,
}
enum permission-level {
zero,
one,
two,
three,
four,
}
resource command-sender {
get-command-sender-type: func() -> command-sender-type;
get-name: func() -> string;
send-message: func(text: text-component);
send-system-message: func(text: text-component);
send-error: func(text: text-component);
set-success-count: func(count: s32);
is-player: func() -> bool;
is-console: func() -> bool;
as-player: func() -> option<player>;
permission-level: func() -> permission-level;
has-permission-level: func(level: permission-level) -> bool;
has-permission: func(server: borrow<server>, node: string) -> bool;
position: func() -> option<position>;
%world: func() -> option<%world>;
get-locale: func() -> locale;
should-receive-feedback: func() -> bool;
should-broadcast-console-to-ops: func() -> bool;
should-track-output: func() -> bool;
}
enum string-type {
single-word,
quotable,
greedy,
}
variant argument-type {
%bool,
float(tuple<option<f32>, option<f32>>),
double(tuple<option<f64>, option<f64>>),
integer(tuple<option<s32>, option<s32>>),
long(tuple<option<s64>, option<s64>>),
%string(string-type),
entities,
entity,
players,
game-profile,
block-pos,
column-pos,
position3d,
position2d,
block-state,
block-predicate,
item,
item-predicate,
color,
component,
style,
message,
nbt-compound-tag,
nbt-tag,
nbt-path,
objective,
objective-criteria,
operation,
particle,
angle,
rotation,
scoreboard-slot,
score-holder(bool),
swizzle,
team,
item-slot,
resource-location,
mob-effect,
function,
entity-anchor,
int-range,
float-range,
dimension,
gamemode,
difficulty,
time(option<s32>),
%resource(string),
resource-or-tag(string),
resource-or-tag-key(string),
resource-key(string),
template-mirror,
template-rotation,
uuid,
}
enum suggestion-type {
ask-server,
all-recipes,
available-sounds,
available-biomes,
summonable-entities,
}
enum bossbar-color {
pink,
blue,
red,
green,
yellow,
purple,
white,
}
enum bossbar-style {
no-division,
notches6,
notches10,
notches12,
notches20,
}
enum sound-category {
master,
music,
records,
weather,
blocks,
hostile,
neutral,
players,
ambient,
voice,
}
enum entity-anchor {
eyes,
feet,
}
variant number {
%float64(f64),
%float32(f32),
int32(s32),
int64(s64),
}
variant not-in-bounds {
lower-bound(tuple<number, number>),
upper-bound(tuple<number, number>),
}
variant arg {
simple(string),
msg(string),
%bool(bool),
item(string),
item-predicate(string),
resource-location(string),
block(string),
block-predicate(string),
time(s32),
num(result<number, not-in-bounds>),
block-pos(block-pos),
pos3d(tuple<f64, f64, f64>),
pos2d(tuple<f64, f64>),
rotation(tuple<f32, bool, f32, bool>),
gamemode(game-mode),
difficulty(difficulty),
players(list<player>),
particle(string),
text-component(text-component),
bossbar-color(bossbar-color),
bossbar-style(bossbar-style),
sound-category(sound-category),
damage-type(string),
effect(string),
enchantment(string),
advancement(string),
entity-anchor(entity-anchor),
}
resource consumed-args {
get-value: func(key: string) -> arg;
}
resource command {
/// First name is primary, rest are aliases
constructor(names: list<string>, description: string);
then: func(node: command-node);
execute-with-handler-id: func(handler-id: u32);
}
}
/// The core context provided to a plugin during initialization and event handling.
interface context {
use server.{server};
use event.{event-type, event-priority};
use command.{command};
use permission.{permission};
/// Verified marketplace metadata for signed plugins.
record marketplace-metadata {
/// The marketplace base URL where this plugin is registered.
marketplace-url: string,
/// The unique plugin ID on the marketplace.
plugin-id: s64,
/// The canonical plugin name.
plugin-name: string,
/// The semver version string of the plugin.
version: string,
/// Developer ID.
dev-id: s64,
/// Developer display name or username.
dev-name: string,
/// Whether this is a paid marketplace plugin.
is-paid: bool,
/// The buyer / licensee user ID (0 for free/open-source).
user-id: s64,
/// Unique license key issued to the buyer, if paid.
license-key: option<string>,
/// ISO-8601 timestamp of when this binary/license was issued.
issued-at: string,
}
/// A contextual handle for plugin-related operations.
resource context {
/// Registers a handler for a specific event.
///
/// * `handler-id`: Unique ID for the event handler.
/// * `event-type`: The type of event to listen for.
/// * `event-priority`: When this handler should be called relative to others.
/// * `blocking`: Whether the event should wait for this handler to finish.
register-event: func(handler-id: u32, event-type: event-type, event-priority: event-priority, blocking: bool);
/// Registers a new command.
///
/// * `command`: The command definition.
/// * `permission`: The required permission node to execute this command.
register-command: func(command: command, permission: string);
/// Registers a permission node with the server.
register-permission: func(permission: permission) -> result<_, string>;
/// Returns the path to the plugin's private data folder.
get-data-folder: func() -> string;
/// Returns the global server instance.
get-server: func() -> server;
/// Returns verified marketplace metadata if this plugin binary is signed, or none if unsigned.
get-marketplace-metadata: func() -> option<marketplace-metadata>;
}
}
world plugin {
/// --- Host-provided imports ---
/// Provides logging capabilities to the plugin.
import logging;
import common;
import text;
import attributes;
import data-components;
import enchantments;
import item-stack;
import screens;
import inventory;
/// Provides GUI creation and management.
import gui;
/// Provides scoreboard management.
import scoreboard;
import block-entity;
import particles;
import sounds;
import entity-types;
import biomes;
import damage-types;
import game-rules;
import uuid;
import %world;
import permission;
import forms;
import java-dialogs;
import java-packets;
import bedrock-packets;
import status-effect;
import advancement;
import statistics;
import entity-statuses;
import player;
import recipe;
import datapack;
/// Provides global server information and player lookup.
import server;
/// Provides command registration and argument parsing.
import command;
import event;
/// Provides the plugin execution context.
import context;
/// Provides internationalization and translation support.
import i18n;
/// Provides task scheduling for delayed or repeating logic.
import scheduler;
/// Provides entity types and manipulation.
import entity;
/// Provides boss bar creation and management.
import boss-bar;
/// Provides 1 : 1 inter-plugin communication
import ipc;
/// Provides Display and Interaction entities.
import display;
/// Provides game event types.
import game-events;
/// Provides potion types.
import potions;
use context.{context};
use event.{event};
use server.{server as server-instance};
use command.{command-sender, consumed-args, command-error, command-suggestions, suggestion-request};
use %world.{entity, chunk-buffer, generation-phase};
use ipc.{plugin-id, ipc-message};
/// --- Plugin-provided exports ---
/// Called by the host once to initialize the plugin.
/// Internal use only; plugins should use the `register_plugin!` macro.
export init-plugin: func();
/// Called when the plugin is being loaded.
/// Use this to register commands, events, and perform initial setup.
export on-load: func(context: context) -> result<_, string>;
/// Called when the plugin is being unloaded.
/// Use this to save data and clean up resources.
export on-unload: func(context: context) -> result<_, string>;
/// Dispatches an event to the plugin for handling.
export handle-event: func(event-id: u32, server: server-instance, event: event) -> event;
/// Dispatches a command execution to the plugin.
export handle-command: func(command-id: u32, sender: command-sender, server: server-instance, args: consumed-args) -> result<s32, command-error>;
/// Dispatches a command suggestion request to the plugin.
export handle-command-suggestion: func(handler-id: u32, sender: command-sender, server: server-instance, request: suggestion-request) -> command-suggestions;
/// Dispatches a scheduled task execution to the plugin.
export handle-task: func(handler-id: u32, server: server-instance);
/// Processes an incoming message from another plugin if possible, and returns (a possibly empty) response.
export handle-ipc-message: func(sender: plugin-id, message: ipc-message) -> result<ipc-message, string>;
export handle-ai-goal-can-start: func(goal-id: u32, server: server-instance, entity: entity) -> bool;
export handle-ai-goal-should-continue: func(goal-id: u32, server: server-instance, entity: entity) -> bool;
export handle-ai-goal-start: func(goal-id: u32, server: server-instance, entity: entity);
export handle-ai-goal-tick: func(goal-id: u32, server: server-instance, entity: entity);
export handle-ai-goal-stop: func(goal-id: u32, server: server-instance, entity: entity);
/// Dispatches a chunk generation phase to the plugin.
export handle-generate-phase: func(generator-id: u32, phase: generation-phase, chunk: chunk-buffer);
/// Provides plugin metadata (name, version, etc.) to the host.
export metadata;
}