Made Belts Stoppable via Redstone

This commit is contained in:
Henry Mao 2013-01-30 19:03:16 +08:00
parent d18cbe854a
commit 45f6a4fde4
6 changed files with 59 additions and 44 deletions

View file

@ -1 +1 @@
68
69

View file

@ -61,3 +61,4 @@ x AssemblyLine_v0.2.4.64.jar AssemblyLine_v0.2.4.64_api.zip
@ AssemblyLine_v0.2.4.66.jar AssemblyLine_v0.2.4.66_api.zip
@ AssemblyLine_v0.2.4.67.jar AssemblyLine_v0.2.4.67_api.zip
* AssemblyLine_v0.2.4.68.jar AssemblyLine_v0.2.4.68_api.zip
@ AssemblyLine_v0.2.5.69.jar AssemblyLine_v0.2.5.69_api.zip

View file

@ -19,8 +19,8 @@ import assemblyline.common.machine.armbot.TileEntityArmbot;
public class RenderArmbot extends TileEntitySpecialRenderer
{
public static final ModelArmbot MODEL = new ModelArmbot();
public static final String TEXTURE = "armbot.png";
public static final ModelArmbot MODEL = new ModelArmbot();
public static final String TEXTURE = "armbot.png";
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)
@ -46,24 +46,26 @@ public class RenderArmbot extends TileEntitySpecialRenderer
GL11.glPushMatrix();
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
GL11.glScalef(1.0F, -1F, -1F);
MODEL.render(0.0625f, ((TileEntityArmbot) tileEntity).renderYaw, ((TileEntityArmbot) tileEntity).renderPitch);
//debug render
/*GL11.glEnable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1f, 1f, 1f, 0.25f);
MODEL.render(0.0625f, ((TileEntityArmbot) tileEntity).rotationYaw, ((TileEntityArmbot) tileEntity).rotationPitch);
GL11.glColor4f(1f, 1f, 1f, 1f);*/
// debug render
/*
* GL11.glEnable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_ALPHA_TEST);
* GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(1f,
* 1f, 1f, 0.25f); MODEL.render(0.0625f, ((TileEntityArmbot) tileEntity).rotationYaw,
* ((TileEntityArmbot) tileEntity).rotationPitch); GL11.glColor4f(1f, 1f, 1f, 1f);
*/
Vector3 handPos = ((TileEntityArmbot) tileEntity).getHandPosition();
handPos.subtract(new Vector3(tileEntity));
GL11.glPushMatrix();
GL11.glRotatef(180, 0, 0, 1);
for (Entity entity : ((TileEntityArmbot) tileEntity).grabbedEntities)
{
if (entity != null && entity instanceof EntityItem) // items don't move right, so we render them manually
if (entity != null && entity instanceof EntityItem) // items don't move right, so we
// render them manually
{
EntityItem item = (EntityItem) entity;
item.age = 0;

View file

@ -241,7 +241,7 @@ public class BlockConveyorBelt extends BlockMachine
TileEntityConveyorBelt tileEntity = (TileEntityConveyorBelt) world.getBlockTileEntity(x, y, z);
tileEntity.updatePowerTransferRange();
if (tileEntity.isRunning())
if (tileEntity.isRunning() && !world.isBlockIndirectlyGettingPowered(x, y, z))
{
float acceleration = tileEntity.acceleration;
float maxSpeed = tileEntity.maxSpeed;

View file

@ -117,9 +117,9 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
if (this.isRunning())
if (this.isRunning() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord))
{
if (this.ticks % 10 == 0 && this.worldObj.isRemote && this.worldObj.getBlockId(xCoord - 1, yCoord, zCoord) != AssemblyLine.blockConveyorBelt.blockID && this.worldObj.getBlockId(xCoord, yCoord, zCoord - 1) != AssemblyLine.blockConveyorBelt.blockID)
if (this.ticks % 10 == 0 && this.worldObj.isRemote && this.worldObj.getBlockId(this.xCoord - 1, this.yCoord, this.zCoord) != AssemblyLine.blockConveyorBelt.blockID && this.worldObj.getBlockId(xCoord, yCoord, zCoord - 1) != AssemblyLine.blockConveyorBelt.blockID)
{
this.worldObj.playSound(this.xCoord, this.yCoord, this.zCoord, "assemblyline.conveyor", 0.5f, 0.7f, true);
}
@ -278,31 +278,34 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
public int getAnimationFrame()
{
TileEntity te = null;
te = this.worldObj.getBlockTileEntity(this.xCoord - 1, this.yCoord, this.zCoord);
if (te != null)
if (!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord))
{
if (te instanceof TileEntityConveyorBelt)
TileEntity te = null;
te = this.worldObj.getBlockTileEntity(this.xCoord - 1, this.yCoord, this.zCoord);
if (te != null)
{
if (((TileEntityConveyorBelt) te).getSlant() == this.slantType)
return ((TileEntityConveyorBelt) te).getAnimationFrame();
if (te instanceof TileEntityConveyorBelt)
{
if (((TileEntityConveyorBelt) te).getSlant() == this.slantType)
return ((TileEntityConveyorBelt) te).getAnimationFrame();
}
}
}
te = this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord - 1);
te = this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord - 1);
if (te != null)
{
if (te instanceof TileEntityConveyorBelt)
if (te != null)
{
if (((TileEntityConveyorBelt) te).getSlant() == this.slantType)
return ((TileEntityConveyorBelt) te).getAnimationFrame();
if (te instanceof TileEntityConveyorBelt)
{
if (((TileEntityConveyorBelt) te).getSlant() == this.slantType)
return ((TileEntityConveyorBelt) te).getAnimationFrame();
}
}
}
return this.animFrame;
}

View file

@ -5,6 +5,7 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.IPlantable;
import universalelectricity.core.vector.Vector3;
@ -44,19 +45,27 @@ public class CommandPlace extends Command
else if (itemStack.getItem() instanceof IPlantable)
{
IPlantable plantable = ((IPlantable) itemStack.getItem());
int blockID = plantable.getPlantID(this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ());
int blockMetadata = plantable.getPlantMetadata(this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ());
Block blockBelow = Block.blocksList[Vector3.add(serachPosition, new Vector3(0, -1, 0)).getBlockID(this.world)];
if (!world.setBlockAndMetadataWithNotify(serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockID, blockMetadata)) { return false; }
if (world.getBlockId(serachPosition.intX(), serachPosition.intY(), serachPosition.intZ()) == blockID)
if (blockBelow != null)
{
Block.blocksList[blockID].onBlockPlacedBy(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), null);
Block.blocksList[blockID].onPostBlockPlaced(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockMetadata);
}
if (blockBelow.canSustainPlant(this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), ForgeDirection.UP, plantable))
{
int blockID = plantable.getPlantID(this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ());
int blockMetadata = plantable.getPlantMetadata(this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ());
this.tileEntity.grabbedEntities.remove(entity);
return false;
if (this.world.setBlockAndMetadataWithNotify(serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockID, blockMetadata))
{
if (this.world.getBlockId(serachPosition.intX(), serachPosition.intY(), serachPosition.intZ()) == blockID)
{
Block.blocksList[blockID].onBlockPlacedBy(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), null);
Block.blocksList[blockID].onPostBlockPlaced(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockMetadata);
this.tileEntity.grabbedEntities.remove(entity);
return false;
}
}
}
}
}
}
}