Fixed #144 - Armbot multiblock not placing
This commit is contained in:
parent
9d42e9e99d
commit
d3535903ab
2 changed files with 425 additions and 424 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 *************************************/
|
||||
|
|
Loading…
Reference in a new issue