Cleaned code & added some packets

This commit is contained in:
Felix Cravic 2020-02-11 16:48:06 +01:00
parent b1b41afebb
commit e9809b20ac
78 changed files with 693 additions and 135 deletions

View File

@ -25,6 +25,7 @@ public abstract class EntityCreature extends LivingEntity {
float newY = position.getY() + y;
float newZ = position.getZ() + z;
// Creatures cannot move in unload chunk
if (ChunkUtils.isChunkUnloaded(getInstance(), newX, newZ))
return;
@ -34,24 +35,28 @@ public abstract class EntityCreature extends LivingEntity {
float yaw = (float) (radians * (180.0 / Math.PI)) - 90;
float pitch = position.getPitch(); // TODO
short deltaX = (short) ((newX * 32 - position.getX() * 32) * 128);
short deltaY = (short) ((newY * 32 - position.getY() * 32) * 128);
short deltaZ = (short) ((newZ * 32 - position.getZ() * 32) * 128);
if (updateView) {
EntityLookAndRelativeMovePacket entityLookAndRelativeMovePacket = new EntityLookAndRelativeMovePacket();
entityLookAndRelativeMovePacket.entityId = getEntityId();
entityLookAndRelativeMovePacket.deltaX = (short) ((newX * 32 - position.getX() * 32) * 128);
entityLookAndRelativeMovePacket.deltaY = (short) ((newY * 32 - position.getY() * 32) * 128);
entityLookAndRelativeMovePacket.deltaZ = (short) ((newZ * 32 - position.getZ() * 32) * 128);
entityLookAndRelativeMovePacket.yaw = yaw;
entityLookAndRelativeMovePacket.pitch = pitch;
entityLookAndRelativeMovePacket.onGround = isOnGround();
sendPacketToViewers(entityLookAndRelativeMovePacket);
EntityPositionAndRotationPacket entityPositionAndRotationPacket = new EntityPositionAndRotationPacket();
entityPositionAndRotationPacket.entityId = getEntityId();
entityPositionAndRotationPacket.deltaX = deltaX;
entityPositionAndRotationPacket.deltaY = deltaY;
entityPositionAndRotationPacket.deltaZ = deltaZ;
entityPositionAndRotationPacket.yaw = yaw;
entityPositionAndRotationPacket.pitch = pitch;
entityPositionAndRotationPacket.onGround = isOnGround();
sendPacketToViewers(entityPositionAndRotationPacket);
} else {
EntityRelativeMovePacket entityRelativeMovePacket = new EntityRelativeMovePacket();
entityRelativeMovePacket.entityId = getEntityId();
entityRelativeMovePacket.deltaX = (short) ((newX * 32 - position.getX() * 32) * 128);
entityRelativeMovePacket.deltaY = (short) ((newY * 32 - position.getY() * 32) * 128);
entityRelativeMovePacket.deltaZ = (short) ((newZ * 32 - position.getZ() * 32) * 128);
entityRelativeMovePacket.onGround = isOnGround();
sendPacketToViewers(entityRelativeMovePacket);
EntityPositionPacket entityPositionPacket = new EntityPositionPacket();
entityPositionPacket.entityId = getEntityId();
entityPositionPacket.deltaX = deltaX;
entityPositionPacket.deltaY = deltaY;
entityPositionPacket.deltaZ = deltaZ;
entityPositionPacket.onGround = isOnGround();
sendPacketToViewers(entityPositionPacket);
}
if (lastYaw != yaw) {
@ -76,7 +81,7 @@ public abstract class EntityCreature extends LivingEntity {
public void kill() {
this.isDead = true;
triggerStatus((byte) 3);
scheduleRemove(1000);
scheduleRemove(1000); // Needed for proper death animation
DeathEvent deathEvent = new DeathEvent();
callEvent(DeathEvent.class, deathEvent);
}
@ -96,13 +101,9 @@ public abstract class EntityCreature extends LivingEntity {
spawnMobPacket.position = getPosition();
spawnMobPacket.headPitch = 0;
EntityMetaDataPacket entityMetaDataPacket = new EntityMetaDataPacket();
entityMetaDataPacket.entityId = getEntityId();
entityMetaDataPacket.consumer = getMetadataConsumer();
playerConnection.sendPacket(entityPacket);
playerConnection.sendPacket(spawnMobPacket);
playerConnection.sendPacket(entityMetaDataPacket);
playerConnection.sendPacket(getMetadataPacket());
}
@Override

View File

@ -1,6 +1,6 @@
package fr.themode.minestom.entity;
import java.util.Arrays;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum EntityType {
ARMOR_STAND(1), // Object
@ -69,6 +69,14 @@ public enum EntityType {
PHANTOM(97),
RAVAGER(98);
private static Int2ObjectOpenHashMap<EntityType> map = new Int2ObjectOpenHashMap();
static {
for (EntityType type : EntityType.values()) {
map.put(type.id, type);
}
}
private int id;
EntityType(int id) {
@ -76,7 +84,7 @@ public enum EntityType {
}
public static EntityType fromId(int id) {
return Arrays.stream(values()).filter(entityType -> entityType.id == id).findFirst().get();
return map.get(id);
}
public int getId() {

View File

@ -15,7 +15,7 @@ public class ItemEntity extends ObjectEntity {
private long pickupDelay;
public ItemEntity(ItemStack itemStack) {
super(34);
super(35);
this.itemStack = itemStack;
setBoundingBox(0.25f, 0.25f, 0.25f);
setGravity(0.025f);

View File

@ -6,8 +6,8 @@ import fr.themode.minestom.entity.property.Attribute;
import fr.themode.minestom.event.PickupItemEvent;
import fr.themode.minestom.instance.Chunk;
import fr.themode.minestom.item.ItemStack;
import fr.themode.minestom.net.packet.server.play.AnimationPacket;
import fr.themode.minestom.net.packet.server.play.CollectItemPacket;
import fr.themode.minestom.net.packet.server.play.EntityAnimationPacket;
import fr.themode.minestom.net.packet.server.play.EntityPropertiesPacket;
import java.util.Set;
@ -20,6 +20,9 @@ public abstract class LivingEntity extends Entity {
private float health;
// Bounding box used for items' pickup (see LivingEntity#setBoundingBox)
private BoundingBox expandedBoundingBox = getBoundingBox();
private float[] attributeValues = new float[Attribute.values().length];
private boolean isHandActive;
@ -39,7 +42,7 @@ public abstract class LivingEntity extends Entity {
if (canPickupItem) {
Chunk chunk = instance.getChunkAt(getPosition()); // TODO check surrounding chunks
Set<Entity> entities = instance.getChunkEntities(chunk);
BoundingBox livingBoundingBox = getBoundingBox().expand(1, 0.5f, 1);
BoundingBox livingBoundingBox = expandedBoundingBox;
for (Entity entity : entities) {
if (entity instanceof ItemEntity) {
ItemEntity itemEntity = (ItemEntity) entity;
@ -88,10 +91,10 @@ public abstract class LivingEntity extends Entity {
}
public void damage(float value) {
AnimationPacket animationPacket = new AnimationPacket();
animationPacket.entityId = getEntityId();
animationPacket.animation = AnimationPacket.Animation.TAKE_DAMAGE;
sendPacketToViewersAndSelf(animationPacket);
EntityAnimationPacket entityAnimationPacket = new EntityAnimationPacket();
entityAnimationPacket.entityId = getEntityId();
entityAnimationPacket.animation = EntityAnimationPacket.Animation.TAKE_DAMAGE;
sendPacketToViewersAndSelf(entityAnimationPacket);
setHealth(getHealth() - value);
}
@ -136,6 +139,12 @@ public abstract class LivingEntity extends Entity {
this.canPickupItem = canPickupItem;
}
@Override
public void setBoundingBox(float x, float y, float z) {
super.setBoundingBox(x, y, z);
this.expandedBoundingBox = getBoundingBox().expand(1, 0.5f, 1);
}
public void refreshActiveHand(boolean isHandActive, boolean offHand, boolean riptideSpinAttack) {
this.isHandActive = isHandActive;
this.activeHand = offHand;

View File

@ -6,6 +6,7 @@ import fr.themode.minestom.Main;
import fr.themode.minestom.bossbar.BossBar;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.collision.BoundingBox;
import fr.themode.minestom.entity.demo.ChickenCreature;
import fr.themode.minestom.entity.property.Attribute;
import fr.themode.minestom.event.*;
import fr.themode.minestom.instance.Chunk;
@ -144,6 +145,11 @@ public class Player extends LivingEntity {
if (player != this)
player.teleport(getPosition());
}
ChickenCreature chickenCreature = new ChickenCreature();
chickenCreature.refreshPosition(getPosition());
chickenCreature.setInstance(getInstance());
});
setEventCallback(PickupItemEvent.class, event -> {
@ -188,12 +194,12 @@ public class Player extends LivingEntity {
setAttribute(Attribute.MAX_HEALTH, 10);
heal();
Scoreboard scoreboard = new Scoreboard("Scoreboard Title");
Sidebar scoreboard = new Sidebar("Scoreboard Title");
for (int i = 0; i < 15; i++) {
scoreboard.createLine(new Scoreboard.ScoreboardLine("id" + i, "Hey guys " + i, i));
scoreboard.createLine(new Sidebar.ScoreboardLine("id" + i, "Hey guys " + i, i));
}
scoreboard.addViewer(this);
scoreboard.updateLineContent("id3", "I HAVE BEEN UPDATED &2TEST");
scoreboard.updateLineContent("id3", "I HAVE BEEN UPDATED");
BelowNameScoreboard belowNameScoreboard = new BelowNameScoreboard();
setBelowNameScoreboard(belowNameScoreboard);
@ -265,42 +271,42 @@ public class Player extends LivingEntity {
ServerPacket updatePacket = null;
ServerPacket optionalUpdatePacket = null;
if (positionChanged && viewChanged) {
EntityLookAndRelativeMovePacket entityLookAndRelativeMovePacket = new EntityLookAndRelativeMovePacket();
entityLookAndRelativeMovePacket.entityId = getEntityId();
entityLookAndRelativeMovePacket.deltaX = (short) ((position.getX() * 32 - lastX * 32) * 128);
entityLookAndRelativeMovePacket.deltaY = (short) ((position.getY() * 32 - lastY * 32) * 128);
entityLookAndRelativeMovePacket.deltaZ = (short) ((position.getZ() * 32 - lastZ * 32) * 128);
entityLookAndRelativeMovePacket.yaw = position.getYaw();
entityLookAndRelativeMovePacket.pitch = position.getPitch();
entityLookAndRelativeMovePacket.onGround = onGround;
EntityPositionAndRotationPacket entityPositionAndRotationPacket = new EntityPositionAndRotationPacket();
entityPositionAndRotationPacket.entityId = getEntityId();
entityPositionAndRotationPacket.deltaX = (short) ((position.getX() * 32 - lastX * 32) * 128);
entityPositionAndRotationPacket.deltaY = (short) ((position.getY() * 32 - lastY * 32) * 128);
entityPositionAndRotationPacket.deltaZ = (short) ((position.getZ() * 32 - lastZ * 32) * 128);
entityPositionAndRotationPacket.yaw = position.getYaw();
entityPositionAndRotationPacket.pitch = position.getPitch();
entityPositionAndRotationPacket.onGround = onGround;
lastX = position.getX();
lastY = position.getY();
lastZ = position.getZ();
lastYaw = position.getYaw();
lastPitch = position.getPitch();
updatePacket = entityLookAndRelativeMovePacket;
updatePacket = entityPositionAndRotationPacket;
} else if (positionChanged) {
EntityRelativeMovePacket entityRelativeMovePacket = new EntityRelativeMovePacket();
entityRelativeMovePacket.entityId = getEntityId();
entityRelativeMovePacket.deltaX = (short) ((position.getX() * 32 - lastX * 32) * 128);
entityRelativeMovePacket.deltaY = (short) ((position.getY() * 32 - lastY * 32) * 128);
entityRelativeMovePacket.deltaZ = (short) ((position.getZ() * 32 - lastZ * 32) * 128);
entityRelativeMovePacket.onGround = onGround;
EntityPositionPacket entityPositionPacket = new EntityPositionPacket();
entityPositionPacket.entityId = getEntityId();
entityPositionPacket.deltaX = (short) ((position.getX() * 32 - lastX * 32) * 128);
entityPositionPacket.deltaY = (short) ((position.getY() * 32 - lastY * 32) * 128);
entityPositionPacket.deltaZ = (short) ((position.getZ() * 32 - lastZ * 32) * 128);
entityPositionPacket.onGround = onGround;
lastX = position.getX();
lastY = position.getY();
lastZ = position.getZ();
updatePacket = entityRelativeMovePacket;
updatePacket = entityPositionPacket;
} else if (viewChanged) {
EntityLookPacket entityLookPacket = new EntityLookPacket();
entityLookPacket.entityId = getEntityId();
entityLookPacket.yaw = position.getYaw();
entityLookPacket.pitch = position.getPitch();
entityLookPacket.onGround = onGround;
EntityRotationPacket entityRotationPacket = new EntityRotationPacket();
entityRotationPacket.entityId = getEntityId();
entityRotationPacket.yaw = position.getYaw();
entityRotationPacket.pitch = position.getPitch();
entityRotationPacket.onGround = onGround;
lastYaw = position.getYaw();
lastPitch = position.getPitch();
updatePacket = entityLookPacket;
updatePacket = entityRotationPacket;
}
if (viewChanged) {

View File

@ -0,0 +1,46 @@
package fr.themode.minestom.event;
import club.thectm.minecraft.text.TextObject;
import fr.themode.minestom.entity.Player;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Function;
public class PlayerChatEvent extends CancellableEvent {
private Player sender;
private Collection<Player> recipients;
private String message;
private Function<PlayerChatEvent, TextObject> chatFormat;
public PlayerChatEvent(Player sender, Collection<Player> recipients, String message) {
this.sender = sender;
this.recipients = new ArrayList<>(recipients);
this.message = message;
}
public void setChatFormat(Function<PlayerChatEvent, TextObject> chatFormat) {
this.chatFormat = chatFormat;
}
public Player getSender() {
return sender;
}
public Collection<Player> getRecipients() {
return recipients;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Function<PlayerChatEvent, TextObject> getChatFormatFunction() {
return chatFormat;
}
}

View File

@ -3,17 +3,17 @@ package fr.themode.minestom.listener;
import fr.themode.minestom.entity.Player;
import fr.themode.minestom.event.AnimationEvent;
import fr.themode.minestom.net.packet.client.play.ClientAnimationPacket;
import fr.themode.minestom.net.packet.server.play.AnimationPacket;
import fr.themode.minestom.net.packet.server.play.EntityAnimationPacket;
public class AnimationListener {
public static void animationListener(ClientAnimationPacket packet, Player player) {
AnimationEvent animationEvent = new AnimationEvent(packet.hand);
player.callCancellableEvent(AnimationEvent.class, animationEvent, () -> {
AnimationPacket animationPacket = new AnimationPacket();
animationPacket.entityId = player.getEntityId();
animationPacket.animation = animationEvent.getHand() == Player.Hand.MAIN ? AnimationPacket.Animation.SWING_MAIN_ARM : AnimationPacket.Animation.SWING_OFF_HAND;
player.sendPacketToViewers(animationPacket);
EntityAnimationPacket entityAnimationPacket = new EntityAnimationPacket();
entityAnimationPacket.entityId = player.getEntityId();
entityAnimationPacket.animation = animationEvent.getHand() == Player.Hand.MAIN ? EntityAnimationPacket.Animation.SWING_MAIN_ARM : EntityAnimationPacket.Animation.SWING_OFF_HAND;
player.sendPacketToViewers(entityAnimationPacket);
});
}

View File

@ -1,15 +1,49 @@
package fr.themode.minestom.listener;
import club.thectm.minecraft.text.*;
import fr.themode.minestom.Main;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.entity.Player;
import fr.themode.minestom.event.PlayerChatEvent;
import fr.themode.minestom.net.packet.client.play.ClientChatMessagePacket;
import java.util.function.Function;
public class ChatMessageListener {
public static void listener(ClientChatMessagePacket packet, Player player) {
String message = Chat.uncoloredLegacyText(packet.message);
Main.getConnectionManager().getOnlinePlayers().forEach(p -> p.sendMessage(String.format("<%s> %s", player.getUsername(), message)));
PlayerChatEvent playerChatEvent = new PlayerChatEvent(player, Main.getConnectionManager().getOnlinePlayers(), message);
// Default format
playerChatEvent.setChatFormat((event) -> {
String username = player.getUsername();
TextObject usernameText = TextBuilder.of(String.format("<%s>", username))
.color(ChatColor.WHITE)
.hoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, ChatColor.AQUA + "Its " + username))
.clickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + username + " "))
.append(" " + event.getMessage())
.build();
return usernameText;
});
// Call the event
player.callCancellableEvent(PlayerChatEvent.class, playerChatEvent, () -> {
Function<PlayerChatEvent, TextObject> formatFunction = playerChatEvent.getChatFormatFunction();
if (formatFunction == null)
throw new NullPointerException("PlayerChatEvent#chatFormat cannot be null!");
TextObject textObject = formatFunction.apply(playerChatEvent);
for (Player recipient : playerChatEvent.getRecipients()) {
recipient.sendMessage(textObject);
}
});
}

View File

@ -43,9 +43,9 @@ public class LoginStartPacket implements ClientPreplayPacket {
GameMode gameMode = GameMode.SURVIVAL;
Dimension dimension = Dimension.OVERWORLD;
LevelType levelType = LevelType.DEFAULT;
float x = 0;
float y = 0;
float z = 0;
final float x = 0;
final float y = 0;
final float z = 0;
player.refreshDimension(dimension);
player.refreshGameMode(gameMode);

View File

@ -0,0 +1,99 @@
package fr.themode.minestom.net.packet.server;
public class ServerPacketIdentifier {
public static final int SPAWN_OBJECT = 0x00;
public static final int SPAWN_EXPERIENCE_ORB = 0x01;
public static final int SPAWN_GLOBAL_ENTITY = 0x02;
public static final int SPAWN_MOB = 0x03;
public static final int SPAWN_PAINTING = 0x04;
public static final int SPAWN_PLAYER = 0x05;
public static final int ENTITY_ANIMATION = 0x06;
public static final int STATISTICS = 0x07;
public static final int ACKNOWLEDGE_PLAYER_DIGGING = 0x08;
public static final int BLOCK_BREAK_ANIMATION = 0x09;
public static final int UPDATE_BLOCK_ENTITY = 0x0A;
public static final int BLOCK_ACTION = 0x0B;
public static final int BLOCK_CHANGE = 0x0C;
public static final int BOSS_BAR = 0x0D;
public static final int SERVER_DIFFICULTY = 0x0E;
public static final int CHAT_MESSAGE = 0x0F;
public static final int MULTI_BLOCK_CHANGE = 0x10;
public static final int TAB_COMPLETE = 0x11;
public static final int DECLARE_COMMANDS = 0x12;
public static final int WINDOW_CONFIRMATION = 0x13;
public static final int CLOSE_WINDOW = 0x14;
public static final int WINDOW_ITEMS = 0x15;
public static final int WINDOW_PROPERTY = 0x16;
public static final int SET_SLOT = 0x17;
public static final int SET_COOLDOWN = 0x18;
public static final int PLUGIN_MESSAGE = 0x19;
public static final int NAMED_SOUND_EFFECT = 0x1A;
public static final int DISCONNECT = 0x1B;
public static final int ENTITY_STATUS = 0x1C;
public static final int EXPLOSION = 0x1D;
public static final int UNLOAD_CHUNK = 0x1E;
public static final int CHANGE_GAME_STATE = 0x1F;
public static final int OPEN_HORSE_WINDOW = 0x20;
public static final int KEEP_ALIVE = 0x21;
public static final int CHUNK_DATA = 0x22;
public static final int EFFECT = 0x23;
public static final int PARTICLE = 0x24;
public static final int UPDATE_LIGHT = 0x25;
public static final int JOIN_GAME = 0x26;
public static final int MAP_DATA = 0x27;
public static final int TRADE_LIST = 0x28;
public static final int ENTITY_POSITION = 0x29;
public static final int ENTITY_POSITION_AND_ROTATION = 0x2A;
public static final int ENTITY_ROTATION = 0x2B;
public static final int ENTITY_MOVEMENT = 0x2C;
public static final int VEHICLE_MOVE = 0x2D;
public static final int OPEN_BOOK = 0x2E;
public static final int OPEN_WINDOW = 0x2F;
public static final int OPEN_SIGN_EDITOR = 0x30;
public static final int CRAFT_RECIPE_RESPONSE = 0x31;
public static final int PLAYER_ABILITIES = 0x32;
public static final int COMBAT_EVENT = 0x33;
public static final int PLAYER_INFO = 0x34;
public static final int FACE_PLAYER = 0x35;
public static final int PLAYER_POSITION_AND_LOOK = 0x36;
public static final int UNLOCK_RECIPES = 0x37;
public static final int DESTROY_ENTITIES = 0x38;
public static final int REMOVE_ENTITY_EFFECT = 0x39;
public static final int RESOURCE_PACK_SEND = 0x3A;
public static final int RESPAWN = 0x3B;
public static final int ENTITY_HEAD_LOOK = 0x3C;
public static final int SELECT_ADVANCEMENT_TAB = 0x3D;
public static final int WORLD_BORDER = 0x3E;
public static final int CAMERA = 0x3F;
public static final int HELD_ITEM_CHANGE = 0x40;
public static final int UPDATE_VIEW_POSITION = 0x41;
public static final int UPDATE_VIEW_DISTANCE = 0x42;
public static final int DISPLAY_SCOREBOARD = 0x43;
public static final int ENTITY_METADATA = 0x44;
public static final int ATTACH_ENTITY = 0x45;
public static final int ENTITY_VELOCITY = 0x46;
public static final int ENTITY_EQUIPMENT = 0x47;
public static final int SET_EXPERIENCE = 0x48;
public static final int UPDATE_HEALTH = 0x49;
public static final int SCOREBOARD_OBJECTIVE = 0x4A;
public static final int SET_PASSENGERS = 0x4B;
public static final int TEAMS = 0x4C;
public static final int UPDATE_SCORE = 0x4D;
public static final int SPAWN_POSITION = 0x4E;
public static final int TIME_UPDATE = 0x4F;
public static final int TITLE = 0x50;
public static final int ENTITY_SOUND_EFFECT = 0x51;
public static final int SOUND_EFFECT = 0x52;
public static final int STOP_SOUND = 0x53;
public static final int PLAYER_LIST_HEADER_AND_FOOTER = 0x54;
public static final int NBT_QUERY_RESPONSE = 0x55;
public static final int COLLECT_ITEM = 0x56;
public static final int ENTITY_TELEPORT = 0x57;
public static final int ADVANCEMENTS = 0x58;
public static final int ENTITY_PROPERTIES = 0x59;
public static final int ENTITY_EFFECT = 0x5A;
public static final int DECLARE_RECIPES = 0x5B;
public static final int TAGS = 0x5C;
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.login;
import fr.themode.minestom.entity.GameMode;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.world.Dimension;
import fr.themode.minestom.world.LevelType;
@ -37,6 +38,6 @@ public class JoinGamePacket implements ServerPacket {
@Override
public int getId() {
return 0x26;
return ServerPacketIdentifier.JOIN_GAME;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.client.play.ClientPlayerDiggingPacket;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
public class AcknowledgePlayerDiggingPacket implements ServerPacket {
@ -22,6 +23,6 @@ public class AcknowledgePlayerDiggingPacket implements ServerPacket {
@Override
public int getId() {
return 0x8;
return ServerPacketIdentifier.ACKNOWLEDGE_PLAYER_DIGGING;
}
}

View File

@ -4,6 +4,7 @@ import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.item.ItemStack;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class AdvancementsPacket implements ServerPacket {
@ -31,7 +32,7 @@ public class AdvancementsPacket implements ServerPacket {
@Override
public int getId() {
return 0x58;
return ServerPacketIdentifier.ADVANCEMENTS;
}
public enum FrameType {

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
public class BlockActionPacket implements ServerPacket {
@ -21,6 +22,6 @@ public class BlockActionPacket implements ServerPacket {
@Override
public int getId() {
return 0x0B;
return ServerPacketIdentifier.BLOCK_ACTION;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
public class BlockBreakAnimationPacket implements ServerPacket {
@ -19,6 +20,6 @@ public class BlockBreakAnimationPacket implements ServerPacket {
@Override
public int getId() {
return 0x09;
return ServerPacketIdentifier.BLOCK_BREAK_ANIMATION;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
public class BlockChangePacket implements ServerPacket {
@ -17,6 +18,6 @@ public class BlockChangePacket implements ServerPacket {
@Override
public int getId() {
return 0x0C;
return ServerPacketIdentifier.BLOCK_CHANGE;
}
}

View File

@ -5,6 +5,7 @@ import fr.themode.minestom.bossbar.BarDivision;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import java.util.UUID;
@ -54,7 +55,7 @@ public class BossBarPacket implements ServerPacket {
@Override
public int getId() {
return 0x0D;
return ServerPacketIdentifier.BOSS_BAR;
}
public enum Action {

View File

@ -0,0 +1,20 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class CameraPacket implements ServerPacket {
public int cameraId;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(cameraId);
}
@Override
public int getId() {
return ServerPacketIdentifier.CAMERA;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class ChangeGameStatePacket implements ServerPacket {
@ -16,7 +17,7 @@ public class ChangeGameStatePacket implements ServerPacket {
@Override
public int getId() {
return 0x1F;
return ServerPacketIdentifier.CHANGE_GAME_STATE;
}
public enum Reason {

View File

@ -2,26 +2,27 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class ChatMessagePacket implements ServerPacket {
private String message;
private String jsonMessage;
private Position position;
public ChatMessagePacket(String message, Position position) {
this.message = message;
public ChatMessagePacket(String jsonMessage, Position position) {
this.jsonMessage = jsonMessage;
this.position = position;
}
@Override
public void write(PacketWriter writer) {
writer.writeSizedString(message);
writer.writeSizedString(jsonMessage);
writer.writeByte((byte) position.ordinal());
}
@Override
public int getId() {
return 0x0F;
return ServerPacketIdentifier.CHAT_MESSAGE;
}
public enum Position {

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.instance.Chunk;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
import fr.themode.minestom.utils.SerializerUtils;
import fr.themode.minestom.utils.Utils;
@ -78,8 +79,8 @@ public class ChunkDataPacket implements ServerPacket {
// Biome data
if (fullChunk) {
for (int z = 0; z < 1024; z++) {
// TODO proper chunk section biome
writer.writeInt(chunk.getBiome().getId());
//blocks.putInt(chunk.getBiome().getId()); // FIXME
}
}
@ -129,6 +130,6 @@ public class ChunkDataPacket implements ServerPacket {
@Override
public int getId() {
return 0x22;
return ServerPacketIdentifier.CHUNK_DATA;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class CloseWindowPacket implements ServerPacket {
@ -14,6 +15,6 @@ public class CloseWindowPacket implements ServerPacket {
@Override
public int getId() {
return 0x14;
return ServerPacketIdentifier.CLOSE_WINDOW;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class CollectItemPacket implements ServerPacket {
@ -18,6 +19,6 @@ public class CollectItemPacket implements ServerPacket {
@Override
public int getId() {
return 0x56;
return ServerPacketIdentifier.COLLECT_ITEM;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class ConfirmTransactionPacket implements ServerPacket {
@ -18,6 +19,6 @@ public class ConfirmTransactionPacket implements ServerPacket {
@Override
public int getId() {
return 0x13;
return ServerPacketIdentifier.WINDOW_CONFIRMATION;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import java.util.function.Consumer;
@ -22,7 +23,7 @@ public class DeclareCommandsPacket implements ServerPacket {
@Override
public int getId() {
return 0x12;
return ServerPacketIdentifier.DECLARE_COMMANDS;
}
public static class Node {

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class DestroyEntitiesPacket implements ServerPacket {
@ -14,6 +15,6 @@ public class DestroyEntitiesPacket implements ServerPacket {
@Override
public int getId() {
return 0x38;
return ServerPacketIdentifier.DESTROY_ENTITIES;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class DisconnectPacket implements ServerPacket {
@ -15,6 +16,6 @@ public class DisconnectPacket implements ServerPacket {
@Override
public int getId() {
return 0x1B;
return ServerPacketIdentifier.DISCONNECT;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class DisplayScoreboardPacket implements ServerPacket {
@ -16,6 +17,6 @@ public class DisplayScoreboardPacket implements ServerPacket {
@Override
public int getId() {
return 0x43;
return ServerPacketIdentifier.DISPLAY_SCOREBOARD;
}
}

View File

@ -0,0 +1,27 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
public class EffectPacket implements ServerPacket {
public int effectId;
public BlockPosition position;
public int data;
public boolean disableRelativeVolume;
@Override
public void write(PacketWriter writer) {
writer.writeInt(effectId);
writer.writeBlockPosition(position);
writer.writeInt(data);
writer.writeBoolean(disableRelativeVolume);
}
@Override
public int getId() {
return ServerPacketIdentifier.EFFECT;
}
}

View File

@ -2,8 +2,9 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class AnimationPacket implements ServerPacket {
public class EntityAnimationPacket implements ServerPacket {
public int entityId;
public Animation animation;
@ -16,7 +17,7 @@ public class AnimationPacket implements ServerPacket {
@Override
public int getId() {
return 0x06;
return ServerPacketIdentifier.ENTITY_ANIMATION;
}
public enum Animation {

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityEffectPacket implements ServerPacket {
@ -22,6 +23,6 @@ public class EntityEffectPacket implements ServerPacket {
@Override
public int getId() {
return 0x5A;
return ServerPacketIdentifier.ENTITY_EFFECT;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.item.ItemStack;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityEquipmentPacket implements ServerPacket {
@ -19,7 +20,7 @@ public class EntityEquipmentPacket implements ServerPacket {
@Override
public int getId() {
return 0x47;
return ServerPacketIdentifier.ENTITY_EQUIPMENT;
}
public enum Slot {

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityHeadLookPacket implements ServerPacket {
@ -16,6 +17,6 @@ public class EntityHeadLookPacket implements ServerPacket {
@Override
public int getId() {
return 0x3C;
return ServerPacketIdentifier.ENTITY_HEAD_LOOK;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import com.github.simplenet.packet.Packet;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import java.util.function.Consumer;
@ -20,6 +21,6 @@ public class EntityMetaDataPacket implements ServerPacket {
@Override
public int getId() {
return 0x44;
return ServerPacketIdentifier.ENTITY_METADATA;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityPacket implements ServerPacket {
@ -14,6 +15,6 @@ public class EntityPacket implements ServerPacket {
@Override
public int getId() {
return 0x2C;
return ServerPacketIdentifier.ENTITY_MOVEMENT;
}
}

View File

@ -2,8 +2,9 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityLookAndRelativeMovePacket implements ServerPacket {
public class EntityPositionAndRotationPacket implements ServerPacket {
public int entityId;
public short deltaX, deltaY, deltaZ;
@ -24,6 +25,6 @@ public class EntityLookAndRelativeMovePacket implements ServerPacket {
@Override
public int getId() {
return 0x2A;
return ServerPacketIdentifier.ENTITY_POSITION_AND_ROTATION;
}
}

View File

@ -2,8 +2,9 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityRelativeMovePacket implements ServerPacket {
public class EntityPositionPacket implements ServerPacket {
public int entityId;
public short deltaX, deltaY, deltaZ;
@ -20,6 +21,6 @@ public class EntityRelativeMovePacket implements ServerPacket {
@Override
public int getId() {
return 0x29;
return ServerPacketIdentifier.ENTITY_POSITION;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityPropertiesPacket implements ServerPacket {
@ -20,7 +21,7 @@ public class EntityPropertiesPacket implements ServerPacket {
@Override
public int getId() {
return 0x59;
return ServerPacketIdentifier.ENTITY_PROPERTIES;
}
public static class Property {

View File

@ -2,8 +2,9 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityLookPacket implements ServerPacket {
public class EntityRotationPacket implements ServerPacket {
public int entityId;
public float yaw, pitch;
@ -19,6 +20,6 @@ public class EntityLookPacket implements ServerPacket {
@Override
public int getId() {
return 0x2B;
return ServerPacketIdentifier.ENTITY_ROTATION;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityStatusPacket implements ServerPacket {
@ -16,6 +17,6 @@ public class EntityStatusPacket implements ServerPacket {
@Override
public int getId() {
return 0x1C;
return ServerPacketIdentifier.ENTITY_STATUS;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.Position;
public class EntityTeleportPacket implements ServerPacket {
@ -23,6 +24,6 @@ public class EntityTeleportPacket implements ServerPacket {
@Override
public int getId() {
return 0x57;
return ServerPacketIdentifier.ENTITY_TELEPORT;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class EntityVelocityPacket implements ServerPacket {
@ -18,6 +19,6 @@ public class EntityVelocityPacket implements ServerPacket {
@Override
public int getId() {
return 0x46;
return ServerPacketIdentifier.ENTITY_VELOCITY;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class ExplosionPacket implements ServerPacket {
@ -26,6 +27,6 @@ public class ExplosionPacket implements ServerPacket {
@Override
public int getId() {
return 0x1D;
return ServerPacketIdentifier.EXPLOSION;
}
}

View File

@ -0,0 +1,39 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class FacePlayerPacket implements ServerPacket {
public FacePosition facePosition;
public double targetX, targetY, targetZ;
public boolean isEntity;
public int entityId;
public FacePosition entityFacePosition;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(facePosition.ordinal());
writer.writeDouble(targetX);
writer.writeDouble(targetY);
writer.writeDouble(targetZ);
writer.writeBoolean(isEntity);
if (isEntity) {
writer.writeVarInt(entityId);
writer.writeVarInt(entityFacePosition.ordinal());
}
}
@Override
public int getId() {
return ServerPacketIdentifier.FACE_PLAYER;
}
public enum FacePosition {
FEET, EYES;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class HeldItemChangePacket implements ServerPacket {
@ -14,6 +15,6 @@ public class HeldItemChangePacket implements ServerPacket {
@Override
public int getId() {
return 0x40;
return ServerPacketIdentifier.HELD_ITEM_CHANGE;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class KeepAlivePacket implements ServerPacket {
@ -18,6 +19,6 @@ public class KeepAlivePacket implements ServerPacket {
@Override
public int getId() {
return 0x21;
return ServerPacketIdentifier.KEEP_ALIVE;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class MultiBlockChangePacket implements ServerPacket {
@ -30,7 +31,7 @@ public class MultiBlockChangePacket implements ServerPacket {
@Override
public int getId() {
return 0x10;
return ServerPacketIdentifier.MULTI_BLOCK_CHANGE;
}
public static class BlockChange {

View File

@ -0,0 +1,21 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.entity.Player;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class OpenBookPacket implements ServerPacket {
public Player.Hand hand;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(hand.ordinal());
}
@Override
public int getId() {
return ServerPacketIdentifier.OPEN_BOOK;
}
}

View File

@ -0,0 +1,22 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
public class OpenSignEditorPacket implements ServerPacket {
// WARNING: There must be a sign in this location (you can send a BlockChangePacket beforehand)
public BlockPosition signPosition;
@Override
public void write(PacketWriter writer) {
writer.writeBlockPosition(signPosition);
}
@Override
public int getId() {
return ServerPacketIdentifier.OPEN_SIGN_EDITOR;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class OpenWindowPacket implements ServerPacket {
@ -18,6 +19,6 @@ public class OpenWindowPacket implements ServerPacket {
@Override
public int getId() {
return 0x2F;
return ServerPacketIdentifier.OPEN_WINDOW;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class ParticlePacket implements ServerPacket {
@ -32,6 +33,6 @@ public class ParticlePacket implements ServerPacket {
@Override
public int getId() {
return 0x24;
return ServerPacketIdentifier.PARTICLE;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class PlayerAbilitiesPacket implements ServerPacket {
@ -34,6 +35,6 @@ public class PlayerAbilitiesPacket implements ServerPacket {
@Override
public int getId() {
return 0x32;
return ServerPacketIdentifier.PLAYER_ABILITIES;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.entity.GameMode;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import java.util.ArrayList;
import java.util.UUID;
@ -31,7 +32,7 @@ public class PlayerInfoPacket implements ServerPacket {
@Override
public int getId() {
return 0x34;
return ServerPacketIdentifier.PLAYER_INFO;
}
public enum Action {

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.Position;
public class PlayerPositionAndLookPacket implements ServerPacket {
@ -24,6 +25,6 @@ public class PlayerPositionAndLookPacket implements ServerPacket {
@Override
public int getId() {
return 0x36;
return ServerPacketIdentifier.PLAYER_POSITION_AND_LOOK;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class RemoveEntityEffectPacket implements ServerPacket {
@ -16,6 +17,6 @@ public class RemoveEntityEffectPacket implements ServerPacket {
@Override
public int getId() {
return 0x39;
return ServerPacketIdentifier.REMOVE_ENTITY_EFFECT;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.entity.GameMode;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.world.Dimension;
import fr.themode.minestom.world.LevelType;
@ -23,6 +24,6 @@ public class RespawnPacket implements ServerPacket {
@Override
public int getId() {
return 0x3B;
return ServerPacketIdentifier.RESPAWN;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class ScoreboardObjectivePacket implements ServerPacket {
@ -24,6 +25,6 @@ public class ScoreboardObjectivePacket implements ServerPacket {
@Override
public int getId() {
return 0x4A;
return ServerPacketIdentifier.SCOREBOARD_OBJECTIVE;
}
}

View File

@ -0,0 +1,22 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class SetCooldownPacket implements ServerPacket {
public int itemId;
public int cooldownTicks;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(itemId);
writer.writeVarInt(cooldownTicks);
}
@Override
public int getId() {
return ServerPacketIdentifier.SET_COOLDOWN;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class SetExperiencePacket implements ServerPacket {
@ -18,6 +19,6 @@ public class SetExperiencePacket implements ServerPacket {
@Override
public int getId() {
return 0x48;
return ServerPacketIdentifier.SET_EXPERIENCE;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class SetPassengersPacket implements ServerPacket {
@ -16,6 +17,6 @@ public class SetPassengersPacket implements ServerPacket {
@Override
public int getId() {
return 0x4B;
return ServerPacketIdentifier.SET_PASSENGERS;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.item.ItemStack;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class SetSlotPacket implements ServerPacket {
@ -19,6 +20,6 @@ public class SetSlotPacket implements ServerPacket {
@Override
public int getId() {
return 0x17;
return ServerPacketIdentifier.SET_SLOT;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.Position;
public class SpawnExperienceOrbPacket implements ServerPacket {
@ -21,6 +22,6 @@ public class SpawnExperienceOrbPacket implements ServerPacket {
@Override
public int getId() {
return 0x01;
return ServerPacketIdentifier.SPAWN_EXPERIENCE_ORB;
}
}

View File

@ -0,0 +1,26 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class SpawnGlobalEntityPacket implements ServerPacket {
public int entityId;
public byte type;
public double x, y, z;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(entityId);
writer.writeByte(type);
writer.writeDouble(x);
writer.writeDouble(y);
writer.writeDouble(z);
}
@Override
public int getId() {
return ServerPacketIdentifier.SPAWN_GLOBAL_ENTITY;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.Position;
import java.util.UUID;
@ -20,12 +21,15 @@ public class SpawnMobPacket implements ServerPacket {
writer.writeVarInt(entityId);
writer.writeUuid(entityUuid);
writer.writeVarInt(entityType);
writer.writeDouble(position.getX());
writer.writeDouble(position.getY());
writer.writeDouble(position.getZ());
writer.writeFloat(position.getYaw());
writer.writeFloat(position.getPitch());
writer.writeFloat(headPitch);
writer.writeByte((byte) (position.getYaw() * 256 / 360));
writer.writeByte((byte) (position.getPitch() * 256 / 360));
writer.writeByte((byte) (headPitch * 256 / 360));
writer.writeShort(velocityX);
writer.writeShort(velocityY);
writer.writeShort(velocityZ);
@ -34,6 +38,6 @@ public class SpawnMobPacket implements ServerPacket {
@Override
public int getId() {
return 0x03;
return ServerPacketIdentifier.SPAWN_MOB;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.Position;
import java.util.UUID;
@ -29,6 +30,6 @@ public class SpawnObjectPacket implements ServerPacket {
@Override
public int getId() {
return 0x00;
return ServerPacketIdentifier.SPAWN_OBJECT;
}
}

View File

@ -0,0 +1,31 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.BlockPosition;
import java.util.UUID;
public class SpawnPaintingPacket implements ServerPacket {
public int entityId;
public UUID entityUuid;
public int motive;
public BlockPosition position;
public byte direction;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(entityId);
writer.writeUuid(entityUuid);
writer.writeVarInt(motive);
writer.writeBlockPosition(position);
writer.writeByte(direction);
}
@Override
public int getId() {
return ServerPacketIdentifier.SPAWN_PAINTING;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
import fr.themode.minestom.utils.Position;
import java.util.UUID;
@ -25,6 +26,6 @@ public class SpawnPlayerPacket implements ServerPacket {
@Override
public int getId() {
return 0x05;
return ServerPacketIdentifier.SPAWN_PLAYER;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class SpawnPositionPacket implements ServerPacket {
@ -14,6 +15,6 @@ public class SpawnPositionPacket implements ServerPacket {
@Override
public int getId() {
return 0x4E;
return ServerPacketIdentifier.SPAWN_POSITION;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class TeamsPacket implements ServerPacket {
@ -47,7 +48,7 @@ public class TeamsPacket implements ServerPacket {
@Override
public int getId() {
return 0x4C;
return ServerPacketIdentifier.TEAMS;
}
public enum Action {

View File

@ -0,0 +1,61 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.chat.Chat;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class TitlePacket implements ServerPacket {
public Action action;
public String titleText;
public String subtitleText;
public String actionBarText;
public int fadeIn;
public int stay;
public int fadeOut;
@Override
public void write(PacketWriter writer) {
writer.writeVarInt(action.ordinal());
switch (action) {
case SET_TITLE:
writer.writeSizedString(Chat.legacyTextString(titleText));
break;
case SET_SUBTITLE:
writer.writeSizedString(Chat.legacyTextString(subtitleText));
break;
case SET_ACTION_BAR:
writer.writeSizedString(Chat.legacyTextString(actionBarText));
break;
case SET_TIMES_AND_DISPLAY:
writer.writeInt(fadeIn);
writer.writeInt(stay);
writer.writeInt(fadeOut);
break;
case HIDE:
case RESET:
break;
}
}
@Override
public int getId() {
return ServerPacketIdentifier.TITLE;
}
public enum Action {
SET_TITLE,
SET_SUBTITLE,
SET_ACTION_BAR,
SET_TIMES_AND_DISPLAY,
HIDE,
RESET;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.item.ItemStack;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class TradeListPacket implements ServerPacket {
@ -28,7 +29,7 @@ public class TradeListPacket implements ServerPacket {
@Override
public int getId() {
return 0x28;
return ServerPacketIdentifier.TRADE_LIST;
}
public static class Trade {

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class UnloadChunkPacket implements ServerPacket {
@ -15,6 +16,6 @@ public class UnloadChunkPacket implements ServerPacket {
@Override
public int getId() {
return 0x1E;
return ServerPacketIdentifier.UNLOAD_CHUNK;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class UpdateHealthPacket implements ServerPacket {
@ -18,6 +19,6 @@ public class UpdateHealthPacket implements ServerPacket {
@Override
public int getId() {
return 0x49;
return ServerPacketIdentifier.UPDATE_HEALTH;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class UpdateScorePacket implements ServerPacket {
@ -22,6 +23,6 @@ public class UpdateScorePacket implements ServerPacket {
@Override
public int getId() {
return 0x4D;
return ServerPacketIdentifier.UPDATE_SCORE;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.instance.Chunk;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class UpdateViewPositionPacket implements ServerPacket {
@ -20,6 +21,6 @@ public class UpdateViewPositionPacket implements ServerPacket {
@Override
public int getId() {
return 0x41;
return ServerPacketIdentifier.UPDATE_VIEW_POSITION;
}
}

View File

@ -0,0 +1,25 @@
package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class VehicleMovePacket implements ServerPacket {
public double x, y, z;
public float yaw, pitch;
@Override
public void write(PacketWriter writer) {
writer.writeDouble(x);
writer.writeDouble(y);
writer.writeDouble(z);
writer.writeFloat(yaw);
writer.writeFloat(pitch);
}
@Override
public int getId() {
return ServerPacketIdentifier.VEHICLE_MOVE;
}
}

View File

@ -3,6 +3,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.item.ItemStack;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class WindowItemsPacket implements ServerPacket {
@ -28,6 +29,6 @@ public class WindowItemsPacket implements ServerPacket {
@Override
public int getId() {
return 0x15;
return ServerPacketIdentifier.WINDOW_ITEMS;
}
}

View File

@ -2,6 +2,7 @@ package fr.themode.minestom.net.packet.server.play;
import fr.themode.minestom.net.packet.PacketWriter;
import fr.themode.minestom.net.packet.server.ServerPacket;
import fr.themode.minestom.net.packet.server.ServerPacketIdentifier;
public class WindowPropertyPacket implements ServerPacket {
@ -18,6 +19,6 @@ public class WindowPropertyPacket implements ServerPacket {
@Override
public int getId() {
return 0x16;
return ServerPacketIdentifier.WINDOW_PROPERTY;
}
}