From bf4fb583684bea14f688922f23b61a854f7294e7 Mon Sep 17 00:00:00 2001 From: mckuhei Date: Tue, 28 Mar 2023 23:35:35 +0800 Subject: [PATCH] Fix render offset and sync position to server. --- .../net/minecraft/src/CommandServerTp.java | 2 +- .../minecraft/src/EntityClientPlayerMP.java | 24 ++++++---- .../net/minecraft/src/EntityPlayer.java | 34 ++++++++++--- .../net/minecraft/src/EntityPlayerMP.java | 3 ++ .../net/minecraft/src/GuiIngame.java | 8 ++-- .../net/minecraft/src/NetClientHandler.java | 10 ++-- .../net/minecraft/src/NetServerHandler.java | 48 +++++++++++-------- src/minecraft/net/minecraft/src/Packet.java | 16 +++++++ .../net/minecraft/src/Packet10Flying.java | 5 +- .../minecraft/src/Packet11PlayerPosition.java | 11 +++-- .../minecraft/src/Packet13PlayerLookMove.java | 11 +++-- 11 files changed, 114 insertions(+), 58 deletions(-) diff --git a/src/minecraft/net/minecraft/src/CommandServerTp.java b/src/minecraft/net/minecraft/src/CommandServerTp.java index 61192a9..be9699e 100644 --- a/src/minecraft/net/minecraft/src/CommandServerTp.java +++ b/src/minecraft/net/minecraft/src/CommandServerTp.java @@ -52,7 +52,7 @@ public class CommandServerTp extends CommandBase throw new PlayerNotFoundException(); } - var4.serverForThisPlayer.setPlayerLocation(var10.posX, var10.posY, var10.posZ, var10.rotationYaw, var10.rotationPitch); + var4.serverForThisPlayer.setPlayerLocation(var10.posXBig, var10.posY, var10.posZBig, var10.rotationYaw, var10.rotationPitch); notifyAdmins(par1ICommandSender, "commands.tp.success", new Object[] {var4.getEntityName(), var10.getEntityName()}); } } diff --git a/src/minecraft/net/minecraft/src/EntityClientPlayerMP.java b/src/minecraft/net/minecraft/src/EntityClientPlayerMP.java index 647a7c7..3bd2450 100644 --- a/src/minecraft/net/minecraft/src/EntityClientPlayerMP.java +++ b/src/minecraft/net/minecraft/src/EntityClientPlayerMP.java @@ -1,5 +1,7 @@ package net.minecraft.src; +import java.math.BigDecimal; + import org.mcmodule.math.BigInteger; import net.minecraft.client.Minecraft; @@ -7,12 +9,12 @@ import net.minecraft.client.Minecraft; public class EntityClientPlayerMP extends EntityPlayerSP { public NetClientHandler sendQueue; - private double oldPosX; + private BigDecimal oldPosX = BigDecimal.ZERO; /** Old Minimum Y of the bounding box */ private double oldMinY; private double oldPosY; - private double oldPosZ; + private BigDecimal oldPosZ = BigDecimal.ZERO; private float oldRotationYaw; private float oldRotationPitch; @@ -94,10 +96,12 @@ public class EntityClientPlayerMP extends EntityPlayerSP this.shouldStopSneaking = var2; } + + - double var3 = this.posX - this.oldPosX; + double var3 = this.posXBig.subtract(this.oldPosX).doubleValue(); double var5 = this.boundingBox.minY - this.oldMinY; - double var7 = this.posZ - this.oldPosZ; + double var7 = this.posZBig.subtract(this.oldPosZ).doubleValue(); double var9 = (double)(this.rotationYaw - this.oldRotationYaw); double var11 = (double)(this.rotationPitch - this.oldRotationPitch); boolean var13 = var3 * var3 + var5 * var5 + var7 * var7 > 9.0E-4D || this.field_71168_co >= 20; @@ -107,22 +111,22 @@ public class EntityClientPlayerMP extends EntityPlayerSP { if (var14) { - this.sendQueue.addToSendQueue(new Packet11PlayerPosition(this.motionX, -999.0D, -999.0D, this.motionZ, this.onGround)); + this.sendQueue.addToSendQueue(new Packet11PlayerPosition(BigDecimal.valueOf(this.motionX), -999.0D, -999.0D, BigDecimal.valueOf(this.motionZ), this.onGround)); } else { - this.sendQueue.addToSendQueue(new Packet13PlayerLookMove(this.motionX, -999.0D, -999.0D, this.motionZ, this.rotationYaw, this.rotationPitch, this.onGround)); + this.sendQueue.addToSendQueue(new Packet13PlayerLookMove(BigDecimal.valueOf(this.motionX), -999.0D, -999.0D, BigDecimal.valueOf(this.motionZ), this.rotationYaw, this.rotationPitch, this.onGround)); } var13 = false; } else if (var13 && var14) { - this.sendQueue.addToSendQueue(new Packet13PlayerLookMove(this.posX, this.boundingBox.minY, this.posY, this.posZ, this.rotationYaw, this.rotationPitch, this.onGround)); + this.sendQueue.addToSendQueue(new Packet13PlayerLookMove(this.posXBig, this.boundingBox.minY, this.posY, this.posZBig, this.rotationYaw, this.rotationPitch, this.onGround)); } else if (var13) { - this.sendQueue.addToSendQueue(new Packet11PlayerPosition(this.posX, this.boundingBox.minY, this.posY, this.posZ, this.onGround)); + this.sendQueue.addToSendQueue(new Packet11PlayerPosition(this.posXBig, this.boundingBox.minY, this.posY, this.posZBig, this.onGround)); } else if (var14) { @@ -138,10 +142,10 @@ public class EntityClientPlayerMP extends EntityPlayerSP if (var13) { - this.oldPosX = this.posX; + this.oldPosX = this.posXBig; this.oldMinY = this.boundingBox.minY; this.oldPosY = this.posY; - this.oldPosZ = this.posZ; + this.oldPosZ = this.posZBig; this.field_71168_co = 0; } diff --git a/src/minecraft/net/minecraft/src/EntityPlayer.java b/src/minecraft/net/minecraft/src/EntityPlayer.java index 21d90d3..278888b 100644 --- a/src/minecraft/net/minecraft/src/EntityPlayer.java +++ b/src/minecraft/net/minecraft/src/EntityPlayer.java @@ -110,17 +110,18 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende protected float speedOnGround = 0.1F; protected float speedInAir = 0.02F; - protected BigDecimalAABB boundingBox = BigDecimalAABB.getBoundingBox(0, 0, 0, 0, 0, 0); + protected BigDecimalAABB boundingBox; /** * An instance of a fishing rod's hook. If this isn't null, the icon image of the fishing rod is slightly different */ public EntityFishHook fishEntity = null; - public BigDecimal posXBig, posZBig; + public BigDecimal posXBig = BigDecimal.ZERO, posZBig = BigDecimal.ZERO; public EntityPlayer(World par1World) { super(par1World); + boundingBox = BigDecimalAABB.getBoundingBox(0, 0, 0, 0, 0, 0); this.inventorySlots = new ContainerPlayer(this.inventory, !par1World.isRemote); this.craftingInventory = this.inventorySlots; this.yOffset = 1.62F; @@ -207,7 +208,8 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende */ public void onUpdate() { - if (this.itemInUse != null) +// if(!worldObj.isRemote) System.out.println(this.posX); + if (this.itemInUse != null) { ItemStack var1 = this.inventory.getCurrentItem(); @@ -590,9 +592,29 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende this.boundingBox.setBounds(x - (double)var7, y - (double)this.yOffset + (double)this.ySize, z - (double)var7, x + (double)var7, y - (double)this.yOffset + (double)this.ySize + (double)var8, z + (double)var7); } + public void setPosition(BigDecimal x, double y, BigDecimal z) { + super.setPosition(x.doubleValue(), y, z.doubleValue()); + BigDecimal var7 = BigDecimal.valueOf(this.width / 2.0F); + float var8 = this.height; + if(this.boundingBox == null) this.boundingBox = BigDecimalAABB.getBoundingBox(0, 0, 0, 0, 0, 0); + this.boundingBox.setBounds(x.subtract(var7), y - (double)this.yOffset + (double)this.ySize, z.subtract(var7), x.add(var7), y - (double)this.yOffset + (double)this.ySize + (double)var8, z.add(var7)); + } + + public void setLocationAndAngles(BigDecimal posX, double posY, BigDecimal posZ, float rotationYaw, + float rotationPitch) { + super.setLocationAndAngles(posX.doubleValue(), posY, posZ.doubleValue(), rotationYaw, rotationPitch); + setPosition(posX, posY, posZ); + } + + public void setPositionAndRotation(BigDecimal posX, double posY, BigDecimal posZ, float rotationYaw, float rotationPitch) { + super.setPositionAndRotation(posX.doubleValue(), posY, posZ.doubleValue(), rotationYaw, rotationPitch); + setPosition(posX, posY, posZ); + } + public void moveEntity(double par1, double par3, double par5) { super.moveEntity(par1, par3, par5); + super.boundingBox.setBounds(this.boundingBox.minX.doubleValue(), this.boundingBox.minY, this.boundingBox.minZ.doubleValue(), this.boundingBox.maxX.doubleValue(), this.boundingBox.maxY, this.boundingBox.maxZ.doubleValue()); if (this.noClip) { this.boundingBox.offset(par1, par3, par5); @@ -837,11 +859,9 @@ public abstract class EntityPlayer extends EntityLiving implements ICommandSende } } - // TODO: Fix offset - BigDecimal offset = BigDecimal.valueOf(0.5); - this.posXBig = (this.boundingBox.minX.add(this.boundingBox.maxX)).divide(BigDecimal.valueOf(2)).add(offset); - this.posZBig = (this.boundingBox.minZ.add(this.boundingBox.maxZ)).divide(BigDecimal.valueOf(2)).add(offset); + this.posXBig = (this.boundingBox.minX.add(this.boundingBox.maxX)).divide(BigDecimal.valueOf(2)); + this.posZBig = (this.boundingBox.minZ.add(this.boundingBox.maxZ)).divide(BigDecimal.valueOf(2)); this.worldObj.theProfiler.endSection(); } } diff --git a/src/minecraft/net/minecraft/src/EntityPlayerMP.java b/src/minecraft/net/minecraft/src/EntityPlayerMP.java index 57a6fb4..839e0e8 100644 --- a/src/minecraft/net/minecraft/src/EntityPlayerMP.java +++ b/src/minecraft/net/minecraft/src/EntityPlayerMP.java @@ -3,6 +3,8 @@ package net.minecraft.src; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.math.BigDecimal; + import org.mcmodule.math.BigInteger; import java.util.ArrayList; import java.util.Iterator; @@ -881,4 +883,5 @@ public class EntityPlayerMP extends EntityPlayer implements ICrafting String var3 = par1Str + "\u0000" + par2; this.serverForThisPlayer.sendPacketToPlayer(new Packet250CustomPayload("MC|TPack", var3.getBytes())); } + } diff --git a/src/minecraft/net/minecraft/src/GuiIngame.java b/src/minecraft/net/minecraft/src/GuiIngame.java index 22e211e..b383a83 100644 --- a/src/minecraft/net/minecraft/src/GuiIngame.java +++ b/src/minecraft/net/minecraft/src/GuiIngame.java @@ -1,6 +1,8 @@ package net.minecraft.src; import java.awt.Color; +import java.math.RoundingMode; + import org.mcmodule.math.BigInteger; import java.util.List; import java.util.Random; @@ -410,9 +412,9 @@ public class GuiIngame extends Gui var8.drawStringWithShadow(this.mc.extraDebug, 2, 52, 16777215); this.drawString(var8, var45, var6 - var8.getStringWidth(var45) - 2, 12, 14737632); GL11.glTranslated(0, var8.FONT_HEIGHT, 0); - this.drawString(var8, String.format("x: %.5f", new Object[] {Double.valueOf(this.mc.thePlayer.posX)}), 2, 64, 14737632); + this.drawString(var8, String.format("x: %s", mc.thePlayer.posXBig.setScale(5, RoundingMode.CEILING).toPlainString()), 2, 64, 14737632); this.drawString(var8, String.format("y: %.3f (feet pos, %.3f eyes pos)", new Object[] {Double.valueOf(this.mc.thePlayer.boundingBox.minY), Double.valueOf(this.mc.thePlayer.posY)}), 2, 72, 14737632); - this.drawString(var8, String.format("z: %.5f", new Object[] {Double.valueOf(this.mc.thePlayer.posZ)}), 2, 80, 14737632); + this.drawString(var8, String.format("z: %s", mc.thePlayer.posZBig.setScale(5, RoundingMode.CEILING).toPlainString()), 2, 80, 14737632); this.drawString(var8, "f: " + (MathHelper.floor_double((double)(this.mc.thePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3), 2, 88, 14737632); BigInteger x = MathHelper.floor_double_BigInteger(this.mc.thePlayer.posX); var22 = MathHelper.floor_double(this.mc.thePlayer.posY); @@ -428,7 +430,7 @@ public class GuiIngame extends Gui } this.drawString(var8, String.format("ws: %.3f, fs: %.3f, g: %b", new Object[] {Float.valueOf(this.mc.thePlayer.capabilities.getWalkSpeed()), Float.valueOf(this.mc.thePlayer.capabilities.getFlySpeed()), Boolean.valueOf(this.mc.thePlayer.onGround)}), 2, 104, 14737632); - int maxBit = x.max(z).bitLength(); + int maxBit = mc.thePlayer.posXBig.max(mc.thePlayer.posZBig).toBigInteger().bitLength(); double doublePrecision = Math.pow(2, (maxBit - 53)), floatPrecision = Math.pow(2, (maxBit - 24)); diff --git a/src/minecraft/net/minecraft/src/NetClientHandler.java b/src/minecraft/net/minecraft/src/NetClientHandler.java index b00c723..9afefac 100644 --- a/src/minecraft/net/minecraft/src/NetClientHandler.java +++ b/src/minecraft/net/minecraft/src/NetClientHandler.java @@ -5,6 +5,8 @@ import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.math.BigDecimal; + import org.mcmodule.math.BigInteger; import java.net.InetAddress; import java.net.Socket; @@ -470,9 +472,9 @@ public class NetClientHandler extends NetHandler public void handleFlying(Packet10Flying par1Packet10Flying) { EntityClientPlayerMP var2 = this.mc.thePlayer; - double var3 = var2.posX; + BigDecimal var3 = var2.posXBig; double var5 = var2.posY; - double var7 = var2.posZ; + BigDecimal var7 = var2.posZBig; float var9 = var2.rotationYaw; float var10 = var2.rotationPitch; @@ -492,9 +494,9 @@ public class NetClientHandler extends NetHandler var2.ySize = 0.0F; var2.motionX = var2.motionY = var2.motionZ = 0.0D; var2.setPositionAndRotation(var3, var5, var7, var9, var10); - par1Packet10Flying.xPosition = var2.posX; + par1Packet10Flying.xPosition = var2.posXBig; par1Packet10Flying.yPosition = var2.boundingBox.minY; - par1Packet10Flying.zPosition = var2.posZ; + par1Packet10Flying.zPosition = var2.posZBig; par1Packet10Flying.stance = var2.posY; this.netManager.addToSendQueue(par1Packet10Flying); diff --git a/src/minecraft/net/minecraft/src/NetServerHandler.java b/src/minecraft/net/minecraft/src/NetServerHandler.java index 3f6d7c5..4f03c72 100644 --- a/src/minecraft/net/minecraft/src/NetServerHandler.java +++ b/src/minecraft/net/minecraft/src/NetServerHandler.java @@ -3,6 +3,8 @@ package net.minecraft.src; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; +import java.math.BigDecimal; + import org.mcmodule.math.BigInteger; import java.util.ArrayList; import java.util.Iterator; @@ -39,13 +41,13 @@ public class NetServerHandler extends NetHandler private int creativeItemCreationSpamThresholdTally = 0; /** The last known x position for this connection. */ - private double lastPosX; + private BigDecimal lastPosX = BigDecimal.ZERO; /** The last known y position for this connection. */ private double lastPosY; /** The last known z position for this connection. */ - private double lastPosZ; + private BigDecimal lastPosZ = BigDecimal.ZERO; private boolean field_72587_r = true; private IntHashMap field_72586_s = new IntHashMap(); @@ -128,7 +130,7 @@ public class NetServerHandler extends NetHandler { var3 = par1Packet10Flying.yPosition - this.lastPosY; - if (par1Packet10Flying.xPosition == this.lastPosX && var3 * var3 < 0.01D && par1Packet10Flying.zPosition == this.lastPosZ) + if (par1Packet10Flying.xPosition.compareTo(this.lastPosX) == 0 && var3 * var3 < 0.01D && par1Packet10Flying.zPosition.compareTo(this.lastPosZ) == 0) { this.field_72587_r = true; } @@ -136,9 +138,9 @@ public class NetServerHandler extends NetHandler if (this.field_72587_r) { - double var5; + BigDecimal var5; double var7; - double var9; + BigDecimal var9; double var13; if (this.playerEntity.ridingEntity != null) @@ -146,9 +148,9 @@ public class NetServerHandler extends NetHandler float var34 = this.playerEntity.rotationYaw; float var4 = this.playerEntity.rotationPitch; this.playerEntity.ridingEntity.updateRiderPosition(); - var5 = this.playerEntity.posX; + var5 = this.playerEntity.posXBig; var7 = this.playerEntity.posY; - var9 = this.playerEntity.posZ; + var9 = this.playerEntity.posZBig; double var35 = 0.0D; var13 = 0.0D; @@ -160,15 +162,15 @@ public class NetServerHandler extends NetHandler if (par1Packet10Flying.moving && par1Packet10Flying.yPosition == -999.0D && par1Packet10Flying.stance == -999.0D) { - if (Math.abs(par1Packet10Flying.xPosition) > 1.0D || Math.abs(par1Packet10Flying.zPosition) > 1.0D) + if (par1Packet10Flying.xPosition.abs().compareTo(BigDecimal.ONE) > 0 || par1Packet10Flying.zPosition.abs().compareTo(BigDecimal.ONE) > 0) { System.err.println(this.playerEntity.username + " was caught trying to crash the server with an invalid position."); this.kickPlayerFromServer("Nope!"); return; } - var35 = par1Packet10Flying.xPosition; - var13 = par1Packet10Flying.zPosition; + var35 = par1Packet10Flying.xPosition.doubleValue(); + var13 = par1Packet10Flying.zPosition.doubleValue(); } this.playerEntity.onGround = par1Packet10Flying.onGround; @@ -189,9 +191,9 @@ public class NetServerHandler extends NetHandler } this.mcServer.getConfigurationManager().func_72358_d(this.playerEntity); - this.lastPosX = this.playerEntity.posX; + this.lastPosX = this.playerEntity.posXBig; this.lastPosY = this.playerEntity.posY; - this.lastPosZ = this.playerEntity.posZ; + this.lastPosZ = this.playerEntity.posZBig; var2.updateEntity(this.playerEntity); return; } @@ -205,12 +207,12 @@ public class NetServerHandler extends NetHandler } var3 = this.playerEntity.posY; - this.lastPosX = this.playerEntity.posX; + this.lastPosX = this.playerEntity.posXBig; this.lastPosY = this.playerEntity.posY; - this.lastPosZ = this.playerEntity.posZ; - var5 = this.playerEntity.posX; + this.lastPosZ = this.playerEntity.posZBig; + var5 = this.playerEntity.posXBig; var7 = this.playerEntity.posY; - var9 = this.playerEntity.posZ; + var9 = this.playerEntity.posZBig; float var11 = this.playerEntity.rotationYaw; float var12 = this.playerEntity.rotationPitch; @@ -255,9 +257,9 @@ public class NetServerHandler extends NetHandler return; } - var13 = var5 - this.playerEntity.posX; + var13 = var5.subtract(this.playerEntity.posXBig).doubleValue(); double var15 = var7 - this.playerEntity.posY; - double var17 = var9 - this.playerEntity.posZ; + double var17 = var9.subtract(this.playerEntity.posZBig).doubleValue(); double var19 = Math.min(Math.abs(var13), Math.abs(this.playerEntity.motionX)); double var21 = Math.min(Math.abs(var15), Math.abs(this.playerEntity.motionY)); double var23 = Math.min(Math.abs(var17), Math.abs(this.playerEntity.motionZ)); @@ -282,7 +284,7 @@ public class NetServerHandler extends NetHandler this.playerEntity.onGround = par1Packet10Flying.onGround; this.playerEntity.addMovementStat(var13, var15, var17); double var29 = var15; - var13 = var5 - this.playerEntity.posX; + var13 = var5.subtract(this.playerEntity.posXBig).doubleValue(); var15 = var7 - this.playerEntity.posY; if (var15 > -0.5D || var15 < 0.5D) @@ -290,7 +292,7 @@ public class NetServerHandler extends NetHandler var15 = 0.0D; } - var17 = var9 - this.playerEntity.posZ; + var17 = var9.subtract(this.playerEntity.posZBig).doubleValue(); var25 = var13 * var13 + var15 * var15 + var17 * var17; boolean var31 = false; @@ -337,7 +339,11 @@ public class NetServerHandler extends NetHandler } } - public void setPlayerLocation(double par1, double par3, double par5, float par7, float par8) + public void setPlayerLocation(double par1, double par3, double par5, float par7, float par8) { + this.setPlayerLocation(BigDecimal.valueOf(par1), par3, BigDecimal.valueOf(par5), par7, par8); + } + + public void setPlayerLocation(BigDecimal par1, double par3, BigDecimal par5, float par7, float par8) { this.field_72587_r = false; this.lastPosX = par1; diff --git a/src/minecraft/net/minecraft/src/Packet.java b/src/minecraft/net/minecraft/src/Packet.java index a665534..98a8fc1 100644 --- a/src/minecraft/net/minecraft/src/Packet.java +++ b/src/minecraft/net/minecraft/src/Packet.java @@ -4,6 +4,8 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.IOException; +import java.math.BigDecimal; + import org.mcmodule.math.BigInteger; import java.util.HashMap; import java.util.HashSet; @@ -115,12 +117,26 @@ public abstract class Packet } } + public static void writeBigDecimal(DataOutputStream out, BigDecimal value) throws IOException { + out.writeInt(value.scale()); + byte[] data = value.unscaledValue().toByteArray(); + out.writeInt(data.length); + out.write(data); + } + public static void writeBigInteger(DataOutputStream out, BigInteger value) throws IOException { byte[] data = value.toByteArray(); out.writeInt(data.length); out.write(data); } + public static BigDecimal readBigDecimal(DataInputStream in) throws IOException { + int scale = in.readInt(); + byte[] data = new byte[in.readInt()]; + in.readFully(data); + return new BigDecimal(new java.math.BigInteger(data), scale); + } + public static BigInteger readBigInteger(DataInputStream in) throws IOException { byte[] data = new byte[in.readInt()]; in.readFully(data); diff --git a/src/minecraft/net/minecraft/src/Packet10Flying.java b/src/minecraft/net/minecraft/src/Packet10Flying.java index 3826d48..46ee6b8 100644 --- a/src/minecraft/net/minecraft/src/Packet10Flying.java +++ b/src/minecraft/net/minecraft/src/Packet10Flying.java @@ -3,17 +3,18 @@ package net.minecraft.src; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.math.BigDecimal; public class Packet10Flying extends Packet { /** The player's X position. */ - public double xPosition; + public BigDecimal xPosition = BigDecimal.ZERO; /** The player's Y position. */ public double yPosition; /** The player's Z position. */ - public double zPosition; + public BigDecimal zPosition = BigDecimal.ZERO; /** The player's stance. (boundingBox.minY) */ public double stance; diff --git a/src/minecraft/net/minecraft/src/Packet11PlayerPosition.java b/src/minecraft/net/minecraft/src/Packet11PlayerPosition.java index 7451388..57ad693 100644 --- a/src/minecraft/net/minecraft/src/Packet11PlayerPosition.java +++ b/src/minecraft/net/minecraft/src/Packet11PlayerPosition.java @@ -3,6 +3,7 @@ package net.minecraft.src; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.math.BigDecimal; public class Packet11PlayerPosition extends Packet10Flying { @@ -11,7 +12,7 @@ public class Packet11PlayerPosition extends Packet10Flying this.moving = true; } - public Packet11PlayerPosition(double par1, double par3, double par5, double par7, boolean par9) + public Packet11PlayerPosition(BigDecimal par1, double par3, double par5, BigDecimal par7, boolean par9) { this.xPosition = par1; this.yPosition = par3; @@ -26,10 +27,10 @@ public class Packet11PlayerPosition extends Packet10Flying */ public void readPacketData(DataInputStream par1DataInputStream) throws IOException { - this.xPosition = par1DataInputStream.readDouble(); + this.xPosition = readBigDecimal(par1DataInputStream); this.yPosition = par1DataInputStream.readDouble(); this.stance = par1DataInputStream.readDouble(); - this.zPosition = par1DataInputStream.readDouble(); + this.zPosition = readBigDecimal(par1DataInputStream); super.readPacketData(par1DataInputStream); } @@ -38,10 +39,10 @@ public class Packet11PlayerPosition extends Packet10Flying */ public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException { - par1DataOutputStream.writeDouble(this.xPosition); + writeBigDecimal(par1DataOutputStream, xPosition); par1DataOutputStream.writeDouble(this.yPosition); par1DataOutputStream.writeDouble(this.stance); - par1DataOutputStream.writeDouble(this.zPosition); + writeBigDecimal(par1DataOutputStream, zPosition); super.writePacketData(par1DataOutputStream); } diff --git a/src/minecraft/net/minecraft/src/Packet13PlayerLookMove.java b/src/minecraft/net/minecraft/src/Packet13PlayerLookMove.java index 83dd616..8ed74b7 100644 --- a/src/minecraft/net/minecraft/src/Packet13PlayerLookMove.java +++ b/src/minecraft/net/minecraft/src/Packet13PlayerLookMove.java @@ -3,6 +3,7 @@ package net.minecraft.src; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.math.BigDecimal; public class Packet13PlayerLookMove extends Packet10Flying { @@ -12,7 +13,7 @@ public class Packet13PlayerLookMove extends Packet10Flying this.moving = true; } - public Packet13PlayerLookMove(double par1, double par3, double par5, double par7, float par9, float par10, boolean par11) + public Packet13PlayerLookMove(BigDecimal par1, double par3, double par5, BigDecimal par7, float par9, float par10, boolean par11) { this.xPosition = par1; this.yPosition = par3; @@ -30,10 +31,10 @@ public class Packet13PlayerLookMove extends Packet10Flying */ public void readPacketData(DataInputStream par1DataInputStream) throws IOException { - this.xPosition = par1DataInputStream.readDouble(); + this.xPosition = readBigDecimal(par1DataInputStream); this.yPosition = par1DataInputStream.readDouble(); this.stance = par1DataInputStream.readDouble(); - this.zPosition = par1DataInputStream.readDouble(); + this.zPosition = readBigDecimal(par1DataInputStream); this.yaw = par1DataInputStream.readFloat(); this.pitch = par1DataInputStream.readFloat(); super.readPacketData(par1DataInputStream); @@ -44,10 +45,10 @@ public class Packet13PlayerLookMove extends Packet10Flying */ public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException { - par1DataOutputStream.writeDouble(this.xPosition); + writeBigDecimal(par1DataOutputStream, xPosition); par1DataOutputStream.writeDouble(this.yPosition); par1DataOutputStream.writeDouble(this.stance); - par1DataOutputStream.writeDouble(this.zPosition); + writeBigDecimal(par1DataOutputStream, zPosition); par1DataOutputStream.writeFloat(this.yaw); par1DataOutputStream.writeFloat(this.pitch); super.writePacketData(par1DataOutputStream);