From 4c8d1527f61be52ddda49bd1d3fe5b35e538767e Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 23 Jun 2016 01:06:17 +0200 Subject: [PATCH] Move crafting patterns to interface --- .../api/autocrafting/ICraftingPattern.java | 19 +++++ .../ICraftingPatternContainer.java | 9 +++ .../api/autocrafting/ICraftingTask.java | 18 +++++ .../api/network/INetworkMaster.java | 19 ++--- .../api/network/IWirelessGridHandler.java | 4 ++ .../api/storage/IStorageProvider.java | 5 -- .../autocrafting}/BasicCraftingTask.java | 25 ++++--- .../autocrafting/CraftingPattern.java | 17 +++-- .../autocrafting/CraftingTaskScheduler.java | 5 +- .../autocrafting}/ProcessingCraftingTask.java | 35 +++++---- .../apiimpl/network/GridHandler.java | 6 +- .../apiimpl/network/NetworkMaster.java | 72 +++++++++++++------ .../apiimpl/network/WirelessGridHandler.java | 14 +++- .../{api => apiimpl}/storage/NBTStorage.java | 3 +- .../autocrafting/task/ICraftingTask.java | 19 ----- .../refinedstorage/item/ItemBlockStorage.java | 2 +- .../refinedstorage/item/ItemStorageDisk.java | 2 +- .../jei/RefinedStorageJEIPlugin.java | 2 +- .../refinedstorage/proxy/CommonProxy.java | 2 +- .../refinedstorage/tile/TileConstructor.java | 2 +- .../java/refinedstorage/tile/TileCrafter.java | 13 +++- .../tile/TileCraftingMonitor.java | 2 +- .../refinedstorage/tile/TileDiskDrive.java | 2 +- .../refinedstorage/tile/TileExporter.java | 2 +- .../java/refinedstorage/tile/TileStorage.java | 2 +- .../tile/controller/TileController.java | 6 +- 26 files changed, 194 insertions(+), 113 deletions(-) create mode 100755 src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java create mode 100755 src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java create mode 100755 src/main/java/refinedstorage/api/autocrafting/ICraftingTask.java rename src/main/java/refinedstorage/{autocrafting/task => apiimpl/autocrafting}/BasicCraftingTask.java (87%) rename src/main/java/refinedstorage/{ => apiimpl}/autocrafting/CraftingPattern.java (90%) rename src/main/java/refinedstorage/{ => apiimpl}/autocrafting/CraftingTaskScheduler.java (86%) rename src/main/java/refinedstorage/{autocrafting/task => apiimpl/autocrafting}/ProcessingCraftingTask.java (81%) rename src/main/java/refinedstorage/{api => apiimpl}/storage/NBTStorage.java (98%) delete mode 100755 src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java diff --git a/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java b/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java new file mode 100755 index 000000000..391be6923 --- /dev/null +++ b/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java @@ -0,0 +1,19 @@ +package refinedstorage.api.autocrafting; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public interface ICraftingPattern { + ICraftingPatternContainer getContainer(World world); + + boolean isProcessing(); + + ItemStack[] getInputs(); + + ItemStack[] getOutputs(); + + ItemStack[] getByproducts(); + + NBTTagCompound writeToNBT(NBTTagCompound tag); +} diff --git a/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java b/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java new file mode 100755 index 000000000..594b5ddf3 --- /dev/null +++ b/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java @@ -0,0 +1,9 @@ +package refinedstorage.api.autocrafting; + +import net.minecraftforge.items.IItemHandler; + +public interface ICraftingPatternContainer { + int getSpeed(); + + IItemHandler getConnectedInventory(); +} diff --git a/src/main/java/refinedstorage/api/autocrafting/ICraftingTask.java b/src/main/java/refinedstorage/api/autocrafting/ICraftingTask.java new file mode 100755 index 000000000..621a565e5 --- /dev/null +++ b/src/main/java/refinedstorage/api/autocrafting/ICraftingTask.java @@ -0,0 +1,18 @@ +package refinedstorage.api.autocrafting; + +import net.minecraft.nbt.NBTTagCompound; +import refinedstorage.api.network.INetworkMaster; + +public interface ICraftingTask { + ICraftingPattern getPattern(); + + boolean update(INetworkMaster network); + + void onDone(INetworkMaster network); + + void onCancelled(INetworkMaster network); + + void writeToNBT(NBTTagCompound tag); + + String getInfo(); +} diff --git a/src/main/java/refinedstorage/api/network/INetworkMaster.java b/src/main/java/refinedstorage/api/network/INetworkMaster.java index c005c305f..619362562 100755 --- a/src/main/java/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/refinedstorage/api/network/INetworkMaster.java @@ -6,18 +6,13 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import refinedstorage.autocrafting.CraftingPattern; -import refinedstorage.autocrafting.task.ICraftingTask; -import refinedstorage.tile.config.RedstoneMode; +import refinedstorage.api.autocrafting.ICraftingPattern; +import refinedstorage.api.autocrafting.ICraftingTask; import java.util.Iterator; import java.util.List; public interface INetworkMaster { - RedstoneMode getRedstoneMode(); - - void setRedstoneMode(RedstoneMode mode); - World getWorld(); void setWorld(World world); @@ -50,17 +45,17 @@ public interface INetworkMaster { void addCraftingTaskAsLast(ICraftingTask task); - ICraftingTask createCraftingTask(CraftingPattern pattern); + ICraftingTask createCraftingTask(ICraftingPattern pattern); void cancelCraftingTask(ICraftingTask task); - List getPatterns(); + List getPatterns(); - List getPattern(ItemStack pattern, int flags); + List getPattern(ItemStack pattern, int flags); - CraftingPattern getPatternWithBestScore(ItemStack pattern); + ICraftingPattern getPatternWithBestScore(ItemStack pattern); - CraftingPattern getPatternWithBestScore(ItemStack pattern, int flags); + ICraftingPattern getPatternWithBestScore(ItemStack pattern, int flags); void updateItemsWithClient(); diff --git a/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java b/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java index 56d82b0da..d6f7dfaef 100755 --- a/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java +++ b/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java @@ -10,6 +10,10 @@ public interface IWirelessGridHandler { void onClose(EntityPlayer player); + void setRange(int range); + + int getRange(); + void drainEnergy(EntityPlayer player, int energy); WirelessGridConsumer getConsumer(EntityPlayer player); diff --git a/src/main/java/refinedstorage/api/storage/IStorageProvider.java b/src/main/java/refinedstorage/api/storage/IStorageProvider.java index d737f8916..d188013cd 100755 --- a/src/main/java/refinedstorage/api/storage/IStorageProvider.java +++ b/src/main/java/refinedstorage/api/storage/IStorageProvider.java @@ -2,11 +2,6 @@ package refinedstorage.api.storage; import java.util.List; -/** - * Should be implemented as a capability on tile entities. - * - * @see refinedstorage.api.RefinedStorageCapabilities#STORAGE_PROVIDER_CAPABILITY - */ public interface IStorageProvider { /** * @param storages A list containing previously added storages diff --git a/src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java b/src/main/java/refinedstorage/apiimpl/autocrafting/BasicCraftingTask.java similarity index 87% rename from src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java rename to src/main/java/refinedstorage/apiimpl/autocrafting/BasicCraftingTask.java index 88565e083..7f8e29d39 100755 --- a/src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/BasicCraftingTask.java @@ -1,12 +1,13 @@ -package refinedstorage.autocrafting.task; +package refinedstorage.apiimpl.autocrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.Constants; import refinedstorage.RefinedStorageUtils; -import refinedstorage.apiimpl.network.NetworkMaster; -import refinedstorage.autocrafting.CraftingPattern; +import refinedstorage.api.autocrafting.ICraftingPattern; +import refinedstorage.api.autocrafting.ICraftingTask; +import refinedstorage.api.network.INetworkMaster; import java.util.ArrayList; import java.util.List; @@ -19,21 +20,21 @@ public class BasicCraftingTask implements ICraftingTask { public static final String NBT_CHILD_TASKS = "ChildTasks"; public static final String NBT_TOOK = "Took"; - private CraftingPattern pattern; + private ICraftingPattern pattern; private boolean satisfied[]; private boolean checked[]; private boolean childTasks[]; private List itemsTook = new ArrayList(); private boolean updatedOnce; - public BasicCraftingTask(CraftingPattern pattern) { + public BasicCraftingTask(ICraftingPattern pattern) { this.pattern = pattern; this.satisfied = new boolean[pattern.getInputs().length]; this.checked = new boolean[pattern.getInputs().length]; this.childTasks = new boolean[pattern.getInputs().length]; } - public BasicCraftingTask(NBTTagCompound tag, CraftingPattern pattern) { + public BasicCraftingTask(NBTTagCompound tag, ICraftingPattern pattern) { this.pattern = pattern; this.satisfied = RefinedStorageUtils.readBooleanArray(tag, NBT_SATISFIED); this.checked = RefinedStorageUtils.readBooleanArray(tag, NBT_CHECKED); @@ -46,11 +47,13 @@ public class BasicCraftingTask implements ICraftingTask { } } - public CraftingPattern getPattern() { + @Override + public ICraftingPattern getPattern() { return pattern; } - public boolean update(NetworkMaster network) { + @Override + public boolean update(INetworkMaster network) { this.updatedOnce = true; boolean done = true; @@ -70,7 +73,7 @@ public class BasicCraftingTask implements ICraftingTask { satisfied[i] = true; } else if (!childTasks[i]) { - CraftingPattern pattern = network.getPatternWithBestScore(input); + ICraftingPattern pattern = network.getPatternWithBestScore(input); if (pattern != null) { network.addCraftingTask(network.createCraftingTask(pattern)); @@ -90,7 +93,7 @@ public class BasicCraftingTask implements ICraftingTask { // @todo: handle no space @Override - public void onDone(NetworkMaster network) { + public void onDone(INetworkMaster network) { for (ItemStack output : pattern.getOutputs()) { network.push(output, output.stackSize, false); } @@ -104,7 +107,7 @@ public class BasicCraftingTask implements ICraftingTask { // @todo: handle no space @Override - public void onCancelled(NetworkMaster network) { + public void onCancelled(INetworkMaster network) { for (ItemStack took : itemsTook) { network.push(took, took.stackSize, false); } diff --git a/src/main/java/refinedstorage/autocrafting/CraftingPattern.java b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java similarity index 90% rename from src/main/java/refinedstorage/autocrafting/CraftingPattern.java rename to src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java index 28d4225a8..1fcbc1284 100755 --- a/src/main/java/refinedstorage/autocrafting/CraftingPattern.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java @@ -1,4 +1,4 @@ -package refinedstorage.autocrafting; +package refinedstorage.apiimpl.autocrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -6,10 +6,12 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; +import refinedstorage.api.autocrafting.ICraftingPattern; +import refinedstorage.api.autocrafting.ICraftingPatternContainer; import refinedstorage.item.ItemPattern; import refinedstorage.tile.TileCrafter; -public class CraftingPattern { +public class CraftingPattern implements ICraftingPattern { public static final String NBT = "Pattern"; public static final String NBT_CRAFTER_X = "CrafterX"; public static final String NBT_CRAFTER_Y = "CrafterY"; @@ -34,7 +36,8 @@ public class CraftingPattern { this.byproducts = byproducts; } - public TileCrafter getCrafter(World world) { + @Override + public ICraftingPatternContainer getContainer(World world) { if (crafter == null) { crafter = (TileCrafter) world.getTileEntity(new BlockPos(crafterX, crafterY, crafterZ)); } @@ -42,23 +45,27 @@ public class CraftingPattern { return crafter; } + @Override public boolean isProcessing() { return processing; } + @Override public ItemStack[] getInputs() { return inputs; } + @Override public ItemStack[] getOutputs() { return outputs; } + @Override public ItemStack[] getByproducts() { return byproducts; } - public void writeToNBT(NBTTagCompound tag) { + public NBTTagCompound writeToNBT(NBTTagCompound tag) { tag.setBoolean(ItemPattern.NBT_PROCESSING, processing); NBTTagList inputsTag = new NBTTagList(); @@ -84,6 +91,8 @@ public class CraftingPattern { tag.setInteger(NBT_CRAFTER_X, crafter.getPos().getX()); tag.setInteger(NBT_CRAFTER_Y, crafter.getPos().getY()); tag.setInteger(NBT_CRAFTER_Z, crafter.getPos().getZ()); + + return tag; } public static CraftingPattern readFromNBT(NBTTagCompound tag) { diff --git a/src/main/java/refinedstorage/autocrafting/CraftingTaskScheduler.java b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingTaskScheduler.java similarity index 86% rename from src/main/java/refinedstorage/autocrafting/CraftingTaskScheduler.java rename to src/main/java/refinedstorage/apiimpl/autocrafting/CraftingTaskScheduler.java index 7651055e2..bf0261052 100755 --- a/src/main/java/refinedstorage/autocrafting/CraftingTaskScheduler.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingTaskScheduler.java @@ -1,8 +1,9 @@ -package refinedstorage.autocrafting; +package refinedstorage.apiimpl.autocrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import refinedstorage.RefinedStorageUtils; +import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.network.INetworkMaster; public class CraftingTaskScheduler { @@ -15,7 +16,7 @@ public class CraftingTaskScheduler { } public void schedule(INetworkMaster network, int compare, ItemStack item) { - CraftingPattern pattern = network.getPatternWithBestScore(item, compare); + ICraftingPattern pattern = network.getPatternWithBestScore(item, compare); if (pattern != null) { scheduledItem = item; diff --git a/src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java b/src/main/java/refinedstorage/apiimpl/autocrafting/ProcessingCraftingTask.java similarity index 81% rename from src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java rename to src/main/java/refinedstorage/apiimpl/autocrafting/ProcessingCraftingTask.java index 7a20c9dbe..a0647c0ed 100755 --- a/src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/ProcessingCraftingTask.java @@ -1,13 +1,13 @@ -package refinedstorage.autocrafting.task; +package refinedstorage.apiimpl.autocrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorageUtils; -import refinedstorage.apiimpl.network.NetworkMaster; -import refinedstorage.autocrafting.CraftingPattern; -import refinedstorage.tile.TileCrafter; +import refinedstorage.api.autocrafting.ICraftingPattern; +import refinedstorage.api.autocrafting.ICraftingPatternContainer; +import refinedstorage.api.autocrafting.ICraftingTask; +import refinedstorage.api.network.INetworkMaster; public class ProcessingCraftingTask implements ICraftingTask { public static final int ID = 1; @@ -16,20 +16,20 @@ public class ProcessingCraftingTask implements ICraftingTask { public static final String NBT_CHILD_TASKS = "ChildTasks"; public static final String NBT_SATISFIED = "Satisfied"; - private CraftingPattern pattern; + private ICraftingPattern pattern; private boolean inserted[]; private boolean childTasks[]; private boolean satisfied[]; private boolean updatedOnce; - public ProcessingCraftingTask(CraftingPattern pattern) { + public ProcessingCraftingTask(ICraftingPattern pattern) { this.pattern = pattern; this.inserted = new boolean[pattern.getInputs().length]; this.childTasks = new boolean[pattern.getInputs().length]; this.satisfied = new boolean[pattern.getOutputs().length]; } - public ProcessingCraftingTask(NBTTagCompound tag, CraftingPattern pattern) { + public ProcessingCraftingTask(NBTTagCompound tag, ICraftingPattern pattern) { this.pattern = pattern; this.inserted = RefinedStorageUtils.readBooleanArray(tag, NBT_INSERTED); this.childTasks = RefinedStorageUtils.readBooleanArray(tag, NBT_CHILD_TASKS); @@ -37,33 +37,32 @@ public class ProcessingCraftingTask implements ICraftingTask { } @Override - public CraftingPattern getPattern() { + public ICraftingPattern getPattern() { return pattern; } @Override - public boolean update(NetworkMaster network) { + public boolean update(INetworkMaster network) { this.updatedOnce = true; - TileCrafter crafter = pattern.getCrafter(network.getWorld()); - IItemHandler handler = RefinedStorageUtils.getItemHandler(crafter.getFacingTile(), crafter.getDirection().getOpposite()); + ICraftingPatternContainer container = pattern.getContainer(network.getWorld()); - if (handler != null) { + if (container.getConnectedInventory() != null) { for (int i = 0; i < inserted.length; ++i) { if (!inserted[i]) { ItemStack input = pattern.getInputs()[i]; ItemStack took = network.take(input, 1); if (took != null) { - if (ItemHandlerHelper.insertItem(handler, took, true) == null) { - ItemHandlerHelper.insertItem(handler, took, false); + if (ItemHandlerHelper.insertItem(container.getConnectedInventory(), took, true) == null) { + ItemHandlerHelper.insertItem(container.getConnectedInventory(), took, false); inserted[i] = true; } else { network.push(took, took.stackSize, false); } } else if (!childTasks[i]) { - CraftingPattern pattern = network.getPatternWithBestScore(input); + ICraftingPattern pattern = network.getPatternWithBestScore(input); if (pattern != null) { childTasks[i] = true; @@ -101,12 +100,12 @@ public class ProcessingCraftingTask implements ICraftingTask { } @Override - public void onDone(NetworkMaster network) { + public void onDone(INetworkMaster network) { // NO OP } @Override - public void onCancelled(NetworkMaster network) { + public void onCancelled(INetworkMaster network) { // NO OP } diff --git a/src/main/java/refinedstorage/apiimpl/network/GridHandler.java b/src/main/java/refinedstorage/apiimpl/network/GridHandler.java index 2daa0dda5..ef86913a7 100755 --- a/src/main/java/refinedstorage/apiimpl/network/GridHandler.java +++ b/src/main/java/refinedstorage/apiimpl/network/GridHandler.java @@ -4,9 +4,9 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorageUtils; +import refinedstorage.api.autocrafting.ICraftingPattern; +import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.api.network.IGridHandler; -import refinedstorage.autocrafting.CraftingPattern; -import refinedstorage.autocrafting.task.ICraftingTask; import refinedstorage.item.ItemWirelessGrid; import refinedstorage.network.GridPullFlags; @@ -98,7 +98,7 @@ public class GridHandler implements IGridHandler { int quantityPerRequest = 0; - CraftingPattern pattern = network.getPatternWithBestScore(stack); + ICraftingPattern pattern = network.getPatternWithBestScore(stack); if (pattern != null) { for (ItemStack output : pattern.getOutputs()) { diff --git a/src/main/java/refinedstorage/apiimpl/network/NetworkMaster.java b/src/main/java/refinedstorage/apiimpl/network/NetworkMaster.java index f24a4c2d3..c7a5c0ab6 100755 --- a/src/main/java/refinedstorage/apiimpl/network/NetworkMaster.java +++ b/src/main/java/refinedstorage/apiimpl/network/NetworkMaster.java @@ -14,6 +14,8 @@ import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; import refinedstorage.api.RefinedStorageCapabilities; +import refinedstorage.api.autocrafting.ICraftingPattern; +import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.api.network.IGridHandler; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkSlave; @@ -21,10 +23,9 @@ import refinedstorage.api.network.IWirelessGridHandler; import refinedstorage.api.storage.CompareFlags; import refinedstorage.api.storage.IStorage; import refinedstorage.api.storage.IStorageProvider; -import refinedstorage.autocrafting.CraftingPattern; -import refinedstorage.autocrafting.task.BasicCraftingTask; -import refinedstorage.autocrafting.task.ICraftingTask; -import refinedstorage.autocrafting.task.ProcessingCraftingTask; +import refinedstorage.apiimpl.autocrafting.BasicCraftingTask; +import refinedstorage.apiimpl.autocrafting.CraftingPattern; +import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask; import refinedstorage.block.BlockController; import refinedstorage.block.EnumControllerType; import refinedstorage.container.ContainerGrid; @@ -62,7 +63,7 @@ public class NetworkMaster implements INetworkMaster { private List slavesToLoad = new ArrayList(); private List slavesToRemove = new ArrayList(); - private List patterns = new ArrayList(); + private List patterns = new ArrayList(); private Stack craftingTasks = new Stack(); private List craftingTasksToAddAsLast = new ArrayList(); @@ -72,7 +73,6 @@ public class NetworkMaster implements INetworkMaster { private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY); private int energyUsage; - private int wirelessGridRange; private boolean couldRun; private long lastEnergyUpdate; @@ -105,22 +105,27 @@ public class NetworkMaster implements INetworkMaster { markDirty(); } + @Override public EnergyStorage getEnergy() { return energy; } + @Override public int getEnergyUsage() { return energyUsage; } + @Override public BlockPos getPosition() { return pos; } + @Override public World getWorld() { return world; } + @Override public void setWorld(World world) { this.world = world; this.type = (EnumControllerType) world.getBlockState(pos).getValue(BlockController.TYPE); @@ -138,10 +143,12 @@ public class NetworkMaster implements INetworkMaster { this.slavesToLoad.clear(); } + @Override public boolean canRun() { return energy.getEnergyStored() > 0 && energy.getEnergyStored() >= energyUsage && redstoneMode.isEnabled(world, pos); } + @Override public void update() { for (BlockPos slave : slavesToAdd) { if (!slaves.contains(slave)) { @@ -199,7 +206,7 @@ public class NetworkMaster implements INetworkMaster { if (!craftingTasks.empty()) { ICraftingTask top = craftingTasks.peek(); - if (ticks % top.getPattern().getCrafter(world).getSpeed() == 0 && top.update(this)) { + if (ticks % top.getPattern().getContainer(world).getSpeed() == 0 && top.update(this)) { top.onDone(this); craftingTasks.pop(); @@ -241,6 +248,7 @@ public class NetworkMaster implements INetworkMaster { ticks++; } + @Override public Iterator getSlaves() { return new Iterator() { private int index; @@ -262,18 +270,21 @@ public class NetworkMaster implements INetworkMaster { }; } + @Override public void addSlave(BlockPos slave) { slavesToAdd.add(slave); markDirty(); } + @Override public void removeSlave(BlockPos slave) { slavesToRemove.add(slave); markDirty(); } + @Override public IGridHandler getGridHandler() { return gridHandler; } @@ -283,10 +294,6 @@ public class NetworkMaster implements INetworkMaster { return wirelessGridHandler; } - public int getWirelessGridRange() { - return wirelessGridRange; - } - public void disconnectAll() { Iterator slaves = getSlaves(); @@ -297,27 +304,32 @@ public class NetworkMaster implements INetworkMaster { this.slaves.clear(); } + @Override public List getItems() { return items; } + @Override public List getCraftingTasks() { return craftingTasks; } + @Override public void addCraftingTask(ICraftingTask task) { craftingTasksToAdd.add(task); markDirty(); } + @Override public void addCraftingTaskAsLast(ICraftingTask task) { craftingTasksToAddAsLast.add(task); markDirty(); } - public ICraftingTask createCraftingTask(CraftingPattern pattern) { + @Override + public ICraftingTask createCraftingTask(ICraftingPattern pattern) { if (pattern.isProcessing()) { return new ProcessingCraftingTask(pattern); } else { @@ -325,20 +337,23 @@ public class NetworkMaster implements INetworkMaster { } } + @Override public void cancelCraftingTask(ICraftingTask task) { craftingTasksToCancel.add(task); markDirty(); } - public List getPatterns() { + @Override + public List getPatterns() { return patterns; } - public List getPattern(ItemStack pattern, int flags) { - List patterns = new ArrayList(); + @Override + public List getPattern(ItemStack pattern, int flags) { + List patterns = new ArrayList(); - for (CraftingPattern craftingPattern : getPatterns()) { + for (ICraftingPattern craftingPattern : getPatterns()) { for (ItemStack output : craftingPattern.getOutputs()) { if (RefinedStorageUtils.compareStack(output, pattern, flags)) { patterns.add(craftingPattern); @@ -349,12 +364,14 @@ public class NetworkMaster implements INetworkMaster { return patterns; } - public CraftingPattern getPatternWithBestScore(ItemStack pattern) { + @Override + public ICraftingPattern getPatternWithBestScore(ItemStack pattern) { return getPatternWithBestScore(pattern, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT); } - public CraftingPattern getPatternWithBestScore(ItemStack pattern, int flags) { - List patterns = getPattern(pattern, flags); + @Override + public ICraftingPattern getPatternWithBestScore(ItemStack pattern, int flags) { + List patterns = getPattern(pattern, flags); if (patterns.isEmpty()) { return null; @@ -384,11 +401,12 @@ public class NetworkMaster implements INetworkMaster { } private void updateSlaves() { - this.wirelessGridRange = 0; this.energyUsage = 0; this.storages.clear(); this.patterns.clear(); + int range = 0; + Iterator slaves = getSlaves(); while (slaves.hasNext()) { INetworkSlave slave = slaves.next(); @@ -398,7 +416,7 @@ public class NetworkMaster implements INetworkMaster { } if (slave instanceof TileWirelessTransmitter) { - this.wirelessGridRange += ((TileWirelessTransmitter) slave).getRange(); + range += ((TileWirelessTransmitter) slave).getRange(); } if (slave instanceof IStorageProvider) { @@ -420,6 +438,8 @@ public class NetworkMaster implements INetworkMaster { this.energyUsage += slave.getEnergyUsage(); } + wirelessGridHandler.setRange(range); + Collections.sort(storages, new Comparator() { @Override public int compare(IStorage left, IStorage right) { @@ -456,7 +476,7 @@ public class NetworkMaster implements INetworkMaster { storage.addItems(items); } - for (CraftingPattern pattern : patterns) { + for (ICraftingPattern pattern : patterns) { for (ItemStack output : pattern.getOutputs()) { ItemStack patternStack = output.copy(); patternStack.stackSize = 0; @@ -497,6 +517,7 @@ public class NetworkMaster implements INetworkMaster { items.removeAll(combinedItems); } + @Override public void updateItemsWithClient() { for (EntityPlayer player : world.playerEntities) { if (player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition())) { @@ -505,10 +526,12 @@ public class NetworkMaster implements INetworkMaster { } } + @Override public void updateItemsWithClient(EntityPlayerMP player) { RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player); } + @Override public ItemStack push(ItemStack stack, int size, boolean simulate) { if (stack == null || stack.getItem() == null) { return null; @@ -552,10 +575,12 @@ public class NetworkMaster implements INetworkMaster { return remainder; } + @Override public ItemStack take(ItemStack stack, int size) { return take(stack, size, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT); } + @Override public ItemStack take(ItemStack stack, int size, int flags) { int requested = size; int received = 0; @@ -588,6 +613,7 @@ public class NetworkMaster implements INetworkMaster { return newStack; } + @Override public ItemStack getItem(ItemStack stack, int flags) { for (ItemStack otherStack : items) { if (RefinedStorageUtils.compareStack(otherStack, stack, flags)) { @@ -598,6 +624,7 @@ public class NetworkMaster implements INetworkMaster { return null; } + @Override public void readFromNBT(NBTTagCompound tag) { energy.readFromNBT(tag); @@ -637,6 +664,7 @@ public class NetworkMaster implements INetworkMaster { } } + @Override public NBTTagCompound writeToNBT(NBTTagCompound tag) { energy.writeToNBT(tag); diff --git a/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java b/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java index b2481cc13..377d9b9a5 100755 --- a/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java +++ b/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java @@ -19,6 +19,8 @@ import java.util.List; public class WirelessGridHandler implements IWirelessGridHandler { private NetworkMaster network; + private int range; + private List consumers = new ArrayList(); private List consumersToRemove = new ArrayList(); @@ -46,7 +48,7 @@ public class WirelessGridHandler implements IWirelessGridHandler { public boolean onOpen(EntityPlayer player, EnumHand hand) { int distance = (int) Math.sqrt(Math.pow(network.getPosition().getX() - player.posX, 2) + Math.pow(network.getPosition().getY() - player.posY, 2) + Math.pow(network.getPosition().getZ() - player.posZ, 2)); - if (distance > network.getWirelessGridRange()) { + if (distance > range) { return false; } @@ -70,6 +72,16 @@ public class WirelessGridHandler implements IWirelessGridHandler { } } + @Override + public int getRange() { + return range; + } + + @Override + public void setRange(int range) { + this.range = range; + } + @Override public void drainEnergy(EntityPlayer player, int energy) { WirelessGridConsumer consumer = getConsumer(player); diff --git a/src/main/java/refinedstorage/api/storage/NBTStorage.java b/src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java similarity index 98% rename from src/main/java/refinedstorage/api/storage/NBTStorage.java rename to src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java index 40db31915..010a758b9 100755 --- a/src/main/java/refinedstorage/api/storage/NBTStorage.java +++ b/src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java @@ -1,4 +1,4 @@ -package refinedstorage.api.storage; +package refinedstorage.apiimpl.storage; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -7,6 +7,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorageUtils; +import refinedstorage.api.storage.IStorage; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java b/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java deleted file mode 100755 index 387c83af9..000000000 --- a/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java +++ /dev/null @@ -1,19 +0,0 @@ -package refinedstorage.autocrafting.task; - -import net.minecraft.nbt.NBTTagCompound; -import refinedstorage.apiimpl.network.NetworkMaster; -import refinedstorage.autocrafting.CraftingPattern; - -public interface ICraftingTask { - CraftingPattern getPattern(); - - boolean update(NetworkMaster network); - - void onDone(NetworkMaster network); - - void onCancelled(NetworkMaster network); - - void writeToNBT(NBTTagCompound tag); - - String getInfo(); -} diff --git a/src/main/java/refinedstorage/item/ItemBlockStorage.java b/src/main/java/refinedstorage/item/ItemBlockStorage.java index ef6f16dd3..e4f1fc270 100755 --- a/src/main/java/refinedstorage/item/ItemBlockStorage.java +++ b/src/main/java/refinedstorage/item/ItemBlockStorage.java @@ -11,7 +11,7 @@ import net.minecraft.util.EnumHand; import net.minecraft.world.World; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageItems; -import refinedstorage.api.storage.NBTStorage; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.EnumStorageType; import refinedstorage.tile.TileStorage; diff --git a/src/main/java/refinedstorage/item/ItemStorageDisk.java b/src/main/java/refinedstorage/item/ItemStorageDisk.java index 354388728..ac8f1c454 100755 --- a/src/main/java/refinedstorage/item/ItemStorageDisk.java +++ b/src/main/java/refinedstorage/item/ItemStorageDisk.java @@ -11,7 +11,7 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.world.World; import refinedstorage.RefinedStorageItems; -import refinedstorage.api.storage.NBTStorage; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.EnumStorageType; import java.util.List; diff --git a/src/main/java/refinedstorage/jei/RefinedStorageJEIPlugin.java b/src/main/java/refinedstorage/jei/RefinedStorageJEIPlugin.java index 4362476a4..cc07ae5bb 100755 --- a/src/main/java/refinedstorage/jei/RefinedStorageJEIPlugin.java +++ b/src/main/java/refinedstorage/jei/RefinedStorageJEIPlugin.java @@ -8,7 +8,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageItems; -import refinedstorage.api.storage.NBTStorage; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.tile.TileStorage; @JEIPlugin diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 69452e6e4..500ff7c0c 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -18,9 +18,9 @@ import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageItems; import refinedstorage.api.solderer.SoldererRegistry; -import refinedstorage.api.storage.NBTStorage; import refinedstorage.apiimpl.network.NetworkMasterEventHandler; import refinedstorage.apiimpl.solderer.*; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.BlockBase; import refinedstorage.block.EnumControllerType; import refinedstorage.block.EnumGridType; diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 54983302e..2a768bb3e 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -14,7 +14,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; -import refinedstorage.autocrafting.CraftingTaskScheduler; +import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler; import refinedstorage.container.ContainerConstructor; import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.inventory.BasicItemHandler; diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index 67e84dd12..b0b1474e6 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -11,7 +11,8 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; -import refinedstorage.autocrafting.task.ICraftingTask; +import refinedstorage.api.autocrafting.ICraftingPatternContainer; +import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.container.ContainerCrafter; import refinedstorage.inventory.BasicItemHandler; import refinedstorage.inventory.BasicItemValidator; @@ -19,7 +20,7 @@ import refinedstorage.inventory.IItemValidator; import refinedstorage.item.ItemPattern; import refinedstorage.item.ItemUpgrade; -public class TileCrafter extends TileSlave { +public class TileCrafter extends TileSlave implements ICraftingPatternContainer { private BasicItemHandler patterns = new BasicItemHandler(9, this, new IItemValidator() { @Override public boolean valid(ItemStack stack) { @@ -46,7 +47,7 @@ public class TileCrafter extends TileSlave { @Override public void disconnect(World world) { for (ICraftingTask task : network.getCraftingTasks()) { - if (task.getPattern().getCrafter(worldObj) == this) { + if (task.getPattern().getContainer(world) == this) { network.cancelCraftingTask(task); } } @@ -72,10 +73,16 @@ public class TileCrafter extends TileSlave { return tag; } + @Override public int getSpeed() { return 20 - (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_SPEED) * 4); } + @Override + public IItemHandler getConnectedInventory() { + return RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); + } + public IItemHandler getPatterns() { return patterns; } diff --git a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java index 98a4ce940..e9b0fb1c3 100755 --- a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java +++ b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java @@ -4,7 +4,7 @@ import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.network.ByteBufUtils; -import refinedstorage.autocrafting.task.ICraftingTask; +import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.container.ContainerCraftingMonitor; import java.util.ArrayList; diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index 747b1ea12..3dc9d42ec 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -14,7 +14,7 @@ import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.api.storage.IStorage; import refinedstorage.api.storage.IStorageProvider; -import refinedstorage.api.storage.NBTStorage; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.EnumStorageType; import refinedstorage.container.ContainerDiskDrive; import refinedstorage.inventory.BasicItemHandler; diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 4768c9b1b..e77ef5f70 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -11,7 +11,7 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; -import refinedstorage.autocrafting.CraftingTaskScheduler; +import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler; import refinedstorage.container.ContainerExporter; import refinedstorage.inventory.BasicItemHandler; import refinedstorage.inventory.BasicItemValidator; diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index d6141308d..e752db489 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -11,7 +11,7 @@ import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; import refinedstorage.api.storage.IStorage; import refinedstorage.api.storage.IStorageProvider; -import refinedstorage.api.storage.NBTStorage; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.BlockStorage; import refinedstorage.block.EnumStorageType; import refinedstorage.container.ContainerStorage; diff --git a/src/main/java/refinedstorage/tile/controller/TileController.java b/src/main/java/refinedstorage/tile/controller/TileController.java index 70d425abc..fdc4218c3 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -88,13 +88,13 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr @Override public RedstoneMode getRedstoneMode() { - return worldObj.isRemote ? redstoneMode : (getNetwork() != null ? getNetwork().getRedstoneMode() : RedstoneMode.IGNORE); + return worldObj.isRemote ? redstoneMode : (getNetwork() != null ? ((NetworkMaster) getNetwork()).getRedstoneMode() : RedstoneMode.IGNORE); } @Override public void setRedstoneMode(RedstoneMode mode) { if (getNetwork() != null) { - getNetwork().setRedstoneMode(mode); + ((NetworkMaster) getNetwork()).setRedstoneMode(mode); } } @@ -146,7 +146,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr buf.writeInt(getNetwork() != null ? getNetwork().getEnergy().getEnergyStored() : 0); buf.writeInt(getNetwork() != null ? getNetwork().getEnergyUsage() : 0); - buf.writeInt(getNetwork() != null ? getNetwork().getRedstoneMode().id : RedstoneMode.IGNORE.id); + buf.writeInt(getNetwork() != null ? ((NetworkMaster) getNetwork()).getRedstoneMode().id : RedstoneMode.IGNORE.id); if (getNetwork() != null) { List clientSlaves = new ArrayList();