package crazypants.enderio.machine.generator.zombie; import java.util.List; import java.util.Random; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import crazypants.enderio.EnderIO; import crazypants.enderio.GuiHandler; import crazypants.enderio.ModObject; import crazypants.enderio.config.Config; import crazypants.enderio.machine.AbstractMachineBlock; public class BlockZombieGenerator extends AbstractMachineBlock<TileZombieGenerator> { public static BlockZombieGenerator create() { BlockZombieGenerator gen = new BlockZombieGenerator(); gen.init(); return gen; } protected BlockZombieGenerator() { super(ModObject.blockZombieGenerator, TileZombieGenerator.class, Material.anvil); } @Override public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { return true; } @Override public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { return false; } @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerZombieGenerator(player.inventory, (TileZombieGenerator) world.getTileEntity(x, y, z)); } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GuiZombieGenerator(player.inventory, (TileZombieGenerator) world.getTileEntity(x, y, z)); } @Override protected int getGuiId() { return GuiHandler.GUI_ID_ZOMBIE_GEN; } @Override public int getLightOpacity() { return 0; } @Override public int getRenderType() { return -1; } @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean isOpaqueCube() { return false; } @Override protected String getMachineFrontIconKey(boolean active) { if(active) { return "enderio:stirlingGenFrontOn"; } return "enderio:stirlingGenFrontOff"; } @SideOnly(Side.CLIENT) @Override public void randomDisplayTick(World world, int x, int y, int z, Random rand) { if(rand.nextInt(3) == 0) { TileEntity te = world.getTileEntity(x, y, z); if(te instanceof TileZombieGenerator && ((TileZombieGenerator) te).isActive()) { for (int i = 0; i < 2; i++) { float xOffset = 0.5f + (world.rand.nextFloat() * 2.0F - 1.0F) * 0.3f; float yOffset = 0.1f; float zOffset = 0.5f + (world.rand.nextFloat() * 2.0F - 1.0F) * 0.3f; EntityFX fx = new BubbleFX(world, x + xOffset, y + yOffset, z + zOffset, 0, 0.5, 0); Minecraft.getMinecraft().effectRenderer.addEffect(fx); } if(Config.machineSoundsEnabled) { float volume = (Config.machineSoundVolume * 0.045f); world.playSound(x + 0.5, y + 1, z + 0.5, EnderIO.DOMAIN + ":generator.zombie.bubble", volume, world.rand.nextFloat() * 0.75f, false); } } } } @Override public void getWailaInfo(List<String> tooltip, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); if(te != null && te instanceof TileZombieGenerator) { tooltip.add(((TileZombieGenerator) te).getFluidStored(ForgeDirection.UNKNOWN) + " " + EnderIO.lang.localize("fluid.millibucket.abr")); } } }