Usage and constraints

Look up a machine only if its chunk is already loaded. Return absence otherwise. Discovery must not force-load a remote factory or create tickets simply because a player opens Crafting.

LoadedBlockAccess

LoadedBlockAccess
package dev.nebulastorage.api.platform

import net.minecraft.core.BlockPos
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.chunk.LevelChunk

/** Server-thread reads that neither load a chunk nor renew Minecraft's implicit UNKNOWN ticket. */
object LoadedBlockAccess {
    fun chunk(level: ServerLevel, position: BlockPos): LevelChunk? {
        check(level.server.isSameThread) { "Loaded block access requires the server thread" }
        return level.chunkSource.getChunkNow(position.x shr 4, position.z shr 4)
    }

    fun entity(level: ServerLevel, position: BlockPos): BlockEntity? = chunk(level, position)?.getBlockEntity(position)
    fun state(level: ServerLevel, position: BlockPos): BlockState? = chunk(level, position)?.getBlockState(position)
}
Source

src/main/kotlin/dev/nebulastorage/api/platform/LoadedBlockAccess.kt; editorial/en.json

43b4d12d69e6033c24fa8c39dac383ef2429b446