From 4d626bf025b29f8aa5a4dcc9fa10cfd39c2e52e4 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 28 May 2013 23:36:09 -0400 Subject: [PATCH] Patch village distance checking to use floats instead of ints, to avoid int wrapping --- .../util/ChunkCoordinates.java.patch | 17 +++++++++++++ .../village/VillageCollection.java.patch | 24 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 patches/minecraft/net/minecraft/util/ChunkCoordinates.java.patch create mode 100644 patches/minecraft/net/minecraft/village/VillageCollection.java.patch diff --git a/patches/minecraft/net/minecraft/util/ChunkCoordinates.java.patch b/patches/minecraft/net/minecraft/util/ChunkCoordinates.java.patch new file mode 100644 index 0000000000..df4f80f89e --- /dev/null +++ b/patches/minecraft/net/minecraft/util/ChunkCoordinates.java.patch @@ -0,0 +1,17 @@ +--- ../src_base/minecraft/net/minecraft/util/ChunkCoordinates.java ++++ ../src_work/minecraft/net/minecraft/util/ChunkCoordinates.java +@@ -64,10 +64,10 @@ + */ + public float getDistanceSquared(int par1, int par2, int par3) + { +- int l = this.posX - par1; +- int i1 = this.posY - par2; +- int j1 = this.posZ - par3; +- return (float)(l * l + i1 * i1 + j1 * j1); ++ float l = this.posX - par1; ++ float i1 = this.posY - par2; ++ float j1 = this.posZ - par3; ++ return l * l + i1 * i1 + j1 * j1; + } + + /** diff --git a/patches/minecraft/net/minecraft/village/VillageCollection.java.patch b/patches/minecraft/net/minecraft/village/VillageCollection.java.patch new file mode 100644 index 0000000000..b0870dfafd --- /dev/null +++ b/patches/minecraft/net/minecraft/village/VillageCollection.java.patch @@ -0,0 +1,24 @@ +--- ../src_base/minecraft/net/minecraft/village/VillageCollection.java ++++ ../src_work/minecraft/net/minecraft/village/VillageCollection.java +@@ -128,9 +128,9 @@ + + if (f1 < f) + { +- int i1 = par4 + village1.getVillageRadius(); +- +- if (f1 <= (float)(i1 * i1)) ++ float i1 = par4 + village1.getVillageRadius(); ++ ++ if (f1 <= i1 * i1) + { + village = village1; + f = f1; +@@ -165,7 +165,7 @@ + { + Village village = (Village)iterator.next(); + int j = (int)village.getCenter().getDistanceSquared(villagedoorinfo.posX, villagedoorinfo.posY, villagedoorinfo.posZ); +- int k = 32 + village.getVillageRadius(); ++ float k = 32f + village.getVillageRadius(); + + if (j > k * k) + {