package crazypants.enderio.machine.obelisk; import java.util.Random; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import crazypants.enderio.ModObject; import crazypants.enderio.machine.AbstractMachineBlock; import crazypants.enderio.machine.AbstractMachineEntity; public abstract class BlockObeliskAbstract<T extends AbstractMachineEntity> extends AbstractMachineBlock<T> { public static int defaultObeliskRenderId; protected BlockObeliskAbstract(ModObject mo, Class<T> teClass) { super(mo, teClass); setBlockBounds(0.11f, 0, 0.11f, 0.91f, 0.48f, 0.91f); } @Override protected String getMachineFrontIconKey(boolean active) { if(active) { return "enderio:blockAttractorSideOn"; } return "enderio:blockAttractorSide"; } @Override protected String getSideIconKey(boolean active) { return getMachineFrontIconKey(active); } @Override protected String getBackIconKey(boolean active) { return getMachineFrontIconKey(active); } @Override protected String getTopIconKey(boolean active) { return "enderio:blockSoulMachineTop"; } @Override protected String getBottomIconKey(boolean active) { return "enderio:obeliskBottom"; } @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean isOpaqueCube() { return false; } @Override public int getLightOpacity() { return 0; } @Override public int getRenderType() { return defaultObeliskRenderId; } @SideOnly(Side.CLIENT) @Override public void randomDisplayTick(World world, int x, int y, int z, Random rand) { if(isActive(world, x, y, z) && shouldDoWorkThisTick(world, x, y, z, 5)) { float startX = x + 1.0F; float startY = y + 0.85F; float startZ = z + 1.0F; for (int i = 0; i < 1; i++) { float xOffset = -0.2F - rand.nextFloat() * 0.6F; float yOffset = -0.1F + rand.nextFloat() * 0.2F; float zOffset = -0.2F - rand.nextFloat() * 0.6F; EntityFX fx = Minecraft.getMinecraft().renderGlobal.doSpawnParticle("spell", startX + xOffset, startY + yOffset, startZ + zOffset, 0.0D, 0.0D, 0.0D); if(fx != null) { fx.setRBGColorF(0.2f, 0.2f, 0.8f); fx.motionY *= 0.5f; } } } } }