diff --git a/changelog b/changelog index 3e5499135..e47a838d9 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,30 @@ +## Added +* Heavy duty electricity connector + * Upgraded version of the standard model + * Two times as chunky, ten times as powerful + * Ideal for custom pylon designs +* Two new expensive mode items + * Ultra fine gold dust, which can be combined with ferric schrabidate in the particle accelerator to create degenerate matter + * Degenerate matter, which is used instead of regular ferric schrabidate in the exposure chamber to create DNT + ## Changed * Snow golems now use the grey metallic gib particles instead of blood +* The heavy magnetic storage tank now uses BSCCO instead of AA +* Increased the industrial steam turbine's throughput to 150mB/t of UDS exactly + * In addition to being an almost 50% buff, this also fixes the slight issue where turbine chains couldn't reach 100% throughput +* The remants power armor melee ability now has a refire check, meaning the attack will be repeated automatically if the attack button is held down + * ATATATATATATATATATATATATATATA +* Power armor melee attacks now detect entities with a hitbox that's 0.5 blocks larger in all directions, making it substantially easier to hit small targets +* As a side effect, this also increases the maximum range by 0.5 blocks ## Fixed * Fixed chemical factory internal tank sharing ignoring tank pressure -* Fixed the NCR ranger power armor missing most protection stats \ No newline at end of file +* Fixed the NCR ranger power armor missing most protection stats +* Fixed LPS pipes not properly connecting to the new industrial turbines +* Fixed NCRPA missing radiation resistance stats (it's 97% for the full set) +* Fixed NCRPA chestplate giving night vision even without a full set +* Probably fixed the fused meteorite sword recipe being missing (untested) +* Decreased the fusing difficulty of chlorine and calcium in the ICF which should hopefully make ClCa fuel pellets usable (untested) +* Fixed loot piles only having a single block render AABB, causing armor rewards from red rooms to blink out of existence at certain angles +* Fixed filled crate blocks not dropping crate items with a stack lock in place +* Fixed stack lock not being applied when an item crate is opened, allowing them to be stacked while the item is open \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 251a1dfec..fde3050f9 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -764,6 +764,7 @@ public class ModBlocks { public static Block red_cable_gauge; public static Block red_cable_box; public static Block red_connector; + public static Block red_connector_super; public static Block red_pylon; public static Block red_pylon_medium_wood; public static Block red_pylon_medium_wood_transformer; @@ -1890,6 +1891,7 @@ public class ModBlocks { red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); red_cable_box = new PowerCableBox(Material.iron).setBlockName("red_cable_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); 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_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"); @@ -3166,7 +3168,8 @@ public class ModBlocks { register(red_cable_gauge); register(red_cable_box); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); - GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); + register(red_connector); + register(red_connector_super); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); register(red_pylon_medium_wood); register(red_pylon_medium_wood_transformer); diff --git a/src/main/java/com/hbm/blocks/generic/BlockLoot.java b/src/main/java/com/hbm/blocks/generic/BlockLoot.java index 6ce450275..bebabccf6 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLoot.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLoot.java @@ -155,5 +155,24 @@ public class BlockLoot extends BlockContainer { nbt.setDouble("z" + i, item.getZ()); } } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java index 5f0261791..5c935f9c5 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java @@ -163,6 +163,7 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IL } if(!nbt.hasNoTags()) { + nbt.setLong("stacklock", world.rand.nextLong()); drop.stackTagCompound = nbt; } @@ -173,7 +174,7 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IL } } - if (drop.hasTagCompound()) { + if(drop.hasTagCompound()) { try { byte[] abyte = CompressedStreamTools.compress(drop.stackTagCompound); diff --git a/src/main/java/com/hbm/blocks/network/ConnectorRedWireSuper.java b/src/main/java/com/hbm/blocks/network/ConnectorRedWireSuper.java new file mode 100644 index 000000000..284499758 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/ConnectorRedWireSuper.java @@ -0,0 +1,62 @@ +package com.hbm.blocks.network; + +import java.util.List; + +import com.hbm.lib.Library; +import com.hbm.tileentity.network.TileEntityConnectorSuper; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class ConnectorRedWireSuper extends PylonBase { + + public ConnectorRedWireSuper(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityConnectorSuper(); + } + + @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { return side; } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBounds(world.getBlockMetadata(x, y, z)); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { setBlockBounds(world.getBlockMetadata(x, y, z)); } + + private void setBlockBounds(int meta) { + + float pixel = 0.0625F; + float min = pixel * 5F; + float max = pixel * 11F; + + ForgeDirection dir = ForgeDirection.getOrientation(meta).getOpposite(); + + float minX = dir == Library.NEG_X ? 0F : dir == Library.POS_X ? 0F : min; + float maxX = dir == Library.POS_X ? 1F : dir == Library.NEG_X ? 1F : max; + float minY = dir == Library.NEG_Y ? 0F : dir == Library.POS_Y ? 0F : min; + float maxY = dir == Library.POS_Y ? 1F : dir == Library.NEG_Y ? 1F : max; + float minZ = dir == Library.NEG_Z ? 0F : dir == Library.POS_Z ? 0F : min; + float maxZ = dir == Library.POS_Z ? 1F : dir == Library.NEG_Z ? 1F : max; + + this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); + list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "100m"); + } +} diff --git a/src/main/java/com/hbm/handler/HazmatRegistry.java b/src/main/java/com/hbm/handler/HazmatRegistry.java index 8203dff56..a11533c2e 100644 --- a/src/main/java/com/hbm/handler/HazmatRegistry.java +++ b/src/main/java/com/hbm/handler/HazmatRegistry.java @@ -56,6 +56,7 @@ public class HazmatRegistry { double env = 1.0D; // 99% double hev = 2.3D; // 99.5% double rpa = 2D; // 99% + double ncrpa = 1.7D; // 97% double trench = 1D; // 90% double fau = 4D; // 99.99% double dns = 5D; // 99.999% @@ -130,6 +131,11 @@ public class HazmatRegistry { HazmatRegistry.registerHazmat(ModItems.rpa_legs, rpa * legs); HazmatRegistry.registerHazmat(ModItems.rpa_boots, rpa * boots); + HazmatRegistry.registerHazmat(ModItems.ncrpa_helmet, ncrpa * helmet); + HazmatRegistry.registerHazmat(ModItems.ncrpa_plate, ncrpa * chest); + HazmatRegistry.registerHazmat(ModItems.ncrpa_legs, ncrpa * legs); + HazmatRegistry.registerHazmat(ModItems.ncrpa_boots, ncrpa * boots); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_helmet, trench * helmet); HazmatRegistry.registerHazmat(ModItems.trenchmaster_plate, trench * chest); HazmatRegistry.registerHazmat(ModItems.trenchmaster_legs, trench * legs); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index be1738f82..db559d348 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -112,6 +112,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.explastic").setup(600, 20_000).outputItems(new ItemStack(ModItems.item_expensive, 1, EnumExpensiveType.PLASTIC.ordinal())) .inputItems(new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(ANY_RUBBER.ingot(), 8)) .inputFluids(new FluidStack(Fluids.SOLVENT, 1_000))); + this.register(new GenericRecipe("ass.exgold").setup(600, 10_000).outputItems(new ItemStack(ModItems.item_expensive, 1, EnumExpensiveType.GOLD_DUST.ordinal())) + .inputItems(new OreDictStack(GOLD.dust(), 64), new OreDictStack(GOLD.dust(), 64))); // cloth this.register(new GenericRecipe("ass.hazcloth").setup(50, 100).outputItems(new ItemStack(ModItems.hazmat_cloth, 4)) @@ -457,7 +459,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16))); this.register(new GenericRecipe("ass.orbus").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_orbus, 1)) - .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plateCast(), 4), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc, 1, EnumBatterySC.PO210)) + .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(BSCCO.wireDense(), 8), new ComparableStack(ModItems.battery_sc, 1, EnumBatterySC.PO210)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new OreDictStack(BIGMT.plateCast(), 16), new ComparableStack(ModItems.coil_advanced_alloy, 24), new ComparableStack(ModItems.battery_sc, 1, EnumBatterySC.PO210))); // accelerators diff --git a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java index 5cee1cb84..0161e9e23 100644 --- a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java @@ -9,11 +9,14 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import static com.hbm.inventory.OreDictManager.*; + +import com.hbm.config.GeneralConfig; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumExpensiveType; import net.minecraft.item.ItemStack; @@ -26,7 +29,12 @@ public class ExposureChamberRecipes extends SerializableRecipe { recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_higgs), new OreDictStack(U.ingot()), new ItemStack(ModItems.ingot_schraranium))); recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_higgs), new OreDictStack(U238.ingot()), new ItemStack(ModItems.ingot_schrabidium))); recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_dark), new OreDictStack(PU.ingot()), new ItemStack(ModItems.ingot_euphemium))); - recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium))); + + if(GeneralConfig.enableExpensiveMode) { + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.DEGENERATE_MATTER), new ItemStack(ModItems.ingot_dineutronium))); + } else { + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium))); + } } public static ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack input) { diff --git a/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java b/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java index 0d0121fde..649632734 100644 --- a/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java @@ -8,10 +8,13 @@ import java.util.List; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumExpensiveType; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -86,6 +89,13 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe { new ItemStack(ModItems.particle_digamma), null )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.GOLD_DUST), + new OreDictStack(SBD.ingot()), + 10_000, + new ItemStack(ModItems.item_expensive, 1, EnumExpensiveType.DEGENERATE_MATTER.ordinal()), + null + )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(Items.chicken), new ComparableStack(Items.chicken), diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index d5566307b..9b48bd5c8 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -92,6 +92,6 @@ public class ItemEnums { } public static enum EnumExpensiveType { - STEEL_PLATING, HEAVY_FRAME, CIRCUIT, LEAD_PLATING, FERRO_PLATING, COMPUTER, BRONZE_TUBES, PLASTIC + STEEL_PLATING, HEAVY_FRAME, CIRCUIT, LEAD_PLATING, FERRO_PLATING, COMPUTER, BRONZE_TUBES, PLASTIC, GOLD_DUST, DEGENERATE_MATTER } } diff --git a/src/main/java/com/hbm/items/armor/ArmorNCRPA.java b/src/main/java/com/hbm/items/armor/ArmorNCRPA.java index f9e9dae71..78564912b 100644 --- a/src/main/java/com/hbm/items/armor/ArmorNCRPA.java +++ b/src/main/java/com/hbm/items/armor/ArmorNCRPA.java @@ -64,8 +64,10 @@ public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider player.getAttributeMap().applyAttributeModifiers(multimap); } - if(world.getTotalWorldTime() % 20 != 0) return; - if(HbmPlayerProps.getData(player).enableHUD) player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 300, 0, true)); + if(this.hasFSBArmor(player)) { + if(world.getTotalWorldTime() % 20 != 0) return; + if(HbmPlayerProps.getData(player).enableHUD) player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 300, 0, true)); + } } @Override public Item getItemForRenderer() { return this; } diff --git a/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java b/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java index 276f19c93..fbfac181f 100644 --- a/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java +++ b/src/main/java/com/hbm/items/armor/ArmorNCRPAMelee.java @@ -37,7 +37,7 @@ public class ArmorNCRPAMelee implements IPAMelee { boolean sweep = type == GunAnimation.ALT_CYCLE && timer == 5; if((swings || sweep) && ctx.getPlayer() != null) { - MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D); + MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D, 0.5D); if(mop != null) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit.isEntityAlive()) { diff --git a/src/main/java/com/hbm/items/armor/ArmorRPAMelee.java b/src/main/java/com/hbm/items/armor/ArmorRPAMelee.java index 3bddccdda..4d375807d 100644 --- a/src/main/java/com/hbm/items/armor/ArmorRPAMelee.java +++ b/src/main/java/com/hbm/items/armor/ArmorRPAMelee.java @@ -2,6 +2,7 @@ package com.hbm.items.armor; import org.lwjgl.opengl.GL11; +import com.hbm.interfaces.NotableComments; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.factory.ConfettiUtil; @@ -21,6 +22,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; +@NotableComments public class ArmorRPAMelee implements IPAMelee { @Override public void clickPrimary(ItemStack stack, LambdaContext ctx) { XFactoryPA.doSwing(stack, ctx, GunAnimation.CYCLE, 14); } @@ -33,11 +35,16 @@ public class ArmorRPAMelee implements IPAMelee { GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + // refire check so you can just continuously beat the shit out of someone + if(type == GunAnimation.CYCLE && timer == 14 && ItemGunBaseNT.getPrimary(stack, 0)) { + XFactoryPA.doSwing(stack, ctx, GunAnimation.CYCLE, 14); + } + boolean swings = type == GunAnimation.CYCLE && (timer == 3 || timer == 9); boolean slap = type == GunAnimation.ALT_CYCLE && timer == 8; if((swings || slap) && ctx.getPlayer() != null) { - MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D); + MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D, 0.5D); if(mop != null) { if(mop.typeOfHit == mop.typeOfHit.ENTITY) { diff --git a/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java b/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java index 2e5d3816e..d7dab2a25 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java +++ b/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java @@ -101,6 +101,7 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider this.slots = new ItemStack[this.getSizeInventory()]; if(target.stackTagCompound == null) { target.stackTagCompound = new NBTTagCompound(); + target.stackTagCompound.setLong("stacklock", rand.nextLong()); } for(int i = 0; i < slots.length; i++) diff --git a/src/main/java/com/hbm/items/machine/ItemICFPellet.java b/src/main/java/com/hbm/items/machine/ItemICFPellet.java index 7f115adb2..a4b2b45cb 100644 --- a/src/main/java/com/hbm/items/machine/ItemICFPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemICFPellet.java @@ -43,8 +43,8 @@ public class ItemICFPellet extends Item { OXYGEN( 0xB4E2FF, 1.25D, 1.50D, 7.50D), SODIUM( 0xDFE4E7, 3.00D, 0.75D, 8.75D), //aluminium, silicon, phosphorus - CHLORINE( 0xDAE598, 2.50D, 1.00D, 10.0D), - CALCIUM( 0xD2C7A9, 3.00D, 1.00D, 12.5D), + CHLORINE( 0xDAE598, 2.50D, 1.00D, 9.25D), + CALCIUM( 0xD2C7A9, 3.00D, 1.00D, 9.75D), //titanium ; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index a66e39ccd..3cee6d7d7 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -393,6 +393,7 @@ public class ClientProxy extends ServerProxy { //network ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConnector.class, new RenderConnector()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConnectorSuper.class, new RenderConnectorSuper()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonMedium.class, new RenderPylonMedium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d0b012e15..0dd47b78b 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -253,6 +253,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); 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_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 }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index d8e5c0417..6a72fe9bc 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -399,12 +399,13 @@ public class ResourceManager { public static final IModelCustom zirnox_destroyed = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox_destroyed.obj")).asVBO(); //Network - public static final IModelCustom connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/connector.obj")); - public static final IModelCustom pylon_medium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_medium.obj")); - public static final IModelCustom pylon_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_large.obj")); - public static final IModelCustom substation = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/substation.obj")).asVBO(); - public static final IModelCustom pipe_anchor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/pipe_anchor.obj")).asVBO(); - public static final IModelCustom fluid_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/fluid_diode.obj")).asVBO(); + 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_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(); + public static final IModelCustom pipe_anchor = new HFRWavefrontObject("models/network/pipe_anchor.obj").asVBO(); + public static final IModelCustom fluid_pump = new HFRWavefrontObject("models/network/fluid_diode.obj").asVBO(); //Radiolysis public static final IModelCustom radiolysis = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radiolysis.obj")); @@ -852,6 +853,7 @@ 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_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/render/tileentity/RenderConnector.java b/src/main/java/com/hbm/render/tileentity/RenderConnector.java index 64a3eb44e..bc253f44f 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderConnector.java +++ b/src/main/java/com/hbm/render/tileentity/RenderConnector.java @@ -2,12 +2,16 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.network.TileEntityConnector; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderConnector extends RenderPylonBase { +public class RenderConnector extends RenderPylonBase implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { @@ -37,4 +41,26 @@ public class RenderConnector extends RenderPylonBase { this.renderLinesGeneric(con, x, y, z); GL11.glPopMatrix(); } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.red_connector); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + double scale = 7; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.connector_tex); + ResourceManager.connector.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderConnectorSuper.java b/src/main/java/com/hbm/render/tileentity/RenderConnectorSuper.java new file mode 100644 index 000000000..a4d085557 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderConnectorSuper.java @@ -0,0 +1,66 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.network.TileEntityConnectorSuper; + +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderConnectorSuper extends RenderPylonBase implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + TileEntityConnectorSuper con = (TileEntityConnectorSuper) te; + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y + 0.5D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(te.getBlockMetadata()) { + case 0: GL11.glRotated(180, 1, 0, 0); break; + case 1: break; + case 2: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(180, 0, 0, 1); break; + case 3: GL11.glRotated(90, 1, 0, 0); break; + case 4: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(90, 0, 0, 1); break; + case 5: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(270, 0, 0, 1); break; + } + + GL11.glTranslated(0, -0.5F, 0); + + bindTexture(ResourceManager.connector_super_tex); + ResourceManager.connector_super.renderAll(); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + this.renderLinesGeneric(con, x, y, z); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.red_connector_super); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + double scale = 7; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.connector_super_tex); + ResourceManager.connector_super.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 6a8791bdf..d4362d38c 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -434,6 +434,7 @@ public class TileMappings { put(TileEntityDiode.class, "tileentity_cable_diode"); put(TileEntityConnector.class, "tileentity_connector_redwire"); + put(TileEntityConnectorSuper.class, "tileentity_connector_redwire_super"); put(TileEntityPylon.class, "tileentity_pylon_redwire"); put(TileEntityPylonMedium.class, "tileentity_pylon_medium"); put(TileEntityPylonLarge.class, "tileentity_pylon_large"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java index f88a7ff32..0820d4d5f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIndustrialTurbine.java @@ -23,8 +23,8 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineIndustrialTurbine extends TileEntityTurbineBase implements IConfigurableMachine { - public static int inputTankSize = 512_000; - public static int outputTankSize = 2_048_000; + public static int inputTankSize = 750_000; + public static int outputTankSize = 3_000_000; public static double efficiency = 1D; public float rotor; @@ -39,7 +39,7 @@ public class TileEntityMachineIndustrialTurbine extends TileEntityTurbineBase im @Override public String getConfigName() { - return "steamturbineIndustrial"; + return "steamturbineIndustrialMk2"; } @Override @@ -140,7 +140,7 @@ public class TileEntityMachineIndustrialTurbine extends TileEntityTurbineBase im @Override public boolean canConnect(FluidType type, ForgeDirection dir) { - if(!type.hasTrait(FT_Coolable.class)) return false; + if(!type.hasTrait(FT_Coolable.class) && type != Fluids.SPENTSTEAM) return false; ForgeDirection myDir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); return dir != myDir && dir != myDir.getOpposite(); } diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionBreeder.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionBreeder.java index 61eeeaf27..a60383a78 100644 --- a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionBreeder.java +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionBreeder.java @@ -9,6 +9,7 @@ import com.hbm.inventory.gui.GUIFusionBreeder; import com.hbm.inventory.recipes.FluidBreederRecipes; import com.hbm.inventory.recipes.OutgasserRecipes; import com.hbm.inventory.recipes.OutgasserRecipes.OutgasserRecipe; +import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -104,6 +105,8 @@ public class TileEntityFusionBreeder extends TileEntityMachineBase implements IF public boolean canProcessSolid() { if(slots[1] == null) return false; + + if(slots[1].getItem() == ModItems.meteorite_sword_bred && slots[2] == null) return true; OutgasserRecipe output = OutgasserRecipes.getOutput(slots[1]); if(output == null) return false; @@ -138,6 +141,13 @@ public class TileEntityFusionBreeder extends TileEntityMachineBase implements IF } private void processSolid() { + + if(slots[1].getItem() == ModItems.meteorite_sword_bred) { + this.decrStackSize(1, 1); + slots[2] = new ItemStack(ModItems.meteorite_sword_fused); + this.progress = 0; + return; + } OutgasserRecipe output = OutgasserRecipes.getOutput(slots[1]); this.decrStackSize(1, 1); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConnectorSuper.java b/src/main/java/com/hbm/tileentity/network/TileEntityConnectorSuper.java new file mode 100644 index 000000000..f29856af8 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConnectorSuper.java @@ -0,0 +1,18 @@ +package com.hbm.tileentity.network; + +import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityConnectorSuper extends TileEntityConnector { + + @Override + public Vec3[] getMountPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + return new Vec3[] {Vec3.createVectorHelper(0.5 + dir.offsetX * 0.375, 0.5 + dir.offsetY * 0.375, 0.5 + dir.offsetZ * 0.375)}; + } + + @Override + public double getMaxWireLength() { + return 100; + } +} diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 5aa57beaf..bd82115d6 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -431,6 +431,10 @@ public class EntityDamageUtil { } public static MovingObjectPosition getMouseOver(EntityPlayer attacker, double reach) { + return getMouseOver(attacker, reach, 0D); + } + + public static MovingObjectPosition getMouseOver(EntityPlayer attacker, double reach, double threshold) { World world = attacker.worldObj; MovingObjectPosition objectMouseOver = null; @@ -452,7 +456,7 @@ public class EntityDamageUtil { if(entity.canBeCollidedWith()) { - float borderSize = entity.getCollisionBorderSize(); + double borderSize = entity.getCollisionBorderSize() + threshold; AxisAlignedBB axisalignedbb = entity.boundingBox.expand(borderSize, borderSize, borderSize); MovingObjectPosition movingobjectposition = axisalignedbb.calculateIntercept(pos, end); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 8ab22405e..63be2d5d7 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2422,7 +2422,9 @@ item.insert_yharonite.name=Yharoniteinlage item.item_expensive.bronze_tubes.name=Bronze-Strukturelement item.item_expensive.circuit.name=Umfangreiche Platine item.item_expensive.computer.name=Großrechner +item.item_expensive.degenerate_matter.name=Entartete Materie item.item_expensive.ferro_plating.name=Verstärkte Ferrouraniumpanele +item.item_expensive.gold_dust.name=Ultrafeiner Goldstaub item.item_expensive.heavy_frame.name=Schweres Gestell item.item_expensive.lead_plating.name=Strahlenresistente Plattierung item.item_expensive.plastic.name=Kunststoffpanele @@ -4907,6 +4909,7 @@ tile.red_cable_gauge.name=Strommessgerät tile.red_cable_gauge.desc=Kabel welches anzeight, wie viel Strom$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die über Energiespeicherblöcke$verbunden sind, werden als ein einzelnes gezählt. tile.red_cable_paintable.name=Geschirmtes rotes Kupferkabel (Färbbar) tile.red_connector.name=Stromverbindungsstück +tile.red_connector_super.name=Schwerlast-Stromverbindungsstück tile.red_pylon.name=Strommasten tile.red_pylon_large.name=Hochspannungsmasten tile.red_pylon_medium_steel.name=Stählerner mittelgroßer Strommasten diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a72d0289a..29ce8c564 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3281,7 +3281,9 @@ item.insert_yharonite.name=Yharonite Insert item.item_expensive.bronze_tubes.name=Bronze Structural Elements item.item_expensive.circuit.name=Extensive Circuit Board item.item_expensive.computer.name=Mainframe +item.item_expensive.degenerate_matter.name=Degenerate Matter item.item_expensive.ferro_plating.name=Reinforced Ferrouranium Panels +item.item_expensive.gold_dust.name=Ultra Fine Gold Dust item.item_expensive.heavy_frame.name=Heavy Framework item.item_expensive.lead_plating.name=Radiation Resistant Plating item.item_expensive.plastic.name=Plastic Panels @@ -6237,6 +6239,7 @@ tile.red_cable_gauge.name=Power Gauge tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$storage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector +tile.red_connector_super.name=Heavy Duty Electricity Connector tile.red_pylon.name=Electricity Pylon tile.red_pylon_large.name=Large Electricity Pylon tile.red_pylon_medium_steel.name=Medium Steel Electricity Pylon diff --git a/src/main/resources/assets/hbm/models/network/connector_super.obj b/src/main/resources/assets/hbm/models/network/connector_super.obj new file mode 100644 index 000000000..b820795da --- /dev/null +++ b/src/main/resources/assets/hbm/models/network/connector_super.obj @@ -0,0 +1,554 @@ +# Blender v2.79 (sub 0) OBJ File: 'connector_super.blend' +# www.blender.org +o Cube_Cube.001 +v -0.187500 0.437500 0.187500 +v 0.187500 0.437500 -0.187500 +v -0.187500 0.437500 -0.187500 +v 0.187500 0.437500 0.187500 +v -0.187500 0.562500 -0.187500 +v 0.187500 0.562500 0.187500 +v -0.187500 0.562500 0.187500 +v 0.187500 0.562500 -0.187500 +v -0.125000 0.437500 -0.125000 +v -0.125000 0.437500 0.125000 +v 0.125000 0.437500 -0.125000 +v 0.125000 0.437500 0.125000 +v 0.125000 0.375000 0.125000 +v -0.125000 0.375000 -0.125000 +v 0.125000 0.375000 -0.125000 +v -0.125000 0.375000 0.125000 +v 0.187500 0.375000 -0.187500 +v -0.187500 0.375000 0.187500 +v 0.187500 0.375000 0.187500 +v -0.187500 0.375000 -0.187500 +v 0.187500 0.250000 0.187500 +v -0.187500 0.250000 -0.187500 +v 0.187500 0.250000 -0.187500 +v -0.187500 0.250000 0.187500 +v -0.125000 0.250000 0.125000 +v 0.125000 0.187500 0.125000 +v 0.125000 0.250000 0.125000 +v 0.125000 0.250000 -0.125000 +v -0.125000 0.187500 -0.125000 +v -0.125000 0.250000 -0.125000 +v 0.125000 0.187500 -0.125000 +v -0.125000 0.187500 0.125000 +v 0.187500 0.187500 -0.187500 +v -0.187500 0.187500 0.187500 +v 0.187500 0.187500 0.187500 +v -0.187500 0.187500 -0.187500 +v 0.187500 0.062500 0.187500 +v -0.187500 0.062500 -0.187500 +v 0.187500 0.062500 -0.187500 +v -0.187500 0.062500 0.187500 +v -0.125000 0.062500 0.125000 +v 0.125000 -0.000000 0.125000 +v 0.125000 0.062500 0.125000 +v 0.125000 0.062500 -0.125000 +v -0.125000 0.000000 -0.125000 +v -0.125000 0.062500 -0.125000 +v 0.125000 0.000000 -0.125000 +v -0.125000 -0.000000 0.125000 +v -0.062500 0.937500 0.062500 +v -0.062500 0.812500 -0.062500 +v -0.062500 0.812500 0.062500 +v -0.062500 0.937500 -0.062500 +v 0.062500 0.812500 -0.062500 +v 0.062500 0.937500 -0.062500 +v 0.062500 0.812500 0.062500 +v 0.062500 0.937500 0.062500 +v -0.125000 0.812500 -0.125000 +v -0.125000 0.812500 0.125000 +v 0.125000 0.812500 -0.125000 +v 0.125000 0.812500 0.125000 +v -0.125000 0.750000 -0.125000 +v -0.125000 0.750000 0.125000 +v 0.125000 0.750000 -0.125000 +v 0.125000 0.750000 0.125000 +v -0.187500 0.625000 0.187500 +v 0.187500 0.625000 -0.187500 +v -0.187500 0.625000 -0.187500 +v 0.187500 0.625000 0.187500 +v -0.187500 0.750000 -0.187500 +v 0.187500 0.750000 0.187500 +v -0.187500 0.750000 0.187500 +v 0.187500 0.750000 -0.187500 +v -0.125000 0.625000 -0.125000 +v -0.125000 0.625000 0.125000 +v 0.125000 0.625000 -0.125000 +v 0.125000 0.625000 0.125000 +v 0.125000 0.562500 0.125000 +v -0.125000 0.562500 -0.125000 +v 0.125000 0.562500 -0.125000 +v -0.125000 0.562500 0.125000 +v -0.093750 0.812500 0.125000 +v 0.093750 0.812500 0.125000 +v -0.093750 0.937500 0.125000 +v 0.093750 0.937500 0.125000 +v 0.093750 0.812500 -0.125000 +v -0.093750 0.812500 -0.125000 +v 0.093750 0.937500 -0.125000 +v -0.093750 0.937500 -0.125000 +v 0.125000 0.812500 0.093750 +v 0.125000 0.812500 -0.093750 +v 0.125000 0.937500 0.093750 +v 0.125000 0.937500 -0.093750 +v -0.125000 0.812500 -0.093750 +v -0.125000 0.812500 0.093750 +v -0.125000 0.937500 -0.093750 +v -0.125000 0.937500 0.093750 +v 0.062500 1.000000 0.093750 +v 0.062500 1.000000 -0.093750 +v -0.062500 1.000000 -0.093750 +v -0.062500 1.000000 0.093750 +v -0.093750 1.000000 0.062500 +v 0.093750 1.000000 0.062500 +v 0.093750 1.000000 -0.062500 +v -0.093750 1.000000 -0.062500 +v -0.093750 0.812500 0.125000 +v 0.093750 0.812500 0.125000 +v -0.093750 0.937500 0.125000 +v 0.093750 0.937500 0.125000 +v 0.093750 0.812500 -0.125000 +v -0.093750 0.812500 -0.125000 +v 0.093750 0.937500 -0.125000 +v -0.093750 0.937500 -0.125000 +v 0.125000 0.812500 0.093750 +v 0.125000 0.812500 -0.093750 +v 0.125000 0.937500 0.093750 +v 0.125000 0.937500 -0.093750 +v -0.125000 0.812500 -0.093750 +v -0.125000 0.812500 0.093750 +v -0.125000 0.937500 -0.093750 +v -0.125000 0.937500 0.093750 +v 0.062500 1.000000 0.093750 +v 0.062500 1.000000 -0.093750 +v -0.062500 1.000000 -0.093750 +v -0.062500 1.000000 0.093750 +v -0.093750 1.000000 0.062500 +v 0.093750 1.000000 0.062500 +v 0.093750 1.000000 -0.062500 +v -0.093750 1.000000 -0.062500 +vt 0.111111 0.300000 +vt 0.555556 0.333333 +vt 0.111111 0.333333 +vt 0.111111 0.300000 +vt 0.555556 0.333333 +vt 0.111111 0.333333 +vt -0.000000 0.200000 +vt 0.666667 0.266667 +vt -0.000000 0.266667 +vt 0.111111 0.466667 +vt 0.555556 0.500000 +vt 0.111111 0.500000 +vt -0.000000 0.533333 +vt 0.666667 0.366667 +vt -0.000000 0.366667 +vt -0.000000 0.266667 +vt 0.555556 0.300000 +vt 0.111111 0.300000 +vt 0.111111 0.166667 +vt 0.666667 0.200000 +vt -0.000000 0.533333 +vt 0.555556 0.500000 +vt 0.666667 0.533333 +vt 0.666667 0.533333 +vt 0.111111 0.500000 +vt 0.555556 0.500000 +vt -0.000000 0.366667 +vt 0.666667 0.433333 +vt -0.000000 0.433333 +vt -0.000000 0.200000 +vt 0.666667 0.266667 +vt -0.000000 0.266667 +vt 0.111111 0.166667 +vt 0.666667 0.200000 +vt 0.555556 0.300000 +vt 0.111111 0.333333 +vt 0.666667 0.366667 +vt -0.000000 0.366667 +vt 0.555556 0.466667 +vt 0.111111 0.466667 +vt 0.111111 0.466667 +vt 0.111111 0.466667 +vt 0.555556 0.500000 +vt 0.111111 0.500000 +vt 0.111111 0.133333 +vt 0.555556 0.166667 +vt 0.111111 0.166667 +vt 0.666667 0.533333 +vt 0.555556 0.333333 +vt 0.111111 0.333333 +vt 0.111111 0.166667 +vt 0.666667 0.200000 +vt -0.000000 0.200000 +vt 0.111111 0.133333 +vt 0.555556 -0.000000 +vt 0.555556 0.133333 +vt 0.666667 0.600000 +vt -0.000000 0.600000 +vt -0.000000 0.266667 +vt 0.555556 0.300000 +vt 0.111111 0.300000 +vt -0.000000 0.433333 +vt 0.555556 0.466667 +vt -0.000000 0.433333 +vt 0.555556 0.466667 +vt 0.111111 0.833333 +vt 0.444444 0.866667 +vt 0.222222 0.866667 +vt 0.666667 0.433333 +vt 0.666667 0.433333 +vt 0.111111 0.500000 +vt 0.666667 0.266667 +vt -0.000000 0.366667 +vt 0.666667 0.433333 +vt -0.000000 0.433333 +vt -0.000000 0.200000 +vt 0.666667 0.266667 +vt 0.111111 0.133333 +vt 0.555556 0.166667 +vt 0.111111 0.133333 +vt 0.555556 0.166667 +vt 0.555556 0.333333 +vt 0.666667 0.200000 +vt -0.000000 0.533333 +vt 0.666667 0.600000 +vt -0.000000 0.600000 +vt -0.000000 0.533333 +vt 0.666667 0.600000 +vt -0.000000 0.600000 +vt 0.666667 0.366667 +vt 0.666667 0.366667 +vt 0.555556 0.466667 +vt 0.555556 0.300000 +vt 0.666667 0.600000 +vt -0.000000 0.600000 +vt 0.111111 0.833333 +vt 0.444444 0.866667 +vt 0.222222 0.866667 +vt 0.111111 0.833333 +vt 0.444444 0.866667 +vt 0.222222 0.866667 +vt 0.222222 0.933333 +vt 0.444444 0.866667 +vt 0.444444 0.933333 +vt 0.222222 0.933333 +vt 0.444444 0.933333 +vt 0.222222 1.000000 +vt 0.444444 0.933333 +vt 0.444444 1.000000 +vt 0.222222 0.933333 +vt 0.222222 0.933333 +vt 0.444444 0.933333 +vt 0.111111 0.833333 +vt 0.222222 0.866667 +vt 0.555556 0.166667 +vt 0.555556 0.800000 +vt 0.555556 0.833333 +vt 0.555556 0.800000 +vt 0.555556 0.833333 +vt 0.555556 0.800000 +vt 0.555556 0.833333 +vt 0.555556 0.800000 +vt 0.555556 0.833333 +vt 0.111111 0.633333 +vt 0.555556 0.666667 +vt 0.111111 0.666667 +vt -0.000000 0.700000 +vt -0.000000 0.700000 +vt 0.555556 0.666667 +vt 0.666667 0.700000 +vt 0.666667 0.700000 +vt 0.111111 0.666667 +vt 0.555556 0.666667 +vt 0.111111 0.633333 +vt 0.111111 0.633333 +vt 0.555556 0.666667 +vt 0.111111 0.666667 +vt 0.666667 0.700000 +vt 0.666667 0.766667 +vt -0.000000 0.766667 +vt 0.111111 0.633333 +vt 0.111111 0.666667 +vt -0.000000 0.700000 +vt 0.666667 0.766667 +vt -0.000000 0.766667 +vt -0.000000 0.700000 +vt 0.666667 0.766667 +vt -0.000000 0.766667 +vt 0.666667 0.766667 +vt -0.000000 0.766667 +vt 0.555556 0.633333 +vt 0.555556 0.633333 +vt 0.111111 0.800000 +vt 0.111111 0.800000 +vt 0.111111 0.800000 +vt 0.111111 0.800000 +vt 1.000000 0.100000 +vt 0.666667 -0.000000 +vt 1.000000 -0.000000 +vt 0.666667 0.300000 +vt 1.000000 0.400000 +vt 0.666667 0.400000 +vt 0.666667 0.300000 +vt 1.000000 0.400000 +vt 0.666667 0.400000 +vt 1.000000 0.100000 +vt 0.666667 -0.000000 +vt 1.000000 -0.000000 +vt 0.666667 0.166667 +vt 0.666667 0.100000 +vt 1.000000 0.233333 +vt 1.000000 0.300000 +vt 1.000000 0.233333 +vt 1.000000 0.300000 +vt 0.666667 0.166667 +vt 0.666667 0.100000 +vt 1.000000 0.166667 +vt 0.666667 0.233333 +vt 0.666667 0.233333 +vt 1.000000 0.166667 +vt 0.666667 -0.000000 +vt 1.000000 0.100000 +vt 1.000000 -0.000000 +vt 1.000000 0.400000 +vt 0.666667 0.300000 +vt 0.666667 0.400000 +vt 1.000000 0.400000 +vt 0.666667 0.300000 +vt 0.666667 0.400000 +vt 0.666667 -0.000000 +vt 1.000000 0.100000 +vt 1.000000 -0.000000 +vt 0.666667 0.166667 +vt 0.666667 0.100000 +vt 1.000000 0.233333 +vt 1.000000 0.300000 +vt 1.000000 0.300000 +vt 0.666667 0.233333 +vt 0.666667 0.166667 +vt 0.666667 0.100000 +vt 1.000000 0.166667 +vt 1.000000 0.166667 +vt 0.666667 0.233333 +vt 0.666667 0.533333 +vt 0.555556 0.133333 +vt 0.111111 -0.000000 +vt 0.555556 0.133333 +vt 0.555556 0.133333 +vt 0.555556 0.633333 +vt 0.666667 0.700000 +vt 0.555556 0.633333 +vt 1.000000 0.233333 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +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.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +s off +f 32/1/1 27/2/1 25/3/1 +f 26/4/2 28/5/2 27/6/2 +f 37/7/2 33/8/2 35/9/2 +f 16/10/1 12/11/1 10/12/1 +f 12/11/3 1/13/3 10/12/3 +f 27/6/3 23/14/3 21/15/3 +f 36/16/4 32/17/4 29/18/4 +f 43/19/3 39/20/3 37/7/3 +f 3/21/3 10/22/3 1/23/3 +f 3/24/3 11/25/3 9/26/3 +f 22/27/5 18/28/5 20/29/5 +f 40/30/1 35/31/1 34/32/1 +f 41/33/3 37/34/3 40/30/3 +f 35/9/4 31/35/4 26/4/4 +f 28/36/3 22/37/3 23/38/3 +f 20/29/4 16/39/4 14/40/4 +f 15/41/6 9/26/6 11/25/6 +f 13/42/2 11/43/2 12/44/2 +f 45/45/5 41/46/5 46/47/5 +f 2/48/3 12/44/3 11/43/3 +f 29/18/5 25/49/5 30/50/5 +f 44/51/3 38/52/3 39/53/3 +f 42/54/3 45/55/3 47/56/3 +f 1/13/1 6/57/1 7/58/1 +f 33/59/4 29/60/4 31/61/4 +f 17/62/4 14/63/4 15/41/4 +f 19/64/4 15/65/4 13/42/4 +f 60/66/4 53/67/4 55/68/4 +f 21/15/2 17/69/2 19/64/2 +f 23/38/6 20/70/6 17/62/6 +f 14/40/5 10/22/5 9/71/5 +f 39/53/6 36/72/6 33/59/6 +f 24/73/1 19/74/1 18/75/1 +f 38/76/5 34/77/5 36/16/5 +f 47/78/6 46/79/6 44/51/6 +f 48/80/1 43/81/1 41/33/1 +f 31/61/6 30/82/6 28/36/6 +f 46/47/3 40/83/3 38/76/3 +f 2/84/6 5/85/6 8/86/6 +f 4/87/2 8/88/2 6/89/2 +f 25/3/3 21/90/3 24/73/3 +f 30/50/3 24/91/3 22/27/3 +f 18/75/4 13/92/4 16/10/4 +f 34/32/4 26/93/4 32/1/4 +f 3/21/5 7/94/5 5/95/5 +f 58/96/4 55/97/4 51/98/4 +f 57/99/4 51/100/4 50/101/4 +f 54/102/6 50/103/6 52/104/6 +f 49/105/1 55/97/1 56/106/1 +f 49/107/4 54/108/4 52/109/4 +f 56/110/2 53/67/2 54/108/2 +f 52/111/5 51/100/5 49/112/5 +f 59/113/4 50/103/4 53/114/4 +f 42/54/2 44/115/2 43/19/2 +f 57/99/5 62/116/5 58/117/5 +f 59/113/6 61/118/6 57/119/6 +f 58/96/1 64/120/1 60/121/1 +f 60/66/2 63/122/2 59/123/2 +f 80/124/1 76/125/1 74/126/1 +f 76/125/3 65/127/3 74/126/3 +f 67/128/3 74/129/3 65/130/3 +f 67/131/3 75/132/3 73/133/3 +f 79/134/6 73/133/6 75/132/6 +f 77/135/2 75/136/2 76/137/2 +f 66/138/3 76/137/3 75/136/3 +f 65/127/1 70/139/1 71/140/1 +f 78/141/5 74/129/5 73/142/5 +f 66/143/6 69/144/6 72/145/6 +f 68/146/2 72/147/2 70/148/2 +f 67/128/5 71/149/5 69/150/5 +f 79/151/4 6/89/4 8/88/4 +f 5/85/4 79/134/4 8/86/4 +f 80/152/4 5/95/4 7/94/4 +f 6/57/4 80/124/4 7/58/4 +f 70/148/4 63/122/4 64/153/4 +f 63/154/4 69/144/4 61/118/4 +f 69/150/4 62/116/4 61/155/4 +f 62/156/4 70/139/4 64/120/4 +f 84/157/1 81/158/1 82/159/1 +f 88/160/6 85/161/6 86/162/6 +f 92/163/2 89/164/2 90/165/2 +f 96/166/5 93/167/5 94/168/5 +f 96/166/7 99/169/7 95/170/7 +f 92/163/8 97/171/8 91/172/8 +f 88/160/9 103/173/9 87/174/9 +f 84/157/10 101/175/10 83/176/10 +f 102/177/4 104/178/4 101/175/4 +f 98/179/4 100/180/4 97/171/4 +f 105/181/6 108/182/6 106/183/6 +f 109/184/1 112/185/1 110/186/1 +f 113/187/5 116/188/5 114/189/5 +f 117/190/2 120/191/2 118/192/2 +f 123/193/11 120/191/11 119/194/11 +f 121/195/12 116/188/12 115/196/12 +f 111/197/13 128/198/13 112/185/13 +f 125/199/14 108/182/14 107/200/14 +f 128/198/3 126/201/3 125/199/3 +f 124/202/3 122/203/3 121/195/3 +f 32/1/1 26/93/1 27/2/1 +f 26/4/2 31/35/2 28/5/2 +f 37/7/2 39/20/2 33/8/2 +f 16/10/1 13/92/1 12/11/1 +f 12/11/3 4/204/3 1/13/3 +f 27/6/3 28/5/3 23/14/3 +f 36/16/4 34/77/4 32/17/4 +f 43/19/3 44/115/3 39/20/3 +f 3/21/3 9/71/3 10/22/3 +f 3/24/3 2/84/3 11/25/3 +f 22/27/5 24/91/5 18/28/5 +f 40/30/1 37/34/1 35/31/1 +f 41/33/3 43/81/3 37/34/3 +f 35/9/4 33/8/4 31/35/4 +f 28/36/3 30/82/3 22/37/3 +f 20/29/4 18/28/4 16/39/4 +f 15/41/6 14/63/6 9/26/6 +f 13/42/2 15/65/2 11/43/2 +f 45/45/5 48/205/5 41/46/5 +f 2/48/3 4/87/3 12/44/3 +f 29/18/5 32/17/5 25/49/5 +f 44/51/3 46/79/3 38/52/3 +f 42/54/3 48/206/3 45/55/3 +f 1/13/1 4/204/1 6/57/1 +f 33/59/4 36/72/4 29/60/4 +f 17/62/4 20/70/4 14/63/4 +f 19/64/4 17/69/4 15/65/4 +f 60/66/4 59/123/4 53/67/4 +f 21/15/2 23/14/2 17/69/2 +f 23/38/6 22/37/6 20/70/6 +f 14/40/5 16/39/5 10/22/5 +f 39/53/6 38/52/6 36/72/6 +f 24/73/1 21/90/1 19/74/1 +f 38/76/5 40/83/5 34/77/5 +f 47/78/6 45/207/6 46/79/6 +f 48/80/1 42/208/1 43/81/1 +f 31/61/6 29/60/6 30/82/6 +f 46/47/3 41/46/3 40/83/3 +f 2/84/6 3/24/6 5/85/6 +f 4/87/2 2/48/2 8/88/2 +f 25/3/3 27/2/3 21/90/3 +f 30/50/3 25/49/3 24/91/3 +f 18/75/4 19/74/4 13/92/4 +f 34/32/4 35/31/4 26/93/4 +f 3/21/5 1/23/5 7/94/5 +f 58/96/4 60/121/4 55/97/4 +f 57/99/4 58/117/4 51/100/4 +f 54/102/6 53/114/6 50/103/6 +f 49/105/1 51/98/1 55/97/1 +f 49/107/4 56/110/4 54/108/4 +f 56/110/2 55/68/2 53/67/2 +f 52/111/5 50/101/5 51/100/5 +f 59/113/4 57/119/4 50/103/4 +f 42/54/2 47/56/2 44/115/2 +f 57/99/5 61/155/5 62/116/5 +f 59/113/6 63/154/6 61/118/6 +f 58/96/1 62/156/1 64/120/1 +f 60/66/2 64/153/2 63/122/2 +f 80/124/1 77/209/1 76/125/1 +f 76/125/3 68/210/3 65/127/3 +f 67/128/3 73/142/3 74/129/3 +f 67/131/3 66/143/3 75/132/3 +f 79/134/6 78/211/6 73/133/6 +f 77/135/2 79/151/2 75/136/2 +f 66/138/3 68/146/3 76/137/3 +f 65/127/1 68/210/1 70/139/1 +f 78/141/5 80/152/5 74/129/5 +f 66/143/6 67/131/6 69/144/6 +f 68/146/2 66/138/2 72/147/2 +f 67/128/5 65/130/5 71/149/5 +f 79/151/4 77/135/4 6/89/4 +f 5/85/4 78/211/4 79/134/4 +f 80/152/4 78/141/4 5/95/4 +f 6/57/4 77/209/4 80/124/4 +f 70/148/4 72/147/4 63/122/4 +f 63/154/4 72/145/4 69/144/4 +f 69/150/4 71/149/4 62/116/4 +f 62/156/4 71/140/4 70/139/4 +f 84/157/1 83/176/1 81/158/1 +f 88/160/6 87/174/6 85/161/6 +f 92/163/2 91/172/2 89/164/2 +f 96/166/5 95/170/5 93/167/5 +f 96/166/7 100/180/7 99/169/7 +f 92/163/8 98/179/8 97/171/8 +f 88/160/9 104/178/9 103/173/9 +f 84/157/10 102/177/10 101/175/10 +f 102/177/4 103/173/4 104/178/4 +f 98/179/4 99/169/4 100/180/4 +f 105/181/6 107/200/6 108/182/6 +f 109/184/1 111/197/1 112/185/1 +f 113/187/5 115/196/5 116/188/5 +f 117/190/2 119/194/2 120/191/2 +f 123/193/11 124/202/11 120/191/11 +f 121/195/12 122/203/12 116/188/12 +f 111/197/13 127/212/13 128/198/13 +f 125/199/14 126/201/14 108/182/14 +f 128/198/3 127/212/3 126/201/3 +f 124/202/3 123/193/3 122/203/3 diff --git a/src/main/resources/assets/hbm/textures/items/item_expensive.degenerate_matter.png b/src/main/resources/assets/hbm/textures/items/item_expensive.degenerate_matter.png new file mode 100644 index 000000000..68bea6e02 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/item_expensive.degenerate_matter.png differ diff --git a/src/main/resources/assets/hbm/textures/items/item_expensive.gold_dust.png b/src/main/resources/assets/hbm/textures/items/item_expensive.gold_dust.png new file mode 100644 index 000000000..336e29307 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/item_expensive.gold_dust.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/connector_super.png b/src/main/resources/assets/hbm/textures/models/network/connector_super.png new file mode 100644 index 000000000..9b04a0ced Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/connector_super.png differ