// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.protocol;

import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetNPCDebug;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityLight;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityPickupEnabled;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityScale;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolLaserPointer;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolsSetSoundSet;
import com.hypixel.hytale.protocol.packets.buildertools.PrefabUnselectPrefab;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolHideAnchors;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolShowAnchor;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolLineAction;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolOnUseInteraction;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolGeneralAction;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionToolReplyWithClipboard;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionToolAskForClipboard;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionUpdate;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetTransformationModeState;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolPasteClipboard;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolRotateClipboard;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionTransform;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolStackArea;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolExtrudeAction;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityTransform;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolEntityAction;
import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolArgUpdate;
import com.hypixel.hytale.protocol.packets.world.UpdatePostFxSettings;
import com.hypixel.hytale.protocol.packets.world.UpdateSunSettings;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateModelPreview;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateWeatherPreviewLock;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateSecondsPerGameDay;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorSetGameTime;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUndoRedoReply;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRedoChanges;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUndoChanges;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRebuildCaches;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorExportComplete;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorExportDeleteAssets;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorExportAssetFinalize;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorExportAssetPart;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorExportAssetInitialize;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorExportAssets;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorSubscribeModifiedAssetsChanges;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorModifiedAssetsCount;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorLastModifiedAssets;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchLastModifiedAssets;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorPopupNotification;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorSelectAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorActivateButton;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRequestDatasetReply;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRequestDataset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchAutoCompleteDataReply;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchAutoCompleteData;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorDiscardChanges;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorDeleteAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRenameAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorCreateAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAssetUpdated;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorJsonAssetUpdated;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateJsonAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRequestChildrenListReply;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRequestChildrenList;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAssetListUpdate;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAssetListSetup;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorEnableAssetPack;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorDeleteAssetPack;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorCreateAssetPack;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorUpdateAssetPack;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAssetPackSetup;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchJsonAssetWithParentsReply;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchAssetReply;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchJsonAssetWithParents;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorFetchAsset;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorRenameDirectory;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorDeleteDirectory;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorCreateDirectory;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorSetupAssetTypes;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorSetupSchemas;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorCapabilities;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAuthorization;
import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorInitialize;
import com.hypixel.hytale.protocol.packets.asseteditor.SuccessReply;
import com.hypixel.hytale.protocol.packets.asseteditor.FailureReply;
import com.hypixel.hytale.protocol.packets.interaction.DismountNPC;
import com.hypixel.hytale.protocol.packets.interaction.MountNPC;
import com.hypixel.hytale.protocol.packets.interaction.PlayInteractionFor;
import com.hypixel.hytale.protocol.packets.interaction.CancelInteractionChain;
import com.hypixel.hytale.protocol.packets.interaction.SyncInteractionChains;
import com.hypixel.hytale.protocol.packets.camera.SetFlyCameraMode;
import com.hypixel.hytale.protocol.packets.camera.RequestFlyCameraMode;
import com.hypixel.hytale.protocol.packets.camera.CameraShakeEffect;
import com.hypixel.hytale.protocol.packets.camera.SetServerCamera;
import com.hypixel.hytale.protocol.packets.machinima.UpdateMachinimaScene;
import com.hypixel.hytale.protocol.packets.machinima.SetMachinimaActorModel;
import com.hypixel.hytale.protocol.packets.machinima.RequestMachinimaActorModel;
import com.hypixel.hytale.protocol.packets.serveraccess.SetServerAccess;
import com.hypixel.hytale.protocol.packets.serveraccess.UpdateServerAccess;
import com.hypixel.hytale.protocol.packets.serveraccess.RequestServerAccess;
import com.hypixel.hytale.protocol.packets.worldmap.TeleportToWorldMapPosition;
import com.hypixel.hytale.protocol.packets.worldmap.TeleportToWorldMapMarker;
import com.hypixel.hytale.protocol.packets.worldmap.UpdateWorldMapVisible;
import com.hypixel.hytale.protocol.packets.worldmap.ClearWorldMap;
import com.hypixel.hytale.protocol.packets.worldmap.UpdateWorldMap;
import com.hypixel.hytale.protocol.packets.worldmap.UpdateWorldMapSettings;
import com.hypixel.hytale.protocol.packets.interface_.OpenChatWithCommand;
import com.hypixel.hytale.protocol.packets.interface_.WorldSavingStatus;
import com.hypixel.hytale.protocol.packets.interface_.UpdateLanguage;
import com.hypixel.hytale.protocol.packets.interface_.ResetUserInterfaceState;
import com.hypixel.hytale.protocol.packets.interface_.UpdateVisibleHudComponents;
import com.hypixel.hytale.protocol.packets.interface_.UpdatePortal;
import com.hypixel.hytale.protocol.packets.interface_.UpdateKnownRecipes;
import com.hypixel.hytale.protocol.packets.interface_.UpdateServerPlayerListPing;
import com.hypixel.hytale.protocol.packets.interface_.UpdateServerPlayerList;
import com.hypixel.hytale.protocol.packets.interface_.RemoveFromServerPlayerList;
import com.hypixel.hytale.protocol.packets.interface_.AddToServerPlayerList;
import com.hypixel.hytale.protocol.packets.interface_.ServerInfo;
import com.hypixel.hytale.protocol.packets.interface_.EditorBlocksChange;
import com.hypixel.hytale.protocol.packets.interface_.CustomPageEvent;
import com.hypixel.hytale.protocol.packets.interface_.CustomPage;
import com.hypixel.hytale.protocol.packets.interface_.CustomHud;
import com.hypixel.hytale.protocol.packets.interface_.SetPage;
import com.hypixel.hytale.protocol.packets.interface_.HideEventTitle;
import com.hypixel.hytale.protocol.packets.interface_.ShowEventTitle;
import com.hypixel.hytale.protocol.packets.interface_.KillFeedMessage;
import com.hypixel.hytale.protocol.packets.interface_.Notification;
import com.hypixel.hytale.protocol.packets.interface_.ChatMessage;
import com.hypixel.hytale.protocol.packets.interface_.ServerMessage;
import com.hypixel.hytale.protocol.packets.window.ClientOpenWindow;
import com.hypixel.hytale.protocol.packets.window.SendWindowAction;
import com.hypixel.hytale.protocol.packets.window.CloseWindow;
import com.hypixel.hytale.protocol.packets.window.UpdateWindow;
import com.hypixel.hytale.protocol.packets.window.OpenWindow;
import com.hypixel.hytale.protocol.packets.inventory.InventoryAction;
import com.hypixel.hytale.protocol.packets.inventory.SwitchHotbarBlockSet;
import com.hypixel.hytale.protocol.packets.inventory.SetActiveSlot;
import com.hypixel.hytale.protocol.packets.inventory.SmartMoveItemStack;
import com.hypixel.hytale.protocol.packets.inventory.MoveItemStack;
import com.hypixel.hytale.protocol.packets.inventory.DropItemStack;
import com.hypixel.hytale.protocol.packets.inventory.SmartGiveCreativeItem;
import com.hypixel.hytale.protocol.packets.inventory.DropCreativeItem;
import com.hypixel.hytale.protocol.packets.inventory.SetCreativeItem;
import com.hypixel.hytale.protocol.packets.inventory.UpdatePlayerInventory;
import com.hypixel.hytale.protocol.packets.entities.MountMovement;
import com.hypixel.hytale.protocol.packets.entities.SpawnModelParticles;
import com.hypixel.hytale.protocol.packets.entities.ApplyKnockback;
import com.hypixel.hytale.protocol.packets.entities.ChangeVelocity;
import com.hypixel.hytale.protocol.packets.entities.PlayAnimation;
import com.hypixel.hytale.protocol.packets.entities.EntityUpdates;
import com.hypixel.hytale.protocol.packets.entities.SetEntitySeed;
import com.hypixel.hytale.protocol.packets.world.ServerSetPaused;
import com.hypixel.hytale.protocol.packets.world.SetPaused;
import com.hypixel.hytale.protocol.packets.world.UpdateSleepState;
import com.hypixel.hytale.protocol.packets.world.PlaySoundEventEntity;
import com.hypixel.hytale.protocol.packets.world.PlaySoundEvent3D;
import com.hypixel.hytale.protocol.packets.world.PlaySoundEvent2D;
import com.hypixel.hytale.protocol.packets.world.SpawnBlockParticleSystem;
import com.hypixel.hytale.protocol.packets.world.SpawnParticleSystem;
import com.hypixel.hytale.protocol.packets.world.UpdateEnvironmentMusic;
import com.hypixel.hytale.protocol.packets.world.UpdateEditorWeatherOverride;
import com.hypixel.hytale.protocol.packets.world.UpdateWeather;
import com.hypixel.hytale.protocol.packets.world.ClearEditorTimeOverride;
import com.hypixel.hytale.protocol.packets.world.UpdateEditorTimeOverride;
import com.hypixel.hytale.protocol.packets.world.UpdateTime;
import com.hypixel.hytale.protocol.packets.world.UpdateTimeSettings;
import com.hypixel.hytale.protocol.packets.world.UpdateBlockDamage;
import com.hypixel.hytale.protocol.packets.world.ServerSetFluids;
import com.hypixel.hytale.protocol.packets.world.ServerSetFluid;
import com.hypixel.hytale.protocol.packets.world.ServerSetBlocks;
import com.hypixel.hytale.protocol.packets.world.ServerSetBlock;
import com.hypixel.hytale.protocol.packets.world.SetFluids;
import com.hypixel.hytale.protocol.packets.world.UnloadChunk;
import com.hypixel.hytale.protocol.packets.world.SetChunkEnvironments;
import com.hypixel.hytale.protocol.packets.world.SetChunkTintmap;
import com.hypixel.hytale.protocol.packets.world.SetChunkHeightmap;
import com.hypixel.hytale.protocol.packets.world.SetChunk;
import com.hypixel.hytale.protocol.packets.player.RemoveMapMarker;
import com.hypixel.hytale.protocol.packets.player.UpdateMemoriesFeatureStatus;
import com.hypixel.hytale.protocol.packets.player.ClientPlaceBlock;
import com.hypixel.hytale.protocol.packets.player.SyncPlayerPreferences;
import com.hypixel.hytale.protocol.packets.player.ClearDebugShapes;
import com.hypixel.hytale.protocol.packets.player.DisplayDebug;
import com.hypixel.hytale.protocol.packets.player.ReticleEvent;
import com.hypixel.hytale.protocol.packets.player.DamageInfo;
import com.hypixel.hytale.protocol.packets.player.MouseInteraction;
import com.hypixel.hytale.protocol.packets.player.UpdateMovementSettings;
import com.hypixel.hytale.protocol.packets.player.ClientTeleport;
import com.hypixel.hytale.protocol.packets.player.ClientMovement;
import com.hypixel.hytale.protocol.packets.player.SaveHotbar;
import com.hypixel.hytale.protocol.packets.player.LoadHotbar;
import com.hypixel.hytale.protocol.packets.player.ClientReady;
import com.hypixel.hytale.protocol.packets.player.JoinWorld;
import com.hypixel.hytale.protocol.packets.player.SetBlockPlacementOverride;
import com.hypixel.hytale.protocol.packets.player.SetMovementStates;
import com.hypixel.hytale.protocol.packets.player.SetGameMode;
import com.hypixel.hytale.protocol.packets.player.SetClientId;
import com.hypixel.hytale.protocol.packets.assets.UpdateProjectileConfigs;
import com.hypixel.hytale.protocol.packets.assets.UpdateTagPatterns;
import com.hypixel.hytale.protocol.packets.assets.UpdateFluids;
import com.hypixel.hytale.protocol.packets.assets.UpdateEqualizerEffects;
import com.hypixel.hytale.protocol.packets.assets.UpdateReverbEffects;
import com.hypixel.hytale.protocol.packets.assets.UpdateAudioCategories;
import com.hypixel.hytale.protocol.packets.assets.UpdateSoundSets;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockGroups;
import com.hypixel.hytale.protocol.packets.assets.UpdateCameraShake;
import com.hypixel.hytale.protocol.packets.assets.UpdateViewBobbing;
import com.hypixel.hytale.protocol.packets.assets.UpdateRepulsionConfig;
import com.hypixel.hytale.protocol.packets.assets.UpdateHitboxCollisionConfig;
import com.hypixel.hytale.protocol.packets.assets.UpdateEntityUIComponents;
import com.hypixel.hytale.protocol.packets.assets.UpdateEntityStatTypes;
import com.hypixel.hytale.protocol.packets.assets.UpdateObjectiveTask;
import com.hypixel.hytale.protocol.packets.assets.UntrackObjective;
import com.hypixel.hytale.protocol.packets.assets.TrackOrUpdateObjective;
import com.hypixel.hytale.protocol.packets.assets.UpdateUnarmedInteractions;
import com.hypixel.hytale.protocol.packets.assets.UpdateRootInteractions;
import com.hypixel.hytale.protocol.packets.assets.UpdateInteractions;
import com.hypixel.hytale.protocol.packets.assets.UpdateSoundEvents;
import com.hypixel.hytale.protocol.packets.assets.UpdateTranslations;
import com.hypixel.hytale.protocol.packets.assets.UpdateFluidFX;
import com.hypixel.hytale.protocol.packets.assets.UpdateAmbienceFX;
import com.hypixel.hytale.protocol.packets.assets.UpdateEnvironments;
import com.hypixel.hytale.protocol.packets.assets.UpdateRecipes;
import com.hypixel.hytale.protocol.packets.assets.UpdateResourceTypes;
import com.hypixel.hytale.protocol.packets.assets.UpdateFieldcraftCategories;
import com.hypixel.hytale.protocol.packets.assets.UpdateItemReticles;
import com.hypixel.hytale.protocol.packets.assets.UpdateItemCategories;
import com.hypixel.hytale.protocol.packets.assets.UpdateItemQualities;
import com.hypixel.hytale.protocol.packets.assets.UpdateItems;
import com.hypixel.hytale.protocol.packets.assets.UpdateModelvfxs;
import com.hypixel.hytale.protocol.packets.assets.UpdateItemPlayerAnimations;
import com.hypixel.hytale.protocol.packets.assets.UpdateEntityEffects;
import com.hypixel.hytale.protocol.packets.assets.UpdateParticleSpawners;
import com.hypixel.hytale.protocol.packets.assets.UpdateParticleSystems;
import com.hypixel.hytale.protocol.packets.assets.UpdateTrails;
import com.hypixel.hytale.protocol.packets.assets.UpdateWeathers;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockSets;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockBreakingDecals;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockParticleSets;
import com.hypixel.hytale.protocol.packets.assets.UpdateItemSoundSets;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockSoundSets;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockHitboxes;
import com.hypixel.hytale.protocol.packets.assets.UpdateBlockTypes;
import com.hypixel.hytale.protocol.packets.setup.ServerTags;
import com.hypixel.hytale.protocol.packets.setup.PlayerOptions;
import com.hypixel.hytale.protocol.packets.setup.ViewRadius;
import com.hypixel.hytale.protocol.packets.setup.UpdateFeatures;
import com.hypixel.hytale.protocol.packets.setup.SetTimeDilation;
import com.hypixel.hytale.protocol.packets.setup.SetUpdateRate;
import com.hypixel.hytale.protocol.packets.setup.RequestCommonAssetsRebuild;
import com.hypixel.hytale.protocol.packets.setup.RemoveAssets;
import com.hypixel.hytale.protocol.packets.setup.AssetFinalize;
import com.hypixel.hytale.protocol.packets.setup.AssetPart;
import com.hypixel.hytale.protocol.packets.setup.AssetInitialize;
import com.hypixel.hytale.protocol.packets.setup.RequestAssets;
import com.hypixel.hytale.protocol.packets.setup.WorldLoadFinished;
import com.hypixel.hytale.protocol.packets.setup.WorldLoadProgress;
import com.hypixel.hytale.protocol.packets.setup.WorldSettings;
import com.hypixel.hytale.protocol.packets.auth.ClientReferral;
import com.hypixel.hytale.protocol.packets.auth.PasswordRejected;
import com.hypixel.hytale.protocol.packets.auth.PasswordAccepted;
import com.hypixel.hytale.protocol.packets.auth.PasswordResponse;
import com.hypixel.hytale.protocol.packets.auth.ConnectAccept;
import com.hypixel.hytale.protocol.packets.auth.ServerAuthToken;
import com.hypixel.hytale.protocol.packets.auth.AuthToken;
import com.hypixel.hytale.protocol.packets.auth.AuthGrant;
import com.hypixel.hytale.protocol.packets.auth.Status;
import com.hypixel.hytale.protocol.packets.connection.Pong;
import com.hypixel.hytale.protocol.packets.connection.Ping;
import com.hypixel.hytale.protocol.packets.connection.Disconnect;
import com.hypixel.hytale.protocol.packets.connection.Connect;
import java.util.Collections;
import java.util.HashMap;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.hypixel.hytale.protocol.io.ValidationResult;
import io.netty.buffer.ByteBuf;
import java.util.function.BiFunction;
import java.util.Map;

public final class PacketRegistry
{
    private static final Map<Integer, PacketInfo> BY_ID;
    private static final Map<Integer, PacketInfo> BY_ID_UNMODIFIABLE;
    private static final Map<Class<? extends Packet>, Integer> BY_TYPE;
    
    private PacketRegistry() {
    }
    
    private static void register(final int id, final String name, final Class<? extends Packet> type, final int fixedBlockSize, final int maxSize, final boolean compressed, final BiFunction<ByteBuf, Integer, ValidationResult> validate, final BiFunction<ByteBuf, Integer, Packet> deserialize) {
        final PacketInfo existing = PacketRegistry.BY_ID.get(id);
        if (existing != null) {
            throw new IllegalStateException("Duplicate packet ID " + id + ": '" + name + "' conflicts with '" + existing.name());
        }
        final PacketInfo info = new PacketInfo(id, name, type, fixedBlockSize, maxSize, compressed, validate, deserialize);
        PacketRegistry.BY_ID.put(id, info);
        PacketRegistry.BY_TYPE.put(type, id);
    }
    
    @Nullable
    public static PacketInfo getById(final int id) {
        return PacketRegistry.BY_ID.get(id);
    }
    
    @Nullable
    public static Integer getId(final Class<? extends Packet> type) {
        return PacketRegistry.BY_TYPE.get(type);
    }
    
    @Nonnull
    public static Map<Integer, PacketInfo> all() {
        return PacketRegistry.BY_ID_UNMODIFIABLE;
    }
    
    static {
        BY_ID = new HashMap<Integer, PacketInfo>();
        BY_ID_UNMODIFIABLE = Collections.unmodifiableMap((Map<? extends Integer, ? extends PacketInfo>)PacketRegistry.BY_ID);
        BY_TYPE = new HashMap<Class<? extends Packet>, Integer>();
        register(0, "Connect", Connect.class, 46, 38013, false, Connect::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)Connect::deserialize);
        register(1, "Disconnect", Disconnect.class, 2, 16384007, false, Disconnect::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)Disconnect::deserialize);
        register(2, "Ping", Ping.class, 29, 29, false, Ping::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)Ping::deserialize);
        register(3, "Pong", Pong.class, 20, 20, false, Pong::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)Pong::deserialize);
        register(10, "Status", Status.class, 9, 2587, false, Status::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)Status::deserialize);
        register(11, "AuthGrant", AuthGrant.class, 1, 49171, false, AuthGrant::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AuthGrant::deserialize);
        register(12, "AuthToken", AuthToken.class, 1, 49171, false, AuthToken::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AuthToken::deserialize);
        register(13, "ServerAuthToken", ServerAuthToken.class, 1, 32851, false, ServerAuthToken::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerAuthToken::deserialize);
        register(14, "ConnectAccept", ConnectAccept.class, 1, 70, false, ConnectAccept::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ConnectAccept::deserialize);
        register(15, "PasswordResponse", PasswordResponse.class, 1, 70, false, PasswordResponse::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PasswordResponse::deserialize);
        register(16, "PasswordAccepted", PasswordAccepted.class, 0, 0, false, PasswordAccepted::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PasswordAccepted::deserialize);
        register(17, "PasswordRejected", PasswordRejected.class, 5, 74, false, PasswordRejected::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PasswordRejected::deserialize);
        register(18, "ClientReferral", ClientReferral.class, 1, 5141, false, ClientReferral::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClientReferral::deserialize);
        register(20, "WorldSettings", WorldSettings.class, 5, 1677721600, true, WorldSettings::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)WorldSettings::deserialize);
        register(21, "WorldLoadProgress", WorldLoadProgress.class, 9, 16384014, false, WorldLoadProgress::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)WorldLoadProgress::deserialize);
        register(22, "WorldLoadFinished", WorldLoadFinished.class, 0, 0, false, WorldLoadFinished::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)WorldLoadFinished::deserialize);
        register(23, "RequestAssets", RequestAssets.class, 1, 1677721600, true, RequestAssets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RequestAssets::deserialize);
        register(24, "AssetInitialize", AssetInitialize.class, 4, 2121, false, AssetInitialize::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetInitialize::deserialize);
        register(25, "AssetPart", AssetPart.class, 1, 4096006, true, AssetPart::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetPart::deserialize);
        register(26, "AssetFinalize", AssetFinalize.class, 0, 0, false, AssetFinalize::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetFinalize::deserialize);
        register(27, "RemoveAssets", RemoveAssets.class, 1, 1677721600, false, RemoveAssets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RemoveAssets::deserialize);
        register(28, "RequestCommonAssetsRebuild", RequestCommonAssetsRebuild.class, 0, 0, false, RequestCommonAssetsRebuild::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RequestCommonAssetsRebuild::deserialize);
        register(29, "SetUpdateRate", SetUpdateRate.class, 4, 4, false, SetUpdateRate::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetUpdateRate::deserialize);
        register(30, "SetTimeDilation", SetTimeDilation.class, 4, 4, false, SetTimeDilation::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetTimeDilation::deserialize);
        register(31, "UpdateFeatures", UpdateFeatures.class, 1, 8192006, false, UpdateFeatures::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateFeatures::deserialize);
        register(32, "ViewRadius", ViewRadius.class, 4, 4, false, ViewRadius::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ViewRadius::deserialize);
        register(33, "PlayerOptions", PlayerOptions.class, 1, 327680184, false, PlayerOptions::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PlayerOptions::deserialize);
        register(34, "ServerTags", ServerTags.class, 1, 1677721600, false, ServerTags::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerTags::deserialize);
        register(40, "UpdateBlockTypes", UpdateBlockTypes.class, 10, 1677721600, true, UpdateBlockTypes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockTypes::deserialize);
        register(41, "UpdateBlockHitboxes", UpdateBlockHitboxes.class, 6, 1677721600, true, UpdateBlockHitboxes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockHitboxes::deserialize);
        register(42, "UpdateBlockSoundSets", UpdateBlockSoundSets.class, 6, 1677721600, true, UpdateBlockSoundSets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockSoundSets::deserialize);
        register(43, "UpdateItemSoundSets", UpdateItemSoundSets.class, 6, 1677721600, true, UpdateItemSoundSets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateItemSoundSets::deserialize);
        register(44, "UpdateBlockParticleSets", UpdateBlockParticleSets.class, 2, 1677721600, true, UpdateBlockParticleSets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockParticleSets::deserialize);
        register(45, "UpdateBlockBreakingDecals", UpdateBlockBreakingDecals.class, 2, 1677721600, true, UpdateBlockBreakingDecals::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockBreakingDecals::deserialize);
        register(46, "UpdateBlockSets", UpdateBlockSets.class, 2, 1677721600, true, UpdateBlockSets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockSets::deserialize);
        register(47, "UpdateWeathers", UpdateWeathers.class, 6, 1677721600, true, UpdateWeathers::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateWeathers::deserialize);
        register(48, "UpdateTrails", UpdateTrails.class, 2, 1677721600, true, UpdateTrails::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateTrails::deserialize);
        register(49, "UpdateParticleSystems", UpdateParticleSystems.class, 2, 1677721600, true, UpdateParticleSystems::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateParticleSystems::deserialize);
        register(50, "UpdateParticleSpawners", UpdateParticleSpawners.class, 2, 1677721600, true, UpdateParticleSpawners::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateParticleSpawners::deserialize);
        register(51, "UpdateEntityEffects", UpdateEntityEffects.class, 6, 1677721600, true, UpdateEntityEffects::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEntityEffects::deserialize);
        register(52, "UpdateItemPlayerAnimations", UpdateItemPlayerAnimations.class, 2, 1677721600, true, UpdateItemPlayerAnimations::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateItemPlayerAnimations::deserialize);
        register(53, "UpdateModelvfxs", UpdateModelvfxs.class, 6, 1677721600, true, UpdateModelvfxs::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateModelvfxs::deserialize);
        register(54, "UpdateItems", UpdateItems.class, 4, 1677721600, true, UpdateItems::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateItems::deserialize);
        register(55, "UpdateItemQualities", UpdateItemQualities.class, 6, 1677721600, true, UpdateItemQualities::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateItemQualities::deserialize);
        register(56, "UpdateItemCategories", UpdateItemCategories.class, 2, 1677721600, true, UpdateItemCategories::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateItemCategories::deserialize);
        register(57, "UpdateItemReticles", UpdateItemReticles.class, 6, 1677721600, true, UpdateItemReticles::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateItemReticles::deserialize);
        register(58, "UpdateFieldcraftCategories", UpdateFieldcraftCategories.class, 2, 1677721600, true, UpdateFieldcraftCategories::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateFieldcraftCategories::deserialize);
        register(59, "UpdateResourceTypes", UpdateResourceTypes.class, 2, 1677721600, true, UpdateResourceTypes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateResourceTypes::deserialize);
        register(60, "UpdateRecipes", UpdateRecipes.class, 2, 1677721600, true, UpdateRecipes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateRecipes::deserialize);
        register(61, "UpdateEnvironments", UpdateEnvironments.class, 7, 1677721600, true, UpdateEnvironments::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEnvironments::deserialize);
        register(62, "UpdateAmbienceFX", UpdateAmbienceFX.class, 6, 1677721600, true, UpdateAmbienceFX::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateAmbienceFX::deserialize);
        register(63, "UpdateFluidFX", UpdateFluidFX.class, 6, 1677721600, true, UpdateFluidFX::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateFluidFX::deserialize);
        register(64, "UpdateTranslations", UpdateTranslations.class, 2, 1677721600, true, UpdateTranslations::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateTranslations::deserialize);
        register(65, "UpdateSoundEvents", UpdateSoundEvents.class, 6, 1677721600, true, UpdateSoundEvents::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateSoundEvents::deserialize);
        register(66, "UpdateInteractions", UpdateInteractions.class, 6, 1677721600, true, UpdateInteractions::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateInteractions::deserialize);
        register(67, "UpdateRootInteractions", UpdateRootInteractions.class, 6, 1677721600, true, UpdateRootInteractions::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateRootInteractions::deserialize);
        register(68, "UpdateUnarmedInteractions", UpdateUnarmedInteractions.class, 2, 20480007, true, UpdateUnarmedInteractions::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateUnarmedInteractions::deserialize);
        register(69, "TrackOrUpdateObjective", TrackOrUpdateObjective.class, 1, 1677721600, false, TrackOrUpdateObjective::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)TrackOrUpdateObjective::deserialize);
        register(70, "UntrackObjective", UntrackObjective.class, 16, 16, false, UntrackObjective::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UntrackObjective::deserialize);
        register(71, "UpdateObjectiveTask", UpdateObjectiveTask.class, 21, 16384035, false, UpdateObjectiveTask::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateObjectiveTask::deserialize);
        register(72, "UpdateEntityStatTypes", UpdateEntityStatTypes.class, 6, 1677721600, true, UpdateEntityStatTypes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEntityStatTypes::deserialize);
        register(73, "UpdateEntityUIComponents", UpdateEntityUIComponents.class, 6, 1677721600, true, UpdateEntityUIComponents::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEntityUIComponents::deserialize);
        register(74, "UpdateHitboxCollisionConfig", UpdateHitboxCollisionConfig.class, 6, 36864011, true, UpdateHitboxCollisionConfig::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateHitboxCollisionConfig::deserialize);
        register(75, "UpdateRepulsionConfig", UpdateRepulsionConfig.class, 6, 65536011, true, UpdateRepulsionConfig::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateRepulsionConfig::deserialize);
        register(76, "UpdateViewBobbing", UpdateViewBobbing.class, 2, 1677721600, true, UpdateViewBobbing::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateViewBobbing::deserialize);
        register(77, "UpdateCameraShake", UpdateCameraShake.class, 2, 1677721600, true, UpdateCameraShake::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateCameraShake::deserialize);
        register(78, "UpdateBlockGroups", UpdateBlockGroups.class, 2, 1677721600, true, UpdateBlockGroups::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockGroups::deserialize);
        register(79, "UpdateSoundSets", UpdateSoundSets.class, 6, 1677721600, true, UpdateSoundSets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateSoundSets::deserialize);
        register(80, "UpdateAudioCategories", UpdateAudioCategories.class, 6, 1677721600, true, UpdateAudioCategories::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateAudioCategories::deserialize);
        register(81, "UpdateReverbEffects", UpdateReverbEffects.class, 6, 1677721600, true, UpdateReverbEffects::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateReverbEffects::deserialize);
        register(82, "UpdateEqualizerEffects", UpdateEqualizerEffects.class, 6, 1677721600, true, UpdateEqualizerEffects::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEqualizerEffects::deserialize);
        register(83, "UpdateFluids", UpdateFluids.class, 6, 1677721600, true, UpdateFluids::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateFluids::deserialize);
        register(84, "UpdateTagPatterns", UpdateTagPatterns.class, 6, 1677721600, true, UpdateTagPatterns::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateTagPatterns::deserialize);
        register(85, "UpdateProjectileConfigs", UpdateProjectileConfigs.class, 2, 1677721600, true, UpdateProjectileConfigs::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateProjectileConfigs::deserialize);
        register(100, "SetClientId", SetClientId.class, 4, 4, false, SetClientId::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetClientId::deserialize);
        register(101, "SetGameMode", SetGameMode.class, 1, 1, false, SetGameMode::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetGameMode::deserialize);
        register(102, "SetMovementStates", SetMovementStates.class, 2, 2, false, SetMovementStates::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetMovementStates::deserialize);
        register(103, "SetBlockPlacementOverride", SetBlockPlacementOverride.class, 1, 1, false, SetBlockPlacementOverride::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetBlockPlacementOverride::deserialize);
        register(104, "JoinWorld", JoinWorld.class, 18, 18, false, JoinWorld::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)JoinWorld::deserialize);
        register(105, "ClientReady", ClientReady.class, 2, 2, false, ClientReady::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClientReady::deserialize);
        register(106, "LoadHotbar", LoadHotbar.class, 1, 1, false, LoadHotbar::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)LoadHotbar::deserialize);
        register(107, "SaveHotbar", SaveHotbar.class, 1, 1, false, SaveHotbar::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SaveHotbar::deserialize);
        register(108, "ClientMovement", ClientMovement.class, 153, 153, false, ClientMovement::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClientMovement::deserialize);
        register(109, "ClientTeleport", ClientTeleport.class, 52, 52, false, ClientTeleport::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClientTeleport::deserialize);
        register(110, "UpdateMovementSettings", UpdateMovementSettings.class, 252, 252, false, UpdateMovementSettings::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateMovementSettings::deserialize);
        register(111, "MouseInteraction", MouseInteraction.class, 44, 20480071, false, MouseInteraction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)MouseInteraction::deserialize);
        register(112, "DamageInfo", DamageInfo.class, 29, 32768048, false, DamageInfo::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)DamageInfo::deserialize);
        register(113, "ReticleEvent", ReticleEvent.class, 4, 4, false, ReticleEvent::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ReticleEvent::deserialize);
        register(114, "DisplayDebug", DisplayDebug.class, 19, 32768037, false, DisplayDebug::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)DisplayDebug::deserialize);
        register(115, "ClearDebugShapes", ClearDebugShapes.class, 0, 0, false, ClearDebugShapes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClearDebugShapes::deserialize);
        register(116, "SyncPlayerPreferences", SyncPlayerPreferences.class, 12, 12, false, SyncPlayerPreferences::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SyncPlayerPreferences::deserialize);
        register(117, "ClientPlaceBlock", ClientPlaceBlock.class, 20, 20, false, ClientPlaceBlock::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClientPlaceBlock::deserialize);
        register(118, "UpdateMemoriesFeatureStatus", UpdateMemoriesFeatureStatus.class, 1, 1, false, UpdateMemoriesFeatureStatus::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateMemoriesFeatureStatus::deserialize);
        register(119, "RemoveMapMarker", RemoveMapMarker.class, 1, 16384006, false, RemoveMapMarker::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RemoveMapMarker::deserialize);
        register(131, "SetChunk", SetChunk.class, 13, 12288040, true, SetChunk::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetChunk::deserialize);
        register(132, "SetChunkHeightmap", SetChunkHeightmap.class, 9, 4096014, true, SetChunkHeightmap::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetChunkHeightmap::deserialize);
        register(133, "SetChunkTintmap", SetChunkTintmap.class, 9, 4096014, true, SetChunkTintmap::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetChunkTintmap::deserialize);
        register(134, "SetChunkEnvironments", SetChunkEnvironments.class, 9, 4096014, true, SetChunkEnvironments::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetChunkEnvironments::deserialize);
        register(135, "UnloadChunk", UnloadChunk.class, 8, 8, false, UnloadChunk::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UnloadChunk::deserialize);
        register(136, "SetFluids", SetFluids.class, 13, 4096018, true, SetFluids::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetFluids::deserialize);
        register(140, "ServerSetBlock", ServerSetBlock.class, 19, 19, false, ServerSetBlock::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerSetBlock::deserialize);
        register(141, "ServerSetBlocks", ServerSetBlocks.class, 12, 36864017, false, ServerSetBlocks::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerSetBlocks::deserialize);
        register(142, "ServerSetFluid", ServerSetFluid.class, 17, 17, false, ServerSetFluid::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerSetFluid::deserialize);
        register(143, "ServerSetFluids", ServerSetFluids.class, 12, 28672017, false, ServerSetFluids::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerSetFluids::deserialize);
        register(144, "UpdateBlockDamage", UpdateBlockDamage.class, 21, 21, false, UpdateBlockDamage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateBlockDamage::deserialize);
        register(145, "UpdateTimeSettings", UpdateTimeSettings.class, 10, 10, false, UpdateTimeSettings::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateTimeSettings::deserialize);
        register(146, "UpdateTime", UpdateTime.class, 13, 13, false, UpdateTime::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateTime::deserialize);
        register(147, "UpdateEditorTimeOverride", UpdateEditorTimeOverride.class, 14, 14, false, UpdateEditorTimeOverride::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEditorTimeOverride::deserialize);
        register(148, "ClearEditorTimeOverride", ClearEditorTimeOverride.class, 0, 0, false, ClearEditorTimeOverride::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClearEditorTimeOverride::deserialize);
        register(149, "UpdateWeather", UpdateWeather.class, 8, 8, false, UpdateWeather::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateWeather::deserialize);
        register(150, "UpdateEditorWeatherOverride", UpdateEditorWeatherOverride.class, 4, 4, false, UpdateEditorWeatherOverride::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEditorWeatherOverride::deserialize);
        register(151, "UpdateEnvironmentMusic", UpdateEnvironmentMusic.class, 4, 4, false, UpdateEnvironmentMusic::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateEnvironmentMusic::deserialize);
        register(152, "SpawnParticleSystem", SpawnParticleSystem.class, 44, 16384049, false, SpawnParticleSystem::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SpawnParticleSystem::deserialize);
        register(153, "SpawnBlockParticleSystem", SpawnBlockParticleSystem.class, 30, 30, false, SpawnBlockParticleSystem::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SpawnBlockParticleSystem::deserialize);
        register(154, "PlaySoundEvent2D", PlaySoundEvent2D.class, 13, 13, false, PlaySoundEvent2D::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PlaySoundEvent2D::deserialize);
        register(155, "PlaySoundEvent3D", PlaySoundEvent3D.class, 38, 38, false, PlaySoundEvent3D::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PlaySoundEvent3D::deserialize);
        register(156, "PlaySoundEventEntity", PlaySoundEventEntity.class, 16, 16, false, PlaySoundEventEntity::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PlaySoundEventEntity::deserialize);
        register(157, "UpdateSleepState", UpdateSleepState.class, 36, 65536050, false, UpdateSleepState::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateSleepState::deserialize);
        register(158, "SetPaused", SetPaused.class, 1, 1, false, SetPaused::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetPaused::deserialize);
        register(159, "ServerSetPaused", ServerSetPaused.class, 1, 1, false, ServerSetPaused::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerSetPaused::deserialize);
        register(160, "SetEntitySeed", SetEntitySeed.class, 4, 4, false, SetEntitySeed::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetEntitySeed::deserialize);
        register(161, "EntityUpdates", EntityUpdates.class, 1, 1677721600, true, EntityUpdates::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)EntityUpdates::deserialize);
        register(162, "PlayAnimation", PlayAnimation.class, 6, 32768024, false, PlayAnimation::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PlayAnimation::deserialize);
        register(163, "ChangeVelocity", ChangeVelocity.class, 35, 35, false, ChangeVelocity::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ChangeVelocity::deserialize);
        register(164, "ApplyKnockback", ApplyKnockback.class, 38, 38, false, ApplyKnockback::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ApplyKnockback::deserialize);
        register(165, "SpawnModelParticles", SpawnModelParticles.class, 5, 1677721600, false, SpawnModelParticles::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SpawnModelParticles::deserialize);
        register(166, "MountMovement", MountMovement.class, 59, 59, false, MountMovement::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)MountMovement::deserialize);
        register(170, "UpdatePlayerInventory", UpdatePlayerInventory.class, 2, 1677721600, true, UpdatePlayerInventory::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdatePlayerInventory::deserialize);
        register(171, "SetCreativeItem", SetCreativeItem.class, 9, 16384019, false, SetCreativeItem::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetCreativeItem::deserialize);
        register(172, "DropCreativeItem", DropCreativeItem.class, 0, 16384010, false, DropCreativeItem::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)DropCreativeItem::deserialize);
        register(173, "SmartGiveCreativeItem", SmartGiveCreativeItem.class, 1, 16384011, false, SmartGiveCreativeItem::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SmartGiveCreativeItem::deserialize);
        register(174, "DropItemStack", DropItemStack.class, 12, 12, false, DropItemStack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)DropItemStack::deserialize);
        register(175, "MoveItemStack", MoveItemStack.class, 20, 20, false, MoveItemStack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)MoveItemStack::deserialize);
        register(176, "SmartMoveItemStack", SmartMoveItemStack.class, 13, 13, false, SmartMoveItemStack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SmartMoveItemStack::deserialize);
        register(177, "SetActiveSlot", SetActiveSlot.class, 8, 8, false, SetActiveSlot::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetActiveSlot::deserialize);
        register(178, "SwitchHotbarBlockSet", SwitchHotbarBlockSet.class, 1, 16384006, false, SwitchHotbarBlockSet::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SwitchHotbarBlockSet::deserialize);
        register(179, "InventoryAction", InventoryAction.class, 6, 6, false, InventoryAction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)InventoryAction::deserialize);
        register(200, "OpenWindow", OpenWindow.class, 6, 1677721600, true, OpenWindow::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)OpenWindow::deserialize);
        register(201, "UpdateWindow", UpdateWindow.class, 5, 1677721600, true, UpdateWindow::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateWindow::deserialize);
        register(202, "CloseWindow", CloseWindow.class, 4, 4, false, CloseWindow::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)CloseWindow::deserialize);
        register(203, "SendWindowAction", SendWindowAction.class, 4, 32768027, false, SendWindowAction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SendWindowAction::deserialize);
        register(204, "ClientOpenWindow", ClientOpenWindow.class, 1, 1, false, ClientOpenWindow::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClientOpenWindow::deserialize);
        register(210, "ServerMessage", ServerMessage.class, 2, 1677721600, false, ServerMessage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerMessage::deserialize);
        register(211, "ChatMessage", ChatMessage.class, 1, 16384006, false, ChatMessage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ChatMessage::deserialize);
        register(212, "Notification", Notification.class, 2, 1677721600, false, Notification::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)Notification::deserialize);
        register(213, "KillFeedMessage", KillFeedMessage.class, 1, 1677721600, false, KillFeedMessage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)KillFeedMessage::deserialize);
        register(214, "ShowEventTitle", ShowEventTitle.class, 14, 1677721600, false, ShowEventTitle::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ShowEventTitle::deserialize);
        register(215, "HideEventTitle", HideEventTitle.class, 4, 4, false, HideEventTitle::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)HideEventTitle::deserialize);
        register(216, "SetPage", SetPage.class, 2, 2, false, SetPage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetPage::deserialize);
        register(217, "CustomHud", CustomHud.class, 2, 1677721600, true, CustomHud::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)CustomHud::deserialize);
        register(218, "CustomPage", CustomPage.class, 4, 1677721600, true, CustomPage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)CustomPage::deserialize);
        register(219, "CustomPageEvent", CustomPageEvent.class, 2, 16384007, false, CustomPageEvent::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)CustomPageEvent::deserialize);
        register(222, "EditorBlocksChange", EditorBlocksChange.class, 30, 139264048, true, EditorBlocksChange::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)EditorBlocksChange::deserialize);
        register(223, "ServerInfo", ServerInfo.class, 5, 32768023, false, ServerInfo::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ServerInfo::deserialize);
        register(224, "AddToServerPlayerList", AddToServerPlayerList.class, 1, 1677721600, false, AddToServerPlayerList::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AddToServerPlayerList::deserialize);
        register(225, "RemoveFromServerPlayerList", RemoveFromServerPlayerList.class, 1, 65536006, false, RemoveFromServerPlayerList::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RemoveFromServerPlayerList::deserialize);
        register(226, "UpdateServerPlayerList", UpdateServerPlayerList.class, 1, 131072006, false, UpdateServerPlayerList::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateServerPlayerList::deserialize);
        register(227, "UpdateServerPlayerListPing", UpdateServerPlayerListPing.class, 1, 81920006, false, UpdateServerPlayerListPing::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateServerPlayerListPing::deserialize);
        register(228, "UpdateKnownRecipes", UpdateKnownRecipes.class, 1, 1677721600, false, UpdateKnownRecipes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateKnownRecipes::deserialize);
        register(229, "UpdatePortal", UpdatePortal.class, 6, 16384020, false, UpdatePortal::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdatePortal::deserialize);
        register(230, "UpdateVisibleHudComponents", UpdateVisibleHudComponents.class, 1, 4096006, false, UpdateVisibleHudComponents::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateVisibleHudComponents::deserialize);
        register(231, "ResetUserInterfaceState", ResetUserInterfaceState.class, 0, 0, false, ResetUserInterfaceState::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ResetUserInterfaceState::deserialize);
        register(232, "UpdateLanguage", UpdateLanguage.class, 1, 16384006, false, UpdateLanguage::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateLanguage::deserialize);
        register(233, "WorldSavingStatus", WorldSavingStatus.class, 1, 1, false, WorldSavingStatus::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)WorldSavingStatus::deserialize);
        register(234, "OpenChatWithCommand", OpenChatWithCommand.class, 1, 16384006, false, OpenChatWithCommand::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)OpenChatWithCommand::deserialize);
        register(240, "UpdateWorldMapSettings", UpdateWorldMapSettings.class, 16, 1677721600, false, UpdateWorldMapSettings::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateWorldMapSettings::deserialize);
        register(241, "UpdateWorldMap", UpdateWorldMap.class, 1, 1677721600, true, UpdateWorldMap::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateWorldMap::deserialize);
        register(242, "ClearWorldMap", ClearWorldMap.class, 0, 0, false, ClearWorldMap::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)ClearWorldMap::deserialize);
        register(243, "UpdateWorldMapVisible", UpdateWorldMapVisible.class, 1, 1, false, UpdateWorldMapVisible::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateWorldMapVisible::deserialize);
        register(244, "TeleportToWorldMapMarker", TeleportToWorldMapMarker.class, 1, 16384006, false, TeleportToWorldMapMarker::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)TeleportToWorldMapMarker::deserialize);
        register(245, "TeleportToWorldMapPosition", TeleportToWorldMapPosition.class, 8, 8, false, TeleportToWorldMapPosition::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)TeleportToWorldMapPosition::deserialize);
        register(250, "RequestServerAccess", RequestServerAccess.class, 3, 3, false, RequestServerAccess::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RequestServerAccess::deserialize);
        register(251, "UpdateServerAccess", UpdateServerAccess.class, 2, 1677721600, false, UpdateServerAccess::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateServerAccess::deserialize);
        register(252, "SetServerAccess", SetServerAccess.class, 2, 16384007, false, SetServerAccess::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetServerAccess::deserialize);
        register(260, "RequestMachinimaActorModel", RequestMachinimaActorModel.class, 1, 49152028, false, RequestMachinimaActorModel::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RequestMachinimaActorModel::deserialize);
        register(261, "SetMachinimaActorModel", SetMachinimaActorModel.class, 1, 1677721600, false, SetMachinimaActorModel::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetMachinimaActorModel::deserialize);
        register(262, "UpdateMachinimaScene", UpdateMachinimaScene.class, 6, 36864033, true, UpdateMachinimaScene::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateMachinimaScene::deserialize);
        register(280, "SetServerCamera", SetServerCamera.class, 157, 157, false, SetServerCamera::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetServerCamera::deserialize);
        register(281, "CameraShakeEffect", CameraShakeEffect.class, 9, 9, false, CameraShakeEffect::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)CameraShakeEffect::deserialize);
        register(282, "RequestFlyCameraMode", RequestFlyCameraMode.class, 1, 1, false, RequestFlyCameraMode::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)RequestFlyCameraMode::deserialize);
        register(283, "SetFlyCameraMode", SetFlyCameraMode.class, 1, 1, false, SetFlyCameraMode::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SetFlyCameraMode::deserialize);
        register(290, "SyncInteractionChains", SyncInteractionChains.class, 0, 1677721600, false, SyncInteractionChains::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SyncInteractionChains::deserialize);
        register(291, "CancelInteractionChain", CancelInteractionChain.class, 5, 1038, false, CancelInteractionChain::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)CancelInteractionChain::deserialize);
        register(292, "PlayInteractionFor", PlayInteractionFor.class, 19, 16385065, false, PlayInteractionFor::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PlayInteractionFor::deserialize);
        register(293, "MountNPC", MountNPC.class, 16, 16, false, MountNPC::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)MountNPC::deserialize);
        register(294, "DismountNPC", DismountNPC.class, 0, 0, false, DismountNPC::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)DismountNPC::deserialize);
        register(300, "FailureReply", FailureReply.class, 5, 1677721600, false, FailureReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)FailureReply::deserialize);
        register(301, "SuccessReply", SuccessReply.class, 5, 1677721600, false, SuccessReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)SuccessReply::deserialize);
        register(302, "AssetEditorInitialize", AssetEditorInitialize.class, 0, 0, false, AssetEditorInitialize::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorInitialize::deserialize);
        register(303, "AssetEditorAuthorization", AssetEditorAuthorization.class, 1, 1, false, AssetEditorAuthorization::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorAuthorization::deserialize);
        register(304, "AssetEditorCapabilities", AssetEditorCapabilities.class, 5, 5, false, AssetEditorCapabilities::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorCapabilities::deserialize);
        register(305, "AssetEditorSetupSchemas", AssetEditorSetupSchemas.class, 1, 1677721600, true, AssetEditorSetupSchemas::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorSetupSchemas::deserialize);
        register(306, "AssetEditorSetupAssetTypes", AssetEditorSetupAssetTypes.class, 1, 1677721600, false, AssetEditorSetupAssetTypes::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorSetupAssetTypes::deserialize);
        register(307, "AssetEditorCreateDirectory", AssetEditorCreateDirectory.class, 5, 32768024, false, AssetEditorCreateDirectory::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorCreateDirectory::deserialize);
        register(308, "AssetEditorDeleteDirectory", AssetEditorDeleteDirectory.class, 5, 32768024, false, AssetEditorDeleteDirectory::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorDeleteDirectory::deserialize);
        register(309, "AssetEditorRenameDirectory", AssetEditorRenameDirectory.class, 5, 65536051, false, AssetEditorRenameDirectory::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRenameDirectory::deserialize);
        register(310, "AssetEditorFetchAsset", AssetEditorFetchAsset.class, 6, 32768025, false, AssetEditorFetchAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchAsset::deserialize);
        register(311, "AssetEditorFetchJsonAssetWithParents", AssetEditorFetchJsonAssetWithParents.class, 6, 32768025, false, AssetEditorFetchJsonAssetWithParents::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchJsonAssetWithParents::deserialize);
        register(312, "AssetEditorFetchAssetReply", AssetEditorFetchAssetReply.class, 5, 4096010, false, AssetEditorFetchAssetReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchAssetReply::deserialize);
        register(313, "AssetEditorFetchJsonAssetWithParentsReply", AssetEditorFetchJsonAssetWithParentsReply.class, 5, 1677721600, true, AssetEditorFetchJsonAssetWithParentsReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchJsonAssetWithParentsReply::deserialize);
        register(314, "AssetEditorAssetPackSetup", AssetEditorAssetPackSetup.class, 1, 1677721600, false, AssetEditorAssetPackSetup::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorAssetPackSetup::deserialize);
        register(315, "AssetEditorUpdateAssetPack", AssetEditorUpdateAssetPack.class, 1, 1677721600, false, AssetEditorUpdateAssetPack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUpdateAssetPack::deserialize);
        register(316, "AssetEditorCreateAssetPack", AssetEditorCreateAssetPack.class, 5, 1677721600, false, AssetEditorCreateAssetPack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorCreateAssetPack::deserialize);
        register(317, "AssetEditorDeleteAssetPack", AssetEditorDeleteAssetPack.class, 1, 16384006, false, AssetEditorDeleteAssetPack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorDeleteAssetPack::deserialize);
        register(318, "AssetEditorEnableAssetPack", AssetEditorEnableAssetPack.class, 2, 16384007, false, AssetEditorEnableAssetPack::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorEnableAssetPack::deserialize);
        register(319, "AssetEditorAssetListSetup", AssetEditorAssetListSetup.class, 4, 1677721600, true, AssetEditorAssetListSetup::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorAssetListSetup::deserialize);
        register(320, "AssetEditorAssetListUpdate", AssetEditorAssetListUpdate.class, 1, 1677721600, true, AssetEditorAssetListUpdate::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorAssetListUpdate::deserialize);
        register(321, "AssetEditorRequestChildrenList", AssetEditorRequestChildrenList.class, 1, 32768020, false, AssetEditorRequestChildrenList::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRequestChildrenList::deserialize);
        register(322, "AssetEditorRequestChildrenListReply", AssetEditorRequestChildrenListReply.class, 1, 1677721600, false, AssetEditorRequestChildrenListReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRequestChildrenListReply::deserialize);
        register(323, "AssetEditorUpdateJsonAsset", AssetEditorUpdateJsonAsset.class, 9, 1677721600, true, AssetEditorUpdateJsonAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUpdateJsonAsset::deserialize);
        register(324, "AssetEditorUpdateAsset", AssetEditorUpdateAsset.class, 9, 53248050, false, AssetEditorUpdateAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUpdateAsset::deserialize);
        register(325, "AssetEditorJsonAssetUpdated", AssetEditorJsonAssetUpdated.class, 1, 1677721600, false, AssetEditorJsonAssetUpdated::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorJsonAssetUpdated::deserialize);
        register(326, "AssetEditorAssetUpdated", AssetEditorAssetUpdated.class, 1, 36864033, false, AssetEditorAssetUpdated::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorAssetUpdated::deserialize);
        register(327, "AssetEditorCreateAsset", AssetEditorCreateAsset.class, 10, 53248051, false, AssetEditorCreateAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorCreateAsset::deserialize);
        register(328, "AssetEditorRenameAsset", AssetEditorRenameAsset.class, 5, 65536051, false, AssetEditorRenameAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRenameAsset::deserialize);
        register(329, "AssetEditorDeleteAsset", AssetEditorDeleteAsset.class, 5, 32768024, false, AssetEditorDeleteAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorDeleteAsset::deserialize);
        register(330, "AssetEditorDiscardChanges", AssetEditorDiscardChanges.class, 1, 1677721600, false, AssetEditorDiscardChanges::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorDiscardChanges::deserialize);
        register(331, "AssetEditorFetchAutoCompleteData", AssetEditorFetchAutoCompleteData.class, 5, 32768023, false, AssetEditorFetchAutoCompleteData::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchAutoCompleteData::deserialize);
        register(332, "AssetEditorFetchAutoCompleteDataReply", AssetEditorFetchAutoCompleteDataReply.class, 5, 1677721600, false, AssetEditorFetchAutoCompleteDataReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchAutoCompleteDataReply::deserialize);
        register(333, "AssetEditorRequestDataset", AssetEditorRequestDataset.class, 1, 16384006, false, AssetEditorRequestDataset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRequestDataset::deserialize);
        register(334, "AssetEditorRequestDatasetReply", AssetEditorRequestDatasetReply.class, 1, 1677721600, false, AssetEditorRequestDatasetReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRequestDatasetReply::deserialize);
        register(335, "AssetEditorActivateButton", AssetEditorActivateButton.class, 1, 16384006, false, AssetEditorActivateButton::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorActivateButton::deserialize);
        register(336, "AssetEditorSelectAsset", AssetEditorSelectAsset.class, 1, 32768020, false, AssetEditorSelectAsset::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorSelectAsset::deserialize);
        register(337, "AssetEditorPopupNotification", AssetEditorPopupNotification.class, 2, 1677721600, false, AssetEditorPopupNotification::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorPopupNotification::deserialize);
        register(338, "AssetEditorFetchLastModifiedAssets", AssetEditorFetchLastModifiedAssets.class, 0, 0, false, AssetEditorFetchLastModifiedAssets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorFetchLastModifiedAssets::deserialize);
        register(339, "AssetEditorLastModifiedAssets", AssetEditorLastModifiedAssets.class, 1, 1677721600, false, AssetEditorLastModifiedAssets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorLastModifiedAssets::deserialize);
        register(340, "AssetEditorModifiedAssetsCount", AssetEditorModifiedAssetsCount.class, 4, 4, false, AssetEditorModifiedAssetsCount::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorModifiedAssetsCount::deserialize);
        register(341, "AssetEditorSubscribeModifiedAssetsChanges", AssetEditorSubscribeModifiedAssetsChanges.class, 1, 1, false, AssetEditorSubscribeModifiedAssetsChanges::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorSubscribeModifiedAssetsChanges::deserialize);
        register(342, "AssetEditorExportAssets", AssetEditorExportAssets.class, 1, 1677721600, false, AssetEditorExportAssets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorExportAssets::deserialize);
        register(343, "AssetEditorExportAssetInitialize", AssetEditorExportAssetInitialize.class, 6, 81920066, false, AssetEditorExportAssetInitialize::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorExportAssetInitialize::deserialize);
        register(344, "AssetEditorExportAssetPart", AssetEditorExportAssetPart.class, 1, 4096006, true, AssetEditorExportAssetPart::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorExportAssetPart::deserialize);
        register(345, "AssetEditorExportAssetFinalize", AssetEditorExportAssetFinalize.class, 0, 0, false, AssetEditorExportAssetFinalize::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorExportAssetFinalize::deserialize);
        register(346, "AssetEditorExportDeleteAssets", AssetEditorExportDeleteAssets.class, 1, 1677721600, false, AssetEditorExportDeleteAssets::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorExportDeleteAssets::deserialize);
        register(347, "AssetEditorExportComplete", AssetEditorExportComplete.class, 1, 1677721600, false, AssetEditorExportComplete::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorExportComplete::deserialize);
        register(348, "AssetEditorRebuildCaches", AssetEditorRebuildCaches.class, 5, 5, false, AssetEditorRebuildCaches::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRebuildCaches::deserialize);
        register(349, "AssetEditorUndoChanges", AssetEditorUndoChanges.class, 5, 32768024, false, AssetEditorUndoChanges::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUndoChanges::deserialize);
        register(350, "AssetEditorRedoChanges", AssetEditorRedoChanges.class, 5, 32768024, false, AssetEditorRedoChanges::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorRedoChanges::deserialize);
        register(351, "AssetEditorUndoRedoReply", AssetEditorUndoRedoReply.class, 5, 1677721600, false, AssetEditorUndoRedoReply::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUndoRedoReply::deserialize);
        register(352, "AssetEditorSetGameTime", AssetEditorSetGameTime.class, 14, 14, false, AssetEditorSetGameTime::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorSetGameTime::deserialize);
        register(353, "AssetEditorUpdateSecondsPerGameDay", AssetEditorUpdateSecondsPerGameDay.class, 8, 8, false, AssetEditorUpdateSecondsPerGameDay::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUpdateSecondsPerGameDay::deserialize);
        register(354, "AssetEditorUpdateWeatherPreviewLock", AssetEditorUpdateWeatherPreviewLock.class, 1, 1, false, AssetEditorUpdateWeatherPreviewLock::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUpdateWeatherPreviewLock::deserialize);
        register(355, "AssetEditorUpdateModelPreview", AssetEditorUpdateModelPreview.class, 30, 1677721600, false, AssetEditorUpdateModelPreview::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)AssetEditorUpdateModelPreview::deserialize);
        register(360, "UpdateSunSettings", UpdateSunSettings.class, 8, 8, false, UpdateSunSettings::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdateSunSettings::deserialize);
        register(361, "UpdatePostFxSettings", UpdatePostFxSettings.class, 20, 20, false, UpdatePostFxSettings::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)UpdatePostFxSettings::deserialize);
        register(400, "BuilderToolArgUpdate", BuilderToolArgUpdate.class, 14, 32768032, false, BuilderToolArgUpdate::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolArgUpdate::deserialize);
        register(401, "BuilderToolEntityAction", BuilderToolEntityAction.class, 5, 5, false, BuilderToolEntityAction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolEntityAction::deserialize);
        register(402, "BuilderToolSetEntityTransform", BuilderToolSetEntityTransform.class, 54, 54, false, BuilderToolSetEntityTransform::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSetEntityTransform::deserialize);
        register(403, "BuilderToolExtrudeAction", BuilderToolExtrudeAction.class, 24, 24, false, BuilderToolExtrudeAction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolExtrudeAction::deserialize);
        register(404, "BuilderToolStackArea", BuilderToolStackArea.class, 41, 41, false, BuilderToolStackArea::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolStackArea::deserialize);
        register(405, "BuilderToolSelectionTransform", BuilderToolSelectionTransform.class, 52, 16384057, false, BuilderToolSelectionTransform::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSelectionTransform::deserialize);
        register(406, "BuilderToolRotateClipboard", BuilderToolRotateClipboard.class, 5, 5, false, BuilderToolRotateClipboard::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolRotateClipboard::deserialize);
        register(407, "BuilderToolPasteClipboard", BuilderToolPasteClipboard.class, 12, 12, false, BuilderToolPasteClipboard::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolPasteClipboard::deserialize);
        register(408, "BuilderToolSetTransformationModeState", BuilderToolSetTransformationModeState.class, 1, 1, false, BuilderToolSetTransformationModeState::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSetTransformationModeState::deserialize);
        register(409, "BuilderToolSelectionUpdate", BuilderToolSelectionUpdate.class, 24, 24, false, BuilderToolSelectionUpdate::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSelectionUpdate::deserialize);
        register(410, "BuilderToolSelectionToolAskForClipboard", BuilderToolSelectionToolAskForClipboard.class, 0, 0, false, BuilderToolSelectionToolAskForClipboard::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSelectionToolAskForClipboard::deserialize);
        register(411, "BuilderToolSelectionToolReplyWithClipboard", BuilderToolSelectionToolReplyWithClipboard.class, 1, 139264019, true, BuilderToolSelectionToolReplyWithClipboard::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSelectionToolReplyWithClipboard::deserialize);
        register(412, "BuilderToolGeneralAction", BuilderToolGeneralAction.class, 1, 1, false, BuilderToolGeneralAction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolGeneralAction::deserialize);
        register(413, "BuilderToolOnUseInteraction", BuilderToolOnUseInteraction.class, 57, 57, false, BuilderToolOnUseInteraction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolOnUseInteraction::deserialize);
        register(414, "BuilderToolLineAction", BuilderToolLineAction.class, 24, 24, false, BuilderToolLineAction::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolLineAction::deserialize);
        register(415, "BuilderToolShowAnchor", BuilderToolShowAnchor.class, 12, 12, false, BuilderToolShowAnchor::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolShowAnchor::deserialize);
        register(416, "BuilderToolHideAnchors", BuilderToolHideAnchors.class, 0, 0, false, BuilderToolHideAnchors::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolHideAnchors::deserialize);
        register(417, "PrefabUnselectPrefab", PrefabUnselectPrefab.class, 0, 0, false, PrefabUnselectPrefab::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)PrefabUnselectPrefab::deserialize);
        register(418, "BuilderToolsSetSoundSet", BuilderToolsSetSoundSet.class, 4, 4, false, BuilderToolsSetSoundSet::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolsSetSoundSet::deserialize);
        register(419, "BuilderToolLaserPointer", BuilderToolLaserPointer.class, 36, 36, false, BuilderToolLaserPointer::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolLaserPointer::deserialize);
        register(420, "BuilderToolSetEntityScale", BuilderToolSetEntityScale.class, 8, 8, false, BuilderToolSetEntityScale::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSetEntityScale::deserialize);
        register(421, "BuilderToolSetEntityPickupEnabled", BuilderToolSetEntityPickupEnabled.class, 5, 5, false, BuilderToolSetEntityPickupEnabled::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSetEntityPickupEnabled::deserialize);
        register(422, "BuilderToolSetEntityLight", BuilderToolSetEntityLight.class, 9, 9, false, BuilderToolSetEntityLight::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSetEntityLight::deserialize);
        register(423, "BuilderToolSetNPCDebug", BuilderToolSetNPCDebug.class, 5, 5, false, BuilderToolSetNPCDebug::validateStructure, (BiFunction<ByteBuf, Integer, Packet>)BuilderToolSetNPCDebug::deserialize);
    }
    
    record PacketInfo(int id, @Nonnull String name, @Nonnull Class<? extends Packet> type, int fixedBlockSize, int maxSize, boolean compressed, @Nonnull BiFunction<ByteBuf, Integer, ValidationResult> validate, @Nonnull BiFunction<ByteBuf, Integer, Packet> deserialize) {
        @Nonnull
        public String name() {
            return this.name;
        }
        
        @Nonnull
        public Class<? extends Packet> type() {
            return this.type;
        }
        
        @Nonnull
        public BiFunction<ByteBuf, Integer, ValidationResult> validate() {
            return this.validate;
        }
        
        @Nonnull
        public BiFunction<ByteBuf, Integer, Packet> deserialize() {
            return this.deserialize;
        }
    }
}
