Compare commits

..

No commits in common. "dev" and "main" have entirely different histories.
dev ... main

247 changed files with 2900 additions and 4870 deletions

View file

@ -1,11 +1,11 @@
[package]
name = "aiocraft"
version = "0.3.0"
version = "1.0.0"
edition = "2021"
[lib]
name = "aiocraft"
path = "src/aiocraft/rs/lib.rs" # The source file of the target.
path = "src/lib.rs" # The source file of the target.
crate-type = ["cdylib"]
[dependencies]

View file

@ -1,46 +1,2 @@
# aiocraft
**an asyncio-driven headless client library for block game with packet definitions**
aiocraft is a collection of types, definitions and utils to build minecraft clients without the official Java implementation
it is built on top of [PrismarineJS/minecraft-data](https://github.com/PrismarineJS/minecraft-data), which contains definitions for all types across all versions
aiocraft provides a raw implementation of a client but it isn't ready to be used, if you're looking for a convenient client library take a look at **[Treepuncher](https://git.alemi.dev/treepuncher.git/about)**
## Packets
the whole Minecraft protocol from `0.30c` to `1.19.3` is compiled and available
feature flags to only include certain protocol versions are planned
all types and packets are instantiable and serializable on all supported protocols:
```py
from aiocraft.proto.play.serverbound import PacketPosition
a_packet = PacketPosition(x=-4.0, y=64.0, z=10.5, onGround=True)
await client.dispatcher.write(a_packet)
```
## Client
an abstract client implementation is provided, but it's supposed to be extended (like in **[Treepuncher](https://git.alemi.dev/treepuncher.git/about)**)
the abstract client implements flows for all game phases and both a `.join()` or a `.info()` method to easily start the login flow
## Types
aiocraft defines these minecraft types:
* `Dimension`
* `Difficulty`
* `Gamemode`
* `GameProfile`
* `Enchantment`
* `BlockPos`
* `Item` (without constants)
* `Texture`
* `Player`
more types are planned but still not generated:
* `Entity`
* `Block`
* `Item` (with constants)
## World
a chunk parser is provided with native code (Rust + PyO3). It is pretty fast but the abstract client doesn't make use of it
An asyncio-driven headless client library for block game

12
aiocraft/__init__.py Normal file
View file

@ -0,0 +1,12 @@
"""aiocraft is an asyncio-driven headless minecraft client"""
# from .client import Client
from .mc import * # TODO move mc out of mc
from .client import MinecraftClient
from .server import MinecraftServer
from .mc.auth import MicrosoftAuthenticator, MojangAuthenticator
from .aiocraft import * # This is needed for PyO3 functions! No clue why or how...
__author__ = "alemidev"
__credits__ = "Thanks to pyCraft, really inspired this"

View file

@ -1,74 +1,77 @@
import asyncio
import logging
import json
import uuid
from dataclasses import dataclass
from asyncio import Task
from enum import Enum
from time import time
from typing import Any, Type
from typing import Dict, List, Callable, Type, Optional, Tuple, AsyncIterator, Any, Set
import dns.resolver
from .dispatcher import Dispatcher
from .auth import AuthInterface, AuthException
from .types import ConnectionState
from .packet import Packet
from .proto.status.serverbound import PacketPing, PacketPingStart
from .proto.status.clientbound import PacketServerInfo, PacketPing as PacketPong
from .proto.handshaking.serverbound import PacketSetProtocol
from .proto.play.serverbound import PacketKeepAlive as PacketKeepAliveResponse
from .proto.play.clientbound import PacketKeepAlive, PacketSetCompression, PacketKickDisconnect
from .proto.login.serverbound import PacketLoginStart, PacketEncryptionBegin as PacketEncryptionResponse
from .proto.login.clientbound import (
from .mc.packet import Packet
from .mc.auth import AuthInterface, AuthException, MojangAuthenticator, MicrosoftAuthenticator
from .mc.definitions import Dimension, Difficulty, Gamemode, ConnectionState
from .mc.proto.status.serverbound import PacketPing, PacketPingStart
from .mc.proto.status.clientbound import PacketServerInfo, PacketPing as PacketPong
from .mc.proto.handshaking.serverbound import PacketSetProtocol
from .mc.proto.play.serverbound import PacketKeepAlive as PacketKeepAliveResponse
from .mc.proto.play.clientbound import PacketKeepAlive, PacketSetCompression, PacketKickDisconnect
from .mc.proto.login.serverbound import PacketLoginStart, PacketEncryptionBegin as PacketEncryptionResponse
from .mc.proto.login.clientbound import (
PacketCompress, PacketDisconnect, PacketEncryptionBegin, PacketLoginPluginRequest, PacketSuccess
)
from .util import encryption, helpers
LOGGER = logging.getLogger(__name__)
class AbstractMinecraftClient:
online_mode: bool
authenticator: AuthInterface
logger: logging.Logger
_dispatcher: Dispatcher | None
_authenticated: bool
_processing: bool
_worker: Task
class MinecraftClient:
online_mode:bool
authenticator:AuthInterface
dispatcher : Dispatcher
logger : logging.Logger
_authenticated : bool
_processing : bool
_worker : Task
def __init__(
self,
server:str,
authenticator:AuthInterface,
online_mode:bool = True,
force_port:int = 0,
resolve_srv:bool = True,
):
self.logger = LOGGER.getChild(f"as({authenticator.selectedProfile.name})")
self.logger = LOGGER.getChild(f"on({server})")
self.online_mode = online_mode
self.authenticator = authenticator
self._authenticated = False
self._processing = False
self._dispatcher = None
def resolve_srv(self, server: str) -> tuple[str, int]:
try:
answ = dns.resolver.resolve(f"_minecraft._tcp.{server}", "SRV")
# TODO can we just use the 1st record?
host = str(answ[0].target).rstrip('.')
port = answ[0].port
return (host, port)
except Exception: # TODO what can I catch? dns.resolver.exception doesn't always exist, wtf
self.logger.warning("Failed resolving SRV record for '%s'", server)
return (server, 25565)
host = server
port = force_port or 25565
if resolve_srv:
try:
answ = dns.resolver.resolve(f"_minecraft._tcp.{server}", "SRV")
# TODO can we just use the 1st record?
host = str(answ[0].target).rstrip('.')
port = answ[0].port
except Exception: # TODO what can I catch? dns.resolver.exception doesn't always exist, wtf
self.logger.warning("Failed resolving SRV record for '%s'", server)
self.dispatcher = Dispatcher().set_host(host, port)
@property
def connected(self) -> bool:
return self._dispatcher is not None and self.dispatcher.connected
return self.dispatcher.connected
@property
def dispatcher(self) -> Dispatcher:
# This is a weird fix to avoid asserting dispatcher is not None in all handlers:
# if i'm receiving a packet callback dispatcher is very likely not None, if I received
# a callback and it's None it's because client is stopping so an exc is ok
if self._dispatcher is None:
raise ValueError("Invalid state: connect first")
return self._dispatcher
async def write(self, packet:Packet, wait:bool=False):
await self.dispatcher.write(packet, wait)
async def authenticate(self):
if self._authenticated:
@ -86,78 +89,46 @@ class AbstractMinecraftClient:
self.logger.info("Logged in")
self._authenticated = True
async def info(
self,
host:str,
port:int=0,
proto:int=0,
ping:bool=False,
log_ignored_packets:bool=False,
whitelist: set[Type[Packet]] = set(),
) -> dict[str, Any]:
async def info(self, host:str="", port:int=0, proto:int=0, ping:bool=False) -> Dict[str, Any]:
"""Make a mini connection to asses server status and version"""
if not port:
host, port = self.resolve_srv(host)
self._dispatcher = Dispatcher(
host=host,
port=port,
proto=proto,
log_ignored_packets=log_ignored_packets,
whitelist=whitelist
)
try:
await self.dispatcher.connect()
await self.dispatcher.set_host(host, port).connect()
await self._handshake(ConnectionState.STATUS)
return await self._status(ping)
finally:
if self.dispatcher.connected:
await self.dispatcher.disconnect()
self._dispatcher = None
async def join(
self,
host:str,
port:int=0,
proto:int=0,
log_ignored_packets:bool=False,
whitelist: set[Type[Packet]]=set(),
):
if not port:
host, port = self.resolve_srv(host)
self._dispatcher = Dispatcher(
host=host,
port=port,
proto=proto,
log_ignored_packets=log_ignored_packets,
whitelist=whitelist,
)
async def join(self, host:str="", port:int=0, proto:int=0):
if self.online_mode:
await self.authenticate()
try:
await self.dispatcher.connect()
await self.dispatcher.set_host(host, port).set_proto(proto).connect()
await self._handshake(ConnectionState.LOGIN)
if await self._login():
await self._play()
finally:
if self.dispatcher.connected:
await self.dispatcher.disconnect()
self._dispatcher = None
async def _handshake(self, state:ConnectionState):
await self.dispatcher.write(
PacketSetProtocol(
protocolVersion=self.dispatcher.proto,
serverHost=self.dispatcher.host,
serverPort=self.dispatcher.port,
self.dispatcher._proto,
protocolVersion=self.dispatcher._proto,
serverHost=self.dispatcher._host,
serverPort=self.dispatcher._port,
nextState=state.value
)
)
async def _status(self, ping:bool=False) -> dict[str, Any]:
self.dispatcher.promote(ConnectionState.STATUS)
await self.dispatcher.write(PacketPingStart()) #empty packet
async def _status(self, ping:bool=False) -> Dict[str, Any]:
self.dispatcher.state = ConnectionState.STATUS
await self.dispatcher.write(
PacketPingStart(self.dispatcher._proto) #empty packet
)
#Response
data : dict[str, Any] = {}
data : Dict[str, Any] = {}
ping_id : int = 0
ping_time : float = 0
async for packet in self.dispatcher.packets():
@ -169,7 +140,10 @@ class AbstractMinecraftClient:
ping_id = int(time())
ping_time = time()
await self.dispatcher.write(
PacketPing(time=ping_id)
PacketPing(
self.dispatcher._proto,
time=ping_id,
)
)
if isinstance(packet, PacketPong):
if packet.time == ping_id:
@ -178,9 +152,12 @@ class AbstractMinecraftClient:
return data
async def _login(self) -> bool:
self.dispatcher.promote(ConnectionState.LOGIN)
self.dispatcher.state = ConnectionState.LOGIN
await self.dispatcher.write(
PacketLoginStart(username=self.authenticator.selectedProfile.name)
PacketLoginStart(
self.dispatcher._proto,
username=self.authenticator.selectedProfile.name
)
)
async for packet in self.dispatcher.packets():
if isinstance(packet, PacketEncryptionBegin):
@ -209,6 +186,7 @@ class AbstractMinecraftClient:
else:
self.logger.warning("Server gave an offline-mode serverId but still requested Encryption")
encryption_response = PacketEncryptionResponse(
self.dispatcher._proto,
sharedSecret=encrypted_secret,
verifyToken=token
)
@ -228,7 +206,7 @@ class AbstractMinecraftClient:
return False
async def _play(self):
self.dispatcher.promote(ConnectionState.PLAY)
self.dispatcher.state = ConnectionState.PLAY
async for packet in self.dispatcher.packets():
self.logger.debug("[ * ] Processing %s", packet.__class__.__name__)
if isinstance(packet, PacketSetCompression):

View file

@ -1,18 +1,19 @@
import io
import asyncio
import contextlib
import zlib
import logging
from typing import Type, AsyncIterator
from asyncio import StreamReader, StreamWriter, Queue, Task
from enum import Enum
from typing import List, Dict, Set, Optional, AsyncIterator, Type, Union
from types import ModuleType
from cryptography.hazmat.primitives.ciphers import CipherContext
from . import proto as minecraft_protocol
from .primitives import VarInt, Context
from .packet import Packet
from .types import ConnectionState
from .mc import proto as minecraft_protocol
from .mc.types import VarInt, Context
from .mc.packet import Packet
from .mc.definitions import ConnectionState
from .util import encryption
LOGGER = logging.getLogger(__name__)
@ -28,11 +29,11 @@ class Dispatcher:
_is_server : bool # True when receiving packets from clients
_down : StreamReader
_reader : Task | None
_reader : Optional[Task]
_decryptor : CipherContext
_up : StreamWriter
_writer : Task | None
_writer : Optional[Task]
_encryptor : CipherContext
_dispatching : bool
@ -40,8 +41,8 @@ class Dispatcher:
_incoming : Queue
_outgoing : Queue
_packet_whitelist : set[Type[Packet]] | None
_packet_id_whitelist : set[int] | None
_packet_whitelist : Optional[Set[Type[Packet]]]
_packet_id_whitelist : Optional[Set[int]]
_log_ignored_packets : bool
@ -51,39 +52,20 @@ class Dispatcher:
_proto : int
_encryption : bool
_compression : int | None
_compression : Optional[int]
state : ConnectionState # TODO make getter/setter ?
logger : logging.Logger
def __init__(
self,
host:str = "localhost",
port:int = 25565,
proto:int = 757,
compression_threshold: int | None = None,
server:bool = False,
log_ignored_packets: bool = False,
whitelist: set[Type[Packet]] = set(),
):
self._proto = proto
self._host = host
self._port = port
self._compression = compression_threshold
def __init__(self, server:bool = False):
self._proto = 757
self._is_server = server
self._host = "localhost"
self._port = 25565
self._dispatching = False
self._packet_whitelist = None
self._packet_id_whitelist = None
self._log_ignored_packets = log_ignored_packets
self._packet_whitelist = set(whitelist) if whitelist is not None else None
if self._packet_whitelist:
self._packet_whitelist.add(minecraft_protocol.play.clientbound.PacketKeepAlive)
self._packet_whitelist.add(minecraft_protocol.play.clientbound.PacketKickDisconnect)
self._packet_id_whitelist = set((P().for_proto(self.proto) for P in self._packet_whitelist)) if self._packet_whitelist else None
def promote(self, next_state:ConnectionState):
# change dispatcher state
self.state = next_state
self._log_ignored_packets = False
@property
def proto(self) -> int:
@ -102,7 +84,7 @@ class Dispatcher:
return self._encryption
@property
def compression(self) -> int | None:
def compression(self) -> Optional[int]:
return self._compression
@property
@ -130,7 +112,7 @@ class Dispatcher:
except asyncio.TimeoutError:
pass # so we recheck self.connected
def encrypt(self, secret: bytes | None = None):
def encrypt(self, secret:Optional[bytes]=None) -> 'Dispatcher':
if secret is not None:
cipher = encryption.create_AES_cipher(secret)
self._encryptor = cipher.encryptor()
@ -140,20 +122,52 @@ class Dispatcher:
else:
self._encryption = False
self.logger.info("Encryption disabled")
return self
def update_compression_threshold(self, threshold: int | None):
self._compression = threshold or 0
def whitelist(self, ids:Optional[List[Type[Packet]]]) -> 'Dispatcher':
self._packet_whitelist = set(ids) if ids is not None else None
if self._packet_whitelist:
self._packet_whitelist.add(minecraft_protocol.play.clientbound.PacketKeepAlive)
self._packet_whitelist.add(minecraft_protocol.play.clientbound.PacketKickDisconnect)
self._packet_id_whitelist = set((P(self._proto).id for P in self._packet_whitelist)) if self._packet_whitelist else None
return self
def set_host(
self,
host:Optional[str]="",
port:Optional[int]=0,
) -> 'Dispatcher':
self._host = host or self._host
self._port = port or self._port
self.logger = LOGGER.getChild(f"on({self._host}:{self._port})")
return self
def set_proto(self, proto:Optional[int]=757) -> 'Dispatcher':
self._proto = proto or self._proto
if self._packet_whitelist:
self._packet_id_whitelist = set((P(self._proto).id for P in self._packet_whitelist))
return self
def set_compression(self, threshold:Optional[int] = None) -> 'Dispatcher':
self._compression = threshold
return self
def set_state(self, state:Optional[ConnectionState]=ConnectionState.HANDSHAKING) -> 'Dispatcher':
self.state = state or self.state
return self
def log_ignored_packets(self, log:bool) -> 'Dispatcher':
self._log_ignored_packets = log
return self
async def connect(self,
reader : StreamReader | None = None,
writer : StreamWriter | None = None,
queue_size : int = 100,
):
reader : Optional[StreamReader] = None,
writer : Optional[StreamWriter] = None,
queue_size : int = 100,
) -> 'Dispatcher':
if self.connected:
raise InvalidState("Dispatcher already connected")
self.logger = LOGGER.getChild(f"on({self._host}:{self._port})")
self._encryption = False
self._compression = None
self._incoming = Queue(queue_size)
@ -177,7 +191,7 @@ class Dispatcher:
self.logger.info("Connected")
return self
async def disconnect(self, block:bool=True):
async def disconnect(self, block:bool=True) -> 'Dispatcher':
self._dispatching = False
if block and self._writer and self._reader:
await asyncio.gather(self._writer, self._reader)
@ -219,10 +233,7 @@ class Dispatcher:
if not self._proto:
raise InvalidState("Cannot access registries from invalid protocol")
proto = self._proto
while proto not in reg:
proto -= 1
proto_reg = reg[proto]
proto_reg = reg[self._proto]
return proto_reg[packet_id]
@ -300,7 +311,7 @@ class Dispatcher:
self.logger.debug("%s", buffer.getvalue())
await self.disconnect(block=False)
async def _up_worker(self, timeout:float = 1.):
async def _up_worker(self, timeout=1):
while self._dispatching:
try:
packet : Packet = await asyncio.wait_for(self._outgoing.get(), timeout=timeout)
@ -311,7 +322,7 @@ class Dispatcher:
return
try:
buffer = packet.serialize(self.proto)
buffer = packet.serialize()
length = len(buffer.getvalue()) # ewww TODO
if self._compression is not None:

2
aiocraft/mc/__init__.py Normal file
View file

@ -0,0 +1,2 @@
from .packet import Packet
from .definitions import *

View file

@ -6,7 +6,7 @@ from typing import Optional, Dict, Any
import aiohttp
from json.decoder import JSONDecodeError
from ..types import GameProfile
from ..definitions import GameProfile
logger = logging.getLogger(__file__)
@ -26,14 +26,10 @@ class AuthException(Exception):
class AuthInterface:
accessToken : str
selectedProfile : GameProfile
session_server_override : str | None = None
SESSION_SERVER = "https://sessionserver.mojang.com/session/minecraft"
TIMEOUT = aiohttp.ClientTimeout(total=3)
def __init__(self):
raise NotImplementedError
async def login(self) -> 'AuthInterface':
raise NotImplementedError
@ -49,29 +45,27 @@ class AuthInterface:
def deserialize(self, data:Dict[str, Any]):
raise NotImplementedError
@property
def session_server(self) -> str:
return self.session_server_override or self.SESSION_SERVER
async def join(self, server_id) -> dict:
return await self._post(
self.session_server + "/join",
self.SESSION_SERVER + "/join",
headers={"content-type":"application/json"},
json={
"serverId": server_id,
"accessToken": self.accessToken,
"selectedProfile": self.selectedProfile.id,
"selectedProfile": self.selectedProfile.serialize()
}
)
async def server_join(self, username:str, serverId:str, ip:Optional[str] = None):
@classmethod # TODO more love for server side!
async def server_join(cls, username:str, serverId:str, ip:Optional[str] = None):
params = {"username":username, "serverId":serverId}
if ip:
params["ip"] = ip
return await self._get(self.session_server + "/hasJoined", params=params)
return await cls._get(cls.SESSION_SERVER + "/hasJoined", params=params)
async def _post(self, endpoint:str, **kwargs) -> Dict[str, Any]:
async with aiohttp.ClientSession(timeout=self.TIMEOUT) as session:
@classmethod
async def _post(cls, endpoint:str, **kwargs) -> Dict[str, Any]:
async with aiohttp.ClientSession(timeout=cls.TIMEOUT) as session:
try:
async with session.post(endpoint, **kwargs) as res:
try:
@ -85,8 +79,9 @@ class AuthInterface:
except TimeoutError:
raise AuthException(endpoint, 0, {"error": "request timed out"}, kwargs)
async def _get(self, endpoint:str, **kwargs) -> Dict[str, Any]:
async with aiohttp.ClientSession(timeout=self.TIMEOUT) as session:
@classmethod
async def _get(cls, endpoint:str, **kwargs) -> Dict[str, Any]:
async with aiohttp.ClientSession(timeout=cls.TIMEOUT) as session:
try:
async with session.get(endpoint, **kwargs) as res:
try:

View file

@ -1,9 +1,14 @@
import re
import uuid
import logging
from urllib.parse import urlencode
from typing import Any
from typing import Dict, List, Optional, Any
from ..types import GameProfile
from yarl import URL
import aiohttp
from ..definitions import GameProfile
from .interface import AuthInterface, AuthException
class InvalidStateError(Exception):
@ -13,11 +18,11 @@ class MicrosoftAuthenticator(AuthInterface):
client_id : str
client_secret : str
redirect_uri : str
code : str | None
code : Optional[str]
accessToken : str
selectedProfile : GameProfile
refreshToken : str | None
refreshToken : Optional[str]
MINECRAFT_CLIENT_ID = "00000000402b5328"
OAUTH_LOGIN = "https://login.live.com/oauth20"
@ -29,7 +34,7 @@ class MicrosoftAuthenticator(AuthInterface):
client_id:str,
client_secret:str,
redirect_uri:str="http://localhost",
code:str|None = None
code:Optional[str]=None
):
self.client_id = client_id
self.client_secret = client_secret
@ -39,14 +44,14 @@ class MicrosoftAuthenticator(AuthInterface):
self.accessToken = ''
self.selectedProfile = GameProfile(id='', name='')
def serialize(self) -> dict[str, Any]:
def serialize(self) -> Dict[str, Any]:
return {
'accessToken': self.accessToken,
'refreshToken': self.refreshToken,
'selectedProfile': self.selectedProfile.serialize(),
}
def deserialize(self, data:dict[str, Any]):
def deserialize(self, data:Dict[str, Any]):
self.accessToken = data['accessToken']
self.refreshToken = data['refreshToken']
self.selectedProfile = GameProfile(**data['selectedProfile'])
@ -60,9 +65,9 @@ class MicrosoftAuthenticator(AuthInterface):
return (
self.OAUTH_LOGIN + "_authorize.srf" +
f"?client_id={self.client_id}" +
"&response_type=code" +
f"&response_type=code" +
f"&redirect_uri={self.redirect_uri}" +
"&scope=XboxLive.signin%20offline_access" +
f"&scope=XboxLive.signin%20offline_access" +
f"&state={state}"
)
@ -176,7 +181,7 @@ class MicrosoftAuthenticator(AuthInterface):
)
return auth_response['access_token']
async def fetch_mcstore(self) -> dict[str, Any]:
async def fetch_mcstore(self) -> Dict[str, Any]:
"""Get the store information"""
logging.debug("Fetching MC Store")
return await self._get(
@ -184,7 +189,7 @@ class MicrosoftAuthenticator(AuthInterface):
headers={ "Authorization": f"Bearer {self.accessToken}" },
)
async def fetch_profile(self) -> dict[str, Any]:
async def fetch_profile(self) -> Dict[str, Any]:
"""Get player profile"""
logging.debug("Fetching profile")
return await self._get(

View file

@ -1,20 +1,23 @@
"""Minecraft identity utilities."""
import json
import uuid
import logging
from dataclasses import dataclass
from typing import Optional, Dict, Any
import aiohttp
from .interface import AuthInterface, AuthException
from ..types import GameProfile
from ..definitions import GameProfile
@dataclass
class MojangAuthenticator(AuthInterface):
username : str
password : Optional[str]
accessToken : str
clientToken : str
auth_server_override : str | None = None
selectedProfile : GameProfile
AGENT_NAME = "Minecraft"
AGENT_VERSION = 1
@ -22,19 +25,12 @@ class MojangAuthenticator(AuthInterface):
CONTENT_TYPE = "application/json"
HEADERS = {"content-type": CONTENT_TYPE}
def __init__(
self, username:str="",
password:Optional[str]=None,
session_server_override:Optional[str]=None,
auth_server_override:Optional[str]=None,
):
def __init__(self, username:str="", password:Optional[str]=None):
self.username = username
self.password = password
self.accessToken = ""
self.clientToken = ""
self.selectedProfile = GameProfile("", username)
self.session_server_override = session_server_override
self.auth_server_override = auth_server_override
def __equals__(self, other) -> bool:
if not isinstance(other, self.__class__):
@ -52,16 +48,6 @@ class MojangAuthenticator(AuthInterface):
def __str__(self) -> str:
return repr(self)
@property
def auth_server(self) -> str:
return self.auth_server_override or self.AUTH_SERVER
@property
def code(self) -> str:
if self.username and self.password:
return self.username
return ""
def serialize(self) -> Dict[str, Any]:
return {
"username":self.username,
@ -89,7 +75,7 @@ class MojangAuthenticator(AuthInterface):
payload["clientToken"] = uuid.uuid4().hex # don't include this to invalidate all other sessions
res = await self._post(self.auth_server + "/authenticate", json=payload)
res = await self._post(self.AUTH_SERVER + "/authenticate", json=payload)
self.accessToken=res["accessToken"]
self.clientToken=res["clientToken"]
@ -97,10 +83,11 @@ class MojangAuthenticator(AuthInterface):
return self
async def sign_out(self, username:str, password:str) -> dict:
return await self._post(
self.auth_server + "/signout",
headers=self.HEADERS,
@classmethod
async def sign_out(cls, username:str, password:str) -> dict:
return await cls._post(
cls.AUTH_SERVER + "/signout",
headers=cls.HEADERS,
json={
"username": username,
"password": password
@ -111,7 +98,7 @@ class MojangAuthenticator(AuthInterface):
if not self.accessToken or not self.clientToken:
raise AuthException("/refresh", 0, {"message":"No access token or client token"}, {})
res = await self._post(
self.auth_server + "/refresh",
self.AUTH_SERVER + "/refresh",
headers=self.HEADERS,
json={
"accessToken": self.accessToken,
@ -123,7 +110,7 @@ class MojangAuthenticator(AuthInterface):
self.clientToken = res["clientToken"]
self.selectedProfile = GameProfile(**res["selectedProfile"])
if "user" in res and res["user"]:
if "user" in res:
self.username = res["user"]["username"]
return self
@ -135,7 +122,7 @@ class MojangAuthenticator(AuthInterface):
if clientToken:
payload["clientToken"] = self.clientToken
await self._post(
self.auth_server + "/validate",
self.AUTH_SERVER + "/validate",
headers=self.HEADERS,
json=payload,
)
@ -143,7 +130,7 @@ class MojangAuthenticator(AuthInterface):
async def invalidate(self) -> AuthInterface:
await self._post(
self.auth_server + "/invalidate",
self.AUTH_SERVER + "/invalidate",
headers=self.HEADERS,
json= {
"accessToken": self.accessToken,

275
aiocraft/mc/chunk.py Normal file
View file

@ -0,0 +1,275 @@
import io
import math
import logging
import struct
from typing import Dict, Tuple, Any, Optional, Iterable, List
import numpy as np
from aiocraft.mc.types import VarInt, Short, UnsignedByte, UnsignedLong, Type, Context
def bit_pack(data:Iterable[int], bits:int, size:int=64):
if size <= bits:
raise ValueError("Cannot pack into chunks smaller than bits per block")
out : List[int] = []
cursor = 0
buffer = 0
for el in data:
if cursor + bits > size:
delta = (cursor+bits) - size
buffer |= (el & (2**(bits-delta) - 1)) << cursor
out.append(buffer)
buffer = 0 | (( el >> (bits-delta) ) & (2**(delta) - 1))
cursor = delta
else:
buffer |= (el & (2**bits - 1)) << cursor
cursor += bits
return out
class BitStream:
data : bytes
cursor : int
size : int
def __init__(self, data:bytes, size:int):
self.data = data
self.cursor = 0
self.size = size if size > 0 else len(self.data) * 8
def __len__(self) -> int:
return self.size - self.cursor
def read(self, size:int) -> int:
if len(self) < size:
raise ValueError(f"Not enough bits ({len(self)} left, {size} requested)")
# Calculate splice indexes
start_byte = math.floor(self.cursor / 8)
end_byte = math.ceil((self.cursor + size) / 8)
# Construct int from bytes
buf = 0
delta = end_byte-start_byte
fmt = f">{delta}B" # TODO endianness doesn't seem to matter?
unpacked = struct.unpack(fmt, self.data[start_byte:end_byte])
for (i, x) in enumerate(unpacked):
# buf |= (x << (8 * (len(unpacked) - (i + 1))))
buf |= (x << (8 * i))
# Trim extra bits
# offset = self.cursor % 8 # start
offset = (8*delta) - ((self.cursor + size) % (8 * delta)) # end
if offset > 0:
buf = buf >> offset # There's an extra 1 to the left in air, maybe shift 1 bit less?
buf = buf & ((1 << size) - 1)
# Increment and return
self.cursor += size
return buf
class PalettedContainer(Type):
"""
block_data = [ UnsignedLong.read(buf) for _ in range(container_size) ]
for y in range(self.size):
for z in range(self.size):
for x in range(self.size):
i = x + ((y * 16) + z) * 16
start_long = (i * bits) // 64
start_offset = (i * bits) % 64
end_long = ((i + 1) * bits - 1) // 64
if start_long == end_long:
block = (block_data[start_long] >> start_offset) & max_val
else:
end_offset = 64 - start_offset
block = (block_data[start_long] >> start_offset |
block_data[end_long] << end_offset) & max_val
"""
pytype : type
threshold : int
size : int
def __init__(self, threshold:int, size:int):
self.threshold = threshold
self.size = size
def write(self, data, buffer:io.BytesIO, ctx:Context):
# TODO attempt to make a palette rather than sending always 13
UnsignedByte.write(13, buffer, ctx=ctx) # 13 bits per block
VarInt.write(0, buffer, ctx=ctx) # 0 palette len
for c in bit_pack(blocks, 13, 8*8): # FIXME add generator to iter blocks? idk
UnsignedLong.write(c, buffer, ctx=ctx)
def read(self, buffer:io.BytesIO, ctx:Context):
bits = UnsignedByte.read(buffer, ctx=ctx) # FIXME if bits > 4 it reads trash
#logging.debug("[%d|%d@%d] Bits per block : %d", ctx.x, ctx.z, ctx.sec, bits)
if bits < 4:
bits = 4
if bits >= self.threshold:
bits = 13 # this should not be hardcoded but we have no way to calculate all possible block states
palette_len = VarInt.read(buffer, ctx=ctx)
palette = np.zeros((palette_len,), dtype='int32')
for i in range(palette_len):
palette[i] = VarInt.read(buffer, ctx=ctx)
# logging.debug("[%d|%d@%d] Palette section : [%d] %s", ctx.x, ctx.z, ctx.sec, palette_len, str(palette))
container_size = VarInt.read(buffer, ctx=ctx)
section = np.zeros((self.size, self.size, self.size), dtype='int32')
stream = BitStream(buffer.read(container_size * 8), container_size*8*8) # a Long is 64 bits long
# logging.debug("[%d|%d@%d] Buffer : %s", ctx.x, ctx.z, ctx.sec, stream.data)
for y in range(self.size):
for z in range(self.size):
for x in range(self.size):
val = stream.read(bits)
if val >= len(palette):
logging.warning("out of bounds : %d (%d)", val, len(palette)) # FIXME happens a lot!
section[x, y, z] = val
continue
section[x, y, z] = palette[val] if bits < self.threshold else val
return section
BiomeContainer = PalettedContainer(4, 4)
BlockStateContainer = PalettedContainer(9, 16)
class HalfByteArrayType(Type):
size : int
def __init__(self, size:int):
self.size = size
def write(self, data:np.ndarray, buffer:io.BytesIO, ctx:Context):
if data.shape != (self.size, self.size, self.size):
raise ValueError(f"Array must be of shape {str((self.size, self.size, self.size))}")
alternating = False
val = 0
for y in range(self.size):
for z in range(self.size):
for x in range(self.size):
if alternating:
val |= (data[x, y, z] & 0xF)
buffer.write(struct.pack("B", val)) # FIXME this format is probably wrong
else:
val |= (data[x, y, z] & 0xF) << 4
alternating = not alternating
def read(self, buffer:io.BytesIO, ctx:Context):
section = np.empty((self.size, self.size, self.size), dtype='int32')
bit_buffer = BitStream(buffer.read((self.size**3)//2), (self.size**3)*4)
for y in range(self.size):
for z in range(self.size):
for x in range(self.size):
section[x, y, z] = bit_buffer.read(4)
return section
BlockLightSection = HalfByteArrayType(16)
SkyLightSection = HalfByteArrayType(16)
class NewChunkSectionType(Type):
pytype : type
def write(self, data, buffer:io.BytesIO, ctx:Context):
raise NotImplementedError
def read(self, buffer:io.BytesIO, ctx:Context):
block_count = Short.read(buffer, ctx=ctx)
block_states = BlockStateContainer.read(buffer, ctx=ctx)
biomes = BiomeContainer.read(buffer, ctx=ctx)
return (
block_count,
block_states,
biomes
)
class OldChunkSectionType(Type):
pytype : type
def write(self, data:Tuple[np.ndarray, np.ndarray, np.ndarray], buffer:io.BytesIO, ctx:Context):
BlockStateContainer.write(data[0], buffer, ctx=ctx)
BlockLightSection.write(data[1], buffer, ctx=ctx)
if ctx.overworld:
SkyLightSection.write(data[2], buffer, ctx=ctx)
def read(self, buffer:io.BytesIO, ctx:Context):
block_states = BlockStateContainer.read(buffer, ctx=ctx)
block_light = BlockLightSection.read(buffer, ctx=ctx)
if ctx.overworld:
sky_light = SkyLightSection.read(buffer, ctx=ctx)
else:
sky_light = np.empty((16, 16, 16), dtype='int32')
return (
block_states,
block_light,
sky_light
)
ChunkSection = OldChunkSectionType()
class Chunk(Type):
x : int
z : int
bitmask : int
ground_up_continuous : bool
blocks : np.ndarray
block_light : np.ndarray
sky_light : np.ndarray
biomes: bytes
def __init__(self, x:int, z:int, bitmask:int, ground_up_continuous:bool):
self.x = x
self.z = z
self.bitmask = bitmask
self.blocks = np.zeros((16, 256, 16), dtype='int32')
self.block_light = np.zeros((16, 256, 16), dtype='int32')
self.sky_light = np.zeros((16, 256, 16), dtype='int32')
self.ground_up_continuous = ground_up_continuous
def __getitem__(self, item:Any):
return self.blocks[item]
def merge(self, other:'Chunk'):
for i in range(16):
if not ((self.bitmask >> i) & 1):
self.blocks[:, i*16 : (i+1)*16, :] = other.blocks[:, i*16 : (i+1)*16, :]
self.block_light[:, i*16 : (i+1)*16, :] = other.block_light[:, i*16 : (i+1)*16, :]
self.sky_light[:, i*16 : (i+1)*16, :] = other.sky_light[:, i*16 : (i+1)*16, :]
def read(self, buffer:io.BytesIO, ctx:Context):
ctx.x = self.x
ctx.z = self.z
for i in range(16):
if (self.bitmask >> i) & 1:
ctx.sec = i
block_states, block_light, sky_light = ChunkSection.read(buffer, ctx=ctx)
self.blocks[:, i*16 : (i+1)*16, :] = block_states
self.block_light[:, i*16 : (i+1)*16, :] = block_light
self.sky_light[:, i*16 : (i+1)*16, :] = sky_light
if self.ground_up_continuous:
self.biomes = buffer.read(256) # 16x16
if buffer.read():
logging.warning("Leftover data in chunk buffer")
return self
def write(self, data:Any, buffer:io.BytesIO, ctx:Context):
for i in range(16):
if (self.bitmask >> i) & 1:
ChunkSection.write(
(self.blocks[:, i*16 : (i+1)*16, :], self.block_light[:, i*16 : (i+1)*16, :], self.sky_light[:, i*16 : (i+1)*16, :]),
buffer,
ctx=ctx
)
pass # TODO!!
class World:
chunks : Dict[Tuple[int, int], Chunk]
def __init__(self):
self.chunks = {}
def __getitem__(self, item:Tuple[int, int, int]):
return self.get(*item)
def get(self, x:int, y:int, z:int) -> int:
coord = (x//16, z//16)
if coord not in self.chunks:
raise KeyError(f"Chunk {coord} not loaded")
return self.chunks[coord][int(x%16), int(y), int(z%16)]
def put(self, chunk:Chunk, x:int, z:int, merge:bool=False):
if merge and (x,z) in self.chunks:
chunk.merge(self.chunks[(x,z)])
self.chunks[(x,z)] = chunk

View file

@ -17,32 +17,18 @@ class Dimension(Enum):
NETHER = -1
OVERWORLD = 0
END = 1
UNKNOWN = 666
@classmethod
def from_str(cls, txt:str) -> 'Dimension':
txt = txt.lower().replace('minecraft:', '')
if txt == 'overworld':
return Dimension.OVERWORLD
if txt == 'the_nether':
return Dimension.NETHER
if txt == 'the_end':
return Dimension.END
return Dimension.UNKNOWN
class Difficulty(Enum):
PEACEFUL = 0
EASY = 1
NORMAL = 2
HARD = 3
UNKNOWN = -1
class Gamemode(Enum):
SURVIVAL = 0
CREATIVE = 1
ADVENTURE = 2
SPECTATOR = 3
UNKNOWN = -1
@dataclass
class GameProfile:
@ -106,16 +92,8 @@ class BlockPos:
and self.y == other.y \
and self.z == other.z
def close(self, other:'BlockPos', threshold:float = 0.1) -> bool:
return abs(self.x - other.x) < threshold \
and abs(self.y - other.y) < threshold \
and abs(self.z - other.z) < threshold
def clone(self) -> 'BlockPos':
return BlockPos(self.x, self.y, self.z)
def __repr__(self) -> str:
return f"{self.__class__.__name__}(x={self.x:.1f},y={self.y:.1f},z={self.z:.1f})"
return f"{self.__class__.__name__}(x={self.x},y={self.y},z={self.z})"
def __str__(self) -> str:
return repr(self)
@ -123,18 +101,6 @@ class BlockPos:
def __hash__(self) -> int:
return hash(self.to_tuple())
@property
def i_x(self) -> int:
return int(self.x)
@property
def i_y(self) -> int:
return int(self.y)
@property
def i_z(self) -> int:
return int(self.z)
@classmethod
def from_tuple(cls, t:Tuple[float, float, float]):
return cls(x=float(t[0]), y=float(t[1]), z=float(t[2]))

View file

@ -1,69 +1,47 @@
import io
import json
from asyncio import Event
from typing import Tuple, List, Dict, Any
from typing import Tuple, Dict, Any
from .primitives import Type, VarInt, Context
from .types import Type, VarInt, Context
MAX_FIELD_PRINT_SIZE = 255
class Packet:
__slots__ = 'id', 'definition', '_processed', '_proto', '_state'
id : int | None
definition : List[Tuple[str, Type]] | None
id : int
definition : Tuple[Tuple[str, Type]]
_processed : Event
_proto : int | None
_proto : int
_state : int
_ids : Dict[int, int] # definitions are compiled at install time
_definitions : Dict[int, List[Tuple[str, Type]]] # definitions are compiled at install time
_definitions : Dict[int, Tuple[Tuple[str, Type]]] # definitions are compiled at install time
def __init__(self, **kwargs):
if not self._definitions:
raise NotImplementedError("cannot instantiate Packet base class")
self.id = None
self.definition = None
self._proto = None
self._processed = Event()
for k, v in kwargs.items():
setattr(self, k, v)
def for_proto(self, proto: int) -> int:
def __init__(self, proto:int, **kwargs):
self._proto = proto
while proto not in self._definitions:
proto -= 1
self._processed = Event()
self.definition = self._definitions[proto]
self.id = self._ids[proto]
return self.id
for name, t in self.definition:
if name in kwargs and kwargs[name] is not None:
setattr(self, name, kwargs[name])
@property
def processed(self) -> Event:
"""Returns an event which will be set only after the packet has been processed (either sent or raised exc)"""
return self._processed
@property
def slots(self) -> list[str]:
if self.definition is not None:
return [k for k, t in self.definition]
return [k for k in self.__slots__]
@classmethod
def deserialize(cls, proto:int, buffer:io.BytesIO):
ctx = Context(_proto=proto)
fallback_proto = proto
while fallback_proto not in cls._definitions:
fallback_proto -= 1
for k, t in cls._definitions[fallback_proto]:
for k, t in cls._definitions[proto]:
setattr(ctx, k, t.read(buffer, ctx=ctx))
packet = cls(**ctx.serialize())
packet.for_proto(fallback_proto)
return packet
return cls(proto, **ctx.serialize())
# return cls(proto, **{ name : t.read(buffer) for (name, t) in cls._definitions[proto] })
def serialize(self, proto:int) -> io.BytesIO:
self.for_proto(proto) # this sets both id and definitions but mypy doesn't know...
assert self.id is not None
assert self.definition is not None
def serialize(self) -> io.BytesIO:
ctx = Context(_proto=self._proto)
buf = io.BytesIO()
VarInt.write(self.id, buf, ctx=ctx)
@ -77,11 +55,9 @@ class Packet:
def __eq__(self, other) -> bool:
if not isinstance(other, self.__class__):
return False
if self._proto is not None \
and other._proto is not None \
and self._proto != other._proto:
if self._proto != other._proto:
return False
for name in self.slots:
for name, t in self.definition:
if getattr(self, name) != getattr(other, name):
return False
return True
@ -92,13 +68,13 @@ class Packet:
obj["_proto"] = self._proto
obj["_state"] = self._state
obj["_id"] = f"0x{self.id:02x}"
for key in self.slots:
for key, t in self.definition:
obj[key] = getattr(self, key, None)
return json.dumps(obj, indent=2, default=str)
def __repr__(self) -> str:
trunc = lambda x : x if len(x) < MAX_FIELD_PRINT_SIZE else "[blob]"
attrs = (f"{key}={trunc(repr(getattr(self, key, None)))}" for key in self.slots)
attrs = (f"{key}={trunc(repr(getattr(self, key, None)))}" for (key, t) in self.definition)
return f"{self.__class__.__name__}({self._proto}, {', '.join(attrs)})"

View file

@ -40,9 +40,5 @@ REGISTRY = {
751 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
755 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
756 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
757 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
758 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
759 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
760 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing },
761 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing }
757 : { 0 : PacketSetProtocol, 254 : PacketLegacyServerListPing }
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketLegacyServerListPing(Packet):
__slots__ = ( 'id', 'payload' )
payload : int
def __init__(self,
payload:int | None = None,
def __init__(self, proto:int,
payload:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
payload=payload
)
@ -57,11 +57,7 @@ class PacketLegacyServerListPing(Packet):
751 : 254,
755 : 254,
756 : 254,
757 : 254,
758 : 254,
759 : 254,
760 : 254,
761 : 254
757 : 254
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'payload', Byte ) ],
@ -100,9 +96,5 @@ class PacketLegacyServerListPing(Packet):
751 : [ ( 'payload', Byte ) ],
755 : [ ( 'payload', Byte ) ],
756 : [ ( 'payload', Byte ) ],
757 : [ ( 'payload', Byte ) ],
758 : [ ( 'payload', Byte ) ],
759 : [ ( 'payload', Byte ) ],
760 : [ ( 'payload', Byte ) ],
761 : [ ( 'payload', Byte ) ]
757 : [ ( 'payload', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketSetProtocol(Packet):
__slots__ = ( 'id', 'nextState', 'protocolVersion', 'serverHost', 'serverPort' )
@ -13,14 +13,14 @@ class PacketSetProtocol(Packet):
serverHost : str
serverPort : int
def __init__(self,
nextState:int | None = None,
protocolVersion:int | None = None,
serverHost:str | None = None,
serverPort:int | None = None,
def __init__(self, proto:int,
nextState:int=None,
protocolVersion:int=None,
serverHost:str=None,
serverPort:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
nextState=nextState,
protocolVersion=protocolVersion,
serverHost=serverHost,
@ -66,11 +66,7 @@ class PacketSetProtocol(Packet):
751 : 0,
755 : 0,
756 : 0,
757 : 0,
758 : 0,
759 : 0,
760 : 0,
761 : 0
757 : 0
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
@ -109,9 +105,5 @@ class PacketSetProtocol(Packet):
751 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
755 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
756 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
757 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
758 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
759 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
760 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ],
761 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ]
757 : [ ( 'protocolVersion', VarInt ), ( 'serverHost', String ), ( 'serverPort', UnsignedShort ), ( 'nextState', VarInt ) ]
}

View file

@ -43,9 +43,5 @@ REGISTRY = {
751 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
755 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
756 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
757 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
758 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
759 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
760 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest },
761 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest }
757 : { 0 : PacketDisconnect, 1 : PacketEncryptionBegin, 2 : PacketSuccess, 3 : PacketCompress, 4 : PacketLoginPluginRequest }
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCompress(Packet):
__slots__ = ( 'id', 'threshold' )
threshold : int
def __init__(self,
threshold:int | None = None,
def __init__(self, proto:int,
threshold:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
threshold=threshold
)
@ -57,11 +57,7 @@ class PacketCompress(Packet):
751 : 3,
755 : 3,
756 : 3,
757 : 3,
758 : 3,
759 : 3,
760 : 3,
761 : 3
757 : 3
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'threshold', VarInt ) ],
@ -100,9 +96,5 @@ class PacketCompress(Packet):
751 : [ ( 'threshold', VarInt ) ],
755 : [ ( 'threshold', VarInt ) ],
756 : [ ( 'threshold', VarInt ) ],
757 : [ ( 'threshold', VarInt ) ],
758 : [ ( 'threshold', VarInt ) ],
759 : [ ( 'threshold', VarInt ) ],
760 : [ ( 'threshold', VarInt ) ],
761 : [ ( 'threshold', VarInt ) ]
757 : [ ( 'threshold', VarInt ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketDisconnect(Packet):
__slots__ = ( 'id', 'reason' )
reason : str
def __init__(self,
reason:str | None = None,
def __init__(self, proto:int,
reason:str=None,
**kwargs
):
super().__init__(
super().__init__(proto,
reason=reason
)
@ -57,11 +57,7 @@ class PacketDisconnect(Packet):
751 : 0,
755 : 0,
756 : 0,
757 : 0,
758 : 0,
759 : 0,
760 : 0,
761 : 0
757 : 0
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'reason', String ) ],
@ -100,9 +96,5 @@ class PacketDisconnect(Packet):
751 : [ ( 'reason', String ) ],
755 : [ ( 'reason', String ) ],
756 : [ ( 'reason', String ) ],
757 : [ ( 'reason', String ) ],
758 : [ ( 'reason', String ) ],
759 : [ ( 'reason', String ) ],
760 : [ ( 'reason', String ) ],
761 : [ ( 'reason', String ) ]
757 : [ ( 'reason', String ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEncryptionBegin(Packet):
__slots__ = ( 'id', 'publicKey', 'serverId', 'verifyToken' )
@ -12,13 +12,13 @@ class PacketEncryptionBegin(Packet):
serverId : str
verifyToken : bytes
def __init__(self,
publicKey:bytes | None = None,
serverId:str | None = None,
verifyToken:bytes | None = None,
def __init__(self, proto:int,
publicKey:bytes=None,
serverId:str=None,
verifyToken:bytes=None,
**kwargs
):
super().__init__(
super().__init__(proto,
publicKey=publicKey,
serverId=serverId,
verifyToken=verifyToken
@ -63,11 +63,7 @@ class PacketEncryptionBegin(Packet):
751 : 1,
755 : 1,
756 : 1,
757 : 1,
758 : 1,
759 : 1,
760 : 1,
761 : 1
757 : 1
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
@ -106,9 +102,5 @@ class PacketEncryptionBegin(Packet):
751 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
755 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
756 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
757 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
758 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
759 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
760 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ],
761 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ]
757 : [ ( 'serverId', String ), ( 'publicKey', ByteArray ), ( 'verifyToken', ByteArray ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketLoginPluginRequest(Packet):
__slots__ = ( 'id', 'channel', 'data', 'messageId' )
@ -12,13 +12,13 @@ class PacketLoginPluginRequest(Packet):
data : bytes
messageId : int
def __init__(self,
channel:str | None = None,
data:bytes | None = None,
messageId:int | None = None,
def __init__(self, proto:int,
channel:str=None,
data:bytes=None,
messageId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
channel=channel,
data=data,
messageId=messageId
@ -46,11 +46,7 @@ class PacketLoginPluginRequest(Packet):
751 : 4,
755 : 4,
756 : 4,
757 : 4,
758 : 4,
759 : 4,
760 : 4,
761 : 4
757 : 4
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
393 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
@ -72,9 +68,5 @@ class PacketLoginPluginRequest(Packet):
751 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
755 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
756 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
757 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
758 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
759 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
760 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ],
761 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ]
757 : [ ( 'messageId', VarInt ), ( 'channel', String ), ( 'data', TrailingData ) ]
}

View file

@ -2,24 +2,21 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketSuccess(Packet):
__slots__ = ( 'id', 'properties', 'username', 'uuid' )
__slots__ = ( 'id', 'username', 'uuid' )
properties : list
username : str
uuid : str
def __init__(self,
properties:list | None = None,
username:str | None = None,
uuid:str | None = None,
def __init__(self, proto:int,
username:str=None,
uuid:str=None,
**kwargs
):
super().__init__(
properties=properties,
super().__init__(proto,
username=username,
uuid=uuid
)
@ -63,11 +60,7 @@ class PacketSuccess(Packet):
751 : 2,
755 : 2,
756 : 2,
757 : 2,
758 : 2,
759 : 2,
760 : 2,
761 : 2
757 : 2
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'uuid', String ), ( 'username', String ) ],
@ -106,9 +99,5 @@ class PacketSuccess(Packet):
751 : [ ( 'uuid', UUID ), ( 'username', String ) ],
755 : [ ( 'uuid', UUID ), ( 'username', String ) ],
756 : [ ( 'uuid', UUID ), ( 'username', String ) ],
757 : [ ( 'uuid', UUID ), ( 'username', String ) ],
758 : [ ( 'uuid', UUID ), ( 'username', String ) ],
759 : [ ( 'uuid', UUID ), ( 'username', String ), ( 'properties', ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) ) ],
760 : [ ( 'uuid', UUID ), ( 'username', String ), ( 'properties', ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) ) ],
761 : [ ( 'uuid', UUID ), ( 'username', String ), ( 'properties', ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) ) ]
757 : [ ( 'uuid', UUID ), ( 'username', String ) ]
}

View file

@ -41,9 +41,5 @@ REGISTRY = {
751 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
755 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
756 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
757 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
758 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
759 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
760 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse },
761 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse }
757 : { 0 : PacketLoginStart, 1 : PacketEncryptionBegin, 2 : PacketLoginPluginResponse }
}

View file

@ -2,27 +2,21 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEncryptionBegin(Packet):
__slots__ = ( 'id', 'crypto', 'hasVerifyToken', 'sharedSecret', 'verifyToken' )
__slots__ = ( 'id', 'sharedSecret', 'verifyToken' )
crypto : Union[None, dict]
hasVerifyToken : bool
sharedSecret : bytes
verifyToken : bytes
def __init__(self,
crypto:Union[None, dict] | None = None,
hasVerifyToken:bool | None = None,
sharedSecret:bytes | None = None,
verifyToken:bytes | None = None,
def __init__(self, proto:int,
sharedSecret:bytes=None,
verifyToken:bytes=None,
**kwargs
):
super().__init__(
crypto=crypto,
hasVerifyToken=hasVerifyToken,
super().__init__(proto,
sharedSecret=sharedSecret,
verifyToken=verifyToken
)
@ -66,11 +60,7 @@ class PacketEncryptionBegin(Packet):
751 : 1,
755 : 1,
756 : 1,
757 : 1,
758 : 1,
759 : 1,
760 : 1,
761 : 1
757 : 1
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ],
@ -109,9 +99,5 @@ class PacketEncryptionBegin(Packet):
751 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ],
755 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ],
756 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ],
757 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ],
758 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ],
759 : [ ( 'sharedSecret', ByteArray ), ( 'hasVerifyToken', Boolean ), ( 'crypto', SwitchType('hasVerifyToken', { 'false' : StructType(( 'salt', Long ), ( 'messageSignature', ByteArray ), ), 'true' : StructType(( 'verifyToken', ByteArray ), ) }, None, ) ) ],
760 : [ ( 'sharedSecret', ByteArray ), ( 'hasVerifyToken', Boolean ), ( 'crypto', SwitchType('hasVerifyToken', { 'false' : StructType(( 'salt', Long ), ( 'messageSignature', ByteArray ), ), 'true' : StructType(( 'verifyToken', ByteArray ), ) }, None, ) ) ],
761 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ]
757 : [ ( 'sharedSecret', ByteArray ), ( 'verifyToken', ByteArray ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketLoginPluginResponse(Packet):
__slots__ = ( 'id', 'data', 'messageId' )
@ -11,12 +11,12 @@ class PacketLoginPluginResponse(Packet):
data : tuple
messageId : int
def __init__(self,
data:tuple | None = None,
messageId:int | None = None,
def __init__(self, proto:int,
data:tuple=None,
messageId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
data=data,
messageId=messageId
)
@ -43,11 +43,7 @@ class PacketLoginPluginResponse(Packet):
751 : 2,
755 : 2,
756 : 2,
757 : 2,
758 : 2,
759 : 2,
760 : 2,
761 : 2
757 : 2
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
393 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
@ -69,9 +65,5 @@ class PacketLoginPluginResponse(Packet):
751 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
755 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
756 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
757 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
758 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
759 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
760 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ],
761 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ]
757 : [ ( 'messageId', VarInt ), ( 'data', OptionalType(TrailingData, ) ) ]
}

View file

@ -2,25 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketLoginStart(Packet):
__slots__ = ( 'id', 'playerUUID', 'signature', 'username' )
__slots__ = ( 'id', 'username' )
playerUUID : tuple
signature : tuple
username : str
def __init__(self,
playerUUID:tuple | None = None,
signature:tuple | None = None,
username:str | None = None,
def __init__(self, proto:int,
username:str=None,
**kwargs
):
super().__init__(
playerUUID=playerUUID,
signature=signature,
super().__init__(proto,
username=username
)
@ -63,11 +57,7 @@ class PacketLoginStart(Packet):
751 : 0,
755 : 0,
756 : 0,
757 : 0,
758 : 0,
759 : 0,
760 : 0,
761 : 0
757 : 0
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'username', String ) ],
@ -106,9 +96,5 @@ class PacketLoginStart(Packet):
751 : [ ( 'username', String ) ],
755 : [ ( 'username', String ) ],
756 : [ ( 'username', String ) ],
757 : [ ( 'username', String ) ],
758 : [ ( 'username', String ) ],
759 : [ ( 'username', String ), ( 'signature', OptionalType(StructType(( 'timestamp', Long ), ( 'publicKey', ByteArray ), ( 'signature', ByteArray ), ), ) ) ],
760 : [ ( 'username', String ), ( 'signature', OptionalType(StructType(( 'timestamp', Long ), ( 'publicKey', ByteArray ), ( 'signature', ByteArray ), ), ) ), ( 'playerUUID', OptionalType(UUID, ) ) ],
761 : [ ( 'username', String ), ( 'playerUUID', OptionalType(UUID, ) ) ]
757 : [ ( 'username', String ) ]
}

View file

@ -118,18 +118,7 @@ from .packet_set_title_subtitle import PacketSetTitleSubtitle
from .packet_set_title_text import PacketSetTitleText
from .packet_set_title_time import PacketSetTitleTime
from .packet_simulation_distance import PacketSimulationDistance
from .packet_chat_preview import PacketChatPreview
from .packet_player_chat import PacketPlayerChat
from .packet_should_display_chat_preview import PacketShouldDisplayChatPreview
from .packet_system_chat import PacketSystemChat
from .packet_server_data import PacketServerData
from .packet_chat_suggestions import PacketChatSuggestions
from .packet_hide_message import PacketHideMessage
from .packet_message_header import PacketMessageHeader
from .packet_advancement_progress import PacketAdvancementProgress
from .packet_profileless_chat import PacketProfilelessChat
from .packet_player_remove import PacketPlayerRemove
from .packet_feature_flags import PacketFeatureFlags
REGISTRY = {
47 : { 0 : PacketKeepAlive, 1 : PacketLogin, 2 : PacketChat, 3 : PacketUpdateTime, 4 : PacketEntityEquipment, 5 : PacketSpawnPosition, 6 : PacketUpdateHealth, 7 : PacketRespawn, 8 : PacketPosition, 9 : PacketHeldItemSlot, 10 : PacketBed, 11 : PacketAnimation, 12 : PacketNamedEntitySpawn, 13 : PacketCollect, 14 : PacketSpawnEntity, 15 : PacketSpawnEntityLiving, 16 : PacketSpawnEntityPainting, 17 : PacketSpawnEntityExperienceOrb, 18 : PacketEntityVelocity, 19 : PacketEntityDestroy, 20 : PacketEntity, 21 : PacketRelEntityMove, 22 : PacketEntityLook, 23 : PacketEntityMoveLook, 24 : PacketEntityTeleport, 25 : PacketEntityHeadRotation, 26 : PacketEntityStatus, 27 : PacketAttachEntity, 28 : PacketEntityMetadata, 29 : PacketEntityEffect, 30 : PacketRemoveEntityEffect, 31 : PacketExperience, 32 : PacketUpdateAttributes, 33 : PacketMapChunk, 34 : PacketMultiBlockChange, 35 : PacketBlockChange, 36 : PacketBlockAction, 37 : PacketBlockBreakAnimation, 38 : PacketMapChunkBulk, 39 : PacketExplosion, 40 : PacketWorldEvent, 41 : PacketNamedSoundEffect, 42 : PacketWorldParticles, 43 : PacketGameStateChange, 44 : PacketSpawnEntityWeather, 45 : PacketOpenWindow, 46 : PacketCloseWindow, 47 : PacketSetSlot, 48 : PacketWindowItems, 49 : PacketCraftProgressBar, 50 : PacketTransaction, 51 : PacketUpdateSign, 52 : PacketMap, 53 : PacketTileEntityData, 54 : PacketOpenSignEntity, 55 : PacketStatistics, 56 : PacketPlayerInfo, 57 : PacketAbilities, 58 : PacketTabComplete, 59 : PacketScoreboardObjective, 60 : PacketScoreboardScore, 61 : PacketScoreboardDisplayObjective, 62 : PacketScoreboardTeam, 63 : PacketCustomPayload, 64 : PacketKickDisconnect, 65 : PacketDifficulty, 66 : PacketCombatEvent, 67 : PacketCamera, 68 : PacketWorldBorder, 69 : PacketTitle, 70 : PacketSetCompression, 71 : PacketPlayerlistHeader, 72 : PacketResourcePackSend, 73 : PacketUpdateEntityNbt },
@ -168,9 +157,5 @@ REGISTRY = {
751 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketSpawnEntityLiving, 3 : PacketSpawnEntityPainting, 4 : PacketNamedEntitySpawn, 5 : PacketAnimation, 6 : PacketStatistics, 7 : PacketAcknowledgePlayerDigging, 8 : PacketBlockBreakAnimation, 9 : PacketTileEntityData, 10 : PacketBlockAction, 11 : PacketBlockChange, 12 : PacketBossBar, 13 : PacketDifficulty, 14 : PacketChat, 15 : PacketTabComplete, 16 : PacketDeclareCommands, 17 : PacketTransaction, 18 : PacketCloseWindow, 19 : PacketWindowItems, 20 : PacketCraftProgressBar, 21 : PacketSetSlot, 22 : PacketSetCooldown, 23 : PacketCustomPayload, 24 : PacketNamedSoundEffect, 25 : PacketKickDisconnect, 26 : PacketEntityStatus, 27 : PacketExplosion, 28 : PacketUnloadChunk, 29 : PacketGameStateChange, 30 : PacketOpenHorseWindow, 31 : PacketKeepAlive, 32 : PacketMapChunk, 33 : PacketWorldEvent, 34 : PacketWorldParticles, 35 : PacketUpdateLight, 36 : PacketLogin, 37 : PacketMap, 38 : PacketTradeList, 39 : PacketRelEntityMove, 40 : PacketEntityMoveLook, 41 : PacketEntityLook, 42 : PacketEntity, 43 : PacketVehicleMove, 44 : PacketOpenBook, 45 : PacketOpenWindow, 46 : PacketOpenSignEntity, 47 : PacketCraftRecipeResponse, 48 : PacketAbilities, 49 : PacketCombatEvent, 50 : PacketPlayerInfo, 51 : PacketFacePlayer, 52 : PacketPosition, 53 : PacketUnlockRecipes, 54 : PacketEntityDestroy, 55 : PacketRemoveEntityEffect, 56 : PacketResourcePackSend, 57 : PacketRespawn, 58 : PacketEntityHeadRotation, 59 : PacketMultiBlockChange, 60 : PacketSelectAdvancementTab, 61 : PacketWorldBorder, 62 : PacketCamera, 63 : PacketHeldItemSlot, 64 : PacketUpdateViewPosition, 65 : PacketUpdateViewDistance, 66 : PacketSpawnPosition, 67 : PacketScoreboardDisplayObjective, 68 : PacketEntityMetadata, 69 : PacketAttachEntity, 70 : PacketEntityVelocity, 71 : PacketEntityEquipment, 72 : PacketExperience, 73 : PacketUpdateHealth, 74 : PacketScoreboardObjective, 75 : PacketSetPassengers, 76 : PacketTeams, 77 : PacketScoreboardScore, 78 : PacketUpdateTime, 79 : PacketTitle, 80 : PacketEntitySoundEffect, 81 : PacketSoundEffect, 82 : PacketStopSound, 83 : PacketPlayerlistHeader, 84 : PacketNbtQueryResponse, 85 : PacketCollect, 86 : PacketEntityTeleport, 87 : PacketAdvancements, 88 : PacketEntityUpdateAttributes, 89 : PacketEntityEffect, 90 : PacketDeclareRecipes, 91 : PacketTags },
755 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketSpawnEntityLiving, 3 : PacketSpawnEntityPainting, 4 : PacketNamedEntitySpawn, 5 : PacketSculkVibrationSignal, 6 : PacketAnimation, 7 : PacketStatistics, 8 : PacketAcknowledgePlayerDigging, 9 : PacketBlockBreakAnimation, 10 : PacketTileEntityData, 11 : PacketBlockAction, 12 : PacketBlockChange, 13 : PacketBossBar, 14 : PacketDifficulty, 15 : PacketChat, 16 : PacketClearTitles, 17 : PacketTabComplete, 18 : PacketDeclareCommands, 19 : PacketCloseWindow, 20 : PacketWindowItems, 21 : PacketCraftProgressBar, 22 : PacketSetSlot, 23 : PacketSetCooldown, 24 : PacketCustomPayload, 25 : PacketNamedSoundEffect, 26 : PacketKickDisconnect, 27 : PacketEntityStatus, 28 : PacketExplosion, 29 : PacketUnloadChunk, 30 : PacketGameStateChange, 31 : PacketOpenHorseWindow, 32 : PacketInitializeWorldBorder, 33 : PacketKeepAlive, 34 : PacketMapChunk, 35 : PacketWorldEvent, 36 : PacketWorldParticles, 37 : PacketUpdateLight, 38 : PacketLogin, 39 : PacketMap, 40 : PacketTradeList, 41 : PacketRelEntityMove, 42 : PacketEntityMoveLook, 43 : PacketEntityLook, 44 : PacketVehicleMove, 45 : PacketOpenBook, 46 : PacketOpenWindow, 47 : PacketOpenSignEntity, 48 : PacketPing, 49 : PacketCraftRecipeResponse, 50 : PacketAbilities, 51 : PacketEndCombatEvent, 52 : PacketEnterCombatEvent, 53 : PacketDeathCombatEvent, 54 : PacketPlayerInfo, 55 : PacketFacePlayer, 56 : PacketPosition, 57 : PacketUnlockRecipes, 58 : PacketDestroyEntity, 59 : PacketRemoveEntityEffect, 60 : PacketResourcePackSend, 61 : PacketRespawn, 62 : PacketEntityHeadRotation, 63 : PacketMultiBlockChange, 64 : PacketSelectAdvancementTab, 65 : PacketActionBar, 66 : PacketWorldBorderCenter, 67 : PacketWorldBorderLerpSize, 68 : PacketWorldBorderSize, 69 : PacketWorldBorderWarningDelay, 70 : PacketWorldBorderWarningReach, 71 : PacketCamera, 72 : PacketHeldItemSlot, 73 : PacketUpdateViewPosition, 74 : PacketUpdateViewDistance, 75 : PacketSpawnPosition, 76 : PacketScoreboardDisplayObjective, 77 : PacketEntityMetadata, 78 : PacketAttachEntity, 79 : PacketEntityVelocity, 80 : PacketEntityEquipment, 81 : PacketExperience, 82 : PacketUpdateHealth, 83 : PacketScoreboardObjective, 84 : PacketSetPassengers, 85 : PacketTeams, 86 : PacketScoreboardScore, 87 : PacketSetTitleSubtitle, 88 : PacketUpdateTime, 89 : PacketSetTitleText, 90 : PacketSetTitleTime, 91 : PacketEntitySoundEffect, 92 : PacketSoundEffect, 93 : PacketStopSound, 94 : PacketPlayerlistHeader, 95 : PacketNbtQueryResponse, 96 : PacketCollect, 97 : PacketEntityTeleport, 98 : PacketAdvancements, 99 : PacketEntityUpdateAttributes, 100 : PacketEntityEffect, 101 : PacketDeclareRecipes, 102 : PacketTags },
756 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketSpawnEntityLiving, 3 : PacketSpawnEntityPainting, 4 : PacketNamedEntitySpawn, 5 : PacketSculkVibrationSignal, 6 : PacketAnimation, 7 : PacketStatistics, 8 : PacketAcknowledgePlayerDigging, 9 : PacketBlockBreakAnimation, 10 : PacketTileEntityData, 11 : PacketBlockAction, 12 : PacketBlockChange, 13 : PacketBossBar, 14 : PacketDifficulty, 15 : PacketChat, 16 : PacketClearTitles, 17 : PacketTabComplete, 18 : PacketDeclareCommands, 19 : PacketCloseWindow, 20 : PacketWindowItems, 21 : PacketCraftProgressBar, 22 : PacketSetSlot, 23 : PacketSetCooldown, 24 : PacketCustomPayload, 25 : PacketNamedSoundEffect, 26 : PacketKickDisconnect, 27 : PacketEntityStatus, 28 : PacketExplosion, 29 : PacketUnloadChunk, 30 : PacketGameStateChange, 31 : PacketOpenHorseWindow, 32 : PacketInitializeWorldBorder, 33 : PacketKeepAlive, 34 : PacketMapChunk, 35 : PacketWorldEvent, 36 : PacketWorldParticles, 37 : PacketUpdateLight, 38 : PacketLogin, 39 : PacketMap, 40 : PacketTradeList, 41 : PacketRelEntityMove, 42 : PacketEntityMoveLook, 43 : PacketEntityLook, 44 : PacketVehicleMove, 45 : PacketOpenBook, 46 : PacketOpenWindow, 47 : PacketOpenSignEntity, 48 : PacketPing, 49 : PacketCraftRecipeResponse, 50 : PacketAbilities, 51 : PacketEndCombatEvent, 52 : PacketEnterCombatEvent, 53 : PacketDeathCombatEvent, 54 : PacketPlayerInfo, 55 : PacketFacePlayer, 56 : PacketPosition, 57 : PacketUnlockRecipes, 58 : PacketEntityDestroy, 59 : PacketRemoveEntityEffect, 60 : PacketResourcePackSend, 61 : PacketRespawn, 62 : PacketEntityHeadRotation, 63 : PacketMultiBlockChange, 64 : PacketSelectAdvancementTab, 65 : PacketActionBar, 66 : PacketWorldBorderCenter, 67 : PacketWorldBorderLerpSize, 68 : PacketWorldBorderSize, 69 : PacketWorldBorderWarningDelay, 70 : PacketWorldBorderWarningReach, 71 : PacketCamera, 72 : PacketHeldItemSlot, 73 : PacketUpdateViewPosition, 74 : PacketUpdateViewDistance, 75 : PacketSpawnPosition, 76 : PacketScoreboardDisplayObjective, 77 : PacketEntityMetadata, 78 : PacketAttachEntity, 79 : PacketEntityVelocity, 80 : PacketEntityEquipment, 81 : PacketExperience, 82 : PacketUpdateHealth, 83 : PacketScoreboardObjective, 84 : PacketSetPassengers, 85 : PacketTeams, 86 : PacketScoreboardScore, 87 : PacketSetTitleSubtitle, 88 : PacketUpdateTime, 89 : PacketSetTitleText, 90 : PacketSetTitleTime, 91 : PacketEntitySoundEffect, 92 : PacketSoundEffect, 93 : PacketStopSound, 94 : PacketPlayerlistHeader, 95 : PacketNbtQueryResponse, 96 : PacketCollect, 97 : PacketEntityTeleport, 98 : PacketAdvancements, 99 : PacketEntityUpdateAttributes, 100 : PacketEntityEffect, 101 : PacketDeclareRecipes, 102 : PacketTags },
757 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketSpawnEntityLiving, 3 : PacketSpawnEntityPainting, 4 : PacketNamedEntitySpawn, 5 : PacketSculkVibrationSignal, 6 : PacketAnimation, 7 : PacketStatistics, 8 : PacketAcknowledgePlayerDigging, 9 : PacketBlockBreakAnimation, 10 : PacketTileEntityData, 11 : PacketBlockAction, 12 : PacketBlockChange, 13 : PacketBossBar, 14 : PacketDifficulty, 15 : PacketChat, 16 : PacketClearTitles, 17 : PacketTabComplete, 18 : PacketDeclareCommands, 19 : PacketCloseWindow, 20 : PacketWindowItems, 21 : PacketCraftProgressBar, 22 : PacketSetSlot, 23 : PacketSetCooldown, 24 : PacketCustomPayload, 25 : PacketNamedSoundEffect, 26 : PacketKickDisconnect, 27 : PacketEntityStatus, 28 : PacketExplosion, 29 : PacketUnloadChunk, 30 : PacketGameStateChange, 31 : PacketOpenHorseWindow, 32 : PacketInitializeWorldBorder, 33 : PacketKeepAlive, 34 : PacketMapChunk, 35 : PacketWorldEvent, 36 : PacketWorldParticles, 37 : PacketUpdateLight, 38 : PacketLogin, 39 : PacketMap, 40 : PacketTradeList, 41 : PacketRelEntityMove, 42 : PacketEntityMoveLook, 43 : PacketEntityLook, 44 : PacketVehicleMove, 45 : PacketOpenBook, 46 : PacketOpenWindow, 47 : PacketOpenSignEntity, 48 : PacketPing, 49 : PacketCraftRecipeResponse, 50 : PacketAbilities, 51 : PacketEndCombatEvent, 52 : PacketEnterCombatEvent, 53 : PacketDeathCombatEvent, 54 : PacketPlayerInfo, 55 : PacketFacePlayer, 56 : PacketPosition, 57 : PacketUnlockRecipes, 58 : PacketEntityDestroy, 59 : PacketRemoveEntityEffect, 60 : PacketResourcePackSend, 61 : PacketRespawn, 62 : PacketEntityHeadRotation, 63 : PacketMultiBlockChange, 64 : PacketSelectAdvancementTab, 65 : PacketActionBar, 66 : PacketWorldBorderCenter, 67 : PacketWorldBorderLerpSize, 68 : PacketWorldBorderSize, 69 : PacketWorldBorderWarningDelay, 70 : PacketWorldBorderWarningReach, 71 : PacketCamera, 72 : PacketHeldItemSlot, 73 : PacketUpdateViewPosition, 74 : PacketUpdateViewDistance, 75 : PacketSpawnPosition, 76 : PacketScoreboardDisplayObjective, 77 : PacketEntityMetadata, 78 : PacketAttachEntity, 79 : PacketEntityVelocity, 80 : PacketEntityEquipment, 81 : PacketExperience, 82 : PacketUpdateHealth, 83 : PacketScoreboardObjective, 84 : PacketSetPassengers, 85 : PacketTeams, 86 : PacketScoreboardScore, 87 : PacketSimulationDistance, 88 : PacketSetTitleSubtitle, 89 : PacketUpdateTime, 90 : PacketSetTitleText, 91 : PacketSetTitleTime, 92 : PacketEntitySoundEffect, 93 : PacketSoundEffect, 94 : PacketStopSound, 95 : PacketPlayerlistHeader, 96 : PacketNbtQueryResponse, 97 : PacketCollect, 98 : PacketEntityTeleport, 99 : PacketAdvancements, 100 : PacketEntityUpdateAttributes, 101 : PacketEntityEffect, 102 : PacketDeclareRecipes, 103 : PacketTags },
758 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketSpawnEntityLiving, 3 : PacketSpawnEntityPainting, 4 : PacketNamedEntitySpawn, 5 : PacketSculkVibrationSignal, 6 : PacketAnimation, 7 : PacketStatistics, 8 : PacketAcknowledgePlayerDigging, 9 : PacketBlockBreakAnimation, 10 : PacketTileEntityData, 11 : PacketBlockAction, 12 : PacketBlockChange, 13 : PacketBossBar, 14 : PacketDifficulty, 15 : PacketChat, 16 : PacketClearTitles, 17 : PacketTabComplete, 18 : PacketDeclareCommands, 19 : PacketCloseWindow, 20 : PacketWindowItems, 21 : PacketCraftProgressBar, 22 : PacketSetSlot, 23 : PacketSetCooldown, 24 : PacketCustomPayload, 25 : PacketNamedSoundEffect, 26 : PacketKickDisconnect, 27 : PacketEntityStatus, 28 : PacketExplosion, 29 : PacketUnloadChunk, 30 : PacketGameStateChange, 31 : PacketOpenHorseWindow, 32 : PacketInitializeWorldBorder, 33 : PacketKeepAlive, 34 : PacketMapChunk, 35 : PacketWorldEvent, 36 : PacketWorldParticles, 37 : PacketUpdateLight, 38 : PacketLogin, 39 : PacketMap, 40 : PacketTradeList, 41 : PacketRelEntityMove, 42 : PacketEntityMoveLook, 43 : PacketEntityLook, 44 : PacketVehicleMove, 45 : PacketOpenBook, 46 : PacketOpenWindow, 47 : PacketOpenSignEntity, 48 : PacketPing, 49 : PacketCraftRecipeResponse, 50 : PacketAbilities, 51 : PacketEndCombatEvent, 52 : PacketEnterCombatEvent, 53 : PacketDeathCombatEvent, 54 : PacketPlayerInfo, 55 : PacketFacePlayer, 56 : PacketPosition, 57 : PacketUnlockRecipes, 58 : PacketEntityDestroy, 59 : PacketRemoveEntityEffect, 60 : PacketResourcePackSend, 61 : PacketRespawn, 62 : PacketEntityHeadRotation, 63 : PacketMultiBlockChange, 64 : PacketSelectAdvancementTab, 65 : PacketActionBar, 66 : PacketWorldBorderCenter, 67 : PacketWorldBorderLerpSize, 68 : PacketWorldBorderSize, 69 : PacketWorldBorderWarningDelay, 70 : PacketWorldBorderWarningReach, 71 : PacketCamera, 72 : PacketHeldItemSlot, 73 : PacketUpdateViewPosition, 74 : PacketUpdateViewDistance, 75 : PacketSpawnPosition, 76 : PacketScoreboardDisplayObjective, 77 : PacketEntityMetadata, 78 : PacketAttachEntity, 79 : PacketEntityVelocity, 80 : PacketEntityEquipment, 81 : PacketExperience, 82 : PacketUpdateHealth, 83 : PacketScoreboardObjective, 84 : PacketSetPassengers, 85 : PacketTeams, 86 : PacketScoreboardScore, 87 : PacketSimulationDistance, 88 : PacketSetTitleSubtitle, 89 : PacketUpdateTime, 90 : PacketSetTitleText, 91 : PacketSetTitleTime, 92 : PacketEntitySoundEffect, 93 : PacketSoundEffect, 94 : PacketStopSound, 95 : PacketPlayerlistHeader, 96 : PacketNbtQueryResponse, 97 : PacketCollect, 98 : PacketEntityTeleport, 99 : PacketAdvancements, 100 : PacketEntityUpdateAttributes, 101 : PacketEntityEffect, 102 : PacketDeclareRecipes, 103 : PacketTags },
759 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketNamedEntitySpawn, 3 : PacketAnimation, 4 : PacketStatistics, 5 : PacketAcknowledgePlayerDigging, 6 : PacketBlockBreakAnimation, 7 : PacketTileEntityData, 8 : PacketBlockAction, 9 : PacketBlockChange, 10 : PacketBossBar, 11 : PacketDifficulty, 12 : PacketChatPreview, 13 : PacketClearTitles, 14 : PacketTabComplete, 15 : PacketDeclareCommands, 16 : PacketCloseWindow, 17 : PacketWindowItems, 18 : PacketCraftProgressBar, 19 : PacketSetSlot, 20 : PacketSetCooldown, 21 : PacketCustomPayload, 22 : PacketNamedSoundEffect, 23 : PacketKickDisconnect, 24 : PacketEntityStatus, 25 : PacketExplosion, 26 : PacketUnloadChunk, 27 : PacketGameStateChange, 28 : PacketOpenHorseWindow, 29 : PacketInitializeWorldBorder, 30 : PacketKeepAlive, 31 : PacketMapChunk, 32 : PacketWorldEvent, 33 : PacketWorldParticles, 34 : PacketUpdateLight, 35 : PacketLogin, 36 : PacketMap, 37 : PacketTradeList, 38 : PacketRelEntityMove, 39 : PacketEntityMoveLook, 40 : PacketEntityLook, 41 : PacketVehicleMove, 42 : PacketOpenBook, 43 : PacketOpenWindow, 44 : PacketOpenSignEntity, 45 : PacketPing, 46 : PacketCraftRecipeResponse, 47 : PacketAbilities, 48 : PacketPlayerChat, 49 : PacketEndCombatEvent, 50 : PacketEnterCombatEvent, 51 : PacketDeathCombatEvent, 52 : PacketPlayerInfo, 53 : PacketFacePlayer, 54 : PacketPosition, 55 : PacketUnlockRecipes, 56 : PacketEntityDestroy, 57 : PacketRemoveEntityEffect, 58 : PacketResourcePackSend, 59 : PacketRespawn, 60 : PacketEntityHeadRotation, 61 : PacketMultiBlockChange, 62 : PacketSelectAdvancementTab, 63 : PacketServerData, 64 : PacketActionBar, 65 : PacketWorldBorderCenter, 66 : PacketWorldBorderLerpSize, 67 : PacketWorldBorderSize, 68 : PacketWorldBorderWarningDelay, 69 : PacketWorldBorderWarningReach, 70 : PacketCamera, 71 : PacketHeldItemSlot, 72 : PacketUpdateViewPosition, 73 : PacketUpdateViewDistance, 74 : PacketSpawnPosition, 75 : PacketShouldDisplayChatPreview, 76 : PacketScoreboardDisplayObjective, 77 : PacketEntityMetadata, 78 : PacketAttachEntity, 79 : PacketEntityVelocity, 80 : PacketEntityEquipment, 81 : PacketExperience, 82 : PacketUpdateHealth, 83 : PacketScoreboardObjective, 84 : PacketSetPassengers, 85 : PacketTeams, 86 : PacketScoreboardScore, 87 : PacketSimulationDistance, 88 : PacketSetTitleSubtitle, 89 : PacketUpdateTime, 90 : PacketSetTitleText, 91 : PacketSetTitleTime, 92 : PacketEntitySoundEffect, 93 : PacketSoundEffect, 94 : PacketStopSound, 95 : PacketSystemChat, 96 : PacketPlayerlistHeader, 97 : PacketNbtQueryResponse, 98 : PacketCollect, 99 : PacketEntityTeleport, 100 : PacketAdvancements, 101 : PacketEntityUpdateAttributes, 102 : PacketEntityEffect, 103 : PacketDeclareRecipes, 104 : PacketTags },
760 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketNamedEntitySpawn, 3 : PacketAnimation, 4 : PacketStatistics, 5 : PacketAcknowledgePlayerDigging, 6 : PacketBlockBreakAnimation, 7 : PacketTileEntityData, 8 : PacketBlockAction, 9 : PacketBlockChange, 10 : PacketBossBar, 11 : PacketDifficulty, 12 : PacketChatPreview, 13 : PacketClearTitles, 14 : PacketTabComplete, 15 : PacketDeclareCommands, 16 : PacketCloseWindow, 17 : PacketWindowItems, 18 : PacketCraftProgressBar, 19 : PacketSetSlot, 20 : PacketSetCooldown, 21 : PacketChatSuggestions, 22 : PacketCustomPayload, 23 : PacketNamedSoundEffect, 24 : PacketHideMessage, 25 : PacketKickDisconnect, 26 : PacketEntityStatus, 27 : PacketExplosion, 28 : PacketUnloadChunk, 29 : PacketGameStateChange, 30 : PacketOpenHorseWindow, 31 : PacketInitializeWorldBorder, 32 : PacketKeepAlive, 33 : PacketMapChunk, 34 : PacketWorldEvent, 35 : PacketWorldParticles, 36 : PacketUpdateLight, 37 : PacketLogin, 38 : PacketMap, 39 : PacketTradeList, 40 : PacketRelEntityMove, 41 : PacketEntityMoveLook, 42 : PacketEntityLook, 43 : PacketVehicleMove, 44 : PacketOpenBook, 45 : PacketOpenWindow, 46 : PacketOpenSignEntity, 47 : PacketPing, 48 : PacketCraftRecipeResponse, 49 : PacketAbilities, 50 : PacketMessageHeader, 51 : PacketPlayerChat, 52 : PacketEndCombatEvent, 53 : PacketEnterCombatEvent, 54 : PacketDeathCombatEvent, 55 : PacketPlayerInfo, 56 : PacketFacePlayer, 57 : PacketPosition, 58 : PacketUnlockRecipes, 59 : PacketEntityDestroy, 60 : PacketRemoveEntityEffect, 61 : PacketResourcePackSend, 62 : PacketRespawn, 63 : PacketEntityHeadRotation, 64 : PacketMultiBlockChange, 65 : PacketSelectAdvancementTab, 66 : PacketServerData, 67 : PacketActionBar, 68 : PacketWorldBorderCenter, 69 : PacketWorldBorderLerpSize, 70 : PacketWorldBorderSize, 71 : PacketWorldBorderWarningDelay, 72 : PacketWorldBorderWarningReach, 73 : PacketCamera, 74 : PacketHeldItemSlot, 75 : PacketUpdateViewPosition, 76 : PacketUpdateViewDistance, 77 : PacketSpawnPosition, 78 : PacketShouldDisplayChatPreview, 79 : PacketScoreboardDisplayObjective, 80 : PacketEntityMetadata, 81 : PacketAttachEntity, 82 : PacketEntityVelocity, 83 : PacketEntityEquipment, 84 : PacketExperience, 85 : PacketUpdateHealth, 86 : PacketScoreboardObjective, 87 : PacketSetPassengers, 88 : PacketTeams, 89 : PacketScoreboardScore, 90 : PacketSimulationDistance, 91 : PacketSetTitleSubtitle, 92 : PacketUpdateTime, 93 : PacketSetTitleText, 94 : PacketSetTitleTime, 95 : PacketEntitySoundEffect, 96 : PacketSoundEffect, 97 : PacketStopSound, 98 : PacketSystemChat, 99 : PacketPlayerlistHeader, 100 : PacketNbtQueryResponse, 101 : PacketCollect, 102 : PacketEntityTeleport, 103 : PacketAdvancements, 104 : PacketEntityUpdateAttributes, 105 : PacketEntityEffect, 106 : PacketDeclareRecipes, 107 : PacketTags },
761 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketNamedEntitySpawn, 3 : PacketAnimation, 4 : PacketStatistics, 5 : PacketAcknowledgePlayerDigging, 6 : PacketBlockBreakAnimation, 7 : PacketTileEntityData, 8 : PacketBlockAction, 9 : PacketBlockChange, 10 : PacketBossBar, 11 : PacketDifficulty, 12 : PacketClearTitles, 13 : PacketTabComplete, 14 : PacketDeclareCommands, 15 : PacketCloseWindow, 16 : PacketWindowItems, 17 : PacketCraftProgressBar, 18 : PacketSetSlot, 19 : PacketSetCooldown, 20 : PacketChatSuggestions, 21 : PacketCustomPayload, 22 : PacketHideMessage, 23 : PacketKickDisconnect, 24 : PacketProfilelessChat, 25 : PacketEntityStatus, 26 : PacketExplosion, 27 : PacketUnloadChunk, 28 : PacketGameStateChange, 29 : PacketOpenHorseWindow, 30 : PacketInitializeWorldBorder, 31 : PacketKeepAlive, 32 : PacketMapChunk, 33 : PacketWorldEvent, 34 : PacketWorldParticles, 35 : PacketUpdateLight, 36 : PacketLogin, 37 : PacketMap, 38 : PacketTradeList, 39 : PacketRelEntityMove, 40 : PacketEntityMoveLook, 41 : PacketEntityLook, 42 : PacketVehicleMove, 43 : PacketOpenBook, 44 : PacketOpenWindow, 45 : PacketOpenSignEntity, 46 : PacketPing, 47 : PacketCraftRecipeResponse, 48 : PacketAbilities, 49 : PacketPlayerChat, 50 : PacketEndCombatEvent, 51 : PacketEnterCombatEvent, 52 : PacketDeathCombatEvent, 53 : PacketPlayerRemove, 54 : PacketPlayerInfo, 55 : PacketFacePlayer, 56 : PacketPosition, 57 : PacketUnlockRecipes, 58 : PacketEntityDestroy, 59 : PacketRemoveEntityEffect, 60 : PacketResourcePackSend, 61 : PacketRespawn, 62 : PacketEntityHeadRotation, 63 : PacketMultiBlockChange, 64 : PacketSelectAdvancementTab, 65 : PacketServerData, 66 : PacketActionBar, 67 : PacketWorldBorderCenter, 68 : PacketWorldBorderLerpSize, 69 : PacketWorldBorderSize, 70 : PacketWorldBorderWarningDelay, 71 : PacketWorldBorderWarningReach, 72 : PacketCamera, 73 : PacketHeldItemSlot, 74 : PacketUpdateViewPosition, 75 : PacketUpdateViewDistance, 76 : PacketSpawnPosition, 77 : PacketScoreboardDisplayObjective, 78 : PacketEntityMetadata, 79 : PacketAttachEntity, 80 : PacketEntityVelocity, 81 : PacketEntityEquipment, 82 : PacketExperience, 83 : PacketUpdateHealth, 84 : PacketScoreboardObjective, 85 : PacketSetPassengers, 86 : PacketTeams, 87 : PacketScoreboardScore, 88 : PacketSimulationDistance, 89 : PacketSetTitleSubtitle, 90 : PacketUpdateTime, 91 : PacketSetTitleText, 92 : PacketSetTitleTime, 93 : PacketEntitySoundEffect, 94 : PacketSoundEffect, 95 : PacketStopSound, 96 : PacketSystemChat, 97 : PacketPlayerlistHeader, 98 : PacketNbtQueryResponse, 99 : PacketCollect, 100 : PacketEntityTeleport, 101 : PacketAdvancements, 102 : PacketEntityUpdateAttributes, 103 : PacketFeatureFlags, 104 : PacketEntityEffect, 105 : PacketDeclareRecipes, 106 : PacketTags }
757 : { 0 : PacketSpawnEntity, 1 : PacketSpawnEntityExperienceOrb, 2 : PacketSpawnEntityLiving, 3 : PacketSpawnEntityPainting, 4 : PacketNamedEntitySpawn, 5 : PacketSculkVibrationSignal, 6 : PacketAnimation, 7 : PacketStatistics, 8 : PacketAcknowledgePlayerDigging, 9 : PacketBlockBreakAnimation, 10 : PacketTileEntityData, 11 : PacketBlockAction, 12 : PacketBlockChange, 13 : PacketBossBar, 14 : PacketDifficulty, 15 : PacketChat, 16 : PacketClearTitles, 17 : PacketTabComplete, 18 : PacketDeclareCommands, 19 : PacketCloseWindow, 20 : PacketWindowItems, 21 : PacketCraftProgressBar, 22 : PacketSetSlot, 23 : PacketSetCooldown, 24 : PacketCustomPayload, 25 : PacketNamedSoundEffect, 26 : PacketKickDisconnect, 27 : PacketEntityStatus, 28 : PacketExplosion, 29 : PacketUnloadChunk, 30 : PacketGameStateChange, 31 : PacketOpenHorseWindow, 32 : PacketInitializeWorldBorder, 33 : PacketKeepAlive, 34 : PacketMapChunk, 35 : PacketWorldEvent, 36 : PacketWorldParticles, 37 : PacketUpdateLight, 38 : PacketLogin, 39 : PacketMap, 40 : PacketTradeList, 41 : PacketRelEntityMove, 42 : PacketEntityMoveLook, 43 : PacketEntityLook, 44 : PacketVehicleMove, 45 : PacketOpenBook, 46 : PacketOpenWindow, 47 : PacketOpenSignEntity, 48 : PacketPing, 49 : PacketCraftRecipeResponse, 50 : PacketAbilities, 51 : PacketEndCombatEvent, 52 : PacketEnterCombatEvent, 53 : PacketDeathCombatEvent, 54 : PacketPlayerInfo, 55 : PacketFacePlayer, 56 : PacketPosition, 57 : PacketUnlockRecipes, 58 : PacketEntityDestroy, 59 : PacketRemoveEntityEffect, 60 : PacketResourcePackSend, 61 : PacketRespawn, 62 : PacketEntityHeadRotation, 63 : PacketMultiBlockChange, 64 : PacketSelectAdvancementTab, 65 : PacketActionBar, 66 : PacketWorldBorderCenter, 67 : PacketWorldBorderLerpSize, 68 : PacketWorldBorderSize, 69 : PacketWorldBorderWarningDelay, 70 : PacketWorldBorderWarningReach, 71 : PacketCamera, 72 : PacketHeldItemSlot, 73 : PacketUpdateViewPosition, 74 : PacketUpdateViewDistance, 75 : PacketSpawnPosition, 76 : PacketScoreboardDisplayObjective, 77 : PacketEntityMetadata, 78 : PacketAttachEntity, 79 : PacketEntityVelocity, 80 : PacketEntityEquipment, 81 : PacketExperience, 82 : PacketUpdateHealth, 83 : PacketScoreboardObjective, 84 : PacketSetPassengers, 85 : PacketTeams, 86 : PacketScoreboardScore, 87 : PacketSimulationDistance, 88 : PacketSetTitleSubtitle, 89 : PacketUpdateTime, 90 : PacketSetTitleText, 91 : PacketSetTitleTime, 92 : PacketEntitySoundEffect, 93 : PacketSoundEffect, 94 : PacketStopSound, 95 : PacketPlayerlistHeader, 96 : PacketNbtQueryResponse, 97 : PacketCollect, 98 : PacketEntityTeleport, 99 : PacketAdvancements, 100 : PacketEntityUpdateAttributes, 101 : PacketEntityEffect, 102 : PacketDeclareRecipes, 103 : PacketTags }
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketAbilities(Packet):
__slots__ = ( 'id', 'flags', 'flyingSpeed', 'walkingSpeed' )
@ -12,13 +12,13 @@ class PacketAbilities(Packet):
flyingSpeed : float
walkingSpeed : float
def __init__(self,
flags:int | None = None,
flyingSpeed:float | None = None,
walkingSpeed:float | None = None,
def __init__(self, proto:int,
flags:int=None,
flyingSpeed:float=None,
walkingSpeed:float=None,
**kwargs
):
super().__init__(
super().__init__(proto,
flags=flags,
flyingSpeed=flyingSpeed,
walkingSpeed=walkingSpeed
@ -63,11 +63,7 @@ class PacketAbilities(Packet):
751 : 48,
755 : 50,
756 : 50,
757 : 50,
758 : 50,
759 : 47,
760 : 49,
761 : 48
757 : 50
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
@ -106,9 +102,5 @@ class PacketAbilities(Packet):
751 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
755 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
756 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
757 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
758 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
759 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
760 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ],
761 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ]
757 : [ ( 'flags', Byte ), ( 'flyingSpeed', Float ), ( 'walkingSpeed', Float ) ]
}

View file

@ -2,30 +2,27 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketAcknowledgePlayerDigging(Packet):
__slots__ = ( 'id', 'block', 'location', 'sequenceId', 'status', 'successful' )
__slots__ = ( 'id', 'block', 'location', 'status', 'successful' )
block : int
location : tuple
sequenceId : int
status : int
successful : bool
def __init__(self,
block:int | None = None,
location:tuple | None = None,
sequenceId:int | None = None,
status:int | None = None,
successful:bool | None = None,
def __init__(self, proto:int,
block:int=None,
location:tuple=None,
status:int=None,
successful:bool=None,
**kwargs
):
super().__init__(
super().__init__(proto,
block=block,
location=location,
sequenceId=sequenceId,
status=status,
successful=successful
)
@ -44,11 +41,7 @@ class PacketAcknowledgePlayerDigging(Packet):
751 : 7,
755 : 8,
756 : 8,
757 : 8,
758 : 8,
759 : 5,
760 : 5,
761 : 5
757 : 8
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
498 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ],
@ -62,9 +55,5 @@ class PacketAcknowledgePlayerDigging(Packet):
751 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ],
755 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ],
756 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ],
757 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ],
758 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ],
759 : [ ( 'sequenceId', VarInt ) ],
760 : [ ( 'sequenceId', VarInt ) ],
761 : [ ( 'sequenceId', VarInt ) ]
757 : [ ( 'location', Position ), ( 'block', VarInt ), ( 'status', VarInt ), ( 'successful', Boolean ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketActionBar(Packet):
__slots__ = ( 'id', 'text' )
text : str
def __init__(self,
text:str | None = None,
def __init__(self, proto:int,
text:str=None,
**kwargs
):
super().__init__(
super().__init__(proto,
text=text
)
@ -23,18 +23,10 @@ class PacketActionBar(Packet):
_ids : Dict[int, int] = {
755 : 65,
756 : 65,
757 : 65,
758 : 65,
759 : 64,
760 : 67,
761 : 66
757 : 65
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ( 'text', String ) ],
756 : [ ( 'text', String ) ],
757 : [ ( 'text', String ) ],
758 : [ ( 'text', String ) ],
759 : [ ( 'text', String ) ],
760 : [ ( 'text', String ) ],
761 : [ ( 'text', String ) ]
757 : [ ( 'text', String ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketAdvancementProgress(Packet):
__slots__ = ( 'id', 'id' )
id : tuple
def __init__(self,
id:tuple | None = None,
def __init__(self, proto:int,
id:tuple=None,
**kwargs
):
super().__init__(
super().__init__(proto,
id=id
)

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketAdvancements(Packet):
__slots__ = ( 'id', 'advancementMapping', 'identifiers', 'progressMapping', 'reset' )
@ -13,14 +13,14 @@ class PacketAdvancements(Packet):
progressMapping : list
reset : bool
def __init__(self,
advancementMapping:list | None = None,
identifiers:list | None = None,
progressMapping:list | None = None,
reset:bool | None = None,
def __init__(self, proto:int,
advancementMapping:list=None,
identifiers:list=None,
progressMapping:list=None,
reset:bool=None,
**kwargs
):
super().__init__(
super().__init__(proto,
advancementMapping=advancementMapping,
identifiers=identifiers,
progressMapping=progressMapping,
@ -56,11 +56,7 @@ class PacketAdvancements(Packet):
751 : 87,
755 : 98,
756 : 98,
757 : 99,
758 : 99,
759 : 100,
760 : 103,
761 : 101
757 : 99
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
321 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', VarInt ), ( 'frameType', VarInt ), ( 'backgroundTexture', OptionalType(String, ) ), ( 'xCord', VarInt ), ( 'yCord', VarInt ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
@ -89,9 +85,5 @@ class PacketAdvancements(Packet):
751 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
755 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
756 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
757 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
758 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
759 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
760 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ],
761 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ]
757 : [ ( 'reset', Boolean ), ( 'advancementMapping', ArrayType(StructType(( 'key', String ), ( 'value', StructType(( 'parentId', OptionalType(String, ) ), ( 'displayData', OptionalType(StructType(( 'title', String ), ( 'description', String ), ( 'icon', Slot ), ( 'frameType', VarInt ), ( 'flags', Int ), ( 'backgroundTexture', SwitchType('has_background_texture', { 1 : String }, None, ) ), ( 'xCord', Float ), ( 'yCord', Float ), ), ) ), ( 'criteria', ArrayType(StructType(( 'key', String ), ( 'value', Void ), ), VarInt, ) ), ( 'requirements', ArrayType(ArrayType(String, VarInt, ), VarInt, ) ), ) ), ), VarInt, ) ), ( 'identifiers', ArrayType(String, VarInt, ) ), ( 'progressMapping', ArrayType(StructType(( 'key', String ), ( 'value', ArrayType(StructType(( 'criterionIdentifier', String ), ( 'criterionProgress', OptionalType(Long, ) ), ), VarInt, ) ), ), VarInt, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketAnimation(Packet):
__slots__ = ( 'id', 'animation', 'entityId' )
@ -11,12 +11,12 @@ class PacketAnimation(Packet):
animation : int
entityId : int
def __init__(self,
animation:int | None = None,
entityId:int | None = None,
def __init__(self, proto:int,
animation:int=None,
entityId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
animation=animation,
entityId=entityId
)
@ -60,11 +60,7 @@ class PacketAnimation(Packet):
751 : 5,
755 : 6,
756 : 6,
757 : 6,
758 : 6,
759 : 3,
760 : 3,
761 : 3
757 : 6
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
@ -103,9 +99,5 @@ class PacketAnimation(Packet):
751 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
755 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
756 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
757 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
758 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
759 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
760 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ],
761 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ]
757 : [ ( 'entityId', VarInt ), ( 'animation', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketAttachEntity(Packet):
__slots__ = ( 'id', 'entityId', 'leash', 'vehicleId' )
@ -12,13 +12,13 @@ class PacketAttachEntity(Packet):
leash : bool
vehicleId : int
def __init__(self,
entityId:int | None = None,
leash:bool | None = None,
vehicleId:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
leash:bool=None,
vehicleId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
leash=leash,
vehicleId=vehicleId
@ -63,11 +63,7 @@ class PacketAttachEntity(Packet):
751 : 69,
755 : 78,
756 : 78,
757 : 78,
758 : 78,
759 : 78,
760 : 81,
761 : 79
757 : 78
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', Int ), ( 'vehicleId', Int ), ( 'leash', Boolean ) ],
@ -106,9 +102,5 @@ class PacketAttachEntity(Packet):
751 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
755 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
756 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
757 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
758 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
759 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
760 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ],
761 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ]
757 : [ ( 'entityId', Int ), ( 'vehicleId', Int ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketBed(Packet):
__slots__ = ( 'id', 'entityId', 'location' )
@ -11,12 +11,12 @@ class PacketBed(Packet):
entityId : int
location : tuple
def __init__(self,
entityId:int | None = None,
location:tuple | None = None,
def __init__(self, proto:int,
entityId:int=None,
location:tuple=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
location=location
)

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketBlockAction(Packet):
__slots__ = ( 'id', 'blockId', 'byte1', 'byte2', 'location' )
@ -13,14 +13,14 @@ class PacketBlockAction(Packet):
byte2 : int
location : tuple
def __init__(self,
blockId:int | None = None,
byte1:int | None = None,
byte2:int | None = None,
location:tuple | None = None,
def __init__(self, proto:int,
blockId:int=None,
byte1:int=None,
byte2:int=None,
location:tuple=None,
**kwargs
):
super().__init__(
super().__init__(proto,
blockId=blockId,
byte1=byte1,
byte2=byte2,
@ -66,11 +66,7 @@ class PacketBlockAction(Packet):
751 : 10,
755 : 11,
756 : 11,
757 : 11,
758 : 11,
759 : 8,
760 : 8,
761 : 8
757 : 11
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
@ -109,9 +105,5 @@ class PacketBlockAction(Packet):
751 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
755 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
756 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
757 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
758 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
759 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
760 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ],
761 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ]
757 : [ ( 'location', Position ), ( 'byte1', Byte ), ( 'byte2', Byte ), ( 'blockId', VarInt ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketBlockBreakAnimation(Packet):
__slots__ = ( 'id', 'destroyStage', 'entityId', 'location' )
@ -12,13 +12,13 @@ class PacketBlockBreakAnimation(Packet):
entityId : int
location : tuple
def __init__(self,
destroyStage:int | None = None,
entityId:int | None = None,
location:tuple | None = None,
def __init__(self, proto:int,
destroyStage:int=None,
entityId:int=None,
location:tuple=None,
**kwargs
):
super().__init__(
super().__init__(proto,
destroyStage=destroyStage,
entityId=entityId,
location=location
@ -63,11 +63,7 @@ class PacketBlockBreakAnimation(Packet):
751 : 8,
755 : 9,
756 : 9,
757 : 9,
758 : 9,
759 : 6,
760 : 6,
761 : 6
757 : 9
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
@ -106,9 +102,5 @@ class PacketBlockBreakAnimation(Packet):
751 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
755 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
756 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
757 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
758 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
759 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
760 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ],
761 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ]
757 : [ ( 'entityId', VarInt ), ( 'location', Position ), ( 'destroyStage', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketBlockChange(Packet):
__slots__ = ( 'id', 'location', 'type' )
@ -11,12 +11,12 @@ class PacketBlockChange(Packet):
location : tuple
type : int
def __init__(self,
location:tuple | None = None,
type:int | None = None,
def __init__(self, proto:int,
location:tuple=None,
type:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
location=location,
type=type
)
@ -60,11 +60,7 @@ class PacketBlockChange(Packet):
751 : 11,
755 : 12,
756 : 12,
757 : 12,
758 : 12,
759 : 9,
760 : 9,
761 : 9
757 : 12
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'location', Position ), ( 'type', VarInt ) ],
@ -103,9 +99,5 @@ class PacketBlockChange(Packet):
751 : [ ( 'location', Position ), ( 'type', VarInt ) ],
755 : [ ( 'location', Position ), ( 'type', VarInt ) ],
756 : [ ( 'location', Position ), ( 'type', VarInt ) ],
757 : [ ( 'location', Position ), ( 'type', VarInt ) ],
758 : [ ( 'location', Position ), ( 'type', VarInt ) ],
759 : [ ( 'location', Position ), ( 'type', VarInt ) ],
760 : [ ( 'location', Position ), ( 'type', VarInt ) ],
761 : [ ( 'location', Position ), ( 'type', VarInt ) ]
757 : [ ( 'location', Position ), ( 'type', VarInt ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketBossBar(Packet):
__slots__ = ( 'id', 'action', 'color', 'dividers', 'entityUUID', 'flags', 'health', 'title' )
@ -16,17 +16,17 @@ class PacketBossBar(Packet):
health : Union[None, float]
title : Union[None, str]
def __init__(self,
action:int | None = None,
color:Union[None, int] | None = None,
dividers:Union[None, int] | None = None,
entityUUID:str | None = None,
flags:Union[None, int] | None = None,
health:Union[None, float] | None = None,
title:Union[None, str] | None = None,
def __init__(self, proto:int,
action:int=None,
color:Union[None, int]=None,
dividers:Union[None, int]=None,
entityUUID:str=None,
flags:Union[None, int]=None,
health:Union[None, float]=None,
title:Union[None, str]=None,
**kwargs
):
super().__init__(
super().__init__(proto,
action=action,
color=color,
dividers=dividers,
@ -74,11 +74,7 @@ class PacketBossBar(Packet):
751 : 12,
755 : 13,
756 : 13,
757 : 13,
758 : 13,
759 : 10,
760 : 10,
761 : 10
757 : 13
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
76 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
@ -116,9 +112,5 @@ class PacketBossBar(Packet):
751 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
755 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
756 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
757 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
758 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
759 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
760 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ],
761 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ]
757 : [ ( 'entityUUID', UUID ), ( 'action', VarInt ), ( 'title', SwitchType('action', { 0 : String, 3 : String }, None, ) ), ( 'health', SwitchType('action', { 0 : Float, 2 : Float }, None, ) ), ( 'color', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'dividers', SwitchType('action', { 0 : VarInt, 4 : VarInt }, None, ) ), ( 'flags', SwitchType('action', { 0 : Byte, 5 : Byte }, None, ) ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCamera(Packet):
__slots__ = ( 'id', 'cameraId' )
cameraId : int
def __init__(self,
cameraId:int | None = None,
def __init__(self, proto:int,
cameraId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
cameraId=cameraId
)
@ -57,11 +57,7 @@ class PacketCamera(Packet):
751 : 62,
755 : 71,
756 : 71,
757 : 71,
758 : 71,
759 : 70,
760 : 73,
761 : 72
757 : 71
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'cameraId', VarInt ) ],
@ -100,9 +96,5 @@ class PacketCamera(Packet):
751 : [ ( 'cameraId', VarInt ) ],
755 : [ ( 'cameraId', VarInt ) ],
756 : [ ( 'cameraId', VarInt ) ],
757 : [ ( 'cameraId', VarInt ) ],
758 : [ ( 'cameraId', VarInt ) ],
759 : [ ( 'cameraId', VarInt ) ],
760 : [ ( 'cameraId', VarInt ) ],
761 : [ ( 'cameraId', VarInt ) ]
757 : [ ( 'cameraId', VarInt ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketChat(Packet):
__slots__ = ( 'id', 'message', 'position', 'sender' )
@ -12,13 +12,13 @@ class PacketChat(Packet):
position : int
sender : str
def __init__(self,
message:str | None = None,
position:int | None = None,
sender:str | None = None,
def __init__(self, proto:int,
message:str=None,
position:int=None,
sender:str=None,
**kwargs
):
super().__init__(
super().__init__(proto,
message=message,
position=position,
sender=sender
@ -63,8 +63,7 @@ class PacketChat(Packet):
751 : 14,
755 : 15,
756 : 15,
757 : 15,
758 : 15
757 : 15
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'message', String ), ( 'position', Byte ) ],
@ -103,6 +102,5 @@ class PacketChat(Packet):
751 : [ ( 'message', String ), ( 'position', Byte ), ( 'sender', UUID ) ],
755 : [ ( 'message', String ), ( 'position', Byte ), ( 'sender', UUID ) ],
756 : [ ( 'message', String ), ( 'position', Byte ), ( 'sender', UUID ) ],
757 : [ ( 'message', String ), ( 'position', Byte ), ( 'sender', UUID ) ],
758 : [ ( 'message', String ), ( 'position', Byte ), ( 'sender', UUID ) ]
757 : [ ( 'message', String ), ( 'position', Byte ), ( 'sender', UUID ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketClearTitles(Packet):
__slots__ = ( 'id', 'reset' )
reset : bool
def __init__(self,
reset:bool | None = None,
def __init__(self, proto:int,
reset:bool=None,
**kwargs
):
super().__init__(
super().__init__(proto,
reset=reset
)
@ -23,18 +23,10 @@ class PacketClearTitles(Packet):
_ids : Dict[int, int] = {
755 : 16,
756 : 16,
757 : 16,
758 : 16,
759 : 13,
760 : 13,
761 : 12
757 : 16
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ( 'reset', Boolean ) ],
756 : [ ( 'reset', Boolean ) ],
757 : [ ( 'reset', Boolean ) ],
758 : [ ( 'reset', Boolean ) ],
759 : [ ( 'reset', Boolean ) ],
760 : [ ( 'reset', Boolean ) ],
761 : [ ( 'reset', Boolean ) ]
757 : [ ( 'reset', Boolean ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCloseWindow(Packet):
__slots__ = ( 'id', 'windowId' )
windowId : int
def __init__(self,
windowId:int | None = None,
def __init__(self, proto:int,
windowId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
windowId=windowId
)
@ -57,11 +57,7 @@ class PacketCloseWindow(Packet):
751 : 18,
755 : 19,
756 : 19,
757 : 19,
758 : 19,
759 : 16,
760 : 16,
761 : 15
757 : 19
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'windowId', Byte ) ],
@ -100,9 +96,5 @@ class PacketCloseWindow(Packet):
751 : [ ( 'windowId', Byte ) ],
755 : [ ( 'windowId', Byte ) ],
756 : [ ( 'windowId', Byte ) ],
757 : [ ( 'windowId', Byte ) ],
758 : [ ( 'windowId', Byte ) ],
759 : [ ( 'windowId', Byte ) ],
760 : [ ( 'windowId', Byte ) ],
761 : [ ( 'windowId', Byte ) ]
757 : [ ( 'windowId', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCollect(Packet):
__slots__ = ( 'id', 'collectedEntityId', 'collectorEntityId', 'pickupItemCount' )
@ -12,13 +12,13 @@ class PacketCollect(Packet):
collectorEntityId : int
pickupItemCount : int
def __init__(self,
collectedEntityId:int | None = None,
collectorEntityId:int | None = None,
pickupItemCount:int | None = None,
def __init__(self, proto:int,
collectedEntityId:int=None,
collectorEntityId:int=None,
pickupItemCount:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
collectedEntityId=collectedEntityId,
collectorEntityId=collectorEntityId,
pickupItemCount=pickupItemCount
@ -63,11 +63,7 @@ class PacketCollect(Packet):
751 : 85,
755 : 96,
756 : 96,
757 : 97,
758 : 97,
759 : 98,
760 : 101,
761 : 99
757 : 97
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ) ],
@ -106,9 +102,5 @@ class PacketCollect(Packet):
751 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
755 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
756 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
757 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
758 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
759 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
760 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ],
761 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ]
757 : [ ( 'collectedEntityId', VarInt ), ( 'collectorEntityId', VarInt ), ( 'pickupItemCount', VarInt ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCombatEvent(Packet):
__slots__ = ( 'id', 'duration', 'entityId', 'event', 'message', 'playerId' )
@ -14,15 +14,15 @@ class PacketCombatEvent(Packet):
message : Union[None, str]
playerId : Union[None, int]
def __init__(self,
duration:Union[None, int] | None = None,
entityId:Union[None, int] | None = None,
event:int | None = None,
message:Union[None, str] | None = None,
playerId:Union[None, int] | None = None,
def __init__(self, proto:int,
duration:Union[None, int]=None,
entityId:Union[None, int]=None,
event:int=None,
message:Union[None, str]=None,
playerId:Union[None, int]=None,
**kwargs
):
super().__init__(
super().__init__(proto,
duration=duration,
entityId=entityId,
event=event,

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCraftProgressBar(Packet):
__slots__ = ( 'id', 'property', 'value', 'windowId' )
@ -12,13 +12,13 @@ class PacketCraftProgressBar(Packet):
value : int
windowId : int
def __init__(self,
property:int | None = None,
value:int | None = None,
windowId:int | None = None,
def __init__(self, proto:int,
property:int=None,
value:int=None,
windowId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
property=property,
value=value,
windowId=windowId
@ -63,11 +63,7 @@ class PacketCraftProgressBar(Packet):
751 : 20,
755 : 21,
756 : 21,
757 : 21,
758 : 21,
759 : 18,
760 : 18,
761 : 17
757 : 21
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
@ -106,9 +102,5 @@ class PacketCraftProgressBar(Packet):
751 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
755 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
756 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
757 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
758 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
759 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
760 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ],
761 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ]
757 : [ ( 'windowId', Byte ), ( 'property', Short ), ( 'value', Short ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCraftRecipeResponse(Packet):
__slots__ = ( 'id', 'recipe', 'windowId' )
@ -11,12 +11,12 @@ class PacketCraftRecipeResponse(Packet):
recipe : Union[int,str]
windowId : int
def __init__(self,
recipe:Union[int,str] | None = None,
windowId:int | None = None,
def __init__(self, proto:int,
recipe:Union[int,str]=None,
windowId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
recipe=recipe,
windowId=windowId
)
@ -46,11 +46,7 @@ class PacketCraftRecipeResponse(Packet):
751 : 47,
755 : 49,
756 : 49,
757 : 49,
758 : 49,
759 : 46,
760 : 48,
761 : 47
757 : 49
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
338 : [ ( 'windowId', Byte ), ( 'recipe', VarInt ) ],
@ -75,9 +71,5 @@ class PacketCraftRecipeResponse(Packet):
751 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
755 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
756 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
757 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
758 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
759 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
760 : [ ( 'windowId', Byte ), ( 'recipe', String ) ],
761 : [ ( 'windowId', Byte ), ( 'recipe', String ) ]
757 : [ ( 'windowId', Byte ), ( 'recipe', String ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketCustomPayload(Packet):
__slots__ = ( 'id', 'channel', 'data' )
@ -11,12 +11,12 @@ class PacketCustomPayload(Packet):
channel : str
data : bytes
def __init__(self,
channel:str | None = None,
data:bytes | None = None,
def __init__(self, proto:int,
channel:str=None,
data:bytes=None,
**kwargs
):
super().__init__(
super().__init__(proto,
channel=channel,
data=data
)
@ -60,11 +60,7 @@ class PacketCustomPayload(Packet):
751 : 23,
755 : 24,
756 : 24,
757 : 24,
758 : 24,
759 : 21,
760 : 22,
761 : 21
757 : 24
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
@ -103,9 +99,5 @@ class PacketCustomPayload(Packet):
751 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
755 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
756 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
757 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
758 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
759 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
760 : [ ( 'channel', String ), ( 'data', TrailingData ) ],
761 : [ ( 'channel', String ), ( 'data', TrailingData ) ]
757 : [ ( 'channel', String ), ( 'data', TrailingData ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketDeathCombatEvent(Packet):
__slots__ = ( 'id', 'entityId', 'message', 'playerId' )
@ -12,13 +12,13 @@ class PacketDeathCombatEvent(Packet):
message : str
playerId : int
def __init__(self,
entityId:int | None = None,
message:str | None = None,
playerId:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
message:str=None,
playerId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
message=message,
playerId=playerId
@ -29,18 +29,10 @@ class PacketDeathCombatEvent(Packet):
_ids : Dict[int, int] = {
755 : 53,
756 : 53,
757 : 53,
758 : 53,
759 : 51,
760 : 54,
761 : 52
757 : 53
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ],
756 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ],
757 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ],
758 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ],
759 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ],
760 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ],
761 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ]
757 : [ ( 'playerId', VarInt ), ( 'entityId', Int ), ( 'message', String ) ]
}

View file

@ -0,0 +1,71 @@
"""[!] This file is autogenerated"""
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
class PacketDeclareCommands(Packet):
__slots__ = ( 'id', 'nodes', 'rootIndex' )
nodes : list
rootIndex : int
def __init__(self, proto:int,
nodes:list=None,
rootIndex:int=None,
**kwargs
):
super().__init__(proto,
nodes=nodes,
rootIndex=rootIndex
)
_state : int = 3
_ids : Dict[int, int] = {
351 : 17,
393 : 17,
401 : 17,
402 : 17,
403 : 17,
404 : 17,
477 : 17,
480 : 17,
490 : 17,
498 : 17,
573 : 18,
575 : 18,
578 : 18,
709 : 18,
734 : 17,
735 : 17,
736 : 17,
751 : 16,
755 : 18,
756 : 18,
757 : 18
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
351 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
393 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
401 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
402 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
403 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
404 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
477 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
480 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
490 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
498 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
573 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
575 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
578 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
709 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
734 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
735 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
736 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
751 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
755 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
756 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ],
757 : [ ( 'nodes', ArrayType(StructType(( 'flags', Int ), ( 'children', ArrayType(VarInt, VarInt, ) ), ( 'redirectNode', SwitchType('has_redirect_node', { 1 : VarInt }, None, ) ), ( 'extraNodeData', SwitchType('command_node_type', { 0 : Void, 1 : String, 2 : StructType(( 'name', String ), ( 'parser', String ), ( 'properties', SwitchType('parser', { 'brigadier:double' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Double }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Double }, None, ) ), ), 'brigadier:float' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Float }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Float }, None, ) ), ), 'brigadier:integer' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Int }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Int }, None, ) ), ), 'brigadier:long' : StructType(( 'flags', Int ), ( 'min', SwitchType('min_present', { 1 : Long }, None, ) ), ( 'max', SwitchType('max_present', { 1 : Long }, None, ) ), ), 'brigadier:string' : VarInt, 'minecraft:entity' : Byte, 'minecraft:range' : Boolean, 'minecraft:score_holder' : Byte }, None, ) ), ( 'suggests', SwitchType('has_custom_suggestions', { 1 : String }, None, ) ), ) }, None, ) ), ), VarInt, ) ), ( 'rootIndex', VarInt ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketDeclareRecipes(Packet):
__slots__ = ( 'id', 'recipes' )
recipes : list
def __init__(self,
recipes:list | None = None,
def __init__(self, proto:int,
recipes:list=None,
**kwargs
):
super().__init__(
super().__init__(proto,
recipes=recipes
)
@ -41,11 +41,7 @@ class PacketDeclareRecipes(Packet):
751 : 90,
755 : 101,
756 : 101,
757 : 102,
758 : 102,
759 : 103,
760 : 106,
761 : 105
757 : 102
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
351 : [ ( 'recipes', ArrayType(StructType(( 'recipeId', String ), ( 'type', String ), ( 'data', SwitchType('type', { 'crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(ArrayType(Slot, VarInt, ), 'height', ), 'width', ) ), ( 'result', Slot ), ), 'crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(ArrayType(Slot, VarInt, ), VarInt, ) ), ( 'result', Slot ), ), 'crafting_special_armordye' : Void, 'crafting_special_banneraddpattern' : Void, 'crafting_special_bannerduplicate' : Void, 'crafting_special_bookcloning' : Void, 'crafting_special_firework_rocket' : Void, 'crafting_special_firework_star' : Void, 'crafting_special_firework_star_fade' : Void, 'crafting_special_mapcloning' : Void, 'crafting_special_mapextending' : Void, 'crafting_special_repairitem' : Void, 'crafting_special_shielddecoration' : Void, 'crafting_special_shulkerboxcoloring' : Void, 'crafting_special_tippedarrow' : Void }, None, ) ), ), VarInt, ) ) ],
@ -68,9 +64,5 @@ class PacketDeclareRecipes(Packet):
751 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'width', ), 'height', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
755 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
756 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
757 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
758 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
759 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
760 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ],
761 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'category', VarInt ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'category', VarInt ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : TrailingData, 'minecraft:crafting_special_banneraddpattern' : TrailingData, 'minecraft:crafting_special_bannerduplicate' : TrailingData, 'minecraft:crafting_special_bookcloning' : TrailingData, 'minecraft:crafting_special_firework_rocket' : TrailingData, 'minecraft:crafting_special_firework_star' : TrailingData, 'minecraft:crafting_special_firework_star_fade' : TrailingData, 'minecraft:crafting_special_mapcloning' : TrailingData, 'minecraft:crafting_special_mapextending' : TrailingData, 'minecraft:crafting_special_repairitem' : TrailingData, 'minecraft:crafting_special_shielddecoration' : TrailingData, 'minecraft:crafting_special_shulkerboxcoloring' : TrailingData, 'minecraft:crafting_special_suspiciousstew' : TrailingData, 'minecraft:crafting_special_tippedarrow' : TrailingData, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ]
757 : [ ( 'recipes', ArrayType(StructType(( 'type', String ), ( 'recipeId', String ), ( 'data', SwitchType('type', { 'minecraft:blasting' : TrailingData, 'minecraft:campfire_cooking' : TrailingData, 'minecraft:crafting_shaped' : StructType(( 'width', VarInt ), ( 'height', VarInt ), ( 'group', String ), ( 'ingredients', ArrayType(ArrayType(TrailingData, 'height', ), 'width', ) ), ( 'result', Slot ), ), 'minecraft:crafting_shapeless' : StructType(( 'group', String ), ( 'ingredients', ArrayType(TrailingData, VarInt, ) ), ( 'result', Slot ), ), 'minecraft:crafting_special_armordye' : Void, 'minecraft:crafting_special_banneraddpattern' : Void, 'minecraft:crafting_special_bannerduplicate' : Void, 'minecraft:crafting_special_bookcloning' : Void, 'minecraft:crafting_special_firework_rocket' : Void, 'minecraft:crafting_special_firework_star' : Void, 'minecraft:crafting_special_firework_star_fade' : Void, 'minecraft:crafting_special_mapcloning' : Void, 'minecraft:crafting_special_mapextending' : Void, 'minecraft:crafting_special_repairitem' : Void, 'minecraft:crafting_special_shielddecoration' : Void, 'minecraft:crafting_special_shulkerboxcoloring' : Void, 'minecraft:crafting_special_suspiciousstew' : Void, 'minecraft:crafting_special_tippedarrow' : Void, 'minecraft:smelting' : TrailingData, 'minecraft:smithing' : StructType(( 'base', TrailingData ), ( 'addition', TrailingData ), ( 'result', Slot ), ), 'minecraft:smoking' : TrailingData, 'minecraft:stonecutting' : StructType(( 'group', String ), ( 'ingredient', TrailingData ), ( 'result', Slot ), ) }, None, ) ), ), VarInt, ) ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketDestroyEntity(Packet):
__slots__ = ( 'id', 'entityId' )
entityId : int
def __init__(self,
entityId:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId
)

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketDifficulty(Packet):
__slots__ = ( 'id', 'difficulty', 'difficultyLocked' )
@ -11,12 +11,12 @@ class PacketDifficulty(Packet):
difficulty : int
difficultyLocked : bool
def __init__(self,
difficulty:int | None = None,
difficultyLocked:bool | None = None,
def __init__(self, proto:int,
difficulty:int=None,
difficultyLocked:bool=None,
**kwargs
):
super().__init__(
super().__init__(proto,
difficulty=difficulty,
difficultyLocked=difficultyLocked
)
@ -60,11 +60,7 @@ class PacketDifficulty(Packet):
751 : 13,
755 : 14,
756 : 14,
757 : 14,
758 : 14,
759 : 11,
760 : 11,
761 : 11
757 : 14
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'difficulty', Byte ) ],
@ -103,9 +99,5 @@ class PacketDifficulty(Packet):
751 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
755 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
756 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
757 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
758 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
759 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
760 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ],
761 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ]
757 : [ ( 'difficulty', Byte ), ( 'difficultyLocked', Boolean ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEndCombatEvent(Packet):
__slots__ = ( 'id', 'duration', 'entityId' )
@ -11,12 +11,12 @@ class PacketEndCombatEvent(Packet):
duration : int
entityId : int
def __init__(self,
duration:int | None = None,
entityId:int | None = None,
def __init__(self, proto:int,
duration:int=None,
entityId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
duration=duration,
entityId=entityId
)
@ -26,18 +26,10 @@ class PacketEndCombatEvent(Packet):
_ids : Dict[int, int] = {
755 : 51,
756 : 51,
757 : 51,
758 : 51,
759 : 49,
760 : 52,
761 : 50
757 : 51
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ],
756 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ],
757 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ],
758 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ],
759 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ],
760 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ],
761 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ]
757 : [ ( 'duration', VarInt ), ( 'entityId', Int ) ]
}

View file

@ -2,18 +2,18 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEnterCombatEvent(Packet):
__slots__ = ( 'id' )
def __init__(self,
def __init__(self, proto:int,
**kwargs
):
super().__init__(
super().__init__(proto,
)
@ -22,18 +22,10 @@ class PacketEnterCombatEvent(Packet):
_ids : Dict[int, int] = {
755 : 52,
756 : 52,
757 : 52,
758 : 52,
759 : 50,
760 : 53,
761 : 51
757 : 52
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ],
756 : [ ],
757 : [ ],
758 : [ ],
759 : [ ],
760 : [ ],
761 : [ ]
757 : [ ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntity(Packet):
__slots__ = ( 'id', 'entityId' )
entityId : int
def __init__(self,
entityId:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId
)

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityDestroy(Packet):
__slots__ = ( 'id', 'entityIds' )
entityIds : list
def __init__(self,
entityIds:list | None = None,
def __init__(self, proto:int,
entityIds:list=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityIds=entityIds
)
@ -56,11 +56,7 @@ class PacketEntityDestroy(Packet):
736 : 55,
751 : 54,
756 : 58,
757 : 58,
758 : 58,
759 : 56,
760 : 59,
761 : 58
757 : 58
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
@ -98,9 +94,5 @@ class PacketEntityDestroy(Packet):
736 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
751 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
756 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
757 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
758 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
759 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
760 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ],
761 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ]
757 : [ ( 'entityIds', ArrayType(VarInt, VarInt, ) ) ]
}

View file

@ -2,34 +2,31 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityEffect(Packet):
__slots__ = ( 'id', 'amplifier', 'duration', 'effectId', 'entityId', 'factorCodec', 'hideParticles' )
__slots__ = ( 'id', 'amplifier', 'duration', 'effectId', 'entityId', 'hideParticles' )
amplifier : int
duration : int
effectId : int
entityId : int
factorCodec : tuple
hideParticles : Union[bool,int]
def __init__(self,
amplifier:int | None = None,
duration:int | None = None,
effectId:int | None = None,
entityId:int | None = None,
factorCodec:tuple | None = None,
hideParticles:Union[bool,int] | None = None,
def __init__(self, proto:int,
amplifier:int=None,
duration:int=None,
effectId:int=None,
entityId:int=None,
hideParticles:Union[bool,int]=None,
**kwargs
):
super().__init__(
super().__init__(proto,
amplifier=amplifier,
duration=duration,
effectId=effectId,
entityId=entityId,
factorCodec=factorCodec,
hideParticles=hideParticles
)
@ -72,11 +69,7 @@ class PacketEntityEffect(Packet):
751 : 89,
755 : 100,
756 : 100,
757 : 101,
758 : 101,
759 : 102,
760 : 105,
761 : 104
757 : 101
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Boolean ) ],
@ -115,9 +108,5 @@ class PacketEntityEffect(Packet):
751 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ) ],
755 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ) ],
756 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ) ],
757 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ) ],
758 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ) ],
759 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ), ( 'factorCodec', OptionalType(NBTTag, ) ) ],
760 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ), ( 'factorCodec', OptionalType(NBTTag, ) ) ],
761 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ), ( 'factorCodec', OptionalType(NBTTag, ) ) ]
757 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ), ( 'amplifier', Byte ), ( 'duration', VarInt ), ( 'hideParticles', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityEquipment(Packet):
__slots__ = ( 'id', 'entityId', 'equipments', 'item', 'slot' )
@ -13,14 +13,14 @@ class PacketEntityEquipment(Packet):
item : Item
slot : int
def __init__(self,
entityId:int | None = None,
equipments:bytes | None = None,
item:Item | None = None,
slot:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
equipments:bytes=None,
item:Item=None,
slot:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
equipments=equipments,
item=item,
@ -66,11 +66,7 @@ class PacketEntityEquipment(Packet):
751 : 71,
755 : 80,
756 : 80,
757 : 80,
758 : 80,
759 : 80,
760 : 83,
761 : 81
757 : 80
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'slot', Short ), ( 'item', Slot ) ],
@ -109,9 +105,5 @@ class PacketEntityEquipment(Packet):
751 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
755 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
756 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
757 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
758 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
759 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
760 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ],
761 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ]
757 : [ ( 'entityId', VarInt ), ( 'equipments', TrailingData ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityHeadRotation(Packet):
__slots__ = ( 'id', 'entityId', 'headYaw' )
@ -11,12 +11,12 @@ class PacketEntityHeadRotation(Packet):
entityId : int
headYaw : int
def __init__(self,
entityId:int | None = None,
headYaw:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
headYaw:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
headYaw=headYaw
)
@ -60,11 +60,7 @@ class PacketEntityHeadRotation(Packet):
751 : 58,
755 : 62,
756 : 62,
757 : 62,
758 : 62,
759 : 60,
760 : 63,
761 : 62
757 : 62
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
@ -103,9 +99,5 @@ class PacketEntityHeadRotation(Packet):
751 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
755 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
756 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
757 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
758 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
759 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
760 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ],
761 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ]
757 : [ ( 'entityId', VarInt ), ( 'headYaw', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityLook(Packet):
__slots__ = ( 'id', 'entityId', 'onGround', 'pitch', 'yaw' )
@ -13,14 +13,14 @@ class PacketEntityLook(Packet):
pitch : int
yaw : int
def __init__(self,
entityId:int | None = None,
onGround:bool | None = None,
pitch:int | None = None,
yaw:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
onGround:bool=None,
pitch:int=None,
yaw:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
onGround=onGround,
pitch=pitch,
@ -66,11 +66,7 @@ class PacketEntityLook(Packet):
751 : 41,
755 : 43,
756 : 43,
757 : 43,
758 : 43,
759 : 40,
760 : 42,
761 : 41
757 : 43
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
@ -109,9 +105,5 @@ class PacketEntityLook(Packet):
751 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
755 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
756 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
757 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
758 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
759 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
760 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
761 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ]
757 : [ ( 'entityId', VarInt ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityMetadata(Packet):
__slots__ = ( 'id', 'entityId', 'metadata' )
@ -11,12 +11,12 @@ class PacketEntityMetadata(Packet):
entityId : int
metadata : dict
def __init__(self,
entityId:int | None = None,
metadata:dict | None = None,
def __init__(self, proto:int,
entityId:int=None,
metadata:dict=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
metadata=metadata
)
@ -60,11 +60,7 @@ class PacketEntityMetadata(Packet):
751 : 68,
755 : 77,
756 : 77,
757 : 77,
758 : 77,
759 : 77,
760 : 80,
761 : 78
757 : 77
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
@ -103,9 +99,5 @@ class PacketEntityMetadata(Packet):
751 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
755 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
756 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
757 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
758 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
759 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
760 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ],
761 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ]
757 : [ ( 'entityId', VarInt ), ( 'metadata', EntityMetadata ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityMoveLook(Packet):
__slots__ = ( 'id', 'dX', 'dY', 'dZ', 'entityId', 'onGround', 'pitch', 'yaw' )
@ -16,17 +16,17 @@ class PacketEntityMoveLook(Packet):
pitch : int
yaw : int
def __init__(self,
dX:int | None = None,
dY:int | None = None,
dZ:int | None = None,
entityId:int | None = None,
onGround:bool | None = None,
pitch:int | None = None,
yaw:int | None = None,
def __init__(self, proto:int,
dX:int=None,
dY:int=None,
dZ:int=None,
entityId:int=None,
onGround:bool=None,
pitch:int=None,
yaw:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
dX=dX,
dY=dY,
dZ=dZ,
@ -75,11 +75,7 @@ class PacketEntityMoveLook(Packet):
751 : 40,
755 : 42,
756 : 42,
757 : 42,
758 : 42,
759 : 39,
760 : 41,
761 : 40
757 : 42
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'dX', Byte ), ( 'dY', Byte ), ( 'dZ', Byte ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
@ -118,9 +114,5 @@ class PacketEntityMoveLook(Packet):
751 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
755 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
756 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
757 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
758 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
759 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
760 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
761 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ]
757 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ]
}

View file

@ -2,36 +2,30 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntitySoundEffect(Packet):
__slots__ = ( 'id', 'entityId', 'pitch', 'seed', 'soundCategory', 'soundEvent', 'soundId', 'volume' )
__slots__ = ( 'id', 'entityId', 'pitch', 'soundCategory', 'soundId', 'volume' )
entityId : int
pitch : float
seed : int
soundCategory : int
soundEvent : Union[None, dict]
soundId : int
volume : float
def __init__(self,
entityId:int | None = None,
pitch:float | None = None,
seed:int | None = None,
soundCategory:int | None = None,
soundEvent:Union[None, dict] | None = None,
soundId:int | None = None,
volume:float | None = None,
def __init__(self, proto:int,
entityId:int=None,
pitch:float=None,
soundCategory:int=None,
soundId:int=None,
volume:float=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
pitch=pitch,
seed=seed,
soundCategory=soundCategory,
soundEvent=soundEvent,
soundId=soundId,
volume=volume
)
@ -53,11 +47,7 @@ class PacketEntitySoundEffect(Packet):
751 : 80,
755 : 91,
756 : 91,
757 : 92,
758 : 92,
759 : 92,
760 : 95,
761 : 93
757 : 92
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
477 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
@ -74,9 +64,5 @@ class PacketEntitySoundEffect(Packet):
751 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
755 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
756 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
757 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
758 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
759 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ],
760 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ), ( 'seed', Long ) ],
761 : [ ( 'soundId', VarInt ), ( 'soundEvent', SwitchType('soundId', { 0 : StructType(( 'resource', String ), ( 'range', OptionalType(Float, ) ), ) }, None, ) ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ), ( 'seed', Long ) ]
757 : [ ( 'soundId', VarInt ), ( 'soundCategory', VarInt ), ( 'entityId', VarInt ), ( 'volume', Float ), ( 'pitch', Float ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityStatus(Packet):
__slots__ = ( 'id', 'entityId', 'entityStatus' )
@ -11,12 +11,12 @@ class PacketEntityStatus(Packet):
entityId : int
entityStatus : int
def __init__(self,
entityId:int | None = None,
entityStatus:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
entityStatus:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
entityStatus=entityStatus
)
@ -60,11 +60,7 @@ class PacketEntityStatus(Packet):
751 : 26,
755 : 27,
756 : 27,
757 : 27,
758 : 27,
759 : 24,
760 : 26,
761 : 25
757 : 27
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
@ -103,9 +99,5 @@ class PacketEntityStatus(Packet):
751 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
755 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
756 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
757 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
758 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
759 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
760 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ],
761 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ]
757 : [ ( 'entityId', Int ), ( 'entityStatus', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityTeleport(Packet):
__slots__ = ( 'id', 'entityId', 'onGround', 'pitch', 'x', 'y', 'yaw', 'z' )
@ -16,17 +16,17 @@ class PacketEntityTeleport(Packet):
yaw : int
z : Union[float,int]
def __init__(self,
entityId:int | None = None,
onGround:bool | None = None,
pitch:int | None = None,
x:Union[float,int] | None = None,
y:Union[float,int] | None = None,
yaw:int | None = None,
z:Union[float,int] | None = None,
def __init__(self, proto:int,
entityId:int=None,
onGround:bool=None,
pitch:int=None,
x:Union[float,int]=None,
y:Union[float,int]=None,
yaw:int=None,
z:Union[float,int]=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
onGround=onGround,
pitch=pitch,
@ -75,11 +75,7 @@ class PacketEntityTeleport(Packet):
751 : 86,
755 : 97,
756 : 97,
757 : 98,
758 : 98,
759 : 99,
760 : 102,
761 : 100
757 : 98
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
@ -118,9 +114,5 @@ class PacketEntityTeleport(Packet):
751 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
755 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
756 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
757 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
758 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
759 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
760 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ],
761 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ]
757 : [ ( 'entityId', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'onGround', Boolean ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityUpdateAttributes(Packet):
__slots__ = ( 'id', 'entityId', 'properties' )
@ -11,12 +11,12 @@ class PacketEntityUpdateAttributes(Packet):
entityId : int
properties : list
def __init__(self,
entityId:int | None = None,
properties:list | None = None,
def __init__(self, proto:int,
entityId:int=None,
properties:list=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
properties=properties
)
@ -58,11 +58,7 @@ class PacketEntityUpdateAttributes(Packet):
751 : 88,
755 : 99,
756 : 99,
757 : 100,
758 : 100,
759 : 101,
760 : 104,
761 : 102
757 : 100
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
107 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), Int, ) ) ],
@ -99,9 +95,5 @@ class PacketEntityUpdateAttributes(Packet):
751 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), Int, ) ) ],
755 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ],
756 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ],
757 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ],
758 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ],
759 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ],
760 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ],
761 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ]
757 : [ ( 'entityId', VarInt ), ( 'properties', ArrayType(StructType(( 'key', String ), ( 'value', Double ), ( 'modifiers', ArrayType(StructType(( 'uuid', UUID ), ( 'amount', Double ), ( 'operation', Byte ), ), VarInt, ) ), ), VarInt, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketEntityVelocity(Packet):
__slots__ = ( 'id', 'entityId', 'velocityX', 'velocityY', 'velocityZ' )
@ -13,14 +13,14 @@ class PacketEntityVelocity(Packet):
velocityY : int
velocityZ : int
def __init__(self,
entityId:int | None = None,
velocityX:int | None = None,
velocityY:int | None = None,
velocityZ:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
velocityX:int=None,
velocityY:int=None,
velocityZ:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
velocityX=velocityX,
velocityY=velocityY,
@ -66,11 +66,7 @@ class PacketEntityVelocity(Packet):
751 : 70,
755 : 79,
756 : 79,
757 : 79,
758 : 79,
759 : 79,
760 : 82,
761 : 80
757 : 79
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
@ -109,9 +105,5 @@ class PacketEntityVelocity(Packet):
751 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
755 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
756 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
757 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
758 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
759 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
760 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ],
761 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ]
757 : [ ( 'entityId', VarInt ), ( 'velocityX', Short ), ( 'velocityY', Short ), ( 'velocityZ', Short ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketExperience(Packet):
__slots__ = ( 'id', 'experienceBar', 'level', 'totalExperience' )
@ -12,13 +12,13 @@ class PacketExperience(Packet):
level : int
totalExperience : int
def __init__(self,
experienceBar:float | None = None,
level:int | None = None,
totalExperience:int | None = None,
def __init__(self, proto:int,
experienceBar:float=None,
level:int=None,
totalExperience:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
experienceBar=experienceBar,
level=level,
totalExperience=totalExperience
@ -63,11 +63,7 @@ class PacketExperience(Packet):
751 : 72,
755 : 81,
756 : 81,
757 : 81,
758 : 81,
759 : 81,
760 : 84,
761 : 82
757 : 81
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
@ -106,9 +102,5 @@ class PacketExperience(Packet):
751 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
755 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
756 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
757 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
758 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
759 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
760 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ],
761 : [ ( 'experienceBar', Float ), ( 'totalExperience', VarInt ), ( 'level', VarInt ) ]
757 : [ ( 'experienceBar', Float ), ( 'level', VarInt ), ( 'totalExperience', VarInt ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketExplosion(Packet):
__slots__ = ( 'id', 'affectedBlockOffsets', 'playerMotionX', 'playerMotionY', 'playerMotionZ', 'radius', 'x', 'y', 'z' )
@ -17,18 +17,18 @@ class PacketExplosion(Packet):
y : float
z : float
def __init__(self,
affectedBlockOffsets:list | None = None,
playerMotionX:float | None = None,
playerMotionY:float | None = None,
playerMotionZ:float | None = None,
radius:float | None = None,
x:float | None = None,
y:float | None = None,
z:float | None = None,
def __init__(self, proto:int,
affectedBlockOffsets:list=None,
playerMotionX:float=None,
playerMotionY:float=None,
playerMotionZ:float=None,
radius:float=None,
x:float=None,
y:float=None,
z:float=None,
**kwargs
):
super().__init__(
super().__init__(proto,
affectedBlockOffsets=affectedBlockOffsets,
playerMotionX=playerMotionX,
playerMotionY=playerMotionY,
@ -78,11 +78,7 @@ class PacketExplosion(Packet):
751 : 27,
755 : 28,
756 : 28,
757 : 28,
758 : 28,
759 : 25,
760 : 27,
761 : 26
757 : 28
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), Int, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
@ -121,9 +117,5 @@ class PacketExplosion(Packet):
751 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), Int, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
755 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
756 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
757 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
758 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
759 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
760 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ],
761 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ]
757 : [ ( 'x', Float ), ( 'y', Float ), ( 'z', Float ), ( 'radius', Float ), ( 'affectedBlockOffsets', ArrayType(StructType(( 'x', Byte ), ( 'y', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'playerMotionX', Float ), ( 'playerMotionY', Float ), ( 'playerMotionZ', Float ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketFacePlayer(Packet):
__slots__ = ( 'id', 'entityId', 'entity_feet_eyes', 'feet_eyes', 'isEntity', 'x', 'y', 'z' )
@ -16,17 +16,17 @@ class PacketFacePlayer(Packet):
y : float
z : float
def __init__(self,
entityId:Union[None, int] | None = None,
entity_feet_eyes:Union[None, str] | None = None,
feet_eyes:int | None = None,
isEntity:bool | None = None,
x:float | None = None,
y:float | None = None,
z:float | None = None,
def __init__(self, proto:int,
entityId:Union[None, int]=None,
entity_feet_eyes:Union[None, str]=None,
feet_eyes:int=None,
isEntity:bool=None,
x:float=None,
y:float=None,
z:float=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
entity_feet_eyes=entity_feet_eyes,
feet_eyes=feet_eyes,
@ -58,11 +58,7 @@ class PacketFacePlayer(Packet):
751 : 51,
755 : 55,
756 : 55,
757 : 55,
758 : 55,
759 : 53,
760 : 56,
761 : 55
757 : 55
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
393 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
@ -84,9 +80,5 @@ class PacketFacePlayer(Packet):
751 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
755 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
756 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
757 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
758 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
759 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
760 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ],
761 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ]
757 : [ ( 'feet_eyes', VarInt ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'isEntity', Boolean ), ( 'entityId', SwitchType('isEntity', { 'true' : VarInt }, None, ) ), ( 'entity_feet_eyes', SwitchType('isEntity', { 'true' : String }, None, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketGameStateChange(Packet):
__slots__ = ( 'id', 'gameMode', 'reason' )
@ -11,12 +11,12 @@ class PacketGameStateChange(Packet):
gameMode : float
reason : int
def __init__(self,
gameMode:float | None = None,
reason:int | None = None,
def __init__(self, proto:int,
gameMode:float=None,
reason:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
gameMode=gameMode,
reason=reason
)
@ -60,11 +60,7 @@ class PacketGameStateChange(Packet):
751 : 29,
755 : 30,
756 : 30,
757 : 30,
758 : 30,
759 : 27,
760 : 29,
761 : 28
757 : 30
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
@ -103,9 +99,5 @@ class PacketGameStateChange(Packet):
751 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
755 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
756 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
757 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
758 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
759 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
760 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ],
761 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ]
757 : [ ( 'reason', Byte ), ( 'gameMode', Float ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketHeldItemSlot(Packet):
__slots__ = ( 'id', 'slot' )
slot : int
def __init__(self,
slot:int | None = None,
def __init__(self, proto:int,
slot:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
slot=slot
)
@ -57,11 +57,7 @@ class PacketHeldItemSlot(Packet):
751 : 63,
755 : 72,
756 : 72,
757 : 72,
758 : 72,
759 : 71,
760 : 74,
761 : 73
757 : 72
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'slot', Byte ) ],
@ -100,9 +96,5 @@ class PacketHeldItemSlot(Packet):
751 : [ ( 'slot', Byte ) ],
755 : [ ( 'slot', Byte ) ],
756 : [ ( 'slot', Byte ) ],
757 : [ ( 'slot', Byte ) ],
758 : [ ( 'slot', Byte ) ],
759 : [ ( 'slot', Byte ) ],
760 : [ ( 'slot', Byte ) ],
761 : [ ( 'slot', Byte ) ]
757 : [ ( 'slot', Byte ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketInitializeWorldBorder(Packet):
__slots__ = ( 'id', 'newDiameter', 'oldDiameter', 'portalTeleportBoundary', 'speed', 'warningBlocks', 'warningTime', 'x', 'z' )
@ -17,18 +17,18 @@ class PacketInitializeWorldBorder(Packet):
x : float
z : float
def __init__(self,
newDiameter:float | None = None,
oldDiameter:float | None = None,
portalTeleportBoundary:int | None = None,
speed:int | None = None,
warningBlocks:int | None = None,
warningTime:int | None = None,
x:float | None = None,
z:float | None = None,
def __init__(self, proto:int,
newDiameter:float=None,
oldDiameter:float=None,
portalTeleportBoundary:int=None,
speed:int=None,
warningBlocks:int=None,
warningTime:int=None,
x:float=None,
z:float=None,
**kwargs
):
super().__init__(
super().__init__(proto,
newDiameter=newDiameter,
oldDiameter=oldDiameter,
portalTeleportBoundary=portalTeleportBoundary,
@ -44,18 +44,10 @@ class PacketInitializeWorldBorder(Packet):
_ids : Dict[int, int] = {
755 : 32,
756 : 32,
757 : 32,
758 : 32,
759 : 29,
760 : 31,
761 : 30
757 : 32
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarLong ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
756 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarLong ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
757 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarLong ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
758 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarLong ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
759 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarInt ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
760 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarInt ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
761 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarInt ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ]
755 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarInt ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
756 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarInt ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ],
757 : [ ( 'x', Double ), ( 'z', Double ), ( 'oldDiameter', Double ), ( 'newDiameter', Double ), ( 'speed', VarInt ), ( 'portalTeleportBoundary', VarInt ), ( 'warningBlocks', VarInt ), ( 'warningTime', VarInt ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketKeepAlive(Packet):
__slots__ = ( 'id', 'keepAliveId' )
keepAliveId : int
def __init__(self,
keepAliveId:int | None = None,
def __init__(self, proto:int,
keepAliveId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
keepAliveId=keepAliveId
)
@ -57,11 +57,7 @@ class PacketKeepAlive(Packet):
751 : 31,
755 : 33,
756 : 33,
757 : 33,
758 : 33,
759 : 30,
760 : 32,
761 : 31
757 : 33
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'keepAliveId', VarInt ) ],
@ -100,9 +96,5 @@ class PacketKeepAlive(Packet):
751 : [ ( 'keepAliveId', Long ) ],
755 : [ ( 'keepAliveId', Long ) ],
756 : [ ( 'keepAliveId', Long ) ],
757 : [ ( 'keepAliveId', Long ) ],
758 : [ ( 'keepAliveId', Long ) ],
759 : [ ( 'keepAliveId', Long ) ],
760 : [ ( 'keepAliveId', Long ) ],
761 : [ ( 'keepAliveId', Long ) ]
757 : [ ( 'keepAliveId', Long ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketKickDisconnect(Packet):
__slots__ = ( 'id', 'reason' )
reason : str
def __init__(self,
reason:str | None = None,
def __init__(self, proto:int,
reason:str=None,
**kwargs
):
super().__init__(
super().__init__(proto,
reason=reason
)
@ -57,11 +57,7 @@ class PacketKickDisconnect(Packet):
751 : 25,
755 : 26,
756 : 26,
757 : 26,
758 : 26,
759 : 23,
760 : 25,
761 : 23
757 : 26
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'reason', String ) ],
@ -100,9 +96,5 @@ class PacketKickDisconnect(Packet):
751 : [ ( 'reason', String ) ],
755 : [ ( 'reason', String ) ],
756 : [ ( 'reason', String ) ],
757 : [ ( 'reason', String ) ],
758 : [ ( 'reason', String ) ],
759 : [ ( 'reason', String ) ],
760 : [ ( 'reason', String ) ],
761 : [ ( 'reason', String ) ]
757 : [ ( 'reason', String ) ]
}

View file

@ -2,13 +2,12 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketLogin(Packet):
__slots__ = ( 'id', 'death', 'difficulty', 'dimension', 'dimensionCodec', 'enableRespawnScreen', 'entityId', 'gameMode', 'hashedSeed', 'isDebug', 'isFlat', 'isHardcore', 'levelType', 'maxPlayers', 'previousGameMode', 'reducedDebugInfo', 'simulationDistance', 'viewDistance', 'worldName', 'worldNames', 'worldType' )
__slots__ = ( 'id', 'difficulty', 'dimension', 'dimensionCodec', 'enableRespawnScreen', 'entityId', 'gameMode', 'hashedSeed', 'isDebug', 'isFlat', 'isHardcore', 'levelType', 'maxPlayers', 'previousGameMode', 'reducedDebugInfo', 'simulationDistance', 'viewDistance', 'worldName', 'worldNames' )
death : tuple
difficulty : int
dimension : Union[dict,int,str]
dimensionCodec : dict
@ -27,33 +26,29 @@ class PacketLogin(Packet):
viewDistance : int
worldName : str
worldNames : list
worldType : str
def __init__(self,
death:tuple | None = None,
difficulty:int | None = None,
dimension:Union[dict,int,str] | None = None,
dimensionCodec:dict | None = None,
enableRespawnScreen:bool | None = None,
entityId:int | None = None,
gameMode:int | None = None,
hashedSeed:int | None = None,
isDebug:bool | None = None,
isFlat:bool | None = None,
isHardcore:bool | None = None,
levelType:str | None = None,
maxPlayers:int | None = None,
previousGameMode:int | None = None,
reducedDebugInfo:bool | None = None,
simulationDistance:int | None = None,
viewDistance:int | None = None,
worldName:str | None = None,
worldNames:list | None = None,
worldType:str | None = None,
def __init__(self, proto:int,
difficulty:int=None,
dimension:Union[dict,int,str]=None,
dimensionCodec:dict=None,
enableRespawnScreen:bool=None,
entityId:int=None,
gameMode:int=None,
hashedSeed:int=None,
isDebug:bool=None,
isFlat:bool=None,
isHardcore:bool=None,
levelType:str=None,
maxPlayers:int=None,
previousGameMode:int=None,
reducedDebugInfo:bool=None,
simulationDistance:int=None,
viewDistance:int=None,
worldName:str=None,
worldNames:list=None,
**kwargs
):
super().__init__(
death=death,
super().__init__(proto,
difficulty=difficulty,
dimension=dimension,
dimensionCodec=dimensionCodec,
@ -71,8 +66,7 @@ class PacketLogin(Packet):
simulationDistance=simulationDistance,
viewDistance=viewDistance,
worldName=worldName,
worldNames=worldNames,
worldType=worldType
worldNames=worldNames
)
_state : int = 3
@ -114,11 +108,7 @@ class PacketLogin(Packet):
751 : 36,
755 : 38,
756 : 38,
757 : 38,
758 : 38,
759 : 35,
760 : 37,
761 : 36
757 : 38
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', Int ), ( 'gameMode', Byte ), ( 'dimension', Byte ), ( 'difficulty', Byte ), ( 'maxPlayers', Byte ), ( 'levelType', String ), ( 'reducedDebugInfo', Boolean ) ],
@ -157,9 +147,5 @@ class PacketLogin(Packet):
751 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'dimension', NBTTag ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ) ],
755 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'dimension', NBTTag ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ) ],
756 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'dimension', NBTTag ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ) ],
757 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'dimension', NBTTag ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'simulationDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ) ],
758 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'dimension', NBTTag ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'simulationDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ) ],
759 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'worldType', String ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'simulationDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ), ( 'death', OptionalType(StructType(( 'dimensionName', String ), ( 'location', Position ), ), ) ) ],
760 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'worldType', String ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'simulationDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ), ( 'death', OptionalType(StructType(( 'dimensionName', String ), ( 'location', Position ), ), ) ) ],
761 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'worldType', String ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'simulationDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ), ( 'death', OptionalType(StructType(( 'dimensionName', String ), ( 'location', Position ), ), ) ) ]
757 : [ ( 'entityId', Int ), ( 'isHardcore', Boolean ), ( 'gameMode', Byte ), ( 'previousGameMode', Byte ), ( 'worldNames', ArrayType(String, VarInt, ) ), ( 'dimensionCodec', NBTTag ), ( 'dimension', NBTTag ), ( 'worldName', String ), ( 'hashedSeed', Long ), ( 'maxPlayers', VarInt ), ( 'viewDistance', VarInt ), ( 'simulationDistance', VarInt ), ( 'reducedDebugInfo', Boolean ), ( 'enableRespawnScreen', Boolean ), ( 'isDebug', Boolean ), ( 'isFlat', Boolean ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketMap(Packet):
__slots__ = ( 'id', 'columns', 'data', 'icons', 'itemDamage', 'locked', 'rows', 'scale', 'trackingPosition', 'x', 'y' )
@ -19,20 +19,20 @@ class PacketMap(Packet):
x : Union[None, int]
y : Union[None, int]
def __init__(self,
columns:int | None = None,
data:Union[None, bytes] | None = None,
icons:Union[list,tuple] | None = None,
itemDamage:int | None = None,
locked:bool | None = None,
rows:Union[None, int] | None = None,
scale:int | None = None,
trackingPosition:bool | None = None,
x:Union[None, int] | None = None,
y:Union[None, int] | None = None,
def __init__(self, proto:int,
columns:int=None,
data:Union[None, bytes]=None,
icons:Union[list,tuple]=None,
itemDamage:int=None,
locked:bool=None,
rows:Union[None, int]=None,
scale:int=None,
trackingPosition:bool=None,
x:Union[None, int]=None,
y:Union[None, int]=None,
**kwargs
):
super().__init__(
super().__init__(proto,
columns=columns,
data=data,
icons=icons,
@ -84,11 +84,7 @@ class PacketMap(Packet):
751 : 37,
755 : 39,
756 : 39,
757 : 39,
758 : 39,
759 : 36,
760 : 38,
761 : 37
757 : 39
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'icons', ArrayType(StructType(( 'directionAndType', Byte ), ( 'x', Byte ), ( 'z', Byte ), ), VarInt, ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
@ -127,9 +123,5 @@ class PacketMap(Packet):
751 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'trackingPosition', Boolean ), ( 'locked', Boolean ), ( 'icons', ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
755 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
756 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
757 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
758 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
759 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
760 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ],
761 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ]
757 : [ ( 'itemDamage', VarInt ), ( 'scale', Byte ), ( 'locked', Boolean ), ( 'icons', OptionalType(ArrayType(StructType(( 'type', VarInt ), ( 'x', Byte ), ( 'z', Byte ), ( 'direction', Byte ), ( 'displayName', OptionalType(String, ) ), ), VarInt, ), ) ), ( 'columns', Byte ), ( 'rows', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'x', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'y', SwitchType('columns', { 0 : Void }, Byte, ) ), ( 'data', SwitchType('columns', { 0 : Void }, ByteArray, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketMapChunk(Packet):
__slots__ = ( 'id', 'biomes', 'bitMap', 'blockEntities', 'blockLight', 'blockLightMask', 'chunkData', 'emptyBlockLightMask', 'emptySkyLightMask', 'groundUp', 'heightmaps', 'ignoreOldData', 'skyLight', 'skyLightMask', 'trustEdges', 'x', 'z' )
@ -25,26 +25,26 @@ class PacketMapChunk(Packet):
x : int
z : int
def __init__(self,
biomes:Union[Union[None, list],list] | None = None,
bitMap:Union[int,list] | None = None,
blockEntities:list | None = None,
blockLight:list | None = None,
blockLightMask:list | None = None,
chunkData:bytes | None = None,
emptyBlockLightMask:list | None = None,
emptySkyLightMask:list | None = None,
groundUp:bool | None = None,
heightmaps:dict | None = None,
ignoreOldData:bool | None = None,
skyLight:list | None = None,
skyLightMask:list | None = None,
trustEdges:bool | None = None,
x:int | None = None,
z:int | None = None,
def __init__(self, proto:int,
biomes:Union[Union[None, list],list]=None,
bitMap:Union[int,list]=None,
blockEntities:list=None,
blockLight:list=None,
blockLightMask:list=None,
chunkData:bytes=None,
emptyBlockLightMask:list=None,
emptySkyLightMask:list=None,
groundUp:bool=None,
heightmaps:dict=None,
ignoreOldData:bool=None,
skyLight:list=None,
skyLightMask:list=None,
trustEdges:bool=None,
x:int=None,
z:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
biomes=biomes,
bitMap=bitMap,
blockEntities=blockEntities,
@ -102,11 +102,7 @@ class PacketMapChunk(Packet):
751 : 32,
755 : 34,
756 : 34,
757 : 34,
758 : 34,
759 : 31,
760 : 33,
761 : 32
757 : 34
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'x', Int ), ( 'z', Int ), ( 'groundUp', Boolean ), ( 'bitMap', UnsignedShort ), ( 'chunkData', ByteArray ) ],
@ -145,9 +141,5 @@ class PacketMapChunk(Packet):
751 : [ ( 'x', Int ), ( 'z', Int ), ( 'groundUp', Boolean ), ( 'bitMap', VarInt ), ( 'heightmaps', NBTTag ), ( 'biomes', SwitchType('groundUp', { 'false' : Void, 'true' : ArrayType(VarInt, VarInt, ) }, None, ) ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(NBTTag, VarInt, ) ) ],
755 : [ ( 'x', Int ), ( 'z', Int ), ( 'bitMap', ArrayType(Long, VarInt, ) ), ( 'heightmaps', NBTTag ), ( 'biomes', ArrayType(VarInt, VarInt, ) ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(NBTTag, VarInt, ) ) ],
756 : [ ( 'x', Int ), ( 'z', Int ), ( 'bitMap', ArrayType(Long, VarInt, ) ), ( 'heightmaps', NBTTag ), ( 'biomes', ArrayType(VarInt, VarInt, ) ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(NBTTag, VarInt, ) ) ],
757 : [ ( 'x', Int ), ( 'z', Int ), ( 'heightmaps', NBTTag ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(TrailingData, VarInt, ) ), ( 'trustEdges', Boolean ), ( 'skyLightMask', ArrayType(Long, VarInt, ) ), ( 'blockLightMask', ArrayType(Long, VarInt, ) ), ( 'emptySkyLightMask', ArrayType(Long, VarInt, ) ), ( 'emptyBlockLightMask', ArrayType(Long, VarInt, ) ), ( 'skyLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ), ( 'blockLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ) ],
758 : [ ( 'x', Int ), ( 'z', Int ), ( 'heightmaps', NBTTag ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(TrailingData, VarInt, ) ), ( 'trustEdges', Boolean ), ( 'skyLightMask', ArrayType(Long, VarInt, ) ), ( 'blockLightMask', ArrayType(Long, VarInt, ) ), ( 'emptySkyLightMask', ArrayType(Long, VarInt, ) ), ( 'emptyBlockLightMask', ArrayType(Long, VarInt, ) ), ( 'skyLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ), ( 'blockLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ) ],
759 : [ ( 'x', Int ), ( 'z', Int ), ( 'heightmaps', NBTTag ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(TrailingData, VarInt, ) ), ( 'trustEdges', Boolean ), ( 'skyLightMask', ArrayType(Long, VarInt, ) ), ( 'blockLightMask', ArrayType(Long, VarInt, ) ), ( 'emptySkyLightMask', ArrayType(Long, VarInt, ) ), ( 'emptyBlockLightMask', ArrayType(Long, VarInt, ) ), ( 'skyLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ), ( 'blockLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ) ],
760 : [ ( 'x', Int ), ( 'z', Int ), ( 'heightmaps', NBTTag ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(TrailingData, VarInt, ) ), ( 'trustEdges', Boolean ), ( 'skyLightMask', ArrayType(Long, VarInt, ) ), ( 'blockLightMask', ArrayType(Long, VarInt, ) ), ( 'emptySkyLightMask', ArrayType(Long, VarInt, ) ), ( 'emptyBlockLightMask', ArrayType(Long, VarInt, ) ), ( 'skyLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ), ( 'blockLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ) ],
761 : [ ( 'x', Int ), ( 'z', Int ), ( 'heightmaps', NBTTag ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(TrailingData, VarInt, ) ), ( 'trustEdges', Boolean ), ( 'skyLightMask', ArrayType(Long, VarInt, ) ), ( 'blockLightMask', ArrayType(Long, VarInt, ) ), ( 'emptySkyLightMask', ArrayType(Long, VarInt, ) ), ( 'emptyBlockLightMask', ArrayType(Long, VarInt, ) ), ( 'skyLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ), ( 'blockLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ) ]
757 : [ ( 'x', Int ), ( 'z', Int ), ( 'heightmaps', NBTTag ), ( 'chunkData', ByteArray ), ( 'blockEntities', ArrayType(TrailingData, VarInt, ) ), ( 'trustEdges', Boolean ), ( 'skyLightMask', ArrayType(Long, VarInt, ) ), ( 'blockLightMask', ArrayType(Long, VarInt, ) ), ( 'emptySkyLightMask', ArrayType(Long, VarInt, ) ), ( 'emptyBlockLightMask', ArrayType(Long, VarInt, ) ), ( 'skyLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ), ( 'blockLight', ArrayType(ArrayType(Byte, VarInt, ), VarInt, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketMapChunkBulk(Packet):
__slots__ = ( 'id', 'data', 'meta', 'skyLightSent' )
@ -12,13 +12,13 @@ class PacketMapChunkBulk(Packet):
meta : list
skyLightSent : bool
def __init__(self,
data:bytes | None = None,
meta:list | None = None,
skyLightSent:bool | None = None,
def __init__(self, proto:int,
data:bytes=None,
meta:list=None,
skyLightSent:bool=None,
**kwargs
):
super().__init__(
super().__init__(proto,
data=data,
meta=meta,
skyLightSent=skyLightSent

View file

@ -2,35 +2,32 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketMultiBlockChange(Packet):
__slots__ = ( 'id', 'chunkCoordinates', 'chunkX', 'chunkZ', 'notTrustEdges', 'records', 'suppressLightUpdates' )
__slots__ = ( 'id', 'chunkCoordinates', 'chunkX', 'chunkZ', 'notTrustEdges', 'records' )
chunkCoordinates : int
chunkCoordinates : bytes
chunkX : int
chunkZ : int
notTrustEdges : bool
records : list
suppressLightUpdates : bool
def __init__(self,
chunkCoordinates:int | None = None,
chunkX:int | None = None,
chunkZ:int | None = None,
notTrustEdges:bool | None = None,
records:list | None = None,
suppressLightUpdates:bool | None = None,
def __init__(self, proto:int,
chunkCoordinates:bytes=None,
chunkX:int=None,
chunkZ:int=None,
notTrustEdges:bool=None,
records:list=None,
**kwargs
):
super().__init__(
super().__init__(proto,
chunkCoordinates=chunkCoordinates,
chunkX=chunkX,
chunkZ=chunkZ,
notTrustEdges=notTrustEdges,
records=records,
suppressLightUpdates=suppressLightUpdates
records=records
)
_state : int = 3
@ -72,11 +69,7 @@ class PacketMultiBlockChange(Packet):
751 : 59,
755 : 63,
756 : 63,
757 : 63,
758 : 63,
759 : 61,
760 : 64,
761 : 63
757 : 63
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'chunkX', Int ), ( 'chunkZ', Int ), ( 'records', ArrayType(StructType(( 'horizontalPos', Byte ), ( 'y', Byte ), ( 'blockId', VarInt ), ), VarInt, ) ) ],
@ -112,12 +105,8 @@ class PacketMultiBlockChange(Packet):
734 : [ ( 'chunkX', Int ), ( 'chunkZ', Int ), ( 'records', ArrayType(StructType(( 'horizontalPos', Byte ), ( 'y', Byte ), ( 'blockId', VarInt ), ), VarInt, ) ) ],
735 : [ ( 'chunkX', Int ), ( 'chunkZ', Int ), ( 'records', ArrayType(StructType(( 'horizontalPos', Byte ), ( 'y', Byte ), ( 'blockId', VarInt ), ), VarInt, ) ) ],
736 : [ ( 'chunkX', Int ), ( 'chunkZ', Int ), ( 'records', ArrayType(StructType(( 'horizontalPos', Byte ), ( 'y', Byte ), ( 'blockId', VarInt ), ), VarInt, ) ) ],
751 : [ ( 'chunkCoordinates', Long ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarLong, VarInt, ) ) ],
755 : [ ( 'chunkCoordinates', Long ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarLong, VarInt, ) ) ],
756 : [ ( 'chunkCoordinates', Long ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarLong, VarInt, ) ) ],
757 : [ ( 'chunkCoordinates', Long ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarLong, VarInt, ) ) ],
758 : [ ( 'chunkCoordinates', Long ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarLong, VarInt, ) ) ],
759 : [ ( 'chunkCoordinates', Long ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ],
760 : [ ( 'chunkCoordinates', Long ), ( 'suppressLightUpdates', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ],
761 : [ ( 'chunkCoordinates', Long ), ( 'suppressLightUpdates', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ]
751 : [ ( 'chunkCoordinates', Int ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ],
755 : [ ( 'chunkCoordinates', Int ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ],
756 : [ ( 'chunkCoordinates', Int ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ],
757 : [ ( 'chunkCoordinates', Int ), ( 'notTrustEdges', Boolean ), ( 'records', ArrayType(VarInt, VarInt, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketNamedEntitySpawn(Packet):
__slots__ = ( 'id', 'currentItem', 'entityId', 'metadata', 'pitch', 'playerUUID', 'x', 'y', 'yaw', 'z' )
@ -18,19 +18,19 @@ class PacketNamedEntitySpawn(Packet):
yaw : int
z : Union[float,int]
def __init__(self,
currentItem:int | None = None,
entityId:int | None = None,
metadata:dict | None = None,
pitch:int | None = None,
playerUUID:str | None = None,
x:Union[float,int] | None = None,
y:Union[float,int] | None = None,
yaw:int | None = None,
z:Union[float,int] | None = None,
def __init__(self, proto:int,
currentItem:int=None,
entityId:int=None,
metadata:dict=None,
pitch:int=None,
playerUUID:str=None,
x:Union[float,int]=None,
y:Union[float,int]=None,
yaw:int=None,
z:Union[float,int]=None,
**kwargs
):
super().__init__(
super().__init__(proto,
currentItem=currentItem,
entityId=entityId,
metadata=metadata,
@ -81,11 +81,7 @@ class PacketNamedEntitySpawn(Packet):
751 : 4,
755 : 4,
756 : 4,
757 : 4,
758 : 4,
759 : 2,
760 : 2,
761 : 2
757 : 4
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'yaw', Byte ), ( 'pitch', Byte ), ( 'currentItem', Short ), ( 'metadata', EntityMetadata ) ],
@ -124,9 +120,5 @@ class PacketNamedEntitySpawn(Packet):
751 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
755 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
756 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
757 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
758 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
759 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
760 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ],
761 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ]
757 : [ ( 'entityId', VarInt ), ( 'playerUUID', UUID ), ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Byte ), ( 'pitch', Byte ) ]
}

View file

@ -2,14 +2,13 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketNamedSoundEffect(Packet):
__slots__ = ( 'id', 'pitch', 'seed', 'soundCategory', 'soundName', 'volume', 'x', 'y', 'z' )
__slots__ = ( 'id', 'pitch', 'soundCategory', 'soundName', 'volume', 'x', 'y', 'z' )
pitch : Union[float,int]
seed : int
soundCategory : int
soundName : str
volume : float
@ -17,20 +16,18 @@ class PacketNamedSoundEffect(Packet):
y : int
z : int
def __init__(self,
pitch:Union[float,int] | None = None,
seed:int | None = None,
soundCategory:int | None = None,
soundName:str | None = None,
volume:float | None = None,
x:int | None = None,
y:int | None = None,
z:int | None = None,
def __init__(self, proto:int,
pitch:Union[float,int]=None,
soundCategory:int=None,
soundName:str=None,
volume:float=None,
x:int=None,
y:int=None,
z:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
pitch=pitch,
seed=seed,
soundCategory=soundCategory,
soundName=soundName,
volume=volume,
@ -78,10 +75,7 @@ class PacketNamedSoundEffect(Packet):
751 : 24,
755 : 25,
756 : 25,
757 : 25,
758 : 25,
759 : 22,
760 : 23
757 : 25
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'soundName', String ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Byte ) ],
@ -120,8 +114,5 @@ class PacketNamedSoundEffect(Packet):
751 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ) ],
755 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ) ],
756 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ) ],
757 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ) ],
758 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ) ],
759 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ), ( 'seed', Long ) ],
760 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ), ( 'seed', Long ) ]
757 : [ ( 'soundName', String ), ( 'soundCategory', VarInt ), ( 'x', Int ), ( 'y', Int ), ( 'z', Int ), ( 'volume', Float ), ( 'pitch', Float ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketNbtQueryResponse(Packet):
__slots__ = ( 'id', 'nbt', 'transactionId' )
@ -11,12 +11,12 @@ class PacketNbtQueryResponse(Packet):
nbt : Optional[dict]
transactionId : int
def __init__(self,
nbt:Optional[dict] | None = None,
transactionId:int | None = None,
def __init__(self, proto:int,
nbt:Optional[dict]=None,
transactionId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
nbt=nbt,
transactionId=transactionId
)
@ -43,11 +43,7 @@ class PacketNbtQueryResponse(Packet):
751 : 84,
755 : 95,
756 : 95,
757 : 96,
758 : 96,
759 : 97,
760 : 100,
761 : 98
757 : 96
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
393 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
@ -69,9 +65,5 @@ class PacketNbtQueryResponse(Packet):
751 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
755 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
756 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
757 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
758 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
759 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
760 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ],
761 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ]
757 : [ ( 'transactionId', VarInt ), ( 'nbt', OptionalType(NBTTag) ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketOpenBook(Packet):
__slots__ = ( 'id', 'hand' )
hand : int
def __init__(self,
hand:int | None = None,
def __init__(self, proto:int,
hand:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
hand=hand
)
@ -35,11 +35,7 @@ class PacketOpenBook(Packet):
751 : 44,
755 : 45,
756 : 45,
757 : 45,
758 : 45,
759 : 42,
760 : 44,
761 : 43
757 : 45
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
477 : [ ( 'hand', VarInt ) ],
@ -56,9 +52,5 @@ class PacketOpenBook(Packet):
751 : [ ( 'hand', VarInt ) ],
755 : [ ( 'hand', VarInt ) ],
756 : [ ( 'hand', VarInt ) ],
757 : [ ( 'hand', VarInt ) ],
758 : [ ( 'hand', VarInt ) ],
759 : [ ( 'hand', VarInt ) ],
760 : [ ( 'hand', VarInt ) ],
761 : [ ( 'hand', VarInt ) ]
757 : [ ( 'hand', VarInt ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketOpenHorseWindow(Packet):
__slots__ = ( 'id', 'entityId', 'nbSlots', 'windowId' )
@ -12,13 +12,13 @@ class PacketOpenHorseWindow(Packet):
nbSlots : int
windowId : int
def __init__(self,
entityId:int | None = None,
nbSlots:int | None = None,
windowId:int | None = None,
def __init__(self, proto:int,
entityId:int=None,
nbSlots:int=None,
windowId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
nbSlots=nbSlots,
windowId=windowId
@ -41,11 +41,7 @@ class PacketOpenHorseWindow(Packet):
751 : 30,
755 : 31,
756 : 31,
757 : 31,
758 : 31,
759 : 28,
760 : 30,
761 : 29
757 : 31
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
477 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
@ -62,9 +58,5 @@ class PacketOpenHorseWindow(Packet):
751 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
755 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
756 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
757 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
758 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
759 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
760 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ],
761 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ]
757 : [ ( 'windowId', Byte ), ( 'nbSlots', VarInt ), ( 'entityId', Int ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketOpenSignEntity(Packet):
__slots__ = ( 'id', 'location' )
location : tuple
def __init__(self,
location:tuple | None = None,
def __init__(self, proto:int,
location:tuple=None,
**kwargs
):
super().__init__(
super().__init__(proto,
location=location
)
@ -57,11 +57,7 @@ class PacketOpenSignEntity(Packet):
751 : 46,
755 : 47,
756 : 47,
757 : 47,
758 : 47,
759 : 44,
760 : 46,
761 : 45
757 : 47
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'location', Position ) ],
@ -100,9 +96,5 @@ class PacketOpenSignEntity(Packet):
751 : [ ( 'location', Position ) ],
755 : [ ( 'location', Position ) ],
756 : [ ( 'location', Position ) ],
757 : [ ( 'location', Position ) ],
758 : [ ( 'location', Position ) ],
759 : [ ( 'location', Position ) ],
760 : [ ( 'location', Position ) ],
761 : [ ( 'location', Position ) ]
757 : [ ( 'location', Position ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketOpenWindow(Packet):
__slots__ = ( 'id', 'entityId', 'inventoryType', 'slotCount', 'windowId', 'windowTitle' )
@ -14,15 +14,15 @@ class PacketOpenWindow(Packet):
windowId : int
windowTitle : str
def __init__(self,
entityId:Union[None, int] | None = None,
inventoryType:Union[int,str] | None = None,
slotCount:int | None = None,
windowId:int | None = None,
windowTitle:str | None = None,
def __init__(self, proto:int,
entityId:Union[None, int]=None,
inventoryType:Union[int,str]=None,
slotCount:int=None,
windowId:int=None,
windowTitle:str=None,
**kwargs
):
super().__init__(
super().__init__(proto,
entityId=entityId,
inventoryType=inventoryType,
slotCount=slotCount,
@ -69,11 +69,7 @@ class PacketOpenWindow(Packet):
751 : 45,
755 : 46,
756 : 46,
757 : 46,
758 : 46,
759 : 43,
760 : 45,
761 : 44
757 : 46
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'windowId', Byte ), ( 'inventoryType', String ), ( 'windowTitle', String ), ( 'slotCount', Byte ), ( 'entityId', SwitchType('inventoryType', { 'EntityHorse' : Int }, None, ) ) ],
@ -112,9 +108,5 @@ class PacketOpenWindow(Packet):
751 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
755 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
756 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
757 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
758 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
759 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
760 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ],
761 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ]
757 : [ ( 'windowId', VarInt ), ( 'inventoryType', VarInt ), ( 'windowTitle', String ) ]
}

View file

@ -2,19 +2,19 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketPing(Packet):
__slots__ = ( 'id', 'id' )
id : int
def __init__(self,
id:int | None = None,
def __init__(self, proto:int,
id:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
id=id
)
@ -23,18 +23,10 @@ class PacketPing(Packet):
_ids : Dict[int, int] = {
755 : 48,
756 : 48,
757 : 48,
758 : 48,
759 : 45,
760 : 47,
761 : 46
757 : 48
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
755 : [ ( 'id', Int ) ],
756 : [ ( 'id', Int ) ],
757 : [ ( 'id', Int ) ],
758 : [ ( 'id', Int ) ],
759 : [ ( 'id', Int ) ],
760 : [ ( 'id', Int ) ],
761 : [ ( 'id', Int ) ]
757 : [ ( 'id', Int ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketPlayerInfo(Packet):
__slots__ = ( 'id', 'action', 'data' )
@ -11,12 +11,12 @@ class PacketPlayerInfo(Packet):
action : int
data : list
def __init__(self,
action:int | None = None,
data:list | None = None,
def __init__(self, proto:int,
action:int=None,
data:list=None,
**kwargs
):
super().__init__(
super().__init__(proto,
action=action,
data=data
)
@ -60,11 +60,7 @@ class PacketPlayerInfo(Packet):
751 : 50,
755 : 54,
756 : 54,
757 : 54,
758 : 54,
759 : 52,
760 : 55,
761 : 54
757 : 54
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ],
@ -103,9 +99,5 @@ class PacketPlayerInfo(Packet):
751 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ],
755 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ],
756 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ],
757 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ],
758 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ],
759 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ( 'crypto', SwitchType('action', { 0 : OptionalType(StructType(( 'timestamp', Long ), ( 'publicKey', ByteArray ), ( 'signature', ByteArray ), ), ) }, None, ) ), ), VarInt, ) ) ],
760 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ( 'crypto', SwitchType('action', { 0 : OptionalType(StructType(( 'timestamp', Long ), ( 'publicKey', ByteArray ), ( 'signature', ByteArray ), ), ) }, None, ) ), ), VarInt, ) ) ],
761 : [ ( 'action', Byte ), ( 'data', ArrayType(StructType(( 'uuid', UUID ), ( 'player', SwitchType('action', { 1 : TrailingData, 3 : TrailingData, 5 : TrailingData, 7 : TrailingData, 9 : TrailingData, 11 : TrailingData, 13 : TrailingData, 15 : TrailingData, 17 : TrailingData, 19 : TrailingData, 21 : TrailingData, 23 : TrailingData, 25 : TrailingData, 27 : TrailingData, 29 : TrailingData, 31 : TrailingData, 33 : TrailingData, 35 : TrailingData, 37 : TrailingData, 39 : TrailingData, 41 : TrailingData, 43 : TrailingData, 45 : TrailingData, 47 : TrailingData, 49 : TrailingData, 51 : TrailingData, 53 : TrailingData, 55 : TrailingData, 57 : TrailingData, 59 : TrailingData, 61 : TrailingData, 63 : TrailingData }, None, ) ), ( 'chatSession', SwitchType('action', { 2 : TrailingData, 3 : TrailingData, 6 : TrailingData, 7 : TrailingData, 10 : TrailingData, 11 : TrailingData, 14 : TrailingData, 15 : TrailingData, 18 : TrailingData, 19 : TrailingData, 22 : TrailingData, 23 : TrailingData, 26 : TrailingData, 27 : TrailingData, 30 : TrailingData, 31 : TrailingData, 34 : TrailingData, 35 : TrailingData, 38 : TrailingData, 39 : TrailingData, 42 : TrailingData, 43 : TrailingData, 46 : TrailingData, 47 : TrailingData, 50 : TrailingData, 51 : TrailingData, 54 : TrailingData, 55 : TrailingData, 58 : TrailingData, 59 : TrailingData, 62 : TrailingData, 63 : TrailingData }, None, ) ), ( 'gamemode', SwitchType('action', { 4 : VarInt, 5 : VarInt, 6 : VarInt, 7 : VarInt, 12 : VarInt, 13 : VarInt, 14 : VarInt, 15 : VarInt, 20 : VarInt, 21 : VarInt, 22 : VarInt, 23 : VarInt, 28 : VarInt, 29 : VarInt, 30 : VarInt, 31 : VarInt, 36 : VarInt, 37 : VarInt, 38 : VarInt, 39 : VarInt, 44 : VarInt, 45 : VarInt, 46 : VarInt, 47 : VarInt, 52 : VarInt, 53 : VarInt, 54 : VarInt, 55 : VarInt, 60 : VarInt, 61 : VarInt, 62 : VarInt, 63 : VarInt }, None, ) ), ( 'listed', SwitchType('action', { 8 : Boolean, 9 : Boolean, 10 : Boolean, 11 : Boolean, 12 : Boolean, 13 : Boolean, 14 : Boolean, 15 : Boolean, 24 : Boolean, 25 : Boolean, 26 : Boolean, 27 : Boolean, 28 : Boolean, 29 : Boolean, 30 : Boolean, 31 : Boolean, 40 : Boolean, 41 : Boolean, 42 : Boolean, 43 : Boolean, 44 : Boolean, 45 : Boolean, 46 : Boolean, 47 : Boolean, 56 : Boolean, 57 : Boolean, 58 : Boolean, 59 : Boolean, 60 : Boolean, 61 : Boolean, 62 : Boolean, 63 : Boolean }, None, ) ), ( 'latency', SwitchType('action', { 16 : VarInt, 17 : VarInt, 18 : VarInt, 19 : VarInt, 20 : VarInt, 21 : VarInt, 22 : VarInt, 23 : VarInt, 24 : VarInt, 25 : VarInt, 26 : VarInt, 27 : VarInt, 28 : VarInt, 29 : VarInt, 30 : VarInt, 31 : VarInt, 48 : VarInt, 49 : VarInt, 50 : VarInt, 51 : VarInt, 52 : VarInt, 53 : VarInt, 54 : VarInt, 55 : VarInt, 56 : VarInt, 57 : VarInt, 58 : VarInt, 59 : VarInt, 60 : VarInt, 61 : VarInt, 62 : VarInt, 63 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 32 : OptionalType(String, ), 33 : OptionalType(String, ), 34 : OptionalType(String, ), 35 : OptionalType(String, ), 36 : OptionalType(String, ), 37 : OptionalType(String, ), 38 : OptionalType(String, ), 39 : OptionalType(String, ), 40 : OptionalType(String, ), 41 : OptionalType(String, ), 42 : OptionalType(String, ), 43 : OptionalType(String, ), 44 : OptionalType(String, ), 45 : OptionalType(String, ), 46 : OptionalType(String, ), 47 : OptionalType(String, ), 48 : OptionalType(String, ), 49 : OptionalType(String, ), 50 : OptionalType(String, ), 51 : OptionalType(String, ), 52 : OptionalType(String, ), 53 : OptionalType(String, ), 54 : OptionalType(String, ), 55 : OptionalType(String, ), 56 : OptionalType(String, ), 57 : OptionalType(String, ), 58 : OptionalType(String, ), 59 : OptionalType(String, ), 60 : OptionalType(String, ), 61 : OptionalType(String, ), 62 : OptionalType(String, ), 63 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ]
757 : [ ( 'action', VarInt ), ( 'data', ArrayType(StructType(( 'UUID', UUID ), ( 'name', SwitchType('action', { 0 : String }, None, ) ), ( 'properties', SwitchType('action', { 0 : ArrayType(StructType(( 'name', String ), ( 'value', String ), ( 'signature', OptionalType(String, ) ), ), VarInt, ) }, None, ) ), ( 'gamemode', SwitchType('action', { 0 : VarInt, 1 : VarInt }, None, ) ), ( 'ping', SwitchType('action', { 0 : VarInt, 2 : VarInt }, None, ) ), ( 'displayName', SwitchType('action', { 0 : OptionalType(String, ), 3 : OptionalType(String, ) }, None, ) ), ), VarInt, ) ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketPlayerlistHeader(Packet):
__slots__ = ( 'id', 'footer', 'header' )
@ -11,12 +11,12 @@ class PacketPlayerlistHeader(Packet):
footer : str
header : str
def __init__(self,
footer:str | None = None,
header:str | None = None,
def __init__(self, proto:int,
footer:str=None,
header:str=None,
**kwargs
):
super().__init__(
super().__init__(proto,
footer=footer,
header=header
)
@ -60,11 +60,7 @@ class PacketPlayerlistHeader(Packet):
751 : 83,
755 : 94,
756 : 94,
757 : 95,
758 : 95,
759 : 96,
760 : 99,
761 : 97
757 : 95
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'header', String ), ( 'footer', String ) ],
@ -103,9 +99,5 @@ class PacketPlayerlistHeader(Packet):
751 : [ ( 'header', String ), ( 'footer', String ) ],
755 : [ ( 'header', String ), ( 'footer', String ) ],
756 : [ ( 'header', String ), ( 'footer', String ) ],
757 : [ ( 'header', String ), ( 'footer', String ) ],
758 : [ ( 'header', String ), ( 'footer', String ) ],
759 : [ ( 'header', String ), ( 'footer', String ) ],
760 : [ ( 'header', String ), ( 'footer', String ) ],
761 : [ ( 'header', String ), ( 'footer', String ) ]
757 : [ ( 'header', String ), ( 'footer', String ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketPosition(Packet):
__slots__ = ( 'id', 'dismountVehicle', 'flags', 'pitch', 'teleportId', 'x', 'y', 'yaw', 'z' )
@ -17,18 +17,18 @@ class PacketPosition(Packet):
yaw : float
z : float
def __init__(self,
dismountVehicle:bool | None = None,
flags:int | None = None,
pitch:float | None = None,
teleportId:int | None = None,
x:float | None = None,
y:float | None = None,
yaw:float | None = None,
z:float | None = None,
def __init__(self, proto:int,
dismountVehicle:bool=None,
flags:int=None,
pitch:float=None,
teleportId:int=None,
x:float=None,
y:float=None,
yaw:float=None,
z:float=None,
**kwargs
):
super().__init__(
super().__init__(proto,
dismountVehicle=dismountVehicle,
flags=flags,
pitch=pitch,
@ -78,11 +78,7 @@ class PacketPosition(Packet):
751 : 52,
755 : 56,
756 : 56,
757 : 56,
758 : 56,
759 : 54,
760 : 57,
761 : 56
757 : 56
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ) ],
@ -121,9 +117,5 @@ class PacketPosition(Packet):
751 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ) ],
755 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ],
756 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ],
757 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ],
758 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ],
759 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ],
760 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ],
761 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ]
757 : [ ( 'x', Double ), ( 'y', Double ), ( 'z', Double ), ( 'yaw', Float ), ( 'pitch', Float ), ( 'flags', Byte ), ( 'teleportId', VarInt ), ( 'dismountVehicle', Boolean ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketRelEntityMove(Packet):
__slots__ = ( 'id', 'dX', 'dY', 'dZ', 'entityId', 'onGround' )
@ -14,15 +14,15 @@ class PacketRelEntityMove(Packet):
entityId : int
onGround : bool
def __init__(self,
dX:int | None = None,
dY:int | None = None,
dZ:int | None = None,
entityId:int | None = None,
onGround:bool | None = None,
def __init__(self, proto:int,
dX:int=None,
dY:int=None,
dZ:int=None,
entityId:int=None,
onGround:bool=None,
**kwargs
):
super().__init__(
super().__init__(proto,
dX=dX,
dY=dY,
dZ=dZ,
@ -69,11 +69,7 @@ class PacketRelEntityMove(Packet):
751 : 39,
755 : 41,
756 : 41,
757 : 41,
758 : 41,
759 : 38,
760 : 40,
761 : 39
757 : 41
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'dX', Byte ), ( 'dY', Byte ), ( 'dZ', Byte ), ( 'onGround', Boolean ) ],
@ -112,9 +108,5 @@ class PacketRelEntityMove(Packet):
751 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
755 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
756 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
757 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
758 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
759 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
760 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ],
761 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ]
757 : [ ( 'entityId', VarInt ), ( 'dX', Short ), ( 'dY', Short ), ( 'dZ', Short ), ( 'onGround', Boolean ) ]
}

View file

@ -2,8 +2,8 @@
from typing import Tuple, List, Dict, Union, Optional
from ....packet import Packet
from ....definitions import *
from ....types import *
from ....primitives import *
class PacketRemoveEntityEffect(Packet):
__slots__ = ( 'id', 'effectId', 'entityId' )
@ -11,12 +11,12 @@ class PacketRemoveEntityEffect(Packet):
effectId : int
entityId : int
def __init__(self,
effectId:int | None = None,
entityId:int | None = None,
def __init__(self, proto:int,
effectId:int=None,
entityId:int=None,
**kwargs
):
super().__init__(
super().__init__(proto,
effectId=effectId,
entityId=entityId
)
@ -60,11 +60,7 @@ class PacketRemoveEntityEffect(Packet):
751 : 55,
755 : 59,
756 : 59,
757 : 59,
758 : 59,
759 : 57,
760 : 60,
761 : 59
757 : 59
}
_definitions : Dict[int, List[Tuple[str, Type]]] = {
47 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ) ],
@ -103,9 +99,5 @@ class PacketRemoveEntityEffect(Packet):
751 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ) ],
755 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ) ],
756 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ) ],
757 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ) ],
758 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ) ],
759 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ) ],
760 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ) ],
761 : [ ( 'entityId', VarInt ), ( 'effectId', VarInt ) ]
757 : [ ( 'entityId', VarInt ), ( 'effectId', Byte ) ]
}

Some files were not shown because too many files have changed in this diff Show more