diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/Packet.java')
-rw-r--r-- | src/main/java/net/minecraft/server/Packet.java | 324 |
1 files changed, 23 insertions, 301 deletions
diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java index e7e1d73d..592ffc58 100644 --- a/src/main/java/net/minecraft/server/Packet.java +++ b/src/main/java/net/minecraft/server/Packet.java @@ -1,341 +1,63 @@ package net.minecraft.server; -import java.io.DataInput; -import java.io.DataOutput; -import java.io.EOFException; import java.io.IOException; -import java.net.Socket; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import org.bukkit.craftbukkit.inventory.CraftItemStack; // CraftBukkit +import net.minecraft.util.com.google.common.collect.BiMap; +import net.minecraft.util.io.netty.buffer.ByteBuf; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public abstract class Packet { - public static IntHashMap l = new IntHashMap(); - private static Map a = new HashMap(); - private static Set b = new HashSet(); - private static Set c = new HashSet(); - protected IConsoleLogManager m; - public final long timestamp = MinecraftServer.aq(); - public static long o; - public static long p; - public static long q; - public static long r; - public boolean lowPriority; - // CraftBukkit start - Calculate packet ID once - used a bunch of times - private int packetID; + private static final Logger a = LogManager.getLogger(); + public final long timestamp = System.currentTimeMillis(); // CraftBukkit - public Packet() { - packetID = ((Integer) a.get(this.getClass())).intValue(); - } - // CraftBukkit end - - static void a(int i, boolean flag, boolean flag1, Class oclass) { - if (l.b(i)) { - throw new IllegalArgumentException("Duplicate packet id:" + i); - } else if (a.containsKey(oclass)) { - throw new IllegalArgumentException("Duplicate packet class:" + oclass); - } else { - l.a(i, oclass); - a.put(oclass, Integer.valueOf(i)); - if (flag) { - b.add(Integer.valueOf(i)); - } + public Packet() {} - if (flag1) { - c.add(Integer.valueOf(i)); - } - } - } - - public static Packet a(IConsoleLogManager iconsolelogmanager, int i) { + public static Packet a(BiMap bimap, int i) { try { - Class oclass = (Class) l.get(i); + Class oclass = (Class) bimap.get(Integer.valueOf(i)); return oclass == null ? null : (Packet) oclass.newInstance(); } catch (Exception exception) { - exception.printStackTrace(); - iconsolelogmanager.severe("Skipping packet with id " + i); + a.error("Couldn\'t create packet " + i, exception); return null; } } - public static void a(DataOutput dataoutput, byte[] abyte) throws IOException { // CraftBukkit - throws IOException - dataoutput.writeShort(abyte.length); - dataoutput.write(abyte); + public static void a(ByteBuf bytebuf, byte[] abyte) { + bytebuf.writeShort(abyte.length); + bytebuf.writeBytes(abyte); } - public static byte[] b(DataInput datainput) throws IOException { // CraftBukkit - throws IOException - short short1 = datainput.readShort(); + public static byte[] a(ByteBuf bytebuf) throws IOException { // CraftBukkit - added throws + short short1 = bytebuf.readShort(); if (short1 < 0) { throw new IOException("Key was smaller than nothing! Weird key!"); } else { byte[] abyte = new byte[short1]; - datainput.readFully(abyte); + bytebuf.readBytes(abyte); return abyte; } } - public final int n() { - return packetID; // ((Integer) a.get(this.getClass())).intValue(); // CraftBukkit - } - - public static Packet a(IConsoleLogManager iconsolelogmanager, DataInput datainput, boolean flag, Socket socket) throws IOException { // CraftBukkit - throws IOException - boolean flag1 = false; - Packet packet = null; - int i = socket.getSoTimeout(); - - int j; - - try { - j = datainput.readUnsignedByte(); - if (flag && !c.contains(Integer.valueOf(j)) || !flag && !b.contains(Integer.valueOf(j))) { - throw new IOException("Bad packet id " + j); - } - - packet = a(iconsolelogmanager, j); - if (packet == null) { - throw new IOException("Bad packet id " + j); - } - - packet.m = iconsolelogmanager; - if (packet instanceof Packet254GetInfo) { - socket.setSoTimeout(1500); - } - - packet.a(datainput); - ++o; - p += (long) packet.a(); - } catch (EOFException eofexception) { - //iconsolelogmanager.severe("Reached end of stream for " + socket.getInetAddress()); // CraftBukkit - remove unnecessary logging - return null; - } - - // CraftBukkit start - catch (java.net.SocketTimeoutException exception) { - iconsolelogmanager.info("Read timed out"); - return null; - } catch (java.net.SocketException exception) { - iconsolelogmanager.info("Connection reset"); - return null; - } - // CraftBukkit end - - PacketCounter.a(j, (long) packet.a()); - ++o; - p += (long) packet.a(); - socket.setSoTimeout(i); - return packet; - } - - public static void a(Packet packet, DataOutput dataoutput) throws IOException { // CraftBukkit - throws IOException - dataoutput.write(packet.n()); - packet.a(dataoutput); - ++q; - r += (long) packet.a(); - } - - public static void a(String s, DataOutput dataoutput) throws IOException { // CraftBukkit - throws IOException - if (s.length() > 32767) { - throw new IOException("String too big"); - } else { - dataoutput.writeShort(s.length()); - dataoutput.writeChars(s); - } - } - - public static String a(DataInput datainput, int i) throws IOException { // CraftBukkit - throws IOException - short short1 = datainput.readShort(); - - if (short1 > i) { - throw new IOException("Received string length longer than maximum allowed (" + short1 + " > " + i + ")"); - } else if (short1 < 0) { - throw new IOException("Received string length is less than zero! Weird string!"); - } else { - StringBuilder stringbuilder = new StringBuilder(); - - for (int j = 0; j < short1; ++j) { - stringbuilder.append(datainput.readChar()); - } - - return stringbuilder.toString(); - } - } + public abstract void a(PacketDataSerializer packetdataserializer) throws IOException; // CraftBukkit - added throws - public abstract void a(DataInput datainput) throws IOException; // CraftBukkit - throws IOException + public abstract void b(PacketDataSerializer packetdataserializer) throws IOException; // CraftBukkit - added throws - public abstract void a(DataOutput dataoutput) throws IOException; // CraftBukkit - throws IOException + public abstract void handle(PacketListener packetlistener); - public abstract void handle(Connection connection); - - public abstract int a(); - - public boolean e() { - return false; - } - - public boolean a(Packet packet) { + public boolean a() { return false; } - public boolean a_() { - return this instanceof Packet3Chat && !((Packet3Chat) this).message.startsWith("/"); // CraftBukkit - async chat - } - public String toString() { - String s = this.getClass().getSimpleName(); - - return s; - } - - public static ItemStack c(DataInput datainput) throws IOException { // CraftBukkit - throws IOException - ItemStack itemstack = null; - short short1 = datainput.readShort(); - - if (short1 >= 0) { - byte b0 = datainput.readByte(); - short short2 = datainput.readShort(); - - itemstack = new ItemStack(short1, b0, short2); - itemstack.tag = d(datainput); - // CraftBukkit start - if (itemstack.tag != null) { - CraftItemStack.setItemMeta(itemstack, CraftItemStack.getItemMeta(itemstack)); - } - // CraftBukkit end - } - - return itemstack; - } - - public static void a(ItemStack itemstack, DataOutput dataoutput) throws IOException { // CraftBukkit - throws IOException - if (itemstack == null || itemstack.getItem() == null) { // CraftBukkit - NPE fix itemstack.getItem() - dataoutput.writeShort(-1); - } else { - dataoutput.writeShort(itemstack.id); - dataoutput.writeByte(itemstack.count); - dataoutput.writeShort(itemstack.getData()); - NBTTagCompound nbttagcompound = null; - - if (itemstack.getItem().usesDurability() || itemstack.getItem().s()) { - nbttagcompound = itemstack.tag; - } - - a(nbttagcompound, dataoutput); - } - } - - public static NBTTagCompound d(DataInput datainput) throws IOException { // CraftBukkit - throws IOException - short short1 = datainput.readShort(); - - if (short1 < 0) { - return null; - } else { - byte[] abyte = new byte[short1]; - - datainput.readFully(abyte); - return NBTCompressedStreamTools.a(abyte); - } - } - - protected static void a(NBTTagCompound nbttagcompound, DataOutput dataoutput) throws IOException { // CraftBukkit - throws IOException - if (nbttagcompound == null) { - dataoutput.writeShort(-1); - } else { - byte[] abyte = NBTCompressedStreamTools.a(nbttagcompound); - - dataoutput.writeShort((short) abyte.length); - dataoutput.write(abyte); - } + return this.getClass().getSimpleName(); } - static { - a(0, true, true, Packet0KeepAlive.class); - a(1, true, true, Packet1Login.class); - a(2, false, true, Packet2Handshake.class); - a(3, true, true, Packet3Chat.class); - a(4, true, false, Packet4UpdateTime.class); - a(5, true, false, Packet5EntityEquipment.class); - a(6, true, false, Packet6SpawnPosition.class); - a(7, false, true, Packet7UseEntity.class); - a(8, true, false, Packet8UpdateHealth.class); - a(9, true, true, Packet9Respawn.class); - a(10, true, true, Packet10Flying.class); - a(11, true, true, Packet11PlayerPosition.class); - a(12, true, true, Packet12PlayerLook.class); - a(13, true, true, Packet13PlayerLookMove.class); - a(14, false, true, Packet14BlockDig.class); - a(15, false, true, Packet15Place.class); - a(16, true, true, Packet16BlockItemSwitch.class); - a(17, true, false, Packet17EntityLocationAction.class); - a(18, true, true, Packet18ArmAnimation.class); - a(19, false, true, Packet19EntityAction.class); - a(20, true, false, Packet20NamedEntitySpawn.class); - a(22, true, false, Packet22Collect.class); - a(23, true, false, Packet23VehicleSpawn.class); - a(24, true, false, Packet24MobSpawn.class); - a(25, true, false, Packet25EntityPainting.class); - a(26, true, false, Packet26AddExpOrb.class); - a(27, false, true, Packet27PlayerInput.class); - a(28, true, false, Packet28EntityVelocity.class); - a(29, true, false, Packet29DestroyEntity.class); - a(30, true, false, Packet30Entity.class); - a(31, true, false, Packet31RelEntityMove.class); - a(32, true, false, Packet32EntityLook.class); - a(33, true, false, Packet33RelEntityMoveLook.class); - a(34, true, false, Packet34EntityTeleport.class); - a(35, true, false, Packet35EntityHeadRotation.class); - a(38, true, false, Packet38EntityStatus.class); - a(39, true, false, Packet39AttachEntity.class); - a(40, true, false, Packet40EntityMetadata.class); - a(41, true, false, Packet41MobEffect.class); - a(42, true, false, Packet42RemoveMobEffect.class); - a(43, true, false, Packet43SetExperience.class); - a(44, true, false, Packet44UpdateAttributes.class); - a(51, true, false, Packet51MapChunk.class); - a(52, true, false, Packet52MultiBlockChange.class); - a(53, true, false, Packet53BlockChange.class); - a(54, true, false, Packet54PlayNoteBlock.class); - a(55, true, false, Packet55BlockBreakAnimation.class); - a(56, true, false, Packet56MapChunkBulk.class); - a(60, true, false, Packet60Explosion.class); - a(61, true, false, Packet61WorldEvent.class); - a(62, true, false, Packet62NamedSoundEffect.class); - a(63, true, false, Packet63WorldParticles.class); - a(70, true, false, Packet70Bed.class); - a(71, true, false, Packet71Weather.class); - a(100, true, false, Packet100OpenWindow.class); - a(101, true, true, Packet101CloseWindow.class); - a(102, false, true, Packet102WindowClick.class); - a(103, true, false, Packet103SetSlot.class); - a(104, true, false, Packet104WindowItems.class); - a(105, true, false, Packet105CraftProgressBar.class); - a(106, true, true, Packet106Transaction.class); - a(107, true, true, Packet107SetCreativeSlot.class); - a(108, false, true, Packet108ButtonClick.class); - a(130, true, true, Packet130UpdateSign.class); - a(131, true, false, Packet131ItemData.class); - a(132, true, false, Packet132TileEntityData.class); - a(133, true, false, Packet133OpenTileEntity.class); - a(200, true, false, Packet200Statistic.class); - a(201, true, false, Packet201PlayerInfo.class); - a(202, true, true, Packet202Abilities.class); - a(203, true, true, Packet203TabComplete.class); - a(204, false, true, Packet204LocaleAndViewDistance.class); - a(205, false, true, Packet205ClientCommand.class); - a(206, true, false, Packet206SetScoreboardObjective.class); - a(207, true, false, Packet207SetScoreboardScore.class); - a(208, true, false, Packet208SetScoreboardDisplayObjective.class); - a(209, true, false, Packet209SetScoreboardTeam.class); - a(250, true, true, Packet250CustomPayload.class); - a(252, true, true, Packet252KeyResponse.class); - a(253, true, false, Packet253KeyRequest.class); - a(254, false, true, Packet254GetInfo.class); - a(255, true, true, Packet255KickDisconnect.class); + public String b() { + return ""; } } |