Class ExtendedScreenHandlerType<T extends ScreenHandler,D>

java.lang.Object
net.minecraft.screen.ScreenHandlerType<T>
net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType<T,D>
Type Parameters:
T - the type of screen handler created by this type
D - the type of the data
All Implemented Interfaces:
ToggleableFeature

public class ExtendedScreenHandlerType<T extends ScreenHandler,D> extends ScreenHandlerType<T>
A ScreenHandlerType for an extended screen handler that synchronizes additional data to the client when it is opened.

Extended screen handlers can be opened using PlayerEntity.openHandledScreen with an ExtendedScreenHandlerFactory.

Example Link icon

 
 // Data class
 public record OvenData(String label) {
     public static final PacketCodec<RegistryByteBuf, OvenData> PACKET_CODEC = PacketCodec.tuple(
     	PacketCodecs.STRING,
     	OvenData::label,
     	OvenData::new
     );
 }

 // Creating and registering the type
 public static final ExtendedScreenHandlerType<OvenScreenHandler> OVEN =
 	new ExtendedScreenHandlerType((syncId, inventory, data) -> ..., OvenData.PACKET_CODEC);
 Registry.register(Registry.SCREEN_HANDLER, Identifier.of(...), OVEN);

 // Note: remember to also register the screen using vanilla's HandledScreens!

 // Screen handler class
 public class OvenScreenHandler extends ScreenHandler {
 	public OvenScreenHandler(int syncId) {
 		super(MyScreenHandlers.OVEN, syncId);
 	}
 }

 // Opening the extended screen handler
 var factory = new ExtendedScreenHandlerFactory() {
 	...
 };
 player.openHandlerScreen(factory); // only works on ServerPlayerEntity instances