diff --git a/changelog b/changelog index 7ec181e52..da40438bd 100644 --- a/changelog +++ b/changelog @@ -12,6 +12,7 @@ * Chicago pile control rods can either be fully withdrawn with redstone or fine tuned with RoR * Additionally, channels can be drilled by right clicking a pile addon device with the hand drill, the addon doesn't need to be removed beforehand * This is mainly for convenience when disassembling and reassembling the reactor, which requires all channels to be drilled again + * Piles that overheat will explode, throwing flaming graphite everywhere ## Changed * Updated all oil well GUI textures @@ -24,9 +25,17 @@ * This preview is green if it can be placed and red if it can not * On some machines, this preview might not be perfect, but the check on whether it can be placed should always be accurate * This makes it easier to anticipate how much space a machine takes up, as well as lining up large parts like fusion reactor components which were notoriously hard to place down right +* Updated the small pylon model + * The small pylon now has a steel variant +* Items in the battery socket which previously didn't show up in the socket's model are now rendered +* Reduced the cost for the heavy stirling engine ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI * Fixed an issue where the diesel generator's fuel capacity is the original 4,000mB instead of the intended new 16,000mB * This means that explosive barrels and universal barrels can now be loaded into the diesel generator -* Fixed RoR terminal's `set` command not working \ No newline at end of file +* Fixed RoR terminal's `set` command not working +* Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible + * This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons +* Fixed some issues regarding the new crane structure +* Fixed skeletonizer ashes floating over the floor after landing \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index 5597cf783..1cca3e365 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -631,13 +631,14 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl if(i == 2) facing = ForgeDirection.getOrientation(3); if(i == 3) facing = ForgeDirection.getOrientation(4); + ForgeDirection sideHit = ForgeDirection.getOrientation(mop.sideHit); facing = getDirModified(facing); - double originX = mop.blockX + facing.offsetX * o; - double originY = pY + (mop.sideHit == 1 ? 1 : 0); - double originZ = mop.blockZ + facing.offsetZ * o; + double originX = mop.blockX + facing.offsetX * o + sideHit.offsetX; + double originY = pY + sideHit.offsetY; + double originZ = mop.blockZ + facing.offsetZ * o + sideHit.offsetZ; - boolean canPlace = checkRequirement(player.worldObj, mop.blockX, pY + 1, mop.blockZ, facing, o); + boolean canPlace = checkRequirement(player.worldObj, mop.blockX + sideHit.offsetX, pY + sideHit.offsetY, mop.blockZ + sideHit.offsetZ, facing, o); Tessellator tess = Tessellator.instance; GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 507d6d814..d143d9bd8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -745,6 +745,7 @@ public class ModBlocks { public static Block red_connector; public static Block red_connector_super; public static Block red_pylon; + public static Block red_pylon_steel; public static Block red_pylon_medium_wood; public static Block red_pylon_medium_wood_transformer; public static Block red_pylon_medium_steel; @@ -1510,8 +1511,8 @@ public class ModBlocks { reinforced_ducrete = new BlockNoSpawn(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); lightstone = new BlockLightstone(Material.rock, LightstoneType.class, true, true).setBlockName("lightstone").setCreativeTab(MainRegistry.blockTab).setHardness(2F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":lightstone"); - brick_forgotten = new BlockPillar(Material.rock, RefStrings.MODID + ":brick_forgotten_top").setBlockName("brick_forgotten").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); - brick_forgotten_lock = new BlockForgottenLock(Material.rock, RefStrings.MODID + ":brick_forgotten_top").setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock"); + brick_forgotten = new BlockForgottenBrick().setBlockName("brick_forgotten").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); + brick_forgotten_lock = new BlockForgottenLock().setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock"); concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); @@ -1854,6 +1855,7 @@ public class ModBlocks { red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_connector_super = new ConnectorRedWireSuper(Material.iron).setBlockName("red_connector_super").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_steel = new PylonRedWire(Material.iron).setBlockName("red_pylon_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_medium_wood = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_medium_wood_transformer = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_medium_steel = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); @@ -1900,7 +1902,7 @@ public class ModBlocks { crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side"); fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -3130,6 +3132,7 @@ public class ModBlocks { register(red_connector); register(red_connector_super); register(red_pylon); + register(red_pylon_steel); register(red_pylon_medium_wood); register(red_pylon_medium_wood_transformer); register(red_pylon_medium_steel); diff --git a/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java b/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java new file mode 100644 index 000000000..42bb95b16 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockForgottenBrick.java @@ -0,0 +1,112 @@ +package com.hbm.blocks.generic; + +import java.util.List; + +import com.hbm.blocks.BlockMulti; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BlockForgottenBrick extends BlockMulti { + + private IIcon iconTop; + private IIcon iconAlt; + private IIcon iconAltTop; + private IIcon iconStone; + private IIcon iconHole; + private IIcon iconEmpty; + private IIcon iconPlanks; + private IIcon iconBricks; + + public static final int META_DEFAULT = 0; + public static final int META_BW = 1; + public static final int META_NULLSTONE = 2; + public static final int META_HOLE = 3; + public static final int META_HOLE_EMPTY = 4; + public static final int META_NULLROOM_WOOD = 5; + public static final int META_NULLROOM_STONE = 6; + + public BlockForgottenBrick() { + super(Material.rock); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + this.iconTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_top"); + this.iconAlt = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw"); + this.iconAltTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_top"); + this.iconStone = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_1_wip"); + this.iconHole = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_hole"); + this.iconEmpty = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_hole_empty"); + this.iconPlanks = reg.registerIcon(RefStrings.MODID + ":nr_planks"); + this.iconBricks = reg.registerIcon(RefStrings.MODID + ":nr_stone"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(meta == META_BW) { + if(side == 0 || side == 1) return this.iconAltTop; + return this.iconAlt; + } + if(meta == META_NULLSTONE) { + return this.iconStone; + } + if(meta == META_HOLE) { + if(side == 0 || side == 1) return this.iconTop; + return this.iconHole; + } + if(meta == META_HOLE_EMPTY) { + if(side == 0 || side == 1) return this.iconTop; + return this.iconEmpty; + } + if(meta == META_NULLROOM_WOOD) { + return this.iconPlanks; + } + if(meta == META_NULLROOM_STONE) { + return this.iconBricks; + } + + if(side == 0 || side == 1) return this.iconTop; + return this.blockIcon; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta == META_HOLE) { + if(player.getHeldItem() == null) { + player.inventory.mainInventory[player.inventory.currentItem] = new ItemStack(ModItems.coal_eternal); + world.setBlockMetadataWithNotify(x, y, z, META_HOLE_EMPTY, 3); + return true; + } + return false; + } + + return false; + } + + @Override public int getSubCount() { return 7; } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) { + list.add(new ItemStack(item, 1, i)); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java b/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java index b1af065e0..cca103db8 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java +++ b/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java @@ -1,21 +1,82 @@ package com.hbm.blocks.generic; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.machine.BlockPillar; -import com.hbm.items.ModItems; +import java.util.List; +import com.hbm.blocks.BlockMulti; +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockForgottenLock extends BlockPillar { +public class BlockForgottenLock extends BlockMulti { + + private IIcon iconTop; + private IIcon iconAlt; + private IIcon iconAltTop; + private IIcon iconStone; + private IIcon iconStoneTop; + + public static final int META_DEFAULT = 0; + public static final int META_BW = 1; + public static final int META_NULLSTONE = 2; + public static final int META_THE_BLOCK_THAT_FUCKING_KILLS_YOU = 3; - public BlockForgottenLock(Material mat, String top) { - super(mat, top); + public BlockForgottenLock() { + super(Material.rock); } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + this.iconTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_top"); + this.iconAlt = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_lock"); + this.iconStone = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_2_wip"); + this.iconStoneTop = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_1_wip"); + this.iconAltTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_top"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(meta == META_BW) { + if(side == 0 || side == 1) return this.iconAltTop; + return this.iconAlt; + } + + if(meta == META_NULLSTONE) { + if(side == 0 || side == 1) return this.iconStoneTop; + return this.iconStone; + } + + if(side == 0 || side == 1) return this.iconTop; + return this.blockIcon; + } + + /* + * A red herring is something that misleads or distracts from a relevant or important question.[1] + * It may be either a logical fallacy or a literary device that leads readers or audiences toward a + * false conclusion. A red herring may be used intentionally, as in mystery fiction or as part of + * rhetorical strategies (e.g., in politics), or may be used in argumentation inadvertently.[2] + * + * The expression was popularized in 1807 by the English polemicist William Cobbett, who told a + * story of having used a strong-smelling smoked herring to divert and distract hounds from + * chasing a rabbit.[3] + */ @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { @@ -49,4 +110,14 @@ public class BlockForgottenLock extends BlockPillar { world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b); } } + + @Override public int getSubCount() { return 3; } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) { + list.add(new ItemStack(item, 1, i)); + } + } } diff --git a/src/main/java/com/hbm/blocks/network/PylonRedWire.java b/src/main/java/com/hbm/blocks/network/PylonRedWire.java index 8594cbb72..7c14957c1 100644 --- a/src/main/java/com/hbm/blocks/network/PylonRedWire.java +++ b/src/main/java/com/hbm/blocks/network/PylonRedWire.java @@ -1,6 +1,10 @@ package com.hbm.blocks.network; +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntityPylon; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -10,15 +14,17 @@ import net.minecraft.world.World; import java.util.List; -public class PylonRedWire extends PylonBase { +public class PylonRedWire extends BlockDummyable implements ITooltipProvider { - public PylonRedWire(Material material) { - super(material); + public PylonRedWire(Material mat) { + super(mat); } @Override public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityPylon(); + + if(meta >= 12) return new TileEntityPylon(); + return null; } @Override @@ -26,4 +32,34 @@ public class PylonRedWire extends PylonBase { list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "25m"); } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int m) { + TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TileEntityPylonBase) ((TileEntityPylonBase)te).disconnectAll(); + super.breakBlock(world, x, y, z, b, m); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + TileEntityPylonBase te = (TileEntityPylonBase) world.getTileEntity(pos[0], pos[1], pos[2]); + return te.setColor(player.getHeldItem()); + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index b89b86d58..f188eef34 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -39,6 +39,7 @@ public class FuelHandler implements IFuelHandler { if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_coke)) return single * 160; if(fuel.getItem() == ModItems.book_guide) return single; if(fuel.getItem() == ModItems.coal_infernal) return 4800; + if(fuel.getItem() == ModItems.coal_eternal) return single * 16; if(fuel.getItem() == ModItems.crystal_coal) return 6400; if(fuel.getItem() == ModItems.powder_sawdust) return single / 2; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineOilWell.java b/src/main/java/com/hbm/inventory/gui/GUIMachineOilWell.java index dfb32841c..908ce2c73 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineOilWell.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineOilWell.java @@ -36,11 +36,12 @@ public class GUIMachineOilWell extends GuiInfoContainer { derrick.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 54, guiTop + 45, 6, 32); } - String[] upgradeText = new String[4]; + String[] upgradeText = new String[5]; upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.afterburner"); + upgradeText[4] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive"); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 160, guiTop + 21, 8, 8, mouseX, mouseY, upgradeText); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 22, 16, 34, derrick.power, derrick.getMaxPower()); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 4b34d1d84..a8d060ca2 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -30,6 +30,7 @@ import com.hbm.items.machine.ItemBatterySC.EnumBatterySC; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPACoil.EnumCoilType; +import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.items.weapon.grenade.ItemGrenadeFuze.EnumGrenadeFuze; @@ -160,6 +161,21 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.protoreactor").setup(200, 100).outputItems(new ItemStack(ModItems.dysfunctional_reactor, 1)) .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(PB.plateCast(), 4), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack(KEY_BROWN, 3))); + // pile rods + String autoPileRod = "autoswitch.pilerod"; + this.register(new GenericRecipe("ass.pilepabe").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RA226BE.ordinal())) + .inputItems(new ComparableStack(ModItems.billet_ra226be, 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilepobe").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PO210BE.ordinal())) + .inputItems(new ComparableStack(ModItems.billet_po210be, 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilezr").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.ZR.ordinal())) + .inputItems(new OreDictStack(ZR.billet(), 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())) + .inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())) + .inputItems(new OreDictStack(PU239.billet(), 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilergp").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())) + .inputItems(new OreDictStack(PURG.billet(), 3)).setGroup(autoPileRod, INSTANCE)); + // powders String autoCyclotron = "autoswitch.cyclotron"; this.register(new GenericRecipe("ass.partlith").setup(40, 100).outputItems(new ItemStack(ModItems.part_lithium, 8)) diff --git a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java index 68f03ae6b..0aef690b3 100644 --- a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java @@ -13,6 +13,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; +import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import net.minecraft.item.ItemStack; @@ -60,23 +61,25 @@ public class PUREXRecipes extends GenericRecipes { //CP-1 String autoPile = "autoswitch.pile"; - this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) - .inputItems(new ComparableStack(ModItems.pile_rod_plutonium)) + this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu239").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) + .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.PU239)) + .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) + .outputItems(new ItemStack(ModItems.billet_pu239, 2), + new ItemStack(ModItems.billet_uranium, 1)) + .setIconToFirstIngredient()); + this.register((PUREXRecipe) new PUREXRecipe("purex.pilergp").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) + .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.RGP)) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) .outputItems(new ItemStack(ModItems.billet_pu_mix, 2), - new ItemStack(ModItems.billet_uranium, 1), - new ItemStack(ModItems.plate_iron, 2)) + new ItemStack(ModItems.billet_uranium, 1)) .setIconToFirstIngredient()); - - this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu239").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) - .inputItems(new ComparableStack(ModItems.pile_rod_pu239)) + this.register((PUREXRecipe) new PUREXRecipe("purex.pilewaste").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) + .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.WASTE)) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) - .outputItems(new ItemStack(ModItems.billet_pu239, 1), - new ItemStack(ModItems.billet_pu_mix, 1), - new ItemStack(ModItems.billet_uranium, 1), - new ItemStack(ModItems.plate_iron, 2)) + .outputItems(new ItemStack(ModItems.billet_nuclear_waste, 2), + new ItemStack(ModItems.billet_polonium, 1)) .setIconToFirstIngredient()); - + // ZIRNOX String autoZirnox = "autoswitch.zirnox"; this.register((PUREXRecipe) new PUREXRecipe("purex.zirnoxnu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 5f0e52e54..c5c3bd1da 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -25,6 +25,7 @@ import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; import com.hbm.items.machine.ItemBatterySC.EnumBatterySC; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; +import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod; import com.hbm.util.Tuple.Pair; import net.minecraft.block.Block; @@ -333,8 +334,8 @@ public class AnvilRecipes extends SerializableRecipe { new AStack[] { new OreDictStack(STEEL.plate(), 16), new OreDictStack(BE.ingot(), 6), - new OreDictStack(CU.ingot(), 8), - new ComparableStack(ModItems.coil_gold, 16), + new OreDictStack(CU.ingot(), 4), + new ComparableStack(ModItems.coil_gold, 8), new ComparableStack(ModItems.gear_large, 1, 1) }, new AnvilOutput(new ItemStack(ModBlocks.machine_stirling_steel))).setTier(2)); @@ -698,8 +699,8 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)), new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)), - new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)), - new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)), + new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)), new AnvilOutput(new ItemStack(ModItems.gear_large,1, 1)), } @@ -725,8 +726,8 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)), new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)), - new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)), - new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)), + new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)), } ).setTier(2)); @@ -846,30 +847,28 @@ public class AnvilRecipes extends SerializableRecipe { ).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_uranium), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_uranium, 3)), - new AnvilOutput(new ItemStack(ModItems.plate_iron, 2)) + new ComparableStack(ModItems.billet_ra226be, 3), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RA226BE.ordinal())), }).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_source), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_ra226be, 3)), - new AnvilOutput(new ItemStack(ModItems.plate_iron, 2)) + new ComparableStack(ModItems.billet_po210be, 3), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PO210BE.ordinal())), }).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_boron), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.ingot_boron, 2)), - new AnvilOutput(new ItemStack(Items.stick, 2)) + new OreDictStack(ZR.billet(), 3), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.ZR.ordinal())), }).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_detector), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.ingot_boron, 2)), - new AnvilOutput(new ItemStack(ModItems.motor, 1)), - new AnvilOutput(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE)) + new OreDictStack(U.billet(), 3), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())), }).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_lithium), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.lithium, 1)), - new AnvilOutput(new ItemStack(ModItems.cell_empty, 1)) + new OreDictStack(PU239.billet(), 3), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())), + }).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new OreDictStack(PURG.billet(), 3), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())), }).setTier(2)); //RBMK @@ -968,20 +967,6 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()), 0.5F), }).setTier(4)); - } else { - constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_plutonium), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 2)), - new AnvilOutput(new ItemStack(ModItems.billet_nuclear_waste, 1)), - new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) - }).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe( - new ComparableStack(ModItems.pile_rod_pu239), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_pu239, 1)), - new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 1)), - new AnvilOutput(new ItemStack(ModItems.billet_nuclear_waste, 1)), - new AnvilOutput(new ItemStack(ModItems.plate_iron, 2)) - }).setTier(2)); } constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index aeae45ce9..6fe99b259 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -105,6 +105,7 @@ public class ModItems { public static Item powder_lignite; public static Item briquette; public static Item coal_infernal; + public static Item coal_eternal; public static Item cinnebar; public static Item powder_ash; public static Item powder_limestone; @@ -2338,6 +2339,7 @@ public class ModItems { briquette = new ItemEnumMulti(EnumBriquetteType.class, true, true).setUnlocalizedName("briquette").setCreativeTab(MainRegistry.partsTab); powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite"); coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal"); + coal_eternal = new Item().setUnlocalizedName("coal_eternal").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":coal_eternal"); cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar"); powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash"); powder_limestone = new Item().setUnlocalizedName("powder_limestone").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_limestone"); @@ -4406,6 +4408,8 @@ public class ModItems { BucketHandler.INSTANCE.buckets.put(ModBlocks.schrabidic_block, ModItems.bucket_schrabidic_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.sulfuric_acid_block, ModItems.bucket_sulfuric_acid); MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE); + + coal_eternal.setContainerItem(coal_eternal); } private static void registerItem() { @@ -4605,6 +4609,7 @@ public class ModItems { GameRegistry.registerItem(coke, coke.getUnlocalizedName()); GameRegistry.registerItem(lignite, lignite.getUnlocalizedName()); GameRegistry.registerItem(coal_infernal, coal_infernal.getUnlocalizedName()); + GameRegistry.registerItem(coal_eternal, coal_eternal.getUnlocalizedName()); GameRegistry.registerItem(briquette, briquette.getUnlocalizedName()); GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName()); GameRegistry.registerItem(niter, niter.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 208243818..c225a3283 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -33,6 +33,7 @@ import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.main.ResourceManager; import com.hbm.render.item.weapon.sedna.*; +import com.hbm.tileentity.machine.pile.TileEntityPileCore; import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; import net.minecraftforge.client.MinecraftForgeClient; @@ -250,6 +251,8 @@ public class GunFactoryClient { setRendererBulk(LegoClient.RENDER_FRAGMENTATION, ItemGrenadeFilling.fragmentation, ItemGrenadeFilling.pellets, ItemGrenadeFilling.pellets_heavy); ItemGrenadeFilling.laser.setRendererBeam(LegoClient.RENDER_LASER_RED); + TileEntityPileCore.pile_debris.setRenderer(LegoClient.RENDER_GRAPHITE); + //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO, LegoClient.HUD_COMPONENT_AMMO_SECOND); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index bc46023ec..bb28f3dd1 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -12,6 +12,7 @@ import com.hbm.items.weapon.sedna.hud.HUDComponentDurabilityBar; import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; +import com.hbm.render.entity.projectile.RenderRBMKDebris; import com.hbm.render.item.weapon.sedna.ItemRenderFatMan; import com.hbm.render.tileentity.RenderArcFurnace; import com.hbm.render.util.BeamPronter; @@ -210,6 +211,14 @@ public class LegoClient { GL11.glPopMatrix(); } + public static BiConsumer RENDER_GRAPHITE = (bullet, interp) -> { + GL11.glScalef(2F, 2F, 2F); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(RenderRBMKDebris.tex_graphite); + ResourceManager.deb_graphite.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }; + public static BiConsumer RENDER_GRENADE = (bullet, interp) -> { GL11.glScalef(0.25F, 0.25F, 0.25F); GL11.glRotated(90, 0, 0, 1); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 1055ef5c5..de2992170 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -241,7 +241,8 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_connector_super, 2), new Object[] { "CCC", "III", " S ", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', ANY_RESISTANTALLOY.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); + addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " S ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); + addRecipeAuto(new ItemStack(ModBlocks.red_pylon_steel, 4), new Object[] { "CWC", "PWP", " S ", 'C', ModItems.coil_copper, 'W', STEEL.pipe(), 'P', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_wood, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); addShapelessAuto(new ItemStack(ModBlocks.red_pylon_medium_wood_transformer, 1), new Object[] { ModBlocks.red_pylon_medium_wood, ModItems.plate_polymer, ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_steel, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', STEEL.pipe(), 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); @@ -298,7 +299,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() }); - addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 68a296fd0..25f58dc2f 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -92,6 +92,9 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.conveyor_double)); API.hideItem(new ItemStack(ModBlocks.conveyor_triple)); + API.hideItem(new ItemStack(ModBlocks.brick_forgotten)); + API.hideItem(new ItemStack(ModBlocks.brick_forgotten_lock)); + API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() { @Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { int x = mop.blockX; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index fc2f13c3a..5164c34f8 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -407,6 +407,7 @@ public class ResourceManager { //Network public static final IModelCustom connector = new HFRWavefrontObject("models/network/connector.obj").noSmooth().asVBO(); public static final IModelCustom connector_super = new HFRWavefrontObject("models/network/connector_super.obj").noSmooth().asVBO(); + public static final IModelCustom pylon = new HFRWavefrontObject("models/network/pylon.obj").noSmooth().asVBO(); public static final IModelCustom pylon_medium = new HFRWavefrontObject("models/network/pylon_medium.obj").noSmooth().asVBO(); public static final IModelCustom pylon_large = new HFRWavefrontObject("models/network/pylon_large.obj").noSmooth().asVBO(); public static final IModelCustom substation = new HFRWavefrontObject("models/network/substation.obj").asVBO(); @@ -859,6 +860,8 @@ public class ResourceManager { //Electricity public static final ResourceLocation connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector.png"); public static final ResourceLocation connector_super_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector_super.png"); + public static final ResourceLocation pylon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon.png"); + public static final ResourceLocation pylon_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_steel.png"); public static final ResourceLocation pylon_medium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium.png"); public static final ResourceLocation pylon_medium_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium_steel.png"); public static final ResourceLocation pylon_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_large.png"); diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java index 4b76c52ac..f845f7185 100644 --- a/src/main/java/com/hbm/particle/ParticleAshes.java +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -72,14 +72,15 @@ public class ParticleAshes extends EntityFXRotating { float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); + double yOff = 0.09; - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); vec.rotateAroundYDeg(90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); vec.rotateAroundYDeg(90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); vec.rotateAroundYDeg(90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); } else { renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); } diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderRBMKDebris.java b/src/main/java/com/hbm/render/entity/projectile/RenderRBMKDebris.java index 383b7a77b..d774dffe5 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderRBMKDebris.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderRBMKDebris.java @@ -14,12 +14,12 @@ import net.minecraft.util.ResourceLocation; public class RenderRBMKDebris extends Render { //for fallback only - private static final ResourceLocation tex_base = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_side.png"); - private static final ResourceLocation tex_element = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_fuel.png"); - private static final ResourceLocation tex_control = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png"); - private static final ResourceLocation tex_blank = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_side.png"); - private static final ResourceLocation tex_lid = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_cover_top.png"); - private static final ResourceLocation tex_graphite = new ResourceLocation(RefStrings.MODID + ":textures/blocks/block_graphite.png"); + public static final ResourceLocation tex_base = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_side.png"); + public static final ResourceLocation tex_element = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_fuel.png"); + public static final ResourceLocation tex_control = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png"); + public static final ResourceLocation tex_blank = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_side.png"); + public static final ResourceLocation tex_lid = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_cover_top.png"); + public static final ResourceLocation tex_graphite = new ResourceLocation(RefStrings.MODID + ":textures/blocks/block_graphite.png"); @Override public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { diff --git a/src/main/java/com/hbm/render/model/ModelPylon.java b/src/main/java/com/hbm/render/model/ModelPylon.java deleted file mode 100755 index 3fffe8e93..000000000 --- a/src/main/java/com/hbm/render/model/ModelPylon.java +++ /dev/null @@ -1,63 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: Pylon -// Model Creator: -// Created on:13.06.2017 - 11:17:46 -// Last changed on: 13.06.2017 - 11:17:46 - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPylon extends ModelBase { - - public ModelRenderer[] pylonModel; - - public ModelPylon() { - this.textureWidth = 64; - this.textureHeight = 128; - - this.pylonModel = new ModelRenderer[4]; - this.pylonModel[0] = new ModelRenderer(this, 0, 96); // Box 0 - this.pylonModel[1] = new ModelRenderer(this, 1, 1); // Box 1 - this.pylonModel[2] = new ModelRenderer(this, 24, 1); // Box 2 - this.pylonModel[3] = new ModelRenderer(this, 25, 17); // Box 3 - - this.pylonModel[0].addBox(0F, 0F, 0F, 16, 16, 16, 0F); // Box 0 - this.pylonModel[0].setRotationPoint(-8F, -6F, -8F); - - this.pylonModel[1].addBox(0F, 0F, 0F, 4, 73, 4, 0F); // Box 1 - this.pylonModel[1].setRotationPoint(-2F, -79F, -2F); - - this.pylonModel[2].addBox(0F, 0F, 0F, 6, 4, 6, 0F); // Box 2 - this.pylonModel[2].setRotationPoint(-3F, -74F, -3F); - - this.pylonModel[3].addBox(0F, 0F, 0F, 6, 2, 6, 0F); // Box 3 - this.pylonModel[3].setRotationPoint(-3F, -78F, -3F); - - - for (ModelRenderer modelRenderer : this.pylonModel) { - modelRenderer.setTextureSize(this.textureWidth, this.textureHeight); - modelRenderer.mirror = true; - } - } - - @Override - public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor) { - - for(int i = 0; i < 4; i++) { - this.pylonModel[i].render(scaleFactor); - } - } - - public void renderAll(float scaleFactor) { - - for(int i = 0; i < 4; i++) { - this.pylonModel[i].render(scaleFactor); - } - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java b/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java index d31484758..42e35965a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java @@ -17,6 +17,9 @@ import com.hbm.render.util.BeamPronter.EnumWaveType; import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; import com.hbm.util.EnumUtil; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.item.EntityItem; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -28,6 +31,8 @@ import net.minecraftforge.client.IItemRenderer; public class RenderBatterySocket extends TileEntitySpecialRenderer implements IItemRendererProvider { private static ResourceLocation blorbo = new ResourceLocation(RefStrings.MODID, "textures/models/horse/sunburst.png"); + + public static EntityItem dummy; @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -78,6 +83,34 @@ public class RenderBatterySocket extends TileEntitySpecialRenderer implements II Random rand = new Random(tile.getWorldObj().getTotalWorldTime() / 5); rand.nextBoolean(); + for(int i = -1; i <= 1; i += 2) for(int j = -1; j <= 1; j += 2) if(rand.nextInt(4) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0.4375 * i, 1.1875, 0.4375 * j), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.0625F, 3, 0.025F); + BeamPronter.prontBeam(Vec3.createVectorHelper(0.4375 * i, 1.1875, 0.4375 * j), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 1, 0, 3, 0.025F); + GL11.glPopMatrix(); + } + } else { + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0); + GL11.glScaled(1.5, 1.5, 1.5); + GL11.glRotated((socket.getWorldObj().getTotalWorldTime() % 360 + interp) * 2.5D, 0, -1, 0); + + if(dummy == null || dummy.worldObj != tile.getWorldObj()) { + dummy = new EntityItem(tile.getWorldObj(), 0, 0, 0, render); + } + dummy.setEntityItemStack(render); + dummy.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + + GL11.glPopMatrix(); + + Random rand = new Random(tile.getWorldObj().getTotalWorldTime() / 5); + rand.nextBoolean(); + for(int i = -1; i <= 1; i += 2) for(int j = -1; j <= 1; j += 2) if(rand.nextInt(4) == 0) { GL11.glPushMatrix(); GL11.glTranslated(0, 0.75, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLPW2.java b/src/main/java/com/hbm/render/tileentity/RenderLPW2.java index 4e4eacf41..34989045e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLPW2.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLPW2.java @@ -29,7 +29,7 @@ public class RenderLPW2 extends TileEntitySpecialRenderer { case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - long time = te.getWorldObj().getTotalWorldTime(); + long time = te.getWorldObj().getTotalWorldTime() % 1000000; double swayTimer = ((time + interp) / 3D) % (Math.PI * 4); double sway = (Math.sin(swayTimer) + Math.sin(swayTimer * 2) + Math.sin(swayTimer * 4) + 2.23255D) * 0.5; diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylon.java b/src/main/java/com/hbm/render/tileentity/RenderPylon.java index ef270f2f3..b0285d1de 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylon.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylon.java @@ -2,38 +2,77 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelPylon; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.network.TileEntityPylon; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; -public class RenderPylon extends RenderPylonBase { - - private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelPylon.png"); +public class RenderPylon extends RenderPylonBase implements IItemRendererProvider { - private ModelPylon pylon; - - public RenderPylon() { - this.pylon = new ModelPylon(); + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + TileEntityPylon pylon = (TileEntityPylon)tile; + + if(tile.getBlockType() == ModBlocks.red_pylon) + bindTexture(ResourceManager.pylon_tex); + else + bindTexture(ResourceManager.pylon_steel_tex); + + if(tile.getBlockType() == ModBlocks.red_pylon ) + ResourceManager.pylon.renderPart("Pylon"); + else + ResourceManager.pylon.renderPart("Pylon_steel"); + + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + this.renderLinesGeneric(pylon, x, y, z); + GL11.glPopMatrix(); } @Override - public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { - TileEntityPylon pyl = (TileEntityPylon)te; - - GL11.glEnable(GL11.GL_LIGHTING); - - GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F - ((1F / 16F) * 14F), (float) z + 0.5F); - GL11.glRotatef(180, 0F, 0F, 1F); - bindTexture(texture); - this.pylon.renderAll(0.0625F); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - this.renderLinesGeneric(pyl, x, y, z); - GL11.glPopMatrix(); + public Item[] getItemsForRenderer() { + return new Item[] { + Item.getItemFromBlock(ModBlocks.red_pylon), + Item.getItemFromBlock(ModBlocks.red_pylon_steel), + }; + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.red_pylon); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.9, 2.9, 2.9); + } + public void renderCommonWithStack(ItemStack stack) { + GL11.glScaled(1, 1, 1); + + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon)) + bindTexture(ResourceManager.pylon_tex); + else + bindTexture(ResourceManager.pylon_steel_tex); + + if(stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon) ) + ResourceManager.pylon.renderPart("Pylon"); + else + ResourceManager.pylon.renderPart("Pylon_steel"); + } + }; } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java index e01a7ad67..5566ff999 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java @@ -7,6 +7,7 @@ import com.hbm.util.Compat; import api.hbm.redstoneoverradio.IRORInteractive; import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; @@ -98,6 +99,22 @@ public class TileEntityPileControl extends TileEntityPileDeviceBase implements I if(this.syncLevel != lastSync) this.turnProgress = 2; } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.level = nbt.getDouble("level"); + this.targetLevel = nbt.getDouble("targetLevel"); + this.wasRedstone = nbt.getBoolean("redstone"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setDouble("level", level); + nbt.setDouble("targetLevel", targetLevel); + nbt.setBoolean("wasRedstone", wasRedstone); + } + @Override public String[] getFunctionInfo() { return new String[] { diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java index ae06015f2..cc4c137fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java @@ -3,27 +3,35 @@ package com.hbm.tileentity.machine.pile; import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.util.function.BiConsumer; +import java.util.function.Consumer; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachinePWRController; import com.hbm.blocks.machine.pile.BlockPile; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.interfaces.NotableComments; import com.hbm.items.machine.ItemPileRodMK2; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.main.MainRegistry; import com.hbm.main.NTMSounds; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.helper.FlameCreator; import com.hbm.tileentity.TileEntityTickingBase; import com.hbm.util.EnumUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; +import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.util.ForgeDirection; @NotableComments @@ -373,6 +381,12 @@ public class TileEntityPileCore extends TileEntityTickingBase { meltingDown = true; worldObj.newExplosion(null, avgX, yCoord + up, avgZ, 15F, true, true); meltingDown= false; + + for(int i = 0; i < 15; i++) { + double mY = worldObj.rand.nextDouble() * 0.5 + 1D; + EntityBulletBaseMK4 fragment = new EntityBulletBaseMK4(worldObj, null, pile_debris, 100F, 0.35F, avgX, yCoord + up + 1, avgZ, 0, mY, 0); + worldObj.spawnEntityInWorld(fragment); + } } } @@ -610,4 +624,19 @@ public class TileEntityPileCore extends TileEntityTickingBase { return MathHelper.clamp_double(total / size, 0D, 0.5D); } } + + public static BulletConfig pile_debris; + + public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { + bullet.worldObj.newExplosion(bullet, bullet.posX, bullet.posY, bullet.posZ, 5F, true, false); + bullet.setDead(); + }; + + public static Consumer LAMBDA_FIRE = (bullet) -> { + if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE); + }; + + static { + pile_debris = new BulletConfig().setLife(200).setVel(1F).setGrav(0.1D).setOnUpdate(LAMBDA_FIRE).setOnImpact(LAMBDA_STANDARD_EXPLODE); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java index 91ea334da..29520c70f 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java @@ -16,6 +16,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -166,6 +167,35 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS if(this.syncLevel != lastSync) this.turnProgress = 2; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.loading = nbt.getBoolean("loading"); + this.level = nbt.getDouble("level"); + this.delay = nbt.getInteger("delay"); + this.wasRedstone = nbt.getBoolean("redstone"); + + if(nbt.hasKey("stack")) { + this.stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setBoolean("loading", loading); + nbt.setDouble("level", level); + nbt.setInteger("delay", delay); + nbt.setBoolean("wasRedstone", wasRedstone); + + if(this.stack != null) { + NBTTagCompound stackTag = new NBTTagCompound(); + this.stack.writeToNBT(stackTag); + nbt.setTag("stack", stackTag); + } + } public static boolean isItemLoadable(ItemStack stack) { return stack.getItem() == ModItems.pile_rod; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java index 02b2b702b..70a19b795 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java @@ -11,6 +11,7 @@ import com.hbm.util.Compat; import api.hbm.fluidmk2.IFluidStandardReceiverMK2; import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -99,4 +100,16 @@ public class TileEntityPileVent extends TileEntityPileDeviceBase implements IFlu super.deserialize(buf); this.isActive = buf.readBoolean(); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + compair.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + compair.writeToNBT(nbt, "t"); + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java index 03646593c..99f185e8b 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java @@ -18,12 +18,17 @@ public class TileEntityPylon extends TileEntityPylonBase { @Override public Vec3[] getMountPos() { - return new Vec3[] {Vec3.createVectorHelper(0.5, 5.4, 0.5)}; + return new Vec3[] {Vec3.createVectorHelper(0.5, 5.5D, 0.5)}; } @Override public double getMaxWireLength() { - return 25D; + return 25; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir != ForgeDirection.DOWN; } @Override @@ -33,8 +38,6 @@ public class TileEntityPylon extends TileEntityPylonBase { new DirPos(xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN), new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), - new DirPos(xCoord, yCoord + 1, zCoord, Library.POS_Y), - new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z) ); diff --git a/src/main/java/com/hbm/util/ShadyUtil.java b/src/main/java/com/hbm/util/ShadyUtil.java index b40c9a783..7f991f696 100644 --- a/src/main/java/com/hbm/util/ShadyUtil.java +++ b/src/main/java/com/hbm/util/ShadyUtil.java @@ -4,7 +4,6 @@ import com.google.common.collect.Sets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.util.Base64; import java.util.HashSet; import java.util.Random; import java.util.Set; @@ -62,10 +61,6 @@ public class ShadyUtil { "ccd9aa1c-26b9-4dde-8f37-b96f8d99de22", //kakseao }); - // simple cryptographic utils - @Deprecated public static String encode(String msg) { return Base64.getEncoder().encodeToString(msg.getBytes()); } - @Deprecated public static String decode(String msg) { return new String(Base64.getDecoder().decode(msg)); } - /** complete fucking shit */ public static String smoosh(String s1, String s2, String s3, String s4) { @@ -81,18 +76,12 @@ public class ShadyUtil { s += s1; rand.setSeed(b1[0]); - s += rand.nextInt(0xffffff); - s += s2; + s += rand.nextInt(0xffffff) + s2; rand.setSeed(rand.nextInt(0xffffff) + b2[0]); - rand.setSeed(b2[0]); - s += rand.nextInt(0xffffff); - s += s3; + s += rand.nextInt(0xffffff) + s3; rand.setSeed(rand.nextInt(0xffffff) + b3[0]); - rand.setSeed(b3[0]); - s += rand.nextInt(0xffffff); - s += s4; + s += rand.nextInt(0xffffff) + s4; rand.setSeed(rand.nextInt(0xffffff) + b4[0]); - rand.setSeed(b4[0]); s += rand.nextInt(0xffffff); return getHash(s); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 336065b4e..501693dbc 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -137,6 +137,7 @@ ass.nitra=Nitra zu Munition autoswitch=Teil der Rezeptgruppe "%s"$Rezept ändert sich basierend auf das erste Item autoswitch.cyclotron=Zyklotron-Pulverkisten autoswitch.pile=Wiederaufbereitung Chicago-Pile-Brennstoff +autoswitch.pilerod=Chicago-Pile-Brennstoff autoswitch.plate=Wiederaufbereitung Plattenbrennstoff autoswitch.plates=Metallplatten autoswitch.pwr=Wiederaufbereitung PWR-Brennstoff @@ -1733,6 +1734,7 @@ item.cmb_pickaxe.name=CMB-Stahlspitzhacke item.cmb_plate.name=CMB-Stahlbrustpanzer item.cmb_shovel.name=CMB-Stahlschaufel item.cmb_sword.name=CMB-Stahlschwert +item.coal_eternal.name=Ewige Kohle item.coal_infernal.name=Höllische Kohle item.cobalt_axe.name=Kobaltaxt item.cobalt_boots.name=Kobaltstiefel @@ -3980,6 +3982,7 @@ tile.brick_dungeon_flat.name=Berzelianitblock tile.brick_dungeon_tile.name=Berzelianitfliese tile.brick_fire.name=Schamottsteinziegel tile.brick_fire_stairs.name=Schamottsteintreppe +tile.brick_forgotten.name=Block tile.brick_jungle.name=Enargitziegel tile.brick_jungle_circle.name=Mechanistenzirkel tile.brick_jungle_cracked.name=Rissige Enargitziegel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a3548454f..6491f3b64 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -192,6 +192,7 @@ ass.nitra=Nitra to Ammunition autoswitch=Part of auto switch group "%s"$Recipe changes based on first ingredient autoswitch.cyclotron=Cyclotron Powder Boxes autoswitch.pile=Reprocessing Chicago Pile Rods +autoswitch.pilerod=Chicago Pile Rods autoswitch.plate=Reprocessing Plate Fuel autoswitch.plates=Metal Plates autoswitch.pwr=Reprocessing PWR Fuel @@ -2526,6 +2527,7 @@ item.cmb_pickaxe.name=CMB Steel Pickaxe item.cmb_plate.name=CMB Steel Chestplate item.cmb_shovel.name=CMB Steel Shovel item.cmb_sword.name=CMB Steel Sword +item.coal_eternal.name=Eternal Coal item.coal_infernal.name=Infernal Coal item.cobalt_axe.name=Cobalt Axe item.cobalt_boots.name=Cobalt Boots @@ -5195,6 +5197,7 @@ tile.brick_dungeon_flat.name=Berzelianite Block tile.brick_dungeon_tile.name=Berzelianite Tile tile.brick_fire.name=Firebricks tile.brick_fire_stairs.name=Firebrick Stairs +tile.brick_forgotten.name=Block tile.brick_jungle.name=Enargite Bricks tile.brick_jungle_circle.name=Mechanist's Circle tile.brick_jungle_cracked.name=Cracked Enargite Bricks @@ -6219,7 +6222,8 @@ tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_cable_paintable.desc=Right-click with a solid block to set a paint$Paint can be cleared with a screwdriver$Port texture can be disabled with a defuser$Paints can be copied with the copy tool tile.red_connector.name=Electricity Connector tile.red_connector_super.name=Heavy Duty Electricity Connector -tile.red_pylon.name=Electricity Pylon +tile.red_pylon.name=Wooden Electricity Pylon +tile.red_pylon_steel.name=Steel Electricity Pylon tile.red_pylon_large.name=Large Electricity Pylon tile.red_pylon_medium_steel.name=Medium Steel Electricity Pylon tile.red_pylon_medium_steel_transformer.name=Medium Steel Electricity Pylon with Transformer diff --git a/src/main/resources/assets/hbm/manual/material/etcoal.json b/src/main/resources/assets/hbm/manual/material/etcoal.json new file mode 100644 index 000000000..3bcdda69c --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/etcoal.json @@ -0,0 +1,11 @@ +{ + "name": "Eternal Coal", + "icon": ["hbm:item.nothing"], + "trigger": [["hbm:item.coal_eternal"]], + "title": { + "en_US": "█ █ █ █ █ █" + }, + "content": { + "en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ██████████ █ ████ █████ ██████ ████████ ████ █████ ██ ██ ███ ██████" + } +} diff --git a/src/main/resources/assets/hbm/models/network/pylon.obj b/src/main/resources/assets/hbm/models/network/pylon.obj new file mode 100644 index 000000000..b3f0eedef --- /dev/null +++ b/src/main/resources/assets/hbm/models/network/pylon.obj @@ -0,0 +1,1724 @@ +# Blender 5.2.0 LTS +# www.blender.org +o Pylon +v -0.187500 0.500000 0.500000 +v -0.187500 0.500000 0.187500 +v -0.187500 0.000000 0.500000 +v -0.187500 0.000000 0.187500 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.187500 +v -0.500000 0.000000 0.500000 +v -0.500000 0.000000 0.187500 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.187500 +v 0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.187500 +v 0.187500 0.500000 0.500000 +v 0.187500 0.500000 0.187500 +v 0.187500 0.000000 0.500000 +v 0.187500 0.000000 0.187500 +v -0.187500 0.500000 -0.187500 +v -0.187500 0.500000 -0.500000 +v -0.187500 -0.000000 -0.187500 +v -0.187500 -0.000000 -0.500000 +v -0.500000 0.500000 -0.187500 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.000000 -0.187500 +v -0.500000 -0.000000 -0.500000 +v 0.500000 0.500000 -0.187500 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.000000 -0.187500 +v 0.500000 -0.000000 -0.500000 +v 0.187500 0.500000 -0.187500 +v 0.187500 0.500000 -0.500000 +v 0.187500 -0.000000 -0.187500 +v 0.187500 -0.000000 -0.500000 +v 0.500000 0.687500 -0.187500 +v 0.375000 0.687500 -0.187500 +v 0.500000 0.312500 -0.187500 +v 0.375000 0.312500 -0.187500 +v 0.500000 0.687500 0.187500 +v 0.375000 0.687500 0.187500 +v 0.500000 0.312500 0.187500 +v 0.375000 0.312500 0.187500 +v 0.375000 0.625000 -0.125000 +v 0.375000 0.375000 -0.125000 +v 0.375000 0.625000 0.125000 +v 0.375000 0.375000 0.125000 +v 0.125000 0.625000 0.125000 +v 0.125000 0.375000 0.125000 +v 0.187500 0.687500 0.500000 +v 0.187500 0.687500 0.375000 +v 0.187500 0.312500 0.500000 +v 0.187500 0.312500 0.375000 +v -0.187500 0.687500 0.500000 +v -0.187500 0.687500 0.375000 +v -0.187500 0.312500 0.500000 +v -0.187500 0.312500 0.375000 +v 0.125000 0.625000 0.375000 +v 0.125000 0.375000 0.375000 +v -0.125000 0.625000 0.375000 +v -0.125000 0.375000 0.375000 +v -0.500000 0.687500 0.187500 +v -0.375000 0.687500 0.187500 +v -0.500000 0.312500 0.187500 +v -0.375000 0.312500 0.187500 +v -0.500000 0.687500 -0.187500 +v -0.375000 0.687500 -0.187500 +v -0.500000 0.312500 -0.187500 +v -0.375000 0.312500 -0.187500 +v -0.375000 0.625000 0.125000 +v -0.375000 0.375000 0.125000 +v -0.375000 0.625000 -0.125000 +v -0.375000 0.375000 -0.125000 +v -0.125000 0.625000 0.125000 +v -0.125000 0.375000 0.125000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.687500 -0.375000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.312500 -0.375000 +v 0.187500 0.687500 -0.500000 +v 0.187500 0.687500 -0.375000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.312500 -0.375000 +v -0.125000 0.625000 -0.375000 +v -0.125000 0.375000 -0.375000 +v 0.125000 0.625000 -0.375000 +v 0.125000 0.375000 -0.375000 +v -0.125000 0.625000 -0.125000 +v -0.125000 0.375000 -0.125000 +v 0.125000 0.625000 -0.125000 +v 0.125000 0.375000 -0.125000 +v 0.187500 4.000000 0.062500 +v 0.187500 4.000000 -0.062500 +v 0.187500 0.625000 0.062500 +v 0.187500 0.625000 -0.062500 +v 0.125000 4.000000 0.062500 +v 0.125000 4.000000 -0.062500 +v 0.125000 0.625000 0.062500 +v 0.125000 0.625000 -0.062500 +v 0.125000 4.000000 0.125000 +v 0.125000 4.000000 -0.125000 +v 0.125000 0.625000 0.125000 +v 0.125000 0.625000 -0.125000 +v -0.125000 4.000000 0.125000 +v -0.125000 4.000000 -0.125000 +v -0.125000 0.625000 0.125000 +v -0.125000 0.625000 -0.125000 +v 0.250000 5.000000 0.250000 +v 0.250000 5.000000 -0.250000 +v 0.250000 4.000000 0.250000 +v 0.250000 4.000000 -0.250000 +v -0.250000 5.000000 0.250000 +v -0.250000 5.000000 -0.250000 +v -0.250000 4.000000 0.250000 +v -0.250000 4.000000 -0.250000 +v 0.125000 5.187500 -0.125000 +v 0.125000 5.250000 0.125000 +v 0.125000 5.187500 0.125000 +v -0.125000 5.187500 0.125000 +v -0.125000 5.250000 -0.125000 +v -0.125000 5.187500 -0.125000 +v -0.125000 5.062500 -0.125000 +v 0.187500 5.062500 -0.187500 +v 0.125000 5.062500 -0.125000 +v 0.125000 5.000000 -0.125000 +v 0.125000 5.062500 0.125000 +v 0.125000 5.000000 0.125000 +v -0.125000 5.000000 0.125000 +v -0.125000 5.000000 -0.125000 +v -0.125000 5.062500 0.125000 +v 0.187500 5.187500 0.187500 +v 0.187500 5.062500 0.187500 +v -0.187500 5.062500 0.187500 +v -0.187500 5.062500 -0.187500 +v 0.187500 5.250000 -0.187500 +v 0.125000 5.250000 -0.125000 +v -0.187500 5.187500 -0.187500 +v 0.187500 5.187500 -0.187500 +v -0.187500 5.187500 0.187500 +v -0.125000 5.250000 0.125000 +v 0.187500 5.375000 0.187500 +v 0.187500 5.250000 0.187500 +v -0.187500 5.250000 0.187500 +v -0.187500 5.250000 -0.187500 +v -0.187500 5.375000 -0.187500 +v 0.187500 5.375000 -0.187500 +v -0.187500 5.375000 0.187500 +v 0.125000 5.375000 -0.125000 +v 0.125000 5.437500 0.125000 +v 0.125000 5.375000 0.125000 +v -0.125000 5.375000 0.125000 +v -0.125000 5.437500 -0.125000 +v -0.125000 5.375000 -0.125000 +v 0.125000 5.437500 -0.125000 +v -0.125000 5.437500 0.125000 +v -0.062500 5.437500 -0.062500 +v 0.062500 5.437500 -0.062500 +v 0.062500 5.562500 0.062500 +v 0.062500 5.437500 0.062500 +v -0.062500 5.437500 0.062500 +v -0.062500 5.562500 0.062500 +v 0.062500 5.562500 -0.062500 +v -0.062500 5.562500 -0.062500 +v 0.437500 0.875000 0.437500 +v 0.437500 0.875000 -0.437500 +v 0.437500 0.500000 0.437500 +v 0.437500 0.500000 -0.437500 +v -0.437500 0.875000 0.437500 +v -0.437500 0.875000 -0.437500 +v -0.437500 0.500000 0.437500 +v -0.437500 0.500000 -0.437500 +v 0.312500 1.000000 0.312500 +v 0.312500 1.000000 -0.312500 +v -0.312500 1.000000 0.312500 +v -0.312500 1.000000 -0.312500 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 0.7071 0.7071 +vn 0.7071 0.7071 -0.0000 +vn -0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 -0.0000 +vt 0.740741 0.162500 +vt 0.648148 0.162500 +vt 0.648148 0.062500 +vt 0.740741 0.062500 +vt 0.555556 0.062500 +vt 0.555556 0.162500 +vt 0.462963 0.162500 +vt 0.462963 0.062500 +vt 0.462963 0.225000 +vt 0.370370 0.225000 +vt 0.370370 0.162500 +vt 0.370370 0.062500 +vt 0.370370 0.000000 +vt 0.462963 0.000000 +vt 0.555556 0.325000 +vt 0.518519 0.325000 +vt 0.518519 0.250000 +vt 0.555556 0.250000 +vt 0.407407 0.250000 +vt 0.407407 0.325000 +vt 0.370370 0.325000 +vt 0.370370 0.250000 +vt 0.518519 0.350000 +vt 0.407407 0.350000 +vt 0.518519 0.225000 +vt 0.407407 0.225000 +vt 0.574074 0.312500 +vt 0.648148 0.312500 +vt 0.666667 0.325000 +vt 0.574074 0.262500 +vt 0.648148 0.262500 +vt 0.666667 0.250000 +vt 0.518519 0.400000 +vt 0.444444 0.400000 +vt 0.444444 0.350000 +vt 0.592593 0.400000 +vt 0.592593 0.350000 +vt 0.666667 0.400000 +vt 0.666667 0.350000 +vt 0.370370 0.400000 +vt 0.370370 0.350000 +vt 0.740741 0.350000 +vt 0.740741 0.400000 +vt 0.351852 0.675000 +vt 0.314815 0.675000 +vt 0.314815 0.000000 +vt 0.351852 0.000000 +vt 0.296296 0.675000 +vt 0.296296 0.000000 +vt 0.370370 0.675000 +vt 0.074074 0.675000 +vt 0.000000 0.675000 +vt 0.000000 0.000000 +vt 0.074074 0.000000 +vt 0.222222 0.000000 +vt 0.222222 0.675000 +vt 0.148148 0.675000 +vt 0.148148 0.000000 +vt 0.518519 0.700000 +vt 0.370370 0.700000 +vt 0.370370 0.500000 +vt 0.518519 0.500000 +vt 0.814815 0.500000 +vt 0.814815 0.700000 +vt 0.666667 0.700000 +vt 0.666667 0.500000 +vt 0.370370 0.800000 +vt 0.518519 0.800000 +vt 0.962963 0.500000 +vt 0.962963 0.700000 +vt 0.481481 0.862500 +vt 0.407407 0.875000 +vt 0.407407 0.862500 +vt 0.481481 0.812500 +vt 0.388889 0.825000 +vt 0.407407 0.812500 +vt 0.481481 0.800000 +vt 0.407407 0.800000 +vt 0.500000 0.825000 +vt 0.388889 0.850000 +vt 0.481481 0.875000 +vt 0.388889 0.887500 +vt 0.500000 0.887500 +vt 0.388889 0.912500 +vt 0.500000 0.850000 +vt 0.481481 0.925000 +vt 0.407407 0.937500 +vt 0.407407 0.925000 +vt 0.500000 0.912500 +vt 0.481481 0.937500 +vt 0.425926 0.950000 +vt 0.462963 0.950000 +vt 0.425926 0.975000 +vt 0.425926 1.000000 +vt 0.462963 0.975000 +vt 0.462963 1.000000 +vt 1.000000 0.250000 +vt 0.740741 0.250000 +vt 0.740741 0.175000 +vt 1.000000 0.175000 +vt 0.777778 0.275000 +vt 0.962963 0.275000 +vt 0.962963 0.400000 +vt 0.777778 0.400000 +vt 1.000000 0.000000 +vt 0.740741 0.000000 +s 1 +usemtl m_2d342b16-8f2e-5231-80ae-92eafddb5779 +f 2/1/1 1/2/1 3/3/1 +f 2/1/1 3/3/1 4/4/1 +f 7/5/2 5/6/2 6/7/2 +f 7/5/2 6/7/2 8/8/2 +f 5/9/3 1/10/3 2/11/3 +f 5/9/3 2/11/3 6/7/3 +f 4/12/4 3/13/4 7/14/4 +f 4/12/4 7/14/4 8/8/4 +f 3/3/5 1/2/5 5/6/5 +f 3/3/5 5/6/5 7/5/5 +f 6/7/6 2/11/6 4/12/6 +f 6/7/6 4/12/6 8/8/6 +f 10/1/1 9/2/1 11/3/1 +f 10/1/1 11/3/1 12/4/1 +f 15/5/2 13/6/2 14/7/2 +f 15/5/2 14/7/2 16/8/2 +f 13/9/3 9/10/3 10/11/3 +f 13/9/3 10/11/3 14/7/3 +f 12/12/4 11/13/4 15/14/4 +f 12/12/4 15/14/4 16/8/4 +f 11/3/5 9/2/5 13/6/5 +f 11/3/5 13/6/5 15/5/5 +f 14/7/6 10/11/6 12/12/6 +f 14/7/6 12/12/6 16/8/6 +f 18/1/1 17/2/1 19/3/1 +f 18/1/1 19/3/1 20/4/1 +f 23/5/2 21/6/2 22/7/2 +f 23/5/2 22/7/2 24/8/2 +f 21/9/3 17/10/3 18/11/3 +f 21/9/3 18/11/3 22/7/3 +f 20/12/4 19/13/4 23/14/4 +f 20/12/4 23/14/4 24/8/4 +f 19/3/5 17/2/5 21/6/5 +f 19/3/5 21/6/5 23/5/5 +f 22/7/6 18/11/6 20/12/6 +f 22/7/6 20/12/6 24/8/6 +f 26/1/1 25/2/1 27/3/1 +f 26/1/1 27/3/1 28/4/1 +f 31/5/2 29/6/2 30/7/2 +f 31/5/2 30/7/2 32/8/2 +f 29/9/3 25/10/3 26/11/3 +f 29/9/3 26/11/3 30/7/3 +f 28/12/4 27/13/4 31/14/4 +f 28/12/4 31/14/4 32/8/4 +f 27/3/5 25/2/5 29/6/5 +f 27/3/5 29/6/5 31/5/5 +f 30/7/6 26/11/6 28/12/6 +f 30/7/6 28/12/6 32/8/6 +f 34/15/6 33/16/6 35/17/6 +f 34/15/6 35/17/6 36/18/6 +f 39/19/5 37/20/5 38/21/5 +f 39/19/5 38/21/5 40/22/5 +f 37/20/3 33/16/3 34/23/3 +f 37/20/3 34/23/3 38/24/3 +f 36/25/4 35/17/4 39/19/4 +f 36/25/4 39/19/4 40/26/4 +f 35/17/1 33/16/1 37/20/1 +f 35/17/1 37/20/1 39/19/1 +f 41/27/2 43/28/2 38/29/2 +f 41/27/2 38/29/2 34/15/2 +f 42/30/2 41/27/2 34/15/2 +f 42/30/2 34/15/2 36/18/2 +f 44/31/2 42/30/2 36/18/2 +f 44/31/2 36/18/2 40/32/2 +f 43/28/2 44/31/2 40/32/2 +f 43/28/2 40/32/2 38/29/2 +f 87/33/3 45/34/3 43/35/3 +f 87/33/3 43/35/3 41/23/3 +f 88/36/6 87/33/6 41/23/6 +f 88/36/6 41/23/6 42/37/6 +f 46/38/4 88/36/4 42/37/4 +f 46/38/4 42/37/4 44/39/4 +f 45/34/5 46/40/5 44/41/5 +f 45/34/5 44/41/5 43/35/5 +f 48/15/1 47/16/1 49/17/1 +f 48/15/1 49/17/1 50/18/1 +f 53/19/2 51/20/2 52/21/2 +f 53/19/2 52/21/2 54/22/2 +f 51/20/3 47/16/3 48/23/3 +f 51/20/3 48/23/3 52/24/3 +f 50/25/4 49/17/4 53/19/4 +f 50/25/4 53/19/4 54/26/4 +f 49/17/5 47/16/5 51/20/5 +f 49/17/5 51/20/5 53/19/5 +f 55/27/6 57/28/6 52/29/6 +f 55/27/6 52/29/6 48/15/6 +f 56/30/6 55/27/6 48/15/6 +f 56/30/6 48/15/6 50/18/6 +f 58/31/6 56/30/6 50/18/6 +f 58/31/6 50/18/6 54/32/6 +f 57/28/6 58/31/6 54/32/6 +f 57/28/6 54/32/6 52/29/6 +f 45/33/3 71/34/3 57/35/3 +f 45/33/3 57/35/3 55/23/3 +f 46/36/1 45/33/1 55/23/1 +f 46/36/1 55/23/1 56/37/1 +f 72/38/4 46/36/4 56/37/4 +f 72/38/4 56/37/4 58/39/4 +f 71/34/2 72/40/2 58/41/2 +f 71/34/2 58/41/2 57/35/2 +f 60/15/5 59/16/5 61/17/5 +f 60/15/5 61/17/5 62/18/5 +f 65/19/6 63/20/6 64/21/6 +f 65/19/6 64/21/6 66/22/6 +f 63/20/3 59/16/3 60/23/3 +f 63/20/3 60/23/3 64/24/3 +f 62/25/4 61/17/4 65/19/4 +f 62/25/4 65/19/4 66/26/4 +f 61/17/2 59/16/2 63/20/2 +f 61/17/2 63/20/2 65/19/2 +f 67/27/1 69/28/1 64/29/1 +f 67/27/1 64/29/1 60/15/1 +f 68/30/1 67/27/1 60/15/1 +f 68/30/1 60/15/1 62/18/1 +f 70/31/1 68/30/1 62/18/1 +f 70/31/1 62/18/1 66/32/1 +f 69/28/1 70/31/1 66/32/1 +f 69/28/1 66/32/1 64/29/1 +f 71/33/3 85/34/3 69/35/3 +f 71/33/3 69/35/3 67/23/3 +f 72/36/5 71/33/5 67/23/5 +f 72/36/5 67/23/5 68/37/5 +f 86/38/4 72/36/4 68/37/4 +f 86/38/4 68/37/4 70/39/4 +f 85/34/6 86/40/6 70/41/6 +f 85/34/6 70/41/6 69/35/6 +f 74/15/2 73/16/2 75/17/2 +f 74/15/2 75/17/2 76/18/2 +f 79/19/1 77/20/1 78/21/1 +f 79/19/1 78/21/1 80/22/1 +f 77/20/3 73/16/3 74/23/3 +f 77/20/3 74/23/3 78/24/3 +f 76/25/4 75/17/4 79/19/4 +f 76/25/4 79/19/4 80/26/4 +f 75/17/6 73/16/6 77/20/6 +f 75/17/6 77/20/6 79/19/6 +f 81/27/5 83/28/5 78/29/5 +f 81/27/5 78/29/5 74/15/5 +f 82/30/5 81/27/5 74/15/5 +f 82/30/5 74/15/5 76/18/5 +f 84/31/5 82/30/5 76/18/5 +f 84/31/5 76/18/5 80/32/5 +f 83/28/5 84/31/5 80/32/5 +f 83/28/5 80/32/5 78/29/5 +f 85/33/3 87/34/3 83/35/3 +f 85/33/3 83/35/3 81/23/3 +f 86/36/2 85/33/2 81/23/2 +f 86/36/2 81/23/2 82/37/2 +f 88/38/4 86/36/4 82/37/4 +f 88/38/4 82/37/4 84/39/4 +f 87/34/1 88/40/1 84/41/1 +f 87/34/1 84/41/1 83/35/1 +f 72/38/4 86/39/4 88/42/4 +f 72/38/4 88/42/4 46/43/4 +f 90/44/1 89/45/1 91/46/1 +f 90/44/1 91/46/1 92/47/1 +f 91/46/5 89/45/5 93/48/5 +f 91/46/5 93/48/5 95/49/5 +f 94/50/6 90/44/6 92/47/6 +f 94/50/6 92/47/6 96/13/6 +f 98/51/1 97/52/1 99/53/1 +f 98/51/1 99/53/1 100/54/1 +f 103/55/2 101/56/2 102/57/2 +f 103/55/2 102/57/2 104/58/2 +f 99/49/5 97/48/5 101/56/5 +f 99/49/5 101/56/5 103/55/5 +f 102/57/6 98/51/6 100/54/6 +f 102/57/6 100/54/6 104/58/6 +f 106/59/1 105/60/1 107/61/1 +f 106/59/1 107/61/1 108/62/1 +f 111/63/2 109/64/2 110/65/2 +f 111/63/2 110/65/2 112/66/2 +f 109/67/3 105/60/3 106/59/3 +f 109/67/3 106/59/3 110/68/3 +f 108/62/4 107/61/4 111/40/4 +f 108/62/4 111/40/4 112/33/4 +f 107/69/5 105/70/5 109/64/5 +f 107/69/5 109/64/5 111/63/5 +f 110/65/6 106/59/6 108/62/6 +f 110/65/6 108/62/6 112/66/6 +f 113/71/1 114/72/1 115/73/1 +f 116/71/2 117/72/2 118/73/2 +f 119/74/4 120/75/4 121/76/4 +f 122/77/1 123/76/1 124/78/1 +f 125/77/2 119/76/2 126/78/2 +f 126/77/6 121/76/6 122/78/6 +f 124/77/5 127/76/5 125/78/5 +f 120/79/1 128/80/1 129/75/1 +f 123/74/4 130/75/4 127/76/4 +f 121/74/4 129/75/4 123/76/4 +f 127/74/4 131/75/4 119/76/4 +f 117/81/4 132/82/4 133/72/4 +f 130/79/2 134/80/2 131/75/2 +f 131/79/6 135/80/6 120/75/6 +f 129/79/5 136/80/5 130/75/5 +f 118/71/6 133/72/6 113/73/6 +f 115/71/5 137/72/5 116/73/5 +f 132/83/1 138/84/1 139/82/1 +f 114/81/4 140/82/4 137/72/4 +f 133/81/4 139/82/4 114/72/4 +f 137/81/4 141/82/4 117/72/4 +f 140/83/2 142/84/2 141/82/2 +f 141/83/6 143/84/6 132/82/6 +f 139/83/5 144/84/5 140/82/5 +f 115/71/3 136/80/3 128/85/3 +f 113/71/3 128/80/3 135/85/3 +f 118/71/3 135/80/3 134/85/3 +f 116/71/3 134/80/3 136/85/3 +f 145/86/1 146/87/1 147/88/1 +f 148/86/2 149/87/2 150/88/2 +f 150/86/6 151/87/6 145/88/6 +f 147/86/5 152/87/5 148/88/5 +f 147/86/3 144/84/3 138/89/3 +f 145/86/3 138/84/3 143/89/3 +f 150/86/3 143/84/3 142/89/3 +f 148/86/3 142/84/3 144/89/3 +f 152/90/3 153/91/3 149/87/3 +f 154/92/1 155/93/1 156/91/1 +f 149/90/3 154/91/3 151/87/3 +f 146/90/3 157/91/3 152/87/3 +f 151/90/3 156/91/3 146/87/3 +f 158/94/3 159/95/3 160/96/3 +f 157/92/2 160/93/2 153/91/2 +f 153/92/6 159/93/6 154/91/6 +f 156/92/5 158/93/5 157/91/5 +f 113/71/1 133/81/1 114/72/1 +f 116/71/2 137/81/2 117/72/2 +f 119/74/4 131/79/4 120/75/4 +f 122/77/1 121/74/1 123/76/1 +f 125/77/2 127/74/2 119/76/2 +f 126/77/6 119/74/6 121/76/6 +f 124/77/5 123/74/5 127/76/5 +f 120/79/1 135/85/1 128/80/1 +f 123/74/4 129/79/4 130/75/4 +f 121/74/4 120/79/4 129/75/4 +f 127/74/4 130/79/4 131/75/4 +f 117/81/4 141/83/4 132/82/4 +f 130/79/2 136/85/2 134/80/2 +f 131/79/6 134/85/6 135/80/6 +f 129/79/5 128/85/5 136/80/5 +f 118/71/6 117/81/6 133/72/6 +f 115/71/5 114/81/5 137/72/5 +f 132/83/1 143/89/1 138/84/1 +f 114/81/4 139/83/4 140/82/4 +f 133/81/4 132/83/4 139/82/4 +f 137/81/4 140/83/4 141/82/4 +f 140/83/2 144/89/2 142/84/2 +f 141/83/6 142/89/6 143/84/6 +f 139/83/5 138/89/5 144/84/5 +f 115/71/3 116/73/3 136/80/3 +f 113/71/3 115/73/3 128/80/3 +f 118/71/3 113/73/3 135/80/3 +f 116/71/3 118/73/3 134/80/3 +f 145/86/1 151/90/1 146/87/1 +f 148/86/2 152/90/2 149/87/2 +f 150/86/6 149/90/6 151/87/6 +f 147/86/5 146/90/5 152/87/5 +f 147/86/3 148/88/3 144/84/3 +f 145/86/3 147/88/3 138/84/3 +f 150/86/3 145/88/3 143/84/3 +f 148/86/3 150/88/3 142/84/3 +f 152/90/3 157/92/3 153/91/3 +f 154/92/1 159/95/1 155/93/1 +f 149/90/3 153/92/3 154/91/3 +f 146/90/3 156/92/3 157/91/3 +f 151/90/3 154/92/3 156/91/3 +f 158/94/3 155/93/3 159/95/3 +f 157/92/2 158/95/2 160/93/2 +f 153/92/6 160/95/6 159/93/6 +f 156/92/5 155/95/5 158/93/5 +f 162/97/1 161/98/1 163/99/1 +f 162/97/1 163/99/1 164/100/1 +f 167/100/2 165/97/2 166/98/2 +f 167/100/2 166/98/2 168/99/2 +f 171/101/3 169/102/3 170/103/3 +f 171/101/3 170/103/3 172/104/3 +f 164/105/4 163/100/4 167/99/4 +f 164/105/4 167/99/4 168/106/4 +f 163/100/5 161/97/5 165/98/5 +f 163/100/5 165/98/5 167/99/5 +f 166/97/6 162/98/6 164/99/6 +f 166/97/6 164/99/6 168/100/6 +f 169/102/7 171/101/7 165/98/7 +f 169/102/7 165/98/7 161/97/7 +f 170/102/8 169/101/8 161/98/8 +f 170/102/8 161/98/8 162/97/8 +f 172/102/9 170/101/9 162/98/9 +f 172/102/9 162/98/9 166/97/9 +f 171/102/10 172/101/10 166/98/10 +f 171/102/10 166/98/10 165/97/10 +o Pylon_steel +v -0.187500 0.500000 0.500000 +v -0.187500 0.500000 0.187500 +v -0.187500 0.000000 0.500000 +v -0.187500 0.000000 0.187500 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.187500 +v -0.500000 0.000000 0.500000 +v -0.500000 0.000000 0.187500 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.187500 +v 0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.187500 +v 0.187500 0.500000 0.500000 +v 0.187500 0.500000 0.187500 +v 0.187500 0.000000 0.500000 +v 0.187500 0.000000 0.187500 +v -0.187500 0.500000 -0.187500 +v -0.187500 0.500000 -0.500000 +v -0.187500 -0.000000 -0.187500 +v -0.187500 -0.000000 -0.500000 +v -0.500000 0.500000 -0.187500 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.000000 -0.187500 +v -0.500000 -0.000000 -0.500000 +v 0.500000 0.500000 -0.187500 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.000000 -0.187500 +v 0.500000 -0.000000 -0.500000 +v 0.187500 0.500000 -0.187500 +v 0.187500 0.500000 -0.500000 +v 0.187500 -0.000000 -0.187500 +v 0.187500 -0.000000 -0.500000 +v 0.250000 4.937500 0.250000 +v 0.250000 4.937500 -0.250000 +v 0.250000 4.687500 0.250000 +v 0.250000 4.687500 -0.250000 +v -0.250000 4.937500 0.250000 +v -0.250000 4.937500 -0.250000 +v -0.250000 4.687500 0.250000 +v -0.250000 4.687500 -0.250000 +v 0.125000 5.187500 -0.125000 +v 0.125000 5.250000 0.125000 +v 0.125000 5.187500 0.125000 +v -0.125000 5.187500 0.125000 +v -0.125000 5.250000 -0.125000 +v -0.125000 5.187500 -0.125000 +v -0.125000 5.062500 -0.125000 +v 0.187500 5.062500 -0.187500 +v 0.125000 5.062500 -0.125000 +v 0.125000 5.062500 0.125000 +v -0.125000 5.062500 0.125000 +v 0.187500 5.187500 0.187500 +v 0.187500 5.062500 0.187500 +v -0.187500 5.062500 0.187500 +v -0.187500 5.062500 -0.187500 +v 0.187500 5.250000 -0.187500 +v 0.125000 5.250000 -0.125000 +v -0.187500 5.187500 -0.187500 +v 0.187500 5.187500 -0.187500 +v -0.187500 5.187500 0.187500 +v -0.125000 5.250000 0.125000 +v 0.187500 5.375000 0.187500 +v 0.187500 5.250000 0.187500 +v -0.187500 5.250000 0.187500 +v -0.187500 5.250000 -0.187500 +v -0.187500 5.375000 -0.187500 +v 0.187500 5.375000 -0.187500 +v -0.187500 5.375000 0.187500 +v 0.125000 5.375000 -0.125000 +v 0.125000 5.437500 0.125000 +v 0.125000 5.375000 0.125000 +v -0.125000 5.375000 0.125000 +v -0.125000 5.437500 -0.125000 +v -0.125000 5.375000 -0.125000 +v 0.125000 5.437500 -0.125000 +v -0.125000 5.437500 0.125000 +v -0.062500 5.437500 -0.062500 +v 0.062500 5.437500 -0.062500 +v 0.062500 5.562500 0.062500 +v 0.062500 5.437500 0.062500 +v -0.062500 5.437500 0.062500 +v -0.062500 5.562500 0.062500 +v 0.062500 5.562500 -0.062500 +v -0.062500 5.562500 -0.062500 +v -0.250000 1.000000 -0.250000 +v -0.250000 1.000000 -0.437500 +v -0.250000 0.500000 -0.250000 +v -0.250000 0.500000 -0.437500 +v -0.437500 1.000000 -0.250000 +v -0.437500 1.000000 -0.437500 +v -0.437500 0.500000 -0.250000 +v -0.437500 0.500000 -0.437500 +v 0.000000 4.687500 -0.187500 +v -0.187500 4.687500 -0.187500 +v 0.437500 1.000000 -0.250000 +v 0.437500 1.000000 -0.437500 +v 0.437500 0.500000 -0.250000 +v 0.437500 0.500000 -0.437500 +v 0.250000 1.000000 -0.250000 +v 0.250000 1.000000 -0.437500 +v 0.250000 0.500000 -0.250000 +v 0.250000 0.500000 -0.437500 +v 0.187500 4.687500 -0.000000 +v 0.187500 4.687500 -0.187500 +v -0.250000 1.000000 0.437500 +v -0.250000 1.000000 0.250000 +v -0.250000 0.500000 0.437500 +v -0.250000 0.500000 0.250000 +v -0.437500 1.000000 0.437500 +v -0.437500 1.000000 0.250000 +v -0.437500 0.500000 0.437500 +v -0.437500 0.500000 0.250000 +v 0.000000 4.687500 0.187500 +v 0.000000 4.687500 -0.000000 +v -0.187500 4.687500 0.187500 +v -0.187500 4.687500 -0.000000 +v 0.437500 1.000000 0.437500 +v 0.437500 1.000000 0.250000 +v 0.437500 0.500000 0.437500 +v 0.437500 0.500000 0.250000 +v 0.250000 1.000000 0.437500 +v 0.250000 1.000000 0.250000 +v 0.250000 0.500000 0.437500 +v 0.250000 0.500000 0.250000 +v 0.187500 4.687500 0.187500 +v 0.125000 0.625000 0.125000 +v 0.125000 4.750000 0.125000 +v -0.125000 0.625000 0.125000 +v -0.125000 4.750000 0.125000 +v -0.125000 0.625000 -0.125000 +v 0.125000 0.625000 -0.125000 +v -0.125000 4.750000 -0.125000 +v 0.125000 4.750000 -0.125000 +v 0.500000 0.687500 -0.187500 +v 0.375000 0.687500 -0.187500 +v 0.500000 0.312500 -0.187500 +v 0.375000 0.312500 -0.187500 +v 0.500000 0.687500 0.187500 +v 0.375000 0.687500 0.187500 +v 0.500000 0.312500 0.187500 +v 0.375000 0.312500 0.187500 +v 0.375000 0.625000 -0.125000 +v 0.375000 0.375000 -0.125000 +v 0.375000 0.625000 0.125000 +v 0.375000 0.375000 0.125000 +v 0.125000 0.625000 0.125000 +v 0.125000 0.375000 0.125000 +v 0.187500 0.687500 0.500000 +v 0.187500 0.687500 0.375000 +v 0.187500 0.312500 0.500000 +v 0.187500 0.312500 0.375000 +v -0.187500 0.687500 0.500000 +v -0.187500 0.687500 0.375000 +v -0.187500 0.312500 0.500000 +v -0.187500 0.312500 0.375000 +v 0.125000 0.625000 0.375000 +v 0.125000 0.375000 0.375000 +v -0.125000 0.625000 0.375000 +v -0.125000 0.375000 0.375000 +v -0.500000 0.687500 0.187500 +v -0.375000 0.687500 0.187500 +v -0.500000 0.312500 0.187500 +v -0.375000 0.312500 0.187500 +v -0.500000 0.687500 -0.187500 +v -0.375000 0.687500 -0.187500 +v -0.500000 0.312500 -0.187500 +v -0.375000 0.312500 -0.187500 +v -0.375000 0.625000 0.125000 +v -0.375000 0.375000 0.125000 +v -0.375000 0.625000 -0.125000 +v -0.375000 0.375000 -0.125000 +v -0.125000 0.625000 0.125000 +v -0.125000 0.375000 0.125000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.687500 -0.375000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.312500 -0.375000 +v 0.187500 0.687500 -0.500000 +v 0.187500 0.687500 -0.375000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.312500 -0.375000 +v -0.125000 0.625000 -0.375000 +v -0.125000 0.375000 -0.375000 +v 0.125000 0.625000 -0.375000 +v 0.125000 0.375000 -0.375000 +v -0.125000 0.625000 -0.125000 +v -0.125000 0.375000 -0.125000 +v 0.125000 0.625000 -0.125000 +v 0.125000 0.375000 -0.125000 +v 0.218750 1.937500 0.250000 +v 0.281250 1.937500 0.250000 +v 0.218750 1.812500 0.250000 +v 0.281250 1.812500 0.250000 +v 0.218750 1.437500 -0.250000 +v 0.281250 1.437500 -0.250000 +v 0.218750 1.312500 -0.250000 +v 0.281250 1.312500 -0.250000 +v 0.281250 1.437500 0.250000 +v 0.343750 1.437500 0.250000 +v 0.281250 1.312500 0.250000 +v 0.343750 1.312500 0.250000 +v 0.281250 1.937500 -0.250000 +v 0.343750 1.937500 -0.250000 +v 0.281250 1.812500 -0.250000 +v 0.343750 1.812500 -0.250000 +v 0.281250 1.187500 0.250000 +v 0.343750 1.187500 0.250000 +v 0.281250 1.062500 0.250000 +v 0.343750 1.062500 0.250000 +v 0.281250 0.687500 -0.250000 +v 0.343750 0.687500 -0.250000 +v 0.281250 0.562500 -0.250000 +v 0.343750 0.562500 -0.250000 +v 0.343750 0.687500 0.250000 +v 0.406250 0.687500 0.250000 +v 0.343750 0.562500 0.250000 +v 0.406250 0.562500 0.250000 +v 0.343750 1.187500 -0.250000 +v 0.406250 1.187500 -0.250000 +v 0.343750 1.062500 -0.250000 +v 0.406250 1.062500 -0.250000 +v 0.156250 2.687500 0.250000 +v 0.218750 2.687500 0.250000 +v 0.156250 2.562500 0.250000 +v 0.218750 2.562500 0.250000 +v 0.156250 2.187500 -0.250000 +v 0.218750 2.187500 -0.250000 +v 0.156250 2.062500 -0.250000 +v 0.218750 2.062500 -0.250000 +v 0.218750 2.187500 0.250000 +v 0.281250 2.187500 0.250000 +v 0.218750 2.062500 0.250000 +v 0.281250 2.062500 0.250000 +v 0.218750 2.687500 -0.250000 +v 0.281250 2.687500 -0.250000 +v 0.218750 2.562500 -0.250000 +v 0.281250 2.562500 -0.250000 +v -0.218750 1.937500 -0.250000 +v -0.281250 1.937500 -0.250000 +v -0.218750 1.812500 -0.250000 +v -0.281250 1.812500 -0.250000 +v -0.218750 1.437500 0.250000 +v -0.281250 1.437500 0.250000 +v -0.218750 1.312500 0.250000 +v -0.281250 1.312500 0.250000 +v -0.281250 1.437500 -0.250000 +v -0.343750 1.437500 -0.250000 +v -0.281250 1.312500 -0.250000 +v -0.343750 1.312500 -0.250000 +v -0.281250 1.937500 0.250000 +v -0.343750 1.937500 0.250000 +v -0.281250 1.812500 0.250000 +v -0.343750 1.812500 0.250000 +v -0.281250 1.187500 -0.250000 +v -0.343750 1.187500 -0.250000 +v -0.281250 1.062500 -0.250000 +v -0.343750 1.062500 -0.250000 +v -0.281250 0.687500 0.250000 +v -0.343750 0.687500 0.250000 +v -0.281250 0.562500 0.250000 +v -0.343750 0.562500 0.250000 +v -0.343750 0.687500 -0.250000 +v -0.406250 0.687500 -0.250000 +v -0.343750 0.562500 -0.250000 +v -0.406250 0.562500 -0.250000 +v -0.343750 1.187500 0.250000 +v -0.406250 1.187500 0.250000 +v -0.343750 1.062500 0.250000 +v -0.406250 1.062500 0.250000 +v -0.156250 2.687500 -0.250000 +v -0.218750 2.687500 -0.250000 +v -0.156250 2.562500 -0.250000 +v -0.218750 2.562500 -0.250000 +v -0.156250 2.187500 0.250000 +v -0.218750 2.187500 0.250000 +v -0.156250 2.062500 0.250000 +v -0.218750 2.062500 0.250000 +v -0.218750 2.187500 -0.250000 +v -0.281250 2.187500 -0.250000 +v -0.218750 2.062500 -0.250000 +v -0.281250 2.062500 -0.250000 +v -0.218750 2.687500 0.250000 +v -0.281250 2.687500 0.250000 +v -0.218750 2.562500 0.250000 +v -0.281250 2.562500 0.250000 +v -0.250000 1.937500 0.218750 +v -0.250000 1.937500 0.281250 +v -0.250000 1.812500 0.218750 +v -0.250000 1.812500 0.281250 +v 0.250000 1.437500 0.218750 +v 0.250000 1.437500 0.281250 +v 0.250000 1.312500 0.218750 +v 0.250000 1.312500 0.281250 +v -0.250000 1.437500 0.281250 +v -0.250000 1.437500 0.343750 +v -0.250000 1.312500 0.281250 +v -0.250000 1.312500 0.343750 +v 0.250000 1.937500 0.281250 +v 0.250000 1.937500 0.343750 +v 0.250000 1.812500 0.281250 +v 0.250000 1.812500 0.343750 +v -0.250000 1.187500 0.281250 +v -0.250000 1.187500 0.343750 +v -0.250000 1.062500 0.281250 +v -0.250000 1.062500 0.343750 +v 0.250000 0.687500 0.281250 +v 0.250000 0.687500 0.343750 +v 0.250000 0.562500 0.281250 +v 0.250000 0.562500 0.343750 +v -0.250000 0.687500 0.343750 +v -0.250000 0.687500 0.406250 +v -0.250000 0.562500 0.343750 +v -0.250000 0.562500 0.406250 +v 0.250000 1.187500 0.343750 +v 0.250000 1.187500 0.406250 +v 0.250000 1.062500 0.343750 +v 0.250000 1.062500 0.406250 +v 0.250000 1.937500 -0.218750 +v 0.250000 1.937500 -0.281250 +v 0.250000 1.812500 -0.218750 +v 0.250000 1.812500 -0.281250 +v -0.250000 1.437500 -0.218750 +v -0.250000 1.437500 -0.281250 +v -0.250000 1.312500 -0.218750 +v -0.250000 1.312500 -0.281250 +v 0.250000 1.437500 -0.281250 +v 0.250000 1.437500 -0.343750 +v 0.250000 1.312500 -0.281250 +v 0.250000 1.312500 -0.343750 +v -0.250000 1.937500 -0.281250 +v -0.250000 1.937500 -0.343750 +v -0.250000 1.812500 -0.281250 +v -0.250000 1.812500 -0.343750 +v 0.250000 1.187500 -0.281250 +v 0.250000 1.187500 -0.343750 +v 0.250000 1.062500 -0.281250 +v 0.250000 1.062500 -0.343750 +v -0.250000 0.687500 -0.281250 +v -0.250000 0.687500 -0.343750 +v -0.250000 0.562500 -0.281250 +v -0.250000 0.562500 -0.343750 +v 0.250000 0.687500 -0.343750 +v 0.250000 0.687500 -0.406250 +v 0.250000 0.562500 -0.343750 +v 0.250000 0.562500 -0.406250 +v -0.250000 1.187500 -0.343750 +v -0.250000 1.187500 -0.406250 +v -0.250000 1.062500 -0.343750 +v -0.250000 1.062500 -0.406250 +v 0.250000 2.687500 -0.156250 +v 0.250000 2.687500 -0.218750 +v 0.250000 2.562500 -0.156250 +v 0.250000 2.562500 -0.218750 +v -0.250000 2.187500 -0.156250 +v -0.250000 2.187500 -0.218750 +v -0.250000 2.062500 -0.156250 +v -0.250000 2.062500 -0.218750 +v 0.250000 2.187500 -0.218750 +v 0.250000 2.187500 -0.281250 +v 0.250000 2.062500 -0.218750 +v 0.250000 2.062500 -0.281250 +v -0.250000 2.687500 -0.218750 +v -0.250000 2.687500 -0.281250 +v -0.250000 2.562500 -0.218750 +v -0.250000 2.562500 -0.281250 +v -0.187500 4.937500 0.187500 +v 0.187500 4.937500 0.187500 +v 0.187500 4.937500 -0.187500 +v -0.187500 4.937500 -0.187500 +v -0.125000 5.000000 0.125000 +v 0.125000 5.000000 0.125000 +v 0.125000 5.000000 -0.125000 +v -0.125000 5.000000 -0.125000 +v -0.250000 2.687500 0.156250 +v -0.250000 2.687500 0.218750 +v -0.250000 2.562500 0.156250 +v -0.250000 2.562500 0.218750 +v 0.250000 2.187500 0.156250 +v 0.250000 2.187500 0.218750 +v 0.250000 2.062500 0.156250 +v 0.250000 2.062500 0.218750 +v -0.250000 2.187500 0.218750 +v -0.250000 2.187500 0.281250 +v -0.250000 2.062500 0.218750 +v -0.250000 2.062500 0.281250 +v 0.250000 2.687500 0.218750 +v 0.250000 2.687500 0.281250 +v 0.250000 2.562500 0.218750 +v 0.250000 2.562500 0.281250 +v -0.281250 2.937500 0.125000 +v -0.156250 2.937500 0.125000 +v -0.281250 2.812500 0.125000 +v -0.156250 2.812500 0.125000 +v -0.281250 2.937500 -0.125000 +v -0.156250 2.937500 -0.125000 +v -0.281250 2.812500 -0.125000 +v -0.156250 2.812500 -0.125000 +v 0.281250 2.937500 -0.125000 +v 0.156250 2.937500 -0.125000 +v 0.281250 2.812500 -0.125000 +v 0.156250 2.812500 -0.125000 +v 0.281250 2.937500 0.125000 +v 0.156250 2.937500 0.125000 +v 0.281250 2.812500 0.125000 +v 0.156250 2.812500 0.125000 +v -0.125000 2.937500 -0.281250 +v -0.125000 2.937500 -0.156250 +v -0.125000 2.812500 -0.281250 +v -0.125000 2.812500 -0.156250 +v 0.125000 2.937500 -0.281250 +v 0.125000 2.937500 -0.156250 +v 0.125000 2.812500 -0.281250 +v 0.125000 2.812500 -0.156250 +v 0.125000 2.937500 0.281250 +v 0.125000 2.937500 0.156250 +v 0.125000 2.812500 0.281250 +v 0.125000 2.812500 0.156250 +v -0.125000 2.937500 0.281250 +v -0.125000 2.937500 0.156250 +v -0.125000 2.812500 0.281250 +v -0.125000 2.812500 0.156250 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0676 0.9977 +vn 0.9977 -0.0676 -0.0000 +vn -0.0000 0.0676 -0.9977 +vn -0.9977 0.0676 -0.0000 +vn 0.9977 0.0676 -0.0000 +vn -0.9977 -0.0676 -0.0000 +vn -0.0000 0.0676 0.9977 +vn -0.0000 -0.0676 -0.9977 +vn -0.0000 0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 0.7071 0.7071 +vn -0.0000 -0.7071 -0.7071 +vn 0.7071 0.7071 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vt 0.866667 0.162500 +vt 0.783333 0.162500 +vt 0.783333 0.062500 +vt 0.866667 0.062500 +vt 0.700000 0.062500 +vt 0.700000 0.162500 +vt 0.616667 0.162500 +vt 0.616667 0.062500 +vt 0.616667 0.225000 +vt 0.533333 0.225000 +vt 0.533333 0.162500 +vt 0.533333 0.062500 +vt 0.533333 0.000000 +vt 0.616667 0.000000 +vt 0.600000 0.375000 +vt 0.466667 0.375000 +vt 0.466667 0.325000 +vt 0.600000 0.325000 +vt 0.866667 0.325000 +vt 0.866667 0.375000 +vt 0.733333 0.375000 +vt 0.733333 0.325000 +vt 0.466667 0.225000 +vt 0.600000 0.225000 +vt 1.000000 0.325000 +vt 1.000000 0.375000 +vt 0.566667 0.537500 +vt 0.500000 0.550000 +vt 0.500000 0.537500 +vt 0.566667 0.487500 +vt 0.483333 0.500000 +vt 0.500000 0.487500 +vt 0.566667 0.475000 +vt 0.500000 0.475000 +vt 0.583333 0.500000 +vt 0.483333 0.525000 +vt 0.566667 0.550000 +vt 0.483333 0.562500 +vt 0.583333 0.562500 +vt 0.483333 0.587500 +vt 0.583333 0.525000 +vt 0.566667 0.600000 +vt 0.500000 0.612500 +vt 0.500000 0.600000 +vt 0.583333 0.587500 +vt 0.566667 0.612500 +vt 0.516667 0.625000 +vt 0.550000 0.625000 +vt 0.516667 0.650000 +vt 0.516667 0.675000 +vt 0.550000 0.650000 +vt 0.550000 0.675000 +vt 0.050000 0.100000 +vt 0.000000 0.100000 +vt 0.000000 0.000000 +vt 0.050000 0.000000 +vt 0.150000 0.000000 +vt 0.150000 0.100000 +vt 0.100000 0.100000 +vt 0.100000 0.000000 +vt 0.200000 0.000000 +vt 0.200000 0.100000 +vt 0.200000 0.837500 +vt 0.150000 0.837500 +vt 0.050000 0.837500 +vt 0.000000 0.837500 +vt 0.100000 0.837500 +vt 0.466667 1.000000 +vt 0.400000 1.000000 +vt 0.400000 0.175000 +vt 0.466667 0.175000 +vt 0.266667 1.000000 +vt 0.200000 1.000000 +vt 0.200000 0.175000 +vt 0.266667 0.175000 +vt 0.333333 1.000000 +vt 0.333333 0.175000 +vt 0.366667 0.100000 +vt 0.333333 0.100000 +vt 0.333333 0.025000 +vt 0.366667 0.025000 +vt 0.233333 0.025000 +vt 0.233333 0.100000 +vt 0.200000 0.025000 +vt 0.333333 0.125000 +vt 0.233333 0.125000 +vt 0.333333 0.000000 +vt 0.233333 0.000000 +vt 0.383333 0.087500 +vt 0.450000 0.087500 +vt 0.466667 0.100000 +vt 0.383333 0.037500 +vt 0.450000 0.037500 +vt 0.466667 0.025000 +vt 0.266667 0.125000 +vt 0.400000 0.125000 +vt 0.466667 0.125000 +vt 0.200000 0.125000 +vt 0.533333 0.125000 +vt 0.533333 0.175000 +vt 0.750000 0.375000 +vt 0.750000 0.525000 +vt 0.733333 0.525000 +vt 0.766667 0.525000 +vt 0.766667 0.375000 +vt 0.733333 0.600000 +vt 0.733333 0.625000 +vt 0.600000 0.525000 +vt 0.600000 0.500000 +vt 0.733333 0.400000 +vt 0.600000 0.475000 +vt 0.483333 0.387500 +vt 0.483333 0.462500 +vt 0.466667 0.475000 +vt 0.583333 0.387500 +vt 0.583333 0.462500 +vt 0.500000 0.400000 +vt 0.500000 0.450000 +vt 0.566667 0.400000 +vt 0.566667 0.450000 +vt 0.766667 0.450000 +vt 0.833333 0.450000 +vt 0.833333 0.475000 +vt 0.766667 0.475000 +vt 0.833333 0.400000 +vt 0.833333 0.425000 +vt 0.766667 0.425000 +vt 0.766667 0.400000 +vt 0.833333 0.375000 +s 1 +usemtl m_bf2d8415-1140-6651-2d4b-44fa28d981c3 +f 174/107/11 173/108/11 175/109/11 +f 174/107/11 175/109/11 176/110/11 +f 179/111/12 177/112/12 178/113/12 +f 179/111/12 178/113/12 180/114/12 +f 177/115/13 173/116/13 174/117/13 +f 177/115/13 174/117/13 178/113/13 +f 176/118/14 175/119/14 179/120/14 +f 176/118/14 179/120/14 180/114/14 +f 175/109/15 173/108/15 177/112/15 +f 175/109/15 177/112/15 179/111/15 +f 178/113/16 174/117/16 176/118/16 +f 178/113/16 176/118/16 180/114/16 +f 182/107/11 181/108/11 183/109/11 +f 182/107/11 183/109/11 184/110/11 +f 187/111/12 185/112/12 186/113/12 +f 187/111/12 186/113/12 188/114/12 +f 185/115/13 181/116/13 182/117/13 +f 185/115/13 182/117/13 186/113/13 +f 184/118/14 183/119/14 187/120/14 +f 184/118/14 187/120/14 188/114/14 +f 183/109/15 181/108/15 185/112/15 +f 183/109/15 185/112/15 187/111/15 +f 186/113/16 182/117/16 184/118/16 +f 186/113/16 184/118/16 188/114/16 +f 190/107/11 189/108/11 191/109/11 +f 190/107/11 191/109/11 192/110/11 +f 195/111/12 193/112/12 194/113/12 +f 195/111/12 194/113/12 196/114/12 +f 193/115/13 189/116/13 190/117/13 +f 193/115/13 190/117/13 194/113/13 +f 192/118/14 191/119/14 195/120/14 +f 192/118/14 195/120/14 196/114/14 +f 191/109/15 189/108/15 193/112/15 +f 191/109/15 193/112/15 195/111/15 +f 194/113/16 190/117/16 192/118/16 +f 194/113/16 192/118/16 196/114/16 +f 198/107/11 197/108/11 199/109/11 +f 198/107/11 199/109/11 200/110/11 +f 203/111/12 201/112/12 202/113/12 +f 203/111/12 202/113/12 204/114/12 +f 201/115/13 197/116/13 198/117/13 +f 201/115/13 198/117/13 202/113/13 +f 200/118/14 199/119/14 203/120/14 +f 200/118/14 203/120/14 204/114/14 +f 199/109/15 197/108/15 201/112/15 +f 199/109/15 201/112/15 203/111/15 +f 202/113/16 198/117/16 200/118/16 +f 202/113/16 200/118/16 204/114/16 +f 206/121/11 205/122/11 207/123/11 +f 206/121/11 207/123/11 208/124/11 +f 211/125/12 209/126/12 210/127/12 +f 211/125/12 210/127/12 212/128/12 +f 208/124/14 207/123/14 211/129/14 +f 208/124/14 211/129/14 212/130/14 +f 207/131/15 205/132/15 209/126/15 +f 207/131/15 209/126/15 211/125/15 +f 210/127/16 206/121/16 208/124/16 +f 210/127/16 208/124/16 212/128/16 +f 213/133/11 214/134/11 215/135/11 +f 216/133/12 217/134/12 218/135/12 +f 219/136/14 220/137/14 221/138/14 +f 544/139/11 222/138/11 543/140/11 +f 542/139/12 219/138/12 545/140/12 +f 545/139/16 221/138/16 544/140/16 +f 543/139/15 223/138/15 542/140/15 +f 220/141/11 224/142/11 225/137/11 +f 222/136/14 226/137/14 223/138/14 +f 221/136/14 225/137/14 222/138/14 +f 223/136/14 227/137/14 219/138/14 +f 217/143/14 228/144/14 229/134/14 +f 226/141/12 230/142/12 227/137/12 +f 227/141/16 231/142/16 220/137/16 +f 225/141/15 232/142/15 226/137/15 +f 218/133/16 229/134/16 213/135/16 +f 215/133/15 233/134/15 216/135/15 +f 228/145/11 234/146/11 235/144/11 +f 214/143/14 236/144/14 233/134/14 +f 229/143/14 235/144/14 214/134/14 +f 233/143/14 237/144/14 217/134/14 +f 236/145/12 238/146/12 237/144/12 +f 237/145/16 239/146/16 228/144/16 +f 235/145/15 240/146/15 236/144/15 +f 215/133/13 232/142/13 224/147/13 +f 213/133/13 224/142/13 231/147/13 +f 218/133/13 231/142/13 230/147/13 +f 216/133/13 230/142/13 232/147/13 +f 241/148/11 242/149/11 243/150/11 +f 244/148/12 245/149/12 246/150/12 +f 246/148/16 247/149/16 241/150/16 +f 243/148/15 248/149/15 244/150/15 +f 243/148/13 240/146/13 234/151/13 +f 241/148/13 234/146/13 239/151/13 +f 246/148/13 239/146/13 238/151/13 +f 244/148/13 238/146/13 240/151/13 +f 248/152/13 249/153/13 245/149/13 +f 250/154/11 251/155/11 252/153/11 +f 245/152/13 250/153/13 247/149/13 +f 242/152/13 253/153/13 248/149/13 +f 247/152/13 252/153/13 242/149/13 +f 254/156/13 255/157/13 256/158/13 +f 253/154/12 256/155/12 249/153/12 +f 249/154/16 255/155/16 250/153/16 +f 252/154/15 254/155/15 253/153/15 +f 213/133/11 229/143/11 214/134/11 +f 216/133/12 233/143/12 217/134/12 +f 219/136/14 227/141/14 220/137/14 +f 544/139/11 221/136/11 222/138/11 +f 542/139/12 223/136/12 219/138/12 +f 545/139/16 219/136/16 221/138/16 +f 543/139/15 222/136/15 223/138/15 +f 220/141/11 231/147/11 224/142/11 +f 222/136/14 225/141/14 226/137/14 +f 221/136/14 220/141/14 225/137/14 +f 223/136/14 226/141/14 227/137/14 +f 217/143/14 237/145/14 228/144/14 +f 226/141/12 232/147/12 230/142/12 +f 227/141/16 230/147/16 231/142/16 +f 225/141/15 224/147/15 232/142/15 +f 218/133/16 217/143/16 229/134/16 +f 215/133/15 214/143/15 233/134/15 +f 228/145/11 239/151/11 234/146/11 +f 214/143/14 235/145/14 236/144/14 +f 229/143/14 228/145/14 235/144/14 +f 233/143/14 236/145/14 237/144/14 +f 236/145/12 240/151/12 238/146/12 +f 237/145/16 238/151/16 239/146/16 +f 235/145/15 234/151/15 240/146/15 +f 215/133/13 216/135/13 232/142/13 +f 213/133/13 215/135/13 224/142/13 +f 218/133/13 213/135/13 231/142/13 +f 216/133/13 218/135/13 230/142/13 +f 241/148/11 247/152/11 242/149/11 +f 244/148/12 248/152/12 245/149/12 +f 246/148/16 245/152/16 247/149/16 +f 243/148/15 242/152/15 248/149/15 +f 243/148/13 244/150/13 240/146/13 +f 241/148/13 243/150/13 234/146/13 +f 246/148/13 241/150/13 239/146/13 +f 244/148/13 246/150/13 238/146/13 +f 248/152/13 253/154/13 249/153/13 +f 250/154/11 255/157/11 251/155/11 +f 245/152/13 249/154/13 250/153/13 +f 242/152/13 252/154/13 253/153/13 +f 247/152/13 250/154/13 252/153/13 +f 254/156/13 251/155/13 255/157/13 +f 253/154/12 254/157/12 256/155/12 +f 249/154/16 256/157/16 255/155/16 +f 252/154/15 251/157/15 254/155/15 +f 258/159/11 257/160/11 259/161/11 +f 258/159/11 259/161/11 260/162/11 +f 263/163/12 261/164/12 262/165/12 +f 263/163/12 262/165/12 264/166/12 +f 259/167/15 257/168/15 261/164/15 +f 259/167/15 261/164/15 263/163/15 +f 262/165/16 258/159/16 260/162/16 +f 262/165/16 260/162/16 264/166/16 +f 286/169/17 288/170/17 261/164/17 +f 286/169/17 261/164/17 257/168/17 +f 265/171/18 286/172/18 257/160/18 +f 265/171/18 257/160/18 258/159/18 +f 266/173/19 265/171/19 258/159/19 +f 266/173/19 258/159/19 262/165/19 +f 288/170/20 266/173/20 262/165/20 +f 288/170/20 262/165/20 261/164/20 +f 268/159/11 267/160/11 269/161/11 +f 268/159/11 269/161/11 270/162/11 +f 273/163/12 271/164/12 272/165/12 +f 273/163/12 272/165/12 274/166/12 +f 269/167/15 267/168/15 271/164/15 +f 269/167/15 271/164/15 273/163/15 +f 272/165/16 268/159/16 270/162/16 +f 272/165/16 270/162/16 274/166/16 +f 275/169/17 286/170/17 271/164/17 +f 275/169/17 271/164/17 267/168/17 +f 276/171/21 275/172/21 267/160/21 +f 276/171/21 267/160/21 268/159/21 +f 265/173/19 276/171/19 268/159/19 +f 265/173/19 268/159/19 272/165/19 +f 286/170/22 265/173/22 272/165/22 +f 286/170/22 272/165/22 271/164/22 +f 278/159/11 277/160/11 279/161/11 +f 278/159/11 279/161/11 280/162/11 +f 283/163/12 281/164/12 282/165/12 +f 283/163/12 282/165/12 284/166/12 +f 279/167/15 277/168/15 281/164/15 +f 279/167/15 281/164/15 283/163/15 +f 282/165/16 278/159/16 280/162/16 +f 282/165/16 280/162/16 284/166/16 +f 285/169/23 287/170/23 281/164/23 +f 285/169/23 281/164/23 277/168/23 +f 286/171/18 285/172/18 277/160/18 +f 286/171/18 277/160/18 278/159/18 +f 288/173/24 286/171/24 278/159/24 +f 288/173/24 278/159/24 282/165/24 +f 287/170/20 288/173/20 282/165/20 +f 287/170/20 282/165/20 281/164/20 +f 290/159/11 289/160/11 291/161/11 +f 290/159/11 291/161/11 292/162/11 +f 295/163/12 293/164/12 294/165/12 +f 295/163/12 294/165/12 296/166/12 +f 291/167/15 289/168/15 293/164/15 +f 291/167/15 293/164/15 295/163/15 +f 294/165/16 290/159/16 292/162/16 +f 294/165/16 292/162/16 296/166/16 +f 297/169/23 285/170/23 293/164/23 +f 297/169/23 293/164/23 289/168/23 +f 275/171/21 297/172/21 289/160/21 +f 275/171/21 289/160/21 290/159/21 +f 286/173/24 275/171/24 290/159/24 +f 286/173/24 290/159/24 294/165/24 +f 285/170/22 286/173/22 294/165/22 +f 285/170/22 294/165/22 293/164/22 +f 299/174/15 301/175/15 300/176/15 +f 299/174/15 300/176/15 298/177/15 +f 305/178/11 299/179/11 298/180/11 +f 305/178/11 298/180/11 303/181/11 +f 301/175/12 304/182/12 302/183/12 +f 301/175/12 302/183/12 300/176/12 +f 304/182/16 305/178/16 303/181/16 +f 304/182/16 303/181/16 302/183/16 +f 307/184/16 306/185/16 308/186/16 +f 307/184/16 308/186/16 309/187/16 +f 312/188/15 310/189/15 311/168/15 +f 312/188/15 311/168/15 313/190/15 +f 310/189/13 306/185/13 307/191/13 +f 310/189/13 307/191/13 311/192/13 +f 309/193/14 308/186/14 312/188/14 +f 309/193/14 312/188/14 313/194/14 +f 308/186/11 306/185/11 310/189/11 +f 308/186/11 310/189/11 312/188/11 +f 314/195/12 316/196/12 311/197/12 +f 314/195/12 311/197/12 307/184/12 +f 315/198/12 314/195/12 307/184/12 +f 315/198/12 307/184/12 309/187/12 +f 317/199/12 315/198/12 309/187/12 +f 317/199/12 309/187/12 313/200/12 +f 316/196/12 317/199/12 313/200/12 +f 316/196/12 313/200/12 311/197/12 +f 360/183/13 318/181/13 316/201/13 +f 360/183/13 316/201/13 314/191/13 +f 361/176/16 360/183/16 314/191/16 +f 361/176/16 314/191/16 315/202/16 +f 319/177/14 361/176/14 315/202/14 +f 319/177/14 315/202/14 317/203/14 +f 318/181/15 319/180/15 317/204/15 +f 318/181/15 317/204/15 316/201/15 +f 321/184/11 320/185/11 322/186/11 +f 321/184/11 322/186/11 323/187/11 +f 326/188/12 324/189/12 325/168/12 +f 326/188/12 325/168/12 327/190/12 +f 324/189/13 320/185/13 321/191/13 +f 324/189/13 321/191/13 325/192/13 +f 323/193/14 322/186/14 326/188/14 +f 323/193/14 326/188/14 327/194/14 +f 322/186/15 320/185/15 324/189/15 +f 322/186/15 324/189/15 326/188/15 +f 328/195/16 330/196/16 325/197/16 +f 328/195/16 325/197/16 321/184/16 +f 329/198/16 328/195/16 321/184/16 +f 329/198/16 321/184/16 323/187/16 +f 331/199/16 329/198/16 323/187/16 +f 331/199/16 323/187/16 327/200/16 +f 330/196/16 331/199/16 327/200/16 +f 330/196/16 327/200/16 325/197/16 +f 318/183/13 344/181/13 330/201/13 +f 318/183/13 330/201/13 328/191/13 +f 319/176/11 318/183/11 328/191/11 +f 319/176/11 328/191/11 329/202/11 +f 345/177/14 319/176/14 329/202/14 +f 345/177/14 329/202/14 331/203/14 +f 344/181/12 345/180/12 331/204/12 +f 344/181/12 331/204/12 330/201/12 +f 333/184/15 332/185/15 334/186/15 +f 333/184/15 334/186/15 335/187/15 +f 338/188/16 336/189/16 337/168/16 +f 338/188/16 337/168/16 339/190/16 +f 336/189/13 332/185/13 333/191/13 +f 336/189/13 333/191/13 337/192/13 +f 335/193/14 334/186/14 338/188/14 +f 335/193/14 338/188/14 339/194/14 +f 334/186/12 332/185/12 336/189/12 +f 334/186/12 336/189/12 338/188/12 +f 340/195/11 342/196/11 337/197/11 +f 340/195/11 337/197/11 333/184/11 +f 341/198/11 340/195/11 333/184/11 +f 341/198/11 333/184/11 335/187/11 +f 343/199/11 341/198/11 335/187/11 +f 343/199/11 335/187/11 339/200/11 +f 342/196/11 343/199/11 339/200/11 +f 342/196/11 339/200/11 337/197/11 +f 344/183/13 358/181/13 342/201/13 +f 344/183/13 342/201/13 340/191/13 +f 345/176/15 344/183/15 340/191/15 +f 345/176/15 340/191/15 341/202/15 +f 359/177/14 345/176/14 341/202/14 +f 359/177/14 341/202/14 343/203/14 +f 358/181/16 359/180/16 343/204/16 +f 358/181/16 343/204/16 342/201/16 +f 347/184/12 346/185/12 348/186/12 +f 347/184/12 348/186/12 349/187/12 +f 352/188/11 350/189/11 351/168/11 +f 352/188/11 351/168/11 353/190/11 +f 350/189/13 346/185/13 347/191/13 +f 350/189/13 347/191/13 351/192/13 +f 349/193/14 348/186/14 352/188/14 +f 349/193/14 352/188/14 353/194/14 +f 348/186/16 346/185/16 350/189/16 +f 348/186/16 350/189/16 352/188/16 +f 354/195/15 356/196/15 351/197/15 +f 354/195/15 351/197/15 347/184/15 +f 355/198/15 354/195/15 347/184/15 +f 355/198/15 347/184/15 349/187/15 +f 357/199/15 355/198/15 349/187/15 +f 357/199/15 349/187/15 353/200/15 +f 356/196/15 357/199/15 353/200/15 +f 356/196/15 353/200/15 351/197/15 +f 358/183/13 360/181/13 356/201/13 +f 358/183/13 356/201/13 354/191/13 +f 359/176/12 358/183/12 354/191/12 +f 359/176/12 354/191/12 355/202/12 +f 361/177/14 359/176/14 355/202/14 +f 361/177/14 355/202/14 357/203/14 +f 360/181/11 361/180/11 357/204/11 +f 360/181/11 357/204/11 356/201/11 +f 345/177/14 359/203/14 361/205/14 +f 345/177/14 361/205/14 319/206/14 +f 366/207/25 362/208/25 363/209/25 +f 366/207/25 363/209/25 367/127/25 +f 365/210/26 364/208/26 368/207/26 +f 365/210/26 368/207/26 369/211/26 +f 364/212/12 362/213/12 366/214/12 +f 364/212/12 366/214/12 368/215/12 +f 367/216/11 363/215/11 365/217/11 +f 367/216/11 365/217/11 369/127/11 +f 374/209/27 370/127/27 371/207/27 +f 374/209/27 371/207/27 375/208/27 +f 373/207/28 372/211/28 376/210/28 +f 373/207/28 376/210/28 377/208/28 +f 372/127/12 370/216/12 374/215/12 +f 372/127/12 374/215/12 376/217/12 +f 375/213/11 371/214/11 373/215/11 +f 375/213/11 373/215/11 377/212/11 +f 382/207/25 378/208/25 379/209/25 +f 382/207/25 379/209/25 383/127/25 +f 381/210/26 380/208/26 384/207/26 +f 381/210/26 384/207/26 385/211/26 +f 380/212/12 378/213/12 382/214/12 +f 380/212/12 382/214/12 384/215/12 +f 383/216/11 379/215/11 381/217/11 +f 383/216/11 381/217/11 385/127/11 +f 390/209/27 386/127/27 387/207/27 +f 390/209/27 387/207/27 391/208/27 +f 389/207/28 388/211/28 392/210/28 +f 389/207/28 392/210/28 393/208/28 +f 388/127/12 386/216/12 390/215/12 +f 388/127/12 390/215/12 392/217/12 +f 391/213/11 387/214/11 389/215/11 +f 391/213/11 389/215/11 393/212/11 +f 398/207/25 394/208/25 395/209/25 +f 398/207/25 395/209/25 399/127/25 +f 397/210/26 396/208/26 400/207/26 +f 397/210/26 400/207/26 401/211/26 +f 396/212/12 394/213/12 398/214/12 +f 396/212/12 398/214/12 400/215/12 +f 399/216/11 395/215/11 397/217/11 +f 399/216/11 397/217/11 401/127/11 +f 406/209/27 402/127/27 403/207/27 +f 406/209/27 403/207/27 407/208/27 +f 405/207/28 404/211/28 408/210/28 +f 405/207/28 408/210/28 409/208/28 +f 404/127/12 402/216/12 406/215/12 +f 404/127/12 406/215/12 408/217/12 +f 407/213/11 403/214/11 405/215/11 +f 407/213/11 405/215/11 409/212/11 +f 414/207/27 410/208/27 411/209/27 +f 414/207/27 411/209/27 415/127/27 +f 413/210/28 412/208/28 416/207/28 +f 413/210/28 416/207/28 417/211/28 +f 412/212/11 410/213/11 414/214/11 +f 412/212/11 414/214/11 416/215/11 +f 415/216/12 411/215/12 413/217/12 +f 415/216/12 413/217/12 417/127/12 +f 422/209/25 418/127/25 419/207/25 +f 422/209/25 419/207/25 423/208/25 +f 421/207/26 420/211/26 424/210/26 +f 421/207/26 424/210/26 425/208/26 +f 420/127/11 418/216/11 422/215/11 +f 420/127/11 422/215/11 424/217/11 +f 423/213/12 419/214/12 421/215/12 +f 423/213/12 421/215/12 425/212/12 +f 430/207/27 426/208/27 427/209/27 +f 430/207/27 427/209/27 431/127/27 +f 429/210/28 428/208/28 432/207/28 +f 429/210/28 432/207/28 433/211/28 +f 428/212/11 426/213/11 430/214/11 +f 428/212/11 430/214/11 432/215/11 +f 431/216/12 427/215/12 429/217/12 +f 431/216/12 429/217/12 433/127/12 +f 438/209/25 434/127/25 435/207/25 +f 438/209/25 435/207/25 439/208/25 +f 437/207/26 436/211/26 440/210/26 +f 437/207/26 440/210/26 441/208/26 +f 436/127/11 434/216/11 438/215/11 +f 436/127/11 438/215/11 440/217/11 +f 439/213/12 435/214/12 437/215/12 +f 439/213/12 437/215/12 441/212/12 +f 446/207/27 442/208/27 443/209/27 +f 446/207/27 443/209/27 447/127/27 +f 445/210/28 444/208/28 448/207/28 +f 445/210/28 448/207/28 449/211/28 +f 444/212/11 442/213/11 446/214/11 +f 444/212/11 446/214/11 448/215/11 +f 447/216/12 443/215/12 445/217/12 +f 447/216/12 445/217/12 449/127/12 +f 454/209/25 450/127/25 451/207/25 +f 454/209/25 451/207/25 455/208/25 +f 453/207/26 452/211/26 456/210/26 +f 453/207/26 456/210/26 457/208/26 +f 452/127/11 450/216/11 454/215/11 +f 452/127/11 454/215/11 456/217/11 +f 455/213/12 451/214/12 453/215/12 +f 455/213/12 453/215/12 457/212/12 +f 462/207/29 458/208/29 459/209/29 +f 462/207/29 459/209/29 463/127/29 +f 461/210/30 460/208/30 464/207/30 +f 461/210/30 464/207/30 465/211/30 +f 460/212/16 458/213/16 462/214/16 +f 460/212/16 462/214/16 464/215/16 +f 463/216/15 459/215/15 461/217/15 +f 463/216/15 461/217/15 465/127/15 +f 470/209/31 466/127/31 467/207/31 +f 470/209/31 467/207/31 471/208/31 +f 469/207/32 468/211/32 472/210/32 +f 469/207/32 472/210/32 473/208/32 +f 468/127/16 466/216/16 470/215/16 +f 468/127/16 470/215/16 472/217/16 +f 471/213/15 467/214/15 469/215/15 +f 471/213/15 469/215/15 473/212/15 +f 478/207/29 474/208/29 475/209/29 +f 478/207/29 475/209/29 479/127/29 +f 477/210/30 476/208/30 480/207/30 +f 477/210/30 480/207/30 481/211/30 +f 476/212/16 474/213/16 478/214/16 +f 476/212/16 478/214/16 480/215/16 +f 479/216/15 475/215/15 477/217/15 +f 479/216/15 477/217/15 481/127/15 +f 486/209/31 482/127/31 483/207/31 +f 486/209/31 483/207/31 487/208/31 +f 485/207/32 484/211/32 488/210/32 +f 485/207/32 488/210/32 489/208/32 +f 484/127/16 482/216/16 486/215/16 +f 484/127/16 486/215/16 488/217/16 +f 487/213/15 483/214/15 485/215/15 +f 487/213/15 485/215/15 489/212/15 +f 494/207/31 490/208/31 491/209/31 +f 494/207/31 491/209/31 495/127/31 +f 493/210/32 492/208/32 496/207/32 +f 493/210/32 496/207/32 497/211/32 +f 492/212/15 490/213/15 494/214/15 +f 492/212/15 494/214/15 496/215/15 +f 495/216/16 491/215/16 493/217/16 +f 495/216/16 493/217/16 497/127/16 +f 502/209/29 498/127/29 499/207/29 +f 502/209/29 499/207/29 503/208/29 +f 501/207/30 500/211/30 504/210/30 +f 501/207/30 504/210/30 505/208/30 +f 500/127/15 498/216/15 502/215/15 +f 500/127/15 502/215/15 504/217/15 +f 503/213/16 499/214/16 501/215/16 +f 503/213/16 501/215/16 505/212/16 +f 510/207/31 506/208/31 507/209/31 +f 510/207/31 507/209/31 511/127/31 +f 509/210/32 508/208/32 512/207/32 +f 509/210/32 512/207/32 513/211/32 +f 508/212/15 506/213/15 510/214/15 +f 508/212/15 510/214/15 512/215/15 +f 511/216/16 507/215/16 509/217/16 +f 511/216/16 509/217/16 513/127/16 +f 518/209/29 514/127/29 515/207/29 +f 518/209/29 515/207/29 519/208/29 +f 517/207/30 516/211/30 520/210/30 +f 517/207/30 520/210/30 521/208/30 +f 516/127/15 514/216/15 518/215/15 +f 516/127/15 518/215/15 520/217/15 +f 519/213/16 515/214/16 517/215/16 +f 519/213/16 517/215/16 521/212/16 +f 526/207/31 522/208/31 523/209/31 +f 526/207/31 523/209/31 527/127/31 +f 525/210/32 524/208/32 528/207/32 +f 525/210/32 528/207/32 529/211/32 +f 524/212/15 522/213/15 526/214/15 +f 524/212/15 526/214/15 528/215/15 +f 527/216/16 523/215/16 525/217/16 +f 527/216/16 525/217/16 529/127/16 +f 534/209/29 530/127/29 531/207/29 +f 534/209/29 531/207/29 535/208/29 +f 533/207/30 532/211/30 536/210/30 +f 533/207/30 536/210/30 537/208/30 +f 532/127/15 530/216/15 534/215/15 +f 532/127/15 534/215/15 536/217/15 +f 535/213/16 531/214/16 533/215/16 +f 535/213/16 533/215/16 537/212/16 +f 539/218/13 538/219/13 209/220/13 +f 539/218/13 209/220/13 205/122/13 +f 540/221/13 539/218/13 205/122/13 +f 540/221/13 205/122/13 206/121/13 +f 541/222/13 540/221/13 206/121/13 +f 541/222/13 206/121/13 210/217/13 +f 538/219/13 541/222/13 210/217/13 +f 538/219/13 210/217/13 209/220/13 +f 543/223/27 542/224/27 538/219/27 +f 543/223/27 538/219/27 539/218/27 +f 544/225/29 543/223/29 539/218/29 +f 544/225/29 539/218/29 540/221/29 +f 545/226/25 544/225/25 540/221/25 +f 545/226/25 540/221/25 541/222/25 +f 542/224/31 545/226/31 541/222/31 +f 542/224/31 541/222/31 538/219/31 +f 550/207/29 546/208/29 547/209/29 +f 550/207/29 547/209/29 551/127/29 +f 549/210/30 548/208/30 552/207/30 +f 549/210/30 552/207/30 553/211/30 +f 548/212/16 546/213/16 550/214/16 +f 548/212/16 550/214/16 552/215/16 +f 551/216/15 547/215/15 549/217/15 +f 551/216/15 549/217/15 553/127/15 +f 558/209/31 554/127/31 555/207/31 +f 558/209/31 555/207/31 559/208/31 +f 557/207/32 556/211/32 560/210/32 +f 557/207/32 560/210/32 561/208/32 +f 556/127/16 554/216/16 558/215/16 +f 556/127/16 558/215/16 560/217/16 +f 559/213/15 555/214/15 557/215/15 +f 559/213/15 557/215/15 561/212/15 +f 566/227/13 562/228/13 563/229/13 +f 566/227/13 563/229/13 567/230/13 +f 565/231/14 564/232/14 568/233/14 +f 565/231/14 568/233/14 569/234/14 +f 564/232/12 562/228/12 566/227/12 +f 564/232/12 566/227/12 568/233/12 +f 567/211/11 563/235/11 565/231/11 +f 567/211/11 565/231/11 569/234/11 +f 574/227/13 570/228/13 571/229/13 +f 574/227/13 571/229/13 575/230/13 +f 573/231/14 572/232/14 576/233/14 +f 573/231/14 576/233/14 577/234/14 +f 572/232/11 570/228/11 574/227/11 +f 572/232/11 574/227/11 576/233/11 +f 575/211/12 571/235/12 573/231/12 +f 575/211/12 573/231/12 577/234/12 +f 582/227/13 578/228/13 579/229/13 +f 582/227/13 579/229/13 583/230/13 +f 581/231/14 580/232/14 584/233/14 +f 581/231/14 584/233/14 585/234/14 +f 580/232/16 578/228/16 582/227/16 +f 580/232/16 582/227/16 584/233/16 +f 583/211/15 579/235/15 581/231/15 +f 583/211/15 581/231/15 585/234/15 +f 590/227/13 586/228/13 587/229/13 +f 590/227/13 587/229/13 591/230/13 +f 589/231/14 588/232/14 592/233/14 +f 589/231/14 592/233/14 593/234/14 +f 588/232/15 586/228/15 590/227/15 +f 588/232/15 590/227/15 592/233/15 +f 591/211/16 587/235/16 589/231/16 +f 591/211/16 589/231/16 593/234/16 diff --git a/src/main/resources/assets/hbm/textures/blocks/brick_forgotten_bw_lock.png b/src/main/resources/assets/hbm/textures/blocks/brick_forgotten_bw_lock.png new file mode 100644 index 000000000..cccb643a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/brick_forgotten_bw_lock.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/nr_planks.png b/src/main/resources/assets/hbm/textures/blocks/nr_planks.png new file mode 100644 index 000000000..eb891d6d5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/nr_planks.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/nr_stone.png b/src/main/resources/assets/hbm/textures/blocks/nr_stone.png new file mode 100644 index 000000000..609c9a766 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/nr_stone.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/nullstone_demo_2_wip.png b/src/main/resources/assets/hbm/textures/blocks/playground/nullstone_demo_2_wip.png new file mode 100644 index 000000000..ef10257b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/nullstone_demo_2_wip.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vacuum.png b/src/main/resources/assets/hbm/textures/blocks/vacuum.png deleted file mode 100644 index 3636b9ca4..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/vacuum.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vent.png b/src/main/resources/assets/hbm/textures/blocks/vent.png deleted file mode 100644 index e8e689ef9..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/vent.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vent_side.png b/src/main/resources/assets/hbm/textures/blocks/vent_side.png deleted file mode 100644 index 51f0e451f..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/vent_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/lpw2.png b/src/main/resources/assets/hbm/textures/models/machines/lpw2.png index 4b0ec544c..1753c8643 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/lpw2.png and b/src/main/resources/assets/hbm/textures/models/machines/lpw2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/pylon.png b/src/main/resources/assets/hbm/textures/models/network/pylon.png new file mode 100644 index 000000000..541ce0da0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/pylon.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/pylon_steel.png b/src/main/resources/assets/hbm/textures/models/network/pylon_steel.png new file mode 100644 index 000000000..5670d952e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/pylon_steel.png differ