/** * Copyright (c) Lambda Innovation, 2013-2016 * This file is part of the AcademyCraft mod. * https://github.com/LambdaInnovation/AcademyCraft * Licensed under GPLv3, see project root for more information. */ package cn.academy.vanilla.meltdowner.entity; import cn.academy.core.client.ACRenderingHelper; import cn.academy.core.client.render.ray.RendererRayComposite; import cn.academy.core.entity.EntityRayBase; import cn.academy.vanilla.meltdowner.client.render.MdParticleFactory; import cn.lambdalib.annoreg.core.Registrant; import cn.lambdalib.annoreg.mc.RegEntity; import cn.lambdalib.particle.Particle; import cn.lambdalib.util.generic.RandUtils; import cn.lambdalib.util.generic.VecUtils; import cn.lambdalib.util.helper.Motion3D; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.Vec3; /** * @author WeAthFolD */ @SideOnly(Side.CLIENT) @Registrant @RegEntity(clientOnly = true) @RegEntity.HasRender public class EntityMineRayBasic extends EntityRayBase { @RegEntity.Render public static BasicMineRayRender renderer; public EntityMineRayBasic(EntityPlayer _player) { super(_player); this.blendInTime = 200; this.blendOutTime = 400; this.life = 233333; this.length = 15.0; } @Override public void onUpdate() { super.onUpdate(); EntityPlayer player = getPlayer(); Vec3 end = new Motion3D(player, true).move(15).getPosVec(); this.setFromTo(player.posX, player.posY + (ACRenderingHelper.isThePlayer(player) ? 0 : 1.6), player.posZ, end.xCoord, end.yCoord, end.zCoord); if(RandUtils.nextDouble() < 0.5) { Particle p = MdParticleFactory.INSTANCE.next(worldObj, new Motion3D(this, true).move(RandUtils.ranged(0, 10)).getPosVec(), VecUtils.vec(RandUtils.ranged(-.03, .03), RandUtils.ranged(-.03, .03), RandUtils.ranged(-.03, .03))); worldObj.spawnEntityInWorld(p); } } public static class BasicMineRayRender extends RendererRayComposite { public BasicMineRayRender() { super("mdray_small"); this.cylinderIn.width = 0.03; this.cylinderIn.color.setColor4i(216, 248, 216, 230); this.cylinderOut.width = 0.045; this.cylinderOut.color.setColor4i(106, 242, 106, 50); this.glow.width = 0.3; this.glow.color.a = 0.5; } } }