diff --git a/src/main/java/resonantinduction/archaic/Archaic.java b/src/main/java/resonantinduction/archaic/Archaic.java index 98ee0f77..3946e29d 100644 --- a/src/main/java/resonantinduction/archaic/Archaic.java +++ b/src/main/java/resonantinduction/archaic/Archaic.java @@ -20,6 +20,7 @@ import resonantinduction.archaic.imprint.TileImprinter; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; +import resonantinduction.core.part.BlockMachinePart; import calclavia.lib.content.ContentRegistry; import calclavia.lib.network.PacketHandler; import calclavia.lib.prefab.item.ItemBlockMetadata; @@ -66,7 +67,8 @@ public class Archaic public static Block blockTurntable; public static Block blockFirebox; public static Block blockHotPlate; - + public static Block blockMachinePart; + public static Item itemImprint; @EventHandler @@ -81,6 +83,8 @@ public class Archaic blockFirebox = contentRegistry.createTile(BlockFirebox.class, TileFirebox.class); blockHotPlate = contentRegistry.createBlock(BlockHotPlate.class, ItemBlockMetadata.class, TileHotPlate.class); + blockMachinePart = contentRegistry.createBlock(BlockMachinePart.class, ItemBlockMetadata.class); + itemImprint = contentRegistry.createItem(ItemBlockImprint.class); proxy.preInit(); Settings.save(); diff --git a/src/main/java/resonantinduction/core/part/BlockMachinePart.java b/src/main/java/resonantinduction/core/part/BlockMachinePart.java index 256d138f..b852287f 100644 --- a/src/main/java/resonantinduction/core/part/BlockMachinePart.java +++ b/src/main/java/resonantinduction/core/part/BlockMachinePart.java @@ -1,19 +1,49 @@ package resonantinduction.core.part; +import java.util.List; + +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; import resonantinduction.core.Reference; import resonantinduction.core.prefab.block.BlockBase; /** - * A block used to build machines. + * A block used to build machines or decoration. * * @author Calclavia * */ public class BlockMachinePart extends BlockBase { + String[] iconNames = new String[] { "material_metal_side", "material_metal_top", "material_stone_brick", "material_stone_brick2", "material_stone_chiseled", "material_stone_cobble", "material_stone_cracked", "material_stone", "material_stone_slab", "material_stone_mossy", "material_steel_dark", "material_steel_tint", "material_steel" }; + Icon[] icons = new Icon[iconNames.length]; + public BlockMachinePart() { - super("machinePart"); - setTextureName(Reference.PREFIX + "material_stone_brick"); + super("material"); + } + + @Override + public Icon getIcon(int side, int metadata) + { + return icons[metadata]; + } + + @Override + public void registerIcons(IconRegister par1IconRegister) + { + this.blockIcon = par1IconRegister.registerIcon(this.getTextureName()); + + for (int i = 0; i < iconNames.length; i++) + icons[i] = par1IconRegister.registerIcon(Reference.PREFIX + iconNames[i]); + } + + @Override + public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) + { + for (int i = 0; i < iconNames.length; i++) + par3List.add(new ItemStack(par1, 1, i)); } } diff --git a/src/main/java/resonantinduction/electrical/Electrical.java b/src/main/java/resonantinduction/electrical/Electrical.java index f03fb49f..29e4aca9 100644 --- a/src/main/java/resonantinduction/electrical/Electrical.java +++ b/src/main/java/resonantinduction/electrical/Electrical.java @@ -97,7 +97,7 @@ public class Electrical public static Block blockGenerator; // Machines - public static Block blockAdvancedFurnace, blockMachinePart, blockGrinderWheel, blockPurifier; + public static Block blockAdvancedFurnace; // Transport public static Block blockEMLevitator; @@ -124,11 +124,6 @@ public class Electrical blockEncoder = contentRegistry.createTile(BlockEncoder.class, TileEncoder.class); itemDisk = contentRegistry.createItem(ItemDisk.class); - // Machines - blockMachinePart = contentRegistry.createBlock(BlockMachinePart.class); - blockGrinderWheel = contentRegistry.createTile(BlockGrinderWheel.class, TileGrinderWheel.class); - blockPurifier = contentRegistry.createTile(BlockPurifier.class, TilePurifier.class); - // Generator blockSolarPanel = contentRegistry.createTile(BlockSolarPanel.class, TileSolarPanel.class); blockGenerator = contentRegistry.createTile(BlockGenerator.class, TileGenerator.class); diff --git a/src/main/java/resonantinduction/electrical/battery/TileBattery.java b/src/main/java/resonantinduction/electrical/battery/TileBattery.java index 7cefcde6..3d9ac23e 100644 --- a/src/main/java/resonantinduction/electrical/battery/TileBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/TileBattery.java @@ -88,7 +88,9 @@ public class TileBattery extends TileElectrical implements IConnector 0) && ticks % 5 == 0) + long produce = this.produce(); + + if ((markDistributionUpdate || produce > 0) && ticks % 5 == 0) { this.getNetwork().redistribute(); markDistributionUpdate = false; diff --git a/src/main/java/resonantinduction/electrical/generator/TileGenerator.java b/src/main/java/resonantinduction/electrical/generator/TileGenerator.java index 16bda264..2249aede 100644 --- a/src/main/java/resonantinduction/electrical/generator/TileGenerator.java +++ b/src/main/java/resonantinduction/electrical/generator/TileGenerator.java @@ -92,8 +92,15 @@ public class TileGenerator extends TileElectrical implements IRotatable long currentTorque = Math.abs(mech.getTorque()); if (currentTorque != 0) + { setTorque = Math.min(+setTorque, maxTorque) * (mech.getTorque() / currentTorque); + if (setTorque < currentTorque) + { + setTorque = (long) Math.max(setTorque, currentTorque * (currentTorque / maxTorque)); + } + } + float currentVelo = Math.abs(mech.getAngularVelocity()); if (currentVelo != 0) setAngularVelocity = Math.min(+setAngularVelocity, maxAngularVelocity) * (mech.getAngularVelocity() / currentVelo); diff --git a/src/main/java/resonantinduction/mechanical/Mechanical.java b/src/main/java/resonantinduction/mechanical/Mechanical.java index 3c84f4f8..caa3fa91 100644 --- a/src/main/java/resonantinduction/mechanical/Mechanical.java +++ b/src/main/java/resonantinduction/mechanical/Mechanical.java @@ -6,6 +6,7 @@ import net.minecraftforge.oredict.OreDictionary; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; +import resonantinduction.electrical.purifier.BlockPurifier; import resonantinduction.mechanical.belt.BlockConveyorBelt; import resonantinduction.mechanical.belt.TileConveyorBelt; import resonantinduction.mechanical.fluid.pipe.ItemBlockFluidContainer; @@ -26,6 +27,9 @@ import resonantinduction.mechanical.logistic.TileManipulator; import resonantinduction.mechanical.logistic.TileRejector; import resonantinduction.mechanical.network.IMechanical; import resonantinduction.mechanical.network.PacketNetwork; +import resonantinduction.mechanical.process.BlockGrinderWheel; +import resonantinduction.mechanical.process.TileGrinderWheel; +import resonantinduction.mechanical.process.TilePurifier; import calclavia.lib.content.ContentRegistry; import calclavia.lib.network.PacketHandler; import cpw.mods.fml.common.Mod; @@ -81,6 +85,10 @@ public class Mechanical public static Item itemPipe; public static Item itemPipeGuage; + // Machines + public static Block blockGrinderWheel; + public static Block blockPurifier; + public static final PacketNetwork PACKET_NETWORK = new PacketNetwork(IMechanical.class, Reference.CHANNEL); @EventHandler @@ -102,6 +110,10 @@ public class Mechanical itemPipeGuage = contentRegistry.createItem(ItemPipeGauge.class); itemPipe = contentRegistry.createItem(ItemPipe.class); + // Machines + blockGrinderWheel = contentRegistry.createTile(BlockGrinderWheel.class, TileGrinderWheel.class); + blockPurifier = contentRegistry.createTile(BlockPurifier.class, TilePurifier.class); + OreDictionary.registerOre("gear", itemGear); proxy.preInit(); diff --git a/src/main/java/resonantinduction/mechanical/fluid/tank/RenderTank.java b/src/main/java/resonantinduction/mechanical/fluid/tank/RenderTank.java index 350fb302..2fbcbab1 100644 --- a/src/main/java/resonantinduction/mechanical/fluid/tank/RenderTank.java +++ b/src/main/java/resonantinduction/mechanical/fluid/tank/RenderTank.java @@ -8,8 +8,8 @@ import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; +import resonantinduction.archaic.Archaic; import resonantinduction.core.render.RenderFluidHelper; -import resonantinduction.electrical.Electrical; import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.fluid.prefab.TileFluidNetwork; import calclavia.lib.render.RenderUtility; @@ -94,24 +94,24 @@ public class RenderTank extends TileEntitySpecialRenderer if (!north) { // north east - RenderUtility.renderCube(0.475, -0.501, -0.501, 0.501, 0.501, -0.475, Electrical.blockMachinePart); + RenderUtility.renderCube(0.475, -0.501, -0.501, 0.501, 0.501, -0.475, Archaic.blockMachinePart); } if (!south) { // south east - RenderUtility.renderCube(0.475, -0.501, 0.475, 0.501, 0.501, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(0.475, -0.501, 0.475, 0.501, 0.501, 0.501, Archaic.blockMachinePart); } if (!down) { // bottom east - RenderUtility.renderCube(0.475, -0.501, -0.501, 0.501, -0.475, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(0.475, -0.501, -0.501, 0.501, -0.475, 0.501, Archaic.blockMachinePart); } if (!up) { // top east - RenderUtility.renderCube(0.475, 0.475, -0.501, 0.501, 0.501, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(0.475, 0.475, -0.501, 0.501, 0.501, 0.501, Archaic.blockMachinePart); } } @@ -120,22 +120,22 @@ public class RenderTank extends TileEntitySpecialRenderer if (!north) { // north west - RenderUtility.renderCube(-0.501, -0.501, -0.501, -0.475, 0.501, -0.475, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, -0.501, -0.501, -0.475, 0.501, -0.475, Archaic.blockMachinePart); } if (!south) { // south west - RenderUtility.renderCube(-0.501, -0.501, 0.475, -0.475, 0.501, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, -0.501, 0.475, -0.475, 0.501, 0.501, Archaic.blockMachinePart); } if (!down) { // bottom west - RenderUtility.renderCube(-0.501, -0.501, -0.501, -0.475, -0.475, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, -0.501, -0.501, -0.475, -0.475, 0.501, Archaic.blockMachinePart); } if (!up) { // top west - RenderUtility.renderCube(-0.501, 0.475, -0.501, -0.475, 0.501, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, 0.475, -0.501, -0.475, 0.501, 0.501, Archaic.blockMachinePart); } } if (!north) @@ -143,12 +143,12 @@ public class RenderTank extends TileEntitySpecialRenderer if (!up) { // top north - RenderUtility.renderCube(-0.501, 0.475, -0.501, 0.501, 0.501, -0.475, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, 0.475, -0.501, 0.501, 0.501, -0.475, Archaic.blockMachinePart); } if (!down) { // bottom north - RenderUtility.renderCube(-0.501, -0.501, -0.501, 0.501, -0.475, -0.475, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, -0.501, -0.501, 0.501, -0.475, -0.475, Archaic.blockMachinePart); } } @@ -157,12 +157,12 @@ public class RenderTank extends TileEntitySpecialRenderer if (!up) { // top south - RenderUtility.renderCube(-0.501, 0.475, 0.475, 0.501, 0.501, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, 0.475, 0.475, 0.501, 0.501, 0.501, Archaic.blockMachinePart); } if (!down) { // bottom south - RenderUtility.renderCube(-0.501, -0.501, 0.475, 0.501, -0.475, 0.501, Electrical.blockMachinePart); + RenderUtility.renderCube(-0.501, -0.501, 0.475, 0.501, -0.475, 0.501, Archaic.blockMachinePart); } } diff --git a/src/main/java/resonantinduction/mechanical/gear/PartGear.java b/src/main/java/resonantinduction/mechanical/gear/PartGear.java index c1136e8d..173bde79 100644 --- a/src/main/java/resonantinduction/mechanical/gear/PartGear.java +++ b/src/main/java/resonantinduction/mechanical/gear/PartGear.java @@ -38,7 +38,7 @@ public class PartGear extends PartMechanical implements IMechanical manualCrankTime--; } - angularVelocity *= 0.9f; + angularVelocity *= 0.95f; } super.update(); diff --git a/src/main/java/resonantinduction/mechanical/item/ItemPipeGauge.java b/src/main/java/resonantinduction/mechanical/item/ItemPipeGauge.java index 314a5a4c..c451a93c 100644 --- a/src/main/java/resonantinduction/mechanical/item/ItemPipeGauge.java +++ b/src/main/java/resonantinduction/mechanical/item/ItemPipeGauge.java @@ -19,11 +19,9 @@ import calclavia.lib.utility.FluidUtility; public class ItemPipeGauge extends ItemRI { - Icon pipeGuage; - public ItemPipeGauge() { - super("pipeGuage"); + super("pipeGauge"); this.setHasSubtypes(true); this.setMaxStackSize(1); diff --git a/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java b/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java index 33763651..410e409f 100644 --- a/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java +++ b/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java @@ -31,6 +31,7 @@ import universalelectricity.core.net.NetworkTickHandler; */ public class MechanicalNetwork extends Network implements IMechanicalNetwork, IUpdate { + public static final float ACCELERATION = 0.1f; /** The current rotation of the network */ private float rotation = 0; private long lastRotateTime; @@ -79,19 +80,18 @@ public class MechanicalNetwork extends Network if (adjacentMech != null) { float ratio = adjacentMech.getRatio() / mechanical.getRatio(); - float acceleration = 0.5f; long torque = mechanical.getTorque(); - if (Math.abs(torque - adjacentMech.getTorque() / ratio * acceleration) < Math.abs(adjacentMech.getTorque() / ratio)) + if (Math.abs(torque - adjacentMech.getTorque() / ratio * ACCELERATION) < Math.abs(adjacentMech.getTorque() / ratio)) { - mechanical.setTorque((long) (torque - (adjacentMech.getTorque() / ratio * acceleration))); + mechanical.setTorque((long) (torque - (adjacentMech.getTorque() / ratio * ACCELERATION))); } float velocity = mechanical.getAngularVelocity(); - if (Math.abs(velocity - adjacentMech.getAngularVelocity() * ratio * acceleration) < Math.abs(adjacentMech.getAngularVelocity() * ratio)) + if (Math.abs(velocity - adjacentMech.getAngularVelocity() * ratio * ACCELERATION) < Math.abs(adjacentMech.getAngularVelocity() * ratio)) { - mechanical.setAngularVelocity(velocity - (adjacentMech.getAngularVelocity() * ratio * acceleration)); + mechanical.setAngularVelocity(velocity - (adjacentMech.getAngularVelocity() * ratio * ACCELERATION)); } } } diff --git a/src/main/resources/assets/resonantinduction/languages/en_US.properties b/src/main/resources/assets/resonantinduction/languages/en_US.properties index 57312afc..c106c30c 100644 --- a/src/main/resources/assets/resonantinduction/languages/en_US.properties +++ b/src/main/resources/assets/resonantinduction/languages/en_US.properties @@ -79,7 +79,7 @@ tile.resonantinduction\:fluidPipe.16.name=White Wood Trough tile.resonantinduction\:tesla.name=Tesla Coil tile.resonantinduction\:levitator.name=Electromagnetic Levitator tile.resonantinduction\:battery.name=Battery -tile.resonantinduction\:machinePart.name=Machine Part +tile.resonantinduction\:material.name=Material tile.resonantinduction\:grindingWheel.name=Grinder Wheel tile.resonantinduction\:purifier.name=Purifier Rotor tile.resonantinduction\:filter.name=Filter diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/material_stone_edge b/src/main/resources/assets/resonantinduction/textures/blocks/material_stone_edge.png similarity index 100% rename from src/main/resources/assets/resonantinduction/textures/blocks/material_stone_edge rename to src/main/resources/assets/resonantinduction/textures/blocks/material_stone_edge.png