You can now place balloons on entities. Still a bit buggy, and they don't float or anything, but it works.
This commit is contained in:
parent
ca207eb502
commit
4395f3aa10
3 changed files with 29 additions and 12 deletions
|
@ -7,6 +7,7 @@ import mekanism.common.util.MekanismUtils;
|
|||
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
|
@ -36,8 +37,14 @@ public class RenderBalloon extends Render
|
|||
if(balloon.isLatchedToEntity())
|
||||
{
|
||||
x = (balloon.latchedEntity.lastTickPosX + (balloon.latchedEntity.posX - balloon.latchedEntity.lastTickPosX)*partialTick);
|
||||
y = (balloon.latchedEntity.lastTickPosY + (balloon.latchedEntity.posY - balloon.latchedEntity.lastTickPosY)*partialTick) + (balloon.latchedEntity.ySize/2);
|
||||
y = (balloon.latchedEntity.lastTickPosY + (balloon.latchedEntity.posY - balloon.latchedEntity.lastTickPosY)*partialTick);
|
||||
z = (balloon.latchedEntity.lastTickPosZ + (balloon.latchedEntity.posZ - balloon.latchedEntity.lastTickPosZ)*partialTick);
|
||||
|
||||
x -= RenderManager.renderPosX;
|
||||
y -= RenderManager.renderPosY;
|
||||
z -= RenderManager.renderPosZ;
|
||||
|
||||
y += 3;
|
||||
}
|
||||
|
||||
render(((EntityBalloon)entity).color, x, y, z);
|
||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft;
|
|||
import net.minecraft.client.particle.EntityFX;
|
||||
import net.minecraft.client.particle.EntityReddustFX;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -23,7 +24,7 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
public EnumColor color = EnumColor.DARK_BLUE;
|
||||
|
||||
public Coord4D latched;
|
||||
public Entity latchedEntity;
|
||||
public EntityLivingBase latchedEntity;
|
||||
|
||||
/* server-only */
|
||||
public boolean hasCachedEntity;
|
||||
|
@ -61,12 +62,12 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
color = c;
|
||||
}
|
||||
|
||||
public EntityBalloon(Entity entity, EnumColor c)
|
||||
public EntityBalloon(EntityLivingBase entity, EnumColor c)
|
||||
{
|
||||
this(entity.worldObj);
|
||||
|
||||
latchedEntity = entity;
|
||||
setPosition(latchedEntity.posX, (latchedEntity.ySize/2), latchedEntity.posZ);
|
||||
setPosition(latchedEntity.posX, latchedEntity.posY + 3F, latchedEntity.posZ);
|
||||
|
||||
prevPosX = posX;
|
||||
prevPosY = posY;
|
||||
|
@ -123,6 +124,14 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
else {
|
||||
latched = null;
|
||||
}
|
||||
|
||||
if(dataWatcher.getWatchableObjectByte(2) == 2)
|
||||
{
|
||||
latchedEntity = (EntityLivingBase)worldObj.getEntityByID(dataWatcher.getWatchableObjectInt(6));
|
||||
}
|
||||
else {
|
||||
latchedEntity = null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(hasCachedEntity)
|
||||
|
@ -151,7 +160,7 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
dataWatcher.updateObject(2, (byte)0); /* Is latched */
|
||||
}
|
||||
|
||||
if(latchedEntity != null && (latchedEntity.isDead || !worldObj.loadedEntityList.contains(latchedEntity)))
|
||||
if(latchedEntity != null && (latchedEntity.getHealth() <= 0 || latchedEntity.isDead || !worldObj.loadedEntityList.contains(latchedEntity)))
|
||||
{
|
||||
latchedEntity = null;
|
||||
|
||||
|
@ -185,10 +194,10 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
motionY = 0;
|
||||
motionZ = 0;
|
||||
}
|
||||
else if(latchedEntity != null)
|
||||
else if(latchedEntity != null && latchedEntity.getHealth() > 0)
|
||||
{
|
||||
posX = latchedEntity.posX;
|
||||
posY = latchedEntity.posY + (latchedEntity.ySize/2);
|
||||
posY = latchedEntity.posY + 3F;
|
||||
posZ = latchedEntity.posZ;
|
||||
}
|
||||
}
|
||||
|
@ -197,9 +206,9 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
{
|
||||
for(Object obj : worldObj.loadedEntityList)
|
||||
{
|
||||
if(obj instanceof Entity)
|
||||
if(obj instanceof EntityLivingBase)
|
||||
{
|
||||
Entity entity = (Entity)obj;
|
||||
EntityLivingBase entity = (EntityLivingBase)obj;
|
||||
|
||||
if(entity.getUniqueID().equals(cachedEntityUUID))
|
||||
{
|
||||
|
@ -336,7 +345,7 @@ public class EntityBalloon extends Entity implements IEntityAdditionalSpawnData
|
|||
}
|
||||
else if(type == 2)
|
||||
{
|
||||
latchedEntity = worldObj.getEntityByID(data.readInt());
|
||||
latchedEntity = (EntityLivingBase)worldObj.getEntityByID(data.readInt());
|
||||
}
|
||||
else {
|
||||
latched = null;
|
||||
|
|
|
@ -121,7 +121,7 @@ public class ItemBalloon extends ItemMekanism
|
|||
@Override
|
||||
public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
|
||||
{
|
||||
/*if(player.isSneaking())
|
||||
if(player.isSneaking())
|
||||
{
|
||||
if(!player.worldObj.isRemote)
|
||||
{
|
||||
|
@ -136,12 +136,13 @@ public class ItemBalloon extends ItemMekanism
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
player.worldObj.spawnEntityInWorld(new EntityBalloon(entity, getColor(stack)));
|
||||
stack.stackSize--;
|
||||
}
|
||||
|
||||
return true;
|
||||
}*/
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue