Manipulator now works

This commit is contained in:
Calclavia 2014-01-18 15:43:47 +08:00
parent e6970bc083
commit 0f25136871
6 changed files with 30 additions and 76 deletions

View file

@ -8,8 +8,9 @@ import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IFilterable; import resonantinduction.api.IFilterable;
import resonantinduction.archaic.imprint.ItemBlockImprint; import resonantinduction.archaic.imprint.ItemBlockImprint;
import calclavia.lib.prefab.tile.IRotatable; import calclavia.lib.prefab.tile.IRotatable;
import calclavia.lib.prefab.tile.TileExternalInventory;
public abstract class TileEntityFilterable extends TileAssembly implements IRotatable, IFilterable public abstract class TileEntityFilterable extends TileExternalInventory implements IRotatable, IFilterable
{ {
private ItemStack filterItem; private ItemStack filterItem;
private boolean inverted; private boolean inverted;
@ -18,18 +19,12 @@ public abstract class TileEntityFilterable extends TileAssembly implements IRota
public TileEntityFilterable() public TileEntityFilterable()
{ {
super(0);
this.maxSlots = 2; this.maxSlots = 2;
} }
public TileEntityFilterable(long wattsPerTick, long maxEnergy) protected boolean isFunctioning()
{ {
super(wattsPerTick, maxEnergy); return true;
}
public TileEntityFilterable(long wattsPerTick)
{
super(wattsPerTick);
} }
/** /**

View file

@ -36,11 +36,13 @@ public class BlockManipulator extends BlockImprintable
TileEntity tileEntity = world.getBlockTileEntity(x, y, z); TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TileManipulator) if (tileEntity instanceof TileManipulator)
{
if (!world.isRemote)
{ {
((TileManipulator) tileEntity).setSelfPulse(!((TileManipulator) tileEntity).isSelfPulse()); ((TileManipulator) tileEntity).setSelfPulse(!((TileManipulator) tileEntity).isSelfPulse());
entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText("Manip. set to " + (((TileManipulator) tileEntity).isSelfPulse() ? "auto pulse" : "not pulse"))); entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText("Manip. set to " + (((TileManipulator) tileEntity).isSelfPulse() ? "auto pulse" : "not pulse")));
} }
}
return true; return true;
} }
@ -72,8 +74,10 @@ public class BlockManipulator extends BlockImprintable
manip.toggleOutput(); manip.toggleOutput();
manip.toggleInversion(); manip.toggleInversion();
} }
if (!world.isRemote)
{
entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText("Manip. outputing = " + manip.isOutput())); entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText("Manip. outputing = " + manip.isOutput()));
}
} }
return true; return true;

View file

@ -22,11 +22,6 @@ public class TileDetector extends TileEntityFilterable implements IPacketReceive
{ {
private boolean powering = false; private boolean powering = false;
public TileDetector()
{
super(100);
}
@Override @Override
public void updateEntity() public void updateEntity()
{ {
@ -109,13 +104,12 @@ public class TileDetector extends TileEntityFilterable implements IPacketReceive
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
return ResonantInduction.PACKET_TILE.getPacket(this, this.functioning, this.isInverted()); return ResonantInduction.PACKET_TILE.getPacket(this, this.isInverted());
} }
@Override @Override
public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra)
{ {
this.functioning = data.readBoolean();
this.setInverted(data.readBoolean()); this.setInverted(data.readBoolean());
} }
@ -128,11 +122,4 @@ public class TileDetector extends TileEntityFilterable implements IPacketReceive
{ {
return this.isPoweringTo(side) > 0; return this.isPoweringTo(side) > 0;
} }
@Override
public boolean canConnect(ForgeDirection direction)
{
return direction != this.getDirection();
}
} }

View file

@ -31,11 +31,6 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
/** The class that interacts with inventories for this machine */ /** The class that interacts with inventories for this machine */
private InternalInventoryHandler invExtractionHelper; private InternalInventoryHandler invExtractionHelper;
public TileManipulator()
{
super(10);
}
@Override @Override
public void updateEntity() public void updateEntity()
{ {
@ -83,7 +78,6 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
/** output location facing */ /** output location facing */
Vector3 outputPosition = new Vector3(this); Vector3 outputPosition = new Vector3(this);
outputPosition.modifyPositionFromSide(this.getDirection().getOpposite()); outputPosition.modifyPositionFromSide(this.getDirection().getOpposite());
this.consumePower(1, true);
/** Prevents manipulators from spamming and duping items. */ /** Prevents manipulators from spamming and duping items. */
if (outputPosition.getTileEntity(this.worldObj) instanceof TileManipulator) if (outputPosition.getTileEntity(this.worldObj) instanceof TileManipulator)
@ -146,8 +140,6 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
/** output location facing */ /** output location facing */
Vector3 outputPosition = new Vector3(this).modifyPositionFromSide(this.getDirection()); Vector3 outputPosition = new Vector3(this).modifyPositionFromSide(this.getDirection());
this.consumePower(1, true);
ItemStack itemStack = invHelper().tryGrabFromPosition(inputUp, ForgeDirection.UP, 1); ItemStack itemStack = invHelper().tryGrabFromPosition(inputUp, ForgeDirection.UP, 1);
if (itemStack == null) if (itemStack == null)
@ -189,7 +181,7 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
return ResonantInduction.PACKET_TILE.getPacket(this, this.functioning, this.isInverted(), this.isSelfPulse(), this.isOutput()); return ResonantInduction.PACKET_TILE.getPacket(this, this.isInverted(), this.isSelfPulse(), this.isOutput());
} }
@Override @Override
@ -197,7 +189,6 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
{ {
try try
{ {
this.functioning = data.readBoolean();
this.setInverted(data.readBoolean()); this.setInverted(data.readBoolean());
this.setSelfPulse(data.readBoolean()); this.setSelfPulse(data.readBoolean());
this.setOutput(data.readBoolean()); this.setOutput(data.readBoolean());
@ -208,12 +199,6 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
} }
} }
@Override
public boolean canConnect(ForgeDirection dir)
{
return dir != this.getDirection();
}
public boolean isSelfPulse() public boolean isSelfPulse()
{ {
return selfPulse; return selfPulse;
@ -264,10 +249,4 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
{ {
this.setOutput(!this.isOutput()); this.setOutput(!this.isOutput());
} }
@Override
public int getExtraLoad()
{
return 1;
}
} }

View file

@ -4,6 +4,7 @@ import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -13,23 +14,18 @@ import resonantinduction.api.IBelt;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.tile.TileEntityFilterable; import resonantinduction.core.prefab.tile.TileEntityFilterable;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import calclavia.lib.network.IPacketReceiverWithID;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.network.Player; import cpw.mods.fml.common.network.Player;
/** @author Darkguardsman */ /** @author Darkguardsman */
public class TileRejector extends TileEntityFilterable public class TileRejector extends TileEntityFilterable implements IPacketReceiverWithID
{ {
/** should the piston fire, or be extended */ /** should the piston fire, or be extended */
public boolean firePiston = false; public boolean firePiston = false;
public TileRejector()
{
super(100);
}
@Override @Override
public void updateEntity() public void updateEntity()
{ {
@ -75,10 +71,9 @@ public class TileRejector extends TileEntityFilterable
{ {
this.firePiston = true; this.firePiston = true;
// TODO add config to adjust the motion magnitude per rejector // TODO add config to adjust the motion magnitude per rejector
entity.motionX = side.offsetX * 0.1; entity.posX += side.offsetX;
entity.motionY += 0.10000000298023224D; // entity.motionY += 0.10000000298023224D;
entity.motionZ = side.offsetZ * 0.1; entity.posZ += side.offsetZ;
this.consumePower(1, true);
if (!this.worldObj.isRemote && tileEntity instanceof IBelt) if (!this.worldObj.isRemote && tileEntity instanceof IBelt)
{ {
@ -101,30 +96,23 @@ public class TileRejector extends TileEntityFilterable
return false; return false;
} }
@Override
public boolean canConnect(ForgeDirection dir)
{
return dir != this.getDirection();
}
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
return ResonantInduction.PACKET_TILE.getPacket(this, this.functioning, this.isInverted(), this.firePiston); return ResonantInduction.PACKET_TILE.getPacket(this, 0, this.isInverted(), this.firePiston);
} }
@Override @Override
public boolean simplePacket(String id, ByteArrayDataInput dis, Player player) public boolean onReceivePacket(int id, ByteArrayDataInput data, EntityPlayer player, Object... extra)
{ {
try try
{ {
if (this.worldObj.isRemote && !super.simplePacket(id, dis, player)) if (this.worldObj.isRemote)
{ {
if (id.equalsIgnoreCase("rejector")) if (id == 0)
{ {
this.functioning = dis.readBoolean(); this.setInverted(data.readBoolean());
this.setInverted(dis.readBoolean()); this.firePiston = data.readBoolean();
this.firePiston = dis.readBoolean();
return true; return true;
} }
} }
@ -133,6 +121,7 @@ public class TileRejector extends TileEntityFilterable
{ {
e.printStackTrace(); e.printStackTrace();
} }
return false; return false;
} }

View file

@ -11,7 +11,7 @@ import universalelectricity.api.net.IConnector;
public interface IMechanicalConnector extends IMechanical, IConnector<IMechanicalNetwork> public interface IMechanicalConnector extends IMechanical, IConnector<IMechanicalNetwork>
{ {
/** /**
* Uses this connector to send a packet to the client. * Uses this connector to send a packet to the client for the network.
* *
* @return True if the packet was successfully sent. * @return True if the packet was successfully sent.
*/ */