private void doBolt(EntityBallLightning other) { Vec3 vec = ReikaVectorHelper.getVec2Pt(posX, posY, posZ, other.posX, other.posY, other.posZ); // EntityGluon g = new EntityGluon(this, other); // worldObj.spawnEntityInWorld(g); targetColor = other.color; ReikaPacketHelper.sendDataPacket( ChromatiCraft.packetChannel, ChromaPackets.GLUON.ordinal(), new DimensionTarget(worldObj), this.getEntityId(), other.getEntityId()); double len = vec.lengthVector(); for (double i = 0; i < len; i += 0.0625) { double dx = posX - i * vec.xCoord / len; double dy = posY - i * vec.yCoord / len; double dz = posZ - i * vec.zCoord / len; if (worldObj.isRemote) this.gluonParticles(other, dx, dy, dz, (float) (i / len)); if (ChromaOptions.HOSTILEFOREST.getState()) { AxisAlignedBB box = AxisAlignedBB.getBoundingBox(dx, dy, dz, dx, dy, dz).expand(0.5, 0.5, 0.5); List<EntityLivingBase> elb = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, box); for (EntityLivingBase e : elb) { e.attackEntityFrom(DamageSource.generic, isPylonSpawn ? 4 : 1); } } } }
@Override public AxisAlignedBB getCollisionBox(Entity entity) { if (entity instanceof EntityLivingBase && !(entity instanceof EntityBallLightning) && !worldObj.isRemote) { boolean flag = (entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode); if (!flag) { if (ChromaOptions.HOSTILEFOREST.getState()) { entity.attackEntityFrom(DamageSource.generic, 5); } if (entity instanceof EntityPlayer) ProgressStage.BALLLIGHTNING.stepPlayerTo((EntityPlayer) entity); this.die(); } } return null; // AxisAlignedBB.getBoundingBox(posX, posY, posZ, posX, posY, posZ).expand(3, 3, // 3); }