From cf521b5a5ca399e807f05f7ba3fd12bc3e160875 Mon Sep 17 00:00:00 2001 From: Travis Watkins Date: Tue, 17 Jan 2012 16:26:20 -0600 Subject: [PATCH] Only truncate player name when sending spawn packet. --- .../minecraft/server/EntityTrackerEntry.java | 5 -- .../server/Packet20NamedEntitySpawn.java | 71 +++++++++++++++++++ 2 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java index 0a2a76dd27..caef4df747 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -248,11 +248,6 @@ public class EntityTrackerEntry { entityitem.locZ = (double) packet21pickupspawn.d / 32.0D; return packet21pickupspawn; } else if (this.tracker instanceof EntityPlayer) { - // CraftBukkit start - limit name length to 16 characters - if (((EntityHuman) this.tracker).name.length() > 16) { - ((EntityHuman) this.tracker).name = ((EntityHuman) this.tracker).name.substring(0, 16); - } - // CraftBukkit end return new Packet20NamedEntitySpawn((EntityHuman) this.tracker); } else { if (this.tracker instanceof EntityMinecart) { diff --git a/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java b/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java new file mode 100644 index 0000000000..0b6780ff9b --- /dev/null +++ b/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java @@ -0,0 +1,71 @@ +package net.minecraft.server; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; // CraftBukkit + +public class Packet20NamedEntitySpawn extends Packet { + + public int a; + public String b; + public int c; + public int d; + public int e; + public byte f; + public byte g; + public int h; + + public Packet20NamedEntitySpawn() {} + + public Packet20NamedEntitySpawn(EntityHuman entityhuman) { + this.a = entityhuman.id; + + // CraftBukkit start - limit name length to 16 characters + if (entityhuman.name.length() > 16) { + this.b = entityhuman.name.substring(0, 16); + } + else { + this.b = entityhuman.name; + } + // CraftBukkit end + + 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 : itemstack.id; + } + + public void a(DataInputStream datainputstream) throws IOException { // CraftBukkit + this.a = datainputstream.readInt(); + this.b = a(datainputstream, 16); + this.c = datainputstream.readInt(); + this.d = datainputstream.readInt(); + this.e = datainputstream.readInt(); + this.f = datainputstream.readByte(); + this.g = datainputstream.readByte(); + this.h = datainputstream.readShort(); + } + + public void a(DataOutputStream dataoutputstream) throws IOException { // CraftBukkit + dataoutputstream.writeInt(this.a); + a(this.b, dataoutputstream); + dataoutputstream.writeInt(this.c); + dataoutputstream.writeInt(this.d); + dataoutputstream.writeInt(this.e); + dataoutputstream.writeByte(this.f); + dataoutputstream.writeByte(this.g); + dataoutputstream.writeShort(this.h); + } + + public void handle(NetHandler nethandler) { + nethandler.a(this); + } + + public int a() { + return 28; + } +}