diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index e3a4b390e..de8842189 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -407,6 +407,7 @@ public class ModBlocks { public static Block steel_scaffold; public static Block steel_grate; public static Block steel_grate_wide; + public static Block scaffold_dynamic; public static Block deco_pipe; public static Block deco_pipe_rusted; @@ -1580,6 +1581,7 @@ public class ModBlocks { steel_scaffold = new BlockScaffold().setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_orig"); steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + scaffold_dynamic = new BlockScaffoldDynamic().setBlockName("scaffold_dynamic").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); @@ -2081,7 +2083,6 @@ public class ModBlocks { turret_howard_damaged = new TurretHowardDamaged(Material.iron).setBlockName("turret_howard_damaged").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - //turret_brandon = new TurretBrandon(Material.iron).setBlockName("turret_brandon").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_arty = new TurretArty(Material.iron).setBlockName("turret_arty").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_himars = new TurretHIMARS(Material.iron).setBlockName("turret_himars").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_sentry = new TurretSentry().setBlockName("turret_sentry").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2735,6 +2736,7 @@ public class ModBlocks { register(steel_scaffold); GameRegistry.registerBlock(steel_grate, steel_grate.getUnlocalizedName()); register(steel_grate_wide); + register(scaffold_dynamic); GameRegistry.registerBlock(deco_pipe, ItemBlockBase.class, deco_pipe.getUnlocalizedName()); GameRegistry.registerBlock(deco_pipe_rusted, ItemBlockBase.class, deco_pipe_rusted.getUnlocalizedName()); GameRegistry.registerBlock(deco_pipe_green, ItemBlockBase.class, deco_pipe_green.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockScaffoldDynamic.java b/src/main/java/com/hbm/blocks/generic/BlockScaffoldDynamic.java new file mode 100644 index 000000000..61e314085 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockScaffoldDynamic.java @@ -0,0 +1,270 @@ +package com.hbm.blocks.generic; + +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; + +import static com.hbm.blocks.generic.BlockScaffoldDynamic.TileEntityScaffoldDynamic.*; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemBlowtorch; + +import api.hbm.block.IToolable; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockScaffoldDynamic extends BlockContainer implements IToolable, ILookOverlay { + + @SideOnly(Side.CLIENT) public IIcon iconPoleTop; + @SideOnly(Side.CLIENT) public IIcon iconPoleSide; + @SideOnly(Side.CLIENT) public IIcon iconGrateTop; + @SideOnly(Side.CLIENT) public IIcon iconGrateSide; + @SideOnly(Side.CLIENT) public IIcon iconBarTop; + @SideOnly(Side.CLIENT) public IIcon iconBarSide; + + public static int renderMode; + + public BlockScaffoldDynamic() { + super(Material.iron); + } + + public static int renderIDScaffold = RenderingRegistry.getNextAvailableRenderId(); + @Override public int getRenderType(){ return renderIDScaffold; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityScaffoldDynamic(); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(renderMode == 0) return side == 0 || side == 1 ? iconPoleTop : iconPoleSide; + if(renderMode == 1) return side == 0 || side == 1 ? iconGrateTop : iconGrateSide; + if(renderMode == 2) return side == 0 || side == 1 ? iconBarTop : iconBarSide; + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + this.iconPoleTop = reg.registerIcon(RefStrings.MODID + ":scaffold_pole_top"); + this.iconPoleSide = reg.registerIcon(RefStrings.MODID + ":scaffold_pole_side"); + this.iconGrateTop = reg.registerIcon(RefStrings.MODID + ":scaffold_grate_top"); + this.iconGrateSide = reg.registerIcon(RefStrings.MODID + ":scaffold_grate_side"); + this.iconBarTop = reg.registerIcon(RefStrings.MODID + ":scaffold_bar_top"); + this.iconBarSide = reg.registerIcon(RefStrings.MODID + ":scaffold_bar_side"); + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + TileEntityScaffoldDynamic tile = (TileEntityScaffoldDynamic) world.getTileEntity(x, y, z); + if(tool == ToolType.SCREWDRIVER) { + tile.locked = !tile.locked; + tile.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + + if(tool != ToolType.TORCH) return false; + + + int part = getPartFromCoord(fX, fY, fZ); + + if(part != 0 && tile.canToggle(part)) { + tile.toggle(part); + tile.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + return false; + } + + public static int getPartFromCoord(float fX, float fY, float fZ) { + if(fX < 0.25 && fZ < 0.25) return POLE_NX_NZ; + if(fX > 0.75 && fZ < 0.25) return POLE_PX_NZ; + if(fX > 0.75 && fZ > 0.75) return POLE_PX_PZ; + if(fX < 0.25 && fZ > 0.75) return POLE_NX_PZ; + + if(fY == 0 && fX < 0.25) return BAR_LOWER_NEG_X; + if(fY == 0 && fX > 0.75) return BAR_LOWER_POS_X; + if(fY == 0 && fZ < 0.25) return BAR_LOWER_NEG_Z; + if(fY == 0 && fZ > 0.75) return BAR_LOWER_POS_Z; + if(fY == 1 && fX < 0.25) return BAR_UPPER_NEG_X; + if(fY == 1 && fX > 0.75) return BAR_UPPER_POS_X; + if(fY == 1 && fZ < 0.25) return BAR_UPPER_NEG_Z; + if(fY == 1 && fZ > 0.75) return BAR_UPPER_POS_Z; + + if(fY < 0.125) return GRATE_LOWER; + if(fY > 0.875) return GRATE_UPPER; + + if(fX == 0 && fY < 0.5) return BAR_LOWER_NEG_X; + if(fX == 1 && fY < 0.5) return BAR_LOWER_POS_X; + if(fZ == 0 && fY < 0.5) return BAR_LOWER_NEG_Z; + if(fZ == 1 && fY < 0.5) return BAR_LOWER_POS_Z; + if(fX == 0 && fY > 0.5) return BAR_UPPER_NEG_X; + if(fX == 1 && fY > 0.5) return BAR_UPPER_POS_X; + if(fZ == 0 && fY > 0.5) return BAR_UPPER_NEG_Z; + if(fZ == 1 && fY > 0.5) return BAR_UPPER_POS_Z; + + return 0; + } + + //ttoo lazy to make an itemblock just to provide this in the one method that needs it + public static float lastFX; + public static float lastFY; + public static float lastFZ; + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + lastFX = fX; + lastFY = fY; + lastFZ = fZ; + + if(side == Library.POS_X.ordinal()) lastFX = 0; + if(side == Library.NEG_X.ordinal()) lastFX = 1; + if(side == Library.POS_Z.ordinal()) lastFZ = 0; + if(side == Library.NEG_Z.ordinal()) lastFZ = 1; + + return side; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + TileEntityScaffoldDynamic tile = (TileEntityScaffoldDynamic) world.getTileEntity(x, y, z); + + // DEFAUL: POLES + if(stack.getItemDamage() == 0) { + if(lastFX < 0.5 && lastFZ < 0.5) tile.toggle(tile.POLE_NX_NZ); + if(lastFX >= 0.5 && lastFZ < 0.5) tile.toggle(tile.POLE_PX_NZ); + if(lastFX < 0.5 && lastFZ >= 0.5) tile.toggle(tile.POLE_NX_PZ); + if(lastFX >= 0.5 && lastFZ >= 0.5) tile.toggle(tile.POLE_PX_PZ); + } + } + + public static class TileEntityScaffoldDynamic extends TileEntity { + + public int composite; + public int prevComposite; + public boolean locked; + public static final int BAR_LOWER_POS_X = (1 << 0); + public static final int BAR_LOWER_NEG_X = (1 << 1); + public static final int BAR_LOWER_POS_Z = (1 << 2); + public static final int BAR_LOWER_NEG_Z = (1 << 3); + public static final int BAR_UPPER_POS_X = (1 << 4); + public static final int BAR_UPPER_NEG_X = (1 << 5); + public static final int BAR_UPPER_POS_Z = (1 << 6); + public static final int BAR_UPPER_NEG_Z = (1 << 7); + public static final int POLE_PX_PZ = (1 << 8); + public static final int POLE_PX_NZ = (1 << 9); + public static final int POLE_NX_PZ = (1 << 10); + public static final int POLE_NX_NZ = (1 << 11); + public static final int GRATE_LOWER = (1 << 12); + public static final int GRATE_UPPER = (1 << 13); + + public boolean canToggle(int part) { return !locked && (composite ^ part) != 0; } + public void toggle(int part) { this.composite ^= part; System.out.println("" + this.composite); } + public boolean has(int part) { return (this.composite & part) != 0; } + + @Override + public void updateEntity() { } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.composite = nbt.getInteger("c"); + this.prevComposite = nbt.getInteger("p"); + this.locked = nbt.getBoolean("l"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("c", composite); + nbt.setInteger("p", prevComposite); + nbt.setBoolean("l", locked); + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; + ItemStack held = player.getHeldItem(); + + boolean holdsBlowtorch = held != null && held.getItem() instanceof ItemBlowtorch; + boolean holdScrewdriver = held != null && (held.getItem() == ModItems.screwdriver || held.getItem() == ModItems.screwdriver_desh); + + MovingObjectPosition mop = mc.objectMouseOver; + + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + float fX = (float) (mop.hitVec.xCoord - x); + float fY = (float) (mop.hitVec.yCoord - y); + float fZ = (float) (mop.hitVec.zCoord - z); + + TileEntityScaffoldDynamic tile = (TileEntityScaffoldDynamic) world.getTileEntity(x, y, z); + + if(tile != null && tile.locked && (holdsBlowtorch || holdScrewdriver)) { + List text = new ArrayList(); + text.add(EnumChatFormatting.RED + "Locked!"); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + return; + } + + if(holdsBlowtorch) { + String name = null; + int part = getPartFromCoord(fX, fY, fZ); + if(part <= (1 << 3)) name = "Lower Vertical Bar"; + else if(part <= (1 << 7)) name = "Upper Vertical Bar"; + else if(part <= (1 << 10)) name = "Pole"; + else if(part <= (1 << 13)) name = "Grate"; + + if(name != null) { + List text = new ArrayList(); + text.add("Toggle:"); + text.add(name); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } + } + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 90ccd677a..f7d519d68 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -836,6 +836,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); RenderingRegistry.registerBlockHandler(new RenderSteelWall()); RenderingRegistry.registerBlockHandler(new RenderSteelCorner()); + RenderingRegistry.registerBlockHandler(new RenderScaffoldDynamic()); RenderingRegistry.registerBlockHandler(new RenderBarrel()); RenderingRegistry.registerBlockHandler(new RenderFence()); RenderingRegistry.registerBlockHandler(new RenderBarbedWire()); diff --git a/src/main/java/com/hbm/render/block/RenderScaffoldDynamic.java b/src/main/java/com/hbm/render/block/RenderScaffoldDynamic.java new file mode 100644 index 000000000..91beb1e71 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderScaffoldDynamic.java @@ -0,0 +1,111 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockScaffoldDynamic; +import com.hbm.blocks.generic.BlockScaffoldDynamic.TileEntityScaffoldDynamic; +import com.hbm.render.util.RenderBlocksNT; + +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.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; + +public class RenderScaffoldDynamic implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + tessellator.startDrawingQuads(); + + + renderer.setRenderBounds(0D, 0D, 0.875D, 0.75D, 1D, 1D); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + + + renderer.setRenderBounds(0.75D, 0D, 0.75D, 1D, 1D, 1D); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + + renderer.setRenderBounds(0.875D, 0D, 0D, 1D, 1D, 0.75D); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + + tessellator.draw(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + + renderer = RenderBlocksNT.INSTANCE.setWorld(world); + + TileEntity tile = world.getTileEntity(x, y, z); + if(!(tile instanceof TileEntityScaffoldDynamic)) return false; + TileEntityScaffoldDynamic scaffold = (TileEntityScaffoldDynamic) tile; + + boolean lpx = scaffold.has(scaffold.BAR_LOWER_POS_X); + boolean lnx = scaffold.has(scaffold.BAR_LOWER_NEG_X); + boolean upx = scaffold.has(scaffold.BAR_UPPER_POS_X); + boolean unx = scaffold.has(scaffold.BAR_UPPER_NEG_X); + boolean lpz = scaffold.has(scaffold.BAR_LOWER_POS_Z); + boolean lnz = scaffold.has(scaffold.BAR_LOWER_NEG_Z); + boolean upz = scaffold.has(scaffold.BAR_UPPER_POS_Z); + boolean unz = scaffold.has(scaffold.BAR_UPPER_NEG_Z); + + boolean p_nx_nz = scaffold.has(scaffold.POLE_NX_NZ); + boolean p_px_nz = scaffold.has(scaffold.POLE_PX_NZ); + boolean p_px_pz = scaffold.has(scaffold.POLE_PX_PZ); + boolean p_nx_pz = scaffold.has(scaffold.POLE_NX_PZ); + + BlockScaffoldDynamic.renderMode = 0; + if(p_nx_nz) { renderer.setRenderBounds(0D, 0D, 0D, 0.25D, 1D, 0.25D); renderer.renderStandardBlock(block, x, y, z); } + if(p_px_nz) { renderer.setRenderBounds(0.75D, 0D, 0D, 1D, 1D, 0.25D); renderer.renderStandardBlock(block, x, y, z); } + if(p_px_pz) { renderer.setRenderBounds(0.75D, 0D, 0.75D, 1D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); } + if(p_nx_pz) { renderer.setRenderBounds(0D, 0D, 0.75D, 0.25D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); } + + BlockScaffoldDynamic.renderMode = 1; + if(scaffold.has(scaffold.GRATE_LOWER)) { renderer.setRenderBounds(0.000, 0.000, 0.000, 1.000, 0.125, 1.000); renderer.renderStandardBlock(block, x, y, z); } + if(scaffold.has(scaffold.GRATE_UPPER)) { renderer.setRenderBounds(0.000, 0.875, 0.000, 1.000, 1.000, 1.000); renderer.renderStandardBlock(block, x, y, z); } + + BlockScaffoldDynamic.renderMode = 2; + + if(lpx) { renderer.setRenderBounds(0.75, 0.00, p_px_nz ? 0.25 : 0.00, 1.00, 0.25, p_px_pz ? 0.75 : 1.00); renderer.renderStandardBlock(block, x, y, z); } + if(upx) { renderer.setRenderBounds(0.75, 0.75, p_px_nz ? 0.25 : 0.00, 1.00, 1.00, p_px_pz ? 0.75 : 1.00); renderer.renderStandardBlock(block, x, y, z); } + if(lnx) { renderer.setRenderBounds(0.00, 0.00, p_nx_nz ? 0.25 : 0.00, 0.25, 0.25, p_nx_pz ? 0.75 : 1.00); renderer.renderStandardBlock(block, x, y, z); } + if(unx) { renderer.setRenderBounds(0.00, 0.75, p_nx_nz ? 0.25 : 0.00, 0.25, 1.00, p_nx_pz ? 0.75 : 1.00); renderer.renderStandardBlock(block, x, y, z); } + if(lpz) { renderer.setRenderBounds(p_nx_pz || lnx ? 0.25 : 0.00, 0.00, 0.75, p_px_pz || lpx ? 0.75 : 1.00, 0.25, 1.00); renderer.renderStandardBlock(block, x, y, z); } + if(upz) { renderer.setRenderBounds(p_nx_pz || unx ? 0.25 : 0.00, 0.75, 0.75, p_px_pz || upx ? 0.75 : 1.00, 1.00, 1.00); renderer.renderStandardBlock(block, x, y, z); } + if(lnz) { renderer.setRenderBounds(p_nx_nz || lnx ? 0.25 : 0.00, 0.00, 0.00, p_px_nz || lpx ? 0.75 : 1.00, 0.25, 0.25); renderer.renderStandardBlock(block, x, y, z); } + if(unz) { renderer.setRenderBounds(p_nx_nz || unx ? 0.25 : 0.00, 0.75, 0.00, p_px_nz || upx ? 0.75 : 1.00, 1.00, 0.25); renderer.renderStandardBlock(block, x, y, z); } + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return BlockScaffoldDynamic.renderIDScaffold; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index e36bb9c52..a33860c56 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -14,6 +14,7 @@ import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; +import com.hbm.blocks.generic.BlockScaffoldDynamic.TileEntityScaffoldDynamic; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; @@ -63,6 +64,7 @@ public class TileMappings { put(TileEntityDecoSteelPoles.class, "tileentity_steelpoles"); put(TileEntityDecoPoleTop.class, "tileentity_poletop"); put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer"); + put(TileEntityScaffoldDynamic.class, "tileentity_scaffold_dynamic"); put(TileEntityMachineBattery.class, "tileentity_battery"); put(TileEntityCapacitor.class, "tileentity_capacitor"); put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner"); diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_side.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_side.png new file mode 100644 index 000000000..6c8ad885a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_top.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_top.png new file mode 100644 index 000000000..306526480 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_side.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_side.png new file mode 100644 index 000000000..0fb602b48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_top.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_top.png new file mode 100644 index 000000000..2d8cda107 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_side.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_side.png new file mode 100644 index 000000000..3a9c53fc4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_top.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_top.png new file mode 100644 index 000000000..79c69a803 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_top.png differ