diff --git a/changelog b/changelog index 6e95879c4..6c02bce7b 100644 --- a/changelog +++ b/changelog @@ -1,7 +1,17 @@ +## Added +* Sandbags + * Connect to other sandbags or solid blocks + * Pretts +* Wooden barrier + * Pretty + * Automatically walls off connected solid blocks in addition to the direction it was placed in + ## Changed * Increased bayonet damage from 5 to 7.5 hearts * Two numeric redstone over radio signals sent over the same channel will now be added together instead of one signal replacing the other * This means that reading the fill state of multiple batteries over the same channel should result the combined fill state of all batteries +* Halved base spread of the .22 SMG +* Certain secret guns now have a proper way of being obtained ## Fixed * Fixed RoR controller having the wrong recipe \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 57199830c..ae42a0c1e 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -279,6 +279,9 @@ public class ModBlocks { public static Block asphalt; public static Block asphalt_light; + public static Block sandbags; + public static Block wood_barrier; + public static Block reinforced_brick; public static Block reinforced_ducrete; public static Block reinforced_glass; @@ -1476,6 +1479,9 @@ public class ModBlocks { gravel_diamond = new BlockFalling(Material.sand).setBlockName("gravel_diamond").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":gravel_diamond"); asphalt = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light"); + + sandbags = new BlockSandbags(Material.ground).setBlockName("sandbags").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":sandbags"); + wood_barrier = new BlockBarrier(Material.wood).setStepSound(Block.soundTypeWood).setBlockName("wood_barrier").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":wood_barrier"); reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F); @@ -2654,6 +2660,8 @@ public class ModBlocks { GameRegistry.registerBlock(floodlight_beam, floodlight_beam.getUnlocalizedName()); //Reinforced Blocks + register(sandbags); + register(wood_barrier); GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBarrier.java b/src/main/java/com/hbm/blocks/generic/BlockBarrier.java new file mode 100644 index 000000000..b7020d3d5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockBarrier.java @@ -0,0 +1,159 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.Library; +import com.hbm.render.block.ISBRHUniversal; +import com.hbm.render.util.RenderBlocksNT; + +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.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockBarrier extends Block implements ISBRHUniversal { + + public BlockBarrier(Material mat) { + super(mat); + } + + @Override public int getRenderType() { return renderID; } + @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) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + + int meta = world.getBlockMetadata(x, y, z); + setBlockBounds(0, 0, 0, 1, 1, 1); + + /*Block nx = world.getBlock(x - 1, y, z); + Block px = world.getBlock(x + 1, y, z); + Block nz = world.getBlock(x, y, z - 1); + Block pz = world.getBlock(x, y, z + 1); + + int count = 0; + if(nx.isOpaqueCube() || nx.isNormalCube() || meta == Library.POS_X.ordinal()) count++; + if(nz.isOpaqueCube() || nz.isNormalCube() || meta == Library.POS_Z.ordinal()) count++; + if(px.isOpaqueCube() || px.isNormalCube() || meta == Library.NEG_X.ordinal()) count++; + if(pz.isOpaqueCube() || pz.isNormalCube() || meta == Library.NEG_Z.ordinal()) count++; + + if(count > 1) return;*/ + + if(meta == Library.POS_X.ordinal()) setBlockBounds(0, 0, 0, 0.125F, 1, 1); + if(meta == Library.POS_Z.ordinal()) setBlockBounds(0, 0, 0, 1, 1, 0.125F); + if(meta == Library.NEG_X.ordinal()) setBlockBounds(0.875F, 0, 0, 1, 1, 1); + if(meta == Library.NEG_Z.ordinal()) setBlockBounds(0, 0, 0.875F, 1, 1, 1); + } + + @Override + public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity collider) { + + int meta = world.getBlockMetadata(x, y, z); + List bbs = new ArrayList(); + + Block nx = world.getBlock(x - 1, y, z); + Block px = world.getBlock(x + 1, y, z); + Block nz = world.getBlock(x, y, z - 1); + Block pz = world.getBlock(x, y, z + 1); + + if(nx.isOpaqueCube() || nx.isNormalCube() || meta == Library.POS_X.ordinal()) bbs.add(AxisAlignedBB.getBoundingBox(x, y, z, x + 0.125, y + 1, z + 1)); + if(nz.isOpaqueCube() || nz.isNormalCube() || meta == Library.POS_Z.ordinal()) bbs.add(AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 0.125)); + if(px.isOpaqueCube() || px.isNormalCube() || meta == Library.NEG_X.ordinal()) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.875, y, z, x + 1, y + 1, z + 1)); + if(pz.isOpaqueCube() || pz.isNormalCube() || meta == Library.NEG_Z.ordinal()) bbs.add(AxisAlignedBB.getBoundingBox(x, y, z + 0.875, x + 1, y + 1, z + 1)); + + for(AxisAlignedBB bb : bbs) { + if(aabb.intersectsWith(bb)) { + list.add(bb); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } + + @Override + public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) { + + GL11.glPushMatrix(); + RenderBlocks renderer = (RenderBlocks) renderBlocks; + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + renderer.setRenderBounds(0.4375, 0D, 0.4375D, 0.5625D, 1D, 0.5625D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer); + renderer.setRenderBounds(0.5D, 0.0625D, 0D, 0.5625D, 0.4725, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer); + renderer.setRenderBounds(0.5D, 0.5625D, 0D, 0.5625D, 0.9375, 1D); RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) { + + RenderBlocksNT renderer = RenderBlocksNT.INSTANCE.setWorld(world); + + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + int meta = world.getBlockMetadata(x, y, z); + + Block nx = world.getBlock(x - 1, y, z); + Block px = world.getBlock(x + 1, y, z); + Block nz = world.getBlock(x, y, z - 1); + Block pz = world.getBlock(x, y, z + 1); + + boolean negX = nx.isOpaqueCube() || nx.isNormalCube() || meta == Library.POS_X.ordinal(); + boolean negZ = nz.isOpaqueCube() || nz.isNormalCube() || meta == Library.POS_Z.ordinal(); + boolean posX = px.isOpaqueCube() || px.isNormalCube() || meta == Library.NEG_X.ordinal(); + boolean posZ = pz.isOpaqueCube() || pz.isNormalCube() || meta == Library.NEG_Z.ordinal(); + + if(negX) { + renderer.setRenderBounds(0D, 0D, 0.4375D, 0.125D, 1D, 0.5625D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0D, 0.0625D, negZ ? 0.125D : 0D, 0.0625D, 0.4375D, posZ ? 0.875D : 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0D, 0.5625D, negZ ? 0.125D : 0D, 0.0625D, 0.9375D, posZ ? 0.875D : 1D); renderer.renderStandardBlock(block, x, y, z); + } + if(negZ) { + renderer.setRenderBounds(0.4375D, 0D, 0D, 0.5625D, 1D, 0.125D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(negX ? 0.125D : 0D, 0.0625D, 0D, posX ? 0.875D : 1D, 0.4375D, 0.0625D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(negX ? 0.125D : 0D, 0.5625D, 0D, posX ? 0.875D : 1D, 0.9375D, 0.0625D); renderer.renderStandardBlock(block, x, y, z); + } + if(posX) { + renderer.setRenderBounds(0.875D, 0D, 0.4375D, 1D, 1D, 0.5625D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.9375D, 0.0625D, negZ ? 0.125D : 0D, 1D, 0.4375D, posZ ? 0.875D : 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.9375D, 0.5625D, negZ ? 0.125D : 0D, 1D, 0.9375D, posZ ? 0.875D : 1D); renderer.renderStandardBlock(block, x, y, z); + } + if(posZ) { + renderer.setRenderBounds(0.4375D, 0D, 0.875D, 0.5625D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(negX ? 0.125D : 0D, 0.0625D, 0.9375D, posX ? 0.875D : 1D, 0.4375D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(negX ? 0.125D : 0D, 0.5625D, 0.9375D, posX ? 0.875D : 1D, 0.9375D, 1D); renderer.renderStandardBlock(block, x, y, z); + } + + return true; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSandbags.java b/src/main/java/com/hbm/blocks/generic/BlockSandbags.java new file mode 100644 index 000000000..9a1c70437 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSandbags.java @@ -0,0 +1,84 @@ +package com.hbm.blocks.generic; + +import org.lwjgl.opengl.GL11; + +import com.hbm.render.block.ISBRHUniversal; +import com.hbm.render.util.RenderBlocksNT; + +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.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockSandbags extends Block implements ISBRHUniversal { + + public BlockSandbags(Material mat) { + super(mat); + } + + @Override public int getRenderType() { return renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + + float min = 0.25F; + float max = 0.75F; + + Block nx = world.getBlock(x - 1, y, z); + Block px = world.getBlock(x + 1, y, z); + Block nz = world.getBlock(x, y, z - 1); + Block pz = world.getBlock(x, y, z + 1); + + float minX = (nx.isOpaqueCube() || nx.isNormalCube() || nx == this) ? 0F : min; + float minZ = (nz.isOpaqueCube() || nz.isNormalCube() || nz == this) ? 0F : min; + float maxX = (px.isOpaqueCube() || px.isNormalCube() || px == this) ? 1F : max; + float maxZ = (pz.isOpaqueCube() || pz.isNormalCube() || pz == this) ? 1F : max; + + this.setBlockBounds(minX, 0, minZ, maxX, 1, maxZ); + } + + @Override + public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) { + + GL11.glPushMatrix(); + RenderBlocks renderer = (RenderBlocks) renderBlocks; + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + renderer.setRenderBounds(0.125D, 0D, 0.125D, 0.875D, 1D, 0.875D); + RenderBlocksNT.renderStandardInventoryBlock(block, meta, renderer); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) { + + RenderBlocksNT renderer = RenderBlocksNT.INSTANCE.setWorld(world); + renderer.setRenderBoundsFromBlock(block); + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + renderer.renderStandardBlock(block, x, y, z); + + return true; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java b/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java index 0cfe54d27..65f4ef5e5 100644 --- a/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/DungeonSpawner.java @@ -3,7 +3,6 @@ package com.hbm.blocks.generic; import java.util.function.Consumer; import java.util.function.Function; -import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder; import com.hbm.entity.mob.EntityUndeadSoldier; import com.hbm.items.ItemEnums.EnumSecretType; @@ -13,10 +12,12 @@ import com.hbm.util.Vec3NT; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class DungeonSpawner extends BlockContainer { @@ -34,7 +35,7 @@ public class DungeonSpawner extends BlockContainer { public int phase = 0; public int timer = 0; - public EnumSpawnerType type = EnumSpawnerType.NONE; + public EnumSpawnerType type = EnumSpawnerType.ABERRATOR; @Override public void updateEntity() { @@ -67,7 +68,7 @@ public class DungeonSpawner extends BlockContainer { public static enum EnumSpawnerType { - NONE(CON_TEST, PHASE_TEST); + ABERRATOR(CON_ABERRATOR, PHASE_ABERRATOR); public Function phaseCondition; public Consumer phase; @@ -78,23 +79,23 @@ public class DungeonSpawner extends BlockContainer { } } - public static Function CON_TEST = (tile) -> { + public static Function CON_ABERRATOR = (tile) -> { World world = tile.getWorldObj(); int x = tile.xCoord; int y = tile.yCoord; int z = tile.zCoord; if(tile.phase == 0) { if(world.getTotalWorldTime() % 20 != 0) return false; - //return !world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1).expand(20, 10, 20)).isEmpty(); + return !world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y - 2, z + 1).expand(20, 10, 20)).isEmpty(); } if(tile.phase < 3) { if(world.getTotalWorldTime() % 20 != 0 || tile.timer < 60) return false; - //return world.getEntitiesWithinAABB(EntityUndeadSoldier.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1).expand(50, 20, 50)).isEmpty(); + return world.getEntitiesWithinAABB(EntityUndeadSoldier.class, AxisAlignedBB.getBoundingBox(x, y, z, x - 2, y + 1, z + 1).expand(50, 20, 50)).isEmpty(); } return false; }; - public static Consumer PHASE_TEST = (tile) -> { + public static Consumer PHASE_ABERRATOR = (tile) -> { World world = tile.getWorldObj(); int x = tile.xCoord; int y = tile.yCoord; @@ -104,21 +105,26 @@ public class DungeonSpawner extends BlockContainer { Vec3NT vec = new Vec3NT(10, 0, 0); for(int i = 0; i < 10; i++) { EntityUndeadSoldier mob = new EntityUndeadSoldier(world); - mob.setPositionAndRotation(x + 0.5 + vec.xCoord, y, z + 0.5 + vec.zCoord, i * 36F, 0); + for(int j = 0; j < 7; j++) { + mob.setPositionAndRotation(x + 0.5 + vec.xCoord, y - 5, z + 0.5 + vec.zCoord, i * 36F, 0); + if(mob.getCanSpawnHere()) { + mob.onSpawnWithEgg(null); + world.spawnEntityInWorld(mob); + break; + } + } + vec.rotateAroundYDeg(36D); - mob.onSpawnWithEgg(null); - world.spawnEntityInWorld(mob); } } } if(tile.phase > 2) { - world.setBlock(x, y + 1, z, ModBlocks.skeleton_holder, 2 + world.rand.nextInt(4), 3); - TileEntity te = world.getTileEntity(x, y + 1, z); + TileEntity te = world.getTileEntity(x, y + 18, z); if(te instanceof TileEntitySkeletonHolder) { TileEntitySkeletonHolder skeleton = (TileEntitySkeletonHolder) te; skeleton.item = new ItemStack(ModItems.item_secret, 1, EnumSecretType.ABERRATOR.ordinal()); skeleton.markDirty(); - world.markBlockForUpdate(x, y, z); + world.markBlockForUpdate(x, y + 18, z); } world.setBlock(x, y, z, Blocks.obsidian); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index 7ebd39553..19c398e60 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -48,7 +48,7 @@ public class XFactory22lr { ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.greaseGun", 1.0F, 1.0F) + .dmg(2F).delay(1).dry(10).auto(true).spread(0.01F).reload(66).jam(30).sound("hbm:weapon.fire.greaseGun", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(LAMBDA_RECOIL_AM180)) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index eebed2654..972f3371e 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -767,6 +767,9 @@ public class ClientProxy extends ServerProxy { @Override public void registerBlockRenderer() { + RenderingRegistry.registerBlockHandler(new RenderISBRHUniversal()); + + /// STOP DOING THIS /// RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock()); RenderingRegistry.registerBlockHandler(new RenderTapeBlock()); RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 8aee31fa4..85f7942f0 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -441,6 +441,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_wither, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(Items.skull, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_ultradeath, 4), new Object[] { "BCB", "CIC", "BCB", 'B', ModBlocks.barbed_wire, 'C', ModItems.powder_yellowcake, 'I', ModItems.nuclear_waste }); + addShapelessAuto(new ItemStack(ModBlocks.sandbags, 4), new Object[] { ModItems.plate_polymer, KEY_SAND, KEY_SAND, KEY_SAND }); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.tape_recorder), 4), new Object[] { "TST", "SSS", 'T', W.ingot(), 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.steel_poles), 16), new Object[] { "S S", "SSS", "S S", 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.pole_top), 1), new Object[] { "T T", "TRT", "BBB", 'T', W.ingot(), 'B', BE.ingot(), 'R', MINGRADE.ingot() }); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index 8f180b926..5c3f93090 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -62,6 +62,8 @@ public class StructureManager { public static final NBTStructure lighthouse = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/lighthouse.nbt")); public static final NBTStructure dish = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dish.nbt")); + public static final NBTStructure spire = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/spire.nbt")); + // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); // public static final NBTStructure test_jigsaw = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw.nbt")); // public static final NBTStructure test_jigsaw_core = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw-core.nbt")); diff --git a/src/main/java/com/hbm/render/block/ISBRHUniversal.java b/src/main/java/com/hbm/render/block/ISBRHUniversal.java new file mode 100644 index 000000000..a401083b3 --- /dev/null +++ b/src/main/java/com/hbm/render/block/ISBRHUniversal.java @@ -0,0 +1,13 @@ +package com.hbm.render.block; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.Block; +import net.minecraft.world.IBlockAccess; + +public interface ISBRHUniversal { + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + public void renderInventoryBlock(Block block, int metadata, int modelId, Object renderBlocks); + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks); +} diff --git a/src/main/java/com/hbm/render/block/RenderISBRHUniversal.java b/src/main/java/com/hbm/render/block/RenderISBRHUniversal.java new file mode 100644 index 000000000..a80aef9bb --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderISBRHUniversal.java @@ -0,0 +1,29 @@ +package com.hbm.render.block; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.world.IBlockAccess; + +public class RenderISBRHUniversal implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + ((ISBRHUniversal) block).renderInventoryBlock(block, metadata, modelId, renderer); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + return ((ISBRHUniversal) block).renderWorldBlock(world, x, y, z, block, modelId, renderer); + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return ISBRHUniversal.renderID; + } +} diff --git a/src/main/java/com/hbm/render/util/RenderBlocksNT.java b/src/main/java/com/hbm/render/util/RenderBlocksNT.java index db0990f07..342453e3b 100644 --- a/src/main/java/com/hbm/render/util/RenderBlocksNT.java +++ b/src/main/java/com/hbm/render/util/RenderBlocksNT.java @@ -25,6 +25,37 @@ public class RenderBlocksNT extends RenderBlocks { return this; } + public static void renderStandardInventoryBlock(Block block, int meta, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + tessellator.setColorOpaque_F(1, 1, 1); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, meta)); + tessellator.draw(); + } + @Override public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) { Tessellator tessellator = Tessellator.instance; diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index e68df2f27..bb1c7b3d3 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -40,6 +40,13 @@ public class NTMWorldGenerator implements IWorldGenerator { final List beachBiomes = Arrays.asList(new BiomeGenBase[] { BiomeGenBase.beach, BiomeGenBase.stoneBeach, BiomeGenBase.coldBeach }); final List lighthouseBiomes = Arrays.asList(new BiomeGenBase[] { BiomeGenBase.ocean, BiomeGenBase.deepOcean, BiomeGenBase.beach, BiomeGenBase.stoneBeach, BiomeGenBase.coldBeach }); + /// SPIRE /// + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> biome.heightVariation <= 0.05F && !invalidBiomes.contains(biome); + structure = new JigsawPiece("spire", StructureManager.spire, -1); + spawnWeight = 2; + }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !invalidBiomes.contains(biome); start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ()); @@ -177,7 +184,7 @@ public class NTMWorldGenerator implements IWorldGenerator { add(new JigsawPiece("meteor_dragon_tesla", StructureManager.meteor_dragon_tesla) {{ blockTable = crates; }}, 1); add(new JigsawPiece("meteor_dragon_trap", StructureManager.meteor_dragon_trap) {{ blockTable = crates; }}, 1); add(new JigsawPiece("meteor_dragon_crate_crab", StructureManager.meteor_dragon_crate_crab) {{ blockTable = crates; }}, 1); - fallback = "headback"; + fallback = "headback"; }}); put("fallback", new JigsawPool() {{ add(new JigsawPiece("meteor_fallback", StructureManager.meteor_fallback) {{ blockTable = bricks; }}, 1); diff --git a/src/main/java/com/hbm/world/generator/CellularDungeon.java b/src/main/java/com/hbm/world/generator/CellularDungeon.java index 169b5fb3a..632ba1fe6 100644 --- a/src/main/java/com/hbm/world/generator/CellularDungeon.java +++ b/src/main/java/com/hbm/world/generator/CellularDungeon.java @@ -9,6 +9,7 @@ import com.hbm.inventory.RecipesCommon.MetaBlock; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +@Deprecated public class CellularDungeon { //a buffer "map" of the rooms being generated before being spawned in diff --git a/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java b/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java index f6cd5f152..cedfd8275 100644 --- a/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java +++ b/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java @@ -2,6 +2,7 @@ package com.hbm.world.generator; import com.hbm.world.generator.room.*; +@Deprecated public class CellularDungeonFactory { public static CellularDungeon jungle; diff --git a/src/main/java/com/hbm/world/generator/CellularDungeonRoom.java b/src/main/java/com/hbm/world/generator/CellularDungeonRoom.java index 9b3e9086c..29edded5a 100644 --- a/src/main/java/com/hbm/world/generator/CellularDungeonRoom.java +++ b/src/main/java/com/hbm/world/generator/CellularDungeonRoom.java @@ -6,6 +6,7 @@ import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +@Deprecated public class CellularDungeonRoom { protected CellularDungeon parent; diff --git a/src/main/java/com/hbm/world/generator/JungleDungeon.java b/src/main/java/com/hbm/world/generator/JungleDungeon.java index 50fc0dfa9..62b86b551 100644 --- a/src/main/java/com/hbm/world/generator/JungleDungeon.java +++ b/src/main/java/com/hbm/world/generator/JungleDungeon.java @@ -11,6 +11,7 @@ import com.hbm.world.generator.TimedGenerator.ITimedJob; import net.minecraft.world.World; +@Deprecated @NotableComments public class JungleDungeon extends CellularDungeon { diff --git a/src/main/java/com/hbm/world/generator/TimedGenerator.java b/src/main/java/com/hbm/world/generator/TimedGenerator.java index 086b3df0e..9501bbc8d 100644 --- a/src/main/java/com/hbm/world/generator/TimedGenerator.java +++ b/src/main/java/com/hbm/world/generator/TimedGenerator.java @@ -7,6 +7,7 @@ import com.hbm.interfaces.Spaghetti; import net.minecraft.world.World; +@Deprecated @Spaghetti("this class should be destroyed") public class TimedGenerator { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2efea3a36..5643c75cb 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4743,6 +4743,7 @@ tile.sand_lead.name=Bleisand tile.sand_polonium.name=Poloniumsand tile.sand_quartz.name=Quarzsand tile.sand_uranium.name=Uransand +tile.sandbags.name=Sandsäcke tile.sat_dock.name=Frachtlandeplattform tile.sat_foeq.name=PEAF - Mk.I FOEQ Dunasonde mit experimenter nuklearer Schubdüse (Dekoblock) tile.sat_laser.name=Orbitaler Todesstrahl (Dekoblock) @@ -4875,6 +4876,7 @@ tile.watz_end.name=Watz-Stabilitätselement tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet) tile.watz_hatch.name=Watzreaktorzugriffsluke tile.watz_pump.name=Watz-Druckpumpe +tile.wood_barrier.name=Holzbarriere tile.yellow_barrel.name=Radioaktives Fass tile.zirnox_destroyed.name=Zerstörter ZINOX diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1d7fd2960..725b7c61a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5898,6 +5898,7 @@ tile.sand_lead.name=Lead Sand tile.sand_polonium.name=Polonium Sand tile.sand_quartz.name=Quartz Sand tile.sand_uranium.name=Uranium Sand +tile.sandbags.name=Sandbags tile.sat_dock.name=Cargo Landing Pad tile.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (Deco Block) tile.sat_laser.name=Orbital Death Ray (Deco Block) @@ -6037,6 +6038,7 @@ tile.watz_end.name=Watz Reactor Stability Element tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) tile.watz_hatch.name=Watz Reactor Access Hatch tile.watz_pump.name=Watz Pressure Pump +tile.wood_barrier.name=Wooden Barrier tile.yellow_barrel.name=Radioactive Barrel tile.zirnox_destroyed.name=Destroyed ZIRNOX diff --git a/src/main/resources/assets/hbm/structures/spire-air.nbt b/src/main/resources/assets/hbm/structures/spire-air.nbt deleted file mode 100644 index 0e6994429..000000000 Binary files a/src/main/resources/assets/hbm/structures/spire-air.nbt and /dev/null differ diff --git a/src/main/resources/assets/hbm/structures/spire.nbt b/src/main/resources/assets/hbm/structures/spire.nbt index 0a23bdd39..0e6994429 100644 Binary files a/src/main/resources/assets/hbm/structures/spire.nbt and b/src/main/resources/assets/hbm/structures/spire.nbt differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sandbags.png b/src/main/resources/assets/hbm/textures/blocks/sandbags.png new file mode 100644 index 000000000..39e9f33f0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sandbags.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wood_barrier.png b/src/main/resources/assets/hbm/textures/blocks/wood_barrier.png new file mode 100644 index 000000000..dafd527a0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wood_barrier.png differ