2014-06-04 21:44:48 -08:00
|
|
|
package tconstruct.world.blocks;
|
2013-11-02 22:24:47 -07:00
|
|
|
|
|
|
|
|
import java.util.List;
|
2023-01-28 18:04:28 -08:00
|
|
|
|
2014-01-16 01:36:18 -05:00
|
|
|
import mantle.world.WorldHelper;
|
2023-01-28 18:04:28 -08:00
|
|
|
|
2013-12-31 11:26:08 -05:00
|
|
|
import net.minecraft.block.Block;
|
2013-11-02 22:24:47 -07:00
|
|
|
import net.minecraft.block.material.Material;
|
|
|
|
|
import net.minecraft.creativetab.CreativeTabs;
|
2014-09-09 18:30:15 +10:00
|
|
|
import net.minecraft.entity.*;
|
2013-11-02 22:24:47 -07:00
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
|
import net.minecraft.entity.projectile.EntityArrow;
|
2014-01-01 08:54:06 -05:00
|
|
|
import net.minecraft.init.Items;
|
2014-09-09 18:30:15 +10:00
|
|
|
import net.minecraft.item.*;
|
2013-12-31 11:26:08 -05:00
|
|
|
import net.minecraft.util.IIcon;
|
2014-09-09 18:30:15 +10:00
|
|
|
import net.minecraft.world.*;
|
2023-01-28 18:04:28 -08:00
|
|
|
|
2014-06-04 21:44:48 -08:00
|
|
|
import tconstruct.blocks.TConstructBlock;
|
|
|
|
|
import tconstruct.mechworks.entity.item.ExplosivePrimed;
|
2014-09-09 18:30:15 +10:00
|
|
|
import cpw.mods.fml.relauncher.*;
|
2013-11-02 22:24:47 -07:00
|
|
|
|
2022-09-22 19:51:23 +01:00
|
|
|
public class SlimeExplosive extends TConstructBlock {
|
2013-11-02 22:24:47 -07:00
|
|
|
|
2022-09-22 19:51:23 +01:00
|
|
|
public SlimeExplosive() {
|
2014-02-05 08:28:53 -05:00
|
|
|
super(Material.tnt, 0f, getTextureNames());
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
|
2022-09-22 19:51:23 +01:00
|
|
|
static String[] getTextureNames() {
|
2013-11-02 22:24:47 -07:00
|
|
|
String[] names = new String[6];
|
2022-09-22 19:51:23 +01:00
|
|
|
String[] types = new String[] { "green", "blue" };
|
|
|
|
|
for (int i = 0; i < 2; i++) {
|
2013-11-02 22:24:47 -07:00
|
|
|
names[i * 3 + 0] = "sdx_bottom_" + types[i];
|
|
|
|
|
names[i * 3 + 1] = "sdx_side_" + types[i];
|
|
|
|
|
names[i * 3 + 2] = "sdx_top_" + types[i];
|
|
|
|
|
}
|
|
|
|
|
return names;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@SideOnly(Side.CLIENT)
|
2022-09-22 19:51:23 +01:00
|
|
|
public IIcon getIcon(int side, int meta) {
|
2013-11-02 22:24:47 -07:00
|
|
|
return icons[(meta / 2) * 3 + getSideTextureIndex(side)];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public void getSubBlocks(Item b, CreativeTabs tab, List list) {
|
|
|
|
|
for (int iter = 0; iter < 2; iter++) {
|
2013-12-31 11:26:08 -05:00
|
|
|
list.add(new ItemStack(b, 1, iter * 2));
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public void onBlockAdded(World par1World, int par2, int par3, int par4) {
|
2014-02-05 08:28:53 -05:00
|
|
|
super.onBlockAdded(par1World, par2, par3, par4);
|
2013-11-02 22:24:47 -07:00
|
|
|
|
2022-09-22 19:51:23 +01:00
|
|
|
if (par1World.isBlockIndirectlyGettingPowered(par2, par3, par4)) {
|
2014-02-05 08:28:53 -05:00
|
|
|
this.onBlockDestroyedByPlayer(par1World, par2, par3, par4, 1);
|
2014-01-16 01:36:18 -05:00
|
|
|
WorldHelper.setBlockToAir(par1World, par2, par3, par4);
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, Block par5Block) {
|
|
|
|
|
if (par1World.isBlockIndirectlyGettingPowered(par2, par3, par4)) {
|
2014-02-05 08:28:53 -05:00
|
|
|
this.onBlockDestroyedByPlayer(par1World, par2, par3, par4, 1);
|
2014-01-16 01:36:18 -05:00
|
|
|
WorldHelper.setBlockToAir(par1World, par2, par3, par4);
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public void onBlockDestroyedByExplosion(World par1World, int par2, int par3, int par4, Explosion par5Explosion) {
|
|
|
|
|
if (!par1World.isRemote) {
|
|
|
|
|
ExplosivePrimed entitytntprimed = new ExplosivePrimed(
|
|
|
|
|
par1World,
|
2023-01-25 23:57:49 +01:00
|
|
|
(float) par2 + 0.5F,
|
|
|
|
|
(float) par3 + 0.5F,
|
|
|
|
|
(float) par4 + 0.5F,
|
2022-09-22 19:51:23 +01:00
|
|
|
par5Explosion.getExplosivePlacedBy());
|
2013-11-02 22:24:47 -07:00
|
|
|
entitytntprimed.fuse = par1World.rand.nextInt(entitytntprimed.fuse / 4) + entitytntprimed.fuse / 8;
|
|
|
|
|
par1World.spawnEntityInWorld(entitytntprimed);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public void onBlockDestroyedByPlayer(World par1World, int par2, int par3, int par4, int par5) {
|
2023-01-25 23:57:49 +01:00
|
|
|
this.primeTnt(par1World, par2, par3, par4, par5, null);
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
|
2022-09-22 19:51:23 +01:00
|
|
|
public void primeTnt(World par1World, int par2, int par3, int par4, int par5,
|
|
|
|
|
EntityLivingBase par6EntityLivingBase) {
|
|
|
|
|
if (!par1World.isRemote) {
|
|
|
|
|
if ((par5 % 2) == 1) {
|
|
|
|
|
ExplosivePrimed entitytntprimed = new ExplosivePrimed(
|
2023-01-26 00:55:34 +01:00
|
|
|
par1World,
|
|
|
|
|
(float) par2 + 0.5F,
|
|
|
|
|
(float) par3 + 0.5F,
|
|
|
|
|
(float) par4 + 0.5F,
|
|
|
|
|
par6EntityLivingBase);
|
2013-11-02 22:24:47 -07:00
|
|
|
par1World.spawnEntityInWorld(entitytntprimed);
|
|
|
|
|
par1World.playSoundAtEntity(entitytntprimed, "random.fuse", 1.0F, 1.0F);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer,
|
|
|
|
|
int par6, float par7, float par8, float par9) {
|
|
|
|
|
if (par5EntityPlayer.getCurrentEquippedItem() != null
|
|
|
|
|
&& par5EntityPlayer.getCurrentEquippedItem().getItem() == Items.flint_and_steel) {
|
2013-11-02 22:24:47 -07:00
|
|
|
this.primeTnt(par1World, par2, par3, par4, 1, par5EntityPlayer);
|
2014-01-16 01:36:18 -05:00
|
|
|
WorldHelper.setBlockToAir(par1World, par2, par3, par4);
|
2013-11-02 22:24:47 -07:00
|
|
|
par5EntityPlayer.getCurrentEquippedItem().damageItem(1, par5EntityPlayer);
|
|
|
|
|
return true;
|
2022-09-22 19:51:23 +01:00
|
|
|
} else {
|
2014-02-05 08:28:53 -05:00
|
|
|
return super.onBlockActivated(par1World, par2, par3, par4, par5EntityPlayer, par6, par7, par8, par9);
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) {
|
|
|
|
|
if (par5Entity instanceof EntityArrow && !par1World.isRemote) {
|
2013-11-02 22:24:47 -07:00
|
|
|
EntityArrow entityarrow = (EntityArrow) par5Entity;
|
|
|
|
|
|
2022-09-22 19:51:23 +01:00
|
|
|
if (entityarrow.isBurning()) {
|
|
|
|
|
this.primeTnt(
|
|
|
|
|
par1World,
|
|
|
|
|
par2,
|
|
|
|
|
par3,
|
|
|
|
|
par4,
|
|
|
|
|
1,
|
|
|
|
|
entityarrow.shootingEntity instanceof EntityLivingBase
|
|
|
|
|
? (EntityLivingBase) entityarrow.shootingEntity
|
|
|
|
|
: null);
|
2014-02-05 09:11:06 -05:00
|
|
|
WorldHelper.setBlockToAir(par1World, par2, par3, par4);
|
2013-11-02 22:24:47 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-09-22 19:51:23 +01:00
|
|
|
public boolean canDropFromExplosion(Explosion par1Explosion) {
|
2013-11-02 22:24:47 -07:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|