package pneumaticCraft.common.entity; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import pneumaticCraft.client.render.RenderRing; public class EntityRing extends Entity{ public RenderRing ring, oldRing; private final Entity targetEntity; public final int color; public EntityRing(World par1World, double startX, double startY, double startZ, Entity targetEntity, int color){ super(par1World); posX = lastTickPosX = startX; posY = lastTickPosY = startY; posZ = lastTickPosZ = startZ; this.targetEntity = targetEntity; this.color = color; double dx = targetEntity.posX - posX; double dy = targetEntity.posY - posY; double dz = targetEntity.posZ - posZ; float f = MathHelper.sqrt_double(dx * dx + dz * dz); prevRotationYaw = rotationYaw = (float)(Math.atan2(dx, dz) * 180.0D / Math.PI); prevRotationPitch = rotationPitch = (float)(Math.atan2(dy, f) * 180.0D / Math.PI); renderDistanceWeight = 10.0D; ignoreFrustumCheck = true; } @Override public void onUpdate(){ double endX = targetEntity.posX; double endY = targetEntity.posY; double endZ = targetEntity.posZ; prevRotationYaw = rotationYaw; prevRotationPitch = rotationPitch; if(ring == null) { ring = new RenderRing(posX, posY, posZ, endX, endY, endZ, color); } else { if(oldRing == null) { oldRing = new RenderRing(ring.startX, ring.startY, ring.startZ, ring.endX, ring.endY, ring.endZ, color); } else { oldRing.endX = ring.endX; oldRing.endY = ring.endY; oldRing.endZ = ring.endZ; } ring.endX = endX; ring.endY = endY; ring.endZ = endZ; double dx = endX - posX; double dy = endY - posY; double dz = endZ - posZ; float f = MathHelper.sqrt_double(dx * dx + dz * dz); rotationYaw = (float)(Math.atan2(dx, dz) * 180.0D / Math.PI); rotationPitch = (float)(Math.atan2(dy, f) * 180.0D / Math.PI); oldRing.setProgress(ring.getProgress()); if(ring.incProgress(0.05F)) { setDead(); } } } @Override protected void entityInit(){} @Override protected void readEntityFromNBT(NBTTagCompound var1){} @Override protected void writeEntityToNBT(NBTTagCompound var1){} }