diff --git a/src/main/java/api/hbm/energy/IPowerNet.java b/src/main/java/api/hbm/energy/IPowerNet.java index 31a3690cb..3c47b232d 100644 --- a/src/main/java/api/hbm/energy/IPowerNet.java +++ b/src/main/java/api/hbm/energy/IPowerNet.java @@ -9,7 +9,7 @@ import java.util.List; */ public interface IPowerNet { - public void join(IPowerNet network); + public void joinNetworks(IPowerNet network); public IPowerNet joinLink(IEnergyConductor conductor); public void leaveLink(IEnergyConductor conductor); @@ -21,8 +21,9 @@ public interface IPowerNet { public void destroy(); public boolean isValid(); - + public List getLinks(); + public List getSubscribers(); public long transferPower(long power); } diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 598e349f0..74ed23b88 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -17,7 +17,23 @@ public class PowerNet implements IPowerNet { private List subscribers = new ArrayList(); @Override - public void join(IPowerNet network) { } + public void joinNetworks(IPowerNet network) { + + if(network == this) + return; //wtf?! + + for(IEnergyConductor conductor : network.getLinks()) { + conductor.setPowerNet(this); + this.getLinks().add(conductor); + } + network.getLinks().clear(); + + for(IEnergyConnector connector : network.getSubscribers()) { + this.subscribe(connector); + } + + network.destroy(); + } @Override public IPowerNet joinLink(IEnergyConductor conductor) { @@ -55,17 +71,23 @@ public class PowerNet implements IPowerNet { public List getLinks() { return this.links; } + + @Override + public List getSubscribers() { + return this.subscribers; + } @Override public void destroy() { this.valid = false; + this.subscribers.clear(); + for(IEnergyConductor link : this.links) { link.setPowerNet(null); } this.links.clear(); - this.subscribers.clear(); } @Override diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 9c7871169..b9fa2e404 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1149,7 +1149,7 @@ public class ModBlocks { test_missile = new TestMissile(Material.iron).setBlockName("test_missile").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_missile"); test_core = new TestCore(Material.iron).setBlockName("test_core").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_core"); test_charge = new TestCharge(Material.iron).setBlockName("test_charge").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); - test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_conductor"); + test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cable_neo"); ore_uranium = new BlockOutgas(Material.rock, true, 5, false).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium"); ore_uranium_scorched = new BlockOutgas(Material.rock, true, 5, false).setBlockName("ore_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium_scorched"); diff --git a/src/main/java/com/hbm/blocks/test/TestConductor.java b/src/main/java/com/hbm/blocks/test/TestConductor.java index 5dd970e40..45c2684b0 100644 --- a/src/main/java/com/hbm/blocks/test/TestConductor.java +++ b/src/main/java/com/hbm/blocks/test/TestConductor.java @@ -3,6 +3,7 @@ package com.hbm.blocks.test; import com.hbm.interfaces.Untested; import com.hbm.tileentity.network.TileEntityCableBaseNT; +import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; @@ -23,4 +24,21 @@ public class TestConductor extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityCableBaseNT(); } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } } diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 904bf9e8b..572fd78ec 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -7,6 +7,7 @@ import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ItemMachineUpgrade extends Item { @@ -32,150 +33,124 @@ public class ItemMachineUpgrade extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this.type == UpgradeType.SPEED) { - list.add("Mining Drill:"); + list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Delay -" + (15 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(""); - list.add("Laser Miner:"); + list.add(EnumChatFormatting.RED + "Laser Miner:"); list.add("Delay รท" + (1 + this.tier) + " / Consumption +" + (625 * this.tier) + "HE/t"); - list.add(""); - list.add("Assembly Machine:"); + list.add(EnumChatFormatting.RED + "Assembly Machine:"); list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(""); - list.add("Chemical Plant:"); + list.add(EnumChatFormatting.RED + "Chemical Plant:"); list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(""); - list.add("Crystallizer:"); + list.add(EnumChatFormatting.RED + "Crystallizer:"); list.add("Delay -" + (20 * this.tier) + "% / Consumption +" + (1000 * this.tier) + "HE/t"); - list.add(""); - list.add("Cyclotron:"); + list.add(EnumChatFormatting.RED + "Cyclotron:"); list.add("Speed x" + (1 + this.tier)); - list.add(""); - list.add("Maxwell:"); - list.add("Damage +" + (0.25 * (double)this.tier) + "/t"); + list.add(EnumChatFormatting.RED + "Maxwell:"); + list.add("Damage +" + (0.25 * (double)this.tier) + "dmg/t"); } if(this.type == UpgradeType.EFFECT) { - list.add("Mining Drill:"); + list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Radius +" + this.tier + "m / Consumption +" + (80 * this.tier) + "HE/t"); - list.add(""); - list.add("Crystallizer:"); + list.add(EnumChatFormatting.RED + "Crystallizer:"); list.add("+" + (5 * this.tier) + "% chance of not consuming an item / Acid consumption +" + (1000 * this.tier) + "mB"); - list.add(""); - list.add("Cyclotron:"); - list.add("-" + (100 - 100 / this.tier) + "% chance of incrementing overheat counter"); - list.add(""); - list.add("Maxwell:"); + list.add(EnumChatFormatting.RED + "Cyclotron:"); + list.add("-" + (100 - 100 / (this.tier + 1)) + "% chance of incrementing overheat counter"); + list.add(EnumChatFormatting.RED + "Maxwell:"); list.add("Range +" + (3 * this.tier) + "m"); } if(this.type == UpgradeType.POWER) { - list.add("Mining Drill:"); + list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(""); - list.add("Assembly Machine:"); + list.add(EnumChatFormatting.RED + "Assembly Machine:"); list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(""); - list.add("Chemical Plant:"); + list.add(EnumChatFormatting.RED + "Chemical Plant:"); list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(""); - list.add("Cyclotron:"); + list.add(EnumChatFormatting.RED + "Cyclotron:"); list.add("Consumption -" + (100 * this.tier) + "kHE/t"); - list.add(""); - list.add("Maxwell:"); + list.add(EnumChatFormatting.RED + "Maxwell:"); list.add("Consumption -" + (150 * this.tier) + "HE/t"); list.add("Consumption when firing -" + (1500 * this.tier) + "HE/t"); } - if(this == ModItems.upgrade_fortune_1) - { - list.add("Mining Drill:"); + if(this == ModItems.upgrade_fortune_1) { + list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Fortune +1 / Delay +15"); } - if(this == ModItems.upgrade_fortune_2) - { - list.add("Mining Drill:"); + if(this == ModItems.upgrade_fortune_2) { + list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Fortune +2 / Delay +30"); } - if(this == ModItems.upgrade_fortune_3) - { - list.add("Mining Drill:"); + if(this == ModItems.upgrade_fortune_3) { + list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Fortune +3 / Delay +45"); } - if(this == ModItems.upgrade_afterburn_1) - { - list.add("Turbofan:"); + if(this == ModItems.upgrade_afterburn_1) { + list.add(EnumChatFormatting.RED + "Turbofan:"); list.add("Production x2 / Consumption x2.5"); - list.add(""); - list.add("Maxwell:"); + list.add(EnumChatFormatting.RED + "Maxwell:"); list.add("Afterburn +3s"); } - if(this == ModItems.upgrade_afterburn_2) - { - list.add("Turbofan:"); + if(this == ModItems.upgrade_afterburn_2) { + list.add(EnumChatFormatting.RED + "Turbofan:"); list.add("Production x3 / Consumption x5"); - list.add(""); - list.add("Maxwell:"); + list.add(EnumChatFormatting.RED + "Maxwell:"); list.add("Afterburn +6s"); } - if(this == ModItems.upgrade_afterburn_3) - { - list.add("Turbofan:"); + if(this == ModItems.upgrade_afterburn_3) { + list.add(EnumChatFormatting.RED + "Turbofan:"); list.add("Production x4 / Consumption x7.5"); - list.add(""); - list.add("Maxwell:"); + list.add(EnumChatFormatting.RED + "Maxwell:"); list.add("Afterburn +9s"); } - if(this == ModItems.upgrade_radius) - { - list.add("Forcefield Range Upgrade"); + if(this == ModItems.upgrade_radius) { + list.add(EnumChatFormatting.RED + "Forcefield Range Upgrade"); list.add("Radius +16 / Consumption +500"); - list.add(""); list.add("Stacks to 16"); } - if(this == ModItems.upgrade_health) - { - list.add("Forcefield Health Upgrade"); + if(this == ModItems.upgrade_health) { + list.add(EnumChatFormatting.RED + "Forcefield Health Upgrade"); list.add("Max. Health +50 / Consumption +250"); - list.add(""); list.add("Stacks to 16"); } if(this == ModItems.upgrade_smelter) { - list.add("Mining Laser Upgrade"); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); list.add("Smelts blocks. Easy enough."); } if(this == ModItems.upgrade_shredder) { - list.add("Mining Laser Upgrade"); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); list.add("Crunches ores"); } if(this == ModItems.upgrade_centrifuge) { - list.add("Mining Laser Upgrade"); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); list.add("Hopefully self-explanatory"); } if(this == ModItems.upgrade_crystallizer) { - list.add("Mining Laser Upgrade"); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); list.add("Your new best friend"); } if(this == ModItems.upgrade_screm) { - list.add("Mining Laser Upgrade"); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); list.add("It's like in Super Mario where all blocks are"); list.add("actually Toads, but here it's Half-Life scientists"); list.add("and they scream. A lot."); } if(this == ModItems.upgrade_nullifier) { - list.add("Mining Laser Upgrade"); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); list.add("50% chance to override worthless items with /dev/zero"); list.add("50% chance to move worthless items to /dev/null"); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 06659d7e3..4d341189c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -566,6 +566,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBattery()); RenderingRegistry.registerBlockHandler(new RenderAnvil()); RenderingRegistry.registerBlockHandler(new RenderCrystal()); + RenderingRegistry.registerBlockHandler(new RenderTestCable()); RenderingRegistry.registerBlockHandler(new RenderRBMKRod()); RenderingRegistry.registerBlockHandler(new RenderRBMKReflector()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 64cf7a950..9d0a3fa9d 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1062,6 +1062,7 @@ public class ResourceManager { public static final IModelCustom crystal_energy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_energy.obj")); public static final IModelCustom crystal_robust = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_robust.obj")); public static final IModelCustom crystal_trixite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_trixite.obj")); + public static final IModelCustom cable_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/cable_neo.obj")); //RBMK DEBRIS public static final IModelCustom deb_blank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/projectiles/deb_blank.obj")); diff --git a/src/main/java/com/hbm/render/block/RenderTestCable.java b/src/main/java/com/hbm/render/block/RenderTestCable.java new file mode 100644 index 000000000..fd1412481 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderTestCable.java @@ -0,0 +1,99 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.test.TestConductor; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import api.hbm.energy.IEnergyConnector; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderTestCable implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if(renderer.hasOverrideBlockTexture()) { + iicon = renderer.overrideBlockTexture; + } + + GL11.glRotated(180, 0, 1, 0); + GL11.glScaled(1.25D, 1.25D, 1.25D); + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "Core", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posX", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negX", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posZ", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negZ", iicon, tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if(renderer.hasOverrideBlockTexture()) { + iicon = renderer.overrideBlockTexture; + } + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + boolean pX = world.getTileEntity(x + 1, y, z) instanceof IEnergyConnector; + boolean nX = world.getTileEntity(x - 1, y, z) instanceof IEnergyConnector; + boolean pY = world.getTileEntity(x, y + 1, z) instanceof IEnergyConnector; + boolean nY = world.getTileEntity(x, y - 1, z) instanceof IEnergyConnector; + boolean pZ = world.getTileEntity(x, y, z + 1) instanceof IEnergyConnector; + boolean nZ = world.getTileEntity(x, y, z - 1) instanceof IEnergyConnector; + + tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F); + + if(pX && nX && !pY && !nY && !pZ && !nZ) + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CX", iicon, tessellator, 0, true); + else if(!pX && !nX && pY && nY && !pZ && !nZ) + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CY", iicon, tessellator, 0, true); + else if(!pX && !nX && !pY && !nY && pZ && nZ) + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CZ", iicon, tessellator, 0, true); + + else { + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "Core", iicon, tessellator, 0, true); + if(pX) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posX", iicon, tessellator, 0, true); + if(nX) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negX", iicon, tessellator, 0, true); + if(pY) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posY", iicon, tessellator, 0, true); + if(nY) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negY", iicon, tessellator, 0, true); + if(nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posZ", iicon, tessellator, 0, true); + if(pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negZ", iicon, tessellator, 0, true); + } + + tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return TestConductor.renderID; + } +} diff --git a/src/main/java/com/hbm/render/util/ObjUtil.java b/src/main/java/com/hbm/render/util/ObjUtil.java index af856d7ff..108b90308 100644 --- a/src/main/java/com/hbm/render/util/ObjUtil.java +++ b/src/main/java/com/hbm/render/util/ObjUtil.java @@ -107,12 +107,12 @@ public class ObjUtil { float z = (float) vec.zCoord; TextureCoordinate t = f.textureCoordinates[i]; - tes.addVertexWithUV(x, y, z, icon.getInterpolatedU(t.u * 16), icon.getInterpolatedV(t.v * 16)); + tes.addVertexWithUV(x, y, z, icon.getInterpolatedU(t.u * 16D), icon.getInterpolatedV(t.v * 16D)); // The shoddy way of rendering a tringulated model with a quad // tessellator if(i % 3 == 2) - tes.addVertexWithUV(x, y, z, icon.getInterpolatedU(t.u * 16), icon.getInterpolatedV(t.v * 16)); + tes.addVertexWithUV(x, y, z, icon.getInterpolatedU(t.u * 16D), icon.getInterpolatedV(t.v * 16D)); } } } diff --git a/src/main/java/com/hbm/render/world/RenderNTMSkybox.java b/src/main/java/com/hbm/render/world/RenderNTMSkybox.java index 8e0a4a6b8..a76ff9f1a 100644 --- a/src/main/java/com/hbm/render/world/RenderNTMSkybox.java +++ b/src/main/java/com/hbm/render/world/RenderNTMSkybox.java @@ -2,6 +2,8 @@ package com.hbm.render.world; import org.lwjgl.opengl.GL11; +import com.hbm.extprop.HbmLivingProps; + import cpw.mods.fml.client.FMLClientHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.WorldClient; @@ -20,8 +22,9 @@ public class RenderNTMSkybox extends IRenderHandler { //why an abstract class us * If somebody does the exact same thing as we do we might be screwed due to increasingly long recursive loops but we can fix that too, no worries. */ private IRenderHandler parent; - + private static final ResourceLocation digammaStar = new ResourceLocation("hbm:textures/misc/star_digamma.png"); + private static final ResourceLocation bobmazonSat = new ResourceLocation("hbm:textures/misc/sat_bobmazon.png"); /* * If the skybox was rendered successfully in the last tick (even from other mods' skyboxes chainloading this one) then we don't need to add it again @@ -35,14 +38,30 @@ public class RenderNTMSkybox extends IRenderHandler { //why an abstract class us @Override public void render(float partialTicks, WorldClient world, Minecraft mc) { + if(parent != null) { + parent.render(partialTicks, world, mc); + } else{ + RenderGlobal rg = Minecraft.getMinecraft().renderGlobal; + world.provider.setSkyRenderer(null); + rg.renderSky(partialTicks); + world.provider.setSkyRenderer(this); + } + GL11.glPushMatrix(); GL11.glDepthMask(false); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_FOG); OpenGlHelper.glBlendFunc(770, 1, 1, 0); + float brightness = (float) Math.sin(world.getCelestialAngle(partialTicks) * Math.PI); + brightness *= brightness; + + GL11.glColor4f(brightness, brightness, brightness, 1.0F); + + GL11.glPushMatrix(); GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(140.0F, 1.0F, 0.0F, 0.0F); @@ -50,8 +69,9 @@ public class RenderNTMSkybox extends IRenderHandler { //why an abstract class us FMLClientHandler.instance().getClient().renderEngine.bindTexture(digammaStar); - float var12 = 2.5F; - double dist = 150D; + float digamma = HbmLivingProps.getDigamma(Minecraft.getMinecraft().thePlayer); + float var12 = 1F * (1 + digamma * 0.25F); + double dist = 100D - digamma * 2.5; Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); @@ -60,24 +80,36 @@ public class RenderNTMSkybox extends IRenderHandler { //why an abstract class us tessellator.addVertexWithUV(var12, dist, var12, 1.0D, 1.0D); tessellator.addVertexWithUV(-var12, dist, var12, 1.0D, 0.0D); tessellator.draw(); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotatef(-40.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef((System.currentTimeMillis() % (360 * 1000) / 1000F), 0.0F, 1.0F, 0.0F); + GL11.glRotatef((System.currentTimeMillis() % (360 * 100) / 100F), 1.0F, 0.0F, 0.0F); + + FMLClientHandler.instance().getClient().renderEngine.bindTexture(bobmazonSat); + + var12 = 0.5F; + dist = 100D; + + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(-var12, dist, -var12, 0.0D, 0.0D); + tessellator.addVertexWithUV(var12, dist, -var12, 0.0D, 1.0D); + tessellator.addVertexWithUV(var12, dist, var12, 1.0D, 1.0D); + tessellator.addVertexWithUV(-var12, dist, var12, 1.0D, 0.0D); + tessellator.draw(); + GL11.glPopMatrix(); GL11.glDepthMask(true); - + + GL11.glEnable(GL11.GL_FOG); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glPopMatrix(); didLastRender = true; - - if(parent != null) { - parent.render(partialTicks, world, mc); - } else{ - RenderGlobal rg = Minecraft.getMinecraft().renderGlobal; - world.provider.setSkyRenderer(null); - //rg.renderSky(partialTicks); - world.provider.setSkyRenderer(this); - } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java index 0dc73c21f..6f4b593c0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java @@ -174,19 +174,31 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + // first we make sure we're not subscribed to the network that we'll be supplying + if(te instanceof IEnergyConductor) { + IEnergyConductor con = (IEnergyConductor) te; + + if(con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) + con.getPowerNet().unsubscribe(this); + } + + //then we add energy + if(mode == 1 || mode == 2) { + if(te instanceof IEnergyConnector) { + IEnergyConnector con = (IEnergyConnector) te; + long oldPower = this.power; + long transfer = this.power - con.transferPower(this.power); + this.power = oldPower - transfer; + } + } + + //then we subscribe if possible if(te instanceof IEnergyConductor) { IEnergyConductor con = (IEnergyConductor) te; if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) con.getPowerNet().subscribe(this); } - - if(mode == 1 || mode == 2) { - if(te instanceof IEnergyConnector) { - IEnergyConnector con = (IEnergyConnector) te; - this.power = con.transferPower(this.power); - } - } } ////////////////////////////////////////////////////////////////////// @@ -274,7 +286,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public long getMaxPower() { if(!worldObj.isRemote && getRelevantMode() >= 2) - return 0; + return this.getPower(); return maxPower; } @@ -307,10 +319,10 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I this.power += power; - if(this.power > this.maxPower) { + if(this.power > this.getMaxPower()) { - long overshoot = this.power - this.maxPower; - this.power = this.maxPower; + long overshoot = this.power - this.getMaxPower(); + this.power = this.getMaxPower(); return overshoot; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java index ad5b560a8..d97255ba0 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java @@ -13,7 +13,7 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto @Override public void updateEntity() { - if(!worldObj.isRemote) { + if(!worldObj.isRemote && canUpdate()) { //we got here either because the net doesn't exist or because it's not valid, so that's safe to assume this.setPowerNet(null); @@ -26,18 +26,18 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto IEnergyConductor conductor = (IEnergyConductor) te; - if(this.getPowerNet() == null) { - this.setPowerNet(conductor.getPowerNet()); + if(this.getPowerNet() == null && conductor.getPowerNet() != null) { + conductor.getPowerNet().joinLink(this); } - if(conductor.getPowerNet() != null) { - conductor.getPowerNet().join(this.getPowerNet()); + if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { + conductor.getPowerNet().joinNetworks(this.getPowerNet()); } } } if(this.getPowerNet() == null) { - this.setPowerNet(new PowerNet().joinLink(this)); + new PowerNet().joinLink(this); } } } @@ -45,10 +45,11 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto @Override public void invalidate() { super.invalidate(); - - //TODO: find out why sometimes the power net doesn't dissolve when it definitely should - if(this.network != null) { - this.network.destroy(); + + if(!worldObj.isRemote) { + if(this.network != null) { + this.network.destroy(); + } } } diff --git a/src/main/resources/assets/hbm/models/blocks/cable_neo.obj b/src/main/resources/assets/hbm/models/blocks/cable_neo.obj new file mode 100644 index 000000000..b5d5ea71e --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/cable_neo.obj @@ -0,0 +1,916 @@ +# Blender v2.79 (sub 0) OBJ File: 'cable_neo.blend' +# www.blender.org +o negY +v 0.156250 -0.500000 -0.093750 +v 0.156250 -0.500000 0.093750 +v -0.156250 -0.500000 0.093750 +v -0.156250 -0.500000 -0.093750 +v 0.093750 -0.500000 0.156250 +v -0.093750 -0.500000 0.156250 +v -0.093750 -0.500000 -0.156250 +v 0.093750 -0.500000 -0.156250 +v -0.156250 -0.156250 0.093750 +v -0.156250 -0.156250 -0.093750 +v 0.156250 -0.156250 0.093750 +v 0.156250 -0.156250 -0.093750 +v -0.093750 -0.156250 -0.156250 +v 0.093750 -0.156250 -0.156250 +v 0.093750 -0.156250 0.156250 +v -0.093750 -0.156250 0.156250 +vt 0.250000 0.062500 +vt 0.500000 0.000000 +vt 0.562500 0.250000 +vt 0.250000 -0.000000 +vt 0.062500 0.343750 +vt 0.062500 -0.000000 +vt 0.000000 0.343750 +vt -0.000000 -0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt 0.062500 0.000000 +vt -0.000000 0.000000 +vt 0.250000 0.343750 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt -0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt 0.062500 0.000000 +vt 0.000000 0.343750 +vt -0.000000 0.000000 +vt 0.312500 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.312500 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.343750 +vt 0.250000 0.343750 +vt 0.000000 0.343750 +vt 0.000000 0.343750 +vt 0.250000 0.343750 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 -0.0000 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +s off +f 6/1/1 4/2/1 8/3/1 +f 3/4/2 10/5/2 4/6/2 +f 4/6/3 13/7/3 7/8/3 +f 7/9/4 14/10/4 8/11/4 +f 14/10/5 1/12/5 8/11/5 +f 12/13/6 2/14/6 1/15/6 +f 11/16/7 5/17/7 2/14/7 +f 5/18/8 16/19/8 6/20/8 +f 6/20/9 9/21/9 3/22/9 +f 6/1/1 3/23/1 4/2/1 +f 4/2/1 7/24/1 8/3/1 +f 8/3/1 1/25/1 2/26/1 +f 2/26/1 5/27/1 8/3/1 +f 5/27/1 6/1/1 8/3/1 +f 3/4/2 9/28/2 10/5/2 +f 4/6/3 10/5/3 13/7/3 +f 7/9/4 13/29/4 14/10/4 +f 14/10/5 12/30/5 1/12/5 +f 12/13/6 11/16/6 2/14/6 +f 11/16/7 15/31/7 5/17/7 +f 5/18/8 15/32/8 16/19/8 +f 6/20/9 16/19/9 9/21/9 +o negX +v -0.500000 -0.156250 -0.093750 +v -0.500000 -0.156250 0.093750 +v -0.500000 0.156250 0.093750 +v -0.500000 0.156250 -0.093750 +v -0.500000 -0.093750 0.156250 +v -0.500000 0.093750 0.156250 +v -0.500000 0.093750 -0.156250 +v -0.500000 -0.093750 -0.156250 +v -0.156250 0.156250 0.093750 +v -0.156250 0.156250 -0.093750 +v -0.156250 -0.156250 0.093750 +v -0.156250 -0.156250 -0.093750 +v -0.156250 0.093750 -0.156250 +v -0.156250 -0.093750 -0.156250 +v -0.156250 -0.093750 0.156250 +v -0.156250 0.093750 0.156250 +vt 0.250000 0.250000 +vt 0.250000 0.062500 +vt 0.562500 0.250000 +vt 0.250000 -0.000000 +vt 0.062500 0.343750 +vt 0.062500 -0.000000 +vt 0.000000 0.343750 +vt -0.000000 -0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt 0.062500 0.000000 +vt 0.000000 0.343750 +vt -0.000000 0.000000 +vt 0.250000 0.343750 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt -0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt 0.062500 0.000000 +vt 0.000000 0.343750 +vt -0.000000 0.000000 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.312500 0.312500 +vt 0.250000 0.343750 +vt 0.250000 0.343750 +vt 0.000000 0.343750 +vt 0.250000 0.343750 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +s off +f 21/33/10 22/34/10 24/35/10 +f 19/36/11 26/37/11 20/38/11 +f 20/38/12 29/39/12 23/40/12 +f 23/41/13 30/42/13 24/43/13 +f 24/43/14 28/44/14 17/45/14 +f 28/46/15 18/47/15 17/48/15 +f 27/49/16 21/50/16 18/47/16 +f 21/51/17 32/52/17 22/53/17 +f 22/53/18 25/54/18 19/55/18 +f 22/34/10 19/56/10 24/35/10 +f 19/56/10 20/57/10 24/35/10 +f 20/57/10 23/58/10 24/35/10 +f 24/35/10 17/59/10 18/60/10 +f 18/60/10 21/33/10 24/35/10 +f 19/36/11 25/61/11 26/37/11 +f 20/38/12 26/37/12 29/39/12 +f 23/41/13 29/62/13 30/42/13 +f 24/43/14 30/42/14 28/44/14 +f 28/46/15 27/49/15 18/47/15 +f 27/49/16 31/63/16 21/50/16 +f 21/51/17 31/64/17 32/52/17 +f 22/53/18 32/52/18 25/54/18 +o negZ +v 0.093750 0.156250 0.500000 +v -0.093750 0.156250 0.500000 +v -0.093750 -0.156250 0.500000 +v 0.093750 -0.156250 0.500000 +v -0.156250 0.093750 0.500000 +v -0.156250 -0.093750 0.500000 +v 0.156250 -0.093750 0.500000 +v 0.156250 0.093750 0.500000 +v -0.156250 0.093750 0.156250 +v -0.156250 -0.093750 0.156250 +v 0.156250 0.093750 0.156250 +v 0.156250 -0.093750 0.156250 +v -0.093750 -0.156250 0.156250 +v 0.093750 -0.156250 0.156250 +v 0.093750 0.156250 0.156250 +v -0.093750 0.156250 0.156250 +vt 0.312500 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt 0.000000 0.656250 +vt 0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt 0.062500 0.656250 +vt 0.062500 0.656250 +vt 0.250000 1.000000 +vt 0.062500 1.000000 +vt 0.000000 0.656250 +vt -0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt 0.000000 1.000000 +vt 0.062500 0.656250 +vt 0.500000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.062500 +vt 0.062500 0.656250 +vt 0.000000 0.656250 +vt 0.250000 0.656250 +vt 0.000000 0.656250 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +s off +f 33/65/19 37/66/19 35/67/19 +f 37/68/20 42/69/20 38/70/20 +f 48/71/21 37/68/21 34/72/21 +f 33/73/22 48/74/22 34/75/22 +f 40/76/23 47/77/23 33/73/23 +f 44/78/24 40/79/24 39/80/24 +f 46/81/25 39/80/25 36/82/25 +f 35/83/26 46/84/26 36/85/26 +f 38/86/27 45/87/27 35/83/27 +f 33/65/19 34/88/19 37/66/19 +f 37/66/19 38/89/19 35/67/19 +f 35/67/19 36/90/19 39/91/19 +f 39/91/19 40/92/19 35/67/19 +f 40/92/19 33/65/19 35/67/19 +f 37/68/20 41/93/20 42/69/20 +f 48/71/21 41/93/21 37/68/21 +f 33/73/22 47/77/22 48/74/22 +f 40/76/23 43/94/23 47/77/23 +f 44/78/24 43/95/24 40/79/24 +f 46/81/25 44/78/25 39/80/25 +f 35/83/26 45/87/26 46/84/26 +f 38/86/27 42/96/27 45/87/27 +o posX +v 0.500000 -0.093750 -0.156250 +v 0.500000 0.093750 -0.156250 +v 0.500000 0.093750 0.156250 +v 0.500000 -0.093750 0.156250 +v 0.500000 0.156250 -0.093750 +v 0.500000 0.156250 0.093750 +v 0.500000 -0.156250 0.093750 +v 0.500000 -0.156250 -0.093750 +v 0.156250 0.156250 -0.093750 +v 0.156250 0.156250 0.093750 +v 0.156250 -0.156250 -0.093750 +v 0.156250 -0.156250 0.093750 +v 0.156250 0.093750 0.156250 +v 0.156250 -0.093750 0.156250 +v 0.156250 -0.093750 -0.156250 +v 0.156250 0.093750 -0.156250 +vt 0.250000 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.312500 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt 0.000000 1.000000 +vt 0.062500 0.656250 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt 0.062500 0.656250 +vt 0.062500 0.656250 +vt 0.250000 1.000000 +vt 0.062500 1.000000 +vt 0.000000 0.656250 +vt -0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt 0.000000 0.656250 +vt 0.062500 0.656250 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.250000 +vt 0.000000 0.656250 +vt 0.000000 0.656250 +vt 0.250000 0.656250 +vt 0.000000 1.000000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +s off +f 56/97/28 49/98/28 51/99/28 +f 53/100/29 58/101/29 54/102/29 +f 50/103/30 57/104/30 53/100/30 +f 49/105/31 64/106/31 50/107/31 +f 56/108/32 63/109/32 49/105/32 +f 60/110/33 56/111/33 55/112/33 +f 62/113/34 55/112/34 52/114/34 +f 51/115/35 62/116/35 52/117/35 +f 51/115/36 58/118/36 61/119/36 +f 49/98/28 50/120/28 51/99/28 +f 50/120/28 53/121/28 51/99/28 +f 53/121/28 54/122/28 51/99/28 +f 51/99/28 52/123/28 55/124/28 +f 55/124/28 56/97/28 51/99/28 +f 53/100/29 57/104/29 58/101/29 +f 50/103/30 64/125/30 57/104/30 +f 49/105/31 63/109/31 64/106/31 +f 56/108/32 59/126/32 63/109/32 +f 60/110/33 59/127/33 56/111/33 +f 62/113/34 60/110/34 55/112/34 +f 51/115/35 61/119/35 62/116/35 +f 51/115/36 54/128/36 58/118/36 +o posY +v 0.093750 0.500000 -0.156250 +v -0.093750 0.500000 -0.156250 +v -0.093750 0.500000 0.156250 +v 0.093750 0.500000 0.156250 +v -0.156250 0.500000 -0.093750 +v -0.156250 0.500000 0.093750 +v 0.156250 0.500000 0.093750 +v 0.156250 0.500000 -0.093750 +v -0.156250 0.156250 -0.093750 +v -0.156250 0.156250 0.093750 +v 0.156250 0.156250 -0.093750 +v 0.156250 0.156250 0.093750 +v -0.093750 0.156250 0.156250 +v 0.093750 0.156250 0.156250 +v 0.093750 0.156250 -0.156250 +v -0.093750 0.156250 -0.156250 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.312500 0.000000 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt 0.000000 0.656250 +vt 0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt 0.062500 0.656250 +vt 0.062500 0.656250 +vt 0.250000 1.000000 +vt 0.062500 1.000000 +vt 0.000000 0.656250 +vt -0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.656250 +vt 0.250000 1.000000 +vt 0.000000 1.000000 +vt 0.062500 0.656250 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.062500 0.656250 +vt 0.000000 0.656250 +vt 0.250000 0.656250 +vt 0.000000 0.656250 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +s off +f 67/129/37 71/130/37 65/131/37 +f 69/132/38 74/133/38 70/134/38 +f 80/135/39 69/132/39 66/136/39 +f 65/137/40 80/138/40 66/139/40 +f 72/140/41 79/141/41 65/137/41 +f 76/142/42 72/143/42 71/144/42 +f 78/145/43 71/144/43 68/146/43 +f 67/147/44 78/148/44 68/149/44 +f 70/150/45 77/151/45 67/147/45 +f 65/131/37 66/152/37 67/129/37 +f 66/152/37 69/153/37 67/129/37 +f 69/153/37 70/154/37 67/129/37 +f 67/129/37 68/155/37 71/130/37 +f 71/130/37 72/156/37 65/131/37 +f 69/132/38 73/157/38 74/133/38 +f 80/135/39 73/157/39 69/132/39 +f 65/137/40 79/141/40 80/138/40 +f 72/140/41 75/158/41 79/141/41 +f 76/142/42 75/159/42 72/143/42 +f 78/145/43 76/142/43 71/144/43 +f 67/147/44 77/151/44 78/148/44 +f 70/150/45 74/160/45 77/151/45 +o Core +v -0.156250 -0.156250 -0.093750 +v -0.156250 -0.156250 0.093750 +v -0.093750 -0.156250 0.156250 +v 0.093750 -0.156250 0.156250 +v 0.156250 -0.156250 0.093750 +v 0.156250 -0.156250 -0.093750 +v 0.093750 -0.156250 -0.156250 +v -0.093750 -0.156250 -0.156250 +v -0.156250 0.156250 -0.093750 +v -0.156250 0.156250 0.093750 +v -0.093750 0.156250 0.156250 +v 0.093750 0.156250 0.156250 +v 0.156250 0.156250 0.093750 +v 0.156250 0.156250 -0.093750 +v 0.093750 0.156250 -0.156250 +v -0.093750 0.156250 -0.156250 +v 0.156250 -0.093750 -0.156250 +v 0.156250 0.093750 -0.156250 +v 0.156250 0.093750 0.156250 +v 0.156250 -0.093750 0.156250 +v -0.156250 -0.093750 0.156250 +v -0.156250 0.093750 0.156250 +v -0.156250 0.093750 -0.156250 +v -0.156250 -0.093750 -0.156250 +vt 0.250000 0.062500 +vt 0.250000 -0.000000 +vt 0.312500 0.000000 +vt 0.312500 0.312500 +vt 0.250000 0.312500 +vt 0.250000 0.250000 +vt 0.312500 0.000000 +vt 0.250000 0.062500 +vt 0.250000 -0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.000000 +vt 0.562500 -0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.000000 +vt 0.562500 -0.000000 +vt 0.562500 0.250000 +vt 0.562500 0.312500 +vt 0.500000 0.312500 +vt 0.500000 0.312500 +vt 0.562500 0.250000 +vt 0.562500 0.312500 +vt 0.312500 0.312500 +vt 0.250000 0.312500 +vt 0.250000 0.250000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.500000 0.000000 +vt 0.250000 0.250000 +vt 0.312500 0.000000 +vt 0.562500 0.062500 +vt 0.250000 0.250000 +vt 0.312500 0.000000 +vt 0.562500 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.562500 0.062500 +vt 0.562500 0.250000 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.312500 0.000000 +vt 0.562500 0.250000 +vt 0.500000 0.312500 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.500000 0.000000 +vt 0.562500 0.250000 +vt 0.500000 0.312500 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.500000 0.000000 +vn -0.5774 -0.5774 0.5774 +vn 0.5774 -0.5774 0.5774 +vn -0.5774 0.5774 0.5774 +vn 0.5774 0.5774 0.5774 +vn -0.5774 -0.5774 -0.5774 +vn 0.5774 -0.5774 -0.5774 +vn 0.5774 0.5774 -0.5774 +vn -0.5774 0.5774 -0.5774 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 83/161/46 101/162/46 82/163/46 +f 85/164/47 100/165/47 84/166/47 +f 91/167/48 90/168/48 102/169/48 +f 93/170/49 92/171/49 99/172/49 +f 88/173/50 81/174/50 104/175/50 +f 87/176/51 97/177/51 86/178/51 +f 95/179/52 94/180/52 98/181/52 +f 96/182/53 103/183/53 89/184/53 +f 81/174/54 87/176/54 85/164/54 +f 88/185/55 103/186/55 95/187/55 +f 102/188/56 89/189/56 104/190/56 +f 85/191/57 97/192/57 94/193/57 +f 94/180/58 96/182/58 90/168/58 +f 83/194/59 100/195/59 92/196/59 +f 85/164/54 84/166/54 83/161/54 +f 83/161/54 82/163/54 81/174/54 +f 81/174/54 88/173/54 87/176/54 +f 87/176/54 86/178/54 85/164/54 +f 85/164/54 83/161/54 81/174/54 +f 95/187/55 98/197/55 97/198/55 +f 97/198/55 87/199/55 88/185/55 +f 88/185/55 104/200/55 103/186/55 +f 103/186/55 96/201/55 95/187/55 +f 95/187/55 97/198/55 88/185/55 +f 104/190/56 81/202/56 82/203/56 +f 82/203/56 101/204/56 102/188/56 +f 102/188/56 90/205/56 89/189/56 +f 89/189/56 103/206/56 104/190/56 +f 104/190/56 82/203/56 102/188/56 +f 94/193/57 93/207/57 99/208/57 +f 99/208/57 100/209/57 85/191/57 +f 85/191/57 86/210/57 97/192/57 +f 97/192/57 98/211/57 94/193/57 +f 94/193/57 99/208/57 85/191/57 +f 90/168/58 91/167/58 92/171/58 +f 92/171/58 93/170/58 94/180/58 +f 94/180/58 95/179/58 96/182/58 +f 96/182/58 89/184/58 90/168/58 +f 90/168/58 92/171/58 94/180/58 +f 92/196/59 91/212/59 102/213/59 +f 102/213/59 101/214/59 83/194/59 +f 83/194/59 84/215/59 100/195/59 +f 100/195/59 99/216/59 92/196/59 +f 92/196/59 102/213/59 83/194/59 +o posZ +v 0.156250 0.093750 -0.500000 +v 0.156250 -0.093750 -0.500000 +v -0.156250 -0.093750 -0.500000 +v -0.156250 0.093750 -0.500000 +v 0.093750 -0.156250 -0.500000 +v -0.093750 -0.156250 -0.500000 +v -0.093750 0.156250 -0.500000 +v 0.093750 0.156250 -0.500000 +v -0.156250 -0.093750 -0.156250 +v -0.156250 0.093750 -0.156250 +v 0.156250 -0.093750 -0.156250 +v 0.156250 0.093750 -0.156250 +v -0.093750 0.156250 -0.156250 +v 0.093750 0.156250 -0.156250 +v 0.093750 -0.156250 -0.156250 +v -0.093750 -0.156250 -0.156250 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.250000 -0.000000 +vt 0.062500 0.343750 +vt 0.062500 -0.000000 +vt 0.000000 0.343750 +vt -0.000000 -0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt 0.062500 0.000000 +vt -0.000000 0.000000 +vt 0.250000 0.343750 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt -0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.062500 0.343750 +vt 0.062500 0.000000 +vt 0.000000 0.343750 +vt -0.000000 0.000000 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.343750 +vt 0.250000 0.343750 +vt 0.000000 0.343750 +vt 0.000000 0.343750 +vt 0.250000 0.343750 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 -0.0000 +s off +f 112/217/60 106/218/60 110/219/60 +f 107/220/61 114/221/61 108/222/61 +f 108/222/62 117/223/62 111/224/62 +f 111/225/63 118/226/63 112/227/63 +f 118/226/64 105/228/64 112/227/64 +f 116/229/65 106/230/65 105/231/65 +f 115/232/66 109/233/66 106/230/66 +f 109/234/67 120/235/67 110/236/67 +f 110/236/68 113/237/68 107/238/68 +f 110/219/60 107/239/60 112/217/60 +f 107/239/60 108/240/60 112/217/60 +f 108/240/60 111/241/60 112/217/60 +f 112/217/60 105/242/60 106/218/60 +f 106/218/60 109/243/60 110/219/60 +f 107/220/61 113/244/61 114/221/61 +f 108/222/62 114/221/62 117/223/62 +f 111/225/63 117/245/63 118/226/63 +f 118/226/64 116/246/64 105/228/64 +f 116/229/65 115/232/65 106/230/65 +f 115/232/66 119/247/66 109/233/66 +f 109/234/67 119/248/67 120/235/67 +f 110/236/68 120/235/68 113/237/68 +o CZ +v -0.156250 0.093750 0.500000 +v -0.093750 0.156250 -0.500000 +v 0.093750 0.156250 -0.500000 +v -0.156250 -0.093750 0.500000 +v 0.156250 -0.093750 0.500000 +v 0.093750 -0.156250 -0.500000 +v -0.093750 -0.156250 -0.500000 +v 0.156250 0.093750 0.500000 +v -0.093750 -0.156250 0.500000 +v 0.156250 0.093750 -0.500000 +v 0.156250 -0.093750 -0.500000 +v 0.093750 -0.156250 0.500000 +v 0.093750 0.156250 0.500000 +v -0.156250 -0.093750 -0.500000 +v -0.156250 0.093750 -0.500000 +v -0.093750 0.156250 0.500000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt -0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt -0.000000 0.000000 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt 0.062500 1.000000 +vt -0.000000 0.000000 +vt 0.062500 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt -0.000000 0.000000 +vt 0.062500 0.000000 +vt -0.000000 1.000000 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 136/249/69 123/250/69 122/251/69 +f 128/252/70 123/250/70 133/253/70 +f 125/254/71 130/255/71 128/256/71 +f 126/257/72 125/254/72 132/258/72 +f 132/259/73 127/260/73 126/261/73 +f 129/262/74 134/263/74 127/260/74 +f 121/264/75 134/265/75 124/266/75 +f 135/267/76 136/268/76 122/269/76 +f 136/270/77 124/271/77 132/272/77 +f 126/273/78 134/274/78 122/275/78 +f 136/249/69 133/253/69 123/250/69 +f 128/252/70 130/276/70 123/250/70 +f 125/254/71 131/277/71 130/255/71 +f 126/257/72 131/277/72 125/254/72 +f 132/259/73 129/262/73 127/260/73 +f 129/262/74 124/278/74 134/263/74 +f 121/264/75 135/267/75 134/265/75 +f 135/267/76 121/264/76 136/268/76 +f 132/272/77 125/279/77 128/280/77 +f 128/280/77 133/281/77 136/270/77 +f 136/270/77 121/282/77 124/271/77 +f 124/271/77 129/283/77 132/272/77 +f 132/272/77 128/280/77 136/270/77 +f 122/275/78 123/284/78 130/285/78 +f 130/285/78 131/286/78 126/273/78 +f 126/273/78 127/287/78 134/274/78 +f 134/274/78 135/288/78 122/275/78 +f 122/275/78 130/285/78 126/273/78 +o CX +v 0.500000 0.156250 -0.093750 +v -0.500000 0.093750 -0.156250 +v -0.500000 -0.093750 -0.156250 +v 0.500000 0.156250 0.093750 +v 0.500000 -0.156250 0.093750 +v -0.500000 -0.093750 0.156250 +v -0.500000 0.093750 0.156250 +v 0.500000 -0.156250 -0.093750 +v 0.500000 0.093750 0.156250 +v -0.500000 -0.156250 -0.093750 +v -0.500000 -0.156250 0.093750 +v 0.500000 -0.093750 0.156250 +v 0.500000 -0.093750 -0.156250 +v -0.500000 0.156250 0.093750 +v -0.500000 0.156250 -0.093750 +v 0.500000 0.093750 -0.156250 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt -0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt -0.000000 0.000000 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt 0.062500 1.000000 +vt -0.000000 0.000000 +vt 0.062500 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt -0.000000 0.000000 +vt 0.062500 0.000000 +vt -0.000000 1.000000 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.0000 0.7071 0.7071 +vn -0.0000 1.0000 0.0000 +vn -0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 152/289/79 139/290/79 138/291/79 +f 144/292/80 139/290/80 149/293/80 +f 141/294/81 146/295/81 144/296/81 +f 142/297/82 141/294/82 148/298/82 +f 148/299/83 143/300/83 142/301/83 +f 145/302/84 150/303/84 143/300/84 +f 137/304/85 150/305/85 140/306/85 +f 151/307/86 152/308/86 138/309/86 +f 152/310/87 140/311/87 148/312/87 +f 142/313/88 150/314/88 138/315/88 +f 152/289/79 149/293/79 139/290/79 +f 144/292/80 146/316/80 139/290/80 +f 141/294/81 147/317/81 146/295/81 +f 142/297/82 147/317/82 141/294/82 +f 148/299/83 145/302/83 143/300/83 +f 145/302/84 140/318/84 150/303/84 +f 137/304/85 151/307/85 150/305/85 +f 151/307/86 137/304/86 152/308/86 +f 148/312/87 141/319/87 144/320/87 +f 144/320/87 149/321/87 152/310/87 +f 152/310/87 137/322/87 140/311/87 +f 140/311/87 145/323/87 148/312/87 +f 148/312/87 144/320/87 152/310/87 +f 138/315/88 139/324/88 146/325/88 +f 146/325/88 147/326/88 142/313/88 +f 142/313/88 143/327/88 150/314/88 +f 150/314/88 151/328/88 138/315/88 +f 138/315/88 146/325/88 142/313/88 +o CY +v -0.156250 0.500000 -0.093750 +v -0.093750 -0.500000 -0.156250 +v 0.093750 -0.500000 -0.156250 +v -0.156250 0.500000 0.093750 +v 0.156250 0.500000 0.093750 +v 0.093750 -0.500000 0.156250 +v -0.093750 -0.500000 0.156250 +v 0.156250 0.500000 -0.093750 +v -0.093750 0.500000 0.156250 +v 0.156250 -0.500000 -0.093750 +v 0.156250 -0.500000 0.093750 +v 0.093750 0.500000 0.156250 +v 0.093750 0.500000 -0.156250 +v -0.156250 -0.500000 0.093750 +v -0.156250 -0.500000 -0.093750 +v -0.093750 0.500000 -0.156250 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt -0.000000 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt -0.000000 0.000000 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt 0.250000 0.000000 +vt 0.062500 1.000000 +vt -0.000000 0.000000 +vt 0.062500 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt 0.062500 0.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vt 0.250000 0.062500 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt -0.000000 0.000000 +vt 0.062500 0.000000 +vt -0.000000 1.000000 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.500000 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.250000 +vt 0.312500 0.312500 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 168/329/89 155/330/89 154/331/89 +f 160/332/90 155/330/90 165/333/90 +f 157/334/91 162/335/91 160/336/91 +f 158/337/92 157/334/92 164/338/92 +f 164/339/93 159/340/93 158/341/93 +f 161/342/94 166/343/94 159/340/94 +f 153/344/95 166/345/95 156/346/95 +f 167/347/96 168/348/96 154/349/96 +f 168/350/97 156/351/97 164/352/97 +f 158/353/98 166/354/98 154/355/98 +f 168/329/89 165/333/89 155/330/89 +f 160/332/90 162/356/90 155/330/90 +f 157/334/91 163/357/91 162/335/91 +f 158/337/92 163/357/92 157/334/92 +f 164/339/93 161/342/93 159/340/93 +f 161/342/94 156/358/94 166/343/94 +f 153/344/95 167/347/95 166/345/95 +f 167/347/96 153/344/96 168/348/96 +f 164/352/97 157/359/97 160/360/97 +f 160/360/97 165/361/97 168/350/97 +f 168/350/97 153/362/97 156/351/97 +f 156/351/97 161/363/97 164/352/97 +f 164/352/97 160/360/97 168/350/97 +f 154/355/98 155/364/98 162/365/98 +f 162/365/98 163/366/98 158/353/98 +f 158/353/98 159/367/98 166/354/98 +f 166/354/98 167/368/98 154/355/98 +f 154/355/98 162/365/98 158/353/98 diff --git a/src/main/resources/assets/hbm/textures/blocks/cable_neo.png b/src/main/resources/assets/hbm/textures/blocks/cable_neo.png new file mode 100644 index 000000000..ff3be406e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cable_neo.png differ diff --git a/src/main/resources/assets/hbm/textures/misc/sat_bobmazon.png b/src/main/resources/assets/hbm/textures/misc/sat_bobmazon.png new file mode 100644 index 000000000..d09f38937 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/misc/sat_bobmazon.png differ