Struct ChunkRef
pub struct ChunkRef { /* private fields */ }Expand description
A chunk position in an open level. A handle may be kept after unloading;
reads resolve it again, returning false or None when it is no longer loaded.
Implementations§
§impl ChunkRef
impl ChunkRef
pub fn forced(self, host: &dyn Host) -> Option<bool>
pub fn forced(self, host: &dyn Host) -> Option<bool>
Side: server.
Whether /forceload holds the chunk (ServerLevel.getForcedChunks),
loaded or not; a mod’s own ticket on it does not count. None for a stale handle or on a client.
pub fn loaded(self, host: &dyn Host) -> bool
pub fn loaded(self, host: &dyn Host) -> bool
Side: server. Whether this chunk is loaded; false on a client or for a stale handle.
pub fn status(self, host: &dyn Host) -> Option<ChunkStatus>
pub fn status(self, host: &dyn Host) -> Option<ChunkStatus>
Side: server. The status of a loaded chunk. Proto chunks are not exposed here.
pub fn watchers(self, host: &dyn Host) -> Option<Vec<PlayerRef>>
pub fn watchers(self, host: &dyn Host) -> Option<Vec<PlayerRef>>
Side: server.
ChunkMap.getPlayers(pos, false): the players watching this chunk, those
it is inside the view of and was sent to, in the order the server keeps
its players. A player watches it from its chunk_watch until it leaves
the view; Horizon’s far-ring columns past the view distance are not
watched. Fake players watch nothing. Loaded or not, a chunk nobody
watches gives an empty list. None on a client and for a stale handle.
pub fn set_forced(self, host: &mut dyn ServerHost, forced: bool) -> bool
pub fn set_forced(self, host: &mut dyn ServerHost, forced: bool) -> bool
Side: server.
/forceload add or remove of one chunk (ServerLevel.setChunkForced):
true when the forced set changed. A forced chunk is kept loaded and
entity ticking, saved with the level, and the level keeps ticking
without a player. This is the world’s own /forceload state, not a
ticket the mod owns: the chunk stays forced across restarts, and after
the mod is unloaded or removed, until set_forced(false) or
/forceload remove clears it. Unlike vanilla, the chunk is not loaded before
this returns: it loads over the next ticks, as after /forceload.
False for a stale handle, on a client, and for a level the server
has not opened.
pub fn set_mod_forced(
self,
host: &mut dyn ServerHost,
controller: TicketController,
owner: TicketOwner,
forced: bool,
natural_spawning: bool,
) -> bool
pub fn set_mod_forced( self, host: &mut dyn ServerHost, controller: TicketController, owner: TicketOwner, forced: bool, natural_spawning: bool, ) -> bool
Side: server.
The chunk ticket of controller for owner on chunk
(TicketController.forceChunk): true when the controller’s tickets
changed. The controller must be the calling mod’s own.
A chunk stays forced, entity ticking and saved, and its level keeps
ticking, while any ticket or /forceload holds it. With
natural_spawning the chunk joins the spawning chunks (inhabited
time, thunder, a spawn attempt) while it lies in the spawning area of a
player (ChunkMap.collectSpawningChunks); the local mob cap still lets
mobs spawn only with a non-spectator within 128 blocks. One
owner holds a plain and a natural-spawning ticket on a chunk apart. Tickets are
scoped by (controller, owner, chunk), so two owners in one chunk, or
two controllers, release separately. They are saved in
data/horizon/mod_chunk_tickets.dat under the controller’s id; when
the world loads, those of a controller no loaded mod registers are
discarded. False outside a mod’s hook, for another mod’s controller, on
a client, for a chunk outside the world and for a level the server has
not opened.