2025-02-16 23:16:26 +01:00

103 lines
2.7 KiB
Java

package com.hbm.blocks.generic;
import java.util.Random;
import api.hbm.fluid.IFluidStandardSender;
import com.hbm.blocks.IBlockMultiPass;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.RefStrings;
import com.hbm.render.block.RenderBlockMultipass;
import com.hbm.tileentity.TileEntityLoadedBase;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockFissure extends BlockContainer implements IBlockMultiPass {
private IIcon overlay;
public BlockFissure() {
super(Material.rock);
this.setBlockTextureName("bedrock");
this.setBlockUnbreakable();
this.setResistance(1_000_000);
this.setTickRandomly(true);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
this.blockIcon = reg.registerIcon("bedrock");
this.overlay = reg.registerIcon(RefStrings.MODID + ":molten_overlay");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if(RenderBlockMultipass.currentPass == 0)
return Blocks.bedrock.getIcon(0, 0);
return this.overlay;
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
if(world.getBlock(x, y + 1, z).isReplaceable(world, x, y + 1, z)) world.setBlock(x, y + 1, z, ModBlocks.volcanic_lava_block);
}
@Override
public boolean shouldRenderItemMulti() {
return true;
}
@Override
public int getPasses() {
return 2;
}
@Override
public int getRenderType(){
return IBlockMultiPass.getRenderType();
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityFissure();
}
public static class TileEntityFissure extends TileEntityLoadedBase implements IFluidStandardSender {
public FluidTank lava = new FluidTank(Fluids.LAVA, 1_000);
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
lava.setFill(1_000);
this.sendFluid(lava, worldObj, xCoord, yCoord + 1, zCoord, ForgeDirection.UP);
}
}
@Override
public boolean canConnect(FluidType type, ForgeDirection dir) {
return dir == ForgeDirection.DOWN && type == Fluids.LAVA;
}
@Override public FluidTank[] getAllTanks() { return new FluidTank[] {lava}; }
@Override public FluidTank[] getSendingTanks() { return new FluidTank[] {lava}; }
}
}