pub trait Server {
Show 63 methods
// Required methods
fn broadcast(&self, message: &str);
fn get_block(&self, dimension: &str, pos: BlockPos) -> Option<String>;
fn set_block(&self, dimension: &str, pos: BlockPos, block_id: &str) -> bool;
fn give_item(&self, player: &str, item_id: &str, count: u32) -> bool;
fn teleport(&self, player: &str, x: f64, y: f64, z: f64) -> bool;
fn send_to_player(
&self,
player: &str,
channel: &str,
payload: &[u8],
) -> bool;
fn send_to_server(&self, channel: &str, payload: &[u8]) -> bool;
fn entity_teleport(&self, uuid: &str, x: f64, y: f64, z: f64) -> bool;
fn entity_position(&self, uuid: &str) -> Option<(f64, f64, f64)>;
fn entity_health(&self, uuid: &str) -> Option<f32>;
fn entity_set_health(&self, uuid: &str, health: f32) -> bool;
fn entity_kill(&self, uuid: &str) -> bool;
fn spawn_entity(
&self,
entity_type: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> Option<String>;
fn entity_add_effect(
&self,
uuid: &str,
effect_id: &str,
duration_ticks: i32,
amplifier: u8,
show_particles: bool,
) -> bool;
fn entity_remove_effect(&self, uuid: &str, effect_id: &str) -> bool;
fn entity_clear_effects(&self, uuid: &str) -> bool;
fn drop_loot(
&self,
table_id: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> bool;
fn has_item_tag(&self, item_id: &str, tag_id: &str) -> bool;
fn has_block_tag(&self, block_id: &str, tag_id: &str) -> bool;
fn world_time(&self, dimension: &str) -> Option<i64>;
fn world_set_time(&self, dimension: &str, time: i64) -> bool;
fn world_is_raining(&self, dimension: &str) -> bool;
fn world_set_weather(
&self,
dimension: &str,
raining: bool,
duration_ticks: i32,
) -> bool;
fn entity_velocity(&self, uuid: &str) -> Option<(f64, f64, f64)>;
fn entity_set_velocity(&self, uuid: &str, vx: f64, vy: f64, vz: f64) -> bool;
fn entity_add_velocity(&self, uuid: &str, vx: f64, vy: f64, vz: f64) -> bool;
fn scoreboard_get(&self, objective: &str, player: &str) -> Option<i32>;
fn scoreboard_set(&self, objective: &str, player: &str, score: i32) -> bool;
fn scoreboard_add(
&self,
objective: &str,
player: &str,
delta: i32,
) -> Option<i32>;
fn play_sound(
&self,
dimension: &str,
x: f64,
y: f64,
z: f64,
sound_id: &str,
volume: f32,
pitch: f32,
) -> bool;
fn play_sound_to_player(
&self,
player: &str,
sound_id: &str,
volume: f32,
pitch: f32,
) -> bool;
fn send_title(
&self,
player: &str,
title: &str,
subtitle: &str,
fadein: i32,
stay: i32,
fadeout: i32,
) -> bool;
fn send_actionbar(&self, player: &str, message: &str) -> bool;
fn kick_player(&self, player: &str, reason: &str) -> bool;
fn set_gamemode(&self, player: &str, gamemode: &str) -> bool;
fn bossbar_create(
&self,
id: &str,
title: &str,
color: &str,
style: &str,
) -> bool;
fn bossbar_remove(&self, id: &str) -> bool;
fn bossbar_set_title(&self, id: &str, title: &str) -> bool;
fn bossbar_set_progress(&self, id: &str, progress: f32) -> bool;
fn bossbar_set_color(&self, id: &str, color: &str) -> bool;
fn bossbar_add_player(&self, id: &str, player: &str) -> bool;
fn bossbar_remove_player(&self, id: &str, player: &str) -> bool;
fn bossbar_set_visible(&self, id: &str, visible: bool) -> bool;
fn game_dir(&self) -> String;
fn online_players(&self) -> Vec<String>;
fn get_block_nbt(&self, dimension: &str, pos: BlockPos) -> Option<String>;
fn set_block_nbt(&self, dimension: &str, pos: BlockPos, snbt: &str) -> bool;
fn player_inventory(&self, player: &str) -> Vec<(u32, String, u32)>;
fn player_set_slot(
&self,
player: &str,
slot: u32,
item_id: &str,
count: u32,
) -> bool;
fn teleport_to_dim(
&self,
player: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> bool;
fn entity_teleport_to_dim(
&self,
uuid: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> bool;
fn world_entity_count(&self, dimension: &str, entity_type: &str) -> i32;
fn entity_get_nbt(&self, uuid: &str) -> Option<String>;
fn entity_set_nbt(&self, uuid: &str, snbt: &str) -> bool;
fn spawn_particles(
&self,
dimension: &str,
x: f64,
y: f64,
z: f64,
particle_type: &str,
count: i32,
dx: f64,
dy: f64,
dz: f64,
speed: f64,
) -> bool;
fn entity_attribute_get(
&self,
uuid: &str,
attribute_id: &str,
) -> Option<f64>;
fn entity_attribute_set(
&self,
uuid: &str,
attribute_id: &str,
value: f64,
) -> bool;
fn get_held_item_nbt(&self, player: &str) -> Option<String>;
fn set_held_item_nbt(&self, player: &str, snbt: &str) -> bool;
fn get_offhand_item_nbt(&self, player: &str) -> Option<String>;
fn set_offhand_item_nbt(&self, player: &str, snbt: &str) -> bool;
fn get_slot_item(
&self,
player: &str,
slot: u32,
) -> Option<(String, u32, String)>;
fn set_slot_item(
&self,
player: &str,
slot: u32,
item_id: &str,
count: u32,
snbt: &str,
) -> bool;
}Expand description
Low-level capabilities the Yog runtime exposes to mods (the engine contract).
The runtime provides the concrete implementation, backed by JNI calls into
the Java host; this crate stays JVM-free. Higher-level, ergonomic wrappers
live in the domain crates (e.g. yog-world’s World).
Dimensions are identified by their registry id string, e.g.
"minecraft:overworld".
Required Methods§
Sourcefn get_block(&self, dimension: &str, pos: BlockPos) -> Option<String>
fn get_block(&self, dimension: &str, pos: BlockPos) -> Option<String>
Registry id of the block at pos in dimension
(e.g. "minecraft:stone"), or None if the dimension/position is
unavailable. Call from the server thread (e.g. an event handler).
Sourcefn set_block(&self, dimension: &str, pos: BlockPos, block_id: &str) -> bool
fn set_block(&self, dimension: &str, pos: BlockPos, block_id: &str) -> bool
Set the block at pos in dimension to block_id. Returns whether the
change was applied. Call from the server thread.
Sourcefn give_item(&self, player: &str, item_id: &str, count: u32) -> bool
fn give_item(&self, player: &str, item_id: &str, count: u32) -> bool
Give count of item_id to the named player. Returns whether it worked
(player online, item valid). Call from the server thread.
Sourcefn teleport(&self, player: &str, x: f64, y: f64, z: f64) -> bool
fn teleport(&self, player: &str, x: f64, y: f64, z: f64) -> bool
Teleport the named player to (x, y, z) in their current world. Returns
whether it worked. Call from the server thread.
Sourcefn send_to_player(&self, player: &str, channel: &str, payload: &[u8]) -> bool
fn send_to_player(&self, player: &str, channel: &str, payload: &[u8]) -> bool
Send a raw-byte packet to the named player on channel (server → client).
Returns whether the player was online. Payload is opaque bytes — no NBT.
Sourcefn send_to_server(&self, channel: &str, payload: &[u8]) -> bool
fn send_to_server(&self, channel: &str, payload: &[u8]) -> bool
Send a raw-byte packet to the server on channel (client → server).
Only works in a client context; returns whether it was sent.
Sourcefn entity_teleport(&self, uuid: &str, x: f64, y: f64, z: f64) -> bool
fn entity_teleport(&self, uuid: &str, x: f64, y: f64, z: f64) -> bool
Teleport any entity (by UUID) within its current world.
Sourcefn entity_position(&self, uuid: &str) -> Option<(f64, f64, f64)>
fn entity_position(&self, uuid: &str) -> Option<(f64, f64, f64)>
Position of an entity, or None if not loaded.
Sourcefn entity_health(&self, uuid: &str) -> Option<f32>
fn entity_health(&self, uuid: &str) -> Option<f32>
Health of a living entity, or None.
Sourcefn entity_set_health(&self, uuid: &str, health: f32) -> bool
fn entity_set_health(&self, uuid: &str, health: f32) -> bool
Set a living entity’s health; returns whether it applied.
Sourcefn entity_kill(&self, uuid: &str) -> bool
fn entity_kill(&self, uuid: &str) -> bool
Remove/kill an entity.
Sourcefn spawn_entity(
&self,
entity_type: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> Option<String>
fn spawn_entity( &self, entity_type: &str, dimension: &str, x: f64, y: f64, z: f64, ) -> Option<String>
Spawn an entity of entity_type (e.g. minecraft:pig) at a position;
returns its UUID, or None on failure.
Sourcefn entity_add_effect(
&self,
uuid: &str,
effect_id: &str,
duration_ticks: i32,
amplifier: u8,
show_particles: bool,
) -> bool
fn entity_add_effect( &self, uuid: &str, effect_id: &str, duration_ticks: i32, amplifier: u8, show_particles: bool, ) -> bool
Apply a status effect to a living entity. effect_id is a registry id
such as "minecraft:speed" or "minecraft:regeneration". amplifier is
0-based (0 = level I). Returns false if the entity or effect is unknown.
Sourcefn entity_remove_effect(&self, uuid: &str, effect_id: &str) -> bool
fn entity_remove_effect(&self, uuid: &str, effect_id: &str) -> bool
Remove a single status effect from a living entity.
Sourcefn entity_clear_effects(&self, uuid: &str) -> bool
fn entity_clear_effects(&self, uuid: &str) -> bool
Clear all active status effects from a living entity.
Sourcefn drop_loot(
&self,
table_id: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> bool
fn drop_loot( &self, table_id: &str, dimension: &str, x: f64, y: f64, z: f64, ) -> bool
Roll a loot table and spawn the resulting item entities in the world.
table_id is the namespaced id, e.g. "minecraft:entities/zombie".
Sourcefn has_item_tag(&self, item_id: &str, tag_id: &str) -> bool
fn has_item_tag(&self, item_id: &str, tag_id: &str) -> bool
Returns whether item_id (e.g. "minecraft:stone") belongs to tag_id
(e.g. "minecraft:planks").
Sourcefn has_block_tag(&self, block_id: &str, tag_id: &str) -> bool
fn has_block_tag(&self, block_id: &str, tag_id: &str) -> bool
Returns whether block_id belongs to tag_id.
Sourcefn world_time(&self, dimension: &str) -> Option<i64>
fn world_time(&self, dimension: &str) -> Option<i64>
Game time in ticks since world creation (never wraps, keeps counting).
Sourcefn world_set_time(&self, dimension: &str, time: i64) -> bool
fn world_set_time(&self, dimension: &str, time: i64) -> bool
Set the time-of-day (0 = dawn, 6000 = noon, 12000 = dusk, 18000 = midnight). Only changes the visual time, not the absolute world age.
Sourcefn world_is_raining(&self, dimension: &str) -> bool
fn world_is_raining(&self, dimension: &str) -> bool
Whether it is currently raining in the given dimension.
Sourcefn world_set_weather(
&self,
dimension: &str,
raining: bool,
duration_ticks: i32,
) -> bool
fn world_set_weather( &self, dimension: &str, raining: bool, duration_ticks: i32, ) -> bool
Start or stop rain. duration_ticks controls how long the weather lasts
(use 0 for a server-chosen default duration).
Sourcefn entity_velocity(&self, uuid: &str) -> Option<(f64, f64, f64)>
fn entity_velocity(&self, uuid: &str) -> Option<(f64, f64, f64)>
Current velocity (vx, vy, vz) of any entity, or None if not loaded.
Sourcefn entity_set_velocity(&self, uuid: &str, vx: f64, vy: f64, vz: f64) -> bool
fn entity_set_velocity(&self, uuid: &str, vx: f64, vy: f64, vz: f64) -> bool
Set the velocity of any entity. Returns false if not loaded.
Sourcefn entity_add_velocity(&self, uuid: &str, vx: f64, vy: f64, vz: f64) -> bool
fn entity_add_velocity(&self, uuid: &str, vx: f64, vy: f64, vz: f64) -> bool
Add a velocity impulse (cumulative with existing velocity).
Sourcefn scoreboard_get(&self, objective: &str, player: &str) -> Option<i32>
fn scoreboard_get(&self, objective: &str, player: &str) -> Option<i32>
Score of player on objective, or None if the objective doesn’t exist.
Sourcefn scoreboard_set(&self, objective: &str, player: &str, score: i32) -> bool
fn scoreboard_set(&self, objective: &str, player: &str, score: i32) -> bool
Set the score; returns false if the objective doesn’t exist.
Sourcefn scoreboard_add(
&self,
objective: &str,
player: &str,
delta: i32,
) -> Option<i32>
fn scoreboard_add( &self, objective: &str, player: &str, delta: i32, ) -> Option<i32>
Add delta to the score (negative = subtract). Returns the new score,
or None if the objective doesn’t exist.
Sourcefn play_sound(
&self,
dimension: &str,
x: f64,
y: f64,
z: f64,
sound_id: &str,
volume: f32,
pitch: f32,
) -> bool
fn play_sound( &self, dimension: &str, x: f64, y: f64, z: f64, sound_id: &str, volume: f32, pitch: f32, ) -> bool
Play a sound at (x, y, z) in dimension. sound_id is a registry id
(e.g. "minecraft:entity.player.levelup"). All players within range hear
it. Returns false if the dimension is unknown.
Sourcefn play_sound_to_player(
&self,
player: &str,
sound_id: &str,
volume: f32,
pitch: f32,
) -> bool
fn play_sound_to_player( &self, player: &str, sound_id: &str, volume: f32, pitch: f32, ) -> bool
Play a sound at the named player’s current position. All players nearby
(including the target) hear it. Returns false if the player is offline.
Sourcefn send_title(
&self,
player: &str,
title: &str,
subtitle: &str,
fadein: i32,
stay: i32,
fadeout: i32,
) -> bool
fn send_title( &self, player: &str, title: &str, subtitle: &str, fadein: i32, stay: i32, fadeout: i32, ) -> bool
Send a title+subtitle screen to a player. Pass empty strings to omit either line. Timings are in ticks (20 ticks = 1 second).
Sourcefn send_actionbar(&self, player: &str, message: &str) -> bool
fn send_actionbar(&self, player: &str, message: &str) -> bool
Send a short message to the action-bar (the line just above the hotbar).
Sourcefn kick_player(&self, player: &str, reason: &str) -> bool
fn kick_player(&self, player: &str, reason: &str) -> bool
Disconnect player with the given reason message.
Sourcefn set_gamemode(&self, player: &str, gamemode: &str) -> bool
fn set_gamemode(&self, player: &str, gamemode: &str) -> bool
Change a player’s game mode. gamemode is one of "survival",
"creative", "adventure", "spectator" (or the abbreviations
"s", "c", "a", "sp"). Returns false if the player is offline
or gamemode is unrecognised.
Sourcefn bossbar_create(
&self,
id: &str,
title: &str,
color: &str,
style: &str,
) -> bool
fn bossbar_create( &self, id: &str, title: &str, color: &str, style: &str, ) -> bool
Create a new boss bar identified by id (a namespaced id such as
"mymod:progress"). color: "pink" / "blue" / "red" / "green" /
"yellow" / "purple" / "white". style: "progress" /
"notched_6" / "notched_10" / "notched_12" / "notched_20".
Returns false if a bar with that id already exists.
Sourcefn bossbar_remove(&self, id: &str) -> bool
fn bossbar_remove(&self, id: &str) -> bool
Remove a boss bar (also removes it from all players). Returns false if
the bar doesn’t exist.
Sourcefn bossbar_set_title(&self, id: &str, title: &str) -> bool
fn bossbar_set_title(&self, id: &str, title: &str) -> bool
Update the displayed title of a boss bar.
Sourcefn bossbar_set_progress(&self, id: &str, progress: f32) -> bool
fn bossbar_set_progress(&self, id: &str, progress: f32) -> bool
Set the fill level of a boss bar (0.0 = empty, 1.0 = full).
Sourcefn bossbar_set_color(&self, id: &str, color: &str) -> bool
fn bossbar_set_color(&self, id: &str, color: &str) -> bool
Change the color of a boss bar (same color names as [bossbar_create]).
Sourcefn bossbar_add_player(&self, id: &str, player: &str) -> bool
fn bossbar_add_player(&self, id: &str, player: &str) -> bool
Add an online player to the boss bar’s audience.
Sourcefn bossbar_remove_player(&self, id: &str, player: &str) -> bool
fn bossbar_remove_player(&self, id: &str, player: &str) -> bool
Remove a player from the boss bar’s audience.
Sourcefn bossbar_set_visible(&self, id: &str, visible: bool) -> bool
fn bossbar_set_visible(&self, id: &str, visible: bool) -> bool
Show or hide a boss bar for all its current audience members.
Sourcefn online_players(&self) -> Vec<String>
fn online_players(&self) -> Vec<String>
Names of all currently connected players.
Sourcefn get_block_nbt(&self, dimension: &str, pos: BlockPos) -> Option<String>
fn get_block_nbt(&self, dimension: &str, pos: BlockPos) -> Option<String>
SNBT string of the block entity at pos (e.g. chest contents, furnace
state, sign text). Returns None if there is no block entity there.
Sourcefn set_block_nbt(&self, dimension: &str, pos: BlockPos, snbt: &str) -> bool
fn set_block_nbt(&self, dimension: &str, pos: BlockPos, snbt: &str) -> bool
Write snbt data into the block entity at pos and mark it dirty.
Returns false if there is no block entity at that position.
Sourcefn player_inventory(&self, player: &str) -> Vec<(u32, String, u32)>
fn player_inventory(&self, player: &str) -> Vec<(u32, String, u32)>
All occupied inventory slots of an online player.
Returns one entry per occupied slot: (slot_index, item_id, count).
Sourcefn player_set_slot(
&self,
player: &str,
slot: u32,
item_id: &str,
count: u32,
) -> bool
fn player_set_slot( &self, player: &str, slot: u32, item_id: &str, count: u32, ) -> bool
Set (or clear when count == 0) one inventory slot of an online player.
Sourcefn teleport_to_dim(
&self,
player: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> bool
fn teleport_to_dim( &self, player: &str, dimension: &str, x: f64, y: f64, z: f64, ) -> bool
Teleport a player to (x, y, z) in a different (or same) dimension.
Sourcefn entity_teleport_to_dim(
&self,
uuid: &str,
dimension: &str,
x: f64,
y: f64,
z: f64,
) -> bool
fn entity_teleport_to_dim( &self, uuid: &str, dimension: &str, x: f64, y: f64, z: f64, ) -> bool
Teleport any entity (by UUID) to (x, y, z) in dimension.
Sourcefn world_entity_count(&self, dimension: &str, entity_type: &str) -> i32
fn world_entity_count(&self, dimension: &str, entity_type: &str) -> i32
Number of loaded entities of entity_type (e.g. "minecraft:zombie")
in dimension. Returns -1 if the dimension or entity type is unknown.
Sourcefn entity_get_nbt(&self, uuid: &str) -> Option<String>
fn entity_get_nbt(&self, uuid: &str) -> Option<String>
SNBT string of the entity’s persistent NBT, or None if not found.
Sourcefn entity_set_nbt(&self, uuid: &str, snbt: &str) -> bool
fn entity_set_nbt(&self, uuid: &str, snbt: &str) -> bool
Merge SNBT data into the entity’s persistent NBT. Returns false if not found.
Sourcefn spawn_particles(
&self,
dimension: &str,
x: f64,
y: f64,
z: f64,
particle_type: &str,
count: i32,
dx: f64,
dy: f64,
dz: f64,
speed: f64,
) -> bool
fn spawn_particles( &self, dimension: &str, x: f64, y: f64, z: f64, particle_type: &str, count: i32, dx: f64, dy: f64, dz: f64, speed: f64, ) -> bool
Spawn count particles at (x, y, z) in dimension.
dx/dy/dz control the spatial spread; speed controls particle velocity.
Sourcefn entity_attribute_get(&self, uuid: &str, attribute_id: &str) -> Option<f64>
fn entity_attribute_get(&self, uuid: &str, attribute_id: &str) -> Option<f64>
Get the base value of an attribute on a living entity.
attribute_id e.g. "minecraft:generic.max_health".
Returns None if the entity or attribute is not found.
Sourcefn entity_attribute_set(
&self,
uuid: &str,
attribute_id: &str,
value: f64,
) -> bool
fn entity_attribute_set( &self, uuid: &str, attribute_id: &str, value: f64, ) -> bool
Set the base value of an attribute. Returns false if not found.
Sourcefn get_held_item_nbt(&self, player: &str) -> Option<String>
fn get_held_item_nbt(&self, player: &str) -> Option<String>
SNBT string of the item currently held in the player’s main hand.
Returns None if the player is offline or holding air.
Sourcefn set_held_item_nbt(&self, player: &str, snbt: &str) -> bool
fn set_held_item_nbt(&self, player: &str, snbt: &str) -> bool
Merge snbt data into the NBT of the item in the player’s main hand.
Returns false if the player is offline or holding air.
Sourcefn get_offhand_item_nbt(&self, player: &str) -> Option<String>
fn get_offhand_item_nbt(&self, player: &str) -> Option<String>
SNBT of the item in the player’s off hand.
Returns None if offline or holding air.
Sourcefn set_offhand_item_nbt(&self, player: &str, snbt: &str) -> bool
fn set_offhand_item_nbt(&self, player: &str, snbt: &str) -> bool
Merge snbt into the NBT of the player’s off-hand item.
Returns false if offline or holding air.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".