burned old textures, better sludge
10
changelog
@ -9,6 +9,16 @@
|
|||||||
* Fat mines now have a base damage of exactly 100, being identical to demolition mini nukes
|
* Fat mines now have a base damage of exactly 100, being identical to demolition mini nukes
|
||||||
* Fat mines now gib affected entities
|
* Fat mines now gib affected entities
|
||||||
* IV bags now use `setHealth` operations instead of dealing damage, preventing health duplication by just avoiding the damage
|
* IV bags now use `setHealth` operations instead of dealing damage, preventing health duplication by just avoiding the damage
|
||||||
|
* The settings tool can now copy and paste the "paint" from paintable cables and fluid ducts
|
||||||
|
* Changed the way taint works
|
||||||
|
* Instead of neon purple vines, taint is bow a greyish sludge
|
||||||
|
* Taint now actively replaces blocks instead of growing along them
|
||||||
|
* Taint is still limited in spread, however taint spread is lower underground, taint decays three times faster in intensity if the block is not exposed to air, making taint spread more along the surface
|
||||||
|
* Taint has a 25% chance of splashing down when replacing a block with no supports, causing structures to collapse and taint to spread faster
|
||||||
|
* Similar to soil sand, entities will sink in taint and get slowed down
|
||||||
|
* The sludge consumeth
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed animation error on the MAS-36
|
* Fixed animation error on the MAS-36
|
||||||
|
* Fixed drone docks, requester and provider crates not dropping their contents when broken
|
||||||
|
* Fixed all missing texture errors that appear in the startup log
|
||||||
@ -2177,7 +2177,7 @@ public class ModBlocks {
|
|||||||
mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
|
|
||||||
boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar");
|
boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar");
|
||||||
boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boat");
|
boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":asphalt");
|
||||||
|
|
||||||
machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well");
|
machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well");
|
||||||
machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack");
|
machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack");
|
||||||
@ -2279,7 +2279,7 @@ public class ModBlocks {
|
|||||||
crystal_virus = new CrystalVirus(Material.iron).setBlockName("crystal_virus").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_virus");
|
crystal_virus = new CrystalVirus(Material.iron).setBlockName("crystal_virus").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_virus");
|
||||||
crystal_hardened = new BlockGeneric(Material.iron).setBlockName("crystal_hardened").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_hardened");
|
crystal_hardened = new BlockGeneric(Material.iron).setBlockName("crystal_hardened").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_hardened");
|
||||||
crystal_pulsar = new CrystalPulsar(Material.iron).setBlockName("crystal_pulsar").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_pulsar");
|
crystal_pulsar = new CrystalPulsar(Material.iron).setBlockName("crystal_pulsar").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_pulsar");
|
||||||
taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null);
|
taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":taint");
|
||||||
|
|
||||||
vent_chlorine = new BlockVent(Material.iron).setBlockName("vent_chlorine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_chlorine");
|
vent_chlorine = new BlockVent(Material.iron).setBlockName("vent_chlorine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_chlorine");
|
||||||
vent_cloud = new BlockVent(Material.iron).setBlockName("vent_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_cloud");
|
vent_cloud = new BlockVent(Material.iron).setBlockName("vent_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_cloud");
|
||||||
@ -3476,7 +3476,7 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName());
|
GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName());
|
GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(crystal_pulsar, crystal_pulsar.getUnlocalizedName());
|
GameRegistry.registerBlock(crystal_pulsar, crystal_pulsar.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(taint, ItemTaintBlock.class, taint.getUnlocalizedName());
|
register(taint);
|
||||||
GameRegistry.registerBlock(cheater_virus, cheater_virus.getUnlocalizedName());
|
GameRegistry.registerBlock(cheater_virus, cheater_virus.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(cheater_virus_seed, cheater_virus_seed.getUnlocalizedName());
|
GameRegistry.registerBlock(cheater_virus_seed, cheater_virus_seed.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(ntm_dirt, ntm_dirt.getUnlocalizedName());
|
GameRegistry.registerBlock(ntm_dirt, ntm_dirt.getUnlocalizedName());
|
||||||
|
|||||||
@ -4,169 +4,71 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
import com.hbm.entity.mob.EntityTaintCrab;
|
import com.hbm.entity.mob.EntityTaintCrab;
|
||||||
import com.hbm.entity.mob.EntityCreeperTainted;
|
import com.hbm.entity.mob.EntityCreeperTainted;
|
||||||
import com.hbm.entity.mob.EntityTeslaCrab;
|
import com.hbm.entity.mob.EntityTeslaCrab;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockFalling;
|
||||||
import net.minecraft.block.material.MapColor;
|
import net.minecraft.block.material.MapColor;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.item.EntityFallingBlock;
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.IIcon;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class BlockTaint extends Block/*Container*/ {
|
public class BlockTaint extends Block implements ITooltipProvider {
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
public BlockTaint(Material mat) {
|
||||||
private IIcon[] icons;
|
super(mat);
|
||||||
|
|
||||||
public BlockTaint(Material p_i45386_1_) {
|
|
||||||
super(p_i45386_1_);
|
|
||||||
this.setTickRandomly(true);
|
this.setTickRandomly(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@Override
|
@Override public MapColor getMapColor(int meta) { return MapColor.grayColor; }
|
||||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
@Override public Item getItemDropped(int i, Random rand, int j) { return null; }
|
||||||
return new TileEntityTaint();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public IIcon getIcon(int p_149691_1_, int meta)
|
|
||||||
{
|
|
||||||
return this.icons[meta % this.icons.length];
|
|
||||||
}
|
|
||||||
|
|
||||||
public int damageDropped(int meta)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int func_150032_b(int p_150032_0_)
|
|
||||||
{
|
|
||||||
return func_150031_c(p_150032_0_);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int func_150031_c(int p_150031_0_)
|
|
||||||
{
|
|
||||||
return p_150031_0_ & 15;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 16; ++i)
|
|
||||||
{
|
|
||||||
p_149666_3_.add(new ItemStack(p_149666_1_, 1, i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void registerBlockIcons(IIconRegister p_149651_1_)
|
|
||||||
{
|
|
||||||
this.icons = new IIcon[16];
|
|
||||||
|
|
||||||
for (int i = 0; i < this.icons.length; ++i)
|
|
||||||
{
|
|
||||||
this.icons[i] = p_149651_1_.registerIcon("hbm:taint_" + i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public MapColor getMapColor(int p_149728_1_)
|
|
||||||
{
|
|
||||||
return MapColor.purpleColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getRenderType(){
|
public void updateTick(World world, int x, int y, int z, Random rand) {
|
||||||
return renderID;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isOpaqueCube() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean renderAsNormalBlock() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block b)
|
|
||||||
{
|
|
||||||
if(!hasPosNeightbour(world, x, y, z) && !world.isRemote)
|
|
||||||
world.setBlockToAir(x, y, z);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateTick(World world, int x, int y, int z, Random rand)
|
|
||||||
{
|
|
||||||
int meta = world.getBlockMetadata(x, y, z);
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
if(!world.isRemote && meta < 15) {
|
if(meta >= 15) return;
|
||||||
|
|
||||||
for(int i = 0; i < 15; i++) {
|
for(int i = -3; i <= 3; i++) for(int j = -3; j <= 3; j++) for(int k = -3; k <= 3; k++) {
|
||||||
int a = rand.nextInt(11) + x - 5;
|
if(Math.abs(i) + Math.abs(j) + Math.abs(k) > 4) continue;
|
||||||
int b = rand.nextInt(11) + y - 5;
|
if(rand.nextFloat() > 0.25F) continue;
|
||||||
int c = rand.nextInt(11) + z - 5;
|
Block b = world.getBlock(x + i, y + j, z + k);
|
||||||
if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c))
|
if(!b.isNormalCube() || b.isAir(world, x + i, y + j, z + k)) continue;
|
||||||
world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2);
|
int targetMeta = meta + 1;
|
||||||
}
|
boolean hasAir = false;
|
||||||
|
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
for(int i = 0; i < 85; i++) {
|
if(world.getBlock(x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ).isAir(world, x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ)) {
|
||||||
int a = rand.nextInt(7) + x - 3;
|
hasAir = true;
|
||||||
int b = rand.nextInt(7) + y - 3;
|
break;
|
||||||
int c = rand.nextInt(7) + z - 3;
|
|
||||||
if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c))
|
|
||||||
world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(!hasAir) targetMeta = meta + 3;
|
||||||
|
if(targetMeta > 15) continue;
|
||||||
|
if(b == this && world.getBlockMetadata(x + i, y + j, z + k) >= targetMeta) continue;
|
||||||
|
world.setBlock(x + i, y + j, z + k, this, targetMeta, 3);
|
||||||
|
if(rand.nextFloat() < 0.25F && BlockFalling.func_149831_e(world, x + i, y + j - 1, z + k)) {
|
||||||
|
EntityFallingBlock falling = new EntityFallingBlock(world, x + i + 0.5, y + j + 0.5, z + k + 0.5, this, targetMeta);
|
||||||
|
world.spawnEntityInWorld(falling);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasPosNeightbour(World world, int x, int y, int z) {
|
|
||||||
Block b0 = world.getBlock(x + 1, y, z);
|
|
||||||
Block b1 = world.getBlock(x, y + 1, z);
|
|
||||||
Block b2 = world.getBlock(x, y, z + 1);
|
|
||||||
Block b3 = world.getBlock(x - 1, y, z);
|
|
||||||
Block b4 = world.getBlock(x, y - 1, z);
|
|
||||||
Block b5 = world.getBlock(x, y, z - 1);
|
|
||||||
boolean b = (b0.renderAsNormalBlock() && b0.getMaterial().isOpaque()) ||
|
|
||||||
(b1.renderAsNormalBlock() && b1.getMaterial().isOpaque()) ||
|
|
||||||
(b2.renderAsNormalBlock() && b2.getMaterial().isOpaque()) ||
|
|
||||||
(b3.renderAsNormalBlock() && b3.getMaterial().isOpaque()) ||
|
|
||||||
(b4.renderAsNormalBlock() && b4.getMaterial().isOpaque()) ||
|
|
||||||
(b5.renderAsNormalBlock() && b5.getMaterial().isOpaque());
|
|
||||||
return b;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||||
{
|
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.75, z + 1);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
return AxisAlignedBB.getBoundingBox(par2, par3, par4, par2, par3, par4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -175,6 +77,9 @@ public class BlockTaint extends Block/*Container*/ {
|
|||||||
int meta = world.getBlockMetadata(x, y, z);
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
int level = 15 - meta;
|
int level = 15 - meta;
|
||||||
|
|
||||||
|
entity.motionX *= 0.6;
|
||||||
|
entity.motionZ *= 0.6;
|
||||||
|
|
||||||
List<ItemStack> list = new ArrayList<ItemStack>();
|
List<ItemStack> list = new ArrayList<ItemStack>();
|
||||||
PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level);
|
PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level);
|
||||||
effect.setCurativeItems(list);
|
effect.setCurativeItems(list);
|
||||||
@ -206,4 +111,8 @@ public class BlockTaint extends Block/*Container*/ {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
|
list.add("DO NOT TOUCH, BREATHE OR STARE AT.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,6 @@ public class BlockGenericStairs extends BlockStairs {
|
|||||||
|
|
||||||
recipeGen.add(new Object[] {block, meta, this});
|
recipeGen.add(new Object[] {block, meta, this});
|
||||||
|
|
||||||
this.setBlockTextureName(RefStrings.MODID + ":concrete_smooth");
|
this.setBlockTextureName(RefStrings.MODID + ":concrete");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,7 @@ public class BlockMultiSlab extends BlockSlab implements IStepTickReceiver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setBlockTextureName(RefStrings.MODID + ":concrete_smooth");
|
this.setBlockTextureName(RefStrings.MODID + ":concrete");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -4,11 +4,11 @@ import java.util.Random;
|
|||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.blocks.bomb.BlockDetonatable;
|
import com.hbm.blocks.bomb.BlockDetonatable;
|
||||||
import com.hbm.blocks.bomb.BlockTaint;
|
|
||||||
import com.hbm.blocks.machine.BlockFluidBarrel;
|
import com.hbm.blocks.machine.BlockFluidBarrel;
|
||||||
import com.hbm.entity.item.EntityTNTPrimedBase;
|
import com.hbm.entity.item.EntityTNTPrimedBase;
|
||||||
import com.hbm.explosion.ExplosionThermo;
|
import com.hbm.explosion.ExplosionThermo;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
@ -68,7 +68,8 @@ public class RedBarrel extends BlockDetonatable {
|
|||||||
int a = rand.nextInt(9) - 4 + ix;
|
int a = rand.nextInt(9) - 4 + ix;
|
||||||
int b = rand.nextInt(9) - 4 + iy;
|
int b = rand.nextInt(9) - 4 + iy;
|
||||||
int c = rand.nextInt(9) - 4 + iz;
|
int c = rand.nextInt(9) - 4 + iz;
|
||||||
if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && BlockTaint.hasPosNeightbour(world, a, b, c)) {
|
Block block = world.getBlock(a, b, c);
|
||||||
|
if(block.isNormalCube() && !block.isAir(world, a, b, c)) {
|
||||||
world.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2);
|
world.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.hbm.blocks.network;
|
|||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import com.hbm.blocks.IBlockMultiPass;
|
import com.hbm.blocks.IBlockMultiPass;
|
||||||
|
import com.hbm.interfaces.ICopiable;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.render.block.RenderBlockMultipass;
|
import com.hbm.render.block.RenderBlockMultipass;
|
||||||
import com.hbm.tileentity.network.TileEntityCableBaseNT;
|
import com.hbm.tileentity.network.TileEntityCableBaseNT;
|
||||||
@ -124,7 +125,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB
|
|||||||
return IBlockMultiPass.getRenderType();
|
return IBlockMultiPass.getRenderType();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TileEntityCablePaintable extends TileEntityCableBaseNT {
|
public static class TileEntityCablePaintable extends TileEntityCableBaseNT implements ICopiable {
|
||||||
|
|
||||||
private Block block;
|
private Block block;
|
||||||
private int meta;
|
private int meta;
|
||||||
@ -168,5 +169,23 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB
|
|||||||
if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block));
|
if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block));
|
||||||
nbt.setInteger("meta", meta);
|
nbt.setInteger("meta", meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NBTTagCompound getSettings(World world, int x, int y, int z) {
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
if(block != null) {
|
||||||
|
nbt.setInteger("paintblock", Block.getIdFromBlock(block));
|
||||||
|
nbt.setInteger("paintmeta", meta);
|
||||||
|
}
|
||||||
|
return nbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
|
||||||
|
if(nbt.hasKey("paintblock")) {
|
||||||
|
this.block = Block.getBlockById(nbt.getInteger("paintblock"));
|
||||||
|
this.meta = nbt.getInteger("paintmeta");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,16 +9,21 @@ import com.hbm.tileentity.network.TileEntityDroneRequester;
|
|||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.ISidedInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class DroneDock extends BlockContainer implements ITooltipProvider {
|
public class DroneDock extends BlockContainer implements ITooltipProvider {
|
||||||
|
|
||||||
@ -69,4 +74,53 @@ public class DroneDock extends BlockContainer implements ITooltipProvider {
|
|||||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
this.addStandardInfo(stack, player, list, ext);
|
this.addStandardInfo(stack, player, list, ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
|
||||||
|
if(this == ModBlocks.drone_dock) this.dropContents(world, x, y, z, block, meta, 0, 9);
|
||||||
|
if(this == ModBlocks.drone_crate_provider) this.dropContents(world, x, y, z, block, meta, 0, 9);
|
||||||
|
if(this == ModBlocks.drone_crate_requester) this.dropContents(world, x, y, z, block, meta, 9, 18);
|
||||||
|
super.breakBlock(world, x, y, z, block, meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Random rand = new Random();
|
||||||
|
public void dropContents(World world, int x, int y, int z, Block block, int meta, int start, int end) {
|
||||||
|
ISidedInventory sidedInventory = (ISidedInventory) world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(sidedInventory != null) {
|
||||||
|
|
||||||
|
for(int i1 = start; i1 < end; ++i1) {
|
||||||
|
ItemStack stack = sidedInventory.getStackInSlot(i1);
|
||||||
|
|
||||||
|
if(stack != null) {
|
||||||
|
float f = this.rand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
float f1 = this.rand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
float f2 = this.rand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
|
||||||
|
while(stack.stackSize > 0) {
|
||||||
|
int j1 = this.rand.nextInt(21) + 10;
|
||||||
|
|
||||||
|
if(j1 > stack.stackSize) {
|
||||||
|
j1 = stack.stackSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.stackSize -= j1;
|
||||||
|
EntityItem entity = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(stack.getItem(), j1, stack.getItemDamage()));
|
||||||
|
|
||||||
|
if(stack.hasTagCompound()) {
|
||||||
|
entity.getEntityItem().setTagCompound((NBTTagCompound) stack.getTagCompound().copy());
|
||||||
|
}
|
||||||
|
|
||||||
|
float f3 = 0.05F;
|
||||||
|
entity.motionX = (float) this.rand.nextGaussian() * f3;
|
||||||
|
entity.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F;
|
||||||
|
entity.motionZ = (float) this.rand.nextGaussian() * f3;
|
||||||
|
world.spawnEntityInWorld(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
world.func_147453_f(x, y, z, block);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.hbm.blocks.network;
|
|||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import com.hbm.blocks.IBlockMultiPass;
|
import com.hbm.blocks.IBlockMultiPass;
|
||||||
import com.hbm.blocks.ILookOverlay;
|
import com.hbm.blocks.ILookOverlay;
|
||||||
|
import com.hbm.interfaces.ICopiable;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.render.block.RenderBlockMultipass;
|
import com.hbm.render.block.RenderBlockMultipass;
|
||||||
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
|
||||||
@ -163,7 +164,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo
|
|||||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TileEntityPipePaintable extends TileEntityPipeBaseNT {
|
public static class TileEntityPipePaintable extends TileEntityPipeBaseNT implements ICopiable {
|
||||||
|
|
||||||
private Block block;
|
private Block block;
|
||||||
private int meta;
|
private int meta;
|
||||||
@ -195,5 +196,23 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo
|
|||||||
if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block));
|
if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block));
|
||||||
nbt.setInteger("meta", meta);
|
nbt.setInteger("meta", meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NBTTagCompound getSettings(World world, int x, int y, int z) {
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
if(block != null) {
|
||||||
|
nbt.setInteger("paintblock", Block.getIdFromBlock(block));
|
||||||
|
nbt.setInteger("paintmeta", meta);
|
||||||
|
}
|
||||||
|
return nbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
|
||||||
|
if(nbt.hasKey("paintblock")) {
|
||||||
|
this.block = Block.getBlockById(nbt.getInteger("paintblock"));
|
||||||
|
this.meta = nbt.getInteger("paintmeta");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.blocks.bomb.BlockTaint;
|
|
||||||
import com.hbm.entity.effect.EntityNukeTorex;
|
import com.hbm.entity.effect.EntityNukeTorex;
|
||||||
import com.hbm.entity.logic.EntityBalefire;
|
import com.hbm.entity.logic.EntityBalefire;
|
||||||
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||||
@ -22,6 +21,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart.WarheadType;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
|
|
||||||
import api.hbm.entity.IRadarDetectableNT;
|
import api.hbm.entity.IRadarDetectableNT;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
@ -211,7 +211,8 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo
|
|||||||
int a = rand.nextInt(r) + (int) posX - (r / 2 - 1);
|
int a = rand.nextInt(r) + (int) posX - (r / 2 - 1);
|
||||||
int b = rand.nextInt(r) + (int) posY - (r / 2 - 1);
|
int b = rand.nextInt(r) + (int) posY - (r / 2 - 1);
|
||||||
int c = rand.nextInt(r) + (int) posZ - (r / 2 - 1);
|
int c = rand.nextInt(r) + (int) posZ - (r / 2 - 1);
|
||||||
if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) {
|
Block block = worldObj.getBlock(a, b, c);
|
||||||
|
if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) {
|
||||||
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2);
|
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.blocks.bomb.BlockTaint;
|
|
||||||
import com.hbm.config.BombConfig;
|
import com.hbm.config.BombConfig;
|
||||||
import com.hbm.entity.effect.EntityBlackHole;
|
import com.hbm.entity.effect.EntityBlackHole;
|
||||||
import com.hbm.entity.effect.EntityCloudFleija;
|
import com.hbm.entity.effect.EntityCloudFleija;
|
||||||
@ -128,7 +127,10 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
int a = rand.nextInt(11) + (int) this.posX - 5;
|
int a = rand.nextInt(11) + (int) this.posX - 5;
|
||||||
int b = rand.nextInt(11) + (int) this.posY - 5;
|
int b = rand.nextInt(11) + (int) this.posY - 5;
|
||||||
int c = rand.nextInt(11) + (int) this.posZ - 5;
|
int c = rand.nextInt(11) + (int) this.posZ - 5;
|
||||||
if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) worldObj.setBlock(a, b, c, ModBlocks.taint);
|
Block block = worldObj.getBlock(a, b, c);
|
||||||
|
if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) {
|
||||||
|
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_spark_mix, 1); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_spark_mix, 1); }
|
||||||
|
|||||||
@ -55,8 +55,8 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm
|
|||||||
int a = rand.nextInt(15) + (int) posX - 7;
|
int a = rand.nextInt(15) + (int) posX - 7;
|
||||||
int b = rand.nextInt(15) + (int) posY - 7;
|
int b = rand.nextInt(15) + (int) posY - 7;
|
||||||
int c = rand.nextInt(15) + (int) posZ - 7;
|
int c = rand.nextInt(15) + (int) posZ - 7;
|
||||||
|
Block block = worldObj.getBlock(a, b, c);
|
||||||
if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && hasPosNeightbour(worldObj, a, b, c)) {
|
if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) {
|
||||||
if(!GeneralConfig.enableHardcoreTaint) {
|
if(!GeneralConfig.enableHardcoreTaint) {
|
||||||
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2);
|
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2);
|
||||||
} else {
|
} else {
|
||||||
@ -71,8 +71,8 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm
|
|||||||
int a = rand.nextInt(7) + (int) posX - 3;
|
int a = rand.nextInt(7) + (int) posX - 3;
|
||||||
int b = rand.nextInt(7) + (int) posY - 3;
|
int b = rand.nextInt(7) + (int) posY - 3;
|
||||||
int c = rand.nextInt(7) + (int) posZ - 3;
|
int c = rand.nextInt(7) + (int) posZ - 3;
|
||||||
|
Block block = worldObj.getBlock(a, b, c);
|
||||||
if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && hasPosNeightbour(worldObj, a, b, c)) {
|
if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) {
|
||||||
if(!GeneralConfig.enableHardcoreTaint) {
|
if(!GeneralConfig.enableHardcoreTaint) {
|
||||||
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(6) + 10, 2);
|
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(6) + 10, 2);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -14,12 +14,10 @@ import com.hbm.util.ItemStackUtil;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
import net.minecraft.util.MathHelper;
|
|
||||||
import net.minecraft.util.WeightedRandomChestContent;
|
import net.minecraft.util.WeightedRandomChestContent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect;
|
import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect;
|
||||||
@ -177,13 +175,4 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
|
|||||||
return getCycledIngredients(cycleticks / 20, stacks);
|
return getCycledIngredients(cycleticks / 20, stacks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static HashMap<ItemStack, ItemStack> getRecipeMap() {
|
|
||||||
HashMap<ItemStack, ItemStack> recipeMap = new HashMap<>();
|
|
||||||
ItemStack minerStack = new ItemStack(ModItems.sat_miner);
|
|
||||||
ItemStack lunarMinerStack = new ItemStack(ModItems.sat_lunar_miner);
|
|
||||||
Arrays.stream(ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_MINER)).forEach(poolEntry -> recipeMap.put(minerStack, poolEntry.theItemId));
|
|
||||||
Arrays.stream(ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_LUNAR)).forEach(poolEntry -> recipeMap.put(lunarMinerStack, poolEntry.theItemId));
|
|
||||||
return recipeMap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3830,7 +3830,7 @@ public class ModItems {
|
|||||||
gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt");
|
gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt");
|
||||||
gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92");
|
gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92");
|
||||||
gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo");
|
gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo");
|
||||||
gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon");
|
gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter");
|
||||||
gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext");
|
gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext");
|
||||||
|
|
||||||
ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0);
|
ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0);
|
||||||
|
|||||||
@ -1,40 +0,0 @@
|
|||||||
package com.hbm.items.block;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.hbm.blocks.bomb.BlockTaint;
|
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.ItemBlock;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.IIcon;
|
|
||||||
|
|
||||||
public class ItemTaintBlock extends ItemBlock
|
|
||||||
{
|
|
||||||
public ItemTaintBlock(Block p_i45358_1_)
|
|
||||||
{
|
|
||||||
super(p_i45358_1_);
|
|
||||||
this.setMaxDamage(0);
|
|
||||||
this.setHasSubtypes(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public IIcon getIconFromDamage(int p_77617_1_)
|
|
||||||
{
|
|
||||||
return this.field_150939_a.func_149735_b(2, BlockTaint.func_150032_b(p_77617_1_));
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getMetadata(int p_77647_1_)
|
|
||||||
{
|
|
||||||
return p_77647_1_;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool)
|
|
||||||
{
|
|
||||||
list.add("DO NOT TOUCH, BREATHE OR STARE AT.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -54,7 +54,7 @@ public class ItemAmmoHIMARS extends Item {
|
|||||||
public ItemAmmoHIMARS() {
|
public ItemAmmoHIMARS() {
|
||||||
this.setHasSubtypes(true);
|
this.setHasSubtypes(true);
|
||||||
this.setCreativeTab(MainRegistry.weaponTab);
|
this.setCreativeTab(MainRegistry.weaponTab);
|
||||||
this.setTextureName(RefStrings.MODID + ":ammo_rocket");
|
this.setTextureName(RefStrings.MODID + ":ammo_standard.rocket_he");
|
||||||
this.setMaxStackSize(1);
|
this.setMaxStackSize(1);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -771,7 +771,6 @@ public class ClientProxy extends ServerProxy {
|
|||||||
@Override
|
@Override
|
||||||
public void registerBlockRenderer() {
|
public void registerBlockRenderer() {
|
||||||
|
|
||||||
RenderingRegistry.registerBlockHandler(new RenderTaintBlock());
|
|
||||||
RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock());
|
RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock());
|
||||||
RenderingRegistry.registerBlockHandler(new RenderTapeBlock());
|
RenderingRegistry.registerBlockHandler(new RenderTapeBlock());
|
||||||
RenderingRegistry.registerBlockHandler(new RenderSteelBeam());
|
RenderingRegistry.registerBlockHandler(new RenderSteelBeam());
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package com.hbm.potion;
|
|||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.blocks.bomb.BlockTaint;
|
|
||||||
import com.hbm.config.GeneralConfig;
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.config.PotionConfig;
|
import com.hbm.config.PotionConfig;
|
||||||
import com.hbm.entity.mob.EntityTaintCrab;
|
import com.hbm.entity.mob.EntityTaintCrab;
|
||||||
@ -19,6 +18,7 @@ import com.hbm.util.ContaminationUtil.HazardType;
|
|||||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.passive.EntityCow;
|
import net.minecraft.entity.passive.EntityCow;
|
||||||
@ -109,15 +109,13 @@ public class HbmPotion extends Potion {
|
|||||||
|
|
||||||
if(GeneralConfig.enableHardcoreTaint && !entity.worldObj.isRemote) {
|
if(GeneralConfig.enableHardcoreTaint && !entity.worldObj.isRemote) {
|
||||||
|
|
||||||
int x = (int)(entity.posX - 1);
|
int x = (int) Math.floor(entity.posX);
|
||||||
int y = (int)entity.posY;
|
int y = (int) Math.floor(entity.posY);
|
||||||
int z = (int)(entity.posZ);
|
int z = (int) Math.floor(entity.posZ);
|
||||||
|
|
||||||
if(entity.worldObj.getBlock(x, y, z)
|
Block b = entity.worldObj.getBlock(x, y - 1, z);
|
||||||
.isReplaceable(entity.worldObj, x, y, z) &&
|
if(y > 1 && b.isNormalCube() && !b.isAir(entity.worldObj, x, y - 1, z)) {
|
||||||
BlockTaint.hasPosNeightbour(entity.worldObj, x, y, z)) {
|
entity.worldObj.setBlock(x, y - 1, z, ModBlocks.taint, 14, 2);
|
||||||
|
|
||||||
entity.worldObj.setBlock(x, y, z, ModBlocks.taint, 14, 2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,124 +0,0 @@
|
|||||||
package com.hbm.render.block;
|
|
||||||
|
|
||||||
import com.hbm.blocks.bomb.BlockTaint;
|
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.client.renderer.RenderBlocks;
|
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
|
||||||
import net.minecraft.util.IIcon;
|
|
||||||
import net.minecraft.world.IBlockAccess;
|
|
||||||
|
|
||||||
public class RenderTaintBlock implements ISimpleBlockRenderingHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
|
||||||
|
|
||||||
Tessellator tessellator = Tessellator.instance;
|
|
||||||
IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z));
|
|
||||||
|
|
||||||
if (renderer.hasOverrideBlockTexture())
|
|
||||||
{
|
|
||||||
iicon = renderer.overrideBlockTexture;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean ceil = world.getBlock(x, y + 1, z).isNormalCube();
|
|
||||||
boolean floor = world.getBlock(x, y - 1, z).isNormalCube();
|
|
||||||
boolean side1 = world.getBlock(x, y, z + 1).isNormalCube();
|
|
||||||
boolean side2 = world.getBlock(x - 1, y, z).isNormalCube();
|
|
||||||
boolean side3 = world.getBlock(x, y, z - 1).isNormalCube();
|
|
||||||
boolean side4 = world.getBlock(x + 1, y, z).isNormalCube();
|
|
||||||
|
|
||||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(renderer.blockAccess, x, y, z));
|
|
||||||
int l = block.colorMultiplier(renderer.blockAccess, x, y, z);
|
|
||||||
float f = (float)(l >> 16 & 255) / 255.0F;
|
|
||||||
float f1 = (float)(l >> 8 & 255) / 255.0F;
|
|
||||||
float f2 = (float)(l & 255) / 255.0F;
|
|
||||||
tessellator.setColorOpaque_F(f, f1, f2);
|
|
||||||
double d3 = (double)iicon.getMinU();
|
|
||||||
double d4 = (double)iicon.getMinV();
|
|
||||||
double d0 = (double)iicon.getMaxU();
|
|
||||||
double d1 = (double)iicon.getMaxV();
|
|
||||||
double d2 = 0.05D;
|
|
||||||
renderer.blockAccess.getBlockMetadata(x, y, z);
|
|
||||||
|
|
||||||
if (side2)
|
|
||||||
{
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 1), d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 1), d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 0), d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 0), d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 0), d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 0), d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 1), d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 1), d3, d4);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (side4)
|
|
||||||
{
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 1), d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 1), d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 0), d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 0), d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 0), d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 0), d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 1), d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 1), d0, d1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (side3)
|
|
||||||
{
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)z + d2, d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)z + d2, d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)z + d2, d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)z + d2, d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)z + d2, d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)z + d2, d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)z + d2, d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)z + d2, d0, d1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (side1)
|
|
||||||
{
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)(z + 1) - d2, d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)(z + 1) - d2, d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)(z + 1) - d2, d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)(z + 1) - d2, d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)(z + 1) - d2, d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)(z + 1) - d2, d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)(z + 1) - d2, d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)(z + 1) - d2, d3, d4);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ceil)
|
|
||||||
{
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1) - d2, (double)(z + 0), d3, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1) - d2, (double)(z + 1), d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1) - d2, (double)(z + 1), d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1) - d2, (double)(z + 0), d0, d4);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (floor)
|
|
||||||
{
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0) + d2, (double)(z + 0), d0, d4);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0) + d2, (double)(z + 1), d0, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0) + d2, (double)(z + 1), d3, d1);
|
|
||||||
tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0) + d2, (double)(z + 0), d3, d4);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldRender3DInInventory(int modelId) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getRenderId() {
|
|
||||||
return BlockTaint.renderID;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 281 B |
|
Before Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 371 B |
|
Before Width: | Height: | Size: 391 B |
|
Before Width: | Height: | Size: 370 B |
|
Before Width: | Height: | Size: 348 B |
|
Before Width: | Height: | Size: 339 B |
|
Before Width: | Height: | Size: 348 B |
BIN
src/main/resources/assets/hbm/textures/blocks/taint.png
Normal file
|
After Width: | Height: | Size: 731 B |
|
Before Width: | Height: | Size: 476 B |
|
Before Width: | Height: | Size: 512 B |
|
Before Width: | Height: | Size: 487 B |
|
Before Width: | Height: | Size: 489 B |
|
Before Width: | Height: | Size: 477 B |
|
Before Width: | Height: | Size: 479 B |
|
Before Width: | Height: | Size: 463 B |
|
Before Width: | Height: | Size: 458 B |
|
Before Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 499 B |
|
Before Width: | Height: | Size: 499 B |
|
Before Width: | Height: | Size: 502 B |
|
Before Width: | Height: | Size: 497 B |
|
Before Width: | Height: | Size: 499 B |
|
Before Width: | Height: | Size: 486 B |
|
Before Width: | Height: | Size: 483 B |
|
Before Width: | Height: | Size: 509 B |
|
Before Width: | Height: | Size: 431 B |
|
Before Width: | Height: | Size: 427 B |
|
Before Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 254 B |
|
Before Width: | Height: | Size: 193 B |
|
Before Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 229 B |
|
Before Width: | Height: | Size: 216 B |
|
Before Width: | Height: | Size: 454 B |
|
Before Width: | Height: | Size: 608 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 208 B |
|
Before Width: | Height: | Size: 320 B |
|
Before Width: | Height: | Size: 297 B |
|
Before Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 309 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 281 B |
|
Before Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 341 B |
|
Before Width: | Height: | Size: 405 B |
|
Before Width: | Height: | Size: 201 B |
|
Before Width: | Height: | Size: 194 B |
|
Before Width: | Height: | Size: 233 B |
|
Before Width: | Height: | Size: 276 B |
|
Before Width: | Height: | Size: 360 B |
|
Before Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 156 B |
|
Before Width: | Height: | Size: 315 B |
|
Before Width: | Height: | Size: 304 B |
|
Before Width: | Height: | Size: 244 B |
|
Before Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 335 B |
|
Before Width: | Height: | Size: 243 B |
|
Before Width: | Height: | Size: 332 B |
|
Before Width: | Height: | Size: 392 B |
|
Before Width: | Height: | Size: 353 B |
|
Before Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 257 B |
|
Before Width: | Height: | Size: 259 B |
|
Before Width: | Height: | Size: 245 B |
|
Before Width: | Height: | Size: 309 B |
|
Before Width: | Height: | Size: 276 B |
|
Before Width: | Height: | Size: 479 B |
|
Before Width: | Height: | Size: 244 B |
|
Before Width: | Height: | Size: 280 B |
|
Before Width: | Height: | Size: 335 B |
|
Before Width: | Height: | Size: 270 B |
|
Before Width: | Height: | Size: 299 B |
|
Before Width: | Height: | Size: 327 B |