Los paquetes se encuentran en el código fuente de servidor descompilado:
decompiled/sources/com/hypixel/hytale/protocol/packets
Paquetes de Jugador
Estos paquetes son enviados por el cliente y reflejan acciones, movimientos y actualizaciones de estado del jugador.
| Paquete | ID | Campos |
|---|---|---|
SetClientId | 100 | clientId |
SetGameMode | 101 | gameMode |
SetMovementStates | 102 | movementStates |
SetBlockPlacementOverride | 103 | enabled |
JoinWorld | 104 | clearWorld, fadeInOut, worldUuid |
ClientReady | 105 | readyForChunks, readyForGameplay |
LoadHotbar | 106 | inventoryRow |
SaveHotbar | 107 | inventoryRow |
ClientMovement | 108 | movementStates, relativePosition, absolutePosition, bodyOrientation, lookOrientation, teleportAck, wishMovement, velocity, mountedTo, riderMovementStates |
ClientTeleport | 109 | teleportId, modelTransform, resetVelocity |
UpdateMovementSettings | 110 | movementSettings |
MouseInteraction | 111 | clientTimestamp, activeSlot, itemInHandId, screenPoint, mouseButton, mouseMotion, worldInteraction |
DamageInfo | 112 | damageSourcePosition, damageAmount, damageCause |
ReticleEvent | 113 | eventIndex |
DisplayDebug | 114 | shape, matrix, color, time, fade, frustumProjection |
ClearDebugShapes | 115 | (ninguno) |
SyncPlayerPreferences | 116 | showEntityMarkers, armorItemsPreferredPickupLocation, weaponAndToolItemsPreferredPickupLocation, usableItemsItemsPreferredPickupLocation, solidBlockItemsPreferredPickupLocation, miscItemsPreferredPickupLocation, allowNPCDetection, respondToHit |
ClientPlaceBlock | 117 | position, rotation, placedBlockId |
UpdateMemoriesFeatureStatus | 118 | isFeatureUnlocked |
RemoveMapMarker | 119 | markerId |
Paquetes de Inventario
Estos paquetes son usados por el cliente para gestionar inventario y manipulación de objetos.
| Paquete | ID | Campos |
|---|---|---|
UpdatePlayerInventory | 170 | storage, armor, hotbar, utility, builderMaterial, tools, backpack, sortType |
SetCreativeItem | 171 | inventorySectionId, slotId, item, override |
DropCreativeItem | 172 | item |
SmartGiveCreativeItem | 173 | item, moveType |
DropItemStack | 174 | inventorySectionId, slotId, quantity |
MoveItemStack | 175 | fromSectionId, fromSlotId, quantity, toSectionId, toSlotId |
SmartMoveItemStack | 176 | fromSectionId, fromSlotId, quantity, moveType |
SetActiveSlot | 177 | inventorySectionId, activeSlot |
SwitchHotbarBlockSet | 178 | itemId |
InventoryAction | 179 | inventorySectionId, inventoryActionType, actionData |
Paquetes de Ventanas
Se usan para interacciones con interfaces de usuario y ventanas.
| Paquete | ID | Campos |
|---|---|---|
OpenWindow | 200 | id, windowType, windowData, inventory, extraResources |
UpdateWindow | 201 | id, windowData, inventory, extraResources |
CloseWindow | 202 | id |
SendWindowAction | 203 | id, action |
ClientOpenWindow | 204 | type |
Otros Paquetes del Cliente
Paquetes adicionales enviados desde cliente hacia servidor.
| Paquete | ID | Campos |
|---|---|---|
ClientReferral | 18 | hostTo, data |
SetUpdateRate | 29 | updatesPerSecond |
SetTimeDilation | 30 | timeDilation |
SetChunk | 131 | x, y, z, localLight, globalLight, data |
SetChunkHeightmap | 132 | x, z, heightmap |
SetChunkTintmap | 133 | x, z, tintmap |
SetChunkEnvironments | 134 | x, z, environments |
SetFluids | 136 | x, y, z, data |
SetPaused | 158 | paused |
SetEntitySeed | 160 | entitySeed |
SetPage | 216 | page, canCloseThroughInteraction |
SetServerAccess | 252 | access, password |
SetMachinimaActorModel | 261 | model, sceneName, actorName |
SetServerCamera | 280 | clientCameraView, isLocked, cameraSettings |
SetFlyCameraMode | 283 | entering |
SyncInteractionChains | 290 | updates |
Basado en Hytale Server build 2026.01.13-dcad8778f
Manejo de Paquetes en Hytale
Los paquetes están definidos en com.hypixel.hytale.protocol y organizados por categoría en subpaquetes com.hypixel.hytale.protocol.packets.
El handler de Netty de bajo nivel es com.hypixel.hytale.server.core.io.netty.PlayerChannelHandler, que delega la lógica de procesamiento a PacketAdapters.
No necesitas engancharte directamente a Netty: el servidor tiene un sistema de adaptadores para registrar fácilmente watchers y filters para paquetes entrantes (cliente → servidor) y salientes (servidor → cliente).
Ejemplos prácticos
Imprimir todos los paquetes enviados del servidor al cliente:
PacketAdapters.registerOutbound((PacketHandler handler, Packet packet) -> {
var handlerName = handler.getClass().getSimpleName();
var packetName = packet.getClass().getSimpleName();
if (!"EntityUpdates".equals(packetName) && !"CachedPacket".equals(packetName)) {
logger.at(Level.INFO)
.log("[" + handlerName + "] Sent packet id=" + packet.getId() + ": " + packetName);
}
});
Modificar un paquete entrante para quitar datos de skin:
PacketAdapters.registerInbound((PacketHandler handler, Packet packet) -> {
if (packet instanceof PlayerOptions skinPacket) {
skinPacket.skin = null;
}
});
Bloquear mensajes de chat con malas palabras:
PacketAdapters.registerInbound((PacketHandler handler, Packet packet) -> {
if (packet instanceof ChatMessage chatPacket) {
if (chatPacket.message.contains("bad words"))
return true; // Bloquea el paquete
chatPacket.message = chatPacket.message.replaceAll("a", "A");
}
return false; // Permite continuar
});
Handlers y Paquetes Entrantes
Cada handler gestiona diferentes tipos de paquetes.
Algunos ejemplos son:
- InitialPacketHandler: Connect (0), Disconnect (1)
- HandshakeHandler: Disconnect (1), AuthToken (12)
- PasswordPacketHandler: Disconnect (1), PasswordResponse (15)
- SetupPacketHandler: RequestAssets (23), ViewRadius (32), PlayerOptions (33)
- GamePacketHandler: ClientMovement (108), ChatMessage (211), ClientReady (105), ClientPlaceBlock (117), etc.
- AssetEditorPacketHandler: AssetEditorRequestChildrenList (321), AssetEditorUpdateAsset (324), etc.
- BuilderToolsPacketHandler: LoadHotbar (106), SaveHotbar (107), BuilderToolExtrudeAction (403), etc.
- InventoryPacketHandler: SetCreativeItem (171), DropItemStack (174), InventoryAction (179)
- (la lista completa de paquetes por handler se puede encontrar en el código fuente del server) *
