Package org.geysermc.geyser.level
Class WorldManager
java.lang.Object
org.geysermc.geyser.level.WorldManager
- Direct Known Subclasses:
GeyserWorldManager
Class that manages or retrieves various information
from the world. Everything in this class should be
safe to return null or an empty value in the event
that chunk caching or anything of the sort is disabled
on the standalone version of Geyser.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionString @Nullable []getBiomeIdentifiers(boolean withTags)Returns a list of biome identifiers available on the server.abstract intgetBlockAt(GeyserSession session, int x, int y, int z)Gets the Java block state at the specified locationintgetBlockAt(GeyserSession session, org.cloudburstmc.math.vector.Vector3i vector)Gets the Java block state at the specified locationgetBlockAtAsync(GeyserSession session, int x, int y, int z)getBlockAtAsync(GeyserSession session, org.cloudburstmc.math.vector.Vector3i vector)int[]getBlocksAt(GeyserSession session, org.geysermc.erosion.util.BlockPositionIterator iter)abstract com.github.steveice10.mc.protocol.data.game.entity.player.GameModegetDefaultGameMode(GeyserSession session)Get the default game mode of the serverabstract booleangetGameRuleBool(GeyserSession session, GameRule gameRule)Gets a gamerule value as a booleanabstract intgetGameRuleInt(GeyserSession session, GameRule gameRule)Get a gamerule value as an integer@NonNull CompletableFuture<@Nullable com.github.steveice10.opennbt.tag.builtin.CompoundTag>getPickItemNbt(GeyserSession session, int x, int y, int z, boolean addNbtData)Used for pick block, so we don't need to cache more data than necessary.abstract booleanChecks whether or not this world manager requires a separate chunk cache/has access to more block data than the chunk cache.abstract booleanhasPermission(GeyserSession session, String permission)Checks if the given session's player has a permissionabstract voidsendLecternData(GeyserSession session, int x, int y, int z)Sigh.abstract voidsendLecternData(GeyserSession session, int x, int z, List<com.github.steveice10.mc.protocol.data.game.level.block.BlockEntityInfo> blockEntityInfos)sendLecternData(GeyserSession, int, int, int)but batched for chunks.voidsetDefaultGameMode(GeyserSession session, com.github.steveice10.mc.protocol.data.game.entity.player.GameMode gameMode)Change the default game mode of the session's servervoidsetDifficulty(GeyserSession session, com.github.steveice10.mc.protocol.data.game.setting.Difficulty difficulty)Change the difficulty of the Java servervoidsetGameRule(GeyserSession session, String name, Object value)Updates a gamerule value on the Java servervoidsetPlayerGameMode(GeyserSession session, com.github.steveice10.mc.protocol.data.game.entity.player.GameMode gameMode)Change the game mode of the given sessionabstract booleanshouldExpectLecternHandled(GeyserSession session)
-
Constructor Details
-
WorldManager
public WorldManager()
-
-
Method Details
-
getBlockAt
Gets the Java block state at the specified location- Parameters:
session- the sessionvector- the position- Returns:
- the block state at the specified location
-
getBlockAt
Gets the Java block state at the specified location- Parameters:
session- the sessionx- the x coordinate to get the block aty- the y coordinate to get the block atz- the z coordinate to get the block at- Returns:
- the block state at the specified location
-
getBlockAtAsync
public final CompletableFuture<Integer> getBlockAtAsync(GeyserSession session, org.cloudburstmc.math.vector.Vector3i vector) -
getBlockAtAsync
-
getBlocksAt
public int[] getBlocksAt(GeyserSession session, org.geysermc.erosion.util.BlockPositionIterator iter) -
hasOwnChunkCache
public abstract boolean hasOwnChunkCache()Checks whether or not this world manager requires a separate chunk cache/has access to more block data than the chunk cache.Some world managers (e.g. Spigot) can provide access to block data outside of the chunk cache, and even with chunk caching disabled. This method provides a means to check if this manager has this capability.
- Returns:
- whether or not this world manager has access to more block data than the chunk cache
-
sendLecternData
Sigh.
So, on Java Edition, the lectern is an inventory. Java opens it and gets the contents of the book there. On Bedrock, the lectern contents are part of the block entity tag. Therefore, Bedrock expects to have the contents of the lectern ready and present in the world. If the contents are not there, it takes at least two clicks for the lectern to update the tag and then present itself.
We solve this problem by querying all loaded lecterns, where possible, and sending their information in a block entity tag.Note that the lectern data may be sent asynchronously.
- Parameters:
session- the session of the playerx- the x coordinate of the lecterny- the y coordinate of the lecternz- the z coordinate of the lectern
-
sendLecternData
public abstract void sendLecternData(GeyserSession session, int x, int z, List<com.github.steveice10.mc.protocol.data.game.level.block.BlockEntityInfo> blockEntityInfos)sendLecternData(GeyserSession, int, int, int)but batched for chunks.- Parameters:
x- chunk xz- chunk zblockEntityInfos- a list of coordinates (chunk local) to grab lecterns from.
-
shouldExpectLecternHandled
- Returns:
- whether we should expect lectern data to update, or if we have to fall back on a workaround.
-
setGameRule
Updates a gamerule value on the Java server- Parameters:
session- The session of the user that requested the changename- The gamerule to changevalue- The new value for the gamerule
-
getGameRuleBool
Gets a gamerule value as a boolean- Parameters:
session- The session of the user that requested the valuegameRule- The gamerule to fetch the value of- Returns:
- The boolean representation of the value
-
getGameRuleInt
Get a gamerule value as an integer- Parameters:
session- The session of the user that requested the valuegameRule- The gamerule to fetch the value of- Returns:
- The integer representation of the value
-
setPlayerGameMode
public void setPlayerGameMode(GeyserSession session, com.github.steveice10.mc.protocol.data.game.entity.player.GameMode gameMode)Change the game mode of the given session- Parameters:
session- The session of the player to change the game mode ofgameMode- The game mode to change the player to
-
getDefaultGameMode
public abstract com.github.steveice10.mc.protocol.data.game.entity.player.GameMode getDefaultGameMode(GeyserSession session)Get the default game mode of the server- Parameters:
session- the player requesting the default game mode- Returns:
- the default game mode of the server, or Survival if unknown.
-
setDefaultGameMode
public void setDefaultGameMode(GeyserSession session, com.github.steveice10.mc.protocol.data.game.entity.player.GameMode gameMode)Change the default game mode of the session's server- Parameters:
session- the player making the changegameMode- the new default game mode
-
setDifficulty
public void setDifficulty(GeyserSession session, com.github.steveice10.mc.protocol.data.game.setting.Difficulty difficulty)Change the difficulty of the Java server- Parameters:
session- The session of the user that requested the changedifficulty- The difficulty to change to
-
hasPermission
Checks if the given session's player has a permission- Parameters:
session- The session of the player to check the permission ofpermission- The permission node to check- Returns:
- True if the player has the requested permission, false if not
-
getBiomeIdentifiers
Returns a list of biome identifiers available on the server. -
getPickItemNbt
public @NonNull CompletableFuture<@Nullable com.github.steveice10.opennbt.tag.builtin.CompoundTag> getPickItemNbt(GeyserSession session, int x, int y, int z, boolean addNbtData)Used for pick block, so we don't need to cache more data than necessary.- Returns:
- expected NBT for this item.
-