diff --git a/proxy/src/main/java/proxy/network/LoginHandler.java b/proxy/src/main/java/proxy/network/LoginHandler.java index 1bee675..0c251cf 100755 --- a/proxy/src/main/java/proxy/network/LoginHandler.java +++ b/proxy/src/main/java/proxy/network/LoginHandler.java @@ -71,7 +71,7 @@ public class LoginHandler implements Handler { ProxyHandler handler = new ProxyHandler(this.proxy, this.connection, this.username); this.connection.setNetHandler(handler); this.connection.sendPacket(new R02PacketLoginSuccess(Proxy.getOfflineUUID(this.username), this.username)); - handler.setupPlayer(); + handler.setupPlayer(0x7fffff00); } public void onDisconnect(Connection connection, String reason) { diff --git a/proxy/src/main/java/proxy/network/ProxyHandler.java b/proxy/src/main/java/proxy/network/ProxyHandler.java index 64215cb..e6a5fea 100755 --- a/proxy/src/main/java/proxy/network/ProxyHandler.java +++ b/proxy/src/main/java/proxy/network/ProxyHandler.java @@ -67,11 +67,12 @@ public class ProxyHandler extends User implements Handler { private long lastSentPingPacket; private volatile boolean connecting; private volatile boolean connected; - private volatile boolean joined; private int passwordAttempts; private boolean wasClosed; private volatile int signPreloaded; private String completion; + private int spoofedId = -1; + private int realId = -1; private static boolean isAllowedChar(char ch) { return ch != 167 && ch >= 32 && ch != 127; @@ -106,8 +107,9 @@ public class ProxyHandler extends User implements Handler { return this.username; } - public void setupPlayer() { - this.sendToClient(new S01PacketJoinGame(0, true)); + public void setupPlayer(int id) { + this.spoofedId = id; + this.sendToClient(new S01PacketJoinGame(id, true)); this.sendToClient(new S03PacketTimeUpdate(3000L, false)); this.sendToClient(new S26PacketMapChunkBulk(0, 64, 0)); this.sendToClient(new S08PacketPlayerPosLook(0.5, 65.0, 0.5, 0.0f, 0.0f)); @@ -482,12 +484,12 @@ public class ProxyHandler extends User implements Handler { public void processEntityAction(C0BPacketEntityAction packetIn) { if(this.connected) - this.sendToServer(packetIn); + this.sendToServer(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void processUseEntity(C02PacketUseEntity packetIn) { if(this.connected) - this.sendToServer(packetIn); + this.sendToServer(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void processClientStatus(C16PacketClientStatus packetIn) { @@ -649,12 +651,9 @@ public class ProxyHandler extends User implements Handler { } public void handleJoinGame(S01PacketJoinGame packetIn) { - this.sendToClient(packetIn); - if(!this.joined) { - this.joined = true; - this.sendToClient(new S07PacketRespawn(packetIn)); - this.sendToClient(new S2EPacketCloseWindow()); - } + this.realId = packetIn.getEntityId(); + this.sendToClient(new S07PacketRespawn(packetIn)); +// this.sendToClient(new S2EPacketCloseWindow()); } public void handleSetCompressionLevel(S46PacketSetCompressionLevel packetIn) { @@ -682,19 +681,19 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityVelocity(S12PacketEntityVelocity packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleEntityMetadata(S1CPacketEntityMetadata packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleSpawnPlayer(S0CPacketSpawnPlayer packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleEntityTeleport(S18PacketEntityTeleport packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleHeldItemChange(S09PacketHeldItemChange packetIn) { @@ -702,11 +701,11 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityMovement(S14PacketEntity packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleEntityHeadLook(S19PacketEntityHeadLook packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleDestroyEntities(S13PacketDestroyEntities packetIn) { @@ -730,7 +729,7 @@ public class ProxyHandler extends User implements Handler { } public void handleCollectItem(S0DPacketCollectItem packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleChat(S02PacketChat packetIn) { @@ -738,11 +737,11 @@ public class ProxyHandler extends User implements Handler { } public void handleAnimation(S0BPacketAnimation packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleUseBed(S0APacketUseBed packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleSpawnMob(S0FPacketSpawnMob packetIn) { @@ -758,11 +757,11 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityAttach(S1BPacketEntityAttach packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleEntityStatus(S19PacketEntityStatus packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleUpdateHealth(S06PacketUpdateHealth packetIn) { @@ -814,7 +813,7 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityEquipment(S04PacketEntityEquipment packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleCloseWindow(S2EPacketCloseWindow packetIn) { @@ -826,7 +825,7 @@ public class ProxyHandler extends User implements Handler { } public void handleBlockBreakAnim(S25PacketBlockBreakAnim packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleMapChunkBulk(S26PacketMapChunkBulk packetIn) { @@ -850,7 +849,7 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityEffect(S1DPacketEntityEffect packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleCombatEvent(S42PacketCombatEvent packetIn) { @@ -862,7 +861,7 @@ public class ProxyHandler extends User implements Handler { } public void handleCamera(S43PacketCamera packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleWorldBorder(S44PacketWorldBorder packetIn) { @@ -878,7 +877,7 @@ public class ProxyHandler extends User implements Handler { } public void handleRemoveEntityEffect(S1EPacketRemoveEntityEffect packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handlePlayerListItem(S38PacketPlayerListItem packetIn) { @@ -898,7 +897,7 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityNBT(S49PacketUpdateEntityNBT packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } public void handleCustomPayload(S3FPacketCustomPayload packetIn) { @@ -926,6 +925,6 @@ public class ProxyHandler extends User implements Handler { } public void handleEntityProperties(S20PacketEntityProperties packetIn) { - this.sendToClient(packetIn); + this.sendToClient(packetIn.replaceEntityId(this.realId, this.spoofedId)); } } diff --git a/proxy/src/main/java/proxy/packet/EntityIdPacketClient.java b/proxy/src/main/java/proxy/packet/EntityIdPacketClient.java index ed4a2f2..77dc130 100644 --- a/proxy/src/main/java/proxy/packet/EntityIdPacketClient.java +++ b/proxy/src/main/java/proxy/packet/EntityIdPacketClient.java @@ -1,10 +1,14 @@ package proxy.packet; -public class EntityIdPacketClient { +import proxy.network.Packet; +import proxy.network.ProxyHandler; + +public abstract class EntityIdPacketClient implements Packet { protected int entityId; - public void replaceEntityId(int real, int spoofed) { + public Packet replaceEntityId(int real, int spoofed) { if(this.entityId == real) this.entityId = spoofed; + return this; } } diff --git a/proxy/src/main/java/proxy/packet/EntityIdPacketServer.java b/proxy/src/main/java/proxy/packet/EntityIdPacketServer.java index 0502a22..9cc84ea 100644 --- a/proxy/src/main/java/proxy/packet/EntityIdPacketServer.java +++ b/proxy/src/main/java/proxy/packet/EntityIdPacketServer.java @@ -1,10 +1,14 @@ package proxy.packet; -public class EntityIdPacketServer { +import proxy.network.Packet; +import proxy.network.ProxyHandler; + +public abstract class EntityIdPacketServer implements Packet { protected int entityId; - public void replaceEntityId(int real, int spoofed) { + public Packet replaceEntityId(int real, int spoofed) { if(this.entityId == spoofed) this.entityId = real; + return this; } } diff --git a/proxy/src/main/java/proxy/packet/S0DPacketCollectItem.java b/proxy/src/main/java/proxy/packet/S0DPacketCollectItem.java index aa6e23b..8f6320e 100755 --- a/proxy/src/main/java/proxy/packet/S0DPacketCollectItem.java +++ b/proxy/src/main/java/proxy/packet/S0DPacketCollectItem.java @@ -10,6 +10,13 @@ public class S0DPacketCollectItem extends EntityIdPacketClient implements Packet { private int collectedItemEntityId; + public Packet replaceEntityId(int real, int spoofed) { + super.replaceEntityId(real, spoofed); + if(this.collectedItemEntityId == real) + this.collectedItemEntityId = spoofed; + return this; + } + /** * Reads the raw packet data from the data stream. */ diff --git a/proxy/src/main/java/proxy/packet/S1BPacketEntityAttach.java b/proxy/src/main/java/proxy/packet/S1BPacketEntityAttach.java index 72ab48f..7057c45 100755 --- a/proxy/src/main/java/proxy/packet/S1BPacketEntityAttach.java +++ b/proxy/src/main/java/proxy/packet/S1BPacketEntityAttach.java @@ -11,10 +11,11 @@ public class S1BPacketEntityAttach extends EntityIdPacketClient implements Packe private int leash; private int vehicleEntityId; - public void replaceEntityId(int real, int spoofed) { + public Packet replaceEntityId(int real, int spoofed) { super.replaceEntityId(real, spoofed); if(this.vehicleEntityId == real) this.vehicleEntityId = spoofed; + return this; } /**