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