diff --git a/src/main/java/resonantinduction/electrical/generator/BlockGenerator.java b/src/main/java/resonantinduction/electrical/generator/BlockGenerator.java index 33ceb8c1..1fc0fa02 100644 --- a/src/main/java/resonantinduction/electrical/generator/BlockGenerator.java +++ b/src/main/java/resonantinduction/electrical/generator/BlockGenerator.java @@ -19,7 +19,7 @@ public class BlockGenerator extends BlockRIRotatable } @Override - public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) + public boolean onSneakMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); @@ -33,6 +33,7 @@ public class BlockGenerator extends BlockRIRotatable return true; } + return false; } diff --git a/src/main/java/resonantinduction/electrical/generator/TileGenerator.java b/src/main/java/resonantinduction/electrical/generator/TileGenerator.java index e5971253..570e1efe 100644 --- a/src/main/java/resonantinduction/electrical/generator/TileGenerator.java +++ b/src/main/java/resonantinduction/electrical/generator/TileGenerator.java @@ -11,125 +11,132 @@ import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.tile.IRotatable; import calclavia.lib.prefab.tile.TileElectrical; -/** A kinetic energy to electrical energy converter. +/** + * A kinetic energy to electrical energy converter. * - * @author Calclavia */ + * @author Calclavia + */ public class TileGenerator extends TileElectrical implements IMechanical, IRotatable { - /** Generator turns KE -> EE. Inverted one will turn EE -> KE. */ - public boolean isInversed = false; + /** Generator turns KE -> EE. Inverted one will turn EE -> KE. */ + public boolean isInversed = false; - private float torqueRatio = 8000; + private float torqueRatio = 8000; - public TileGenerator() - { - energy = new EnergyStorageHandler(10000); - this.ioMap = 728; - } + public TileGenerator() + { + energy = new EnergyStorageHandler(10000); + this.ioMap = 728; + } - public float toggleRatio() - { - return torqueRatio = (torqueRatio + 1000) % energy.getMaxExtract(); - } + public float toggleRatio() + { + return torqueRatio = (torqueRatio + 1000) % energy.getMaxExtract(); + } - @Override - public void updateEntity() - { - if (this.isFunctioning()) - { - if (!isInversed) - { - this.produce(); - } - else - { - Vector3 outputVector = new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite()); - TileEntity mechanical = outputVector.getTileEntity(worldObj); + @Override + public void updateEntity() + { + if (this.isFunctioning()) + { + if (!isInversed) + { + produce(); + } + else + { + produceMechanical(new Vector3(this).modifyPositionFromSide(this.getDirection())); + produceMechanical(new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite())); + } + } + } - if (mechanical instanceof IMechanical) - { - long extract = energy.extractEnergy(); + public void produceMechanical(Vector3 outputVector) + { + TileEntity mechanical = outputVector.getTileEntity(worldObj); - if (extract > 0) - { - float angularVelocity = extract / torqueRatio; - long torque = (long) (extract / angularVelocity); - ((IMechanical) mechanical).onReceiveEnergy(this.getDirection().getOpposite(), torque, angularVelocity, true); - } - } - } - } - } + if (mechanical instanceof IMechanical) + { + long extract = energy.extractEnergy(); + + if (extract > 0) + { + float angularVelocity = extract / torqueRatio; + long torque = (long) (extract / angularVelocity); + ((IMechanical) mechanical).onReceiveEnergy(this.getDirection().getOpposite(), torque, angularVelocity, true); + } + } + } - @Override - public EnumSet getInputDirections() - { - return this.getOutputDirections(); - } + @Override + public EnumSet getInputDirections() + { + return this.getOutputDirections(); + } - @Override - public EnumSet getOutputDirections() - { - EnumSet dirs = EnumSet.allOf(ForgeDirection.class); - dirs.remove(this.getDirection()); - dirs.remove(this.getDirection().ordinal()); - return dirs; - } + @Override + public EnumSet getOutputDirections() + { + EnumSet dirs = EnumSet.allOf(ForgeDirection.class); + dirs.remove(this.getDirection()); + dirs.remove(this.getDirection().ordinal()); + return dirs; + } - @Override - public ForgeDirection getDirection() - { - return ForgeDirection.getOrientation(this.getBlockMetadata()); - } + @Override + public ForgeDirection getDirection() + { + return ForgeDirection.getOrientation(this.getBlockMetadata()); + } - @Override - public void setDirection(ForgeDirection dir) - { - this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, dir.ordinal(), 3); + @Override + public void setDirection(ForgeDirection dir) + { + this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, dir.ordinal(), 3); - } + } - private boolean isFunctioning() - { - return true; - } + private boolean isFunctioning() + { + return true; + } - @Override - public long onReceiveEnergy(ForgeDirection from, long torque, float angularVelocity, boolean doReceive) - { - if (!this.isInversed) - { - return energy.receiveEnergy((long) (torque * angularVelocity), doReceive); - } - return 0; - } + @Override + public long onReceiveEnergy(ForgeDirection from, long torque, float angularVelocity, boolean doReceive) + { + if (!this.isInversed) + { + return energy.receiveEnergy((long) (torque * angularVelocity), doReceive); + } + return 0; + } - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - isInversed = nbt.getBoolean("isInversed"); - torqueRatio = nbt.getFloat("torqueRatio"); - } + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + isInversed = nbt.getBoolean("isInversed"); + torqueRatio = nbt.getFloat("torqueRatio"); + } - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - nbt.setBoolean("isInversed", isInversed); - nbt.setFloat("torqueRatio", torqueRatio); - } + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setBoolean("isInversed", isInversed); + nbt.setFloat("torqueRatio", torqueRatio); + } - @Override - public boolean isClockwise() - { - return false; - } + @Override + public boolean isClockwise() + { + return false; + } - @Override - public void setRotation(boolean isClockwise) - { + @Override + public void setClockwise(boolean isClockwise) + { - } + } } diff --git a/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java b/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java index 854b4c9c..b73ebf12 100644 --- a/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java +++ b/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java @@ -2,6 +2,7 @@ package resonantinduction.mechanical.fluid.pipe; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; @@ -199,4 +200,18 @@ public class PartPipe extends PartFramedConnection 0) { - onReceiveEnergy(null, 20, 0.3f, true); + onReceiveEnergy(null, 20, 0.2f, true); manualCrankTime--; } } + + super.update(); } @Override diff --git a/src/main/java/resonantinduction/mechanical/network/IMechanical.java b/src/main/java/resonantinduction/mechanical/network/IMechanical.java index 3a0aea26..ef27400f 100644 --- a/src/main/java/resonantinduction/mechanical/network/IMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/IMechanical.java @@ -18,5 +18,5 @@ public interface IMechanical extends IConnectable public boolean isClockwise(); - public void setRotation(boolean isClockwise); + public void setClockwise(boolean isClockwise); } diff --git a/src/main/java/resonantinduction/mechanical/network/PartMechanical.java b/src/main/java/resonantinduction/mechanical/network/PartMechanical.java index 1a7b8ee9..556be685 100644 --- a/src/main/java/resonantinduction/mechanical/network/PartMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/PartMechanical.java @@ -365,7 +365,7 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu } @Override - public void setRotation(boolean isClockwise) + public void setClockwise(boolean isClockwise) { this.isClockwise = isClockwise; } diff --git a/src/main/java/resonantinduction/mechanical/network/TileMechanical.java b/src/main/java/resonantinduction/mechanical/network/TileMechanical.java index 41e2c141..6d6730ef 100644 --- a/src/main/java/resonantinduction/mechanical/network/TileMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/TileMechanical.java @@ -66,7 +66,7 @@ public class TileMechanical extends TileAdvanced implements IMechanicalConnector } @Override - public void setRotation(boolean isClockwise) + public void setClockwise(boolean isClockwise) { this.isClockwise = isClockwise; } diff --git a/src/main/java/resonantinduction/mechanical/process/RenderGrinderWheel.java b/src/main/java/resonantinduction/mechanical/process/RenderGrinderWheel.java index a2e7b249..ddadbfe7 100644 --- a/src/main/java/resonantinduction/mechanical/process/RenderGrinderWheel.java +++ b/src/main/java/resonantinduction/mechanical/process/RenderGrinderWheel.java @@ -33,8 +33,17 @@ public class RenderGrinderWheel extends TileEntitySpecialRenderer TileGrinderWheel tile = (TileGrinderWheel) t; glPushMatrix(); glTranslatef((float) x + 0.5F, (float) y + 0.5f, (float) z + 0.5F); - glScalef(0.5f, 0.5f, 0.515f); - glRotatef((float) Math.toDegrees(tile.getNetwork().getRotation()), 0, 0, 1); + glScalef(0.51f, 0.51f, 0.51f); + + if (tile.getDirection().ordinal() < 2) + glRotatef(90, 1, 0, 0); + else if (tile.getDirection().ordinal() == 2 || tile.getDirection().ordinal() == 3) + glRotatef(90, 0, 1, 0); + else if (tile.getDirection().ordinal() == 4 || tile.getDirection().ordinal() == 5) + glRotatef(180, 0, 1, 0); + + glRotatef((float) Math.toDegrees(tile.getNetwork().getRotation()) * (tile.isClockwise() ? 1 : -1), 0, 0, 1); + FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE); MODEL.renderAll(); glPopMatrix(); diff --git a/src/main/java/resonantinduction/mechanical/process/TileGrinderWheel.java b/src/main/java/resonantinduction/mechanical/process/TileGrinderWheel.java index 876d12e5..2e8b4dd5 100644 --- a/src/main/java/resonantinduction/mechanical/process/TileGrinderWheel.java +++ b/src/main/java/resonantinduction/mechanical/process/TileGrinderWheel.java @@ -2,9 +2,11 @@ package resonantinduction.mechanical.process; import java.util.HashMap; +import calclavia.lib.prefab.tile.IRotatable; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.ForgeDirection; import resonantinduction.api.recipe.MachineRecipes; import resonantinduction.api.recipe.MachineRecipes.RecipeType; import resonantinduction.api.recipe.RecipeUtils.ItemStackResource; @@ -20,7 +22,7 @@ import cpw.mods.fml.relauncher.Side; * @author Calclavia * */ -public class TileGrinderWheel extends TileMechanical +public class TileGrinderWheel extends TileMechanical implements IRotatable { public static final long POWER = 500000; public static final int DEFAULT_TIME = 20 * 20; @@ -157,4 +159,32 @@ public class TileGrinderWheel extends TileMechanical return clientTimer; } + + @Override + public boolean isClockwise() + { + if (worldObj != null) + { + return !(getBlockMetadata() % 2 == 0); + } + + return false; + } + + @Override + public ForgeDirection getDirection() + { + if (worldObj != null) + { + return ForgeDirection.getOrientation(getBlockMetadata()); + } + + return ForgeDirection.UNKNOWN; + } + + @Override + public void setDirection(ForgeDirection direction) + { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, direction.ordinal(), 3); + } } diff --git a/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java b/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java index 101ad32b..2aab1d38 100644 --- a/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java +++ b/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java @@ -89,7 +89,7 @@ public class TraitMechanical extends TileMultipart implements IMechanical } @Override - public void setRotation(boolean isClockwise) + public void setClockwise(boolean isClockwise) { } diff --git a/src/main/java/resonantinduction/mechanical/trait/TraitMechanicalConnector.java b/src/main/java/resonantinduction/mechanical/trait/TraitMechanicalConnector.java index e9f3af2d..a9e7068b 100644 --- a/src/main/java/resonantinduction/mechanical/trait/TraitMechanicalConnector.java +++ b/src/main/java/resonantinduction/mechanical/trait/TraitMechanicalConnector.java @@ -121,7 +121,7 @@ public class TraitMechanicalConnector extends TileMultipart implements IMechanic } @Override - public void setRotation(boolean isClockwise) + public void setClockwise(boolean isClockwise) { }