mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
d3e36fafe4
@ -484,6 +484,8 @@ public class ModBlocks {
|
||||
public static Block crashed_balefire;
|
||||
public static Block rejuvinator;
|
||||
public static Block fireworks;
|
||||
|
||||
public static Block charge_dynamite;
|
||||
|
||||
public static Block mine_ap;
|
||||
public static Block mine_he;
|
||||
@ -1685,8 +1687,8 @@ public class ModBlocks {
|
||||
lox_barrel = new RedBarrel(Material.iron).setBlockName("lox_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_lox");
|
||||
taint_barrel = new RedBarrel(Material.iron).setBlockName("taint_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_taint");
|
||||
crashed_balefire = new BlockCrashedBomb(Material.iron).setBlockName("crashed_bomb").setCreativeTab(MainRegistry.nukeTab).setBlockUnbreakable().setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":crashed_balefire");
|
||||
rejuvinator = new BombRejuvinator(Material.iron).setBlockName("rejuvinator").setCreativeTab(MainRegistry.nukeTab).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":inserter_side");
|
||||
fireworks = new BlockFireworks(Material.iron).setBlockName("fireworks").setCreativeTab(MainRegistry.nukeTab).setResistance(5.0F);
|
||||
charge_dynamite = new BlockChargeDynamite().setBlockName("charge_dynamite").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F);
|
||||
mine_ap = new Landmine(Material.iron).setBlockName("mine_ap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_ap");
|
||||
mine_he = new Landmine(Material.iron).setBlockName("mine_he").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_he");
|
||||
mine_shrap = new Landmine(Material.iron).setBlockName("mine_shrap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_shrap");
|
||||
|
||||
54
src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java
Normal file
54
src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java
Normal file
@ -0,0 +1,54 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import static net.minecraftforge.common.util.ForgeDirection.DOWN;
|
||||
import static net.minecraftforge.common.util.ForgeDirection.EAST;
|
||||
import static net.minecraftforge.common.util.ForgeDirection.NORTH;
|
||||
import static net.minecraftforge.common.util.ForgeDirection.SOUTH;
|
||||
import static net.minecraftforge.common.util.ForgeDirection.UP;
|
||||
import static net.minecraftforge.common.util.ForgeDirection.WEST;
|
||||
|
||||
import com.hbm.blocks.BlockBase;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public abstract class BlockChargeBase extends BlockBase implements IBomb {
|
||||
|
||||
public BlockChargeBase() {
|
||||
super(Material.tnt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) {
|
||||
return side;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(side);
|
||||
return (dir == DOWN && world.isSideSolid(x, y + 1, z, DOWN)) ||
|
||||
(dir == UP && world.isSideSolid(x, y - 1, z, UP)) ||
|
||||
(dir == NORTH && world.isSideSolid(x, y, z + 1, NORTH)) ||
|
||||
(dir == SOUTH && world.isSideSolid(x, y, z - 1, SOUTH)) ||
|
||||
(dir == WEST && world.isSideSolid(x + 1, y, z, WEST)) ||
|
||||
(dir == EAST && world.isSideSolid(x - 1, y, z, EAST));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
11
src/main/java/com/hbm/blocks/bomb/BlockChargeDynamite.java
Normal file
11
src/main/java/com/hbm/blocks/bomb/BlockChargeDynamite.java
Normal file
@ -0,0 +1,11 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockChargeDynamite extends BlockChargeBase {
|
||||
|
||||
@Override
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,6 @@ import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.logic.EntityBalefire;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.bomb.TileEntityCrashedBomb;
|
||||
@ -35,56 +34,51 @@ public class BlockCrashedBomb extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityCrashedBomb();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.crashed_balefire);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.crashed_balefire);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) {
|
||||
|
||||
|
||||
if(world.isRemote)
|
||||
return true;
|
||||
|
||||
if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
|
||||
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
|
||||
|
||||
world.func_147480_a(x, y, z, false);
|
||||
|
||||
@ -97,25 +91,27 @@ public class BlockCrashedBomb extends BlockContainer implements IBomb {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
|
||||
if (!world.isRemote) {
|
||||
|
||||
world.setBlockToAir(x, y, z);
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
world.setBlockToAir(x, y, z);
|
||||
EntityBalefire bf = new EntityBalefire(world).mute();
|
||||
bf.posX = x;
|
||||
bf.posY = y;
|
||||
bf.posZ = z;
|
||||
bf.destructionRange = (int) (BombConfig.fatmanRadius * 1.25);
|
||||
world.spawnEntityInWorld(bf);
|
||||
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
data.setBoolean("balefire", true);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK4;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.explosion.ExplosionNT;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
@ -15,7 +11,6 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.MathHelper;
|
||||
@ -86,10 +81,13 @@ public class BlockSemtex extends Block implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 50).overrideResolution(64).explode();
|
||||
ExplosionLarge.spawnParticles(world, x, y, z, ExplosionLarge.cloudFunction(15));
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,27 +8,30 @@ import net.minecraft.block.material.Material;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BombFlameWar extends Block implements IBomb {
|
||||
|
||||
public BombFlameWar(Material p_i45394_1_) {
|
||||
|
||||
public BombFlameWar(Material p_i45394_1_) {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
ExplosionChaos.explode(p_149695_1_, x, y, z, 15);
|
||||
ExplosionChaos.spawnExplosion(p_149695_1_, x, y, z, 75);
|
||||
ExplosionChaos.flameDeath(p_149695_1_, x, y, z, 100);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
ExplosionChaos.explode(world, x, y, z, 15);
|
||||
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
|
||||
ExplosionChaos.flameDeath(world, x, y, z, 100);
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
||||
|
||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
ExplosionChaos.explode(world, x, y, z, 15);
|
||||
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
|
||||
ExplosionChaos.flameDeath(world, x, y, z, 100);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
ExplosionChaos.explode(world, x, y, z, 15);
|
||||
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
|
||||
ExplosionChaos.flameDeath(world, x, y, z, 100);
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,16 +17,16 @@ import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BombFloat extends Block implements IBomb {
|
||||
|
||||
public World worldObj;
|
||||
|
||||
|
||||
public World worldObj;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon iconTop;
|
||||
|
||||
public BombFloat(Material p_i45394_1_) {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
@ -47,34 +47,34 @@ public class BombFloat extends Block implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
this.worldObj = p_149695_1_;
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
explode(p_149695_1_, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
world.playSoundEffect(x, y, z, "hbm:weapon.sparkShoot", 5.0f, world.rand.nextFloat() * 0.2F + 0.9F);
|
||||
|
||||
if(!world.isRemote) {
|
||||
world.setBlock(x, y, z, Blocks.air);
|
||||
if(this == ModBlocks.float_bomb) {
|
||||
ExplosionChaos.floater(world, x, y, z, 15, 50);
|
||||
ExplosionChaos.move(world, x, y, z, 15, 0, 50, 0);
|
||||
}
|
||||
if(this == ModBlocks.emp_bomb) {
|
||||
ExplosionNukeGeneric.empBlast(world, x, y, z, 50);
|
||||
EntityEMPBlast wave = new EntityEMPBlast(world, 50);
|
||||
wave.posX = x + 0.5;
|
||||
wave.posY = y + 0.5;
|
||||
wave.posZ = z + 0.5;
|
||||
world.spawnEntityInWorld(wave);
|
||||
}
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
this.worldObj = p_149695_1_;
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
explode(p_149695_1_, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
world.playSoundEffect(x, y, z, "hbm:weapon.sparkShoot", 5.0f, world.rand.nextFloat() * 0.2F + 0.9F);
|
||||
|
||||
if(!world.isRemote) {
|
||||
world.setBlock(x, y, z, Blocks.air);
|
||||
if(this == ModBlocks.float_bomb) {
|
||||
ExplosionChaos.floater(world, x, y, z, 15, 50);
|
||||
ExplosionChaos.move(world, x, y, z, 15, 0, 50, 0);
|
||||
}
|
||||
if(this == ModBlocks.emp_bomb) {
|
||||
ExplosionNukeGeneric.empBlast(world, x, y, z, 50);
|
||||
EntityEMPBlast wave = new EntityEMPBlast(world, 50);
|
||||
wave.posX = x + 0.5;
|
||||
wave.posY = y + 0.5;
|
||||
wave.posZ = z + 0.5;
|
||||
world.spawnEntityInWorld(wave);
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
@ -31,18 +29,10 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
|
||||
public class BombMulti extends BlockContainer implements IBomb {
|
||||
|
||||
public TileEntityBombMulti tetn = new TileEntityBombMulti();
|
||||
|
||||
public final float explosionBaseValue = 8.0F;
|
||||
public float explosionValue = 0.0F;
|
||||
public int clusterCount = 0;
|
||||
public int fireRadius = 0;
|
||||
public int poisonRadius = 0;
|
||||
public int gasCloud = 0;
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
private Map field_77288_k = new HashMap();
|
||||
|
||||
public BombMulti(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
@ -52,75 +42,63 @@ public class BombMulti extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityBombMulti();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.bomb_multi);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.bomb_multi);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityBombMulti tileentityfurnace = (TileEntityBombMulti)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityBombMulti tileentityfurnace = (TileEntityBombMulti) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_bomb_multi, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -128,206 +106,138 @@ public class BombMulti extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(/*entity.getExplosionType() != 0*/entity.isLoaded())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
igniteTestBomb(p_149695_1_, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z)
|
||||
{
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) world.getTileEntity(x, y, z);
|
||||
if (!world.isRemote)
|
||||
{
|
||||
//world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
//world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
|
||||
/*switch(entity.getExplosionType())
|
||||
{
|
||||
case 1:
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.createExplosion(null, x , y , z , 18.0F, true);
|
||||
break;
|
||||
case 2:
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.createExplosion(null, x , y , z , 34.0F, true);
|
||||
break;
|
||||
case 3:
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.createExplosion(null, x , y , z , 8.0F, true);
|
||||
ExplosionChaos.cluster(world, x, y, z, 100, 1);
|
||||
break;
|
||||
case 4:
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.createExplosion(null, x , y , z , 3.0F, true);
|
||||
ExplosionChaos.burn(world, x, y, z, 20);
|
||||
break;
|
||||
case 5:
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.createExplosion(null, x , y , z , 3.0F, true);
|
||||
ExplosionNukeGeneric.waste(world, x, y, z, 30);
|
||||
break;
|
||||
case 6:
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.createExplosion(null, x , y , z , 3.0F, true);
|
||||
ExplosionChaos.poison(world, x, y, z, 25);
|
||||
break;
|
||||
}*/
|
||||
if(entity.isLoaded())
|
||||
{
|
||||
this.explosionValue = this.explosionBaseValue;
|
||||
switch(entity.return2type())
|
||||
{
|
||||
case 1:
|
||||
this.explosionValue += 1.0F;
|
||||
break;
|
||||
case 2:
|
||||
this.explosionValue += 4.0F;
|
||||
break;
|
||||
case 3:
|
||||
this.clusterCount += 50;
|
||||
break;
|
||||
case 4:
|
||||
this.fireRadius += 10;
|
||||
break;
|
||||
case 5:
|
||||
this.poisonRadius += 15;
|
||||
break;
|
||||
case 6:
|
||||
this.gasCloud += 50;
|
||||
}
|
||||
switch(entity.return5type())
|
||||
{
|
||||
case 1:
|
||||
this.explosionValue += 1.0F;
|
||||
break;
|
||||
case 2:
|
||||
this.explosionValue += 4.0F;
|
||||
break;
|
||||
case 3:
|
||||
this.clusterCount += 50;
|
||||
break;
|
||||
case 4:
|
||||
this.fireRadius += 10;
|
||||
break;
|
||||
case 5:
|
||||
this.poisonRadius += 15;
|
||||
break;
|
||||
case 6:
|
||||
this.gasCloud += 50;
|
||||
}
|
||||
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
//world.createExplosion(null, x , y , z , this.explosionValue, true);
|
||||
ExplosionLarge.explode(world, x, y, z, explosionValue, true, true, true);
|
||||
this.explosionValue = 0;
|
||||
|
||||
if(this.clusterCount > 0)
|
||||
{
|
||||
ExplosionChaos.cluster(world, x, y, z, this.clusterCount, 1);
|
||||
}
|
||||
|
||||
if(this.fireRadius > 0)
|
||||
{
|
||||
ExplosionChaos.burn(world, x, y, z, this.fireRadius);
|
||||
}
|
||||
|
||||
if(this.poisonRadius > 0)
|
||||
{
|
||||
ExplosionNukeGeneric.wasteNoSchrab(world, x, y, z, this.poisonRadius);
|
||||
}
|
||||
|
||||
if(this.gasCloud > 0)
|
||||
{
|
||||
ExplosionChaos.spawnChlorine(world, x, y, z, this.gasCloud, this.gasCloud / 50, 0);
|
||||
}
|
||||
|
||||
this.clusterCount = 0;
|
||||
this.fireRadius = 0;
|
||||
this.poisonRadius = 0;
|
||||
this.gasCloud = 0;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
if(/* entity.getExplosionType() != 0 */entity.isLoaded()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
igniteTestBomb(p_149695_1_, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public BombReturnCode igniteTestBomb(World world, int x, int y, int z) {
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) world.getTileEntity(x, y, z);
|
||||
if(!world.isRemote) {
|
||||
|
||||
if(entity.isLoaded()) {
|
||||
|
||||
float explosionValue = 0.0F;
|
||||
int clusterCount = 0;
|
||||
int fireRadius = 0;
|
||||
int poisonRadius = 0;
|
||||
int gasCloud = 0;
|
||||
|
||||
explosionValue = this.explosionBaseValue;
|
||||
|
||||
switch(entity.return2type()) {
|
||||
case 1: explosionValue += 1.0F; break;
|
||||
case 2: explosionValue += 4.0F; break;
|
||||
case 3: clusterCount += 50; break;
|
||||
case 4: fireRadius += 10; break;
|
||||
case 5: poisonRadius += 15; break;
|
||||
case 6: gasCloud += 50; break;
|
||||
}
|
||||
switch(entity.return5type()) {
|
||||
case 1: explosionValue += 1.0F; break;
|
||||
case 2: explosionValue += 4.0F; break;
|
||||
case 3: clusterCount += 50; break;
|
||||
case 4: fireRadius += 10; break;
|
||||
case 5: poisonRadius += 15; break;
|
||||
case 6: gasCloud += 50; break;
|
||||
}
|
||||
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
// world.createExplosion(null, x , y , z , this.explosionValue,
|
||||
// true);
|
||||
ExplosionLarge.explode(world, x, y, z, explosionValue, true, true, true);
|
||||
explosionValue = 0;
|
||||
|
||||
if(clusterCount > 0) {
|
||||
ExplosionChaos.cluster(world, x, y, z, clusterCount, 1);
|
||||
}
|
||||
|
||||
if(fireRadius > 0) {
|
||||
ExplosionChaos.burn(world, x, y, z, fireRadius);
|
||||
}
|
||||
|
||||
if(poisonRadius > 0) {
|
||||
ExplosionNukeGeneric.wasteNoSchrab(world, x, y, z, poisonRadius);
|
||||
}
|
||||
|
||||
if(gasCloud > 0) {
|
||||
ExplosionChaos.spawnChlorine(world, x, y, z, gasCloud, gasCloud / 50, 0);
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
}
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_)
|
||||
{
|
||||
float f = 0.0625F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) {
|
||||
float f = 0.0625F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8 * f, 1.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
float f = 0.0625F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F);
|
||||
float f = 0.0625F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8 * f, 1.0F);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) world.getTileEntity(x, y, z);
|
||||
if(/*entity.getExplosionType() != 0*/entity.isLoaded())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
igniteTestBomb(world, x, y, z);
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityBombMulti entity = (TileEntityBombMulti) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.isLoaded()) {
|
||||
return igniteTestBomb(world, x, y, z);
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,99 +0,0 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
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.minecraft.world.WorldServer;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import net.minecraft.world.chunk.IChunkProvider;
|
||||
import net.minecraft.world.gen.ChunkProviderServer;
|
||||
|
||||
public class BombRejuvinator extends Block implements IBomb {
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private Random rand;
|
||||
private static boolean keepInventory;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon iconTop;
|
||||
|
||||
public BombRejuvinator(Material p_i45394_1_) {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
|
||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":inserter_top");
|
||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":inserter_side");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int metadata) {
|
||||
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
|
||||
if (world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
explode(world, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World worldObj, int x1, int y1, int z1) {
|
||||
worldObj.setBlock(x1, y1, z1, Blocks.air);
|
||||
if (!worldObj.isRemote) {
|
||||
try {
|
||||
Chunk oldChunk = worldObj.getChunkFromBlockCoords(x1, z1);
|
||||
|
||||
if (worldObj instanceof WorldServer) {
|
||||
WorldServer worldServer = (WorldServer) worldObj;
|
||||
ChunkProviderServer chunkProviderServer = worldServer.theChunkProviderServer;
|
||||
IChunkProvider chunkProviderGenerate = chunkProviderServer.currentChunkProvider;
|
||||
|
||||
Chunk newChunk = chunkProviderGenerate.provideChunk(oldChunk.xPosition, oldChunk.zPosition);
|
||||
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int z = 0; z < 16; z++) {
|
||||
for (int y = 0; y < worldObj.getHeight(); y++) {
|
||||
Block block = newChunk.getBlock(x, y, z);
|
||||
int metadata = newChunk.getBlockMetadata(x, y, z);
|
||||
|
||||
worldServer.setBlock(x + oldChunk.xPosition * 16, y, z + oldChunk.zPosition * 16, block,
|
||||
metadata, 2);
|
||||
|
||||
TileEntity tileEntity = newChunk.getTileEntityUnsafe(x, y, z);
|
||||
|
||||
if (tileEntity != null) {
|
||||
worldServer.setTileEntity(x + oldChunk.xPosition * 16, y,
|
||||
z + oldChunk.zPosition * 16, tileEntity);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
oldChunk.isTerrainPopulated = false;
|
||||
chunkProviderGenerate.populate(chunkProviderGenerate, oldChunk.xPosition, oldChunk.zPosition);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Rejuvenation Failed!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -19,15 +19,13 @@ import net.minecraft.world.World;
|
||||
|
||||
public class BombThermo extends Block implements IBomb {
|
||||
|
||||
private World worldObj;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon iconTop;
|
||||
|
||||
public BombThermo(Material p_i45394_1_) {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
@ -36,15 +34,13 @@ public class BombThermo extends Block implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
if(this == ModBlocks.therm_endo)
|
||||
{
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
if(this == ModBlocks.therm_endo) {
|
||||
return Item.getItemFromBlock(ModBlocks.therm_endo);
|
||||
}
|
||||
|
||||
|
||||
return Item.getItemFromBlock(ModBlocks.therm_exo);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
@ -53,43 +49,37 @@ public class BombThermo extends Block implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
this.worldObj = p_149695_1_;
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
p_149695_1_.setBlock(x, y, z, Blocks.air);
|
||||
if(this == ModBlocks.therm_endo)
|
||||
{
|
||||
ExplosionThermo.freeze(p_149695_1_, x, y, z, 15);
|
||||
ExplosionThermo.freezer(p_149695_1_, x, y, z, 20);
|
||||
}
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
p_149695_1_.setBlock(x, y, z, Blocks.air);
|
||||
if(this == ModBlocks.therm_endo) {
|
||||
ExplosionThermo.freeze(p_149695_1_, x, y, z, 15);
|
||||
ExplosionThermo.freezer(p_149695_1_, x, y, z, 20);
|
||||
}
|
||||
|
||||
if(this == ModBlocks.therm_exo)
|
||||
{
|
||||
ExplosionThermo.scorch(p_149695_1_, x, y, z, 15);
|
||||
ExplosionThermo.setEntitiesOnFire(p_149695_1_, x, y, z, 20);
|
||||
}
|
||||
|
||||
p_149695_1_.createExplosion(null, x, y, z, 5.0F, true);
|
||||
}
|
||||
}
|
||||
if(this == ModBlocks.therm_exo) {
|
||||
ExplosionThermo.scorch(p_149695_1_, x, y, z, 15);
|
||||
ExplosionThermo.setEntitiesOnFire(p_149695_1_, x, y, z, 20);
|
||||
}
|
||||
|
||||
p_149695_1_.createExplosion(null, x, y, z, 5.0F, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
world.setBlock(x, y, z, Blocks.air);
|
||||
if(this == ModBlocks.therm_endo)
|
||||
{
|
||||
ExplosionThermo.freeze(world, x, y, z, 15);
|
||||
ExplosionThermo.freezer(world, x, y, z, 20);
|
||||
}
|
||||
if(this == ModBlocks.therm_endo) {
|
||||
ExplosionThermo.freeze(world, x, y, z, 15);
|
||||
ExplosionThermo.freezer(world, x, y, z, 20);
|
||||
}
|
||||
|
||||
if(this == ModBlocks.therm_exo)
|
||||
{
|
||||
ExplosionThermo.scorch(world, x, y, z, 15);
|
||||
ExplosionThermo.setEntitiesOnFire(world, x, y, z, 20);
|
||||
}
|
||||
|
||||
world.createExplosion(null, x, y, z, 5.0F, true);
|
||||
if(this == ModBlocks.therm_exo) {
|
||||
ExplosionThermo.scorch(world, x, y, z, 15);
|
||||
ExplosionThermo.setEntitiesOnFire(world, x, y, z, 20);
|
||||
}
|
||||
|
||||
world.createExplosion(null, x, y, z, 5.0F, true);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,17 +55,14 @@ public class CompactLauncher extends BlockContainer implements IMultiblock, IBom
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.struct_launcher_core);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityCompactLauncher entity = (TileEntityCompactLauncher) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_compact_launcher, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -73,18 +70,11 @@ public class CompactLauncher extends BlockContainer implements IMultiblock, IBom
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
|
||||
if(!(world.getBlock(x + 1, y, z + 1).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x + 1, y, z).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x + 1, y, z - 1).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x, y, z - 1).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x - 1, y, z - 1).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x - 1, y, z).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x - 1, y, z + 1).getMaterial().isReplaceable() &&
|
||||
world.getBlock(x, y, z + 1).getMaterial().isReplaceable())) {
|
||||
|
||||
if(!(world.getBlock(x + 1, y, z + 1).getMaterial().isReplaceable() && world.getBlock(x + 1, y, z).getMaterial().isReplaceable() && world.getBlock(x + 1, y, z - 1).getMaterial().isReplaceable() && world.getBlock(x, y, z - 1).getMaterial().isReplaceable() && world.getBlock(x - 1, y, z - 1).getMaterial().isReplaceable() && world.getBlock(x - 1, y, z).getMaterial().isReplaceable() && world.getBlock(x - 1, y, z + 1).getMaterial().isReplaceable() && world.getBlock(x, y, z + 1).getMaterial().isReplaceable())) {
|
||||
world.func_147480_a(x, y, z, true);
|
||||
return;
|
||||
}
|
||||
@ -97,77 +87,76 @@ public class CompactLauncher extends BlockContainer implements IMultiblock, IBom
|
||||
placeDummy(world, x - 1, y, z, x, y, z, ModBlocks.dummy_plate_compact_launcher);
|
||||
placeDummy(world, x - 1, y, z + 1, x, y, z, ModBlocks.dummy_port_compact_launcher);
|
||||
placeDummy(world, x, y, z + 1, x, y, z, ModBlocks.dummy_plate_compact_launcher);
|
||||
|
||||
|
||||
super.onBlockPlacedBy(world, x, y, z, player, itemStack);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void placeDummy(World world, int x, int y, int z, int xCoord, int yCoord, int zCoord, Block block) {
|
||||
|
||||
|
||||
world.setBlock(x, y, z, block);
|
||||
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te;
|
||||
TileEntityDummy dummy = (TileEntityDummy) te;
|
||||
dummy.targetX = xCoord;
|
||||
dummy.targetY = yCoord;
|
||||
dummy.targetZ = zCoord;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_)
|
||||
{
|
||||
this.setBlockBounds(0, 1, 0, 1, 1, 1);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) {
|
||||
this.setBlockBounds(0, 1, 0, 1, 1, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
this.setBlockBounds(0, 1, 0, 1, 1, 1);
|
||||
this.setBlockBounds(0, 1, 0, 1, 1, 1);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
TileEntityCompactLauncher entity = (TileEntityCompactLauncher) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.canLaunch())
|
||||
|
||||
if(entity.canLaunch()) {
|
||||
entity.launch();
|
||||
return BombReturnCode.LAUNCHED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_,
|
||||
int p_149749_6_) {
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_,
|
||||
p_149749_4_);
|
||||
private final Random field_149933_a = new Random();
|
||||
|
||||
if (tileentityfurnace != null) {
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null) {
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0) {
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize) {
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1,
|
||||
p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem()
|
||||
.setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
@ -181,8 +170,6 @@ public class CompactLauncher extends BlockContainer implements IMultiblock, IBom
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
||||
@ -17,7 +15,6 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.Explosion;
|
||||
import net.minecraft.world.World;
|
||||
@ -34,47 +31,38 @@ public class DetCord extends Block implements IBomb {
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
|
||||
|
||||
super.registerBlockIcons(iconRegister);
|
||||
|
||||
|
||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":det_nuke_top");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int metadata) {
|
||||
|
||||
|
||||
if(this != ModBlocks.det_nuke)
|
||||
return this.blockIcon;
|
||||
|
||||
|
||||
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_)
|
||||
{
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
@Override
|
||||
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_) {
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
if (world.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
|
||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
world.setBlock(x, y, z, Blocks.air);
|
||||
if(this == ModBlocks.det_cord) {
|
||||
world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true);
|
||||
@ -93,6 +81,8 @@ public class DetCord extends Block implements IBomb {
|
||||
world.spawnEntityInWorld(entity2);
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -20,40 +20,39 @@ public class DetMiner extends BlockPillar implements IBomb {
|
||||
super(mat, top);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public Item getItemDropped(int i, Random rand, int j) {
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
|
||||
world.func_147480_a(x, y, z, false);
|
||||
ExplosionNT explosion = new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 4);
|
||||
explosion.atttributes.add(ExAttrib.ALLDROP);
|
||||
explosion.atttributes.add(ExAttrib.NOHURT);
|
||||
explosion.doExplosionA();
|
||||
explosion.doExplosionB(false);
|
||||
|
||||
|
||||
ExplosionLarge.spawnParticles(world, x + 0.5, y + 0.5, z + 0.5, 30);
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_) {
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
|
||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_)
|
||||
{
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
if (world.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -57,73 +57,65 @@ public class Landmine extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_,
|
||||
int p_149719_4_) {
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) {
|
||||
float f = 0.0625F;
|
||||
if (this == ModBlocks.mine_ap)
|
||||
if(this == ModBlocks.mine_ap)
|
||||
this.setBlockBounds(6 * f, 0.0F, 6 * f, 10 * f, 2 * f, 10 * f);
|
||||
if (this == ModBlocks.mine_he)
|
||||
if(this == ModBlocks.mine_he)
|
||||
this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
|
||||
if (this == ModBlocks.mine_shrap)
|
||||
if(this == ModBlocks.mine_shrap)
|
||||
this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
|
||||
if (this == ModBlocks.mine_fat)
|
||||
if(this == ModBlocks.mine_fat)
|
||||
this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
float f = 0.0625F;
|
||||
if (this == ModBlocks.mine_ap)
|
||||
if(this == ModBlocks.mine_ap)
|
||||
this.setBlockBounds(6 * f, 0.0F, 6 * f, 10 * f, 2 * f, 10 * f);
|
||||
if (this == ModBlocks.mine_he)
|
||||
if(this == ModBlocks.mine_he)
|
||||
this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
|
||||
if (this == ModBlocks.mine_shrap)
|
||||
if(this == ModBlocks.mine_shrap)
|
||||
this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
|
||||
if (this == ModBlocks.mine_fat)
|
||||
if(this == ModBlocks.mine_fat)
|
||||
this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY,
|
||||
z + this.maxZ);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int x, int y, int z) {
|
||||
return World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)
|
||||
|| BlockFence.func_149825_a(world.getBlock(x, y - 1, z));
|
||||
return World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) || BlockFence.func_149825_a(world.getBlock(x, y - 1, z));
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z,
|
||||
Block block) {
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
||||
|
||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
explode(world, x, y, z);
|
||||
}
|
||||
|
||||
if (world.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
explode(world, x, y, z);
|
||||
}
|
||||
|
||||
boolean flag = false;
|
||||
|
||||
if (!World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)
|
||||
&& !BlockFence.func_149825_a(world.getBlock(x, y - 1, z))) {
|
||||
if(!World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && !BlockFence.func_149825_a(world.getBlock(x, y - 1, z))) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
this.dropBlockAsItem(world, x, y, z,
|
||||
world.getBlockMetadata(x, y, z), 0);
|
||||
if(flag) {
|
||||
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0);
|
||||
world.setBlockToAir(x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int i) {
|
||||
|
||||
if (!safeMode) {
|
||||
if(!safeMode) {
|
||||
explode(world, x, y, z);
|
||||
}
|
||||
|
||||
super.breakBlock(world, x, y, z, block, i);
|
||||
}
|
||||
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy,
|
||||
float fz) {
|
||||
if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) {
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
|
||||
|
||||
safeMode = true;
|
||||
world.setBlockToAir(x, y, z);
|
||||
@ -132,7 +124,7 @@ public class Landmine extends BlockContainer implements IBomb {
|
||||
float f = world.rand.nextFloat() * 0.6F + 0.2F;
|
||||
float f1 = world.rand.nextFloat() * 0.2F;
|
||||
float f2 = world.rand.nextFloat() * 0.6F + 0.2F;
|
||||
|
||||
|
||||
EntityItem entityitem = new EntityItem(world, x + f, y + f1 + 1, z + f2, itemstack);
|
||||
|
||||
float f3 = 0.05F;
|
||||
@ -151,31 +143,32 @@ public class Landmine extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
|
||||
Landmine.safeMode = true;
|
||||
world.func_147480_a(x, y, z, false);
|
||||
Landmine.safeMode = false;
|
||||
|
||||
if (this == ModBlocks.mine_ap) {
|
||||
|
||||
if(this == ModBlocks.mine_ap) {
|
||||
world.newExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, false, false);
|
||||
}
|
||||
if (this == ModBlocks.mine_he) {
|
||||
if(this == ModBlocks.mine_he) {
|
||||
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 10F, true, false, false);
|
||||
}
|
||||
if (this == ModBlocks.mine_shrap) {
|
||||
if(this == ModBlocks.mine_shrap) {
|
||||
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 1, true, false, false);
|
||||
ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D);
|
||||
ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5);
|
||||
}
|
||||
if (this == ModBlocks.mine_fat) {
|
||||
|
||||
if(this == ModBlocks.mine_fat) {
|
||||
|
||||
ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, ExplosionNukeSmall.medium);
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -170,17 +170,17 @@ public class LaunchPad extends BlockContainer implements IBomb {
|
||||
|
||||
@Spaghetti("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA *takes breath* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
TileEntityLaunchPad entity = (TileEntityLaunchPad) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.slots[0] == null || world.isRemote)
|
||||
return;
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
|
||||
if(entity.slots[1] != null && entity.slots[1].getItem() instanceof IDesignatorItem && entity.power >= 75000) {
|
||||
|
||||
if(!((IDesignatorItem)entity.slots[1].getItem()).isReady(world, entity.slots[1], x, y, z))
|
||||
return;
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
|
||||
int xCoord = entity.slots[1].stackTagCompound.getInteger("xCoord");
|
||||
int zCoord = entity.slots[1].stackTagCompound.getInteger("zCoord");
|
||||
@ -267,13 +267,18 @@ public class LaunchPad extends BlockContainer implements IBomb {
|
||||
missile = new EntityMissileShuttle(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord);
|
||||
}
|
||||
|
||||
world.spawnEntityInWorld(missile);
|
||||
world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F);
|
||||
entity.power -= 75000;
|
||||
entity.slots[0] = null;
|
||||
|
||||
if(GeneralConfig.enableExtendedLogging)
|
||||
MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + x + " / " + y + " / " + z + " to " + xCoord + " / " + zCoord + "!");
|
||||
if(missile != null) {
|
||||
world.spawnEntityInWorld(missile);
|
||||
world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F);
|
||||
entity.power -= 75000;
|
||||
entity.slots[0] = null;
|
||||
|
||||
if(GeneralConfig.enableExtendedLogging)
|
||||
MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + x + " / " + y + " / " + z + " to " + xCoord + " / " + zCoord + "!");
|
||||
return BombReturnCode.LAUNCHED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_carrier && entity.power >= 75000) {
|
||||
@ -291,6 +296,7 @@ public class LaunchPad extends BlockContainer implements IBomb {
|
||||
entity.slots[0] = null;
|
||||
entity.slots[1] = null;
|
||||
world.playSoundEffect(x, y, z, "hbm:entity.rocketTakeoff", 100.0F, 1.0F);
|
||||
return BombReturnCode.LAUNCHED;
|
||||
}
|
||||
|
||||
if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) {
|
||||
@ -304,7 +310,10 @@ public class LaunchPad extends BlockContainer implements IBomb {
|
||||
|
||||
entity.slots[0] = null;
|
||||
world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F);
|
||||
return BombReturnCode.LAUNCHED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -54,17 +54,14 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb {
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.struct_launcher_core_large);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityLaunchTable entity = (TileEntityLaunchTable) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_launch_table, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -76,7 +73,7 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb {
|
||||
@Override
|
||||
public void onBlockPlacedBy(World worldObj, int xCoord, int yCoord, int zCoord, EntityLivingBase player, ItemStack itemStack) {
|
||||
int d = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
|
||||
for(int k = -4; k <= 4; k++)
|
||||
for(int l = -4; l <= 4; l++)
|
||||
if(l != 0 && k != 0)
|
||||
@ -85,55 +82,55 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb {
|
||||
return;
|
||||
}
|
||||
|
||||
if (d == 0) {
|
||||
|
||||
if(d == 0) {
|
||||
|
||||
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, 0, 2);
|
||||
for(int i = 1; i < 12; i++)
|
||||
worldObj.setBlock(xCoord + 3, yCoord + i, zCoord, Blocks.air);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table);
|
||||
}
|
||||
if (d == 1) {
|
||||
if(d == 1) {
|
||||
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, 2, 2);
|
||||
for(int i = 1; i < 12; i++)
|
||||
worldObj.setBlock(xCoord, yCoord + i, zCoord + 3, Blocks.air);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table);
|
||||
}
|
||||
if (d == 2) {
|
||||
if(d == 2) {
|
||||
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, 1, 2);
|
||||
for(int i = 1; i < 12; i++)
|
||||
worldObj.setBlock(xCoord - 3, yCoord + i, zCoord, Blocks.air);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table);
|
||||
}
|
||||
if (d == 3) {
|
||||
if(d == 3) {
|
||||
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, 3, 2);
|
||||
for(int i = 1; i < 12; i++)
|
||||
worldObj.setBlock(xCoord, yCoord + i, zCoord - 3, Blocks.air);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table);
|
||||
|
||||
|
||||
for(int i = -4; i <= 4; i++)
|
||||
if(i != 0)
|
||||
placeDummy(worldObj, xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table);
|
||||
@ -144,15 +141,15 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb {
|
||||
if(i != 0 && j != 0)
|
||||
placeDummy(worldObj, xCoord + i, yCoord, zCoord + j, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table);
|
||||
}
|
||||
|
||||
|
||||
private void placeDummy(World world, int x, int y, int z, int xCoord, int yCoord, int zCoord, Block block) {
|
||||
|
||||
|
||||
world.setBlock(x, y, z, block);
|
||||
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te;
|
||||
TileEntityDummy dummy = (TileEntityDummy) te;
|
||||
dummy.targetX = xCoord;
|
||||
dummy.targetY = yCoord;
|
||||
dummy.targetZ = zCoord;
|
||||
@ -160,66 +157,67 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityLaunchTable entity = (TileEntityLaunchTable) world.getTileEntity(x, y, z);
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(entity.canLaunch())
|
||||
entity.launch();
|
||||
if(!world.isRemote) {
|
||||
TileEntityLaunchTable entity = (TileEntityLaunchTable) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.canLaunch()) {
|
||||
entity.launch();
|
||||
return BombReturnCode.LAUNCHED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
|
||||
public static boolean keepInventory = false;
|
||||
private final static Random field_149933_a = new Random();
|
||||
|
||||
private final static Random field_149933_a = new Random();
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -55,14 +55,20 @@ public class NukeBalefire extends BlockMachineBase implements IBomb, IItemHazard
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeBalefire bomb = (TileEntityNukeBalefire) world.getTileEntity(x, y, z);
|
||||
|
||||
if(bomb.isLoaded())
|
||||
if(bomb.isLoaded()) {
|
||||
bomb.explode();
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@ import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityNukeCloudNoShroom;
|
||||
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK4;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
@ -47,36 +46,31 @@ public class NukeBoy extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_,
|
||||
int p_149749_6_) {
|
||||
if (!keepInventory) {
|
||||
TileEntityNukeBoy tileentityfurnace = (TileEntityNukeBoy) p_149749_1_.getTileEntity(p_149749_2_,
|
||||
p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeBoy tileentityfurnace = (TileEntityNukeBoy) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null) {
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null) {
|
||||
if(itemstack != null) {
|
||||
float f = NukeBoy.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = NukeBoy.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = NukeBoy.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0) {
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = NukeBoy.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize) {
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1,
|
||||
p_149749_4_ + f2,
|
||||
new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem()
|
||||
.setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
@ -96,13 +90,12 @@ public class NukeBoy extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX,
|
||||
float hitY, float hitZ) {
|
||||
if (world.isRemote) {
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if (!player.isSneaking()) {
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeBoy entity = (TileEntityNukeBoy) world.getTileEntity(x, y, z);
|
||||
if (entity != null) {
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_boy, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -114,8 +107,8 @@ public class NukeBoy extends BlockContainer implements IBomb {
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeBoy entity = (TileEntityNukeBoy) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
if (entity.isReady() && !p_149695_1_.isRemote) {
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
if(entity.isReady() && !p_149695_1_.isRemote) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
@ -125,12 +118,12 @@ public class NukeBoy extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z) {
|
||||
if (!world.isRemote) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
tetn.clearSlots();
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, BombConfig.boyRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, BombConfig.boyRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||
world.spawnEntityInWorld(EntityNukeCloudSmall.statFac(world, x, y, z, BombConfig.boyRadius));
|
||||
}
|
||||
return false;
|
||||
@ -155,31 +148,37 @@ public class NukeBoy extends BlockContainer implements IBomb {
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if (i == 0) {
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if (i == 1) {
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if (i == 2) {
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if (i == 3) {
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeBoy entity = (TileEntityNukeBoy) world.getTileEntity(x, y, z);
|
||||
// if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if (entity.isReady()) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeBoy entity = (TileEntityNukeBoy) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ package com.hbm.blocks.bomb;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityCloudFleija;
|
||||
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
||||
import com.hbm.entity.grenade.EntityGrenadeZOMG;
|
||||
@ -14,7 +13,6 @@ import com.hbm.entity.projectile.EntityFallingNuke;
|
||||
import com.hbm.explosion.ExplosionChaos;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.interfaces.Untested;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.bomb.TileEntityNukeCustom;
|
||||
|
||||
@ -125,7 +123,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
|
||||
|
||||
if (world.isBlockIndirectlyGettingPowered(x, y, z) && !world.isRemote) {
|
||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
this.explode(world, x, y, z);
|
||||
}
|
||||
}
|
||||
@ -236,25 +234,30 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
TileEntityNukeCustom entity = (TileEntityNukeCustom) world.getTileEntity(x, y, z);
|
||||
|
||||
if(!entity.isFalling()) {
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeCustom entity = (TileEntityNukeCustom) world.getTileEntity(x, y, z);
|
||||
|
||||
entity.clearSlots();
|
||||
world.func_147480_a(x, y, z, false);
|
||||
NukeCustom.explodeCustom(world, x + 0.5, y + 0.5, z + 0.5, entity.tnt, entity.nuke, entity.hydro, entity.amat, entity.dirty, entity.schrab, entity.euph);
|
||||
|
||||
} else {
|
||||
|
||||
EntityFallingNuke bomb = new EntityFallingNuke(world, entity.tnt, entity.nuke, entity.hydro, entity.amat, entity.dirty, entity.schrab, entity.euph);
|
||||
bomb.getDataWatcher().updateObject(20, (byte)world.getBlockMetadata(x, y, z));
|
||||
bomb.setPositionAndRotation(x + 0.5, y, z + 0.5, 0, 0);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.spawnEntityInWorld(bomb);
|
||||
if(!entity.isFalling()) {
|
||||
|
||||
entity.clearSlots();
|
||||
world.func_147480_a(x, y, z, false);
|
||||
NukeCustom.explodeCustom(world, x + 0.5, y + 0.5, z + 0.5, entity.tnt, entity.nuke, entity.hydro, entity.amat, entity.dirty, entity.schrab, entity.euph);
|
||||
return BombReturnCode.DETONATED;
|
||||
|
||||
} else {
|
||||
|
||||
EntityFallingNuke bomb = new EntityFallingNuke(world, entity.tnt, entity.nuke, entity.hydro, entity.amat, entity.dirty, entity.schrab, entity.euph);
|
||||
bomb.getDataWatcher().updateObject(20, (byte)world.getBlockMetadata(x, y, z));
|
||||
bomb.setPositionAndRotation(x + 0.5, y, z + 0.5, 0, 0);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.spawnEntityInWorld(bomb);
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -30,7 +28,7 @@ public class NukeFleija extends BlockContainer implements IBomb {
|
||||
|
||||
public TileEntityNukeFleija tetn = new TileEntityNukeFleija();
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
|
||||
public NukeFleija(Material p_i45386_1_) {
|
||||
@ -41,75 +39,63 @@ public class NukeFleija extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeFleija();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_fleija);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_fleija);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityNukeFleija tileentityfurnace = (TileEntityNukeFleija)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeFleija tileentityfurnace = (TileEntityNukeFleija) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeFleija entity = (TileEntityNukeFleija) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_fleija, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -117,91 +103,86 @@ public class NukeFleija extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityNukeFleija entity = (TileEntityNukeFleija) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote)
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.fleijaRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
//world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeFleija entity = (TileEntityNukeFleija) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.fleijaRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
|
||||
if(!world.isRemote) {
|
||||
// world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK3.statFacFleija(world, x + 0.5, y + 0.5, z + 0.5, r));
|
||||
|
||||
EntityCloudFleija cloud = new EntityCloudFleija(world, r);
|
||||
cloud.posX = x;
|
||||
cloud.posY = y;
|
||||
cloud.posZ = z;
|
||||
world.spawnEntityInWorld(cloud);
|
||||
}
|
||||
|
||||
|
||||
EntityCloudFleija cloud = new EntityCloudFleija(world, r);
|
||||
cloud.posX = x;
|
||||
cloud.posY = y;
|
||||
cloud.posZ = z;
|
||||
world.spawnEntityInWorld(cloud);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeFleija entity = (TileEntityNukeFleija) world.getTileEntity(x, y, z);
|
||||
//if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.fleijaRadius);
|
||||
}
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeFleija entity = (TileEntityNukeFleija) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.fleijaRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -176,16 +176,21 @@ public class NukeGadget extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeGadget entity = (TileEntityNukeGadget) world.getTileEntity(x, y, z);
|
||||
// if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeGadget entity = (TileEntityNukeGadget) world.getTileEntity(x, y, z);
|
||||
if (entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ public class NukeMan extends BlockContainer implements IBomb {
|
||||
|
||||
public TileEntityNukeMan tetn = new TileEntityNukeMan();
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
|
||||
public NukeMan(Material p_i45386_1_) {
|
||||
@ -38,77 +38,65 @@ public class NukeMan extends BlockContainer implements IBomb {
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeMan();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_man);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_man);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityNukeMan tileentityfurnace = (TileEntityNukeMan)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeMan tileentityfurnace = (TileEntityNukeMan) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeMan entity = (TileEntityNukeMan) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_man, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -116,25 +104,21 @@ public class NukeMan extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityNukeMan entity = (TileEntityNukeMan) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote)
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z)
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeMan entity = (TileEntityNukeMan) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z) {
|
||||
if(!world.isRemote) {
|
||||
tetn.clearSlots();
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
@ -150,56 +134,56 @@ public class NukeMan extends BlockContainer implements IBomb {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeMan entity = (TileEntityNukeMan) world.getTileEntity(x, y, z);
|
||||
//if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z);
|
||||
}
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeMan entity = (TileEntityNukeMan) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -34,7 +32,6 @@ public class NukeMike extends BlockContainer implements IBomb {
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
private Map field_77288_k = new HashMap();
|
||||
|
||||
public NukeMike(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
@ -51,36 +48,31 @@ public class NukeMike extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_,
|
||||
int p_149749_6_) {
|
||||
if (!keepInventory) {
|
||||
TileEntityNukeMike tileentityfurnace = (TileEntityNukeMike) p_149749_1_.getTileEntity(p_149749_2_,
|
||||
p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeMike tileentityfurnace = (TileEntityNukeMike) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null) {
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null) {
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0) {
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize) {
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1,
|
||||
p_149749_4_ + f2,
|
||||
new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem()
|
||||
.setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
@ -100,13 +92,12 @@ public class NukeMike extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX,
|
||||
float hitY, float hitZ) {
|
||||
if (world.isRemote) {
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if (!player.isSneaking()) {
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeMike entity = (TileEntityNukeMike) world.getTileEntity(x, y, z);
|
||||
if (entity != null) {
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_mike, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -118,15 +109,15 @@ public class NukeMike extends BlockContainer implements IBomb {
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeMike entity = (TileEntityNukeMike) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if (entity.isReady() && !entity.isFilled()) {
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady() && !entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.manRadius);
|
||||
}
|
||||
|
||||
if (entity.isFilled()) {
|
||||
if(entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
@ -136,14 +127,14 @@ public class NukeMike extends BlockContainer implements IBomb {
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
|
||||
if (!world.isRemote) {
|
||||
if(!world.isRemote) {
|
||||
tetn.clearSlots();
|
||||
// world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5));
|
||||
|
||||
if (GeneralConfig.enableNukeClouds) {
|
||||
if(GeneralConfig.enableNukeClouds) {
|
||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
|
||||
entity2.posX = x;
|
||||
entity2.posY = y;
|
||||
@ -182,39 +173,46 @@ public class NukeMike extends BlockContainer implements IBomb {
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if (i == 0) {
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if (i == 1) {
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if (i == 2) {
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if (i == 3) {
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeMike entity = (TileEntityNukeMike) world.getTileEntity(x, y, z);
|
||||
// if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if (entity.isReady() && !entity.isFilled()) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
TileEntityNukeMike entity = (TileEntityNukeMike) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady() && !entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.manRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
if (entity.isFilled()) {
|
||||
if(entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.mikeRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ import net.minecraft.world.World;
|
||||
|
||||
public class NukeN2 extends BlockContainer implements IBomb {
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
|
||||
public NukeN2(Material p_i45386_1_) {
|
||||
@ -37,75 +37,63 @@ public class NukeN2 extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeN2();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_n2);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_n2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityNukeN2 tileentityfurnace = (TileEntityNukeN2)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeN2 tileentityfurnace = (TileEntityNukeN2) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeN2 entity = (TileEntityNukeN2) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_n2, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -113,90 +101,86 @@ public class NukeN2 extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityNukeN2 entity = (TileEntityNukeN2) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote)
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.n2Radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeN2 entity = (TileEntityNukeN2) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.n2Radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
|
||||
if(!world.isRemote) {
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5));
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5));
|
||||
|
||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
|
||||
entity2.posX = x;
|
||||
entity2.posY = y;
|
||||
entity2.posZ = z;
|
||||
world.spawnEntityInWorld(entity2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeN2 entity = (TileEntityNukeN2) world.getTileEntity(x, y, z);
|
||||
//if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.n2Radius);
|
||||
}
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeN2 entity = (TileEntityNukeN2) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.n2Radius);
|
||||
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,9 +22,9 @@ import net.minecraft.world.World;
|
||||
|
||||
public class NukeN45 extends BlockContainer implements IBomb {
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
|
||||
|
||||
public NukeN45(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
@ -33,69 +33,58 @@ public class NukeN45 extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeN45();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_n45, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -103,39 +92,46 @@ public class NukeN45 extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_n45);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_n45);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.getType() == 100) {
|
||||
entity.primed = true;
|
||||
} else if(!entity.primed && entity.getType() > 0) {
|
||||
int t = entity.getType();
|
||||
entity.clearSlots();
|
||||
entity.explode(world, x, y, z, t);
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.getType() == 100) {
|
||||
entity.primed = true;
|
||||
return BombReturnCode.TRIGGERED;
|
||||
} else if(!entity.primed && entity.getType() > 0) {
|
||||
int t = entity.getType();
|
||||
entity.clearSlots();
|
||||
entity.explode(world, x, y, z, t);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -31,9 +29,8 @@ public class NukePrototype extends BlockContainer implements IBomb {
|
||||
|
||||
public TileEntityNukePrototype tetn = new TileEntityNukePrototype();
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
private Map field_77288_k = new HashMap();
|
||||
|
||||
public NukePrototype(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
@ -43,85 +40,72 @@ public class NukePrototype extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukePrototype();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_prototype);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_prototype);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityNukePrototype tileentityfurnace = (TileEntityNukePrototype)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukePrototype tileentityfurnace = (TileEntityNukePrototype) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking() && player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == ModItems.igniter) {
|
||||
TileEntityNukePrototype entity = (TileEntityNukePrototype) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.prototypeRadius);
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.prototypeRadius);
|
||||
}
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukePrototype entity = (TileEntityNukePrototype) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_prototype, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -129,92 +113,87 @@ public class NukePrototype extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityNukePrototype entity = (TileEntityNukePrototype) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote)
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.prototypeRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukePrototype entity = (TileEntityNukePrototype) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.prototypeRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
|
||||
if(!world.isRemote) {
|
||||
tetn.clearSlots();
|
||||
//world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
// world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK3.statFacFleija(world, x + 0.5, y + 0.5, z + 0.5, r));
|
||||
|
||||
EntityCloudFleija cloud = new EntityCloudFleija(world, r);
|
||||
cloud.posX = x;
|
||||
cloud.posY = y;
|
||||
cloud.posZ = z;
|
||||
world.spawnEntityInWorld(cloud);
|
||||
}
|
||||
|
||||
|
||||
EntityCloudFleija cloud = new EntityCloudFleija(world, r);
|
||||
cloud.posX = x;
|
||||
cloud.posY = y;
|
||||
cloud.posZ = z;
|
||||
world.spawnEntityInWorld(cloud);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukePrototype entity = (TileEntityNukePrototype) world.getTileEntity(x, y, z);
|
||||
//if (world.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.prototypeRadius);
|
||||
}
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukePrototype entity = (TileEntityNukePrototype) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.prototypeRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -28,9 +26,8 @@ import net.minecraft.world.World;
|
||||
|
||||
public class NukeSolinium extends BlockContainer implements IBomb {
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
private Map field_77288_k = new HashMap();
|
||||
|
||||
public NukeSolinium(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
@ -40,75 +37,63 @@ public class NukeSolinium extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeSolinium();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_solinium);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_solinium);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityNukeSolinium tileentityfurnace = (TileEntityNukeSolinium)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeSolinium tileentityfurnace = (TileEntityNukeSolinium) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeSolinium entity = (TileEntityNukeSolinium) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_solinium, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -116,89 +101,84 @@ public class NukeSolinium extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityNukeSolinium entity = (TileEntityNukeSolinium) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote)
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.soliniumRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeSolinium entity = (TileEntityNukeSolinium) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.soliniumRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
|
||||
if(!world.isRemote) {
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK3.statFacFleija(world, x + 0.5, y + 0.5, z + 0.5, r).makeSol());
|
||||
|
||||
EntityCloudSolinium cloud = new EntityCloudSolinium(world, r);
|
||||
cloud.posX = x;
|
||||
cloud.posY = y;
|
||||
cloud.posZ = z;
|
||||
world.spawnEntityInWorld(cloud);
|
||||
}
|
||||
|
||||
|
||||
EntityCloudSolinium cloud = new EntityCloudSolinium(world, r);
|
||||
cloud.posX = x;
|
||||
cloud.posY = y;
|
||||
cloud.posZ = z;
|
||||
world.spawnEntityInWorld(cloud);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeSolinium entity = (TileEntityNukeSolinium) world.getTileEntity(x, y, z);
|
||||
//if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(entity.isReady())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.soliniumRadius);
|
||||
}
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeSolinium entity = (TileEntityNukeSolinium) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.soliniumRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -30,9 +28,8 @@ public class NukeTsar extends BlockContainer implements IBomb {
|
||||
|
||||
public TileEntityNukeTsar tetn = new TileEntityNukeTsar();
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
private Map field_77288_k = new HashMap();
|
||||
|
||||
public NukeTsar(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
@ -42,75 +39,63 @@ public class NukeTsar extends BlockContainer implements IBomb {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeTsar();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_tsar);
|
||||
}
|
||||
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_tsar);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
|
||||
{
|
||||
if (!keepInventory)
|
||||
{
|
||||
TileEntityNukeTsar tileentityfurnace = (TileEntityNukeTsar)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
|
||||
if(!keepInventory) {
|
||||
TileEntityNukeTsar tileentityfurnace = (TileEntityNukeTsar) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
|
||||
|
||||
if (tileentityfurnace != null)
|
||||
{
|
||||
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
|
||||
{
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
if(tileentityfurnace != null) {
|
||||
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
|
||||
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
if(itemstack != null) {
|
||||
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while (itemstack.stackSize > 0)
|
||||
{
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
while(itemstack.stackSize > 0) {
|
||||
int j1 = this.field_149933_a.nextInt(21) + 10;
|
||||
|
||||
if (j1 > itemstack.stackSize)
|
||||
{
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
if(j1 > itemstack.stackSize) {
|
||||
j1 = itemstack.stackSize;
|
||||
}
|
||||
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
itemstack.stackSize -= j1;
|
||||
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
|
||||
|
||||
if (itemstack.hasTagCompound())
|
||||
{
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
|
||||
}
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
|
||||
p_149749_1_.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeTsar entity = (TileEntityNukeTsar) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_nuke_tsar, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
@ -118,111 +103,105 @@ public class NukeTsar extends BlockContainer implements IBomb {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
|
||||
{
|
||||
TileEntityNukeTsar entity = (TileEntityNukeTsar) p_149695_1_.getTileEntity(x, y, z);
|
||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote)
|
||||
{
|
||||
if(entity.isReady() && !entity.isFilled())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.manRadius);
|
||||
}
|
||||
|
||||
if(entity.isFilled())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.tsarRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) {
|
||||
TileEntityNukeTsar entity = (TileEntityNukeTsar) p_149695_1_.getTileEntity(x, y, z);
|
||||
if(p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||
if(entity.isReady() && !entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.manRadius);
|
||||
}
|
||||
|
||||
if(entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
p_149695_1_.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(p_149695_1_, x, y, z, BombConfig.tsarRadius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
|
||||
if(!world.isRemote) {
|
||||
tetn.clearSlots();
|
||||
//world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
// world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
|
||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, r, x + 0.5, y + 0.5, z + 0.5));
|
||||
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, r, x + 0.5, y + 0.5, z + 0.5));
|
||||
|
||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
|
||||
entity2.posX = x;
|
||||
entity2.posY = y;
|
||||
entity2.posZ = z;
|
||||
world.spawnEntityInWorld(entity2);
|
||||
|
||||
//ExplosionNukeAdvanced.mush(world, x, y, z);
|
||||
}
|
||||
|
||||
|
||||
// ExplosionNukeAdvanced.mush(world, x, y, z);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityNukeTsar entity = (TileEntityNukeTsar) world.getTileEntity(x, y, z);
|
||||
//if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
if(entity.isReady() && !entity.isFilled())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.manRadius);
|
||||
}
|
||||
|
||||
if(entity.isFilled())
|
||||
{
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.tsarRadius);
|
||||
}
|
||||
}
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeTsar entity = (TileEntityNukeTsar) world.getTileEntity(x, y, z);
|
||||
if(entity.isReady() && !entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.manRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
if(entity.isFilled()) {
|
||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||
entity.clearSlots();
|
||||
world.setBlockToAir(x, y, z);
|
||||
igniteTestBomb(world, x, y, z, BombConfig.tsarRadius);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ public class WasteEarth extends Block {
|
||||
|
||||
if(this == ModBlocks.burning_earth) {
|
||||
Block b = world.getBlock(x, y + 1, z);
|
||||
if(b instanceof BlockLiquid || b instanceof BlockFluidBase || b.isBlockNormalCube()) {
|
||||
if(b instanceof BlockLiquid || b instanceof BlockFluidBase || b.isNormalCube()) {
|
||||
world.setBlock(x, y, z, Blocks.dirt);
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,14 +42,22 @@ public class BlastDoor extends BlockContainer implements IBomb, IMultiblock {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityBlastDoor entity = (TileEntityBlastDoor) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(!entity.isLocked()) {
|
||||
entity.tryToggle();
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityBlastDoor entity = (TileEntityBlastDoor) world.getTileEntity(x, y, z);
|
||||
if(entity != null) {
|
||||
|
||||
if(!entity.isLocked()) {
|
||||
entity.tryToggle();
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_INCOMPATIBLE;
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -26,18 +26,18 @@ public class BlockSeal extends Block implements IBomb {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon iconTop;
|
||||
|
||||
|
||||
public BlockSeal(Material p_i45394_1_) {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":seal_frame");
|
||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":seal_controller");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int metadata) {
|
||||
@ -46,101 +46,57 @@ public class BlockSeal extends Block implements IBomb {
|
||||
metadata += 4;
|
||||
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : (metadata == 0 && side == 3 ? this.blockIcon : (side == metadata ? this.blockIcon : this.iconTop)));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return Item.getItemFromBlock(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(World world, int x, int y, int z) {
|
||||
super.onBlockAdded(world, x, y, z);
|
||||
//this.setDefaultDirection(world, x, y, z);
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(this);
|
||||
}
|
||||
|
||||
private void setDefaultDirection(World world, int x, int y, int z) {
|
||||
if(!world.isRemote)
|
||||
{
|
||||
Block block1 = world.getBlock(x, y, z - 1);
|
||||
Block block2 = world.getBlock(x, y, z + 1);
|
||||
Block block3 = world.getBlock(x - 1, y, z);
|
||||
Block block4 = world.getBlock(x + 1, y, z);
|
||||
|
||||
byte b0 = 3;
|
||||
|
||||
if(block1.func_149730_j() && !block2.func_149730_j())
|
||||
{
|
||||
b0 = 3;
|
||||
}
|
||||
if(block2.func_149730_j() && !block1.func_149730_j())
|
||||
{
|
||||
b0 = 2;
|
||||
}
|
||||
if(block3.func_149730_j() && !block4.func_149730_j())
|
||||
{
|
||||
b0 = 1;
|
||||
}
|
||||
if(block4.func_149730_j() && !block3.func_149730_j())
|
||||
{
|
||||
b0 = 0;
|
||||
}
|
||||
|
||||
world.setBlockMetadataWithNotify(x, y, z, b0, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 1, 2);
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 0, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
int i = BlockSeal.getFrameSize(world, x, y, z);
|
||||
|
||||
|
||||
if(i != 0)
|
||||
if(BlockSeal.isSealClosed(world, x, y, z, i))
|
||||
BlockSeal.openSeal(world, x, y, z, i);
|
||||
else
|
||||
BlockSeal.closeSeal(world, x, y, z, i);
|
||||
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static int getFrameSize(World world, int x, int y, int z) {
|
||||
|
||||
|
||||
int max = 7;
|
||||
|
||||
for(int size = 1; size < max; size ++) {
|
||||
|
||||
|
||||
for(int size = 1; size < max; size++) {
|
||||
|
||||
boolean valid = true;
|
||||
|
||||
|
||||
int xOff = 0;
|
||||
int zOff = 0;
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 2)
|
||||
@ -152,43 +108,38 @@ public class BlockSeal extends Block implements IBomb {
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 1)
|
||||
xOff -= size;
|
||||
|
||||
for(int X = x - size; X <= x + size; X ++) {
|
||||
if(world.getBlock(X + xOff, y, z + size + zOff) != ModBlocks.seal_frame &&
|
||||
world.getBlock(X + xOff, y, z + size + zOff) != ModBlocks.seal_controller)
|
||||
for(int X = x - size; X <= x + size; X++) {
|
||||
if(world.getBlock(X + xOff, y, z + size + zOff) != ModBlocks.seal_frame && world.getBlock(X + xOff, y, z + size + zOff) != ModBlocks.seal_controller)
|
||||
valid = false;
|
||||
}
|
||||
for(int X = x - size; X <= x + size; X ++) {
|
||||
if(world.getBlock(X + xOff, y, z - size + zOff) != ModBlocks.seal_frame &&
|
||||
world.getBlock(X + xOff, y, z - size + zOff) != ModBlocks.seal_controller)
|
||||
for(int X = x - size; X <= x + size; X++) {
|
||||
if(world.getBlock(X + xOff, y, z - size + zOff) != ModBlocks.seal_frame && world.getBlock(X + xOff, y, z - size + zOff) != ModBlocks.seal_controller)
|
||||
valid = false;
|
||||
}
|
||||
for(int Z = z - size; Z <= z + size; Z ++) {
|
||||
if(world.getBlock(x - size + xOff, y, Z + zOff) != ModBlocks.seal_frame &&
|
||||
world.getBlock(x - size + xOff, y, Z + zOff) != ModBlocks.seal_controller)
|
||||
for(int Z = z - size; Z <= z + size; Z++) {
|
||||
if(world.getBlock(x - size + xOff, y, Z + zOff) != ModBlocks.seal_frame && world.getBlock(x - size + xOff, y, Z + zOff) != ModBlocks.seal_controller)
|
||||
valid = false;
|
||||
}
|
||||
for(int Z = z - size; Z <= z + size; Z ++) {
|
||||
if(world.getBlock(x + size + xOff, y, Z + zOff) != ModBlocks.seal_frame &&
|
||||
world.getBlock(x + size + xOff, y, Z + zOff) != ModBlocks.seal_controller)
|
||||
for(int Z = z - size; Z <= z + size; Z++) {
|
||||
if(world.getBlock(x + size + xOff, y, Z + zOff) != ModBlocks.seal_frame && world.getBlock(x + size + xOff, y, Z + zOff) != ModBlocks.seal_controller)
|
||||
valid = false;
|
||||
}
|
||||
/*for(int X = x - size + 1; X <= x + size - 1; X++) {
|
||||
for(int Z = z - size + 1; Z <= z + size - 1; Z++) {
|
||||
//if(world.getBlock(X + size + xOff, y, Z + zOff) != ModBlocks.block_steel &&
|
||||
// world.getBlock(X + size + xOff, y, Z + zOff) != Blocks.air)
|
||||
// valid = false;
|
||||
world.setBlock(X + xOff, y, Z + zOff, ModBlocks.block_steel);
|
||||
System.out.println(valid);
|
||||
}
|
||||
}*/
|
||||
|
||||
/*
|
||||
* for(int X = x - size + 1; X <= x + size - 1; X++) { for(int Z = z
|
||||
* - size + 1; Z <= z + size - 1; Z++) { //if(world.getBlock(X +
|
||||
* size + xOff, y, Z + zOff) != ModBlocks.block_steel && //
|
||||
* world.getBlock(X + size + xOff, y, Z + zOff) != Blocks.air) //
|
||||
* valid = false; world.setBlock(X + xOff, y, Z + zOff,
|
||||
* ModBlocks.block_steel); System.out.println(valid); } }
|
||||
*/
|
||||
|
||||
if(valid)
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
public static void closeSeal(World world, int x, int y, int z, int size) {
|
||||
|
||||
int xOff = 0;
|
||||
@ -201,22 +152,22 @@ public class BlockSeal extends Block implements IBomb {
|
||||
xOff += size;
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 1)
|
||||
xOff -= size;
|
||||
|
||||
|
||||
for(int X = x - size + 1; X <= x + size - 1; X++) {
|
||||
for(int Z = z - size + 1; Z <= z + size - 1; Z++) {
|
||||
if(world.getBlock(X + xOff, y, Z + zOff) == Blocks.air && !world.isRemote) {
|
||||
world.setBlock(X + xOff, y, Z + zOff, ModBlocks.seal_hatch);
|
||||
TileEntity te = world.getTileEntity(X + xOff, y, Z + zOff);
|
||||
if(te != null && te instanceof TileEntityHatch)
|
||||
((TileEntityHatch)te).setControllerPos(x, y, z);
|
||||
|
||||
((TileEntityHatch) te).setControllerPos(x, y, z);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void openSeal(World world, int x, int y, int z, int size) {
|
||||
|
||||
|
||||
int xOff = 0;
|
||||
int zOff = 0;
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 2)
|
||||
@ -227,7 +178,7 @@ public class BlockSeal extends Block implements IBomb {
|
||||
xOff += size;
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 1)
|
||||
xOff -= size;
|
||||
|
||||
|
||||
for(int X = x - size + 1; X <= x + size - 1; X++) {
|
||||
for(int Z = z - size + 1; Z <= z + size - 1; Z++) {
|
||||
if(world.getBlock(X + xOff, y, Z + zOff) == ModBlocks.seal_hatch && !world.isRemote) {
|
||||
@ -236,9 +187,9 @@ public class BlockSeal extends Block implements IBomb {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static boolean isSealClosed(World world, int x, int y, int z, int size) {
|
||||
|
||||
|
||||
int xOff = 0;
|
||||
int zOff = 0;
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 2)
|
||||
@ -249,7 +200,7 @@ public class BlockSeal extends Block implements IBomb {
|
||||
xOff += size;
|
||||
if(world.getBlockMetadata(x, y, z) % 4 == 1)
|
||||
xOff -= size;
|
||||
|
||||
|
||||
for(int X = x - size + 1; X <= x + size - 1; X++) {
|
||||
for(int Z = z - size + 1; Z <= z + size - 1; Z++) {
|
||||
if(world.getBlock(X + xOff, y, Z + zOff) == ModBlocks.seal_hatch) {
|
||||
@ -257,47 +208,53 @@ public class BlockSeal extends Block implements IBomb {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
int i = BlockSeal.getFrameSize(world, x, y, z);
|
||||
|
||||
if(i != 0)
|
||||
if(BlockSeal.isSealClosed(world, x, y, z, i))
|
||||
BlockSeal.openSeal(world, x, y, z, i);
|
||||
else
|
||||
BlockSeal.closeSeal(world, x, y, z, i);
|
||||
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
int i = BlockSeal.getFrameSize(world, x, y, z);
|
||||
|
||||
if(i != 0) {
|
||||
if(BlockSeal.isSealClosed(world, x, y, z, i)) {
|
||||
BlockSeal.openSeal(world, x, y, z, i);
|
||||
} else {
|
||||
BlockSeal.closeSeal(world, x, y, z, i);
|
||||
}
|
||||
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
|
||||
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta < 4) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, meta + 4, 2);
|
||||
|
||||
int i = BlockSeal.getFrameSize(world, x, y, z);
|
||||
|
||||
if(i != 0)
|
||||
if(BlockSeal.isSealClosed(world, x, y, z, i))
|
||||
BlockSeal.openSeal(world, x, y, z, i);
|
||||
else
|
||||
BlockSeal.closeSeal(world, x, y, z, i);
|
||||
}
|
||||
} else {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta >= 4) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, meta % 4, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block block)
|
||||
{
|
||||
if (world.isBlockIndirectlyGettingPowered(x, y, z))
|
||||
{
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta < 4) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, meta + 4, 2);
|
||||
|
||||
int i = BlockSeal.getFrameSize(world, x, y, z);
|
||||
|
||||
if(i != 0)
|
||||
if(BlockSeal.isSealClosed(world, x, y, z, i))
|
||||
BlockSeal.openSeal(world, x, y, z, i);
|
||||
else
|
||||
BlockSeal.closeSeal(world, x, y, z, i);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta >= 4) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, meta % 4, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -109,20 +109,26 @@ public class DummyBlockBlast extends BlockContainer implements IDummy, IBomb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
if(!world.isRemote) {
|
||||
|
||||
TileEntityBlastDoor entity = (TileEntityBlastDoor) world.getTileEntity(a, b, c);
|
||||
if(entity != null && !entity.isLocked())
|
||||
{
|
||||
entity.tryToggle();
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
|
||||
TileEntityBlastDoor entity = (TileEntityBlastDoor) world.getTileEntity(a, b, c);
|
||||
if(entity != null && !entity.isLocked()) {
|
||||
entity.tryToggle();
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,22 +33,21 @@ public class DummyBlockVault extends BlockContainer implements IDummy, IBomb {
|
||||
return new TileEntityDummy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int i)
|
||||
{
|
||||
if(!safeBreak) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
|
||||
if(!world.isRemote)
|
||||
world.func_147480_a(a, b, c, true);
|
||||
}
|
||||
}
|
||||
world.removeTileEntity(x, y, z);
|
||||
}
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int i) {
|
||||
if(!safeBreak) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy) te).targetX;
|
||||
int b = ((TileEntityDummy) te).targetY;
|
||||
int c = ((TileEntityDummy) te).targetZ;
|
||||
|
||||
if(!world.isRemote)
|
||||
world.func_147480_a(a, b, c, true);
|
||||
}
|
||||
}
|
||||
world.removeTileEntity(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
@ -64,80 +63,79 @@ public class DummyBlockVault extends BlockContainer implements IDummy, IBomb {
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Item getItem(World world, int x, int y, int z)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.vault_door);
|
||||
}
|
||||
|
||||
public Item getItem(World world, int x, int y, int z) {
|
||||
return Item.getItemFromBlock(ModBlocks.vault_door);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) {
|
||||
return false;
|
||||
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntity til = world.getTileEntity(x, y, z);
|
||||
if(til != null && til instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)til).targetX;
|
||||
int b = ((TileEntityDummy)til).targetY;
|
||||
int c = ((TileEntityDummy)til).targetZ;
|
||||
|
||||
int a = ((TileEntityDummy) til).targetX;
|
||||
int b = ((TileEntityDummy) til).targetY;
|
||||
int c = ((TileEntityDummy) til).targetZ;
|
||||
|
||||
TileEntityVaultDoor entity = (TileEntityVaultDoor) world.getTileEntity(a, b, c);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
if(entity.canAccess(player))
|
||||
entity.tryToggle();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
} else {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
|
||||
int a = ((TileEntityDummy) te).targetX;
|
||||
int b = ((TileEntityDummy) te).targetY;
|
||||
int c = ((TileEntityDummy) te).targetZ;
|
||||
|
||||
TileEntityVaultDoor entity = (TileEntityVaultDoor) world.getTileEntity(a, b, c);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
entity.type++;
|
||||
if(entity.type >= entity.maxTypes)
|
||||
entity.type = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
|
||||
TileEntityVaultDoor entity = (TileEntityVaultDoor) world.getTileEntity(a, b, c);
|
||||
if(entity != null && !entity.isLocked())
|
||||
{
|
||||
entity.tryToggle();
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy) te).targetX;
|
||||
int b = ((TileEntityDummy) te).targetY;
|
||||
int c = ((TileEntityDummy) te).targetZ;
|
||||
|
||||
TileEntityVaultDoor entity = (TileEntityVaultDoor) world.getTileEntity(a, b, c);
|
||||
if(entity != null && !entity.isLocked()) {
|
||||
entity.tryToggle();
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,212 +25,112 @@ public class VaultDoor extends BlockContainer implements IBomb, IMultiblock {
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityVaultDoor();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void explode(World world, int x, int y, int z) {
|
||||
TileEntityVaultDoor te = (TileEntityVaultDoor) world.getTileEntity(x, y, z);
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityVaultDoor te = (TileEntityVaultDoor) world.getTileEntity(x, y, z);
|
||||
|
||||
if(!te.isLocked()) {
|
||||
te.tryToggle();
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
if(!te.isLocked())
|
||||
te.tryToggle();
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
|
||||
|
||||
TileEntityVaultDoor te = (TileEntityVaultDoor) world.getTileEntity(x, y, z);
|
||||
|
||||
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0)
|
||||
{
|
||||
|
||||
if(i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
|
||||
//frame
|
||||
if(!(te.placeDummy(x + 1, y, z) &&
|
||||
te.placeDummy(x + 2, y, z) &&
|
||||
te.placeDummy(x + 2, y + 1, z) &&
|
||||
te.placeDummy(x + 2, y + 2, z) &&
|
||||
te.placeDummy(x + 2, y + 3, z) &&
|
||||
te.placeDummy(x + 2, y + 4, z) &&
|
||||
te.placeDummy(x + 1, y + 4, z) &&
|
||||
te.placeDummy(x, y + 4, z) &&
|
||||
te.placeDummy(x - 1, y + 4, z) &&
|
||||
te.placeDummy(x - 2, y + 4, z) &&
|
||||
te.placeDummy(x - 2, y + 3, z) &&
|
||||
te.placeDummy(x - 2, y + 2, z) &&
|
||||
te.placeDummy(x - 2, y + 1, z) &&
|
||||
te.placeDummy(x - 2, y, z) &&
|
||||
te.placeDummy(x - 1, y, z) &&
|
||||
//cog
|
||||
te.placeDummy(x - 1, y + 1, z) &&
|
||||
te.placeDummy(x - 1, y + 2, z) &&
|
||||
te.placeDummy(x - 1, y + 3, z) &&
|
||||
te.placeDummy(x, y + 1, z) &&
|
||||
te.placeDummy(x, y + 2, z) &&
|
||||
te.placeDummy(x, y + 3, z) &&
|
||||
te.placeDummy(x + 1, y + 1, z) &&
|
||||
te.placeDummy(x + 1, y + 2, z) &&
|
||||
te.placeDummy(x + 1, y + 3, z) &&
|
||||
//teeth
|
||||
te.placeDummy(x + 2, y, z + 1) &&
|
||||
te.placeDummy(x + 1, y, z + 1) &&
|
||||
te.placeDummy(x, y, z + 1) &&
|
||||
te.placeDummy(x - 1, y, z + 1) &&
|
||||
te.placeDummy(x - 2, y, z + 1))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
|
||||
// frame
|
||||
if(!(te.placeDummy(x + 1, y, z) && te.placeDummy(x + 2, y, z) && te.placeDummy(x + 2, y + 1, z) && te.placeDummy(x + 2, y + 2, z) && te.placeDummy(x + 2, y + 3, z) && te.placeDummy(x + 2, y + 4, z) && te.placeDummy(x + 1, y + 4, z) && te.placeDummy(x, y + 4, z) && te.placeDummy(x - 1, y + 4, z) && te.placeDummy(x - 2, y + 4, z) && te.placeDummy(x - 2, y + 3, z) && te.placeDummy(x - 2, y + 2, z) && te.placeDummy(x - 2, y + 1, z) && te.placeDummy(x - 2, y, z) && te.placeDummy(x - 1, y, z) &&
|
||||
// cog
|
||||
te.placeDummy(x - 1, y + 1, z) && te.placeDummy(x - 1, y + 2, z) && te.placeDummy(x - 1, y + 3, z) && te.placeDummy(x, y + 1, z) && te.placeDummy(x, y + 2, z) && te.placeDummy(x, y + 3, z) && te.placeDummy(x + 1, y + 1, z) && te.placeDummy(x + 1, y + 2, z) && te.placeDummy(x + 1, y + 3, z) &&
|
||||
// teeth
|
||||
te.placeDummy(x + 2, y, z + 1) && te.placeDummy(x + 1, y, z + 1) && te.placeDummy(x, y, z + 1) && te.placeDummy(x - 1, y, z + 1) && te.placeDummy(x - 2, y, z + 1))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
if(i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
|
||||
//frame
|
||||
if(!(te.placeDummy(x, y, z + 1) &&
|
||||
te.placeDummy(x, y, z + 2) &&
|
||||
te.placeDummy(x, y + 1, z + 2) &&
|
||||
te.placeDummy(x, y + 2, z + 2) &&
|
||||
te.placeDummy(x, y + 3, z + 2) &&
|
||||
te.placeDummy(x, y + 4, z + 2) &&
|
||||
te.placeDummy(x, y + 4, z + 1) &&
|
||||
te.placeDummy(x, y + 4, z) &&
|
||||
te.placeDummy(x, y + 4, z - 1) &&
|
||||
te.placeDummy(x, y + 4, z - 2) &&
|
||||
te.placeDummy(x, y + 3, z - 2) &&
|
||||
te.placeDummy(x, y + 2, z - 2) &&
|
||||
te.placeDummy(x, y + 1, z - 2) &&
|
||||
te.placeDummy(x, y, z - 2) &&
|
||||
te.placeDummy(x, y, z - 1) &&
|
||||
//cog
|
||||
te.placeDummy(x, y + 1, z - 1) &&
|
||||
te.placeDummy(x, y + 2, z - 1) &&
|
||||
te.placeDummy(x, y + 3, z - 1) &&
|
||||
te.placeDummy(x, y + 1, z) &&
|
||||
te.placeDummy(x, y + 2, z) &&
|
||||
te.placeDummy(x, y + 3, z) &&
|
||||
te.placeDummy(x, y + 1, z + 1) &&
|
||||
te.placeDummy(x, y + 2, z + 1) &&
|
||||
te.placeDummy(x, y + 3, z + 1) &&
|
||||
//teeth
|
||||
te.placeDummy(x - 1, y, z + 2) &&
|
||||
te.placeDummy(x - 1, y, z + 1) &&
|
||||
te.placeDummy(x - 1, y, z) &&
|
||||
te.placeDummy(x - 1, y, z - 1) &&
|
||||
te.placeDummy(x - 1, y, z - 2))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
|
||||
// frame
|
||||
if(!(te.placeDummy(x, y, z + 1) && te.placeDummy(x, y, z + 2) && te.placeDummy(x, y + 1, z + 2) && te.placeDummy(x, y + 2, z + 2) && te.placeDummy(x, y + 3, z + 2) && te.placeDummy(x, y + 4, z + 2) && te.placeDummy(x, y + 4, z + 1) && te.placeDummy(x, y + 4, z) && te.placeDummy(x, y + 4, z - 1) && te.placeDummy(x, y + 4, z - 2) && te.placeDummy(x, y + 3, z - 2) && te.placeDummy(x, y + 2, z - 2) && te.placeDummy(x, y + 1, z - 2) && te.placeDummy(x, y, z - 2) && te.placeDummy(x, y, z - 1) &&
|
||||
// cog
|
||||
te.placeDummy(x, y + 1, z - 1) && te.placeDummy(x, y + 2, z - 1) && te.placeDummy(x, y + 3, z - 1) && te.placeDummy(x, y + 1, z) && te.placeDummy(x, y + 2, z) && te.placeDummy(x, y + 3, z) && te.placeDummy(x, y + 1, z + 1) && te.placeDummy(x, y + 2, z + 1) && te.placeDummy(x, y + 3, z + 1) &&
|
||||
// teeth
|
||||
te.placeDummy(x - 1, y, z + 2) && te.placeDummy(x - 1, y, z + 1) && te.placeDummy(x - 1, y, z) && te.placeDummy(x - 1, y, z - 1) && te.placeDummy(x - 1, y, z - 2))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
if(i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
|
||||
//frame
|
||||
if(!(te.placeDummy(x + 1, y, z) &&
|
||||
te.placeDummy(x + 2, y, z) &&
|
||||
te.placeDummy(x + 2, y + 1, z) &&
|
||||
te.placeDummy(x + 2, y + 2, z) &&
|
||||
te.placeDummy(x + 2, y + 3, z) &&
|
||||
te.placeDummy(x + 2, y + 4, z) &&
|
||||
te.placeDummy(x + 1, y + 4, z) &&
|
||||
te.placeDummy(x, y + 4, z) &&
|
||||
te.placeDummy(x - 1, y + 4, z) &&
|
||||
te.placeDummy(x - 2, y + 4, z) &&
|
||||
te.placeDummy(x - 2, y + 3, z) &&
|
||||
te.placeDummy(x - 2, y + 2, z) &&
|
||||
te.placeDummy(x - 2, y + 1, z) &&
|
||||
te.placeDummy(x - 2, y, z) &&
|
||||
te.placeDummy(x - 1, y, z) &&
|
||||
//cog
|
||||
te.placeDummy(x - 1, y + 1, z) &&
|
||||
te.placeDummy(x - 1, y + 2, z) &&
|
||||
te.placeDummy(x - 1, y + 3, z) &&
|
||||
te.placeDummy(x, y + 1, z) &&
|
||||
te.placeDummy(x, y + 2, z) &&
|
||||
te.placeDummy(x, y + 3, z) &&
|
||||
te.placeDummy(x + 1, y + 1, z) &&
|
||||
te.placeDummy(x + 1, y + 2, z) &&
|
||||
te.placeDummy(x + 1, y + 3, z) &&
|
||||
//teeth
|
||||
te.placeDummy(x + 2, y, z - 1) &&
|
||||
te.placeDummy(x + 1, y, z - 1) &&
|
||||
te.placeDummy(x, y, z - 1) &&
|
||||
te.placeDummy(x - 1, y, z - 1) &&
|
||||
te.placeDummy(x - 2, y, z - 1))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
|
||||
// frame
|
||||
if(!(te.placeDummy(x + 1, y, z) && te.placeDummy(x + 2, y, z) && te.placeDummy(x + 2, y + 1, z) && te.placeDummy(x + 2, y + 2, z) && te.placeDummy(x + 2, y + 3, z) && te.placeDummy(x + 2, y + 4, z) && te.placeDummy(x + 1, y + 4, z) && te.placeDummy(x, y + 4, z) && te.placeDummy(x - 1, y + 4, z) && te.placeDummy(x - 2, y + 4, z) && te.placeDummy(x - 2, y + 3, z) && te.placeDummy(x - 2, y + 2, z) && te.placeDummy(x - 2, y + 1, z) && te.placeDummy(x - 2, y, z) && te.placeDummy(x - 1, y, z) &&
|
||||
// cog
|
||||
te.placeDummy(x - 1, y + 1, z) && te.placeDummy(x - 1, y + 2, z) && te.placeDummy(x - 1, y + 3, z) && te.placeDummy(x, y + 1, z) && te.placeDummy(x, y + 2, z) && te.placeDummy(x, y + 3, z) && te.placeDummy(x + 1, y + 1, z) && te.placeDummy(x + 1, y + 2, z) && te.placeDummy(x + 1, y + 3, z) &&
|
||||
// teeth
|
||||
te.placeDummy(x + 2, y, z - 1) && te.placeDummy(x + 1, y, z - 1) && te.placeDummy(x, y, z - 1) && te.placeDummy(x - 1, y, z - 1) && te.placeDummy(x - 2, y, z - 1))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
}
|
||||
if(i == 3)
|
||||
{
|
||||
if(i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
|
||||
//frame
|
||||
if(!(te.placeDummy(x, y, z + 1) &&
|
||||
te.placeDummy(x, y, z + 2) &&
|
||||
te.placeDummy(x, y + 1, z + 2) &&
|
||||
te.placeDummy(x, y + 2, z + 2) &&
|
||||
te.placeDummy(x, y + 3, z + 2) &&
|
||||
te.placeDummy(x, y + 4, z + 2) &&
|
||||
te.placeDummy(x, y + 4, z + 1) &&
|
||||
te.placeDummy(x, y + 4, z) &&
|
||||
te.placeDummy(x, y + 4, z - 1) &&
|
||||
te.placeDummy(x, y + 4, z - 2) &&
|
||||
te.placeDummy(x, y + 3, z - 2) &&
|
||||
te.placeDummy(x, y + 2, z - 2) &&
|
||||
te.placeDummy(x, y + 1, z - 2) &&
|
||||
te.placeDummy(x, y, z - 2) &&
|
||||
te.placeDummy(x, y, z - 1) &&
|
||||
//cog
|
||||
te.placeDummy(x, y + 1, z - 1) &&
|
||||
te.placeDummy(x, y + 2, z - 1) &&
|
||||
te.placeDummy(x, y + 3, z - 1) &&
|
||||
te.placeDummy(x, y + 1, z) &&
|
||||
te.placeDummy(x, y + 2, z) &&
|
||||
te.placeDummy(x, y + 3, z) &&
|
||||
te.placeDummy(x, y + 1, z + 1) &&
|
||||
te.placeDummy(x, y + 2, z + 1) &&
|
||||
te.placeDummy(x, y + 3, z + 1) &&
|
||||
//teeth
|
||||
te.placeDummy(x + 1, y, z + 2) &&
|
||||
te.placeDummy(x + 1, y, z + 1) &&
|
||||
te.placeDummy(x + 1, y, z) &&
|
||||
te.placeDummy(x + 1, y, z - 1) &&
|
||||
te.placeDummy(x + 1, y, z - 2))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
|
||||
// frame
|
||||
if(!(te.placeDummy(x, y, z + 1) && te.placeDummy(x, y, z + 2) && te.placeDummy(x, y + 1, z + 2) && te.placeDummy(x, y + 2, z + 2) && te.placeDummy(x, y + 3, z + 2) && te.placeDummy(x, y + 4, z + 2) && te.placeDummy(x, y + 4, z + 1) && te.placeDummy(x, y + 4, z) && te.placeDummy(x, y + 4, z - 1) && te.placeDummy(x, y + 4, z - 2) && te.placeDummy(x, y + 3, z - 2) && te.placeDummy(x, y + 2, z - 2) && te.placeDummy(x, y + 1, z - 2) && te.placeDummy(x, y, z - 2) && te.placeDummy(x, y, z - 1) &&
|
||||
// cog
|
||||
te.placeDummy(x, y + 1, z - 1) && te.placeDummy(x, y + 2, z - 1) && te.placeDummy(x, y + 3, z - 1) && te.placeDummy(x, y + 1, z) && te.placeDummy(x, y + 2, z) && te.placeDummy(x, y + 3, z) && te.placeDummy(x, y + 1, z + 1) && te.placeDummy(x, y + 2, z + 1) && te.placeDummy(x, y + 3, z + 1) &&
|
||||
// teeth
|
||||
te.placeDummy(x + 1, y, z + 2) && te.placeDummy(x + 1, y, z + 1) && te.placeDummy(x + 1, y, z) && te.placeDummy(x + 1, y, z - 1) && te.placeDummy(x + 1, y, z - 2))) {
|
||||
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) {
|
||||
return false;
|
||||
|
||||
} if(!player.isSneaking()) {
|
||||
|
||||
|
||||
}
|
||||
if(!player.isSneaking()) {
|
||||
|
||||
TileEntityVaultDoor entity = (TileEntityVaultDoor) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
if(entity.isLocked()) {
|
||||
if(entity.canAccess(player))
|
||||
entity.tryToggle();
|
||||
@ -238,18 +138,17 @@ public class VaultDoor extends BlockContainer implements IBomb, IMultiblock {
|
||||
entity.tryToggle();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
} else {
|
||||
|
||||
|
||||
TileEntityVaultDoor entity = (TileEntityVaultDoor) world.getTileEntity(x, y, z);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
entity.type++;
|
||||
if(entity.type >= entity.maxTypes)
|
||||
entity.type = 0;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,7 +11,9 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class PylonLarge extends BlockDummyable implements ITooltipProvider {
|
||||
|
||||
@ -36,7 +38,7 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider {
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 1, 1, 1, 1};
|
||||
return new int[] {13, 0, 1, 1, 1, 1};
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -46,6 +48,24 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider {
|
||||
|
||||
@Override
|
||||
protected int getMetaForCore(World world, int x, int y, int z, EntityPlayer player, int original) {
|
||||
return original;
|
||||
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 180.0F + 0.5D) & 3;
|
||||
|
||||
ForgeDirection dir = ForgeDirection.NORTH;
|
||||
|
||||
if(i == 0) {
|
||||
dir = ForgeDirection.getOrientation(2);
|
||||
}
|
||||
if(i == 1) {
|
||||
dir = ForgeDirection.getOrientation(5);
|
||||
}
|
||||
if(i == 2) {
|
||||
dir = ForgeDirection.getOrientation(3);
|
||||
}
|
||||
if(i == 3) {
|
||||
dir = ForgeDirection.getOrientation(4);
|
||||
}
|
||||
|
||||
return dir.ordinal() + offset;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,5 +10,41 @@ public interface IBomb {
|
||||
//Months later I found this joke again
|
||||
//I'm not even sorry
|
||||
|
||||
void explode(World world, int x, int y, int z);
|
||||
/**
|
||||
* Triggers the bomb and generates a return code. Since most bombs have a serverside inventory, the return code
|
||||
* should only be processed serverside, what's returned on the client should be ignored.
|
||||
* Ofen invoked by onNeighborBlockChanged, so in any case make sure to check for world-remoteness.
|
||||
* @param world
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
* @return
|
||||
*/
|
||||
public BombReturnCode explode(World world, int x, int y, int z);
|
||||
|
||||
public static enum BombReturnCode {
|
||||
UNDEFINED(false, ""), //non-null type for passing to clients that don't process the return code
|
||||
DETONATED(true, "bomb.detonated"), //success for blowing up bombs
|
||||
TRIGGERED(true, "bomb.triggered"), //success for triggering other things
|
||||
LAUNCHED(true, "bomb.launched"), //success for launching missiles
|
||||
ERROR_MISSING_COMPONENT(false, "bomb.missingComponent"), //error for bomb parts missing
|
||||
ERROR_INCOMPATIBLE(false, "bomb.incompatible"), //error for target being incompatible (but still implements IBomb for some reason), like locked blast doors
|
||||
ERROR_NO_BOMB(false, "bomb.nobomb"); //not to be used by the bombs themselves, this is the generic error when trying to trigger no-bomb blocks
|
||||
|
||||
private String unloc;
|
||||
private boolean success;
|
||||
|
||||
private BombReturnCode(boolean success, String unloc) {
|
||||
this.unloc = unloc;
|
||||
this.success = success;
|
||||
}
|
||||
|
||||
public String getUnlocalizedMessage() {
|
||||
return this.unloc;
|
||||
}
|
||||
|
||||
public boolean wasSuccessful() {
|
||||
return this.success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
89
src/main/java/com/hbm/inventory/SlotSmelting.java
Normal file
89
src/main/java/com/hbm/inventory/SlotSmelting.java
Normal file
@ -0,0 +1,89 @@
|
||||
package com.hbm.inventory;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import net.minecraft.entity.item.EntityXPOrb;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.stats.AchievementList;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
public class SlotSmelting extends Slot {
|
||||
|
||||
private EntityPlayer thePlayer;
|
||||
private int itemCountBuffer;
|
||||
|
||||
public SlotSmelting(EntityPlayer player, IInventory inv, int id, int x, int y) {
|
||||
super(inv, id, x, y);
|
||||
this.thePlayer = player;
|
||||
}
|
||||
|
||||
public boolean isItemValid(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public ItemStack decrStackSize(int amount) {
|
||||
|
||||
if(this.getHasStack()) {
|
||||
this.itemCountBuffer += Math.min(amount, this.getStack().stackSize);
|
||||
}
|
||||
|
||||
return super.decrStackSize(amount);
|
||||
}
|
||||
|
||||
public void onPickupFromSlot(EntityPlayer player, ItemStack stack) {
|
||||
this.onCrafting(stack);
|
||||
super.onPickupFromSlot(player, stack);
|
||||
}
|
||||
|
||||
protected void onCrafting(ItemStack stack, int amount) {
|
||||
this.itemCountBuffer += amount;
|
||||
this.onCrafting(stack);
|
||||
}
|
||||
|
||||
protected void onCrafting(ItemStack stack) {
|
||||
|
||||
stack.onCrafting(this.thePlayer.worldObj, this.thePlayer, this.itemCountBuffer);
|
||||
|
||||
if(!this.thePlayer.worldObj.isRemote) {
|
||||
|
||||
int buffer = this.itemCountBuffer;
|
||||
float exp = FurnaceRecipes.smelting().func_151398_b(stack);
|
||||
int remainingExp;
|
||||
|
||||
if(exp == 0.0F) {
|
||||
buffer = 0;
|
||||
|
||||
} else if(exp < 1.0F) {
|
||||
remainingExp = MathHelper.floor_float((float) buffer * exp);
|
||||
|
||||
if(remainingExp < MathHelper.ceiling_float_int((float) buffer * exp) && (float) Math.random() < (float) buffer * exp - (float) remainingExp) {
|
||||
++remainingExp;
|
||||
}
|
||||
|
||||
buffer = remainingExp;
|
||||
}
|
||||
|
||||
while(buffer > 0) {
|
||||
remainingExp = EntityXPOrb.getXPSplit(buffer);
|
||||
buffer -= remainingExp;
|
||||
this.thePlayer.worldObj.spawnEntityInWorld(new EntityXPOrb(this.thePlayer.worldObj, this.thePlayer.posX, this.thePlayer.posY + 0.5D, this.thePlayer.posZ + 0.5D, remainingExp));
|
||||
}
|
||||
}
|
||||
|
||||
this.itemCountBuffer = 0;
|
||||
|
||||
FMLCommonHandler.instance().firePlayerSmeltedEvent(thePlayer, stack);
|
||||
|
||||
if(stack.getItem() == Items.iron_ingot) {
|
||||
this.thePlayer.addStat(AchievementList.acquireIron, 1);
|
||||
}
|
||||
|
||||
if(stack.getItem() == Items.cooked_fished) {
|
||||
this.thePlayer.addStat(AchievementList.cookFish, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -15,12 +15,10 @@ public class ContainerDiFurnace extends Container {
|
||||
private TileEntityDiFurnace diFurnace;
|
||||
private int dualCookTime;
|
||||
private int dualPower;
|
||||
private int lastItemBurnTime;
|
||||
|
||||
public ContainerDiFurnace(InventoryPlayer invPlayer, TileEntityDiFurnace tedf) {
|
||||
dualCookTime = 0;
|
||||
dualPower = 0;
|
||||
lastItemBurnTime = 0;
|
||||
|
||||
diFurnace = tedf;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotMachineOutput;
|
||||
import com.hbm.inventory.SlotSmelting;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -11,71 +11,62 @@ import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerElectricFurnace extends Container {
|
||||
|
||||
|
||||
private TileEntityMachineElectricFurnace diFurnace;
|
||||
|
||||
|
||||
public ContainerElectricFurnace(InventoryPlayer invPlayer, TileEntityMachineElectricFurnace tedf) {
|
||||
|
||||
|
||||
diFurnace = tedf;
|
||||
|
||||
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 56, 53));
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 56, 17));
|
||||
this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 116, 35));
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 9; j++)
|
||||
{
|
||||
this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 2, 116, 35));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addCraftingToCrafters(ICrafting crafting) {
|
||||
super.addCraftingToCrafters(crafting);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
|
||||
{
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if (var4 != null && var4.getHasStack())
|
||||
{
|
||||
|
||||
if(var4 != null && var4.getHasStack()) {
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if (par2 <= 2) {
|
||||
if (!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true))
|
||||
{
|
||||
|
||||
if(par2 <= 2) {
|
||||
if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var4.onSlotChange(var5, var3);
|
||||
} else if(!this.mergeItemStack(var5, 1, 2, false)) {
|
||||
if(!this.mergeItemStack(var5, 0, 1, false))
|
||||
return null;
|
||||
}
|
||||
else if (!this.mergeItemStack(var5, 1, 2, false))
|
||||
{
|
||||
if (!this.mergeItemStack(var5, 0, 1, false))
|
||||
return null;
|
||||
}
|
||||
|
||||
if (var5.stackSize == 0)
|
||||
{
|
||||
|
||||
if(var5.stackSize == 0) {
|
||||
var4.putStack((ItemStack) null);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return var3;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotMachineOutput;
|
||||
import com.hbm.inventory.SlotSmelting;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineArcFurnace;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
@ -10,74 +10,66 @@ import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerMachineArcFurnace extends Container {
|
||||
|
||||
|
||||
private TileEntityMachineArcFurnace diFurnace;
|
||||
|
||||
|
||||
public ContainerMachineArcFurnace(InventoryPlayer invPlayer, TileEntityMachineArcFurnace tedf) {
|
||||
|
||||
|
||||
diFurnace = tedf;
|
||||
|
||||
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 56, 17));
|
||||
this.addSlotToContainer(new SlotMachineOutput(tedf, 1, 116, 35));
|
||||
this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 1, 116, 35));
|
||||
this.addSlotToContainer(new Slot(tedf, 2, 38, 53));
|
||||
this.addSlotToContainer(new Slot(tedf, 3, 56, 53));
|
||||
this.addSlotToContainer(new Slot(tedf, 4, 74, 53));
|
||||
this.addSlotToContainer(new Slot(tedf, 5, 8, 53));
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 9; j++)
|
||||
{
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addCraftingToCrafters(ICrafting crafting) {
|
||||
super.addCraftingToCrafters(crafting);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
|
||||
{
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if (var4 != null && var4.getHasStack())
|
||||
{
|
||||
|
||||
if(var4 != null && var4.getHasStack()) {
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if (par2 <= 5) {
|
||||
if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true))
|
||||
{
|
||||
|
||||
if(par2 <= 5) {
|
||||
if(!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var4.onSlotChange(var5, var3);
|
||||
|
||||
} else if(!this.mergeItemStack(var5, 0, 1, false)) {
|
||||
if(!this.mergeItemStack(var5, 2, 6, false))
|
||||
return null;
|
||||
}
|
||||
else if (!this.mergeItemStack(var5, 0, 1, false))
|
||||
{
|
||||
if (!this.mergeItemStack(var5, 2, 6, false))
|
||||
return null;
|
||||
}
|
||||
|
||||
if (var5.stackSize == 0)
|
||||
{
|
||||
|
||||
if(var5.stackSize == 0) {
|
||||
var4.putStack((ItemStack) null);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return var3;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
|
||||
@ -6,93 +6,98 @@ import org.apache.logging.log4j.Level;
|
||||
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.interfaces.IBomb.BombReturnCode;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ChatBuilder;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemDetonator extends Item {
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool)
|
||||
{
|
||||
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {
|
||||
list.add("Shift right-click to set position,");
|
||||
list.add("right-click to detonate!");
|
||||
if(itemstack.getTagCompound() == null)
|
||||
{
|
||||
list.add("No position set!");
|
||||
if(itemstack.getTagCompound() == null) {
|
||||
list.add(EnumChatFormatting.RED + "No position set!");
|
||||
} else {
|
||||
list.add("Set pos to " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z"));
|
||||
list.add(EnumChatFormatting.YELLOW + "Linked to " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_)
|
||||
{
|
||||
if(stack.stackTagCompound == null)
|
||||
{
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) {
|
||||
if(stack.stackTagCompound == null) {
|
||||
stack.stackTagCompound = new NBTTagCompound();
|
||||
}
|
||||
|
||||
if(player.isSneaking())
|
||||
{
|
||||
|
||||
if(player.isSneaking()) {
|
||||
stack.stackTagCompound.setInteger("x", x);
|
||||
stack.stackTagCompound.setInteger("y", y);
|
||||
stack.stackTagCompound.setInteger("z", z);
|
||||
|
||||
if(world.isRemote)
|
||||
{
|
||||
player.addChatMessage(new ChatComponentText("Position set!"));
|
||||
|
||||
if(!world.isRemote) {
|
||||
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
|
||||
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
|
||||
.next("] ").color(EnumChatFormatting.DARK_AQUA)
|
||||
.next("Position set!").color(EnumChatFormatting.GREEN).flush());
|
||||
}
|
||||
|
||||
world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F);
|
||||
|
||||
|
||||
world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(stack.stackTagCompound == null)
|
||||
{
|
||||
if(world.isRemote)
|
||||
player.addChatMessage(new ChatComponentText("Error: Position not set."));
|
||||
if(stack.stackTagCompound == null) {
|
||||
if(!world.isRemote) {
|
||||
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
|
||||
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
|
||||
.next("] ").color(EnumChatFormatting.DARK_AQUA)
|
||||
.next("No position set!").color(EnumChatFormatting.RED).flush());
|
||||
}
|
||||
} else {
|
||||
int x = stack.stackTagCompound.getInteger("x");
|
||||
int y = stack.stackTagCompound.getInteger("y");
|
||||
int z = stack.stackTagCompound.getInteger("z");
|
||||
|
||||
if(world.getBlock(x, y, z) instanceof IBomb)
|
||||
{
|
||||
world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F);
|
||||
if(!world.isRemote)
|
||||
{
|
||||
((IBomb)world.getBlock(x, y, z)).explode(world, x, y, z);
|
||||
int x = stack.stackTagCompound.getInteger("x");
|
||||
int y = stack.stackTagCompound.getInteger("y");
|
||||
int z = stack.stackTagCompound.getInteger("z");
|
||||
|
||||
if(GeneralConfig.enableExtendedLogging)
|
||||
MainRegistry.logger.log(Level.INFO, "[DET] Tried to detonate block at " + x + " / " + y + " / " + z + " by " + player.getDisplayName() + "!");
|
||||
if(world.getBlock(x, y, z) instanceof IBomb) {
|
||||
world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F);
|
||||
if(!world.isRemote) {
|
||||
BombReturnCode ret = ((IBomb) world.getBlock(x, y, z)).explode(world, x, y, z);
|
||||
|
||||
if(GeneralConfig.enableExtendedLogging)
|
||||
MainRegistry.logger.log(Level.INFO, "[DET] Tried to detonate block at " + x + " / " + y + " / " + z + " by " + player.getDisplayName() + "!");
|
||||
|
||||
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
|
||||
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
|
||||
.next("] ").color(EnumChatFormatting.DARK_AQUA)
|
||||
.nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush());
|
||||
}
|
||||
if(world.isRemote)
|
||||
{
|
||||
player.addChatMessage(new ChatComponentText("Detonated!"));
|
||||
|
||||
} else {
|
||||
if(!world.isRemote) {
|
||||
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
|
||||
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
|
||||
.next("] ").color(EnumChatFormatting.DARK_AQUA)
|
||||
.nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush());
|
||||
}
|
||||
} else {
|
||||
if(world.isRemote)
|
||||
{
|
||||
player.addChatMessage(new ChatComponentText("Error: Target incompatible or too far away."));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return stack;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,8 +2,10 @@ package com.hbm.items.tool;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.network.TileEntityPylonBase;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -16,13 +18,26 @@ public class ItemWiring extends Item {
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) {
|
||||
|
||||
if (!player.isSneaking()) {
|
||||
|
||||
if(!player.isSneaking()) {
|
||||
|
||||
Block b = world.getBlock(x, y, z);
|
||||
|
||||
if(b instanceof BlockDummyable) {
|
||||
int[] core = ((BlockDummyable)b).findCore(world, x, y, z);
|
||||
|
||||
if(core != null) {
|
||||
x = core[0];
|
||||
y = core[1];
|
||||
z = core[2];
|
||||
}
|
||||
}
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if (te != null && te instanceof TileEntityPylonBase) {
|
||||
if(te != null && te instanceof TileEntityPylonBase) {
|
||||
|
||||
if (stack.stackTagCompound == null) {
|
||||
if(stack.stackTagCompound == null) {
|
||||
stack.stackTagCompound = new NBTTagCompound();
|
||||
|
||||
stack.stackTagCompound.setInteger("x", x);
|
||||
@ -30,33 +45,33 @@ public class ItemWiring extends Item {
|
||||
stack.stackTagCompound.setInteger("z", z);
|
||||
|
||||
if(!world.isRemote) {
|
||||
player.addChatMessage(new ChatComponentText( "Wire start"));
|
||||
player.addChatMessage(new ChatComponentText("Wire start"));
|
||||
}
|
||||
} else if(!world.isRemote) {
|
||||
|
||||
|
||||
int x1 = stack.stackTagCompound.getInteger("x");
|
||||
int y1 = stack.stackTagCompound.getInteger("y");
|
||||
int z1 = stack.stackTagCompound.getInteger("z");
|
||||
|
||||
if (world.getTileEntity(x1, y1, z1) instanceof TileEntityPylonBase) {
|
||||
if(world.getTileEntity(x1, y1, z1) instanceof TileEntityPylonBase) {
|
||||
|
||||
TileEntityPylonBase first = (TileEntityPylonBase) world.getTileEntity(x1, y1, z1);
|
||||
TileEntityPylonBase second = ((TileEntityPylonBase) te);
|
||||
|
||||
|
||||
if(TileEntityPylonBase.canConnect(first, second)) {
|
||||
|
||||
|
||||
first.addConnection(x, y, z);
|
||||
second.addConnection(x1, y1, z1);
|
||||
player.addChatMessage(new ChatComponentText("Wire end"));
|
||||
|
||||
|
||||
} else {
|
||||
player.addChatMessage(new ChatComponentText("Wire error"));
|
||||
}
|
||||
|
||||
stack.stackTagCompound = null;
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
if(!world.isRemote) {
|
||||
player.addChatMessage(new ChatComponentText("Wire error"));
|
||||
}
|
||||
@ -74,7 +89,7 @@ public class ItemWiring extends Item {
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {
|
||||
if (itemstack.stackTagCompound != null) {
|
||||
if(itemstack.stackTagCompound != null) {
|
||||
list.add("Wire start x: " + itemstack.stackTagCompound.getInteger("x"));
|
||||
list.add("Wire start y: " + itemstack.stackTagCompound.getInteger("y"));
|
||||
list.add("Wire start z: " + itemstack.stackTagCompound.getInteger("z"));
|
||||
|
||||
@ -72,6 +72,14 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The closest we have to a does-all solution. It will figure out if it needs to draw multiple lines,
|
||||
* iterate through all the mounting points, try to find the matching mounting points and then draw the lines.
|
||||
* @param pyl
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
*/
|
||||
public void renderLinesGeneric(TileEntityPylonBase pyl, double x, double y, double z) {
|
||||
|
||||
for(int i = 0; i < pyl.connected.size(); i++) {
|
||||
@ -90,7 +98,25 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer {
|
||||
for(int line = 0; line < lineCount; line++) {
|
||||
|
||||
Vec3 first = m1[line % m1.length];
|
||||
Vec3 second = m2[line % m2.length];
|
||||
int secondIndex = line % m2.length;
|
||||
|
||||
/*
|
||||
* hacky hacky hack
|
||||
* this will shift the mount point order by 2 to prevent wires from crossing
|
||||
* when meta 12 and 15 pylons are connected. this isn't a great solution
|
||||
* and there's still ways to cross the wires in an ugly way but for now
|
||||
* it should be enough.
|
||||
*/
|
||||
if(lineCount == 4 && (
|
||||
(pyl.getBlockMetadata() - 10 == 5 && pylon.getBlockMetadata() - 10 == 2) ||
|
||||
(pyl.getBlockMetadata() - 10 == 2 && pylon.getBlockMetadata() - 10 == 5))) {
|
||||
|
||||
secondIndex += 2;
|
||||
secondIndex %= m2.length;
|
||||
}
|
||||
|
||||
Vec3 second = m2[secondIndex];
|
||||
|
||||
double sX = second.xCoord + pylon.xCoord - pyl.xCoord;
|
||||
double sY = second.yCoord + pylon.yCoord - pyl.yCoord;
|
||||
double sZ = second.zCoord + pylon.zCoord - pyl.zCoord;
|
||||
@ -107,6 +133,23 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders half a line
|
||||
* First coords: the relative render position
|
||||
* Second coords: the pylon's mounting point
|
||||
* Third coords: the midway point exactly between the mounting points. The "hang" doesn't need to be accounted for, it's calculated in here.
|
||||
* @param world
|
||||
* @param pyl
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
* @param x0
|
||||
* @param y0
|
||||
* @param z0
|
||||
* @param x1
|
||||
* @param y1
|
||||
* @param z1
|
||||
*/
|
||||
public void renderLine(World world, TileEntityPylonBase pyl, double x, double y, double z, double x0, double y0, double z0, double x1, double y1, double z1) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
@ -142,6 +185,17 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer {
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a single segment from the first to the second 3D coordinate.
|
||||
* Not fantastic but it looks good enough.
|
||||
* Possible enhancement: remove the draw calls and put those around the drawLineSegment calls for better-er performance
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
* @param a
|
||||
* @param b
|
||||
* @param c
|
||||
*/
|
||||
public void drawLineSegment(double x, double y, double z, double a, double b, double c) {
|
||||
|
||||
double girth = 0.03125D;
|
||||
@ -151,7 +205,7 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer {
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.startDrawing(5);
|
||||
tessellator.setColorOpaque_I(0xBB3311);
|
||||
tessellator.setColorOpaque_I(LINE_COLOR);
|
||||
tessellator.addVertex(x, y + girth, z);
|
||||
tessellator.addVertex(x, y - girth, z);
|
||||
tessellator.addVertex(a, b + girth, c);
|
||||
@ -169,4 +223,6 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer {
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}
|
||||
|
||||
public static final int LINE_COLOR = 0xBB3311;
|
||||
}
|
||||
|
||||
@ -3,9 +3,11 @@ package com.hbm.render.tileentity;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.network.TileEntityPylonLarge;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class RenderPylonLarge extends RenderPylonBase {
|
||||
@ -17,9 +19,9 @@ public class RenderPylonLarge extends RenderPylonBase {
|
||||
|
||||
switch(tile.getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(135, 0F, 1F, 0F); break;
|
||||
case 3: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(45, 0F, 1F, 0F); break;
|
||||
}
|
||||
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
|
||||
@ -25,18 +25,17 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT {
|
||||
return false;
|
||||
|
||||
double len = Math.min(first.getMaxWireLength(), second.getMaxWireLength());
|
||||
double lenSq = len * len;
|
||||
|
||||
Vec3 firstPos = first.getConnectionPoint();
|
||||
Vec3 secondPos = second.getConnectionPoint();
|
||||
|
||||
Vec3 delta = Vec3.createVectorHelper(
|
||||
(second.xCoord + secondPos.xCoord) - (first.xCoord + firstPos.xCoord),
|
||||
(second.yCoord + secondPos.yCoord) - (first.yCoord + firstPos.yCoord),
|
||||
(second.zCoord + secondPos.zCoord) - (first.zCoord + firstPos.zCoord)
|
||||
(secondPos.xCoord) - (firstPos.xCoord),
|
||||
(secondPos.yCoord) - (firstPos.yCoord),
|
||||
(secondPos.zCoord) - (firstPos.zCoord)
|
||||
);
|
||||
|
||||
return Math.sqrt(lenSq) >= delta.lengthVector();
|
||||
return len >= delta.lengthVector();
|
||||
}
|
||||
|
||||
public void addConnection(int x, int y, int z) {
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.tileentity.network;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
public class TileEntityPylonLarge extends TileEntityPylonBase {
|
||||
@ -13,11 +15,21 @@ public class TileEntityPylonLarge extends TileEntityPylonBase {
|
||||
public Vec3[] getMountPos() {
|
||||
double topOff = 0.75 + 0.0625;
|
||||
double sideOff = 3.375;
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(sideOff, 0, 0);
|
||||
|
||||
switch(getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 2: vec.rotateAroundY((float) Math.PI * 0.0F); break;
|
||||
case 4: vec.rotateAroundY((float) Math.PI * 0.25F); break;
|
||||
case 3: vec.rotateAroundY((float) Math.PI * 0.5F); break;
|
||||
case 5: vec.rotateAroundY((float) Math.PI * 0.75F); break;
|
||||
}
|
||||
|
||||
return new Vec3[] {
|
||||
Vec3.createVectorHelper(0.5 + sideOff, 11.5 + topOff, 0.5),
|
||||
Vec3.createVectorHelper(0.5 + sideOff, 11.5 - topOff, 0.5),
|
||||
Vec3.createVectorHelper(0.5 - sideOff, 11.5 + topOff, 0.5),
|
||||
Vec3.createVectorHelper(0.5 - sideOff, 11.5 - topOff, 0.5),
|
||||
Vec3.createVectorHelper(0.5 + vec.xCoord, 11.5 + topOff, 0.5 + vec.zCoord),
|
||||
Vec3.createVectorHelper(0.5 + vec.xCoord, 11.5 - topOff, 0.5 + vec.zCoord),
|
||||
Vec3.createVectorHelper(0.5 - vec.xCoord, 11.5 + topOff, 0.5 - vec.zCoord),
|
||||
Vec3.createVectorHelper(0.5 - vec.xCoord, 11.5 - topOff, 0.5 - vec.zCoord),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
47
src/main/java/com/hbm/util/ChatBuilder.java
Normal file
47
src/main/java/com/hbm/util/ChatBuilder.java
Normal file
@ -0,0 +1,47 @@
|
||||
package com.hbm.util;
|
||||
|
||||
import net.minecraft.util.ChatComponentStyle;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.ChatStyle;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
|
||||
public class ChatBuilder {
|
||||
|
||||
private ChatComponentText text;
|
||||
private ChatComponentStyle last;
|
||||
|
||||
private ChatBuilder(String text) {
|
||||
this.text = new ChatComponentText(text);
|
||||
this.last = this.text;
|
||||
}
|
||||
|
||||
public static ChatBuilder start(String text) {
|
||||
ChatBuilder builder = new ChatBuilder(text);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ChatBuilder next(String text) {
|
||||
ChatComponentText append = new ChatComponentText(text);
|
||||
this.last.appendSibling(append);
|
||||
this.last = append;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ChatBuilder nextTranslation(String text) {
|
||||
ChatComponentTranslation append = new ChatComponentTranslation(text);
|
||||
this.last.appendSibling(append);
|
||||
this.last = append;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ChatBuilder color(EnumChatFormatting format) {
|
||||
ChatStyle style = this.last.getChatStyle();
|
||||
style.setColor(format);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ChatComponentText flush() {
|
||||
return this.text;
|
||||
}
|
||||
}
|
||||
@ -100,6 +100,13 @@ armor.thermal=Wärmebildkamera
|
||||
armor.threshold=Schadensschwelle: %s
|
||||
armor.vats=Feinde-HUD
|
||||
|
||||
bomb.detonated=Erfolgreich gezündet!
|
||||
bomb.incompatible=Gerät kann nicht ausgelöst werden!
|
||||
bomb.launched=Erfolgreich gestartet!
|
||||
bomb.missingComponent=Komponente fehlt!
|
||||
bomb.nobomb=Verbundene Position nicht kompatibel oder nicht geladen!
|
||||
bomb.triggered=Erfolgreich ausgelöst!
|
||||
|
||||
book.test.page1=Testseite 1
|
||||
|
||||
chem.ASPHALT=Asphaltherstellung
|
||||
|
||||
@ -140,6 +140,13 @@ armor.thermal=Thermal Sight
|
||||
armor.threshold=Damage threshold of %s
|
||||
armor.vats=Enemy HUD
|
||||
|
||||
bomb.detonated=Detonated successfully!
|
||||
bomb.incompatible=Device can not be triggered!
|
||||
bomb.launched=Launched successfully!
|
||||
bomb.missingComponent=Component missing!
|
||||
bomb.nobomb=Linked position incompatible or unloaded!
|
||||
bomb.triggered=Triggered successfully!
|
||||
|
||||
book.test.cover=HOW 2 SEX
|
||||
book.test.page1=Test Page 1
|
||||
|
||||
|
||||
181
src/main/resources/assets/hbm/models/weapons/charge_dynamite.obj
Normal file
181
src/main/resources/assets/hbm/models/weapons/charge_dynamite.obj
Normal file
@ -0,0 +1,181 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'charge_dynamite.blend'
|
||||
# www.blender.org
|
||||
o Plane
|
||||
v -0.125000 -0.500000 0.437500
|
||||
v 0.125000 -0.500000 0.437500
|
||||
v -0.125000 -0.500000 -0.437500
|
||||
v 0.125000 -0.500000 -0.437500
|
||||
v -0.125000 -0.250000 0.437500
|
||||
v 0.125000 -0.250000 0.437500
|
||||
v -0.125000 -0.250000 -0.437500
|
||||
v 0.125000 -0.250000 -0.437500
|
||||
v 0.187500 -0.500000 0.437500
|
||||
v 0.437500 -0.500000 0.437500
|
||||
v 0.187500 -0.500000 -0.437500
|
||||
v 0.437500 -0.500000 -0.437500
|
||||
v 0.187500 -0.250000 0.437500
|
||||
v 0.437500 -0.250000 0.437500
|
||||
v 0.187500 -0.250000 -0.437500
|
||||
v 0.437500 -0.250000 -0.437500
|
||||
v -0.437500 -0.500000 0.437500
|
||||
v -0.187500 -0.500000 0.437500
|
||||
v -0.437500 -0.500000 -0.437500
|
||||
v -0.187500 -0.500000 -0.437500
|
||||
v -0.437500 -0.250000 0.437500
|
||||
v -0.187500 -0.250000 0.437500
|
||||
v -0.437500 -0.250000 -0.437500
|
||||
v -0.187500 -0.250000 -0.437500
|
||||
v -0.250000 -0.312500 0.250000
|
||||
v 0.250000 -0.312500 0.250000
|
||||
v -0.250000 -0.312500 -0.250000
|
||||
v 0.250000 -0.312500 -0.250000
|
||||
v -0.250000 -0.187500 -0.250000
|
||||
v -0.250000 -0.187500 0.250000
|
||||
v 0.250000 -0.187500 0.250000
|
||||
v 0.250000 -0.187500 -0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.875000 -0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt -0.000000 -0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.875000 0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.875000 -0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt -0.000000 -0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.875000 0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.875000 -0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt -0.000000 -0.000000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.250000 0.875000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.250000 0.375000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.250000 0.875000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.250000 0.375000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.250000 0.375000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.250000 0.375000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.875000 0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.875000 0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.875000 0.250000
|
||||
vt 0.875000 0.000000
|
||||
vt 0.875000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.250000 0.375000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.375000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
s off
|
||||
f 3/1/1 2/2/1 1/3/1
|
||||
f 6/4/2 7/5/2 5/6/2
|
||||
f 4/7/3 6/8/3 2/9/3
|
||||
f 1/10/4 7/11/4 3/12/4
|
||||
f 3/13/5 8/14/5 4/15/5
|
||||
f 2/16/6 5/17/6 1/10/6
|
||||
f 11/18/1 10/19/1 9/20/1
|
||||
f 14/21/2 15/22/2 13/23/2
|
||||
f 12/24/3 14/25/3 10/26/3
|
||||
f 9/27/4 15/28/4 11/29/4
|
||||
f 11/30/5 16/31/5 12/32/5
|
||||
f 10/33/6 13/34/6 9/27/6
|
||||
f 19/35/1 18/36/1 17/37/1
|
||||
f 22/38/2 23/39/2 21/40/2
|
||||
f 20/41/3 22/42/3 18/43/3
|
||||
f 17/44/4 23/45/4 19/46/4
|
||||
f 19/47/5 24/48/5 20/49/5
|
||||
f 18/50/6 21/51/6 17/44/6
|
||||
f 27/52/1 26/53/1 25/54/1
|
||||
f 31/55/2 29/56/2 30/57/2
|
||||
f 27/58/5 32/59/5 28/60/5
|
||||
f 26/61/6 30/62/6 25/63/6
|
||||
f 28/64/3 31/55/3 26/65/3
|
||||
f 25/66/4 29/67/4 27/68/4
|
||||
f 3/1/1 4/69/1 2/2/1
|
||||
f 6/4/2 8/70/2 7/5/2
|
||||
f 4/7/3 8/71/3 6/8/3
|
||||
f 1/10/4 5/72/4 7/11/4
|
||||
f 3/13/5 7/73/5 8/14/5
|
||||
f 2/16/6 6/74/6 5/17/6
|
||||
f 11/18/1 12/75/1 10/19/1
|
||||
f 14/21/2 16/76/2 15/22/2
|
||||
f 12/24/3 16/77/3 14/25/3
|
||||
f 9/27/4 13/78/4 15/28/4
|
||||
f 11/30/5 15/79/5 16/31/5
|
||||
f 10/33/6 14/80/6 13/34/6
|
||||
f 19/35/1 20/81/1 18/36/1
|
||||
f 22/38/2 24/82/2 23/39/2
|
||||
f 20/41/3 24/83/3 22/42/3
|
||||
f 17/44/4 21/84/4 23/45/4
|
||||
f 19/47/5 23/85/5 24/48/5
|
||||
f 18/50/6 22/86/6 21/51/6
|
||||
f 27/52/1 28/87/1 26/53/1
|
||||
f 31/55/2 32/88/2 29/56/2
|
||||
f 27/58/5 29/89/5 32/59/5
|
||||
f 26/61/6 31/90/6 30/62/6
|
||||
f 28/64/3 32/88/3 31/55/3
|
||||
f 25/66/4 30/91/4 29/67/4
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 202 B |
Loading…
x
Reference in New Issue
Block a user