Interface ImmersiveHandler<S extends NetworkStorage>
- Type Parameters:
S
-
- All Known Subinterfaces:
MultiblockImmersiveHandler<S>
,WorldStorageHandler<S>
- All Known Implementing Classes:
AnvilHandler
,BarrelHandler
,BeaconHandler
,BrewingStandHandler
,ChestHandler
,ChestLikeHandler
,ChiseledBookshelfHandler
,ContainerHandler
,CraftingHandler
,ETableHandler
,FurnaceHandler
,HopperHandler
,IronFurnacesFurnaceHandler
,ItemWorldStorageHandler
,JukeboxHandler
,LecternHandler
,LeverHandler
,RepeaterHandler
,ShulkerBoxHandler
,SmithingTableHandler
,TCCraftingStationHandler
,TrapdoorHandler
public interface ImmersiveHandler<S extends NetworkStorage>
While an
Immersive
defines how a client should work
with a block-based Immersive, an ImmersiveHandler handles both the server-half of a block-based Immersive, along
with the shared, common portion. For example, retrieving what items are stored in a furnace to send to the client
(server-specific) and identifying what a furnace is (common) are both handled in an ImmersiveHandler.-
Method Summary
Modifier and TypeMethodDescriptionboolean
Whether blocks matching this Immersive should be initiated by the client.boolean
enabledInConfig
(net.minecraft.world.entity.player.Player player) net.minecraft.resources.ResourceLocation
getID()
boolean
isDirtyForClientSync
(net.minecraft.server.level.ServerPlayer player, net.minecraft.core.BlockPos pos) Function to determine whether the block has changed its contents to sync to the client since its last sync.boolean
isValidBlock
(net.minecraft.core.BlockPos pos, net.minecraft.world.level.Level level) makeInventoryContents
(net.minecraft.server.level.ServerPlayer player, net.minecraft.core.BlockPos pos) Creates inventory contents on the server to send to clients.default void
onStopTracking
(net.minecraft.server.level.ServerPlayer player, net.minecraft.core.BlockPos pos) Function called whenever this immersive is no longer being tracked.void
swap
(int slot, net.minecraft.world.InteractionHand hand, net.minecraft.core.BlockPos pos, net.minecraft.server.level.ServerPlayer player, ItemSwapAmount amount) Swaps an item from a player's hand into this immersive (and/or vice-versa).
-
Method Details
-
makeInventoryContents
S makeInventoryContents(net.minecraft.server.level.ServerPlayer player, net.minecraft.core.BlockPos pos) Creates inventory contents on the server to send to clients.- Parameters:
player
- Player being sent to.pos
- Position of the block being sent about.- Returns:
- A NetworkStorage to be sent over the network.
-
getEmptyNetworkStorage
S getEmptyNetworkStorage()- Returns:
- A new instance of the same type of NetworkStorage as made with makeInventoryContents(), but in an empty state for purposes such as being decoded into by the client.
-
swap
void swap(int slot, net.minecraft.world.InteractionHand hand, net.minecraft.core.BlockPos pos, net.minecraft.server.level.ServerPlayer player, ItemSwapAmount amount) Swaps an item from a player's hand into this immersive (and/or vice-versa).- Parameters:
slot
- Slot being swapped with in this immersive.hand
- Player's hand being swapped with.pos
- Position of block being swapped with.player
- Player who is swapping.amount
- An object representing the amount of items to swap. UseItemSwapAmount.getNumItemsToSwap(int)
, passing in the item stack size of the item in the player's hand to get the amount of items to swap.
-
isDirtyForClientSync
boolean isDirtyForClientSync(net.minecraft.server.level.ServerPlayer player, net.minecraft.core.BlockPos pos) Function to determine whether the block has changed its contents to sync to the client since its last sync. Dirtiness is addressed every tick, so for every tick, you should clear ALL flags used for dirtiness.- Parameters:
player
- Player to potentially send new data to.pos
- Position of block to check.- Returns:
- Whether the given block has changed since it was last synced to the client
-
isValidBlock
boolean isValidBlock(net.minecraft.core.BlockPos pos, net.minecraft.world.level.Level level) - Parameters:
pos
- Position to check.level
- The level being checked in.- Returns:
- Whether the supplied block matches what this handler handles.
-
enabledInConfig
boolean enabledInConfig(net.minecraft.world.entity.player.Player player) - Parameters:
player
- The player we're checking the config of.- Returns:
- Whether the immersive this handler handles is enabled. If you do not have a configuration system, this should always return true.
-
clientAuthoritative
boolean clientAuthoritative()Whether blocks matching this Immersive should be initiated by the client. If this is true, the server should not send any data to the client about this Immersive.- Returns:
- Whether this immersive should have tracking initiated by the client. The same value should always be returned by this method.
-
getID
net.minecraft.resources.ResourceLocation getID()- Returns:
- A unique ID to identify this handler. The same value should always be returned by this method.
-
onStopTracking
default void onStopTracking(net.minecraft.server.level.ServerPlayer player, net.minecraft.core.BlockPos pos) Function called whenever this immersive is no longer being tracked. Only ever called server-side.- Parameters:
player
- Player who is no longer tracking this immersive.pos
- Position of the block no longer being tracked.
-