tinycarts/src/main/java/mods/immibis/tinycarts/BlockTransparentBedrock.java

86 lines
2.2 KiB
Java

package mods.immibis.tinycarts;
import java.util.concurrent.atomic.AtomicInteger;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
public class BlockTransparentBedrock extends Block {
public BlockTransparentBedrock() {
super(Material.rock);
setBlockUnbreakable();
setResistance(6000000.0F);
setStepSound(soundTypeStone);
setBlockName("tinycarts.transparent_bedrock");
disableStats();
setBlockTextureName("bedrock");
}
@Override
public boolean getUseNeighborBrightness() {
return true;
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) {
final float border = 1/16f;
return AxisAlignedBB.getBoundingBox((double)par2 + border, (double)par3 + this.minY, (double)par4 + border, (double)par2 + 1-border, (double)par3 + 1-border, (double)par4 + 1-border);
}
@Override
public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) {
if(par5Entity instanceof EntityPlayerMP)
TinyCartsMod.removeFromCart(par5Entity, false);
}
// render in no passes = invisible
@Override
public boolean canRenderInPass(int pass) {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public void breakBlock(World par1World, int par2, int par3, int par4, Block par5, int par6) {
if(allowRemoval.get() > 0)
return;
allowPlacement.incrementAndGet();
try {
par1World.setBlock(par2, par3, par4, par5);
} finally {
allowPlacement.decrementAndGet();
}
}
@Override
public void onBlockAdded(World par1World, int par2, int par3, int par4) {
if(allowPlacement.get() > 0)
return;
allowRemoval.incrementAndGet();
try {
par1World.setBlockToAir(par2, par3, par4);
} finally {
allowRemoval.decrementAndGet();
}
}
static AtomicInteger allowPlacement = new AtomicInteger();
static AtomicInteger allowRemoval = new AtomicInteger();
}