1177 lines
40 KiB
Diff
1177 lines
40 KiB
Diff
|
From e218bdb001b6480be6e7aa4118a8b5c2a88aa598 Mon Sep 17 00:00:00 2001
|
||
|
From: Shaun Bennett <phination@me.com>
|
||
|
Date: Tue, 21 Apr 2015 19:48:02 -0400
|
||
|
Subject: [PATCH] Mineplex - Packet Changes
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/com/mineplex/spigot/IPacketVerifier.java b/src/main/java/com/mineplex/spigot/IPacketVerifier.java
|
||
|
new file mode 100644
|
||
|
index 0000000..4ada0b2
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/com/mineplex/spigot/IPacketVerifier.java
|
||
|
@@ -0,0 +1,8 @@
|
||
|
+package com.mineplex.spigot;
|
||
|
+
|
||
|
+import net.minecraft.server.Packet;
|
||
|
+
|
||
|
+public interface IPacketVerifier
|
||
|
+{
|
||
|
+ public boolean verify(Packet packet);
|
||
|
+}
|
||
|
diff --git a/src/main/java/com/mineplex/spigot/PacketProcessor.java b/src/main/java/com/mineplex/spigot/PacketProcessor.java
|
||
|
new file mode 100644
|
||
|
index 0000000..e372c4f
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/com/mineplex/spigot/PacketProcessor.java
|
||
|
@@ -0,0 +1,42 @@
|
||
|
+package com.mineplex.spigot;
|
||
|
+
|
||
|
+import net.minecraft.server.NetworkManager;
|
||
|
+import net.minecraft.server.Packet;
|
||
|
+
|
||
|
+import java.util.ArrayList;
|
||
|
+import java.util.List;
|
||
|
+
|
||
|
+public class PacketProcessor
|
||
|
+{
|
||
|
+ private List<IPacketVerifier> _packetVerifiers;
|
||
|
+
|
||
|
+ public PacketProcessor()
|
||
|
+ {
|
||
|
+ _packetVerifiers = new ArrayList<IPacketVerifier>();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void addPacketVerifier(IPacketVerifier verifier)
|
||
|
+ {
|
||
|
+ _packetVerifiers.add(verifier);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void processPacket(Packet packet, NetworkManager networkManager)
|
||
|
+ {
|
||
|
+ boolean addDefaultPacket = true;
|
||
|
+
|
||
|
+ for (IPacketVerifier verifier : _packetVerifiers)
|
||
|
+ {
|
||
|
+ if (!verifier.verify(packet))
|
||
|
+ addDefaultPacket = false;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (addDefaultPacket)
|
||
|
+ networkManager.handle(packet);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void clearVerifiers()
|
||
|
+ {
|
||
|
+ _packetVerifiers.clear();
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
|
||
|
index 01c09b1..5d36e16 100644
|
||
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
||
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
||
|
@@ -325,7 +325,7 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||
|
this.a(channelhandlercontext, (Packet) object);
|
||
|
}
|
||
|
|
||
|
- static class QueuedPacket {
|
||
|
+ public static class QueuedPacket {
|
||
|
|
||
|
private final Packet a;
|
||
|
private final GenericFutureListener<? extends Future<? super Void>>[] b;
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java b/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java
|
||
|
index 4dfb6c0..05c88a6 100644
|
||
|
--- a/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java
|
||
|
@@ -4,7 +4,7 @@ import java.io.IOException;
|
||
|
|
||
|
public class PacketPlayInCloseWindow implements Packet<PacketListenerPlayIn> {
|
||
|
|
||
|
- private int id;
|
||
|
+ public int id;
|
||
|
|
||
|
public PacketPlayInCloseWindow() {}
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutAnimation.java b/src/main/java/net/minecraft/server/PacketPlayOutAnimation.java
|
||
|
new file mode 100644
|
||
|
index 0000000..b5fdd87
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutAnimation.java
|
||
|
@@ -0,0 +1,30 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+
|
||
|
+public class PacketPlayOutAnimation implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+
|
||
|
+ public PacketPlayOutAnimation() {}
|
||
|
+
|
||
|
+ public PacketPlayOutAnimation(Entity entity, int i) {
|
||
|
+ this.a = entity.getId();
|
||
|
+ this.b = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = packetdataserializer.readUnsignedByte();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.writeByte(this.b);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java b/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java
|
||
|
new file mode 100644
|
||
|
index 0000000..6e17e4b
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java
|
||
|
@@ -0,0 +1,41 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+
|
||
|
+public class PacketPlayOutAttachEntity implements Packet<PacketListenerPlayOut>
|
||
|
+{
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+ public int c;
|
||
|
+
|
||
|
+ public PacketPlayOutAttachEntity()
|
||
|
+ {
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutAttachEntity(int i, Entity entity, Entity entity1)
|
||
|
+ {
|
||
|
+ this.a = i;
|
||
|
+ this.b = entity.getId();
|
||
|
+ this.c = entity1 != null ? entity1.getId() : -1;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException
|
||
|
+ {
|
||
|
+ this.b = packetdataserializer.readInt();
|
||
|
+ this.c = packetdataserializer.readInt();
|
||
|
+ this.a = packetdataserializer.readUnsignedByte();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException
|
||
|
+ {
|
||
|
+ packetdataserializer.writeInt(this.b);
|
||
|
+ packetdataserializer.writeInt(this.c);
|
||
|
+ packetdataserializer.writeByte(this.a);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout)
|
||
|
+ {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+}
|
||
|
\ No newline at end of file
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntity.java b/src/main/java/net/minecraft/server/PacketPlayOutEntity.java
|
||
|
new file mode 100644
|
||
|
index 0000000..702d33d
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntity.java
|
||
|
@@ -0,0 +1,134 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+
|
||
|
+public class PacketPlayOutEntity implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public byte b;
|
||
|
+ public byte c;
|
||
|
+ public byte d;
|
||
|
+ public byte e;
|
||
|
+ public byte f;
|
||
|
+ public boolean g;
|
||
|
+ public boolean h;
|
||
|
+
|
||
|
+ public PacketPlayOutEntity() {}
|
||
|
+
|
||
|
+ public PacketPlayOutEntity(int i) {
|
||
|
+ this.a = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+ public String toString() {
|
||
|
+ return "Entity_" + super.toString();
|
||
|
+ }
|
||
|
+
|
||
|
+ public static class PacketPlayOutEntityLook extends PacketPlayOutEntity {
|
||
|
+
|
||
|
+ public PacketPlayOutEntityLook() {
|
||
|
+ this.h = true;
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutEntityLook(int i, byte b0, byte b1, boolean flag) {
|
||
|
+ super(i);
|
||
|
+ this.e = b0;
|
||
|
+ this.f = b1;
|
||
|
+ this.h = true;
|
||
|
+ this.g = flag;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ super.a(packetdataserializer);
|
||
|
+ this.e = packetdataserializer.readByte();
|
||
|
+ this.f = packetdataserializer.readByte();
|
||
|
+ this.g = packetdataserializer.readBoolean();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ super.b(packetdataserializer);
|
||
|
+ packetdataserializer.writeByte(this.e);
|
||
|
+ packetdataserializer.writeByte(this.f);
|
||
|
+ packetdataserializer.writeBoolean(this.g);
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public static class PacketPlayOutRelEntityMove extends PacketPlayOutEntity {
|
||
|
+
|
||
|
+ public PacketPlayOutRelEntityMove() {}
|
||
|
+
|
||
|
+ public PacketPlayOutRelEntityMove(int i, byte b0, byte b1, byte b2, boolean flag) {
|
||
|
+ super(i);
|
||
|
+ this.b = b0;
|
||
|
+ this.c = b1;
|
||
|
+ this.d = b2;
|
||
|
+ this.g = flag;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ super.a(packetdataserializer);
|
||
|
+ this.b = packetdataserializer.readByte();
|
||
|
+ this.c = packetdataserializer.readByte();
|
||
|
+ this.d = packetdataserializer.readByte();
|
||
|
+ this.g = packetdataserializer.readBoolean();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ super.b(packetdataserializer);
|
||
|
+ packetdataserializer.writeByte(this.b);
|
||
|
+ packetdataserializer.writeByte(this.c);
|
||
|
+ packetdataserializer.writeByte(this.d);
|
||
|
+ packetdataserializer.writeBoolean(this.g);
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ public static class PacketPlayOutRelEntityMoveLook extends PacketPlayOutEntity {
|
||
|
+
|
||
|
+ public PacketPlayOutRelEntityMoveLook() {
|
||
|
+ this.h = true;
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutRelEntityMoveLook(int i, byte b0, byte b1, byte b2, byte b3, byte b4, boolean flag) {
|
||
|
+ super(i);
|
||
|
+ this.b = b0;
|
||
|
+ this.c = b1;
|
||
|
+ this.d = b2;
|
||
|
+ this.e = b3;
|
||
|
+ this.f = b4;
|
||
|
+ this.g = flag;
|
||
|
+ this.h = true;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ super.a(packetdataserializer);
|
||
|
+ this.b = packetdataserializer.readByte();
|
||
|
+ this.c = packetdataserializer.readByte();
|
||
|
+ this.d = packetdataserializer.readByte();
|
||
|
+ this.e = packetdataserializer.readByte();
|
||
|
+ this.f = packetdataserializer.readByte();
|
||
|
+ this.g = packetdataserializer.readBoolean();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ super.b(packetdataserializer);
|
||
|
+ packetdataserializer.writeByte(this.b);
|
||
|
+ packetdataserializer.writeByte(this.c);
|
||
|
+ packetdataserializer.writeByte(this.d);
|
||
|
+ packetdataserializer.writeByte(this.e);
|
||
|
+ packetdataserializer.writeByte(this.f);
|
||
|
+ packetdataserializer.writeBoolean(this.g);
|
||
|
+ }
|
||
|
+ }
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntityEquipment.java b/src/main/java/net/minecraft/server/PacketPlayOutEntityEquipment.java
|
||
|
new file mode 100644
|
||
|
index 0000000..ecc2e78
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntityEquipment.java
|
||
|
@@ -0,0 +1,35 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+
|
||
|
+public class PacketPlayOutEntityEquipment implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+ public ItemStack c;
|
||
|
+
|
||
|
+ public PacketPlayOutEntityEquipment() {}
|
||
|
+
|
||
|
+ public PacketPlayOutEntityEquipment(int i, int j, ItemStack itemstack) {
|
||
|
+ this.a = i;
|
||
|
+ this.b = j;
|
||
|
+ this.c = itemstack == null ? null : itemstack.cloneItemStack();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = packetdataserializer.readShort();
|
||
|
+ this.c = packetdataserializer.i();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.writeShort(this.b);
|
||
|
+ packetdataserializer.a(this.c);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java b/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java
|
||
|
new file mode 100644
|
||
|
index 0000000..dbfcc3c
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java
|
||
|
@@ -0,0 +1,37 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+import java.util.List;
|
||
|
+
|
||
|
+public class PacketPlayOutEntityMetadata implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public List<DataWatcher.WatchableObject> b;
|
||
|
+
|
||
|
+ public PacketPlayOutEntityMetadata() {}
|
||
|
+
|
||
|
+ public PacketPlayOutEntityMetadata(int i, DataWatcher datawatcher, boolean flag) {
|
||
|
+ this.a = i;
|
||
|
+ if (flag) {
|
||
|
+ this.b = datawatcher.c();
|
||
|
+ } else {
|
||
|
+ this.b = datawatcher.b();
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = DataWatcher.b(packetdataserializer);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ DataWatcher.a(this.b, packetdataserializer);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java b/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java
|
||
|
new file mode 100644
|
||
|
index 0000000..786047c
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java
|
||
|
@@ -0,0 +1,58 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+public class PacketPlayOutEntityTeleport implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+ public int c;
|
||
|
+ public int d;
|
||
|
+ public byte e;
|
||
|
+ public byte f;
|
||
|
+ public boolean g;
|
||
|
+
|
||
|
+ public PacketPlayOutEntityTeleport() {}
|
||
|
+
|
||
|
+ public PacketPlayOutEntityTeleport(Entity entity) {
|
||
|
+ this.a = entity.getId();
|
||
|
+ this.b = MathHelper.floor(entity.locX * 32.0D);
|
||
|
+ this.c = MathHelper.floor(entity.locY * 32.0D);
|
||
|
+ this.d = MathHelper.floor(entity.locZ * 32.0D);
|
||
|
+ this.e = (byte) ((int) (entity.yaw * 256.0F / 360.0F));
|
||
|
+ this.f = (byte) ((int) (entity.pitch * 256.0F / 360.0F));
|
||
|
+ this.g = entity.onGround;
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutEntityTeleport(int i, int j, int k, int l, byte b0, byte b1, boolean flag) {
|
||
|
+ this.a = i;
|
||
|
+ this.b = j;
|
||
|
+ this.c = k;
|
||
|
+ this.d = l;
|
||
|
+ this.e = b0;
|
||
|
+ this.f = b1;
|
||
|
+ this.g = flag;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = packetdataserializer.readInt();
|
||
|
+ this.c = packetdataserializer.readInt();
|
||
|
+ this.d = packetdataserializer.readInt();
|
||
|
+ this.e = packetdataserializer.readByte();
|
||
|
+ this.f = packetdataserializer.readByte();
|
||
|
+ this.g = packetdataserializer.readBoolean();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.writeInt(this.b);
|
||
|
+ packetdataserializer.writeInt(this.c);
|
||
|
+ packetdataserializer.writeInt(this.d);
|
||
|
+ packetdataserializer.writeByte(this.e);
|
||
|
+ packetdataserializer.writeByte(this.f);
|
||
|
+ packetdataserializer.writeBoolean(this.g);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntityVelocity.java b/src/main/java/net/minecraft/server/PacketPlayOutEntityVelocity.java
|
||
|
new file mode 100644
|
||
|
index 0000000..6c8dbbc
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntityVelocity.java
|
||
|
@@ -0,0 +1,69 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+
|
||
|
+public class PacketPlayOutEntityVelocity implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+ public int c;
|
||
|
+ public int d;
|
||
|
+
|
||
|
+ public PacketPlayOutEntityVelocity() {}
|
||
|
+
|
||
|
+ public PacketPlayOutEntityVelocity(Entity entity) {
|
||
|
+ this(entity.getId(), entity.motX, entity.motY, entity.motZ);
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutEntityVelocity(int i, double d0, double d1, double d2) {
|
||
|
+ this.a = i;
|
||
|
+ double d3 = 3.9D;
|
||
|
+
|
||
|
+ if (d0 < -d3) {
|
||
|
+ d0 = -d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d1 < -d3) {
|
||
|
+ d1 = -d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d2 < -d3) {
|
||
|
+ d2 = -d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d0 > d3) {
|
||
|
+ d0 = d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d1 > d3) {
|
||
|
+ d1 = d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d2 > d3) {
|
||
|
+ d2 = d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ this.b = (int) (d0 * 8000.0D);
|
||
|
+ this.c = (int) (d1 * 8000.0D);
|
||
|
+ this.d = (int) (d2 * 8000.0D);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = packetdataserializer.readShort();
|
||
|
+ this.c = packetdataserializer.readShort();
|
||
|
+ this.d = packetdataserializer.readShort();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.writeShort(this.b);
|
||
|
+ packetdataserializer.writeShort(this.c);
|
||
|
+ packetdataserializer.writeShort(this.d);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutNamedEntitySpawn.java b/src/main/java/net/minecraft/server/PacketPlayOutNamedEntitySpawn.java
|
||
|
new file mode 100644
|
||
|
index 0000000..23fa49d
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutNamedEntitySpawn.java
|
||
|
@@ -0,0 +1,64 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+import java.util.List;
|
||
|
+import java.util.UUID;
|
||
|
+
|
||
|
+public class PacketPlayOutNamedEntitySpawn implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public UUID b;
|
||
|
+ public int c;
|
||
|
+ public int d;
|
||
|
+ public int e;
|
||
|
+ public byte f;
|
||
|
+ public byte g;
|
||
|
+ public int h;
|
||
|
+ public DataWatcher i;
|
||
|
+ public List<DataWatcher.WatchableObject> j;
|
||
|
+
|
||
|
+ public PacketPlayOutNamedEntitySpawn() {}
|
||
|
+
|
||
|
+ public PacketPlayOutNamedEntitySpawn(EntityHuman entityhuman) {
|
||
|
+ this.a = entityhuman.getId();
|
||
|
+ this.b = entityhuman.getProfile().getId();
|
||
|
+ this.c = MathHelper.floor(entityhuman.locX * 32.0D);
|
||
|
+ this.d = MathHelper.floor(entityhuman.locY * 32.0D);
|
||
|
+ this.e = MathHelper.floor(entityhuman.locZ * 32.0D);
|
||
|
+ this.f = (byte) ((int) (entityhuman.yaw * 256.0F / 360.0F));
|
||
|
+ this.g = (byte) ((int) (entityhuman.pitch * 256.0F / 360.0F));
|
||
|
+ ItemStack itemstack = entityhuman.inventory.getItemInHand();
|
||
|
+
|
||
|
+ this.h = itemstack == null ? 0 : Item.getId(itemstack.getItem());
|
||
|
+ this.i = entityhuman.getDataWatcher();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = packetdataserializer.g();
|
||
|
+ this.c = packetdataserializer.readInt();
|
||
|
+ this.d = packetdataserializer.readInt();
|
||
|
+ this.e = packetdataserializer.readInt();
|
||
|
+ this.f = packetdataserializer.readByte();
|
||
|
+ this.g = packetdataserializer.readByte();
|
||
|
+ this.h = packetdataserializer.readShort();
|
||
|
+ this.j = DataWatcher.b(packetdataserializer);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.a(this.b);
|
||
|
+ packetdataserializer.writeInt(this.c);
|
||
|
+ packetdataserializer.writeInt(this.d);
|
||
|
+ packetdataserializer.writeInt(this.e);
|
||
|
+ packetdataserializer.writeByte(this.f);
|
||
|
+ packetdataserializer.writeByte(this.g);
|
||
|
+ packetdataserializer.writeShort(this.h);
|
||
|
+ this.i.a(packetdataserializer);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java
|
||
|
new file mode 100644
|
||
|
index 0000000..99809cd
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java
|
||
|
@@ -0,0 +1,254 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import com.google.common.base.Objects;
|
||
|
+import com.google.common.collect.Lists;
|
||
|
+import com.mojang.authlib.GameProfile;
|
||
|
+import com.mojang.authlib.properties.Property;
|
||
|
+import java.io.IOException;
|
||
|
+import java.util.Iterator;
|
||
|
+import java.util.List;
|
||
|
+
|
||
|
+public class PacketPlayOutPlayerInfo implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public PacketPlayOutPlayerInfo.EnumPlayerInfoAction a;
|
||
|
+ public final List<PacketPlayOutPlayerInfo.PlayerInfoData> b = Lists.newArrayList();
|
||
|
+
|
||
|
+ public PacketPlayOutPlayerInfo() {}
|
||
|
+
|
||
|
+ public PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction packetplayoutplayerinfo_enumplayerinfoaction, EntityPlayer... aentityplayer) {
|
||
|
+ this.a = packetplayoutplayerinfo_enumplayerinfoaction;
|
||
|
+ EntityPlayer[] aentityplayer1 = aentityplayer;
|
||
|
+ int i = aentityplayer.length;
|
||
|
+
|
||
|
+ for (int j = 0; j < i; ++j) {
|
||
|
+ EntityPlayer entityplayer = aentityplayer1[j];
|
||
|
+
|
||
|
+ this.b.add(new PacketPlayOutPlayerInfo.PlayerInfoData(entityplayer.getProfile(), entityplayer.ping, entityplayer.playerInteractManager.getGameMode(), entityplayer.getPlayerListName()));
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction packetplayoutplayerinfo_enumplayerinfoaction, Iterable<EntityPlayer> iterable) {
|
||
|
+ this.a = packetplayoutplayerinfo_enumplayerinfoaction;
|
||
|
+ Iterator iterator = iterable.iterator();
|
||
|
+
|
||
|
+ while (iterator.hasNext()) {
|
||
|
+ EntityPlayer entityplayer = (EntityPlayer) iterator.next();
|
||
|
+
|
||
|
+ this.b.add(new PacketPlayOutPlayerInfo.PlayerInfoData(entityplayer.getProfile(), entityplayer.ping, entityplayer.playerInteractManager.getGameMode(), entityplayer.getPlayerListName()));
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = (PacketPlayOutPlayerInfo.EnumPlayerInfoAction) packetdataserializer.a(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.class);
|
||
|
+ int i = packetdataserializer.e();
|
||
|
+
|
||
|
+ for (int j = 0; j < i; ++j) {
|
||
|
+ GameProfile gameprofile = null;
|
||
|
+ int k = 0;
|
||
|
+ WorldSettings.EnumGamemode worldsettings_enumgamemode = null;
|
||
|
+ IChatBaseComponent ichatbasecomponent = null;
|
||
|
+
|
||
|
+ switch (PacketPlayOutPlayerInfo.SyntheticClass_1.a[this.a.ordinal()]) {
|
||
|
+ case 1:
|
||
|
+ gameprofile = new GameProfile(packetdataserializer.g(), packetdataserializer.c(16));
|
||
|
+ int l = packetdataserializer.e();
|
||
|
+
|
||
|
+ for (int i1 = 0; i1 < l; ++i1) {
|
||
|
+ String s = packetdataserializer.c(32767);
|
||
|
+ String s1 = packetdataserializer.c(32767);
|
||
|
+
|
||
|
+ if (packetdataserializer.readBoolean()) {
|
||
|
+ gameprofile.getProperties().put(s, new Property(s, s1, packetdataserializer.c(32767)));
|
||
|
+ } else {
|
||
|
+ gameprofile.getProperties().put(s, new Property(s, s1));
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ worldsettings_enumgamemode = WorldSettings.EnumGamemode.getById(packetdataserializer.e());
|
||
|
+ k = packetdataserializer.e();
|
||
|
+ if (packetdataserializer.readBoolean()) {
|
||
|
+ ichatbasecomponent = packetdataserializer.d();
|
||
|
+ }
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 2:
|
||
|
+ gameprofile = new GameProfile(packetdataserializer.g(), (String) null);
|
||
|
+ worldsettings_enumgamemode = WorldSettings.EnumGamemode.getById(packetdataserializer.e());
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 3:
|
||
|
+ gameprofile = new GameProfile(packetdataserializer.g(), (String) null);
|
||
|
+ k = packetdataserializer.e();
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 4:
|
||
|
+ gameprofile = new GameProfile(packetdataserializer.g(), (String) null);
|
||
|
+ if (packetdataserializer.readBoolean()) {
|
||
|
+ ichatbasecomponent = packetdataserializer.d();
|
||
|
+ }
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 5:
|
||
|
+ gameprofile = new GameProfile(packetdataserializer.g(), (String) null);
|
||
|
+ }
|
||
|
+
|
||
|
+ this.b.add(new PacketPlayOutPlayerInfo.PlayerInfoData(gameprofile, k, worldsettings_enumgamemode, ichatbasecomponent));
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.a((Enum) this.a);
|
||
|
+ packetdataserializer.b(this.b.size());
|
||
|
+ Iterator iterator = this.b.iterator();
|
||
|
+
|
||
|
+ while (iterator.hasNext()) {
|
||
|
+ PacketPlayOutPlayerInfo.PlayerInfoData packetplayoutplayerinfo_playerinfodata = (PacketPlayOutPlayerInfo.PlayerInfoData) iterator.next();
|
||
|
+
|
||
|
+ switch (PacketPlayOutPlayerInfo.SyntheticClass_1.a[this.a.ordinal()]) {
|
||
|
+ case 1:
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.a().getId());
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.a().getName());
|
||
|
+ packetdataserializer.b(packetplayoutplayerinfo_playerinfodata.a().getProperties().size());
|
||
|
+ Iterator iterator1 = packetplayoutplayerinfo_playerinfodata.a().getProperties().values().iterator();
|
||
|
+
|
||
|
+ while (iterator1.hasNext()) {
|
||
|
+ Property property = (Property) iterator1.next();
|
||
|
+
|
||
|
+ packetdataserializer.a(property.getName());
|
||
|
+ packetdataserializer.a(property.getValue());
|
||
|
+ if (property.hasSignature()) {
|
||
|
+ packetdataserializer.writeBoolean(true);
|
||
|
+ packetdataserializer.a(property.getSignature());
|
||
|
+ } else {
|
||
|
+ packetdataserializer.writeBoolean(false);
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ packetdataserializer.b(packetplayoutplayerinfo_playerinfodata.c().getId());
|
||
|
+ packetdataserializer.b(packetplayoutplayerinfo_playerinfodata.b());
|
||
|
+ if (packetplayoutplayerinfo_playerinfodata.d() == null) {
|
||
|
+ packetdataserializer.writeBoolean(false);
|
||
|
+ } else {
|
||
|
+ packetdataserializer.writeBoolean(true);
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.d());
|
||
|
+ }
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 2:
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.a().getId());
|
||
|
+ packetdataserializer.b(packetplayoutplayerinfo_playerinfodata.c().getId());
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 3:
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.a().getId());
|
||
|
+ packetdataserializer.b(packetplayoutplayerinfo_playerinfodata.b());
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 4:
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.a().getId());
|
||
|
+ if (packetplayoutplayerinfo_playerinfodata.d() == null) {
|
||
|
+ packetdataserializer.writeBoolean(false);
|
||
|
+ } else {
|
||
|
+ packetdataserializer.writeBoolean(true);
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.d());
|
||
|
+ }
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 5:
|
||
|
+ packetdataserializer.a(packetplayoutplayerinfo_playerinfodata.a().getId());
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+ public String toString() {
|
||
|
+ return Objects.toStringHelper(this).add("action", this.a).add("entries", this.b).toString();
|
||
|
+ }
|
||
|
+
|
||
|
+ static class SyntheticClass_1 {
|
||
|
+
|
||
|
+ static final int[] a = new int[PacketPlayOutPlayerInfo.EnumPlayerInfoAction.values().length];
|
||
|
+
|
||
|
+ static {
|
||
|
+ try {
|
||
|
+ PacketPlayOutPlayerInfo.SyntheticClass_1.a[PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER.ordinal()] = 1;
|
||
|
+ } catch (NoSuchFieldError nosuchfielderror) {
|
||
|
+ ;
|
||
|
+ }
|
||
|
+
|
||
|
+ try {
|
||
|
+ PacketPlayOutPlayerInfo.SyntheticClass_1.a[PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_GAME_MODE.ordinal()] = 2;
|
||
|
+ } catch (NoSuchFieldError nosuchfielderror1) {
|
||
|
+ ;
|
||
|
+ }
|
||
|
+
|
||
|
+ try {
|
||
|
+ PacketPlayOutPlayerInfo.SyntheticClass_1.a[PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY.ordinal()] = 3;
|
||
|
+ } catch (NoSuchFieldError nosuchfielderror2) {
|
||
|
+ ;
|
||
|
+ }
|
||
|
+
|
||
|
+ try {
|
||
|
+ PacketPlayOutPlayerInfo.SyntheticClass_1.a[PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME.ordinal()] = 4;
|
||
|
+ } catch (NoSuchFieldError nosuchfielderror3) {
|
||
|
+ ;
|
||
|
+ }
|
||
|
+
|
||
|
+ try {
|
||
|
+ PacketPlayOutPlayerInfo.SyntheticClass_1.a[PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER.ordinal()] = 5;
|
||
|
+ } catch (NoSuchFieldError nosuchfielderror4) {
|
||
|
+ ;
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ public class PlayerInfoData {
|
||
|
+
|
||
|
+ public final int b;
|
||
|
+ public final WorldSettings.EnumGamemode c;
|
||
|
+ public final GameProfile d;
|
||
|
+ public final IChatBaseComponent e;
|
||
|
+
|
||
|
+ public PlayerInfoData(GameProfile gameprofile, int i, WorldSettings.EnumGamemode worldsettings_enumgamemode, IChatBaseComponent ichatbasecomponent) {
|
||
|
+ this.d = gameprofile;
|
||
|
+ this.b = i;
|
||
|
+ this.c = worldsettings_enumgamemode;
|
||
|
+ this.e = ichatbasecomponent;
|
||
|
+ }
|
||
|
+
|
||
|
+ public GameProfile a() {
|
||
|
+ return this.d;
|
||
|
+ }
|
||
|
+
|
||
|
+ public int b() {
|
||
|
+ return this.b;
|
||
|
+ }
|
||
|
+
|
||
|
+ public WorldSettings.EnumGamemode c() {
|
||
|
+ return this.c;
|
||
|
+ }
|
||
|
+
|
||
|
+ public IChatBaseComponent d() {
|
||
|
+ return this.e;
|
||
|
+ }
|
||
|
+
|
||
|
+ public String toString() {
|
||
|
+ return Objects.toStringHelper(this).add("latency", this.b).add("gameMode", this.c).add("profile", this.d).add("displayName", this.e == null ? null : IChatBaseComponent.ChatSerializer.a(this.e)).toString();
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ public static enum EnumPlayerInfoAction {
|
||
|
+
|
||
|
+ ADD_PLAYER, UPDATE_GAME_MODE, UPDATE_LATENCY, UPDATE_DISPLAY_NAME, REMOVE_PLAYER;
|
||
|
+
|
||
|
+ private EnumPlayerInfoAction() {}
|
||
|
+ }
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java b/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java
|
||
|
new file mode 100644
|
||
|
index 0000000..d34f59b
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java
|
||
|
@@ -0,0 +1,133 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+
|
||
|
+public class PacketPlayOutSpawnEntity implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+ public int c;
|
||
|
+ public int d;
|
||
|
+ public int e;
|
||
|
+ public int f;
|
||
|
+ public int g;
|
||
|
+ public int h;
|
||
|
+ public int i;
|
||
|
+ public int j;
|
||
|
+ public int k;
|
||
|
+
|
||
|
+ public PacketPlayOutSpawnEntity() {}
|
||
|
+
|
||
|
+ public PacketPlayOutSpawnEntity(Entity entity, int i) {
|
||
|
+ this(entity, i, 0);
|
||
|
+ }
|
||
|
+
|
||
|
+ public PacketPlayOutSpawnEntity(Entity entity, int i, int j) {
|
||
|
+ this.a = entity.getId();
|
||
|
+ this.b = MathHelper.floor(entity.locX * 32.0D);
|
||
|
+ this.c = MathHelper.floor(entity.locY * 32.0D);
|
||
|
+ this.d = MathHelper.floor(entity.locZ * 32.0D);
|
||
|
+ this.h = MathHelper.d(entity.pitch * 256.0F / 360.0F);
|
||
|
+ this.i = MathHelper.d(entity.yaw * 256.0F / 360.0F);
|
||
|
+ this.j = i;
|
||
|
+ this.k = j;
|
||
|
+ if (j > 0) {
|
||
|
+ double d0 = entity.motX;
|
||
|
+ double d1 = entity.motY;
|
||
|
+ double d2 = entity.motZ;
|
||
|
+ double d3 = 3.9D;
|
||
|
+
|
||
|
+ if (d0 < -d3) {
|
||
|
+ d0 = -d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d1 < -d3) {
|
||
|
+ d1 = -d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d2 < -d3) {
|
||
|
+ d2 = -d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d0 > d3) {
|
||
|
+ d0 = d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d1 > d3) {
|
||
|
+ d1 = d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d2 > d3) {
|
||
|
+ d2 = d3;
|
||
|
+ }
|
||
|
+
|
||
|
+ this.e = (int) (d0 * 8000.0D);
|
||
|
+ this.f = (int) (d1 * 8000.0D);
|
||
|
+ this.g = (int) (d2 * 8000.0D);
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.j = packetdataserializer.readByte();
|
||
|
+ this.b = packetdataserializer.readInt();
|
||
|
+ this.c = packetdataserializer.readInt();
|
||
|
+ this.d = packetdataserializer.readInt();
|
||
|
+ this.h = packetdataserializer.readByte();
|
||
|
+ this.i = packetdataserializer.readByte();
|
||
|
+ this.k = packetdataserializer.readInt();
|
||
|
+ if (this.k > 0) {
|
||
|
+ this.e = packetdataserializer.readShort();
|
||
|
+ this.f = packetdataserializer.readShort();
|
||
|
+ this.g = packetdataserializer.readShort();
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.writeByte(this.j);
|
||
|
+ packetdataserializer.writeInt(this.b);
|
||
|
+ packetdataserializer.writeInt(this.c);
|
||
|
+ packetdataserializer.writeInt(this.d);
|
||
|
+ packetdataserializer.writeByte(this.h);
|
||
|
+ packetdataserializer.writeByte(this.i);
|
||
|
+ packetdataserializer.writeInt(this.k);
|
||
|
+ if (this.k > 0) {
|
||
|
+ packetdataserializer.writeShort(this.e);
|
||
|
+ packetdataserializer.writeShort(this.f);
|
||
|
+ packetdataserializer.writeShort(this.g);
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(int i) {
|
||
|
+ this.b = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(int i) {
|
||
|
+ this.c = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void c(int i) {
|
||
|
+ this.d = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void d(int i) {
|
||
|
+ this.e = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void e(int i) {
|
||
|
+ this.f = i;
|
||
|
+ }
|
||
|
+
|
||
|
+ public void f(int i) {
|
||
|
+ this.g = i;
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java b/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java
|
||
|
new file mode 100644
|
||
|
index 0000000..61aa281
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java
|
||
|
@@ -0,0 +1,102 @@
|
||
|
+package net.minecraft.server;
|
||
|
+
|
||
|
+import java.io.IOException;
|
||
|
+import java.util.List;
|
||
|
+
|
||
|
+public class PacketPlayOutSpawnEntityLiving implements Packet<PacketListenerPlayOut> {
|
||
|
+
|
||
|
+ public int a;
|
||
|
+ public int b;
|
||
|
+ public int c;
|
||
|
+ public int d;
|
||
|
+ public int e;
|
||
|
+ public int f;
|
||
|
+ public int g;
|
||
|
+ public int h;
|
||
|
+ public byte i;
|
||
|
+ public byte j;
|
||
|
+ public byte k;
|
||
|
+ public DataWatcher l;
|
||
|
+ public List<DataWatcher.WatchableObject> m;
|
||
|
+
|
||
|
+ public PacketPlayOutSpawnEntityLiving() {}
|
||
|
+
|
||
|
+ public PacketPlayOutSpawnEntityLiving(EntityLiving entityliving) {
|
||
|
+ this.a = entityliving.getId();
|
||
|
+ this.b = (byte) EntityTypes.a(entityliving);
|
||
|
+ this.c = MathHelper.floor(entityliving.locX * 32.0D);
|
||
|
+ this.d = MathHelper.floor(entityliving.locY * 32.0D);
|
||
|
+ this.e = MathHelper.floor(entityliving.locZ * 32.0D);
|
||
|
+ this.i = (byte) ((int) (entityliving.yaw * 256.0F / 360.0F));
|
||
|
+ this.j = (byte) ((int) (entityliving.pitch * 256.0F / 360.0F));
|
||
|
+ this.k = (byte) ((int) (entityliving.aK * 256.0F / 360.0F));
|
||
|
+ double d0 = 3.9D;
|
||
|
+ double d1 = entityliving.motX;
|
||
|
+ double d2 = entityliving.motY;
|
||
|
+ double d3 = entityliving.motZ;
|
||
|
+
|
||
|
+ if (d1 < -d0) {
|
||
|
+ d1 = -d0;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d2 < -d0) {
|
||
|
+ d2 = -d0;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d3 < -d0) {
|
||
|
+ d3 = -d0;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d1 > d0) {
|
||
|
+ d1 = d0;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d2 > d0) {
|
||
|
+ d2 = d0;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (d3 > d0) {
|
||
|
+ d3 = d0;
|
||
|
+ }
|
||
|
+
|
||
|
+ this.f = (int) (d1 * 8000.0D);
|
||
|
+ this.g = (int) (d2 * 8000.0D);
|
||
|
+ this.h = (int) (d3 * 8000.0D);
|
||
|
+ this.l = entityliving.getDataWatcher();
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ this.a = packetdataserializer.e();
|
||
|
+ this.b = packetdataserializer.readByte() & 255;
|
||
|
+ this.c = packetdataserializer.readInt();
|
||
|
+ this.d = packetdataserializer.readInt();
|
||
|
+ this.e = packetdataserializer.readInt();
|
||
|
+ this.i = packetdataserializer.readByte();
|
||
|
+ this.j = packetdataserializer.readByte();
|
||
|
+ this.k = packetdataserializer.readByte();
|
||
|
+ this.f = packetdataserializer.readShort();
|
||
|
+ this.g = packetdataserializer.readShort();
|
||
|
+ this.h = packetdataserializer.readShort();
|
||
|
+ this.m = DataWatcher.b(packetdataserializer);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||
|
+ packetdataserializer.b(this.a);
|
||
|
+ packetdataserializer.writeByte(this.b & 255);
|
||
|
+ packetdataserializer.writeInt(this.c);
|
||
|
+ packetdataserializer.writeInt(this.d);
|
||
|
+ packetdataserializer.writeInt(this.e);
|
||
|
+ packetdataserializer.writeByte(this.i);
|
||
|
+ packetdataserializer.writeByte(this.j);
|
||
|
+ packetdataserializer.writeByte(this.k);
|
||
|
+ packetdataserializer.writeShort(this.f);
|
||
|
+ packetdataserializer.writeShort(this.g);
|
||
|
+ packetdataserializer.writeShort(this.h);
|
||
|
+ this.l.a(packetdataserializer);
|
||
|
+ }
|
||
|
+
|
||
|
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
|
||
|
+ packetlistenerplayout.a(this);
|
||
|
+ }
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||
|
index 3108938..69f4762 100644
|
||
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||
|
@@ -2,6 +2,7 @@ package net.minecraft.server;
|
||
|
|
||
|
import com.google.common.collect.Lists;
|
||
|
import com.google.common.util.concurrent.Futures;
|
||
|
+import com.mineplex.spigot.PacketProcessor;
|
||
|
import io.netty.buffer.Unpooled;
|
||
|
import io.netty.util.concurrent.Future;
|
||
|
import io.netty.util.concurrent.GenericFutureListener;
|
||
|
@@ -84,6 +85,8 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||
|
private boolean checkMovement = true;
|
||
|
private boolean processedDisconnect; // CraftBukkit - added
|
||
|
|
||
|
+ public PacketProcessor PacketVerifier;
|
||
|
+
|
||
|
public PlayerConnection(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayer entityplayer) {
|
||
|
this.minecraftServer = minecraftserver;
|
||
|
this.networkManager = networkmanager;
|
||
|
@@ -91,6 +94,8 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||
|
this.player = entityplayer;
|
||
|
entityplayer.playerConnection = this;
|
||
|
|
||
|
+ PacketVerifier = new PacketProcessor();
|
||
|
+
|
||
|
// CraftBukkit start - add fields and methods
|
||
|
this.server = minecraftserver.server;
|
||
|
}
|
||
|
@@ -881,7 +886,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||
|
// CraftBukkit end
|
||
|
|
||
|
try {
|
||
|
- this.networkManager.handle(packet);
|
||
|
+ PacketVerifier.processPacket(packet, networkManager);
|
||
|
} catch (Throwable throwable) {
|
||
|
CrashReport crashreport = CrashReport.a(throwable, "Sending packet");
|
||
|
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Packet being sent");
|
||
|
@@ -1398,9 +1403,13 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||
|
if (this.player.dead) return; // CraftBukkit
|
||
|
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.u());
|
||
|
|
||
|
- CraftEventFactory.handleInventoryCloseEvent(this.player); // CraftBukkit
|
||
|
+ if (packetplayinclosewindow.id == player.activeContainer.windowId)
|
||
|
+ {
|
||
|
+ CraftEventFactory.handleInventoryCloseEvent(this.player); // CraftBukkit
|
||
|
+
|
||
|
+ this.player.p();
|
||
|
+ }
|
||
|
|
||
|
- this.player.p();
|
||
|
}
|
||
|
|
||
|
public void a(PacketPlayInWindowClick packetplayinwindowclick) {
|
||
|
--
|
||
|
2.3.5
|
||
|
|