mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-07 16:01:55 +01:00
Most client packets are writtable, same for server packets and readability
This commit is contained in:
parent
43957805fd
commit
07ab4ac090
@ -2,45 +2,54 @@ package net.minestom.server.entity;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minestom.server.adventure.AdventureSerializer;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.chat.ColoredText;
|
||||
import net.minestom.server.chat.JsonMessage;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.server.play.EntityMetaDataPacket;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.Direction;
|
||||
import net.minestom.server.utils.Position;
|
||||
import net.minestom.server.utils.Vector;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import net.minestom.server.utils.binary.Readable;
|
||||
import net.minestom.server.utils.binary.Writeable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBT;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTEnd;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTException;
|
||||
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class Metadata {
|
||||
|
||||
// METADATA TYPES
|
||||
|
||||
public static Value<Byte> Byte(byte value) {
|
||||
return new Value<>(TYPE_BYTE, value, writer -> writer.writeByte(value));
|
||||
return new Value<>(TYPE_BYTE, value, writer -> writer.writeByte(value), BinaryReader::readByte);
|
||||
}
|
||||
|
||||
public static Value<Integer> VarInt(int value) {
|
||||
return new Value<>(TYPE_VARINT, value, writer -> writer.writeVarInt(value));
|
||||
return new Value<>(TYPE_VARINT, value, writer -> writer.writeVarInt(value), BinaryReader::readVarInt);
|
||||
}
|
||||
|
||||
public static Value<Float> Float(float value) {
|
||||
return new Value<>(TYPE_FLOAT, value, writer -> writer.writeFloat(value));
|
||||
return new Value<>(TYPE_FLOAT, value, writer -> writer.writeFloat(value), BinaryReader::readFloat);
|
||||
}
|
||||
|
||||
public static Value<String> String(@NotNull String value) {
|
||||
return new Value<>(TYPE_STRING, value, writer -> writer.writeSizedString(value));
|
||||
return new Value<>(TYPE_STRING, value, writer -> writer.writeSizedString(value), reader -> reader.readSizedString(Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static Value<JsonMessage> Chat(@NotNull JsonMessage value) {
|
||||
return new Value<>(TYPE_CHAT, value, writer -> writer.writeSizedString(value.toString()));
|
||||
return new Value<>(TYPE_CHAT, value, writer -> writer.writeSizedString(value.toString()), reader -> reader.readJsonMessage(Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -51,11 +60,19 @@ public class Metadata {
|
||||
if (present) {
|
||||
writer.writeSizedString(value.toString());
|
||||
}
|
||||
},
|
||||
reader -> {
|
||||
boolean present = reader.readBoolean();
|
||||
if(present) {
|
||||
return reader.readJsonMessage(Integer.MAX_VALUE);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Value<Component> Chat(@NotNull Component value) {
|
||||
return new Value<>(TYPE_CHAT, value, writer -> writer.writeSizedString(AdventureSerializer.serialize(value)));
|
||||
return new Value<>(TYPE_CHAT, value, writer -> writer.writeSizedString(AdventureSerializer.serialize(value)), reader -> reader.readComponent(Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
public static Value<Component> OptChat(@Nullable Component value) {
|
||||
@ -65,15 +82,21 @@ public class Metadata {
|
||||
if (present) {
|
||||
writer.writeSizedString(AdventureSerializer.serialize(value));
|
||||
}
|
||||
}, reader -> {
|
||||
boolean present = reader.readBoolean();
|
||||
if(present) {
|
||||
return reader.readComponent(Integer.MAX_VALUE);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
public static Value<ItemStack> Slot(@NotNull ItemStack value) {
|
||||
return new Value<>(TYPE_SLOT, value, writer -> writer.writeItemStack(value));
|
||||
return new Value<>(TYPE_SLOT, value, writer -> writer.writeItemStack(value), BinaryReader::readItemStack);
|
||||
}
|
||||
|
||||
public static Value<Boolean> Boolean(boolean value) {
|
||||
return new Value<>(TYPE_BOOLEAN, value, writer -> writer.writeBoolean(value));
|
||||
return new Value<>(TYPE_BOOLEAN, value, writer -> writer.writeBoolean(value), BinaryReader::readBoolean);
|
||||
}
|
||||
|
||||
public static Value<Vector> Rotation(@NotNull Vector value) {
|
||||
@ -81,11 +104,11 @@ public class Metadata {
|
||||
writer.writeFloat((float) value.getX());
|
||||
writer.writeFloat((float) value.getY());
|
||||
writer.writeFloat((float) value.getZ());
|
||||
});
|
||||
}, reader -> new Vector(reader.readFloat(), reader.readFloat(), reader.readFloat()));
|
||||
}
|
||||
|
||||
public static Value<BlockPosition> Position(@NotNull BlockPosition value) {
|
||||
return new Value<>(TYPE_POSITION, value, writer -> writer.writeBlockPosition(value));
|
||||
return new Value<>(TYPE_POSITION, value, writer -> writer.writeBlockPosition(value), BinaryReader::readBlockPosition);
|
||||
}
|
||||
|
||||
public static Value<BlockPosition> OptPosition(@Nullable BlockPosition value) {
|
||||
@ -95,11 +118,18 @@ public class Metadata {
|
||||
if (present) {
|
||||
writer.writeBlockPosition(value);
|
||||
}
|
||||
}, reader -> {
|
||||
boolean present = reader.readBoolean();
|
||||
if(present) {
|
||||
return reader.readBlockPosition();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Value<Direction> Direction(@NotNull Direction value) {
|
||||
return new Value<>(TYPE_DIRECTION, value, writer -> writer.writeVarInt(value.ordinal()));
|
||||
return new Value<>(TYPE_DIRECTION, value, writer -> writer.writeVarInt(value.ordinal()), reader -> Direction.values()[reader.readVarInt()]);
|
||||
}
|
||||
|
||||
public static Value<UUID> OptUUID(@Nullable UUID value) {
|
||||
@ -109,6 +139,13 @@ public class Metadata {
|
||||
if (present) {
|
||||
writer.writeUuid(value);
|
||||
}
|
||||
}, reader -> {
|
||||
boolean present = reader.readBoolean();
|
||||
if(present) {
|
||||
return reader.readUuid();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -116,11 +153,27 @@ public class Metadata {
|
||||
return new Value<>(TYPE_OPTBLOCKID, value, writer -> {
|
||||
final boolean present = value != null;
|
||||
writer.writeVarInt(present ? value : 0);
|
||||
}, reader -> {
|
||||
boolean present = reader.readBoolean();
|
||||
if(present) {
|
||||
return reader.readVarInt();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Value<NBT> NBT(@NotNull NBT nbt) {
|
||||
return new Value<>(TYPE_NBT, nbt, writer -> writer.writeNBT("", nbt));
|
||||
return new Value<>(TYPE_NBT, nbt, writer -> {
|
||||
writer.writeNBT("", nbt);
|
||||
}, reader -> {
|
||||
try {
|
||||
return reader.readTag();
|
||||
} catch (IOException | NBTException e) {
|
||||
MinecraftServer.getExceptionManager().handleException(e);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Value<int[]> VillagerData(int villagerType,
|
||||
@ -130,6 +183,10 @@ public class Metadata {
|
||||
writer.writeVarInt(villagerType);
|
||||
writer.writeVarInt(villagerProfession);
|
||||
writer.writeVarInt(level);
|
||||
}, reader -> new int[] {
|
||||
reader.readVarInt(),
|
||||
reader.readVarInt(),
|
||||
reader.readVarInt()
|
||||
});
|
||||
}
|
||||
|
||||
@ -137,11 +194,18 @@ public class Metadata {
|
||||
return new Value<>(TYPE_OPTVARINT, value, writer -> {
|
||||
final boolean present = value != null;
|
||||
writer.writeVarInt(present ? value + 1 : 0);
|
||||
}, reader -> {
|
||||
boolean present = reader.readBoolean();
|
||||
if(present) {
|
||||
return reader.readVarInt();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Value<Entity.Pose> Pose(@NotNull Entity.Pose value) {
|
||||
return new Value<>(TYPE_POSE, value, writer -> writer.writeVarInt(value.ordinal()));
|
||||
return new Value<>(TYPE_POSE, value, writer -> writer.writeVarInt(value.ordinal()), reader -> Entity.Pose.values()[reader.readVarInt()]);
|
||||
}
|
||||
|
||||
public static final byte TYPE_BYTE = 0;
|
||||
@ -236,14 +300,20 @@ public class Metadata {
|
||||
|
||||
public static class Entry<T> implements Writeable {
|
||||
|
||||
protected final byte index;
|
||||
protected final Value<T> value;
|
||||
protected byte index;
|
||||
protected Value<T> value;
|
||||
|
||||
public Entry(byte index, @NotNull Value<T> value) {
|
||||
this.index = index;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public Entry(BinaryReader reader) {
|
||||
this.index = reader.readByte();
|
||||
int type = reader.readVarInt();
|
||||
value = Metadata.read(type, reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(index);
|
||||
@ -260,16 +330,70 @@ public class Metadata {
|
||||
}
|
||||
}
|
||||
|
||||
public static class Value<T> implements Writeable {
|
||||
private static <T> Value<T> getCorrespondingNewEmptyValue(int type) {
|
||||
switch(type) {
|
||||
case TYPE_BYTE:
|
||||
return (Value<T>) Byte((byte) 0);
|
||||
case TYPE_VARINT:
|
||||
return (Value<T>) VarInt(0);
|
||||
case TYPE_FLOAT:
|
||||
return (Value<T>) Float(0);
|
||||
case TYPE_STRING:
|
||||
return (Value<T>) String("");
|
||||
case TYPE_CHAT:
|
||||
return (Value<T>) Chat(ColoredText.of(""));
|
||||
case TYPE_OPTCHAT:
|
||||
return (Value<T>) OptChat((Component) null);
|
||||
case TYPE_SLOT:
|
||||
return (Value<T>) Slot(ItemStack.getAirItem());
|
||||
case TYPE_BOOLEAN:
|
||||
return (Value<T>) Boolean(false);
|
||||
case TYPE_ROTATION:
|
||||
return (Value<T>) Rotation(new Vector());
|
||||
case TYPE_POSITION:
|
||||
return (Value<T>) Position(new BlockPosition(0,0,0));
|
||||
case TYPE_OPTPOSITION:
|
||||
return (Value<T>) OptPosition(null);
|
||||
case TYPE_DIRECTION:
|
||||
return (Value<T>) Direction(Direction.DOWN);
|
||||
case TYPE_OPTUUID:
|
||||
return (Value<T>) OptUUID(null);
|
||||
case TYPE_OPTBLOCKID:
|
||||
return (Value<T>) OptBlockID(null);
|
||||
case TYPE_NBT:
|
||||
return (Value<T>) NBT(new NBTEnd());
|
||||
case TYPE_PARTICLE:
|
||||
throw new UnsupportedOperationException();
|
||||
case TYPE_VILLAGERDATA:
|
||||
return (Value<T>) VillagerData(0,0,0);
|
||||
case TYPE_OPTVARINT:
|
||||
return (Value<T>) OptVarInt(null);
|
||||
case TYPE_POSE:
|
||||
return (Value<T>) Pose(Entity.Pose.STANDING);
|
||||
|
||||
default:
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
private static <T> Value<T> read(int type, BinaryReader reader) {
|
||||
Value<T> value = getCorrespondingNewEmptyValue(type);
|
||||
value.read(reader);
|
||||
return value;
|
||||
}
|
||||
|
||||
public static class Value<T> implements Writeable, Readable {
|
||||
|
||||
protected final int type;
|
||||
protected final T value;
|
||||
protected T value;
|
||||
protected final Consumer<BinaryWriter> valueWriter;
|
||||
protected final Function<BinaryReader, T> readingFunction;
|
||||
|
||||
public Value(int type, T value, @NotNull Consumer<BinaryWriter> valueWriter) {
|
||||
public Value(int type, T value, @NotNull Consumer<BinaryWriter> valueWriter, @NotNull Function<BinaryReader, T> readingFunction) {
|
||||
this.type = type;
|
||||
this.value = value;
|
||||
this.valueWriter = valueWriter;
|
||||
this.readingFunction = readingFunction;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -278,6 +402,12 @@ public class Metadata {
|
||||
this.valueWriter.accept(writer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
// skip type, will be read somewhere else
|
||||
value = readingFunction.apply(reader);
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ public class FakePlayerController {
|
||||
public void closeWindow() {
|
||||
Inventory openInventory = fakePlayer.getOpenInventory();
|
||||
|
||||
ClientCloseWindow closeWindow = new ClientCloseWindow();
|
||||
ClientCloseWindowPacket closeWindow = new ClientCloseWindowPacket();
|
||||
closeWindow.windowId = openInventory == null ? 0 : openInventory.getWindowId();
|
||||
addToQueue(closeWindow);
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import net.minestom.server.inventory.InventoryClickHandler;
|
||||
import net.minestom.server.inventory.PlayerInventory;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.client.play.ClientClickWindowPacket;
|
||||
import net.minestom.server.network.packet.client.play.ClientCloseWindow;
|
||||
import net.minestom.server.network.packet.client.play.ClientCloseWindowPacket;
|
||||
import net.minestom.server.network.packet.client.play.ClientWindowConfirmationPacket;
|
||||
import net.minestom.server.network.packet.server.play.SetSlotPacket;
|
||||
import net.minestom.server.network.packet.server.play.WindowConfirmationPacket;
|
||||
@ -96,7 +96,7 @@ public class WindowListener {
|
||||
player.getPlayerConnection().sendPacket(windowConfirmationPacket);
|
||||
}
|
||||
|
||||
public static void closeWindowListener(ClientCloseWindow packet, Player player) {
|
||||
public static void closeWindowListener(ClientCloseWindowPacket packet, Player player) {
|
||||
// if windowId == 0 then it is player's inventory, meaning that they hadn't been any open inventory packet
|
||||
InventoryCloseEvent inventoryCloseEvent = new InventoryCloseEvent(player.getOpenInventory(), player);
|
||||
player.callEvent(InventoryCloseEvent.class, inventoryCloseEvent);
|
||||
|
@ -27,7 +27,7 @@ public final class PacketListenerManager {
|
||||
setListener(ClientKeepAlivePacket.class, KeepAliveListener::listener);
|
||||
setListener(ClientChatMessagePacket.class, ChatMessageListener::listener);
|
||||
setListener(ClientClickWindowPacket.class, WindowListener::clickWindowListener);
|
||||
setListener(ClientCloseWindow.class, WindowListener::closeWindowListener);
|
||||
setListener(ClientCloseWindowPacket.class, WindowListener::closeWindowListener);
|
||||
setListener(ClientWindowConfirmationPacket.class, WindowListener::windowConfirmationListener);
|
||||
setListener(ClientEntityActionPacket.class, EntityActionListener::listener);
|
||||
setListener(ClientHeldItemChangePacket.class, PlayerHeldListener::heldListener);
|
||||
|
@ -14,7 +14,7 @@ public class ClientPlayPacketsHandler extends ClientPacketsHandler {
|
||||
register(0x07, ClientWindowConfirmationPacket::new);
|
||||
register(0x08, ClientClickWindowButtonPacket::new);
|
||||
register(0x09, ClientClickWindowPacket::new);
|
||||
register(0x0A, ClientCloseWindow::new);
|
||||
register(0x0A, ClientCloseWindowPacket::new);
|
||||
register(0x0B, ClientPluginMessagePacket::new);
|
||||
register(0x0C, ClientEditBookPacket::new);
|
||||
register(0x0D, ClientQueryEntityNbtPacket::new);
|
||||
|
@ -3,12 +3,13 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.advancements.AdvancementAction;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientAdvancementTabPacket extends ClientPlayPacket {
|
||||
|
||||
public AdvancementAction action;
|
||||
public String tabIdentifier;
|
||||
public AdvancementAction action = AdvancementAction.OPENED_TAB;
|
||||
public String tabIdentifier = "";
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
@ -19,4 +20,15 @@ public class ClientAdvancementTabPacket extends ClientPlayPacket {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(action.ordinal());
|
||||
|
||||
if(action == AdvancementAction.OPENED_TAB) {
|
||||
if(tabIdentifier.length() > 256) {
|
||||
throw new IllegalArgumentException("Tab identifier cannot be longer than 256 characters.");
|
||||
}
|
||||
writer.writeSizedString(tabIdentifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,20 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientAnimationPacket extends ClientPlayPacket {
|
||||
|
||||
public Player.Hand hand;
|
||||
public Player.Hand hand = Player.Hand.MAIN;
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.hand = Player.Hand.values()[reader.readVarInt()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(hand.ordinal());
|
||||
}
|
||||
}
|
||||
|
@ -2,14 +2,23 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientChatMessagePacket extends ClientPlayPacket {
|
||||
|
||||
public String message;
|
||||
public String message = "";
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.message = reader.readSizedString(256);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
if(message.length() > 256) {
|
||||
throw new IllegalArgumentException("Message cannot be more than 256 characters long.");
|
||||
}
|
||||
writer.writeSizedString(message);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientClickWindowButtonPacket extends ClientPlayPacket {
|
||||
@ -14,4 +15,10 @@ public class ClientClickWindowButtonPacket extends ClientPlayPacket {
|
||||
this.windowId = reader.readByte();
|
||||
this.buttonId = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(windowId);
|
||||
writer.writeByte(buttonId);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientClickWindowPacket extends ClientPlayPacket {
|
||||
@ -12,7 +13,7 @@ public class ClientClickWindowPacket extends ClientPlayPacket {
|
||||
public byte button;
|
||||
public short actionNumber;
|
||||
public int mode;
|
||||
public ItemStack item;
|
||||
public ItemStack item = ItemStack.getAirItem();
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
@ -23,4 +24,14 @@ public class ClientClickWindowPacket extends ClientPlayPacket {
|
||||
this.mode = reader.readVarInt();
|
||||
this.item = reader.readItemStack();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(windowId);
|
||||
writer.writeShort(slot);
|
||||
writer.writeByte(button);
|
||||
writer.writeShort(actionNumber);
|
||||
writer.writeVarInt(mode);
|
||||
writer.writeItemStack(item);
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,10 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientCloseWindow extends ClientPlayPacket {
|
||||
public class ClientCloseWindowPacket extends ClientPlayPacket {
|
||||
|
||||
public int windowId;
|
||||
|
||||
@ -12,4 +13,9 @@ public class ClientCloseWindow extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.windowId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(windowId);
|
||||
}
|
||||
}
|
@ -2,12 +2,13 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientCraftRecipeRequest extends ClientPlayPacket {
|
||||
|
||||
public byte windowId;
|
||||
public String recipe;
|
||||
public String recipe = "";
|
||||
public boolean makeAll;
|
||||
|
||||
@Override
|
||||
@ -16,4 +17,14 @@ public class ClientCraftRecipeRequest extends ClientPlayPacket {
|
||||
this.recipe = reader.readSizedString(256);
|
||||
this.makeAll = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(windowId);
|
||||
if(recipe.length() > 256) {
|
||||
throw new IllegalArgumentException("'recipe' cannot be longer than 256 characters.");
|
||||
}
|
||||
writer.writeSizedString(recipe);
|
||||
writer.writeBoolean(makeAll);
|
||||
}
|
||||
}
|
||||
|
@ -3,16 +3,23 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientCreativeInventoryActionPacket extends ClientPlayPacket {
|
||||
|
||||
public short slot;
|
||||
public ItemStack item;
|
||||
public ItemStack item = ItemStack.getAirItem();
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.slot = reader.readShort();
|
||||
this.item = reader.readItemStack();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeShort(slot);
|
||||
writer.writeItemStack(item);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientHeldItemChangePacket extends ClientPlayPacket {
|
||||
@ -12,4 +13,9 @@ public class ClientHeldItemChangePacket extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.slot = reader.readShort();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeShort(slot);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientKeepAlivePacket extends ClientPlayPacket {
|
||||
@ -12,4 +13,9 @@ public class ClientKeepAlivePacket extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.id = reader.readLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeLong(id);
|
||||
}
|
||||
}
|
||||
|
@ -2,14 +2,23 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientNameItemPacket extends ClientPlayPacket {
|
||||
|
||||
public String itemName;
|
||||
public String itemName = "";
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.itemName = reader.readSizedString(Short.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
if(itemName.length() > Short.MAX_VALUE) {
|
||||
throw new IllegalArgumentException("Item name cannot be longer than Short.MAX_VALUE characters!");
|
||||
}
|
||||
writer.writeSizedString(itemName);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientPickItemPacket extends ClientPlayPacket {
|
||||
@ -12,4 +13,9 @@ public class ClientPickItemPacket extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.slotToUse = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(slotToUse);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientPlayerPacket extends ClientPlayPacket {
|
||||
@ -12,4 +13,9 @@ public class ClientPlayerPacket extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientPlayerPositionAndRotationPacket extends ClientPlayPacket {
|
||||
@ -21,4 +22,16 @@ public class ClientPlayerPositionAndRotationPacket extends ClientPlayPacket {
|
||||
|
||||
this.onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeDouble(x);
|
||||
writer.writeDouble(y);
|
||||
writer.writeDouble(z);
|
||||
|
||||
writer.writeFloat(yaw);
|
||||
writer.writeFloat(pitch);
|
||||
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientPlayerPositionPacket extends ClientPlayPacket {
|
||||
@ -17,4 +18,13 @@ public class ClientPlayerPositionPacket extends ClientPlayPacket {
|
||||
|
||||
this.onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeDouble(x);
|
||||
writer.writeDouble(y);
|
||||
writer.writeDouble(z);
|
||||
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientPlayerRotationPacket extends ClientPlayPacket {
|
||||
@ -15,4 +16,11 @@ public class ClientPlayerRotationPacket extends ClientPlayPacket {
|
||||
this.pitch = reader.readFloat();
|
||||
this.onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeFloat(yaw);
|
||||
writer.writeFloat(pitch);
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
}
|
||||
|
@ -2,16 +2,25 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientPluginMessagePacket extends ClientPlayPacket {
|
||||
|
||||
public String channel;
|
||||
public byte[] data;
|
||||
public String channel = "";
|
||||
public byte[] data = new byte[0];
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.channel = reader.readSizedString(256);
|
||||
this.data = reader.getRemainingBytes();
|
||||
this.data = reader.readRemainingBytes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
if(channel.length() > 256)
|
||||
throw new IllegalArgumentException("Channel cannot be more than 256 characters long");
|
||||
writer.writeSizedString(channel);
|
||||
writer.writeBytes(data);
|
||||
}
|
||||
}
|
||||
|
@ -3,16 +3,23 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientQueryBlockNbtPacket extends ClientPlayPacket {
|
||||
|
||||
public int transactionId;
|
||||
public BlockPosition blockPosition;
|
||||
public BlockPosition blockPosition = new BlockPosition(0,0,0);
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.transactionId = reader.readVarInt();
|
||||
this.blockPosition = reader.readBlockPosition();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(transactionId);
|
||||
writer.writeBlockPosition(blockPosition);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientQueryEntityNbtPacket extends ClientPlayPacket {
|
||||
@ -14,4 +15,10 @@ public class ClientQueryEntityNbtPacket extends ClientPlayPacket {
|
||||
this.transactionId = reader.readVarInt();
|
||||
this.entityId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(transactionId);
|
||||
writer.writeVarInt(entityId);
|
||||
}
|
||||
}
|
||||
|
@ -2,13 +2,14 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientRecipeBookData extends ClientPlayPacket {
|
||||
|
||||
public int type;
|
||||
|
||||
public String recipeId;
|
||||
public String recipeId = "";
|
||||
|
||||
public boolean craftingRecipeBookOpen;
|
||||
public boolean craftingRecipeFilterActive;
|
||||
@ -39,4 +40,28 @@ public class ClientRecipeBookData extends ClientPlayPacket {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(type);
|
||||
|
||||
switch (type) {
|
||||
case 0:
|
||||
if(recipeId.length() > 256)
|
||||
throw new IllegalArgumentException("recipeId must be less than 256 bytes");
|
||||
writer.writeSizedString(recipeId);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
writer.writeBoolean(this.craftingRecipeBookOpen);
|
||||
writer.writeBoolean(this.craftingRecipeFilterActive);
|
||||
writer.writeBoolean(this.smeltingRecipeBookOpen);
|
||||
writer.writeBoolean(this.smeltingRecipeFilterActive);
|
||||
writer.writeBoolean(this.blastingRecipeBookOpen);
|
||||
writer.writeBoolean(this.blastingRecipeFilterActive);
|
||||
writer.writeBoolean(this.smokingRecipeBookOpen);
|
||||
writer.writeBoolean(this.smokingRecipeFilterActive);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,15 +3,20 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.resourcepack.ResourcePackStatus;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientResourcePackStatusPacket extends ClientPlayPacket {
|
||||
|
||||
public ResourcePackStatus result;
|
||||
public ResourcePackStatus result = ResourcePackStatus.SUCCESS;
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.result = ResourcePackStatus.values()[reader.readVarInt()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(result.ordinal());
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientSelectTradePacket extends ClientPlayPacket {
|
||||
@ -12,4 +13,9 @@ public class ClientSelectTradePacket extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.selectedSlot = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(selectedSlot);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientSetBeaconEffectPacket extends ClientPlayPacket {
|
||||
@ -14,4 +15,10 @@ public class ClientSetBeaconEffectPacket extends ClientPlayPacket {
|
||||
this.primaryEffect = reader.readVarInt();
|
||||
this.secondaryEffect = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(primaryEffect);
|
||||
writer.writeVarInt(secondaryEffect);
|
||||
}
|
||||
}
|
||||
|
@ -2,16 +2,22 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ClientSpectatePacket extends ClientPlayPacket {
|
||||
|
||||
public UUID targetUuid;
|
||||
public UUID targetUuid = new UUID(0,0);
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.targetUuid = reader.readUuid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeUuid(targetUuid);
|
||||
}
|
||||
}
|
||||
|
@ -2,17 +2,27 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientStatusPacket extends ClientPlayPacket {
|
||||
|
||||
public Action action;
|
||||
|
||||
public ClientStatusPacket() {
|
||||
action = Action.REQUEST_STATS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.action = Action.values()[reader.readVarInt()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(action.ordinal());
|
||||
}
|
||||
|
||||
public enum Action {
|
||||
PERFORM_RESPAWN,
|
||||
REQUEST_STATS
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientSteerBoatPacket extends ClientPlayPacket {
|
||||
@ -14,4 +15,10 @@ public class ClientSteerBoatPacket extends ClientPlayPacket {
|
||||
this.leftPaddleTurning = reader.readBoolean();
|
||||
this.rightPaddleTurning = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBoolean(leftPaddleTurning);
|
||||
writer.writeBoolean(rightPaddleTurning);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientSteerVehiclePacket extends ClientPlayPacket {
|
||||
@ -16,4 +17,11 @@ public class ClientSteerVehiclePacket extends ClientPlayPacket {
|
||||
this.forward = reader.readFloat();
|
||||
this.flags = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeFloat(sideways);
|
||||
writer.writeFloat(forward);
|
||||
writer.writeByte(flags);
|
||||
}
|
||||
}
|
||||
|
@ -2,16 +2,23 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientTabCompletePacket extends ClientPlayPacket {
|
||||
|
||||
public int transactionId;
|
||||
public String text;
|
||||
public String text = "";
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.transactionId = reader.readVarInt();
|
||||
this.text = reader.readSizedString(Short.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(transactionId);
|
||||
writer.writeSizedString(text);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientTeleportConfirmPacket extends ClientPlayPacket {
|
||||
@ -12,4 +13,9 @@ public class ClientTeleportConfirmPacket extends ClientPlayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.teleportId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(teleportId);
|
||||
}
|
||||
}
|
||||
|
@ -2,12 +2,13 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientUpdateCommandBlockMinecartPacket extends ClientPlayPacket {
|
||||
|
||||
public int entityId;
|
||||
public String command;
|
||||
public String command = "";
|
||||
public boolean trackOutput;
|
||||
|
||||
@Override
|
||||
@ -16,4 +17,11 @@ public class ClientUpdateCommandBlockMinecartPacket extends ClientPlayPacket {
|
||||
this.command = reader.readSizedString(Short.MAX_VALUE);
|
||||
this.trackOutput = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
writer.writeSizedString(command);
|
||||
writer.writeBoolean(trackOutput);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientUpdateCommandBlockPacket extends ClientPlayPacket {
|
||||
@ -12,6 +13,12 @@ public class ClientUpdateCommandBlockPacket extends ClientPlayPacket {
|
||||
public Mode mode;
|
||||
public byte flags;
|
||||
|
||||
public ClientUpdateCommandBlockPacket() {
|
||||
blockPosition = new BlockPosition(0,0,0);
|
||||
command = "";
|
||||
mode = Mode.REDSTONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.blockPosition = reader.readBlockPosition();
|
||||
@ -20,6 +27,14 @@ public class ClientUpdateCommandBlockPacket extends ClientPlayPacket {
|
||||
this.flags = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBlockPosition(blockPosition);
|
||||
writer.writeSizedString(command);
|
||||
writer.writeVarInt(mode.ordinal());
|
||||
writer.writeByte(flags);
|
||||
}
|
||||
|
||||
public enum Mode {
|
||||
SEQUENCE, AUTO, REDSTONE
|
||||
}
|
||||
|
@ -3,15 +3,16 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientUpdateSignPacket extends ClientPlayPacket {
|
||||
|
||||
public BlockPosition blockPosition;
|
||||
public String line1;
|
||||
public String line2;
|
||||
public String line3;
|
||||
public String line4;
|
||||
public BlockPosition blockPosition = new BlockPosition(0,0,0);
|
||||
public String line1 = "";
|
||||
public String line2 = "";
|
||||
public String line3 = "";
|
||||
public String line4 = "";
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
@ -20,6 +21,22 @@ public class ClientUpdateSignPacket extends ClientPlayPacket {
|
||||
this.line2 = reader.readSizedString(384);
|
||||
this.line3 = reader.readSizedString(384);
|
||||
this.line4 = reader.readSizedString(384);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBlockPosition(blockPosition);
|
||||
if(line1.length() > 384)
|
||||
throw new IllegalArgumentException("line1 is too long! Signs allow a maximum of 384 characters per line.");
|
||||
if(line2.length() > 384)
|
||||
throw new IllegalArgumentException("line2 is too long! Signs allow a maximum of 384 characters per line.");
|
||||
if(line3.length() > 384)
|
||||
throw new IllegalArgumentException("line3 is too long! Signs allow a maximum of 384 characters per line.");
|
||||
if(line4.length() > 384)
|
||||
throw new IllegalArgumentException("line4 is too long! Signs allow a maximum of 384 characters per line.");
|
||||
writer.writeSizedString(line1);
|
||||
writer.writeSizedString(line2);
|
||||
writer.writeSizedString(line3);
|
||||
writer.writeSizedString(line4);
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,20 @@ package net.minestom.server.network.packet.client.play;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientUseItemPacket extends ClientPlayPacket {
|
||||
|
||||
public Player.Hand hand;
|
||||
public Player.Hand hand = Player.Hand.MAIN;
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.hand = Player.Hand.values()[reader.readVarInt()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(hand.ordinal());
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientVehicleMovePacket extends ClientPlayPacket {
|
||||
@ -18,4 +19,13 @@ public class ClientVehicleMovePacket extends ClientPlayPacket {
|
||||
this.yaw = reader.readFloat();
|
||||
this.pitch = reader.readFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeDouble(x);
|
||||
writer.writeDouble(y);
|
||||
writer.writeDouble(z);
|
||||
writer.writeFloat(yaw);
|
||||
writer.writeFloat(pitch);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.network.packet.client.ClientPlayPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientWindowConfirmationPacket extends ClientPlayPacket {
|
||||
@ -16,4 +17,11 @@ public class ClientWindowConfirmationPacket extends ClientPlayPacket {
|
||||
this.actionNumber = reader.readShort();
|
||||
this.accepted = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(windowId);
|
||||
writer.writeShort(actionNumber);
|
||||
writer.writeBoolean(accepted);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.client.status;
|
||||
import net.minestom.server.network.packet.client.ClientPreplayPacket;
|
||||
import net.minestom.server.network.player.PlayerConnection;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class LegacyServerListPingPacket implements ClientPreplayPacket {
|
||||
@ -18,4 +19,9 @@ public class LegacyServerListPingPacket implements ClientPreplayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.payload = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(payload);
|
||||
}
|
||||
}
|
||||
|
@ -4,12 +4,15 @@ import net.minestom.server.network.packet.client.ClientPreplayPacket;
|
||||
import net.minestom.server.network.packet.server.status.PongPacket;
|
||||
import net.minestom.server.network.player.PlayerConnection;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PingPacket implements ClientPreplayPacket {
|
||||
|
||||
private long number;
|
||||
|
||||
public PingPacket() {}
|
||||
|
||||
@Override
|
||||
public void process(@NotNull PlayerConnection connection) {
|
||||
PongPacket pongPacket = new PongPacket(number);
|
||||
@ -21,4 +24,9 @@ public class PingPacket implements ClientPreplayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
this.number = reader.readLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeLong(number);
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import net.minestom.server.network.player.PlayerConnection;
|
||||
import net.minestom.server.ping.ResponseData;
|
||||
import net.minestom.server.ping.ResponseDataConsumer;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class StatusRequestPacket implements ClientPreplayPacket {
|
||||
@ -37,4 +38,9 @@ public class StatusRequestPacket implements ClientPreplayPacket {
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
// Empty
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Empty
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,20 @@ public class AttachEntityPacket implements ServerPacket {
|
||||
public int attachedEntityId;
|
||||
public int holdingEntityId; // Or -1 to detach
|
||||
|
||||
public AttachEntityPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeInt(attachedEntityId);
|
||||
writer.writeInt(holdingEntityId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
attachedEntityId = reader.readInt();
|
||||
holdingEntityId = reader.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ATTACH_ENTITY;
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -13,6 +14,10 @@ public class BlockActionPacket implements ServerPacket {
|
||||
public byte actionParam;
|
||||
public int blockId;
|
||||
|
||||
public BlockActionPacket() {
|
||||
blockPosition = new BlockPosition(0,0,0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBlockPosition(blockPosition);
|
||||
@ -21,6 +26,14 @@ public class BlockActionPacket implements ServerPacket {
|
||||
writer.writeVarInt(blockId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
blockPosition = reader.readBlockPosition();
|
||||
actionId = reader.readByte();
|
||||
actionParam = reader.readByte();
|
||||
blockId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.BLOCK_ACTION;
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -13,7 +14,7 @@ public class BlockBreakAnimationPacket implements ServerPacket {
|
||||
public byte destroyStage;
|
||||
|
||||
public BlockBreakAnimationPacket() {
|
||||
|
||||
blockPosition = new BlockPosition(0,0,0);
|
||||
}
|
||||
|
||||
public BlockBreakAnimationPacket(int entityId, BlockPosition blockPosition, byte destroyStage) {
|
||||
@ -29,6 +30,13 @@ public class BlockBreakAnimationPacket implements ServerPacket {
|
||||
writer.writeByte(destroyStage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
blockPosition = reader.readBlockPosition();
|
||||
destroyStage = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.BLOCK_BREAK_ANIMATION;
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -11,12 +12,22 @@ public class BlockChangePacket implements ServerPacket {
|
||||
public BlockPosition blockPosition;
|
||||
public int blockStateId;
|
||||
|
||||
public BlockChangePacket() {
|
||||
blockPosition = new BlockPosition(0,0,0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBlockPosition(blockPosition);
|
||||
writer.writeVarInt(blockStateId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
blockPosition = reader.readBlockPosition();
|
||||
blockStateId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.BLOCK_CHANGE;
|
||||
|
@ -1,11 +1,17 @@
|
||||
package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBT;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTCompound;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class BlockEntityDataPacket implements ServerPacket {
|
||||
|
||||
@ -13,6 +19,10 @@ public class BlockEntityDataPacket implements ServerPacket {
|
||||
public byte action;
|
||||
public NBTCompound nbtCompound;
|
||||
|
||||
public BlockEntityDataPacket() {
|
||||
blockPosition = new BlockPosition(0,0,0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeBlockPosition(blockPosition);
|
||||
@ -25,6 +35,20 @@ public class BlockEntityDataPacket implements ServerPacket {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
blockPosition = reader.readBlockPosition();;
|
||||
action = reader.readByte();
|
||||
try {
|
||||
NBT tag = reader.readTag();
|
||||
if(tag instanceof NBTCompound) {
|
||||
nbtCompound = (NBTCompound) tag;
|
||||
}
|
||||
} catch (IOException | NBTException e) {
|
||||
MinecraftServer.getExceptionManager().handleException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.BLOCK_ENTITY_DATA;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -9,11 +10,18 @@ public class CameraPacket implements ServerPacket {
|
||||
|
||||
public int cameraId;
|
||||
|
||||
public CameraPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(cameraId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
cameraId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.CAMERA;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,22 @@ public class ChangeGameStatePacket implements ServerPacket {
|
||||
public Reason reason;
|
||||
public float value;
|
||||
|
||||
public ChangeGameStatePacket() {
|
||||
reason = Reason.NO_RESPAWN_BLOCK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte((byte) reason.ordinal());
|
||||
writer.writeFloat(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
reason = Reason.values()[reader.readByte()];
|
||||
value = reader.readFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.CHANGE_GAME_STATE;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -9,11 +10,18 @@ public class CloseWindowPacket implements ServerPacket {
|
||||
|
||||
public byte windowId;
|
||||
|
||||
public CloseWindowPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(windowId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
windowId = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.CLOSE_WINDOW;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -11,6 +12,8 @@ public class CollectItemPacket implements ServerPacket {
|
||||
public int collectorEntityId;
|
||||
public int pickupItemCount;
|
||||
|
||||
public CollectItemPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(collectedEntityId);
|
||||
@ -18,6 +21,13 @@ public class CollectItemPacket implements ServerPacket {
|
||||
writer.writeVarInt(pickupItemCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
collectedEntityId = reader.readVarInt();
|
||||
collectorEntityId = reader.readVarInt();
|
||||
pickupItemCount = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.COLLECT_ITEM;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,22 @@ public class CraftRecipeResponse implements ServerPacket {
|
||||
public byte windowId;
|
||||
public String recipe;
|
||||
|
||||
public CraftRecipeResponse() {
|
||||
recipe = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(windowId);
|
||||
writer.writeSizedString(recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
windowId = reader.readByte();
|
||||
recipe = reader.readSizedString(Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.CRAFT_RECIPE_RESPONSE;
|
||||
|
@ -3,13 +3,18 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import net.minestom.server.utils.binary.Readable;
|
||||
import net.minestom.server.utils.binary.Writeable;
|
||||
import net.minestom.server.utils.validate.Check;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class DeclareRecipesPacket implements ServerPacket {
|
||||
|
||||
public DeclaredRecipe[] recipes;
|
||||
public DeclaredRecipe[] recipes = new DeclaredRecipe[0];
|
||||
|
||||
public DeclareRecipesPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
@ -21,12 +26,59 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
int recipeCount = reader.readVarInt();
|
||||
recipes = new DeclaredRecipe[recipeCount];
|
||||
for (int i = 0; i < recipeCount; i++) {
|
||||
String type = reader.readSizedString(Integer.MAX_VALUE);
|
||||
String id = reader.readSizedString(Integer.MAX_VALUE);
|
||||
|
||||
switch (type) {
|
||||
case "crafting_shapeless":
|
||||
recipes[i] = new DeclaredShapelessCraftingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "crafting_shaped":
|
||||
recipes[i] = new DeclaredShapedCraftingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "smelting":
|
||||
recipes[i] = new DeclaredSmeltingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "blasting":
|
||||
recipes[i] = new DeclaredBlastingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "smoking":
|
||||
recipes[i] = new DeclaredSmokingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "campfire_cooking":
|
||||
recipes[i] = new DeclaredCampfireCookingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "stonecutter":
|
||||
recipes[i] = new DeclaredStonecutterRecipe(id, reader);
|
||||
break;
|
||||
|
||||
case "smithing":
|
||||
recipes[i] = new DeclaredSmithingRecipe(id, reader);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new UnsupportedOperationException("Unrecognized type: "+type+" (id is "+id+")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.DECLARE_RECIPES;
|
||||
}
|
||||
|
||||
public abstract static class DeclaredRecipe {
|
||||
public abstract static class DeclaredRecipe implements Writeable, Readable {
|
||||
protected final String recipeId;
|
||||
protected final String recipeType;
|
||||
|
||||
@ -39,12 +91,17 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
writer.writeSizedString(recipeType);
|
||||
writer.writeSizedString(recipeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
throw new UnsupportedOperationException("'read' must be implemented inside subclasses!");
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredShapelessCraftingRecipe extends DeclaredRecipe {
|
||||
private final String group;
|
||||
private final Ingredient[] ingredients;
|
||||
private final ItemStack result;
|
||||
private String group;
|
||||
private Ingredient[] ingredients;
|
||||
private ItemStack result;
|
||||
|
||||
public DeclaredShapelessCraftingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -58,6 +115,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
private DeclaredShapelessCraftingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "crafting_shapeless");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -70,14 +132,26 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
}
|
||||
writer.writeItemStack(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
int count = reader.readVarInt();
|
||||
ingredients = new Ingredient[count];
|
||||
for (int i = 0; i < count; i++) {
|
||||
ingredients[i] = new Ingredient();
|
||||
ingredients[i].read(reader);
|
||||
}
|
||||
result = reader.readItemStack();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredShapedCraftingRecipe extends DeclaredRecipe {
|
||||
public final int width;
|
||||
public final int height;
|
||||
private final String group;
|
||||
private final Ingredient[] ingredients;
|
||||
private final ItemStack result;
|
||||
public int width;
|
||||
public int height;
|
||||
private String group;
|
||||
private Ingredient[] ingredients;
|
||||
private ItemStack result;
|
||||
|
||||
public DeclaredShapedCraftingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -95,6 +169,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
private DeclaredShapedCraftingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "crafting_shaped");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -108,14 +187,27 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
}
|
||||
writer.writeItemStack(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
width = reader.readVarInt();
|
||||
height = reader.readVarInt();
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
ingredients = new Ingredient[width*height];
|
||||
for (int i = 0; i < width * height; i++) {
|
||||
ingredients[i] = new Ingredient();
|
||||
ingredients[i].read(reader);
|
||||
}
|
||||
result = reader.readItemStack();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredSmeltingRecipe extends DeclaredRecipe {
|
||||
private final String group;
|
||||
private final Ingredient ingredient;
|
||||
private final ItemStack result;
|
||||
private final float experience;
|
||||
private final int cookingTime;
|
||||
private String group;
|
||||
private Ingredient ingredient;
|
||||
private ItemStack result;
|
||||
private float experience;
|
||||
private int cookingTime;
|
||||
|
||||
public DeclaredSmeltingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -133,6 +225,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.cookingTime = cookingTime;
|
||||
}
|
||||
|
||||
private DeclaredSmeltingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "smelting");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -144,14 +241,24 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
writer.writeFloat(experience);
|
||||
writer.writeVarInt(cookingTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
ingredient = new Ingredient();
|
||||
ingredient.read(reader);
|
||||
result = reader.readItemStack();
|
||||
experience = reader.readFloat();
|
||||
cookingTime = reader.readVarInt();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredBlastingRecipe extends DeclaredRecipe {
|
||||
private final String group;
|
||||
private final Ingredient ingredient;
|
||||
private final ItemStack result;
|
||||
private final float experience;
|
||||
private final int cookingTime;
|
||||
private String group;
|
||||
private Ingredient ingredient;
|
||||
private ItemStack result;
|
||||
private float experience;
|
||||
private int cookingTime;
|
||||
|
||||
public DeclaredBlastingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -169,6 +276,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.cookingTime = cookingTime;
|
||||
}
|
||||
|
||||
private DeclaredBlastingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "blasting");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -180,14 +292,24 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
writer.writeFloat(experience);
|
||||
writer.writeVarInt(cookingTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
ingredient = new Ingredient();
|
||||
ingredient.read(reader);
|
||||
result = reader.readItemStack();
|
||||
experience = reader.readFloat();
|
||||
cookingTime = reader.readVarInt();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredSmokingRecipe extends DeclaredRecipe {
|
||||
private final String group;
|
||||
private final Ingredient ingredient;
|
||||
private final ItemStack result;
|
||||
private final float experience;
|
||||
private final int cookingTime;
|
||||
private String group;
|
||||
private Ingredient ingredient;
|
||||
private ItemStack result;
|
||||
private float experience;
|
||||
private int cookingTime;
|
||||
|
||||
public DeclaredSmokingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -205,6 +327,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.cookingTime = cookingTime;
|
||||
}
|
||||
|
||||
private DeclaredSmokingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "smoking");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -216,14 +343,24 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
writer.writeFloat(experience);
|
||||
writer.writeVarInt(cookingTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
ingredient = new Ingredient();
|
||||
ingredient.read(reader);
|
||||
result = reader.readItemStack();
|
||||
experience = reader.readFloat();
|
||||
cookingTime = reader.readVarInt();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredCampfireCookingRecipe extends DeclaredRecipe {
|
||||
private final String group;
|
||||
private final Ingredient ingredient;
|
||||
private final ItemStack result;
|
||||
private final float experience;
|
||||
private final int cookingTime;
|
||||
private String group;
|
||||
private Ingredient ingredient;
|
||||
private ItemStack result;
|
||||
private float experience;
|
||||
private int cookingTime;
|
||||
|
||||
public DeclaredCampfireCookingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -241,6 +378,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.cookingTime = cookingTime;
|
||||
}
|
||||
|
||||
private DeclaredCampfireCookingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "campfire_cooking");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -252,12 +394,22 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
writer.writeFloat(experience);
|
||||
writer.writeVarInt(cookingTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
ingredient = new Ingredient();
|
||||
ingredient.read(reader);
|
||||
result = reader.readItemStack();
|
||||
experience = reader.readFloat();
|
||||
cookingTime = reader.readVarInt();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeclaredStonecutterRecipe extends DeclaredRecipe {
|
||||
private final String group;
|
||||
private final Ingredient ingredient;
|
||||
private final ItemStack result;
|
||||
private String group;
|
||||
private Ingredient ingredient;
|
||||
private ItemStack result;
|
||||
|
||||
public DeclaredStonecutterRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -271,6 +423,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
private DeclaredStonecutterRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "stonecutter");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -280,12 +437,20 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
ingredient.write(writer);
|
||||
writer.writeItemStack(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
group = reader.readSizedString(Integer.MAX_VALUE);
|
||||
ingredient = new Ingredient();
|
||||
ingredient.read( reader);
|
||||
result = reader.readItemStack();
|
||||
}
|
||||
}
|
||||
|
||||
public final static class DeclaredSmithingRecipe extends DeclaredRecipe {
|
||||
private final Ingredient base;
|
||||
private final Ingredient addition;
|
||||
private final ItemStack result;
|
||||
private Ingredient base;
|
||||
private Ingredient addition;
|
||||
private ItemStack result;
|
||||
|
||||
public DeclaredSmithingRecipe(
|
||||
@NotNull String recipeId,
|
||||
@ -299,6 +464,11 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
private DeclaredSmithingRecipe(@NotNull String recipeId, @NotNull BinaryReader reader) {
|
||||
super(recipeId, "smithing");
|
||||
read(reader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
// Write type & id
|
||||
@ -308,19 +478,35 @@ public class DeclareRecipesPacket implements ServerPacket {
|
||||
addition.write(writer);
|
||||
writer.writeItemStack(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
base = new Ingredient();
|
||||
addition = new Ingredient();
|
||||
base.read(reader);
|
||||
addition.read(reader);
|
||||
result = reader.readItemStack();
|
||||
}
|
||||
}
|
||||
|
||||
public static class Ingredient {
|
||||
public static class Ingredient implements Writeable, Readable {
|
||||
|
||||
// The count of each item should be 1
|
||||
public ItemStack[] items;
|
||||
public ItemStack[] items = new ItemStack[0];
|
||||
|
||||
private void write(BinaryWriter writer) {
|
||||
public void write(BinaryWriter writer) {
|
||||
writer.writeVarInt(items.length);
|
||||
for (ItemStack itemStack : items) {
|
||||
writer.writeItemStack(itemStack);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
items = new ItemStack[reader.readVarInt()];
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
items[i] = reader.readItemStack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,18 +2,26 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class DestroyEntitiesPacket implements ServerPacket {
|
||||
|
||||
public int[] entityIds;
|
||||
public int[] entityIds = new int[0];
|
||||
|
||||
public DestroyEntitiesPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarIntArray(entityIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityIds = reader.readVarIntArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.DESTROY_ENTITIES;
|
||||
|
@ -4,6 +4,7 @@ import net.kyori.adventure.text.Component;
|
||||
import net.minestom.server.network.packet.server.ComponentHoldingServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -22,11 +23,20 @@ public class DisconnectPacket implements ComponentHoldingServerPacket {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
private DisconnectPacket() {
|
||||
this(Component.text("Disconnected."));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeComponent(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
message = reader.readComponent(Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.DISCONNECT;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,22 @@ public class DisplayScoreboardPacket implements ServerPacket {
|
||||
public byte position;
|
||||
public String scoreName;
|
||||
|
||||
public DisplayScoreboardPacket() {
|
||||
scoreName = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(position);
|
||||
writer.writeSizedString(scoreName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
position = reader.readByte();
|
||||
scoreName = reader.readSizedString(Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.DISPLAY_SCOREBOARD;
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.BlockPosition;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -13,6 +14,10 @@ public class EffectPacket implements ServerPacket {
|
||||
public int data;
|
||||
public boolean disableRelativeVolume;
|
||||
|
||||
public EffectPacket() {
|
||||
position = new BlockPosition(0,0,0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeInt(effectId);
|
||||
@ -21,6 +26,14 @@ public class EffectPacket implements ServerPacket {
|
||||
writer.writeBoolean(disableRelativeVolume);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
effectId = reader.readInt();
|
||||
position = reader.readBlockPosition();
|
||||
data = reader.readInt();
|
||||
disableRelativeVolume = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.EFFECT;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,22 @@ public class EntityAnimationPacket implements ServerPacket {
|
||||
public int entityId;
|
||||
public Animation animation;
|
||||
|
||||
public EntityAnimationPacket() {
|
||||
animation = Animation.SWING_MAIN_ARM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
writer.writeByte((byte) animation.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
animation = Animation.values()[reader.readByte()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_ANIMATION;
|
||||
|
@ -3,6 +3,8 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.potion.Potion;
|
||||
import net.minestom.server.potion.PotionEffect;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -11,6 +13,10 @@ public class EntityEffectPacket implements ServerPacket {
|
||||
public int entityId;
|
||||
public Potion potion;
|
||||
|
||||
public EntityEffectPacket() {
|
||||
potion = new Potion(PotionEffect.ABSORPTION, (byte) 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -20,6 +26,20 @@ public class EntityEffectPacket implements ServerPacket {
|
||||
writer.writeByte(potion.getFlags());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
byte potionEffectID = reader.readByte();
|
||||
byte amplifier = reader.readByte();
|
||||
int duration = reader.readVarInt();
|
||||
byte flags = reader.readByte();
|
||||
boolean ambient = (flags & 0x01) == 0x01;
|
||||
boolean particles = (flags & 0x02) == 0x02;
|
||||
boolean icon = (flags & 0x04) == 0x04;
|
||||
|
||||
potion = new Potion(PotionEffect.fromId(potionEffectID), amplifier, duration, particles, icon, ambient);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_EFFECT;
|
||||
|
@ -4,15 +4,21 @@ import net.minestom.server.event.item.ArmorEquipEvent;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class EntityEquipmentPacket implements ServerPacket {
|
||||
|
||||
public int entityId;
|
||||
public Slot[] slots;
|
||||
public ItemStack[] itemStacks;
|
||||
|
||||
public EntityEquipmentPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -40,6 +46,25 @@ public class EntityEquipmentPacket implements ServerPacket {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
|
||||
boolean hasRemaining = true;
|
||||
List<Slot> slots = new LinkedList<>();
|
||||
List<ItemStack> stacks = new LinkedList<>();
|
||||
while(hasRemaining) {
|
||||
byte slotEnum = reader.readByte();
|
||||
hasRemaining = (slotEnum & 0x80) == 0x80;
|
||||
|
||||
slots.add(Slot.values()[slotEnum & 0x7F]);
|
||||
stacks.add(reader.readItemStack());
|
||||
}
|
||||
|
||||
this.slots = slots.toArray(new Slot[0]);
|
||||
this.itemStacks = stacks.toArray(new ItemStack[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_EQUIPMENT;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,20 @@ public class EntityHeadLookPacket implements ServerPacket {
|
||||
public int entityId;
|
||||
public float yaw;
|
||||
|
||||
public EntityHeadLookPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
writer.writeByte((byte) (this.yaw * 256 / 360));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
yaw = reader.readByte() * 360f / 256f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_HEAD_LOOK;
|
||||
|
@ -3,28 +3,50 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.entity.Metadata;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class EntityMetaDataPacket implements ServerPacket {
|
||||
|
||||
public int entityId;
|
||||
public Collection<Metadata.Entry<?>> entries;
|
||||
|
||||
public EntityMetaDataPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
|
||||
// Write all the fields
|
||||
for (Metadata.Entry<?> entry : entries) {
|
||||
entry.write(writer);
|
||||
if(entries != null) {
|
||||
// Write all the fields
|
||||
for (Metadata.Entry<?> entry : entries) {
|
||||
entry.write(writer);
|
||||
}
|
||||
}
|
||||
|
||||
writer.writeByte((byte) 0xFF); // End
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
|
||||
entries = new LinkedList<>();
|
||||
while(true) {
|
||||
byte index = reader.readByte();
|
||||
|
||||
if(index == (byte) 0xFF) { // reached the end
|
||||
break;
|
||||
}
|
||||
|
||||
entries.add(new Metadata.Entry<Object>(reader));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_METADATA;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -9,11 +10,18 @@ public class EntityMovementPacket implements ServerPacket {
|
||||
|
||||
public int entityId;
|
||||
|
||||
public EntityMovementPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_MOVEMENT;
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.Position;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -13,6 +14,8 @@ public class EntityPositionAndRotationPacket implements ServerPacket {
|
||||
public float yaw, pitch;
|
||||
public boolean onGround;
|
||||
|
||||
public EntityPositionAndRotationPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -24,6 +27,16 @@ public class EntityPositionAndRotationPacket implements ServerPacket {
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
deltaX = reader.readShort();
|
||||
deltaY = reader.readShort();
|
||||
deltaZ = reader.readShort();
|
||||
yaw = reader.readByte() * 360f / 256f;
|
||||
pitch = reader.readByte() * 360f / 256f;
|
||||
onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.Position;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -12,6 +13,8 @@ public class EntityPositionPacket implements ServerPacket {
|
||||
public short deltaX, deltaY, deltaZ;
|
||||
public boolean onGround;
|
||||
|
||||
public EntityPositionPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -21,6 +24,15 @@ public class EntityPositionPacket implements ServerPacket {
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
deltaX = reader.readShort();
|
||||
deltaY = reader.readShort();
|
||||
deltaZ = reader.readShort();
|
||||
onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_POSITION;
|
||||
|
@ -3,9 +3,13 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.attribute.Attribute;
|
||||
import net.minestom.server.attribute.AttributeInstance;
|
||||
import net.minestom.server.attribute.AttributeModifier;
|
||||
import net.minestom.server.attribute.AttributeOperation;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import net.minestom.server.utils.binary.Readable;
|
||||
import net.minestom.server.utils.binary.Writeable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -13,8 +17,9 @@ import java.util.Collection;
|
||||
public class EntityPropertiesPacket implements ServerPacket {
|
||||
|
||||
public int entityId;
|
||||
public Property[] properties;
|
||||
public Property[] properties = new Property[0];
|
||||
|
||||
public EntityPropertiesPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
@ -25,18 +30,29 @@ public class EntityPropertiesPacket implements ServerPacket {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
int propertyCount = reader.readInt();
|
||||
properties = new Property[propertyCount];
|
||||
for (int i = 0; i < propertyCount; i++) {
|
||||
properties[i] = new Property();
|
||||
properties[i].read(reader);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_PROPERTIES;
|
||||
}
|
||||
|
||||
public static class Property {
|
||||
public static class Property implements Writeable, Readable {
|
||||
|
||||
public Attribute attribute;
|
||||
public double value;
|
||||
public AttributeInstance instance;
|
||||
|
||||
private void write(BinaryWriter writer) {
|
||||
public void write(BinaryWriter writer) {
|
||||
float maxValue = attribute.getMaxValue();
|
||||
|
||||
// Bypass vanilla limit client-side if needed (by sending the max value allowed)
|
||||
@ -56,6 +72,21 @@ public class EntityPropertiesPacket implements ServerPacket {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
String key = reader.readSizedString(Integer.MAX_VALUE);
|
||||
attribute = Attribute.fromKey(key);
|
||||
|
||||
value = reader.readDouble();
|
||||
|
||||
int modifierCount = reader.readVarInt();
|
||||
instance = new AttributeInstance(attribute, null);
|
||||
for (int i = 0; i < modifierCount; i++) {
|
||||
AttributeModifier modifier = new AttributeModifier(reader.readUuid(), "", (float) reader.readDouble(), AttributeOperation.fromId(reader.readByte()));
|
||||
instance.addModifier(modifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -11,6 +12,8 @@ public class EntityRotationPacket implements ServerPacket {
|
||||
public float yaw, pitch;
|
||||
public boolean onGround;
|
||||
|
||||
public EntityRotationPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -19,6 +22,14 @@ public class EntityRotationPacket implements ServerPacket {
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
yaw = reader.readByte() * 360f / 256f;
|
||||
pitch = reader.readByte() * 360f / 256f;
|
||||
onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_ROTATION;
|
||||
|
@ -4,6 +4,8 @@ import net.kyori.adventure.sound.Sound;
|
||||
import net.minestom.server.adventure.AdventurePacketConvertor;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.sound.SoundCategory;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -15,6 +17,10 @@ public class EntitySoundEffectPacket implements ServerPacket {
|
||||
public float volume;
|
||||
public float pitch;
|
||||
|
||||
public EntitySoundEffectPacket() {
|
||||
soundSource = Sound.Source.NEUTRAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(soundId);
|
||||
@ -24,6 +30,15 @@ public class EntitySoundEffectPacket implements ServerPacket {
|
||||
writer.writeFloat(pitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
soundId = reader.readVarInt();
|
||||
soundSource = Sound.Source.values()[reader.readVarInt()];
|
||||
entityId = reader.readVarInt();
|
||||
volume = reader.readFloat();
|
||||
pitch = reader.readFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_SOUND_EFFECT;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,12 +11,20 @@ public class EntityStatusPacket implements ServerPacket {
|
||||
public int entityId;
|
||||
public byte status;
|
||||
|
||||
public EntityStatusPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeInt(entityId);
|
||||
writer.writeByte(status);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readInt();
|
||||
status = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_STATUS;
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.Position;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -12,6 +13,10 @@ public class EntityTeleportPacket implements ServerPacket {
|
||||
public Position position;
|
||||
public boolean onGround;
|
||||
|
||||
public EntityTeleportPacket() {
|
||||
position = new Position();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -23,6 +28,19 @@ public class EntityTeleportPacket implements ServerPacket {
|
||||
writer.writeBoolean(onGround);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
position = new Position(
|
||||
reader.readDouble(),
|
||||
reader.readDouble(),
|
||||
reader.readDouble(),
|
||||
reader.readByte() * 360f / 256f,
|
||||
reader.readByte() * 360f / 256f
|
||||
);
|
||||
onGround = reader.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_TELEPORT;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -10,6 +11,8 @@ public class EntityVelocityPacket implements ServerPacket {
|
||||
public int entityId;
|
||||
public short velocityX, velocityY, velocityZ;
|
||||
|
||||
public EntityVelocityPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeVarInt(entityId);
|
||||
@ -18,6 +21,14 @@ public class EntityVelocityPacket implements ServerPacket {
|
||||
writer.writeShort(velocityZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readVarInt();
|
||||
velocityX = reader.readShort();
|
||||
velocityY = reader.readShort();
|
||||
velocityZ = reader.readShort();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.ENTITY_VELOCITY;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -9,9 +10,11 @@ public class ExplosionPacket implements ServerPacket {
|
||||
|
||||
public float x, y, z;
|
||||
public float radius; // UNUSED
|
||||
public byte[] records;
|
||||
public byte[] records = new byte[0];
|
||||
public float playerMotionX, playerMotionY, playerMotionZ;
|
||||
|
||||
public ExplosionPacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeFloat(x);
|
||||
@ -26,6 +29,19 @@ public class ExplosionPacket implements ServerPacket {
|
||||
writer.writeFloat(playerMotionZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
x = reader.readFloat();
|
||||
y = reader.readFloat();
|
||||
z = reader.readFloat();
|
||||
radius = reader.readFloat();
|
||||
int recordCount = reader.readInt() * 3;
|
||||
records = reader.readBytes(recordCount);
|
||||
playerMotionX = reader.readFloat();
|
||||
playerMotionY = reader.readFloat();
|
||||
playerMotionZ = reader.readFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.EXPLOSION;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -12,6 +13,10 @@ public class FacePlayerPacket implements ServerPacket {
|
||||
public int entityId;
|
||||
public FacePosition entityFacePosition;
|
||||
|
||||
public FacePlayerPacket() {
|
||||
facePosition = FacePosition.EYES;
|
||||
entityFacePosition = FacePosition.EYES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
@ -28,6 +33,22 @@ public class FacePlayerPacket implements ServerPacket {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
facePosition = FacePosition.values()[reader.readVarInt()];
|
||||
targetX = reader.readDouble();
|
||||
targetY = reader.readDouble();
|
||||
targetZ = reader.readDouble();
|
||||
|
||||
boolean isEntity = reader.readBoolean();
|
||||
if(isEntity) {
|
||||
entityId = reader.readVarInt();
|
||||
entityFacePosition = FacePosition.values()[reader.readVarInt()];
|
||||
} else {
|
||||
entityId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.FACE_PLAYER;
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -9,11 +10,18 @@ public class HeldItemChangePacket implements ServerPacket {
|
||||
|
||||
public byte slot;
|
||||
|
||||
public HeldItemChangePacket() {}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeByte(slot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
slot = reader.readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.HELD_ITEM_CHANGE;
|
||||
|
@ -4,15 +4,22 @@ import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.entity.GameMode;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import net.minestom.server.utils.validate.Check;
|
||||
import net.minestom.server.world.DimensionType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTCompound;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class JoinGamePacket implements ServerPacket {
|
||||
|
||||
public int entityId;
|
||||
public boolean hardcore;
|
||||
public GameMode gameMode;
|
||||
public GameMode previousGameMode;
|
||||
public DimensionType dimensionType;
|
||||
public long hashedSeed;
|
||||
public int maxPlayers = 0; // Unused
|
||||
@ -22,14 +29,23 @@ public class JoinGamePacket implements ServerPacket {
|
||||
public boolean isDebug = false;
|
||||
public boolean isFlat = false;
|
||||
|
||||
public JoinGamePacket() {
|
||||
gameMode = GameMode.SURVIVAL;
|
||||
dimensionType = DimensionType.OVERWORLD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeInt(entityId);
|
||||
writer.writeBoolean(gameMode.isHardcore());
|
||||
writer.writeByte(gameMode.getId());
|
||||
//Previous Gamemode
|
||||
writer.writeBoolean(hardcore);
|
||||
writer.writeByte(gameMode.getId());
|
||||
|
||||
if(previousGameMode == null) {
|
||||
writer.writeByte(gameMode.getId());
|
||||
} else {
|
||||
writer.writeByte(previousGameMode.getId());
|
||||
}
|
||||
|
||||
//array of worlds
|
||||
writer.writeVarInt(1);
|
||||
writer.writeSizedString("minestom:world");
|
||||
@ -55,6 +71,35 @@ public class JoinGamePacket implements ServerPacket {
|
||||
writer.writeBoolean(isFlat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(@NotNull BinaryReader reader) {
|
||||
entityId = reader.readInt();
|
||||
hardcore = reader.readBoolean();
|
||||
gameMode = GameMode.fromId(reader.readByte());
|
||||
previousGameMode = GameMode.fromId(reader.readByte());
|
||||
int worldCount = reader.readVarInt();
|
||||
Check.stateCondition(worldCount != 1, "Only 1 world is supported per JoinGamePacket by Minestom for the moment.");
|
||||
//for (int i = 0; i < worldCount; i++) {
|
||||
String worldName = reader.readSizedString(Integer.MAX_VALUE);
|
||||
try {
|
||||
NBTCompound dimensionCodec = (NBTCompound) reader.readTag();
|
||||
dimensionType = DimensionType.fromNBT((NBTCompound) reader.readTag());
|
||||
|
||||
String dimensionName = reader.readSizedString(Integer.MAX_VALUE);
|
||||
hashedSeed = reader.readLong();
|
||||
maxPlayers = reader.readVarInt();
|
||||
viewDistance = reader.readVarInt();
|
||||
reducedDebugInfo = reader.readBoolean();
|
||||
enableRespawnScreen = reader.readBoolean();
|
||||
isDebug = reader.readBoolean();
|
||||
isFlat = reader.readBoolean();
|
||||
} catch (IOException | NBTException e) {
|
||||
MinecraftServer.getExceptionManager().handleException(e);
|
||||
// TODO: should we throw as the packet is invalid?
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ServerPacketIdentifier.JOIN_GAME;
|
||||
|
@ -68,7 +68,7 @@ public class ReadWritePackets {
|
||||
BinaryReader reader = new BinaryReader(originalBytes);
|
||||
packet.read(reader);
|
||||
|
||||
Assertions.assertEquals(0, reader.getRemainingBytes().length, "Packet did not read all available data");
|
||||
Assertions.assertEquals(0, reader.readRemainingBytes().length, "Packet did not read all available data");
|
||||
|
||||
// re-write to ensure packet contents are the same
|
||||
BinaryWriter secondWriter = new BinaryWriter();
|
||||
|
Loading…
Reference in New Issue
Block a user