Fixed Balloons screwing up (again)
This commit is contained in:
parent
4b1adf76bc
commit
30055fc3ed
2 changed files with 51 additions and 5 deletions
|
@ -276,6 +276,16 @@ public class Coord4D
|
||||||
return world.getChunkFromBlockCoords(xCoord >> 4, zCoord >> 4);
|
return world.getChunkFromBlockCoords(xCoord >> 4, zCoord >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not the block this Coord4D represents is an air block.
|
||||||
|
* @param world - world this Coord4D is in
|
||||||
|
* @return if this Coord4D is an air block
|
||||||
|
*/
|
||||||
|
public boolean isAirBlock(IBlockAccess world)
|
||||||
|
{
|
||||||
|
return world.isAirBlock(xCoord, yCoord, zCoord);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Coord4D clone()
|
public Coord4D clone()
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,7 @@ import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
|
||||||
public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
||||||
{
|
{
|
||||||
public EnumColor color = EnumColor.DARK_BLUE;
|
public EnumColor color = EnumColor.DARK_BLUE;
|
||||||
|
|
||||||
public Coord4D latched;
|
public Coord4D latched;
|
||||||
|
|
||||||
public EntityBalloon(World world)
|
public EntityBalloon(World world)
|
||||||
|
@ -31,6 +32,11 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
||||||
yOffset = height / 2.0F;
|
yOffset = height / 2.0F;
|
||||||
setSize(0.25F, 0.25F);
|
setSize(0.25F, 0.25F);
|
||||||
motionY = 0.04;
|
motionY = 0.04;
|
||||||
|
|
||||||
|
dataWatcher.addObject(2, new Byte((byte)0));
|
||||||
|
dataWatcher.addObject(3, new Integer(0)); /* Latched X */
|
||||||
|
dataWatcher.addObject(4, new Integer(0)); /* Latched Y */
|
||||||
|
dataWatcher.addObject(5, new Integer(0)); /* Latched Z */
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityBalloon(World world, double x, double y, double z, EnumColor c)
|
public EntityBalloon(World world, double x, double y, double z, EnumColor c)
|
||||||
|
@ -58,6 +64,11 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
||||||
prevPosZ = posZ;
|
prevPosZ = posZ;
|
||||||
|
|
||||||
color = c;
|
color = c;
|
||||||
|
|
||||||
|
dataWatcher.updateObject(2, new Byte(latched != null ? (byte)1 : (byte)0)); /* Is latched */
|
||||||
|
dataWatcher.updateObject(3, new Integer(latched != null ? latched.xCoord : 0)); /* Latched X */
|
||||||
|
dataWatcher.updateObject(4, new Integer(latched != null ? latched.yCoord : 0)); /* Latched Y */
|
||||||
|
dataWatcher.updateObject(5, new Integer(latched != null ? latched.zCoord : 0)); /* Latched Z */
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -73,9 +84,34 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(latched != null && (latched.exists(worldObj) && latched.getBlockId(worldObj) == 0))
|
if(worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if(dataWatcher.getWatchableObjectByte(2) == 1)
|
||||||
|
{
|
||||||
|
latched = new Coord4D(dataWatcher.getWatchableObjectInt(3), dataWatcher.getWatchableObjectInt(4), dataWatcher.getWatchableObjectInt(5), worldObj.provider.dimensionId);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
latched = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(ticksExisted == 1)
|
||||||
|
{
|
||||||
|
dataWatcher.updateObject(2, new Byte(latched != null ? (byte)1 : (byte)0)); /* Is latched */
|
||||||
|
dataWatcher.updateObject(3, new Integer(latched != null ? latched.xCoord : 0)); /* Latched X */
|
||||||
|
dataWatcher.updateObject(4, new Integer(latched != null ? latched.yCoord : 0)); /* Latched Y */
|
||||||
|
dataWatcher.updateObject(5, new Integer(latched != null ? latched.zCoord : 0)); /* Latched Z */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if(latched != null && (latched.exists(worldObj) && latched.isAirBlock(worldObj)))
|
||||||
{
|
{
|
||||||
latched = null;
|
latched = null;
|
||||||
|
|
||||||
|
dataWatcher.updateObject(2, (byte)0); /* Is latched */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(latched == null)
|
if(latched == null)
|
||||||
|
@ -155,7 +191,7 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
||||||
|
|
||||||
if(nbtTags.hasKey("latched"))
|
if(nbtTags.hasKey("latched"))
|
||||||
{
|
{
|
||||||
latched = Coord4D.read(nbtTags);
|
latched = Coord4D.read(nbtTags.getCompoundTag("latched"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +209,7 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
||||||
|
|
||||||
if(latched != null)
|
if(latched != null)
|
||||||
{
|
{
|
||||||
latched.write(nbtTags);
|
nbtTags.setCompoundTag("latched", latched.write(new NBTTagCompound()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue