Fixed grinding wheel roatations

This commit is contained in:
Calclavia 2014-01-19 20:11:29 +08:00
parent 0fd99fa04e
commit 06a9c10788
11 changed files with 173 additions and 132 deletions

View file

@ -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;
}

View file

@ -11,9 +11,11 @@ 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. */
@ -39,11 +41,18 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
{
if (!isInversed)
{
this.produce();
produce();
}
else
{
Vector3 outputVector = new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite());
produceMechanical(new Vector3(this).modifyPositionFromSide(this.getDirection()));
produceMechanical(new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite()));
}
}
}
public void produceMechanical(Vector3 outputVector)
{
TileEntity mechanical = outputVector.getTileEntity(worldObj);
if (mechanical instanceof IMechanical)
@ -58,8 +67,6 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
}
}
}
}
}
@Override
public EnumSet<ForgeDirection> getInputDirections()
@ -127,7 +134,7 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
}
@Override
public void setRotation(boolean isClockwise)
public void setClockwise(boolean isClockwise)
{
}

View file

@ -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<EnumPipeMaterial, IFluidPipe,
return FluidContainerRegistry.BUCKET_VOLUME;
}
@Override
public void save(NBTTagCompound nbt)
{
super.save(nbt);
nbt.setBoolean("isExtracting", isInsulated);
}
@Override
public void load(NBTTagCompound nbt)
{
super.load(nbt);
isExtracting= nbt.getBoolean("isExtracting");
}
}

View file

@ -1,32 +1,11 @@
package resonantinduction.mechanical.gear;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
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;
import resonantinduction.mechanical.Mechanical;
import resonantinduction.mechanical.network.IMechanical;
import resonantinduction.mechanical.network.IMechanicalConnector;
import resonantinduction.mechanical.network.IMechanicalNetwork;
import resonantinduction.mechanical.network.MechanicalNetwork;
import resonantinduction.mechanical.network.PartMechanical;
import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Rotation;
import codechicken.lib.vec.Transformation;
import codechicken.lib.vec.Vector3;
import codechicken.microblock.FaceMicroClass;
import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.TFacePart;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -43,16 +22,16 @@ public class PartGear extends PartMechanical
@Override
public void update()
{
super.update();
if (!this.world().isRemote)
{
if (manualCrankTime > 0)
{
onReceiveEnergy(null, 20, 0.3f, true);
onReceiveEnergy(null, 20, 0.2f, true);
manualCrankTime--;
}
}
super.update();
}
@Override

View file

@ -18,5 +18,5 @@ public interface IMechanical extends IConnectable
public boolean isClockwise();
public void setRotation(boolean isClockwise);
public void setClockwise(boolean isClockwise);
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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();

View file

@ -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);
}
}

View file

@ -89,7 +89,7 @@ public class TraitMechanical extends TileMultipart implements IMechanical
}
@Override
public void setRotation(boolean isClockwise)
public void setClockwise(boolean isClockwise)
{
}

View file

@ -121,7 +121,7 @@ public class TraitMechanicalConnector extends TileMultipart implements IMechanic
}
@Override
public void setRotation(boolean isClockwise)
public void setClockwise(boolean isClockwise)
{
}