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.GlStateManager;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse; import org.lwjgl.input.Mouse;
@@ -19,6 +20,7 @@ import storagecraft.container.ContainerGrid;
import storagecraft.gui.sidebutton.SideButtonGridSortingDirection; import storagecraft.gui.sidebutton.SideButtonGridSortingDirection;
import storagecraft.gui.sidebutton.SideButtonGridSortingType; import storagecraft.gui.sidebutton.SideButtonGridSortingType;
import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.gui.sidebutton.SideButtonRedstoneMode;
import storagecraft.item.ItemPattern;
import storagecraft.network.MessageGridCraftingClear; import storagecraft.network.MessageGridCraftingClear;
import storagecraft.network.MessageStoragePull; import storagecraft.network.MessageStoragePull;
import storagecraft.network.MessageStoragePush; import storagecraft.network.MessageStoragePush;
@@ -174,7 +176,15 @@ public class GuiGrid extends GuiBase
{ {
if (slot < items.size()) 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()) if (inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isConnected())
@@ -234,6 +244,11 @@ public class GuiGrid extends GuiBase
items.addAll(grid.getController().getItems()); 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()) if (!searchField.getText().trim().isEmpty())
{ {
Iterator<StorageItem> t = items.iterator(); Iterator<StorageItem> t = items.iterator();

View File

@@ -17,6 +17,8 @@ public class StorageItem
private NBTTagCompound tag; private NBTTagCompound tag;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
private int id; private int id;
@SideOnly(Side.CLIENT)
private boolean craftable;
public StorageItem(ByteBuf buf) public StorageItem(ByteBuf buf)
{ {
@@ -47,6 +49,13 @@ public class StorageItem
this(stack.getItem(), stack.stackSize, stack.getItemDamage(), stack.getTagCompound()); 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) public void toBytes(ByteBuf buf, int id)
{ {
buf.writeInt(id); buf.writeInt(id);
@@ -102,6 +111,12 @@ public class StorageItem
return id; return id;
} }
@SideOnly(Side.CLIENT)
public boolean isCraftable()
{
return craftable;
}
public StorageItem copy() public StorageItem copy()
{ {
return copy(quantity); return copy(quantity);

View File

@@ -11,12 +11,14 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import storagecraft.StorageCraftBlocks; import storagecraft.StorageCraftBlocks;
import storagecraft.block.BlockController; import storagecraft.block.BlockController;
import storagecraft.block.EnumControllerType; import storagecraft.block.EnumControllerType;
import storagecraft.storage.IStorage; import storagecraft.storage.IStorage;
import storagecraft.storage.IStorageProvider; import storagecraft.storage.IStorageProvider;
import storagecraft.storage.StorageItem; import storagecraft.storage.StorageItem;
import storagecraft.tile.crafting.TileCrafter;
import storagecraft.tile.settings.IRedstoneModeSetting; import storagecraft.tile.settings.IRedstoneModeSetting;
import storagecraft.tile.settings.RedstoneMode; import storagecraft.tile.settings.RedstoneMode;
import storagecraft.util.InventoryUtils; 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<TileMachine> machines = new ArrayList<TileMachine>();
private List<ItemStack> patterns = new ArrayList<ItemStack>();
private List<BlockPos> visitedCables = new ArrayList<BlockPos>(); private List<BlockPos> visitedCables = new ArrayList<BlockPos>();
private EnergyStorage energy = new EnergyStorage(32000); private EnergyStorage energy = new EnergyStorage(32000);
@@ -124,6 +128,26 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
{ {
energyUsage += machine.getEnergyUsage(); 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()) switch (getType())
@@ -175,6 +199,11 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
return machines; return machines;
} }
public List<ItemStack> getPatterns()
{
return patterns;
}
public List<StorageItem> getItems() public List<StorageItem> getItems()
{ {
return items; return items;
@@ -418,6 +447,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
{ {
items.add(new StorageItem(buf)); items.add(new StorageItem(buf));
} }
int patternSize = buf.readInt();
patterns.clear();
for (int i = 0; i < patternSize; ++i)
{
patterns.add(ByteBufUtils.readItemStack(buf));
}
} }
@Override @Override
@@ -434,5 +472,12 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
{ {
item.toBytes(buf, items.indexOf(item)); 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;
}
}