diff --git a/src/main/java/biomesoplenty/client/textures/TextureBiomeFinder.java b/src/main/java/biomesoplenty/client/textures/TextureBiomeFinder.java index 171fc2296..6aeae1344 100644 --- a/src/main/java/biomesoplenty/client/textures/TextureBiomeFinder.java +++ b/src/main/java/biomesoplenty/client/textures/TextureBiomeFinder.java @@ -47,7 +47,7 @@ public class TextureBiomeFinder extends TextureAtlasSprite if (par1World != null && !par8) { - System.out.println(biomePosX + " " + biomePosZ); + //System.out.println(biomePosX + " " + biomePosZ); double d4 = (double)biomePosX - playerPosX; double d5 = (double)biomePosZ - playerPosZ; diff --git a/src/main/java/biomesoplenty/common/items/ItemBiomeFinder.java b/src/main/java/biomesoplenty/common/items/ItemBiomeFinder.java index caf8caeb0..99085fb16 100644 --- a/src/main/java/biomesoplenty/common/items/ItemBiomeFinder.java +++ b/src/main/java/biomesoplenty/common/items/ItemBiomeFinder.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; @@ -39,22 +40,64 @@ public class ItemBiomeFinder extends Item WorldChunkManager chunkManager = world.getWorldChunkManager(); - //TODO: findBiome()? - ChunkPosition biomePosition = null; - - for (int x = -10; x <= 10; x++) + ChunkPosition finalFoundPosition1 = null; + + int playerX = MathHelper.floor_double(player.posX); + int playerZ = MathHelper.floor_double(player.posZ); + + for (int x = 10; x <= 10; x++) { for (int z = -10; z <= 10; z++) { - ChunkPosition foundPosition = chunkManager.func_150795_a(x * 1024, z * 1024, radius, Arrays.asList(biomeToFind), world.rand); + ChunkPosition foundPosition = chunkManager.func_150795_a(playerX + (x * 1024), playerZ + (z * 1024), radius, Arrays.asList(biomeToFind), world.rand); if (foundPosition != null && world.getBiomeGenForCoords(foundPosition.field_151329_a, foundPosition.field_151328_c) == biomeToFind) { - biomePosition = foundPosition; + finalFoundPosition1 = foundPosition; break; } } } + + ChunkPosition finalFoundPosition2 = null; + + for (int x = -10; x <= 10; x++) + { + for (int z = 10; z >= -10; z--) + { + ChunkPosition foundPosition = chunkManager.func_150795_a(playerX + (x * 1024), playerZ + (z * 1024), radius, Arrays.asList(biomeToFind), world.rand); + + if (foundPosition != null && world.getBiomeGenForCoords(foundPosition.field_151329_a, foundPosition.field_151328_c) == biomeToFind) + { + finalFoundPosition2 = foundPosition; + break; + } + } + } + + ChunkPosition biomePosition = null; + + System.out.println((finalFoundPosition1 == null) + " " + (finalFoundPosition2 == null)); + + if (finalFoundPosition1 != null && finalFoundPosition2 != null) + { + int f1X = finalFoundPosition1.field_151329_a; + int f1Z = finalFoundPosition1.field_151328_c; + + int f2X = finalFoundPosition2.field_151329_a; + int f2Z = finalFoundPosition2.field_151328_c; + + System.out.println(f1X + " " + f1Z); + System.out.println(f2X + " " + f2Z); + + if (Math.sqrt((f1X * f1X) + (f1Z * f1Z)) > Math.sqrt((f2X * f2X) + (f2Z * f2Z))) biomePosition = finalFoundPosition2; + else biomePosition = finalFoundPosition1; + } + else + { + if (finalFoundPosition1 == null) biomePosition = finalFoundPosition2; + else if (finalFoundPosition2 == null) biomePosition = finalFoundPosition1; + } if (biomePosition != null) {