mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
56 lines
1.8 KiB
Java
56 lines
1.8 KiB
Java
package com.hbm.blocks.bomb;
|
|
|
|
import com.hbm.blocks.generic.BlockFlammable;
|
|
import com.hbm.entity.item.EntityTNTPrimedBase;
|
|
|
|
import api.hbm.block.IFuckingExplode;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.world.Explosion;
|
|
import net.minecraft.world.World;
|
|
|
|
public abstract class BlockDetonatable extends BlockFlammable implements IFuckingExplode {
|
|
|
|
protected int popFuse; // A shorter fuse for when this explosive is dinked by another
|
|
protected boolean detonateOnCollision;
|
|
protected boolean detonateOnShot;
|
|
|
|
public BlockDetonatable(Material mat, int en, int flam, int popFuse, boolean detonateOnCollision, boolean detonateOnShot) {
|
|
super(mat, en, flam);
|
|
this.popFuse = popFuse;
|
|
this.detonateOnCollision = detonateOnCollision;
|
|
this.detonateOnShot = detonateOnShot;
|
|
}
|
|
|
|
@Override
|
|
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) {
|
|
if(!world.isRemote) {
|
|
EntityTNTPrimedBase tntPrimed = new EntityTNTPrimedBase(world, x + 0.5D, y + 0.5D, z + 0.5D, explosion != null ? explosion.getExplosivePlacedBy() : null, this);
|
|
tntPrimed.fuse = popFuse <= 0 ? 0 : world.rand.nextInt(popFuse) + popFuse / 2;
|
|
tntPrimed.detonateOnCollision = detonateOnCollision;
|
|
world.spawnEntityInWorld(tntPrimed);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean canDropFromExplosion(Explosion explosion) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
|
if(!world.isRemote && shouldIgnite(world, x, y, z)) {
|
|
world.setBlockToAir(x, y, z);
|
|
onBlockDestroyedByExplosion(world, x, y, z, null);
|
|
}
|
|
}
|
|
|
|
public void onShot(World world, int x, int y, int z) {
|
|
if (!detonateOnShot) return;
|
|
|
|
world.setBlockToAir(x, y, z);
|
|
explodeEntity(world, x, y, z, null); // insta-explod
|
|
}
|
|
|
|
}
|