mirror of
https://github.com/GeyserMC/MCProtocolLib.git
synced 2024-12-04 12:51:09 -05:00
15w32c
This commit is contained in:
parent
4ccf753002
commit
abb2108fb3
22 changed files with 385 additions and 131 deletions
2
pom.xml
2
pom.xml
|
@ -4,7 +4,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.spacehq</groupId>
|
||||
<artifactId>mcprotocollib</artifactId>
|
||||
<version>1.8.8-SNAPSHOT</version>
|
||||
<version>15w32c</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>MCProtocolLib</name>
|
||||
|
|
|
@ -2,8 +2,8 @@ package org.spacehq.mc.protocol;
|
|||
|
||||
public class MinecraftConstants {
|
||||
// General Constants
|
||||
public static final String GAME_VERSION = "1.8.8";
|
||||
public static final int PROTOCOL_VERSION = 47;
|
||||
public static final String GAME_VERSION = "15w32c";
|
||||
public static final int PROTOCOL_VERSION = 54;
|
||||
|
||||
// General Key Constants
|
||||
public static final String PROFILE_KEY = "profile";
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerPositionP
|
|||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerPositionRotationPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerRotationPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerStatePacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerUseItemPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientSpectatePacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientSteerVehiclePacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientSwingArmPacket;
|
||||
|
@ -56,7 +57,7 @@ import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityEquipment
|
|||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityHeadLookPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityMetadataPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityMovementPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityNBTUpdatePacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.ServerBossBarPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityPositionPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityPositionRotationPacket;
|
||||
import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityPropertiesPacket;
|
||||
|
@ -386,7 +387,7 @@ public class MinecraftProtocol extends PacketProtocol {
|
|||
this.registerIncoming(70, ServerSetCompressionPacket.class);
|
||||
this.registerIncoming(71, ServerPlayerListDataPacket.class);
|
||||
this.registerIncoming(72, ServerResourcePackSendPacket.class);
|
||||
this.registerIncoming(73, ServerEntityNBTUpdatePacket.class);
|
||||
this.registerIncoming(73, ServerBossBarPacket.class);
|
||||
|
||||
this.registerOutgoing(0, ClientKeepAlivePacket.class);
|
||||
this.registerOutgoing(1, ClientChatPacket.class);
|
||||
|
@ -396,24 +397,25 @@ public class MinecraftProtocol extends PacketProtocol {
|
|||
this.registerOutgoing(5, ClientPlayerRotationPacket.class);
|
||||
this.registerOutgoing(6, ClientPlayerPositionRotationPacket.class);
|
||||
this.registerOutgoing(7, ClientPlayerActionPacket.class);
|
||||
this.registerOutgoing(8, ClientPlayerPlaceBlockPacket.class);
|
||||
this.registerOutgoing(9, ClientChangeHeldItemPacket.class);
|
||||
this.registerOutgoing(10, ClientSwingArmPacket.class);
|
||||
this.registerOutgoing(11, ClientPlayerStatePacket.class);
|
||||
this.registerOutgoing(12, ClientSteerVehiclePacket.class);
|
||||
this.registerOutgoing(13, ClientCloseWindowPacket.class);
|
||||
this.registerOutgoing(14, ClientWindowActionPacket.class);
|
||||
this.registerOutgoing(15, ClientConfirmTransactionPacket.class);
|
||||
this.registerOutgoing(16, ClientCreativeInventoryActionPacket.class);
|
||||
this.registerOutgoing(17, ClientEnchantItemPacket.class);
|
||||
this.registerOutgoing(18, ClientUpdateSignPacket.class);
|
||||
this.registerOutgoing(19, ClientPlayerAbilitiesPacket.class);
|
||||
this.registerOutgoing(20, ClientTabCompletePacket.class);
|
||||
this.registerOutgoing(21, ClientSettingsPacket.class);
|
||||
this.registerOutgoing(22, ClientRequestPacket.class);
|
||||
this.registerOutgoing(23, ClientPluginMessagePacket.class);
|
||||
this.registerOutgoing(24, ClientSpectatePacket.class);
|
||||
this.registerOutgoing(25, ClientResourcePackStatusPacket.class);
|
||||
this.registerOutgoing(8, ClientPlayerUseItemPacket.class);
|
||||
this.registerOutgoing(9, ClientPlayerPlaceBlockPacket.class);
|
||||
this.registerOutgoing(10, ClientChangeHeldItemPacket.class);
|
||||
this.registerOutgoing(11, ClientSwingArmPacket.class);
|
||||
this.registerOutgoing(12, ClientPlayerStatePacket.class);
|
||||
this.registerOutgoing(13, ClientSteerVehiclePacket.class);
|
||||
this.registerOutgoing(14, ClientCloseWindowPacket.class);
|
||||
this.registerOutgoing(15, ClientWindowActionPacket.class);
|
||||
this.registerOutgoing(16, ClientConfirmTransactionPacket.class);
|
||||
this.registerOutgoing(17, ClientCreativeInventoryActionPacket.class);
|
||||
this.registerOutgoing(18, ClientEnchantItemPacket.class);
|
||||
this.registerOutgoing(19, ClientUpdateSignPacket.class);
|
||||
this.registerOutgoing(20, ClientPlayerAbilitiesPacket.class);
|
||||
this.registerOutgoing(21, ClientTabCompletePacket.class);
|
||||
this.registerOutgoing(22, ClientSettingsPacket.class);
|
||||
this.registerOutgoing(23, ClientRequestPacket.class);
|
||||
this.registerOutgoing(24, ClientPluginMessagePacket.class);
|
||||
this.registerOutgoing(25, ClientSpectatePacket.class);
|
||||
this.registerOutgoing(26, ClientResourcePackStatusPacket.class);
|
||||
}
|
||||
|
||||
private void initServerGame(Session session) {
|
||||
|
@ -517,7 +519,7 @@ public class MinecraftProtocol extends PacketProtocol {
|
|||
this.registerOutgoing(70, ServerSetCompressionPacket.class);
|
||||
this.registerOutgoing(71, ServerPlayerListDataPacket.class);
|
||||
this.registerOutgoing(72, ServerResourcePackSendPacket.class);
|
||||
this.registerOutgoing(73, ServerEntityNBTUpdatePacket.class);
|
||||
this.registerOutgoing(73, ServerBossBarPacket.class);
|
||||
}
|
||||
|
||||
private void initClientStatus(Session session) {
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package org.spacehq.mc.protocol.data.game.values;
|
||||
|
||||
public enum BossBarAction {
|
||||
ADD,
|
||||
REMOVE,
|
||||
UPDATE_HEALTH,
|
||||
UPDATE_TITLE,
|
||||
UPDATE_STYLE,
|
||||
UPDATE_FLAGS;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.spacehq.mc.protocol.data.game.values;
|
||||
|
||||
public enum BossBarColor {
|
||||
PINK,
|
||||
CYAN,
|
||||
RED,
|
||||
LIME,
|
||||
YELLOW,
|
||||
PURPLE,
|
||||
WHITE;
|
||||
}
|
|
@ -1,9 +1,7 @@
|
|||
package org.spacehq.mc.protocol.data.game.values;
|
||||
|
||||
public enum ClientRequest {
|
||||
|
||||
RESPAWN,
|
||||
STATS,
|
||||
OPEN_INVENTORY_ACHIEVEMENT;
|
||||
|
||||
OPEN_INVENTORY;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package org.spacehq.mc.protocol.data.game.values;
|
||||
|
||||
public enum Hand {
|
||||
MAIN_HAND,
|
||||
OFF_HAND;
|
||||
}
|
|
@ -109,7 +109,7 @@ public class MagicValues {
|
|||
|
||||
register(ClientRequest.RESPAWN, 0);
|
||||
register(ClientRequest.STATS, 1);
|
||||
register(ClientRequest.OPEN_INVENTORY_ACHIEVEMENT, 2);
|
||||
register(ClientRequest.OPEN_INVENTORY, 2);
|
||||
|
||||
register(ChatVisibility.FULL, 0);
|
||||
register(ChatVisibility.SYSTEM, 1);
|
||||
|
@ -121,7 +121,6 @@ public class MagicValues {
|
|||
register(PlayerState.START_SPRINTING, 3);
|
||||
register(PlayerState.STOP_SPRINTING, 4);
|
||||
register(PlayerState.RIDING_JUMP, 5);
|
||||
register(PlayerState.OPEN_INVENTORY, 6);
|
||||
|
||||
register(InteractAction.INTERACT, 0);
|
||||
register(InteractAction.ATTACK, 1);
|
||||
|
@ -133,6 +132,7 @@ public class MagicValues {
|
|||
register(PlayerAction.DROP_ITEM_STACK, 3);
|
||||
register(PlayerAction.DROP_ITEM, 4);
|
||||
register(PlayerAction.RELEASE_USE_ITEM, 5);
|
||||
register(PlayerAction.SWAP_HANDS, 6);
|
||||
|
||||
register(Face.BOTTOM, 0);
|
||||
register(Face.TOP, 1);
|
||||
|
@ -881,6 +881,24 @@ public class MagicValues {
|
|||
register(ResourcePackStatus.DECLINED, 1);
|
||||
register(ResourcePackStatus.FAILED_DOWNLOAD, 2);
|
||||
register(ResourcePackStatus.ACCEPTED, 3);
|
||||
|
||||
register(Hand.MAIN_HAND, 0);
|
||||
register(Hand.OFF_HAND, 1);
|
||||
|
||||
register(BossBarAction.ADD, 0);
|
||||
register(BossBarAction.REMOVE, 1);
|
||||
register(BossBarAction.UPDATE_HEALTH, 2);
|
||||
register(BossBarAction.UPDATE_TITLE, 3);
|
||||
register(BossBarAction.UPDATE_STYLE, 4);
|
||||
register(BossBarAction.UPDATE_FLAGS, 5);
|
||||
|
||||
register(BossBarColor.PINK, 0);
|
||||
register(BossBarColor.CYAN, 1);
|
||||
register(BossBarColor.RED, 2);
|
||||
register(BossBarColor.LIME, 3);
|
||||
register(BossBarColor.YELLOW, 4);
|
||||
register(BossBarColor.PURPLE, 5);
|
||||
register(BossBarColor.WHITE, 6);
|
||||
}
|
||||
|
||||
private static void register(Enum<?> key, Object value) {
|
||||
|
|
|
@ -7,6 +7,7 @@ public enum PlayerAction {
|
|||
FINISH_DIGGING,
|
||||
DROP_ITEM_STACK,
|
||||
DROP_ITEM,
|
||||
RELEASE_USE_ITEM;
|
||||
RELEASE_USE_ITEM,
|
||||
SWAP_HANDS;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
package org.spacehq.mc.protocol.data.game.values.entity.player;
|
||||
|
||||
public enum PlayerState {
|
||||
|
||||
START_SNEAKING,
|
||||
STOP_SNEAKING,
|
||||
LEAVE_BED,
|
||||
START_SPRINTING,
|
||||
STOP_SPRINTING,
|
||||
RIDING_JUMP,
|
||||
OPEN_INVENTORY;
|
||||
|
||||
RIDING_JUMP;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.client;
|
||||
|
||||
import org.spacehq.mc.protocol.data.game.values.Hand;
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.mc.protocol.data.game.values.setting.ChatVisibility;
|
||||
import org.spacehq.mc.protocol.data.game.values.setting.SkinPart;
|
||||
|
@ -19,17 +20,19 @@ public class ClientSettingsPacket implements Packet {
|
|||
private ChatVisibility chatVisibility;
|
||||
private boolean chatColors;
|
||||
private List<SkinPart> visibleParts;
|
||||
private Hand mainHand;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ClientSettingsPacket() {
|
||||
}
|
||||
|
||||
public ClientSettingsPacket(String locale, int renderDistance, ChatVisibility chatVisibility, boolean chatColors, SkinPart... visibleParts) {
|
||||
public ClientSettingsPacket(String locale, int renderDistance, ChatVisibility chatVisibility, boolean chatColors, SkinPart[] visibleParts, Hand mainHand) {
|
||||
this.locale = locale;
|
||||
this.renderDistance = renderDistance;
|
||||
this.chatVisibility = chatVisibility;
|
||||
this.chatColors = chatColors;
|
||||
this.visibleParts = Arrays.asList(visibleParts);
|
||||
this.mainHand = mainHand;
|
||||
}
|
||||
|
||||
public String getLocale() {
|
||||
|
@ -52,13 +55,18 @@ public class ClientSettingsPacket implements Packet {
|
|||
return this.visibleParts;
|
||||
}
|
||||
|
||||
public Hand getMainHand() {
|
||||
return this.mainHand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.locale = in.readString();
|
||||
this.renderDistance = in.readByte();
|
||||
this.chatVisibility = MagicValues.key(ChatVisibility.class, in.readByte());
|
||||
this.chatVisibility = MagicValues.key(ChatVisibility.class, in.readVarInt());
|
||||
this.chatColors = in.readBoolean();
|
||||
this.visibleParts = new ArrayList<SkinPart>();
|
||||
|
||||
int flags = in.readUnsignedByte();
|
||||
for(SkinPart part : SkinPart.values()) {
|
||||
int bit = 1 << part.ordinal();
|
||||
|
@ -66,20 +74,25 @@ public class ClientSettingsPacket implements Packet {
|
|||
this.visibleParts.add(part);
|
||||
}
|
||||
}
|
||||
|
||||
this.mainHand = MagicValues.key(Hand.class, in.readVarInt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeString(this.locale);
|
||||
out.writeByte(this.renderDistance);
|
||||
out.writeByte(MagicValues.value(Integer.class, this.chatVisibility));
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.chatVisibility));
|
||||
out.writeBoolean(this.chatColors);
|
||||
|
||||
int flags = 0;
|
||||
for(SkinPart part : this.visibleParts) {
|
||||
flags |= 1 << part.ordinal();
|
||||
}
|
||||
|
||||
out.writeByte(flags);
|
||||
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.mainHand));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.client.player;
|
||||
|
||||
import org.spacehq.mc.protocol.data.game.values.Hand;
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.mc.protocol.data.game.values.entity.player.InteractAction;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
|
@ -16,21 +17,27 @@ public class ClientPlayerInteractEntityPacket implements Packet {
|
|||
private float targetX;
|
||||
private float targetY;
|
||||
private float targetZ;
|
||||
private Hand hand;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ClientPlayerInteractEntityPacket() {
|
||||
}
|
||||
|
||||
public ClientPlayerInteractEntityPacket(int entityId, InteractAction action) {
|
||||
this(entityId, action, 0, 0, 0);
|
||||
this(entityId, action, Hand.MAIN_HAND);
|
||||
}
|
||||
|
||||
public ClientPlayerInteractEntityPacket(int entityId, InteractAction action, float targetX, float targetY, float targetZ) {
|
||||
public ClientPlayerInteractEntityPacket(int entityId, InteractAction action, Hand hand) {
|
||||
this(entityId, action, 0, 0, 0, hand);
|
||||
}
|
||||
|
||||
public ClientPlayerInteractEntityPacket(int entityId, InteractAction action, float targetX, float targetY, float targetZ, Hand hand) {
|
||||
this.entityId = entityId;
|
||||
this.action = action;
|
||||
this.targetX = targetX;
|
||||
this.targetY = targetY;
|
||||
this.targetZ = targetZ;
|
||||
this.hand = hand;
|
||||
}
|
||||
|
||||
public int getEntityId() {
|
||||
|
@ -41,6 +48,22 @@ public class ClientPlayerInteractEntityPacket implements Packet {
|
|||
return this.action;
|
||||
}
|
||||
|
||||
public float getTargetX() {
|
||||
return this.targetX;
|
||||
}
|
||||
|
||||
public float getTargetY() {
|
||||
return this.targetY;
|
||||
}
|
||||
|
||||
public float getTargetZ() {
|
||||
return this.targetZ;
|
||||
}
|
||||
|
||||
public Hand getHand() {
|
||||
return this.hand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.entityId = in.readVarInt();
|
||||
|
@ -50,6 +73,10 @@ public class ClientPlayerInteractEntityPacket implements Packet {
|
|||
this.targetY = in.readFloat();
|
||||
this.targetZ = in.readFloat();
|
||||
}
|
||||
|
||||
if(this.action == InteractAction.INTERACT || this.action == InteractAction.INTERACT_AT) {
|
||||
this.hand = MagicValues.key(Hand.class, in.readVarInt());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -61,6 +88,10 @@ public class ClientPlayerInteractEntityPacket implements Packet {
|
|||
out.writeFloat(this.targetY);
|
||||
out.writeFloat(this.targetZ);
|
||||
}
|
||||
|
||||
if(this.action == InteractAction.INTERACT || this.action == InteractAction.INTERACT_AT) {
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.hand));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.client.player;
|
||||
|
||||
import org.spacehq.mc.protocol.data.game.ItemStack;
|
||||
import org.spacehq.mc.protocol.data.game.Position;
|
||||
import org.spacehq.mc.protocol.data.game.values.Face;
|
||||
import org.spacehq.mc.protocol.data.game.values.Hand;
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.mc.protocol.util.NetUtil;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
|
@ -15,7 +15,7 @@ public class ClientPlayerPlaceBlockPacket implements Packet {
|
|||
|
||||
private Position position;
|
||||
private Face face;
|
||||
private ItemStack held;
|
||||
private Hand hand;
|
||||
private float cursorX;
|
||||
private float cursorY;
|
||||
private float cursorZ;
|
||||
|
@ -24,10 +24,10 @@ public class ClientPlayerPlaceBlockPacket implements Packet {
|
|||
private ClientPlayerPlaceBlockPacket() {
|
||||
}
|
||||
|
||||
public ClientPlayerPlaceBlockPacket(Position position, Face face, ItemStack held, float cursorX, float cursorY, float cursorZ) {
|
||||
public ClientPlayerPlaceBlockPacket(Position position, Face face, Hand hand, float cursorX, float cursorY, float cursorZ) {
|
||||
this.position = position;
|
||||
this.face = face;
|
||||
this.held = held;
|
||||
this.hand = hand;
|
||||
this.cursorX = cursorX;
|
||||
this.cursorY = cursorY;
|
||||
this.cursorZ = cursorZ;
|
||||
|
@ -41,8 +41,8 @@ public class ClientPlayerPlaceBlockPacket implements Packet {
|
|||
return this.face;
|
||||
}
|
||||
|
||||
public ItemStack getHeldItem() {
|
||||
return this.held;
|
||||
public Hand getHand() {
|
||||
return this.hand;
|
||||
}
|
||||
|
||||
public float getCursorX() {
|
||||
|
@ -61,7 +61,7 @@ public class ClientPlayerPlaceBlockPacket implements Packet {
|
|||
public void read(NetInput in) throws IOException {
|
||||
this.position = NetUtil.readPosition(in);
|
||||
this.face = MagicValues.key(Face.class, in.readUnsignedByte());
|
||||
this.held = NetUtil.readItem(in);
|
||||
this.hand = MagicValues.key(Hand.class, in.readVarInt());
|
||||
this.cursorX = in.readByte() / 16f;
|
||||
this.cursorY = in.readByte() / 16f;
|
||||
this.cursorZ = in.readByte() / 16f;
|
||||
|
@ -71,7 +71,7 @@ public class ClientPlayerPlaceBlockPacket implements Packet {
|
|||
public void write(NetOutput out) throws IOException {
|
||||
NetUtil.writePosition(out, this.position);
|
||||
out.writeByte(MagicValues.value(Integer.class, this.face));
|
||||
NetUtil.writeItem(out, this.held);
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.hand));
|
||||
out.writeByte((int) (this.cursorX * 16));
|
||||
out.writeByte((int) (this.cursorY * 16));
|
||||
out.writeByte((int) (this.cursorZ * 16));
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.client.player;
|
||||
|
||||
import org.spacehq.mc.protocol.data.game.values.Hand;
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
import org.spacehq.packetlib.io.NetOutput;
|
||||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class ClientPlayerUseItemPacket implements Packet {
|
||||
private Hand hand;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ClientPlayerUseItemPacket() {
|
||||
}
|
||||
|
||||
public ClientPlayerUseItemPacket(Hand hand) {
|
||||
this.hand = hand;
|
||||
}
|
||||
|
||||
public Hand getHand() {
|
||||
return this.hand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.hand = MagicValues.key(Hand.class, in.readVarInt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.hand));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPriority() {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.client.player;
|
||||
|
||||
import org.spacehq.mc.protocol.data.game.values.Hand;
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
import org.spacehq.packetlib.io.NetOutput;
|
||||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
@ -7,21 +9,32 @@ import org.spacehq.packetlib.packet.Packet;
|
|||
import java.io.IOException;
|
||||
|
||||
public class ClientSwingArmPacket implements Packet {
|
||||
private Hand hand;
|
||||
|
||||
public ClientSwingArmPacket() {
|
||||
@SuppressWarnings("unused")
|
||||
private ClientSwingArmPacket() {
|
||||
}
|
||||
|
||||
public ClientSwingArmPacket(Hand hand) {
|
||||
this.hand = hand;
|
||||
}
|
||||
|
||||
public Hand getHand() {
|
||||
return this.hand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.hand = MagicValues.key(Hand.class, in.readVarInt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.hand));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPriority() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,151 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.server;
|
||||
|
||||
import org.spacehq.mc.protocol.data.game.values.BossBarAction;
|
||||
import org.spacehq.mc.protocol.data.game.values.BossBarColor;
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.mc.protocol.data.message.Message;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
import org.spacehq.packetlib.io.NetOutput;
|
||||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ServerBossBarPacket implements Packet {
|
||||
private UUID uuid;
|
||||
private BossBarAction action;
|
||||
|
||||
private Message title;
|
||||
private float health;
|
||||
private BossBarColor color;
|
||||
private int dividers;
|
||||
private int flags;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ServerBossBarPacket() {
|
||||
}
|
||||
|
||||
public ServerBossBarPacket(UUID uuid, BossBarAction action, Message title, float health, BossBarColor color, int dividers, int flags) {
|
||||
this.uuid = uuid;
|
||||
this.action = BossBarAction.ADD;
|
||||
|
||||
this.title = title;
|
||||
this.health = health;
|
||||
this.color = color;
|
||||
this.dividers = dividers;
|
||||
this.flags = flags;
|
||||
}
|
||||
|
||||
public ServerBossBarPacket(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
this.action = BossBarAction.REMOVE;
|
||||
}
|
||||
|
||||
public ServerBossBarPacket(UUID uuid, BossBarAction action, float health) {
|
||||
this.uuid = uuid;
|
||||
this.action = BossBarAction.UPDATE_HEALTH;
|
||||
|
||||
this.health = health;
|
||||
}
|
||||
|
||||
public ServerBossBarPacket(UUID uuid, BossBarAction action, Message title) {
|
||||
this.uuid = uuid;
|
||||
this.action = BossBarAction.UPDATE_TITLE;
|
||||
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public ServerBossBarPacket(UUID uuid, BossBarAction action, BossBarColor color, int dividers) {
|
||||
this.uuid = uuid;
|
||||
this.action = BossBarAction.UPDATE_STYLE;
|
||||
|
||||
this.color = color;
|
||||
this.dividers = dividers;
|
||||
}
|
||||
|
||||
public ServerBossBarPacket(UUID uuid, BossBarAction action, int flags) {
|
||||
this.uuid = uuid;
|
||||
this.action = BossBarAction.UPDATE_FLAGS;
|
||||
|
||||
this.flags = flags;
|
||||
}
|
||||
|
||||
public UUID getUUID() {
|
||||
return this.uuid;
|
||||
}
|
||||
|
||||
public BossBarAction getAction() {
|
||||
return this.action;
|
||||
}
|
||||
|
||||
public Message getTitle() {
|
||||
return this.title;
|
||||
}
|
||||
|
||||
public float getHealth() {
|
||||
return this.health;
|
||||
}
|
||||
|
||||
public BossBarColor getColor() {
|
||||
return this.color;
|
||||
}
|
||||
|
||||
public int getDividers() {
|
||||
return this.dividers;
|
||||
}
|
||||
|
||||
public int getFlags() {
|
||||
return this.flags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.uuid = in.readUUID();
|
||||
this.action = MagicValues.key(BossBarAction.class, in.readVarInt());
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_TITLE) {
|
||||
this.title = Message.fromString(in.readString());
|
||||
}
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_HEALTH) {
|
||||
this.health = in.readFloat();
|
||||
}
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_STYLE) {
|
||||
this.color = MagicValues.key(BossBarColor.class, in.readVarInt());
|
||||
this.dividers = in.readVarInt();
|
||||
}
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_FLAGS) {
|
||||
this.flags = in.readUnsignedByte();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeUUID(this.uuid);
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.action));
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_TITLE) {
|
||||
out.writeString(this.title.toJsonString());
|
||||
}
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_HEALTH) {
|
||||
out.writeFloat(this.health);
|
||||
}
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_STYLE) {
|
||||
out.writeVarInt(MagicValues.value(Integer.class, this.color));
|
||||
out.writeVarInt(this.dividers);
|
||||
}
|
||||
|
||||
if(this.action == BossBarAction.ADD || this.action == BossBarAction.UPDATE_FLAGS) {
|
||||
out.writeByte(this.flags);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPriority() {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package org.spacehq.mc.protocol.packet.ingame.server;
|
|||
|
||||
import org.spacehq.mc.protocol.data.game.values.MagicValues;
|
||||
import org.spacehq.mc.protocol.data.game.values.entity.player.CombatState;
|
||||
import org.spacehq.mc.protocol.data.message.Message;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
import org.spacehq.packetlib.io.NetOutput;
|
||||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
@ -14,7 +15,7 @@ public class ServerCombatPacket implements Packet {
|
|||
private int entityId;
|
||||
private int duration;
|
||||
private int playerId;
|
||||
private String message;
|
||||
private Message message;
|
||||
|
||||
public ServerCombatPacket() {
|
||||
this.state = CombatState.ENTER_COMBAT;
|
||||
|
@ -26,7 +27,7 @@ public class ServerCombatPacket implements Packet {
|
|||
this.duration = duration;
|
||||
}
|
||||
|
||||
public ServerCombatPacket(int entityId, int playerId, String message) {
|
||||
public ServerCombatPacket(int entityId, int playerId, Message message) {
|
||||
this.state = CombatState.ENTITY_DEAD;
|
||||
this.entityId = entityId;
|
||||
this.playerId = playerId;
|
||||
|
@ -49,7 +50,7 @@ public class ServerCombatPacket implements Packet {
|
|||
return this.playerId;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
public Message getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
|
||||
|
@ -62,7 +63,7 @@ public class ServerCombatPacket implements Packet {
|
|||
} else if(this.state == CombatState.ENTITY_DEAD) {
|
||||
this.playerId = in.readVarInt();
|
||||
this.entityId = in.readInt();
|
||||
this.message = in.readString();
|
||||
this.message = Message.fromString(in.readString());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,7 +76,7 @@ public class ServerCombatPacket implements Packet {
|
|||
} else if(this.state == CombatState.ENTITY_DEAD) {
|
||||
out.writeVarInt(this.playerId);
|
||||
out.writeInt(this.entityId);
|
||||
out.writeString(this.message);
|
||||
out.writeString(this.message.toJsonString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,14 +39,14 @@ public class ServerEntityEquipmentPacket implements Packet {
|
|||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.entityId = in.readVarInt();
|
||||
this.slot = in.readShort();
|
||||
this.slot = in.readVarInt();
|
||||
this.item = NetUtil.readItem(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeVarInt(this.entityId);
|
||||
out.writeShort(this.slot);
|
||||
out.writeVarInt(this.slot);
|
||||
NetUtil.writeItem(out, this.item);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
package org.spacehq.mc.protocol.packet.ingame.server.entity;
|
||||
|
||||
import org.spacehq.mc.protocol.util.NetUtil;
|
||||
import org.spacehq.opennbt.tag.builtin.CompoundTag;
|
||||
import org.spacehq.packetlib.io.NetInput;
|
||||
import org.spacehq.packetlib.io.NetOutput;
|
||||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class ServerEntityNBTUpdatePacket implements Packet {
|
||||
private int entityId;
|
||||
private CompoundTag tag;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ServerEntityNBTUpdatePacket() {
|
||||
}
|
||||
|
||||
public ServerEntityNBTUpdatePacket(int entityId, CompoundTag tag) {
|
||||
this.entityId = entityId;
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public int getEntityId() {
|
||||
return this.entityId;
|
||||
}
|
||||
|
||||
public CompoundTag getTag() {
|
||||
return this.tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.entityId = in.readVarInt();
|
||||
this.tag = NetUtil.readNBT(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeVarInt(this.entityId);
|
||||
NetUtil.writeNBT(out, this.tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPriority() {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -9,10 +9,12 @@ import org.spacehq.packetlib.io.NetOutput;
|
|||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ServerSpawnMobPacket implements Packet {
|
||||
|
||||
private int entityId;
|
||||
private UUID uuid;
|
||||
private MobType type;
|
||||
private double x;
|
||||
private double y;
|
||||
|
@ -29,8 +31,9 @@ public class ServerSpawnMobPacket implements Packet {
|
|||
private ServerSpawnMobPacket() {
|
||||
}
|
||||
|
||||
public ServerSpawnMobPacket(int entityId, MobType type, double x, double y, double z, float yaw, float pitch, float headYaw, double motX, double motY, double motZ, EntityMetadata metadata[]) {
|
||||
public ServerSpawnMobPacket(int entityId, UUID uuid, MobType type, double x, double y, double z, float yaw, float pitch, float headYaw, double motX, double motY, double motZ, EntityMetadata metadata[]) {
|
||||
this.entityId = entityId;
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
|
@ -48,6 +51,10 @@ public class ServerSpawnMobPacket implements Packet {
|
|||
return this.entityId;
|
||||
}
|
||||
|
||||
public UUID getUUID() {
|
||||
return this.uuid;
|
||||
}
|
||||
|
||||
public MobType getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
@ -95,6 +102,7 @@ public class ServerSpawnMobPacket implements Packet {
|
|||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.entityId = in.readVarInt();
|
||||
this.uuid = in.readUUID();
|
||||
this.type = MagicValues.key(MobType.class, in.readByte());
|
||||
this.x = in.readInt() / 32D;
|
||||
this.y = in.readInt() / 32D;
|
||||
|
@ -111,6 +119,7 @@ public class ServerSpawnMobPacket implements Packet {
|
|||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeVarInt(this.entityId);
|
||||
out.writeUUID(this.uuid);
|
||||
out.writeByte(MagicValues.value(Integer.class, this.type));
|
||||
out.writeInt((int) (this.x * 32));
|
||||
out.writeInt((int) (this.y * 32));
|
||||
|
|
|
@ -13,10 +13,12 @@ import org.spacehq.packetlib.io.NetOutput;
|
|||
import org.spacehq.packetlib.packet.Packet;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ServerSpawnObjectPacket implements Packet {
|
||||
|
||||
private int entityId;
|
||||
private UUID uuid;
|
||||
private ObjectType type;
|
||||
private double x;
|
||||
private double y;
|
||||
|
@ -32,21 +34,21 @@ public class ServerSpawnObjectPacket implements Packet {
|
|||
private ServerSpawnObjectPacket() {
|
||||
}
|
||||
|
||||
public ServerSpawnObjectPacket(int entityId, ObjectType type, double x, double y, double z, float yaw, float pitch) {
|
||||
this(entityId, type, null, x, y, z, yaw, pitch, 0, 0, 0);
|
||||
public ServerSpawnObjectPacket(int entityId, UUID uuid, ObjectType type, double x, double y, double z, float yaw, float pitch) {
|
||||
this(entityId, uuid, type, null, x, y, z, yaw, pitch, 0, 0, 0);
|
||||
}
|
||||
|
||||
public ServerSpawnObjectPacket(int entityId, ObjectType type, ObjectData data, double x, double y, double z, float yaw, float pitch) {
|
||||
this(entityId, type, data, x, y, z, yaw, pitch, 0, 0, 0);
|
||||
public ServerSpawnObjectPacket(int entityId, UUID uuid, ObjectType type, ObjectData data, double x, double y, double z, float yaw, float pitch) {
|
||||
this(entityId, uuid, type, data, x, y, z, yaw, pitch, 0, 0, 0);
|
||||
}
|
||||
|
||||
public ServerSpawnObjectPacket(int entityId, ObjectType type, double x, double y, double z, float yaw, float pitch, double motX, double motY, double motZ) {
|
||||
this(entityId, type, new ObjectData() {
|
||||
}, x, y, z, yaw, pitch, motX, motY, motZ);
|
||||
public ServerSpawnObjectPacket(int entityId, UUID uuid, ObjectType type, double x, double y, double z, float yaw, float pitch, double motX, double motY, double motZ) {
|
||||
this(entityId, uuid, type, new ObjectData() {}, x, y, z, yaw, pitch, motX, motY, motZ);
|
||||
}
|
||||
|
||||
public ServerSpawnObjectPacket(int entityId, ObjectType type, ObjectData data, double x, double y, double z, float yaw, float pitch, double motX, double motY, double motZ) {
|
||||
public ServerSpawnObjectPacket(int entityId, UUID uuid, ObjectType type, ObjectData data, double x, double y, double z, float yaw, float pitch, double motX, double motY, double motZ) {
|
||||
this.entityId = entityId;
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
this.data = data;
|
||||
this.x = x;
|
||||
|
@ -63,6 +65,10 @@ public class ServerSpawnObjectPacket implements Packet {
|
|||
return this.entityId;
|
||||
}
|
||||
|
||||
public UUID getUUID() {
|
||||
return this.uuid;
|
||||
}
|
||||
|
||||
public ObjectType getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
@ -106,12 +112,14 @@ public class ServerSpawnObjectPacket implements Packet {
|
|||
@Override
|
||||
public void read(NetInput in) throws IOException {
|
||||
this.entityId = in.readVarInt();
|
||||
this.uuid = in.readUUID();
|
||||
this.type = MagicValues.key(ObjectType.class, in.readByte());
|
||||
this.x = in.readInt() / 32D;
|
||||
this.y = in.readInt() / 32D;
|
||||
this.z = in.readInt() / 32D;
|
||||
this.pitch = in.readByte() * 360 / 256f;
|
||||
this.yaw = in.readByte() * 360 / 256f;
|
||||
|
||||
int data = in.readInt();
|
||||
if(data > 0) {
|
||||
if(this.type == ObjectType.MINECART) {
|
||||
|
@ -128,22 +136,24 @@ public class ServerSpawnObjectPacket implements Packet {
|
|||
this.data = new ObjectData() {
|
||||
};
|
||||
}
|
||||
|
||||
this.motX = in.readShort() / 8000D;
|
||||
this.motY = in.readShort() / 8000D;
|
||||
this.motZ = in.readShort() / 8000D;
|
||||
}
|
||||
|
||||
this.motX = in.readShort() / 8000D;
|
||||
this.motY = in.readShort() / 8000D;
|
||||
this.motZ = in.readShort() / 8000D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NetOutput out) throws IOException {
|
||||
out.writeVarInt(this.entityId);
|
||||
out.writeUUID(this.uuid);
|
||||
out.writeByte(MagicValues.value(Integer.class, this.type));
|
||||
out.writeInt((int) (this.x * 32));
|
||||
out.writeInt((int) (this.y * 32));
|
||||
out.writeInt((int) (this.z * 32));
|
||||
out.writeByte((byte) (this.pitch * 256 / 360));
|
||||
out.writeByte((byte) (this.yaw * 256 / 360));
|
||||
|
||||
int data = 0;
|
||||
if(this.data != null) {
|
||||
if(this.data instanceof MinecartType) {
|
||||
|
@ -162,11 +172,10 @@ public class ServerSpawnObjectPacket implements Packet {
|
|||
}
|
||||
|
||||
out.writeInt(data);
|
||||
if(data > 0) {
|
||||
out.writeShort((int) (this.motX * 8000));
|
||||
out.writeShort((int) (this.motY * 8000));
|
||||
out.writeShort((int) (this.motZ * 8000));
|
||||
}
|
||||
|
||||
out.writeShort((int) (this.motX * 8000));
|
||||
out.writeShort((int) (this.motY * 8000));
|
||||
out.writeShort((int) (this.motZ * 8000));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -18,14 +18,13 @@ public class ServerSpawnPlayerPacket implements Packet {
|
|||
private double z;
|
||||
private float yaw;
|
||||
private float pitch;
|
||||
private int currentItem;
|
||||
private EntityMetadata metadata[];
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ServerSpawnPlayerPacket() {
|
||||
}
|
||||
|
||||
public ServerSpawnPlayerPacket(int entityId, UUID uuid, double x, double y, double z, float yaw, float pitch, int currentItem, EntityMetadata metadata[]) {
|
||||
public ServerSpawnPlayerPacket(int entityId, UUID uuid, double x, double y, double z, float yaw, float pitch, EntityMetadata metadata[]) {
|
||||
this.entityId = entityId;
|
||||
this.uuid = uuid;
|
||||
this.x = x;
|
||||
|
@ -33,7 +32,6 @@ public class ServerSpawnPlayerPacket implements Packet {
|
|||
this.z = z;
|
||||
this.yaw = yaw;
|
||||
this.pitch = pitch;
|
||||
this.currentItem = currentItem;
|
||||
this.metadata = metadata;
|
||||
}
|
||||
|
||||
|
@ -65,10 +63,6 @@ public class ServerSpawnPlayerPacket implements Packet {
|
|||
return this.pitch;
|
||||
}
|
||||
|
||||
public int getCurrentItem() {
|
||||
return this.currentItem;
|
||||
}
|
||||
|
||||
public EntityMetadata[] getMetadata() {
|
||||
return this.metadata;
|
||||
}
|
||||
|
@ -82,7 +76,6 @@ public class ServerSpawnPlayerPacket implements Packet {
|
|||
this.z = in.readInt() / 32D;
|
||||
this.yaw = in.readByte() * 360 / 256f;
|
||||
this.pitch = in.readByte() * 360 / 256f;
|
||||
this.currentItem = in.readShort();
|
||||
this.metadata = NetUtil.readEntityMetadata(in);
|
||||
}
|
||||
|
||||
|
@ -95,7 +88,6 @@ public class ServerSpawnPlayerPacket implements Packet {
|
|||
out.writeInt((int) (this.z * 32));
|
||||
out.writeByte((byte) (this.yaw * 256 / 360));
|
||||
out.writeByte((byte) (this.pitch * 256 / 360));
|
||||
out.writeShort(this.currentItem);
|
||||
NetUtil.writeEntityMetadata(out, this.metadata);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue