Removed Reflection for the TemptEventHandler, Added a "No biome found" state for the biome finder and prevented it from being used multiple times (until the biome on it has been changed)
This commit is contained in:
parent
82d5eb3657
commit
79d1f90628
6 changed files with 137 additions and 134 deletions
|
@ -1,5 +1,6 @@
|
|||
package biomesoplenty.client.textures;
|
||||
|
||||
import biomesoplenty.common.helpers.BOPReflectionHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.texture.TextureUtil;
|
||||
|
@ -23,29 +24,26 @@ public class TextureBiomeFinder extends TextureAtlasSprite
|
|||
Minecraft minecraft = Minecraft.getMinecraft();
|
||||
|
||||
NBTTagCompound playerData = minecraft.thePlayer != null ? minecraft.thePlayer.getEntityData() : null;
|
||||
NBTTagCompound biomePositionsCompound = null;
|
||||
NBTTagCompound biomeCompound = null;
|
||||
boolean foundBiome = playerData != null ? playerData.getBoolean("foundBiome") : false;
|
||||
NBTTagCompound biomePositionCompound = playerData != null ? playerData.getCompoundTag("biomePosition") : null;
|
||||
|
||||
if (playerData != null) biomePositionsCompound = playerData.getCompoundTag("biomePositions");
|
||||
if (biomePositionsCompound != null) biomeCompound = biomePositionsCompound.getCompoundTag("Lavender Fields");
|
||||
|
||||
if (minecraft.theWorld != null && minecraft.thePlayer != null && biomeCompound != null)
|
||||
if (minecraft.theWorld != null && minecraft.thePlayer != null && foundBiome && biomePositionCompound != null)
|
||||
{
|
||||
this.updateFinder(minecraft.theWorld, biomeCompound.getInteger("x"), biomeCompound.getInteger("z"), minecraft.thePlayer.posX, minecraft.thePlayer.posZ, (double)minecraft.thePlayer.rotationYaw, false, false);
|
||||
this.updateFinder(minecraft.theWorld, biomePositionCompound.getInteger("x"), biomePositionCompound.getInteger("z"), minecraft.thePlayer.posX, minecraft.thePlayer.posZ, (double)minecraft.thePlayer.rotationYaw, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.updateFinder((World)null, 0, 0, 0.0D, 0.0D, 0.0D, true, false);
|
||||
super.updateAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
public void updateFinder(World par1World, int biomePosX, int biomePosZ, double playerPosX, double playerPosZ, double par6, boolean par8, boolean par9)
|
||||
public void updateFinder(World world, int biomePosX, int biomePosZ, double playerPosX, double playerPosZ, double par6, boolean par8)
|
||||
{
|
||||
if (!this.framesTextureData.isEmpty())
|
||||
{
|
||||
double d3 = 0.0D;
|
||||
|
||||
if (par1World != null && !par8)
|
||||
if (world != null && !par8)
|
||||
{
|
||||
double d4 = (double)biomePosX - playerPosX;
|
||||
double d5 = (double)biomePosZ - playerPosZ;
|
||||
|
@ -53,51 +51,45 @@ public class TextureBiomeFinder extends TextureAtlasSprite
|
|||
d3 = -((par6 - 90.0D) * Math.PI / 180.0D - Math.atan2(d5, d4));
|
||||
}
|
||||
|
||||
if (par9)
|
||||
{
|
||||
this.currentAngle = d3;
|
||||
}
|
||||
else
|
||||
{
|
||||
double d6;
|
||||
double d6;
|
||||
|
||||
for (d6 = d3 - this.currentAngle; d6 < -Math.PI; d6 += (Math.PI * 2D))
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
while (d6 >= Math.PI)
|
||||
{
|
||||
d6 -= (Math.PI * 2D);
|
||||
}
|
||||
|
||||
if (d6 < -1.0D)
|
||||
{
|
||||
d6 = -1.0D;
|
||||
}
|
||||
|
||||
if (d6 > 1.0D)
|
||||
{
|
||||
d6 = 1.0D;
|
||||
}
|
||||
|
||||
this.angleDelta += d6 * 0.1D;
|
||||
this.angleDelta *= 0.8D;
|
||||
this.currentAngle += this.angleDelta;
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
for (i = (int)((this.currentAngle / (Math.PI * 2D) + 1.0D) * (double)this.framesTextureData.size()) % this.framesTextureData.size(); i < 0; i = (i + this.framesTextureData.size()) % this.framesTextureData.size())
|
||||
for (d6 = d3 - this.currentAngle; d6 < -Math.PI; d6 += (Math.PI * 2D))
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
if (i != this.frameCounter)
|
||||
while (d6 >= Math.PI)
|
||||
{
|
||||
this.frameCounter = i;
|
||||
TextureUtil.func_147955_a((int[][])this.framesTextureData.get(this.frameCounter), this.width, this.height, this.originX, this.originY, false, false);
|
||||
d6 -= (Math.PI * 2D);
|
||||
}
|
||||
|
||||
if (d6 < -1.0D)
|
||||
{
|
||||
d6 = -1.0D;
|
||||
}
|
||||
|
||||
if (d6 > 1.0D)
|
||||
{
|
||||
d6 = 1.0D;
|
||||
}
|
||||
|
||||
this.angleDelta += d6 * 0.1D;
|
||||
this.angleDelta *= 0.8D;
|
||||
this.currentAngle += this.angleDelta;
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
for (i = (int)((this.currentAngle / (Math.PI * 2D) + 1.0D) * (double)this.framesTextureData.size()) % this.framesTextureData.size(); i < 0; i = (i + this.framesTextureData.size()) % this.framesTextureData.size())
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
if (i != this.frameCounter)
|
||||
{
|
||||
this.frameCounter = i;
|
||||
//TODO: uploadTextureMipmap
|
||||
TextureUtil.func_147955_a((int[][])this.framesTextureData.get(this.frameCounter), this.width, this.height, this.originX, this.originY, false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,8 +24,7 @@ public class TemptEventHandler
|
|||
if (!(entity instanceof EntityLiving))
|
||||
return;
|
||||
|
||||
//TODO: FEATURE Remove Reflection
|
||||
EntityAITasks tasks = BOPReflectionHelper.getPrivateValue(EntityLiving.class, ((EntityLiving)entity), "tasks", "field_70714_bg");
|
||||
EntityAITasks tasks = ((EntityLiving)entity).tasks;
|
||||
|
||||
if (entity instanceof EntityChicken)
|
||||
{
|
||||
|
|
|
@ -16,11 +16,12 @@ public class ConnectionEventHandler
|
|||
{
|
||||
EntityPlayer player = (EntityPlayer)event.player;
|
||||
|
||||
NBTTagCompound biomeToFindCompound = player.getEntityData().getCompoundTag("biomePositions").getCompoundTag("Lavender Fields");
|
||||
NBTTagCompound biomeToFindCompound = player.getEntityData().getCompoundTag("biomePosition");
|
||||
boolean foundBiome = player.getEntityData().getBoolean("foundBiome");
|
||||
|
||||
if (biomeToFindCompound != null)
|
||||
{
|
||||
BiomesOPlenty.packetPipeline.sendTo(new PacketBiomePosition("Lavender Fields", biomeToFindCompound.getInteger("x"), biomeToFindCompound.getInteger("z")), (EntityPlayerMP)player);
|
||||
BiomesOPlenty.packetPipeline.sendTo(new PacketBiomePosition(biomeToFindCompound.getInteger("x"), biomeToFindCompound.getInteger("z"), foundBiome), (EntityPlayerMP)player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.item.EnumRarity;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemRecord;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.World;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
|
@ -85,4 +86,10 @@ public class ItemBOPRecord extends ItemRecord
|
|||
{
|
||||
return (ItemBOPRecord)records.get(par0Str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getRecordResource(String name)
|
||||
{
|
||||
return new ResourceLocation("biomesoplenty:records/" + name.replace("records.", "") + ".ogg");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,94 +30,100 @@ public class ItemBiomeFinder extends Item
|
|||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
if (!itemStack.hasTagCompound()) itemStack.setTagCompound(new NBTTagCompound());
|
||||
|
||||
itemStack.getTagCompound().setInteger("biomeIdToFind", BOPBiomeHelper.getBOPBiome("lavenderFields").biomeID);
|
||||
|
||||
int biomeIdToFind = itemStack.getTagCompound().getInteger("biomeIdToFind");
|
||||
|
||||
if (!world.isRemote && !player.getEntityData().getBoolean("foundBiome"))
|
||||
{
|
||||
if (!itemStack.hasTagCompound()) itemStack.setTagCompound(new NBTTagCompound());
|
||||
//TODO: getBiomeGenArray()
|
||||
BiomeGenBase biomeToFind = BiomeGenBase.func_150565_n()[biomeIdToFind];
|
||||
|
||||
BiomeGenBase biomeToFind = BOPBiomeHelper.getBOPBiome("lavenderFields");
|
||||
|
||||
int radius = 256;
|
||||
|
||||
WorldChunkManager chunkManager = world.getWorldChunkManager();
|
||||
|
||||
ChunkPosition finalFoundPosition1 = null;
|
||||
|
||||
int playerX = MathHelper.floor_double(player.posX);
|
||||
int playerZ = MathHelper.floor_double(player.posZ);
|
||||
|
||||
for (int x = 10; x <= 10; x++)
|
||||
if (biomeToFind != null)
|
||||
{
|
||||
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);
|
||||
int radius = 256;
|
||||
|
||||
if (foundPosition != null && world.getBiomeGenForCoords(foundPosition.field_151329_a, foundPosition.field_151328_c) == biomeToFind)
|
||||
WorldChunkManager chunkManager = world.getWorldChunkManager();
|
||||
|
||||
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++)
|
||||
{
|
||||
finalFoundPosition1 = foundPosition;
|
||||
break;
|
||||
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)
|
||||
{
|
||||
finalFoundPosition1 = foundPosition;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ChunkPosition finalFoundPosition2 = null;
|
||||
ChunkPosition finalFoundPosition2 = null;
|
||||
|
||||
for (int x = -10; x <= 10; x++)
|
||||
{
|
||||
for (int z = 10; z >= -10; z--)
|
||||
for (int x = -10; x <= 10; x++)
|
||||
{
|
||||
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)
|
||||
for (int z = 10; z >= -10; z--)
|
||||
{
|
||||
finalFoundPosition2 = foundPosition;
|
||||
break;
|
||||
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)
|
||||
{
|
||||
System.out.println(biomePosition.field_151329_a + " " + biomePosition.field_151328_c);
|
||||
|
||||
NBTTagCompound biomeCompound = new NBTTagCompound();
|
||||
|
||||
biomeCompound.setInteger("x", biomePosition.field_151329_a);
|
||||
biomeCompound.setInteger("z", biomePosition.field_151328_c);
|
||||
|
||||
if (!player.getEntityData().hasKey("biomePosition")) player.getEntityData().setTag("biomePosition", biomeCompound);
|
||||
|
||||
player.getEntityData().setBoolean("foundBiome", true);
|
||||
|
||||
BiomesOPlenty.packetPipeline.sendTo(new PacketBiomePosition(biomePosition.field_151329_a, biomePosition.field_151328_c, true), (EntityPlayerMP)player);
|
||||
}
|
||||
|
||||
System.out.println("Done looking");
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
System.out.println(biomePosition.field_151329_a + " " + biomePosition.field_151328_c);
|
||||
|
||||
NBTTagCompound biomeCompound = new NBTTagCompound();
|
||||
|
||||
biomeCompound.setInteger("x", biomePosition.field_151329_a);
|
||||
biomeCompound.setInteger("z", biomePosition.field_151328_c);
|
||||
|
||||
if (!player.getEntityData().hasKey("biomePositions")) player.getEntityData().setTag("biomePositions", new NBTTagCompound());
|
||||
|
||||
NBTTagCompound biomePositions = player.getEntityData().getCompoundTag("biomePositions");
|
||||
|
||||
if (!biomePositions.hasKey(biomeToFind.biomeName)) biomePositions.setTag(biomeToFind.biomeName, biomeCompound);
|
||||
|
||||
BiomesOPlenty.packetPipeline.sendTo(new PacketBiomePosition(biomeToFind.biomeName, biomePosition.field_151329_a, biomePosition.field_151328_c), (EntityPlayerMP)player);
|
||||
}
|
||||
|
||||
System.out.println("Done looking");
|
||||
}
|
||||
|
||||
return itemStack;
|
||||
|
|
|
@ -9,33 +9,33 @@ import biomesoplenty.common.network.AbstractPacket;
|
|||
|
||||
public class PacketBiomePosition extends AbstractPacket
|
||||
{
|
||||
private String biomeName;
|
||||
private int x;
|
||||
private int z;
|
||||
private boolean foundBiome;
|
||||
|
||||
public PacketBiomePosition() {}
|
||||
|
||||
public PacketBiomePosition(String biomeName, int x, int z)
|
||||
public PacketBiomePosition(int x, int z, boolean foundBiome)
|
||||
{
|
||||
this.biomeName = biomeName;
|
||||
this.x = x;
|
||||
this.z = z;
|
||||
this.foundBiome = foundBiome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encodeInto(ChannelHandlerContext ctx, ByteBuf buffer)
|
||||
{
|
||||
ByteBufUtils.writeUTF8String(buffer, biomeName);
|
||||
buffer.writeInt(x);
|
||||
buffer.writeInt(z);
|
||||
buffer.writeBoolean(foundBiome);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decodeInto(ChannelHandlerContext ctx, ByteBuf buffer)
|
||||
{
|
||||
biomeName = ByteBufUtils.readUTF8String(buffer);
|
||||
x = buffer.readInt();
|
||||
z = buffer.readInt();
|
||||
foundBiome = buffer.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -46,11 +46,9 @@ public class PacketBiomePosition extends AbstractPacket
|
|||
biomeCompound.setInteger("x", x);
|
||||
biomeCompound.setInteger("z", z);
|
||||
|
||||
if (!player.getEntityData().hasKey("biomePositions")) player.getEntityData().setTag("biomePositions", new NBTTagCompound());
|
||||
if (!player.getEntityData().hasKey("biomePosition")) player.getEntityData().setTag("biomePosition", biomeCompound);
|
||||
|
||||
NBTTagCompound biomePositions = player.getEntityData().getCompoundTag("biomePositions");
|
||||
|
||||
if (!biomePositions.hasKey(biomeName)) biomePositions.setTag(biomeName, biomeCompound);
|
||||
player.getEntityData().setBoolean("foundBiome", foundBiome);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue