Fixed #144 - Armbot multiblock not placing

This commit is contained in:
Calclavia 2014-01-23 21:35:30 +08:00
parent 9d42e9e99d
commit d3535903ab
2 changed files with 425 additions and 424 deletions

View file

@ -69,6 +69,7 @@ public class BlockArmbot extends BlockRI implements IBlockInfo
((TileArmbot) tileEntity).dropHeldObject();
CalclaviaLoader.blockMulti.destroyMultiBlockStructure((TileArmbot) tileEntity);
}
this.dropBlockAsItem_do(world, x, y, z, new ItemStack(this));
super.breakBlock(world, x, y, z, par5, par6);
}

View file

@ -11,33 +11,27 @@ import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IArmbot;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.tile.TileMachine;
import resonantinduction.electrical.Electrical;
import resonantinduction.electrical.armbot.task.TaskDrop;
import resonantinduction.electrical.armbot.task.TaskGOTO;
import resonantinduction.electrical.armbot.task.TaskGrabItem;
import resonantinduction.electrical.armbot.task.TaskReturn;
import resonantinduction.electrical.armbot.task.TaskRotateTo;
import resonantinduction.electrical.encoder.ItemDisk;
import resonantinduction.electrical.encoder.coding.IProgram;
import resonantinduction.electrical.encoder.coding.ProgramHelper;
import universalelectricity.api.energy.EnergyStorageHandler;
import universalelectricity.api.vector.Vector2;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.multiblock.fake.IBlockActivate;
import calclavia.lib.multiblock.fake.IMultiBlock;
import calclavia.lib.network.IPacketReceiverWithID;
import calclavia.lib.network.PacketHandler;
import calclavia.lib.utility.LanguageUtility;
import calclavia.lib.prefab.tile.TileElectrical;
import calclavia.lib.utility.MathUtility;
import calclavia.lib.utility.WorldUtility;
import com.builtbroken.common.Pair;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.Player;
import cpw.mods.fml.relauncher.Side;
public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
public class TileArmbot extends TileElectrical implements IMultiBlock, IArmbot, IPacketReceiverWithID
{
protected int ROTATION_SPEED = 6;
@ -58,12 +52,17 @@ public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
/** Var used by the armbot renderer */
public EntityItem renderEntityItem;
/**
* Used client side only for render.
*/
private boolean functioning;
public static final int ARMBOT_PACKET_ID = 3;
public static final int ROTATION_PACKET_ID = 4;
public TileArmbot()
{
this.joulesPerTick = 20;
energy = new EnergyStorageHandler(5000, 1000);
programHelper = new ProgramHelper(this).setMemoryLimit(20);
Program program = new Program();
program.setTaskAt(0, 0, new TaskDrop());
@ -104,7 +103,7 @@ public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
}
}
if (this.isFunctioning())
if (energy.checkExtract())
{
float preYaw = this.targetYaw, prePitch = this.targetPitch;
if (!this.worldObj.isRemote && this.ticks % 5 == 0)
@ -116,6 +115,7 @@ public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
}
}
this.updateRotation();
energy.extractEnergy();
}
}
@ -264,7 +264,7 @@ public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
@Override
public Packet getDescriptionPacket()
{
return ResonantInduction.PACKET_TILE.getPacket(this, "armbot", this.functioning, this.targetYaw, this.targetPitch, this.actualYaw, this.actualPitch);
return ResonantInduction.PACKET_TILE.getPacket(this, "armbot", energy.checkExtract(), this.targetYaw, this.targetPitch, this.actualYaw, this.actualPitch);
}
public void sendGrabItemToClient()
@ -284,7 +284,7 @@ public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
{
try
{
if (this.worldObj.isRemote && !super.onReceivePacket(id, data, player, extra))
if (this.worldObj.isRemote)
{
if (id == ARMBOT_PACKET_ID)
{
@ -320,7 +320,7 @@ public class TileArmbot extends TileMachine implements IMultiBlock, IArmbot
@Override
public Vector3[] getMultiBlockVectors()
{
return new Vector3[] { new Vector3(this).translate(0, 1, 0) };
return new Vector3[] { new Vector3(0, 1, 0) };
}
/************************************ Armbot API methods *************************************/