Nothing much
just uploading to upload, also change multiBlock enum for the machine too include a Gui ID, the way you had it Calc was ok but wasteful.
This commit is contained in:
parent
c97a065429
commit
ea693be636
5 changed files with 258 additions and 126 deletions
|
@ -29,16 +29,18 @@ public class BlockMulti extends BlockMachine
|
|||
{
|
||||
public static enum MachineType
|
||||
{
|
||||
SORTER("Sorter", 0, TileEntitySorter.class), MANIPULATOR("Manipulator", 4, TileEntityManipulator.class), INVALID_1("Invalid", 8, null), INVALID_2("Invalid", 12, null);
|
||||
SORTER("Sorter", 0,0, TileEntitySorter.class), MANIPULATOR("Manipulator", 4,-1, TileEntityManipulator.class), INVALID_1("Invalid", 8,-1, null), INVALID_2("Invalid", 12,-1, null);
|
||||
|
||||
public String name;
|
||||
public int metadata;
|
||||
public int guiID;
|
||||
public Class<? extends TileEntity> tileEntity;
|
||||
|
||||
MachineType(String name, int metadata, Class<? extends TileEntity> tileEntity)
|
||||
MachineType(String name, int metadata,int guiID, Class<? extends TileEntity> tileEntity)
|
||||
{
|
||||
this.name = name;
|
||||
this.metadata = metadata;
|
||||
this.guiID = guiID;
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
|
||||
|
@ -116,7 +118,9 @@ public class BlockMulti extends BlockMachine
|
|||
if (!par1World.isRemote)
|
||||
{
|
||||
int metadata = par1World.getBlockMetadata(x, y, z);
|
||||
par5EntityPlayer.openGui(AssemblyLine.instance, MachineType.get(metadata).metadata, par1World, x, y, z);
|
||||
int guiID = MachineType.get(metadata).metadata;
|
||||
if(guiID == -1) return false;
|
||||
par5EntityPlayer.openGui(AssemblyLine.instance,guiID , par1World, x, y, z);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
|
@ -254,4 +258,5 @@ public class BlockMulti extends BlockMachine
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,7 +30,10 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
/**
|
||||
* Used to id the packet types
|
||||
*/
|
||||
private enum tPacketID{ANIMATION,GUI,SETTINGON}
|
||||
private enum tPacketID {
|
||||
ANIMATION, GUI, SETTINGON
|
||||
}
|
||||
|
||||
/**
|
||||
* Joules required per tick.
|
||||
*/
|
||||
|
@ -52,8 +55,6 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
*/
|
||||
public TileEntityConveyorBelt beltSide = null;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
|
@ -64,8 +65,12 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
this.firePiston = false;
|
||||
|
||||
// area to search for items
|
||||
ForgeDirection searchPosition = Vector3.getOrientationFromSide(ForgeDirection.getOrientation(getDirection(meta)), ForgeDirection.SOUTH);
|
||||
TileEntity tileEntity = worldObj.getBlockTileEntity(xCoord+ searchPosition.offsetX, yCoord + searchPosition.offsetY, zCoord + searchPosition.offsetZ);
|
||||
ForgeDirection searchPosition = Vector3.getOrientationFromSide(
|
||||
ForgeDirection.getOrientation(getDirection(meta)),
|
||||
ForgeDirection.SOUTH);
|
||||
TileEntity tileEntity = worldObj.getBlockTileEntity(xCoord
|
||||
+ searchPosition.offsetX, yCoord + searchPosition.offsetY,
|
||||
zCoord + searchPosition.offsetZ);
|
||||
|
||||
// find the belt in that search area
|
||||
if (tileEntity instanceof TileEntityConveyorBelt) {
|
||||
|
@ -74,45 +79,50 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
this.beltSide = null;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
// search area bound box
|
||||
AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(
|
||||
xCoord + searchPosition.offsetX,
|
||||
yCoord + searchPosition.offsetY,
|
||||
zCoord + searchPosition.offsetZ,
|
||||
xCoord + searchPosition.offsetX + 1,
|
||||
yCoord + searchPosition.offsetY + 1,
|
||||
zCoord + searchPosition.offsetZ + 1);
|
||||
AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(xCoord
|
||||
+ searchPosition.offsetX, yCoord
|
||||
+ searchPosition.offsetY, zCoord
|
||||
+ searchPosition.offsetZ, xCoord
|
||||
+ searchPosition.offsetX + 1, yCoord
|
||||
+ searchPosition.offsetY + 1, zCoord
|
||||
+ searchPosition.offsetZ + 1);
|
||||
// EntityItem list
|
||||
List<EntityItem> itemsBehind = worldObj.getEntitiesWithinAABB(EntityItem.class, bounds);
|
||||
List<EntityItem> itemsBehind = worldObj.getEntitiesWithinAABB(
|
||||
EntityItem.class, bounds);
|
||||
|
||||
boolean flag = false;
|
||||
|
||||
if (itemsBehind.size() > 0 && this.wattsReceived > this.WATTS_REQUIRED) {
|
||||
//for every item found check if can be thrown then throw item off belt if it can
|
||||
if (itemsBehind.size() > 0
|
||||
&& this.wattsReceived > this.WATTS_REQUIRED) {
|
||||
// for every item found check if can be thrown then throw
|
||||
// item off belt if it can
|
||||
for (EntityItem entity : itemsBehind) {
|
||||
if (this.canItemBeThrow(entity))
|
||||
{
|
||||
if (this.canItemBeThrow(entity)) {
|
||||
this.throwItem(searchPosition, entity);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//send packet with animation data if an item was rejected from the area
|
||||
if(!worldObj.isRemote && flag)
|
||||
{
|
||||
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.data(tPacketID.ANIMATION));
|
||||
PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 30);
|
||||
// send packet with animation data if an item was rejected from
|
||||
// the area
|
||||
if (!worldObj.isRemote && flag) {
|
||||
Packet packet = PacketManager.getPacket(
|
||||
AssemblyLine.CHANNEL, this,
|
||||
this.data(tPacketID.ANIMATION));
|
||||
PacketManager.sendPacketToClients(packet, worldObj,
|
||||
Vector3.get(this), 30);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(!worldObj.isRemote && this.playerUsing > 0)
|
||||
{
|
||||
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL,this, this.data(tPacketID.GUI));
|
||||
PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 10);
|
||||
if (!worldObj.isRemote && this.playerUsing > 0) {
|
||||
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL,
|
||||
this, this.data(tPacketID.GUI));
|
||||
PacketManager.sendPacketToClients(packet, worldObj,
|
||||
Vector3.get(this), 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +159,9 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
// reject matching items
|
||||
for (int i = 0; i < this.containingItems.length; i++) {
|
||||
if (containingItems[i] != null && onOff[i]) {
|
||||
if (containingItems[i].itemID == item.itemID && containingItems[i].getItemDamage() == item.getItemDamage()) {
|
||||
if (containingItems[i].itemID == item.itemID
|
||||
&& containingItems[i].getItemDamage() == item
|
||||
.getItemDamage()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -160,7 +172,9 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
// reject all but matching items
|
||||
for (int i = 0; i < this.containingItems.length; i++) {
|
||||
if (containingItems[i] != null && onOff[i]) {
|
||||
if (containingItems[i].itemID == item.itemID && containingItems[i].getItemDamage() == item.getItemDamage()) {
|
||||
if (containingItems[i].itemID == item.itemID
|
||||
&& containingItems[i].getItemDamage() == item
|
||||
.getItemDamage()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -191,7 +205,6 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Used to change any one of the boolean value of on/off array After
|
||||
* changing the value if it was changed client side it will send a packet
|
||||
|
@ -234,18 +247,14 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
}
|
||||
}
|
||||
|
||||
public Object[] data(tPacketID id)
|
||||
{
|
||||
if(id == tPacketID.ANIMATION)
|
||||
{
|
||||
public Object[] data(tPacketID id) {
|
||||
if (id == tPacketID.ANIMATION) {
|
||||
return new Object[] { id.ordinal(), this.firePiston };
|
||||
}
|
||||
if(id == tPacketID.GUI)
|
||||
{
|
||||
if (id == tPacketID.GUI) {
|
||||
Object[] da = new Object[this.onOff.length];
|
||||
da[0] = id.ordinal();
|
||||
for(int i =0; i < this.onOff.length; i++)
|
||||
{
|
||||
for (int i = 0; i < this.onOff.length; i++) {
|
||||
da[i + 1] = onOff[i];
|
||||
}
|
||||
return da;
|
||||
|
@ -261,25 +270,18 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
int id = dataStream.readInt();
|
||||
tPacketID pID = tPacketID.values()[id];
|
||||
System.out.print("\n id:" + id + " ");
|
||||
if(pID == tPacketID.ANIMATION)
|
||||
{
|
||||
if (pID == tPacketID.ANIMATION) {
|
||||
this.firePiston = dataStream.readBoolean();
|
||||
}else
|
||||
if(pID == tPacketID.GUI)
|
||||
{
|
||||
for(int i =0; i < this.onOff.length; i++)
|
||||
{
|
||||
} else if (pID == tPacketID.GUI) {
|
||||
for (int i = 0; i < this.onOff.length; i++) {
|
||||
this.onOff[i] = dataStream.readBoolean();
|
||||
}
|
||||
}else
|
||||
if(pID == tPacketID.SETTINGON)
|
||||
{
|
||||
} else if (pID == tPacketID.SETTINGON) {
|
||||
int num = dataStream.readInt();
|
||||
this.changeOnOff(num);
|
||||
}
|
||||
|
||||
}catch(Exception e)
|
||||
{
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@ -340,6 +342,4 @@ public class TileEntitySorter extends TileEntityBase implements
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
51
src/common/assemblyline/machines/crafter/ArmHelper.java
Normal file
51
src/common/assemblyline/machines/crafter/ArmHelper.java
Normal file
|
@ -0,0 +1,51 @@
|
|||
package assemblyline.machines.crafter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import universalelectricity.core.Vector3;
|
||||
import net.minecraft.src.AxisAlignedBB;
|
||||
import net.minecraft.src.EntityItem;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.World;
|
||||
|
||||
public class ArmHelper {
|
||||
|
||||
/**
|
||||
* Used to locate items in an area
|
||||
* @param start - start xyz
|
||||
* @param End - end xyz
|
||||
* @return list of items
|
||||
*/
|
||||
public List<EntityItem> findItems(World world, Vector3 start, Vector3 end)
|
||||
{
|
||||
AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(start.x,start.y,start.z,end.x,end.x,end.x);
|
||||
// EntityItem list
|
||||
List<EntityItem> itemsList = world.getEntitiesWithinAABB(
|
||||
EntityItem.class, bounds);
|
||||
return itemsList;
|
||||
}
|
||||
/**
|
||||
* Used to locate an item type in an area
|
||||
* @param world
|
||||
* @param start
|
||||
* @param end
|
||||
* @param item
|
||||
* @return list of matching items
|
||||
*/
|
||||
public List<EntityItem> findItems(World world, Vector3 start, Vector3 end, ItemStack stack)
|
||||
{
|
||||
AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(start.x,start.y,start.z,end.x,end.x,end.x);
|
||||
// EntityItem list
|
||||
List<EntityItem> itemsList = world.getEntitiesWithinAABB(
|
||||
EntityItem.class, bounds);
|
||||
for(EntityItem item : itemsList)
|
||||
{
|
||||
ItemStack stackItem = item.item;
|
||||
if(stackItem.itemID != stack.itemID || stackItem.getItemDamage() != stack.getItemDamage())
|
||||
{
|
||||
itemsList.remove(item);
|
||||
}
|
||||
}
|
||||
return itemsList;
|
||||
}
|
||||
}
|
|
@ -1,45 +1,117 @@
|
|||
package assemblyline.machines.crafter;
|
||||
|
||||
import universalelectricity.prefab.BlockMachine;
|
||||
import net.minecraft.src.BlockContainer;
|
||||
import net.minecraft.src.CreativeTabs;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.Material;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import assemblyline.AssemblyLine;
|
||||
|
||||
public class BlockCrafter extends BlockContainer
|
||||
{
|
||||
protected BlockCrafter(int par1)
|
||||
{
|
||||
super(par1, Material.iron);
|
||||
public class BlockCrafter extends BlockMachine {
|
||||
protected BlockCrafter(int par1) {
|
||||
super("AutoCrafters", par1, Material.iron);
|
||||
this.setResistance(5.0f);
|
||||
this.setHardness(5.0f);
|
||||
this.setCreativeTab(CreativeTabs.tabTools);
|
||||
}
|
||||
|
||||
public static enum CrafterType {
|
||||
CRAFTER("Crafter", 0,-1, TileEntityAutoCrafter.class);
|
||||
|
||||
public String name;
|
||||
public int metadata;
|
||||
public int guiID;
|
||||
public Class<? extends TileEntity> tileEntity;
|
||||
|
||||
CrafterType(String name, int metadata,int guiID,
|
||||
Class<? extends TileEntity> tileEntity) {
|
||||
this.name = name;
|
||||
this.metadata = metadata;
|
||||
this.guiID = guiID;
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
|
||||
public static CrafterType get(int metadata) {
|
||||
for (CrafterType value : CrafterType.values()) {
|
||||
if (metadata >= value.metadata && metadata < value.metadata + 4) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the direction based on the metadata
|
||||
*
|
||||
* @return A direction value from 0 to 4.
|
||||
*/
|
||||
public static int getDirection(int metadata) {
|
||||
return metadata - CrafterType.get(metadata).metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param currentDirection
|
||||
* - An integer from 0 to 4.
|
||||
* @return The metadata this block should change into.
|
||||
*/
|
||||
public int getNextDirectionMeta(int currentDirection) {
|
||||
currentDirection++;
|
||||
|
||||
if (currentDirection >= 4) {
|
||||
currentDirection = 0;
|
||||
}
|
||||
|
||||
return currentDirection + this.metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new TIleEntity.
|
||||
*/
|
||||
public TileEntity instantiateTileEntity() {
|
||||
try {
|
||||
return this.tileEntity.newInstance();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World var1) {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World var1, int meta) {
|
||||
if(meta >= 0 && meta < 4)
|
||||
{
|
||||
return new TileEntityAutoCrafter();
|
||||
}
|
||||
if(meta >= 4 && meta < 8)
|
||||
{
|
||||
return new TileEntityCraftingArm();
|
||||
}
|
||||
if(meta >= 8 && meta < 12)
|
||||
{
|
||||
|
||||
}
|
||||
if(meta >= 12 && meta < 16)
|
||||
{
|
||||
|
||||
}
|
||||
return null;
|
||||
public TileEntity createNewTileEntity(World var1, int metadata) {
|
||||
return CrafterType.get(metadata).instantiateTileEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMachineActivated(World par1World, int x, int y, int z,
|
||||
EntityPlayer par5EntityPlayer) {
|
||||
if (!par1World.isRemote) {
|
||||
int metadata = par1World.getBlockMetadata(x, y, z);
|
||||
int guiID = CrafterType.get(metadata).metadata;
|
||||
if (guiID == -1)
|
||||
return false;
|
||||
par5EntityPlayer.openGui(AssemblyLine.instance, guiID, par1World,
|
||||
x, y, z);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean onSneakUseWrench(World par1World, int x, int y, int z,
|
||||
EntityPlayer par5EntityPlayer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getRenderType() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,9 +3,12 @@ package assemblyline.machines.crafter;
|
|||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.INetworkManager;
|
||||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import net.minecraftforge.common.ISidedInventory;
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.TileEntityBase;
|
||||
import assemblyline.machines.BlockMulti.MachineType;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
||||
|
@ -28,4 +31,5 @@ public class TileEntityAutoCrafter extends TileEntityBase
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue