From 88973388f7753fe2ffc3e596b7281bcca399a1d7 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 17 Oct 2012 19:03:20 +1100 Subject: [PATCH] Hold me tight, use my own packet definitions. --- pom.xml | 16 +- .../net/md_5/bungee/GenericConnection.java | 1 + .../md_5/bungee/packet/PacketInputStream.java | 15 +- .../md_5/bungee/packet/VanillaPackets.java | 189 ------------------ .../java/net/minecraft/server/Packet.java | 94 --------- .../minecraft/server/Packet51MapChunk.java | 38 ---- 6 files changed, 8 insertions(+), 345 deletions(-) delete mode 100644 src/main/java/net/md_5/bungee/packet/VanillaPackets.java delete mode 100644 src/main/java/net/minecraft/server/Packet.java delete mode 100644 src/main/java/net/minecraft/server/Packet51MapChunk.java diff --git a/pom.xml b/pom.xml index 9d5e64bd..d087e74b 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ bcprov-jdk15on 1.47 - - org.bukkit - minecraft-server - 1.3.2 - org.yaml snakeyaml @@ -90,6 +85,11 @@ 0.11.4 provided + + net.md-5 + mc-protocol-lib + 1.0-SNAPSHOT + @@ -167,12 +167,6 @@ META-INF/*.DSA - - org.bukkit:minecraft-server - - net/minecraft/server/** - - true diff --git a/src/main/java/net/md_5/bungee/GenericConnection.java b/src/main/java/net/md_5/bungee/GenericConnection.java index 3618b373..d5f70332 100644 --- a/src/main/java/net/md_5/bungee/GenericConnection.java +++ b/src/main/java/net/md_5/bungee/GenericConnection.java @@ -44,6 +44,7 @@ public class GenericConnection try { out.flush(); + out.close(); socket.close(); } catch (IOException ioe) { diff --git a/src/main/java/net/md_5/bungee/packet/PacketInputStream.java b/src/main/java/net/md_5/bungee/packet/PacketInputStream.java index b694027e..d79cf8c9 100644 --- a/src/main/java/net/md_5/bungee/packet/PacketInputStream.java +++ b/src/main/java/net/md_5/bungee/packet/PacketInputStream.java @@ -6,7 +6,7 @@ import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import net.md_5.bungee.Util; -import net.minecraft.server.Packet; +import net.md_5.mc.protocol.PacketDefinitions; /** * A specialized input stream to parse packets using the Mojang packet @@ -33,19 +33,8 @@ public class PacketInputStream public byte[] readPacket() throws IOException { tracker.out.reset(); - int id = tracker.read(); - if (id == -1) - { - throw new EOFException(); - } - Packet codec = VanillaPackets.packets[id]; - if (codec == null) - { - throw new RuntimeException("No Packet id: " + Util.hex(id)); - } - codec.a(dataInput); + PacketDefinitions.readPacket(dataInput); return tracker.out.toByteArray(); - } /** diff --git a/src/main/java/net/md_5/bungee/packet/VanillaPackets.java b/src/main/java/net/md_5/bungee/packet/VanillaPackets.java deleted file mode 100644 index e1e3c775..00000000 --- a/src/main/java/net/md_5/bungee/packet/VanillaPackets.java +++ /dev/null @@ -1,189 +0,0 @@ -package net.md_5.bungee.packet; - -import java.lang.reflect.InvocationTargetException; -import static net.md_5.bungee.Logger.$; -import net.md_5.bungee.Util; -import net.minecraft.server.Packet; -import net.minecraft.server.Packet0KeepAlive; -import net.minecraft.server.Packet100OpenWindow; -import net.minecraft.server.Packet101CloseWindow; -import net.minecraft.server.Packet102WindowClick; -import net.minecraft.server.Packet103SetSlot; -import net.minecraft.server.Packet104WindowItems; -import net.minecraft.server.Packet105CraftProgressBar; -import net.minecraft.server.Packet106Transaction; -import net.minecraft.server.Packet107SetCreativeSlot; -import net.minecraft.server.Packet108ButtonClick; -import net.minecraft.server.Packet10Flying; -import net.minecraft.server.Packet11PlayerPosition; -import net.minecraft.server.Packet12PlayerLook; -import net.minecraft.server.Packet130UpdateSign; -import net.minecraft.server.Packet131ItemData; -import net.minecraft.server.Packet132TileEntityData; -import net.minecraft.server.Packet13PlayerLookMove; -import net.minecraft.server.Packet14BlockDig; -import net.minecraft.server.Packet15Place; -import net.minecraft.server.Packet16BlockItemSwitch; -import net.minecraft.server.Packet17EntityLocationAction; -import net.minecraft.server.Packet18ArmAnimation; -import net.minecraft.server.Packet19EntityAction; -import net.minecraft.server.Packet1Login; -import net.minecraft.server.Packet200Statistic; -import net.minecraft.server.Packet201PlayerInfo; -import net.minecraft.server.Packet202Abilities; -import net.minecraft.server.Packet203TabComplete; -import net.minecraft.server.Packet204LocaleAndViewDistance; -import net.minecraft.server.Packet205ClientCommand; -import net.minecraft.server.Packet20NamedEntitySpawn; -import net.minecraft.server.Packet21PickupSpawn; -import net.minecraft.server.Packet22Collect; -import net.minecraft.server.Packet23VehicleSpawn; -import net.minecraft.server.Packet24MobSpawn; -import net.minecraft.server.Packet250CustomPayload; -import net.minecraft.server.Packet252KeyResponse; -import net.minecraft.server.Packet253KeyRequest; -import net.minecraft.server.Packet254GetInfo; -import net.minecraft.server.Packet255KickDisconnect; -import net.minecraft.server.Packet25EntityPainting; -import net.minecraft.server.Packet26AddExpOrb; -import net.minecraft.server.Packet28EntityVelocity; -import net.minecraft.server.Packet29DestroyEntity; -import net.minecraft.server.Packet2Handshake; -import net.minecraft.server.Packet30Entity; -import net.minecraft.server.Packet31RelEntityMove; -import net.minecraft.server.Packet32EntityLook; -import net.minecraft.server.Packet33RelEntityMoveLook; -import net.minecraft.server.Packet34EntityTeleport; -import net.minecraft.server.Packet35EntityHeadRotation; -import net.minecraft.server.Packet38EntityStatus; -import net.minecraft.server.Packet39AttachEntity; -import net.minecraft.server.Packet3Chat; -import net.minecraft.server.Packet40EntityMetadata; -import net.minecraft.server.Packet41MobEffect; -import net.minecraft.server.Packet42RemoveMobEffect; -import net.minecraft.server.Packet43SetExperience; -import net.minecraft.server.Packet4UpdateTime; -import net.minecraft.server.Packet51MapChunk; -import net.minecraft.server.Packet52MultiBlockChange; -import net.minecraft.server.Packet53BlockChange; -import net.minecraft.server.Packet54PlayNoteBlock; -import net.minecraft.server.Packet55BlockBreakAnimation; -import net.minecraft.server.Packet56MapChunkBulk; -import net.minecraft.server.Packet5EntityEquipment; -import net.minecraft.server.Packet60Explosion; -import net.minecraft.server.Packet61WorldEvent; -import net.minecraft.server.Packet62NamedSoundEffect; -import net.minecraft.server.Packet6SpawnPosition; -import net.minecraft.server.Packet70Bed; -import net.minecraft.server.Packet71Weather; -import net.minecraft.server.Packet7UseEntity; -import net.minecraft.server.Packet8UpdateHealth; -import net.minecraft.server.Packet9Respawn; - -/** - * Class containing instances of all Vanilla Minecraft packets. - */ -public class VanillaPackets -{ - - /** - * Array of packet instances ordered by packet id. - */ - public static Packet[] packets = new Packet[256]; - - /** - * Adds a new instance of a packet class to the array storage. - * - * @param id of the packet to add - * @param clazz class of the packet to add - */ - private static void map(int id, Class clazz) - { - try - { - packets[id] = clazz.getDeclaredConstructor().newInstance(); - } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException ex) - { - $().severe("Could not register packet id " + Util.hex(id)); - } - } - - static - { - map(0, Packet0KeepAlive.class); - map(1, Packet1Login.class); - map(2, Packet2Handshake.class); - map(3, Packet3Chat.class); - map(4, Packet4UpdateTime.class); - map(5, Packet5EntityEquipment.class); - map(6, Packet6SpawnPosition.class); - map(7, Packet7UseEntity.class); - map(8, Packet8UpdateHealth.class); - map(9, Packet9Respawn.class); - map(10, Packet10Flying.class); - map(11, Packet11PlayerPosition.class); - map(12, Packet12PlayerLook.class); - map(13, Packet13PlayerLookMove.class); - map(14, Packet14BlockDig.class); - map(15, Packet15Place.class); - map(16, Packet16BlockItemSwitch.class); - map(17, Packet17EntityLocationAction.class); - map(18, Packet18ArmAnimation.class); - map(19, Packet19EntityAction.class); - map(20, Packet20NamedEntitySpawn.class); - map(21, Packet21PickupSpawn.class); - map(22, Packet22Collect.class); - map(23, Packet23VehicleSpawn.class); - map(24, Packet24MobSpawn.class); - map(25, Packet25EntityPainting.class); - map(26, Packet26AddExpOrb.class); - map(28, Packet28EntityVelocity.class); - map(29, Packet29DestroyEntity.class); - map(30, Packet30Entity.class); - map(31, Packet31RelEntityMove.class); - map(32, Packet32EntityLook.class); - map(33, Packet33RelEntityMoveLook.class); - map(34, Packet34EntityTeleport.class); - map(35, Packet35EntityHeadRotation.class); - map(38, Packet38EntityStatus.class); - map(39, Packet39AttachEntity.class); - map(40, Packet40EntityMetadata.class); - map(41, Packet41MobEffect.class); - map(42, Packet42RemoveMobEffect.class); - map(43, Packet43SetExperience.class); - map(51, Packet51MapChunk.class); - map(52, Packet52MultiBlockChange.class); - map(53, Packet53BlockChange.class); - map(54, Packet54PlayNoteBlock.class); - map(55, Packet55BlockBreakAnimation.class); - map(56, Packet56MapChunkBulk.class); - map(60, Packet60Explosion.class); - map(61, Packet61WorldEvent.class); - map(62, Packet62NamedSoundEffect.class); - map(70, Packet70Bed.class); - map(71, Packet71Weather.class); - map(100, Packet100OpenWindow.class); - map(101, Packet101CloseWindow.class); - map(102, Packet102WindowClick.class); - map(103, Packet103SetSlot.class); - map(104, Packet104WindowItems.class); - map(105, Packet105CraftProgressBar.class); - map(106, Packet106Transaction.class); - map(107, Packet107SetCreativeSlot.class); - map(108, Packet108ButtonClick.class); - map(130, Packet130UpdateSign.class); - map(131, Packet131ItemData.class); - map(132, Packet132TileEntityData.class); - map(200, Packet200Statistic.class); - map(201, Packet201PlayerInfo.class); - map(202, Packet202Abilities.class); - map(203, Packet203TabComplete.class); - map(204, Packet204LocaleAndViewDistance.class); - map(205, Packet205ClientCommand.class); - map(250, Packet250CustomPayload.class); - map(252, Packet252KeyResponse.class); - map(253, Packet253KeyRequest.class); - map(254, Packet254GetInfo.class); - map(255, Packet255KickDisconnect.class); - } -} diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java deleted file mode 100644 index 69397692..00000000 --- a/src/main/java/net/minecraft/server/Packet.java +++ /dev/null @@ -1,94 +0,0 @@ -package net.minecraft.server; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; - -public abstract class Packet -{ - - public boolean lowPriority = false; - - public static void a(DataOutputStream dataoutputstream, byte[] abyte) throws IOException - { - dataoutputstream.writeShort(abyte.length); - dataoutputstream.write(abyte); - } - - public static byte[] b(DataInputStream datainputstream) throws IOException - { - short short1 = datainputstream.readShort(); - - if (short1 < 0) - { - throw new IOException("Key was smaller than nothing! Weird key!"); - } else - { - byte[] abyte = new byte[short1]; - - datainputstream.read(abyte); - return abyte; - } - } - - public static String a(DataInputStream datainputstream, int i) throws IOException - { - short short1 = datainputstream.readShort(); - - 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(datainputstream.readChar()); - } - - return stringbuilder.toString(); - } - } - - public abstract void a(DataInputStream datainputstream) throws IOException; - - public abstract void a(DataOutputStream dataoutputstream) throws IOException; - - public abstract void handle(NetHandler nethandler); - - public abstract int a(); - - public static ItemStack c(DataInputStream datainputstream) throws IOException - { - ItemStack itemstack = null; - short short1 = datainputstream.readShort(); - - if (short1 >= 0) - { - byte b0 = datainputstream.readByte(); - short short2 = datainputstream.readShort(); - - itemstack = new ItemStack(short1, b0, short2); - itemstack.tag = d(datainputstream); - } - - return itemstack; - } - - public static NBTTagCompound d(DataInputStream datainputstream) throws IOException - { - short short1 = datainputstream.readShort(); - - if (short1 < 0) - { - return null; - } else - { - byte[] abyte = new byte[short1]; - - datainputstream.readFully(abyte); - return NBTCompressedStreamTools.a(abyte); - } - } -} diff --git a/src/main/java/net/minecraft/server/Packet51MapChunk.java b/src/main/java/net/minecraft/server/Packet51MapChunk.java deleted file mode 100644 index 84ab3e0d..00000000 --- a/src/main/java/net/minecraft/server/Packet51MapChunk.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.minecraft.server; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; - -public class Packet51MapChunk extends Packet -{ - - @Override - public void a(DataInputStream datainputstream) throws IOException - { - datainputstream.readInt(); - datainputstream.readInt(); - datainputstream.readBoolean(); - datainputstream.readShort(); - datainputstream.readShort(); - int size = datainputstream.readInt(); - byte[] buf = new byte[size]; - datainputstream.readFully(buf, 0, size); - } - - @Override - public void a(DataOutputStream dataoutputstream) throws IOException - { - } - - @Override - public void handle(NetHandler nethandler) - { - } - - @Override - public int a() - { - return 0; - } -}