Commit last stuff I did before 1.9 switch...

This commit is contained in:
Raoul Van den Berge
2016-03-19 13:33:08 +01:00
parent dfe2d498a4
commit 506f6a6eba
4 changed files with 76 additions and 49 deletions

View File

@@ -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();

View File

@@ -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);

View File

@@ -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);
}
}
}

View File

@@ -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;
}
}