Commit last stuff I did before 1.9 switch...
This commit is contained in:
@@ -10,6 +10,7 @@ import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
@@ -19,6 +20,7 @@ import storagecraft.container.ContainerGrid;
|
||||
import storagecraft.gui.sidebutton.SideButtonGridSortingDirection;
|
||||
import storagecraft.gui.sidebutton.SideButtonGridSortingType;
|
||||
import storagecraft.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import storagecraft.item.ItemPattern;
|
||||
import storagecraft.network.MessageGridCraftingClear;
|
||||
import storagecraft.network.MessageStoragePull;
|
||||
import storagecraft.network.MessageStoragePush;
|
||||
@@ -174,7 +176,15 @@ public class GuiGrid extends GuiBase
|
||||
{
|
||||
if (slot < items.size())
|
||||
{
|
||||
drawItem(x, y, items.get(slot).toItemStack(), true);
|
||||
if (items.get(slot).isCraftable())
|
||||
{
|
||||
drawItem(x, y, items.get(slot).toItemStack(), false);
|
||||
drawString(x, y, "Craft", 0xFFFFFFFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
drawItem(x, y, items.get(slot).toItemStack(), true);
|
||||
}
|
||||
}
|
||||
|
||||
if (inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isConnected())
|
||||
@@ -234,6 +244,11 @@ public class GuiGrid extends GuiBase
|
||||
|
||||
items.addAll(grid.getController().getItems());
|
||||
|
||||
for (ItemStack pattern : grid.getController().getPatterns())
|
||||
{
|
||||
items.add(new StorageItem(ItemPattern.getPatternResult(grid.getWorld(), pattern), true));
|
||||
}
|
||||
|
||||
if (!searchField.getText().trim().isEmpty())
|
||||
{
|
||||
Iterator<StorageItem> t = items.iterator();
|
||||
|
||||
@@ -17,6 +17,8 @@ public class StorageItem
|
||||
private NBTTagCompound tag;
|
||||
@SideOnly(Side.CLIENT)
|
||||
private int id;
|
||||
@SideOnly(Side.CLIENT)
|
||||
private boolean craftable;
|
||||
|
||||
public StorageItem(ByteBuf buf)
|
||||
{
|
||||
@@ -47,6 +49,13 @@ public class StorageItem
|
||||
this(stack.getItem(), stack.stackSize, stack.getItemDamage(), stack.getTagCompound());
|
||||
}
|
||||
|
||||
public StorageItem(ItemStack stack, boolean craftable)
|
||||
{
|
||||
this(stack);
|
||||
|
||||
this.craftable = craftable;
|
||||
}
|
||||
|
||||
public void toBytes(ByteBuf buf, int id)
|
||||
{
|
||||
buf.writeInt(id);
|
||||
@@ -102,6 +111,12 @@ public class StorageItem
|
||||
return id;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isCraftable()
|
||||
{
|
||||
return craftable;
|
||||
}
|
||||
|
||||
public StorageItem copy()
|
||||
{
|
||||
return copy(quantity);
|
||||
|
||||
@@ -11,12 +11,14 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||
import storagecraft.StorageCraftBlocks;
|
||||
import storagecraft.block.BlockController;
|
||||
import storagecraft.block.EnumControllerType;
|
||||
import storagecraft.storage.IStorage;
|
||||
import storagecraft.storage.IStorageProvider;
|
||||
import storagecraft.storage.StorageItem;
|
||||
import storagecraft.tile.crafting.TileCrafter;
|
||||
import storagecraft.tile.settings.IRedstoneModeSetting;
|
||||
import storagecraft.tile.settings.RedstoneMode;
|
||||
import storagecraft.util.InventoryUtils;
|
||||
@@ -30,6 +32,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
|
||||
private List<TileMachine> machines = new ArrayList<TileMachine>();
|
||||
|
||||
private List<ItemStack> patterns = new ArrayList<ItemStack>();
|
||||
|
||||
private List<BlockPos> visitedCables = new ArrayList<BlockPos>();
|
||||
|
||||
private EnergyStorage energy = new EnergyStorage(32000);
|
||||
@@ -124,6 +128,26 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
{
|
||||
energyUsage += machine.getEnergyUsage();
|
||||
}
|
||||
|
||||
patterns.clear();
|
||||
|
||||
for (TileMachine machine : machines)
|
||||
{
|
||||
if (machine instanceof TileCrafter)
|
||||
{
|
||||
TileCrafter crafter = (TileCrafter) machine;
|
||||
|
||||
for (int i = 0; i < crafter.getSizeInventory(); ++i)
|
||||
{
|
||||
ItemStack slot = crafter.getStackInSlot(i);
|
||||
|
||||
if (slot != null)
|
||||
{
|
||||
patterns.add(slot);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (getType())
|
||||
@@ -175,6 +199,11 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
return machines;
|
||||
}
|
||||
|
||||
public List<ItemStack> getPatterns()
|
||||
{
|
||||
return patterns;
|
||||
}
|
||||
|
||||
public List<StorageItem> getItems()
|
||||
{
|
||||
return items;
|
||||
@@ -418,6 +447,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
{
|
||||
items.add(new StorageItem(buf));
|
||||
}
|
||||
|
||||
int patternSize = buf.readInt();
|
||||
|
||||
patterns.clear();
|
||||
|
||||
for (int i = 0; i < patternSize; ++i)
|
||||
{
|
||||
patterns.add(ByteBufUtils.readItemStack(buf));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -434,5 +472,12 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
{
|
||||
item.toBytes(buf, items.indexOf(item));
|
||||
}
|
||||
|
||||
buf.writeInt(patterns.size());
|
||||
|
||||
for (ItemStack pattern : patterns)
|
||||
{
|
||||
ByteBufUtils.writeItemStack(buf, pattern);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
package storagecraft.tile.crafting;
|
||||
|
||||
import java.util.List;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import storagecraft.storage.StorageItem;
|
||||
import storagecraft.tile.TileController;
|
||||
|
||||
public class CraftingTask
|
||||
{
|
||||
private ItemStack result;
|
||||
private ItemStack[] requirements;
|
||||
private List<CraftingTask> subTasks;
|
||||
|
||||
private TileController controller;
|
||||
|
||||
public CraftingTask(TileController controller)
|
||||
{
|
||||
this.controller = controller;
|
||||
}
|
||||
|
||||
public boolean craft()
|
||||
{
|
||||
for (ItemStack requirement : requirements)
|
||||
{
|
||||
boolean found = false;
|
||||
|
||||
for (StorageItem item : controller.getItems())
|
||||
{
|
||||
if (item.compareNoQuantity(requirement))
|
||||
{
|
||||
found = true;
|
||||
|
||||
controller.take(requirement);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
{
|
||||
// now look for a crafter for requirement and craft it.
|
||||
// if not found, return false.
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user