Move crafting patterns to interface
This commit is contained in:
19
src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java
Executable file
19
src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java
Executable file
@@ -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);
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package refinedstorage.api.autocrafting;
|
||||||
|
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
|
public interface ICraftingPatternContainer {
|
||||||
|
int getSpeed();
|
||||||
|
|
||||||
|
IItemHandler getConnectedInventory();
|
||||||
|
}
|
||||||
18
src/main/java/refinedstorage/api/autocrafting/ICraftingTask.java
Executable file
18
src/main/java/refinedstorage/api/autocrafting/ICraftingTask.java
Executable file
@@ -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();
|
||||||
|
}
|
||||||
@@ -6,18 +6,13 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import refinedstorage.autocrafting.CraftingPattern;
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import refinedstorage.autocrafting.task.ICraftingTask;
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
import refinedstorage.tile.config.RedstoneMode;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface INetworkMaster {
|
public interface INetworkMaster {
|
||||||
RedstoneMode getRedstoneMode();
|
|
||||||
|
|
||||||
void setRedstoneMode(RedstoneMode mode);
|
|
||||||
|
|
||||||
World getWorld();
|
World getWorld();
|
||||||
|
|
||||||
void setWorld(World world);
|
void setWorld(World world);
|
||||||
@@ -50,17 +45,17 @@ public interface INetworkMaster {
|
|||||||
|
|
||||||
void addCraftingTaskAsLast(ICraftingTask task);
|
void addCraftingTaskAsLast(ICraftingTask task);
|
||||||
|
|
||||||
ICraftingTask createCraftingTask(CraftingPattern pattern);
|
ICraftingTask createCraftingTask(ICraftingPattern pattern);
|
||||||
|
|
||||||
void cancelCraftingTask(ICraftingTask task);
|
void cancelCraftingTask(ICraftingTask task);
|
||||||
|
|
||||||
List<CraftingPattern> getPatterns();
|
List<ICraftingPattern> getPatterns();
|
||||||
|
|
||||||
List<CraftingPattern> getPattern(ItemStack pattern, int flags);
|
List<ICraftingPattern> 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();
|
void updateItemsWithClient();
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ public interface IWirelessGridHandler {
|
|||||||
|
|
||||||
void onClose(EntityPlayer player);
|
void onClose(EntityPlayer player);
|
||||||
|
|
||||||
|
void setRange(int range);
|
||||||
|
|
||||||
|
int getRange();
|
||||||
|
|
||||||
void drainEnergy(EntityPlayer player, int energy);
|
void drainEnergy(EntityPlayer player, int energy);
|
||||||
|
|
||||||
WirelessGridConsumer getConsumer(EntityPlayer player);
|
WirelessGridConsumer getConsumer(EntityPlayer player);
|
||||||
|
|||||||
@@ -2,11 +2,6 @@ package refinedstorage.api.storage;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
|
||||||
* Should be implemented as a capability on tile entities.
|
|
||||||
*
|
|
||||||
* @see refinedstorage.api.RefinedStorageCapabilities#STORAGE_PROVIDER_CAPABILITY
|
|
||||||
*/
|
|
||||||
public interface IStorageProvider {
|
public interface IStorageProvider {
|
||||||
/**
|
/**
|
||||||
* @param storages A list containing previously added storages
|
* @param storages A list containing previously added storages
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package refinedstorage.autocrafting.task;
|
package refinedstorage.apiimpl.autocrafting;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.apiimpl.network.NetworkMaster;
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import refinedstorage.autocrafting.CraftingPattern;
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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_CHILD_TASKS = "ChildTasks";
|
||||||
public static final String NBT_TOOK = "Took";
|
public static final String NBT_TOOK = "Took";
|
||||||
|
|
||||||
private CraftingPattern pattern;
|
private ICraftingPattern pattern;
|
||||||
private boolean satisfied[];
|
private boolean satisfied[];
|
||||||
private boolean checked[];
|
private boolean checked[];
|
||||||
private boolean childTasks[];
|
private boolean childTasks[];
|
||||||
private List<ItemStack> itemsTook = new ArrayList<ItemStack>();
|
private List<ItemStack> itemsTook = new ArrayList<ItemStack>();
|
||||||
private boolean updatedOnce;
|
private boolean updatedOnce;
|
||||||
|
|
||||||
public BasicCraftingTask(CraftingPattern pattern) {
|
public BasicCraftingTask(ICraftingPattern pattern) {
|
||||||
this.pattern = pattern;
|
this.pattern = pattern;
|
||||||
this.satisfied = new boolean[pattern.getInputs().length];
|
this.satisfied = new boolean[pattern.getInputs().length];
|
||||||
this.checked = new boolean[pattern.getInputs().length];
|
this.checked = new boolean[pattern.getInputs().length];
|
||||||
this.childTasks = 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.pattern = pattern;
|
||||||
this.satisfied = RefinedStorageUtils.readBooleanArray(tag, NBT_SATISFIED);
|
this.satisfied = RefinedStorageUtils.readBooleanArray(tag, NBT_SATISFIED);
|
||||||
this.checked = RefinedStorageUtils.readBooleanArray(tag, NBT_CHECKED);
|
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;
|
return pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean update(NetworkMaster network) {
|
@Override
|
||||||
|
public boolean update(INetworkMaster network) {
|
||||||
this.updatedOnce = true;
|
this.updatedOnce = true;
|
||||||
|
|
||||||
boolean done = true;
|
boolean done = true;
|
||||||
@@ -70,7 +73,7 @@ public class BasicCraftingTask implements ICraftingTask {
|
|||||||
|
|
||||||
satisfied[i] = true;
|
satisfied[i] = true;
|
||||||
} else if (!childTasks[i]) {
|
} else if (!childTasks[i]) {
|
||||||
CraftingPattern pattern = network.getPatternWithBestScore(input);
|
ICraftingPattern pattern = network.getPatternWithBestScore(input);
|
||||||
|
|
||||||
if (pattern != null) {
|
if (pattern != null) {
|
||||||
network.addCraftingTask(network.createCraftingTask(pattern));
|
network.addCraftingTask(network.createCraftingTask(pattern));
|
||||||
@@ -90,7 +93,7 @@ public class BasicCraftingTask implements ICraftingTask {
|
|||||||
|
|
||||||
// @todo: handle no space
|
// @todo: handle no space
|
||||||
@Override
|
@Override
|
||||||
public void onDone(NetworkMaster network) {
|
public void onDone(INetworkMaster network) {
|
||||||
for (ItemStack output : pattern.getOutputs()) {
|
for (ItemStack output : pattern.getOutputs()) {
|
||||||
network.push(output, output.stackSize, false);
|
network.push(output, output.stackSize, false);
|
||||||
}
|
}
|
||||||
@@ -104,7 +107,7 @@ public class BasicCraftingTask implements ICraftingTask {
|
|||||||
|
|
||||||
// @todo: handle no space
|
// @todo: handle no space
|
||||||
@Override
|
@Override
|
||||||
public void onCancelled(NetworkMaster network) {
|
public void onCancelled(INetworkMaster network) {
|
||||||
for (ItemStack took : itemsTook) {
|
for (ItemStack took : itemsTook) {
|
||||||
network.push(took, took.stackSize, false);
|
network.push(took, took.stackSize, false);
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package refinedstorage.autocrafting;
|
package refinedstorage.apiimpl.autocrafting;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
@@ -6,10 +6,12 @@ import net.minecraft.nbt.NBTTagList;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
import refinedstorage.item.ItemPattern;
|
import refinedstorage.item.ItemPattern;
|
||||||
import refinedstorage.tile.TileCrafter;
|
import refinedstorage.tile.TileCrafter;
|
||||||
|
|
||||||
public class CraftingPattern {
|
public class CraftingPattern implements ICraftingPattern {
|
||||||
public static final String NBT = "Pattern";
|
public static final String NBT = "Pattern";
|
||||||
public static final String NBT_CRAFTER_X = "CrafterX";
|
public static final String NBT_CRAFTER_X = "CrafterX";
|
||||||
public static final String NBT_CRAFTER_Y = "CrafterY";
|
public static final String NBT_CRAFTER_Y = "CrafterY";
|
||||||
@@ -34,7 +36,8 @@ public class CraftingPattern {
|
|||||||
this.byproducts = byproducts;
|
this.byproducts = byproducts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileCrafter getCrafter(World world) {
|
@Override
|
||||||
|
public ICraftingPatternContainer getContainer(World world) {
|
||||||
if (crafter == null) {
|
if (crafter == null) {
|
||||||
crafter = (TileCrafter) world.getTileEntity(new BlockPos(crafterX, crafterY, crafterZ));
|
crafter = (TileCrafter) world.getTileEntity(new BlockPos(crafterX, crafterY, crafterZ));
|
||||||
}
|
}
|
||||||
@@ -42,23 +45,27 @@ public class CraftingPattern {
|
|||||||
return crafter;
|
return crafter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isProcessing() {
|
public boolean isProcessing() {
|
||||||
return processing;
|
return processing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack[] getInputs() {
|
public ItemStack[] getInputs() {
|
||||||
return inputs;
|
return inputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack[] getOutputs() {
|
public ItemStack[] getOutputs() {
|
||||||
return outputs;
|
return outputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack[] getByproducts() {
|
public ItemStack[] getByproducts() {
|
||||||
return byproducts;
|
return byproducts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
||||||
tag.setBoolean(ItemPattern.NBT_PROCESSING, processing);
|
tag.setBoolean(ItemPattern.NBT_PROCESSING, processing);
|
||||||
|
|
||||||
NBTTagList inputsTag = new NBTTagList();
|
NBTTagList inputsTag = new NBTTagList();
|
||||||
@@ -84,6 +91,8 @@ public class CraftingPattern {
|
|||||||
tag.setInteger(NBT_CRAFTER_X, crafter.getPos().getX());
|
tag.setInteger(NBT_CRAFTER_X, crafter.getPos().getX());
|
||||||
tag.setInteger(NBT_CRAFTER_Y, crafter.getPos().getY());
|
tag.setInteger(NBT_CRAFTER_Y, crafter.getPos().getY());
|
||||||
tag.setInteger(NBT_CRAFTER_Z, crafter.getPos().getZ());
|
tag.setInteger(NBT_CRAFTER_Z, crafter.getPos().getZ());
|
||||||
|
|
||||||
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CraftingPattern readFromNBT(NBTTagCompound tag) {
|
public static CraftingPattern readFromNBT(NBTTagCompound tag) {
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
package refinedstorage.autocrafting;
|
package refinedstorage.apiimpl.autocrafting;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import refinedstorage.api.network.INetworkMaster;
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
|
|
||||||
public class CraftingTaskScheduler {
|
public class CraftingTaskScheduler {
|
||||||
@@ -15,7 +16,7 @@ public class CraftingTaskScheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void schedule(INetworkMaster network, int compare, ItemStack item) {
|
public void schedule(INetworkMaster network, int compare, ItemStack item) {
|
||||||
CraftingPattern pattern = network.getPatternWithBestScore(item, compare);
|
ICraftingPattern pattern = network.getPatternWithBestScore(item, compare);
|
||||||
|
|
||||||
if (pattern != null) {
|
if (pattern != null) {
|
||||||
scheduledItem = item;
|
scheduledItem = item;
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package refinedstorage.autocrafting.task;
|
package refinedstorage.apiimpl.autocrafting;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.apiimpl.network.NetworkMaster;
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import refinedstorage.autocrafting.CraftingPattern;
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
import refinedstorage.tile.TileCrafter;
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
|
|
||||||
public class ProcessingCraftingTask implements ICraftingTask {
|
public class ProcessingCraftingTask implements ICraftingTask {
|
||||||
public static final int ID = 1;
|
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_CHILD_TASKS = "ChildTasks";
|
||||||
public static final String NBT_SATISFIED = "Satisfied";
|
public static final String NBT_SATISFIED = "Satisfied";
|
||||||
|
|
||||||
private CraftingPattern pattern;
|
private ICraftingPattern pattern;
|
||||||
private boolean inserted[];
|
private boolean inserted[];
|
||||||
private boolean childTasks[];
|
private boolean childTasks[];
|
||||||
private boolean satisfied[];
|
private boolean satisfied[];
|
||||||
private boolean updatedOnce;
|
private boolean updatedOnce;
|
||||||
|
|
||||||
public ProcessingCraftingTask(CraftingPattern pattern) {
|
public ProcessingCraftingTask(ICraftingPattern pattern) {
|
||||||
this.pattern = pattern;
|
this.pattern = pattern;
|
||||||
this.inserted = new boolean[pattern.getInputs().length];
|
this.inserted = new boolean[pattern.getInputs().length];
|
||||||
this.childTasks = new boolean[pattern.getInputs().length];
|
this.childTasks = new boolean[pattern.getInputs().length];
|
||||||
this.satisfied = new boolean[pattern.getOutputs().length];
|
this.satisfied = new boolean[pattern.getOutputs().length];
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProcessingCraftingTask(NBTTagCompound tag, CraftingPattern pattern) {
|
public ProcessingCraftingTask(NBTTagCompound tag, ICraftingPattern pattern) {
|
||||||
this.pattern = pattern;
|
this.pattern = pattern;
|
||||||
this.inserted = RefinedStorageUtils.readBooleanArray(tag, NBT_INSERTED);
|
this.inserted = RefinedStorageUtils.readBooleanArray(tag, NBT_INSERTED);
|
||||||
this.childTasks = RefinedStorageUtils.readBooleanArray(tag, NBT_CHILD_TASKS);
|
this.childTasks = RefinedStorageUtils.readBooleanArray(tag, NBT_CHILD_TASKS);
|
||||||
@@ -37,33 +37,32 @@ public class ProcessingCraftingTask implements ICraftingTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CraftingPattern getPattern() {
|
public ICraftingPattern getPattern() {
|
||||||
return pattern;
|
return pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean update(NetworkMaster network) {
|
public boolean update(INetworkMaster network) {
|
||||||
this.updatedOnce = true;
|
this.updatedOnce = true;
|
||||||
|
|
||||||
TileCrafter crafter = pattern.getCrafter(network.getWorld());
|
ICraftingPatternContainer container = pattern.getContainer(network.getWorld());
|
||||||
IItemHandler handler = RefinedStorageUtils.getItemHandler(crafter.getFacingTile(), crafter.getDirection().getOpposite());
|
|
||||||
|
|
||||||
if (handler != null) {
|
if (container.getConnectedInventory() != null) {
|
||||||
for (int i = 0; i < inserted.length; ++i) {
|
for (int i = 0; i < inserted.length; ++i) {
|
||||||
if (!inserted[i]) {
|
if (!inserted[i]) {
|
||||||
ItemStack input = pattern.getInputs()[i];
|
ItemStack input = pattern.getInputs()[i];
|
||||||
ItemStack took = network.take(input, 1);
|
ItemStack took = network.take(input, 1);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
if (ItemHandlerHelper.insertItem(handler, took, true) == null) {
|
if (ItemHandlerHelper.insertItem(container.getConnectedInventory(), took, true) == null) {
|
||||||
ItemHandlerHelper.insertItem(handler, took, false);
|
ItemHandlerHelper.insertItem(container.getConnectedInventory(), took, false);
|
||||||
|
|
||||||
inserted[i] = true;
|
inserted[i] = true;
|
||||||
} else {
|
} else {
|
||||||
network.push(took, took.stackSize, false);
|
network.push(took, took.stackSize, false);
|
||||||
}
|
}
|
||||||
} else if (!childTasks[i]) {
|
} else if (!childTasks[i]) {
|
||||||
CraftingPattern pattern = network.getPatternWithBestScore(input);
|
ICraftingPattern pattern = network.getPatternWithBestScore(input);
|
||||||
|
|
||||||
if (pattern != null) {
|
if (pattern != null) {
|
||||||
childTasks[i] = true;
|
childTasks[i] = true;
|
||||||
@@ -101,12 +100,12 @@ public class ProcessingCraftingTask implements ICraftingTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDone(NetworkMaster network) {
|
public void onDone(INetworkMaster network) {
|
||||||
// NO OP
|
// NO OP
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCancelled(NetworkMaster network) {
|
public void onCancelled(INetworkMaster network) {
|
||||||
// NO OP
|
// NO OP
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4,9 +4,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
|||||||
import net.minecraft.inventory.InventoryHelper;
|
import net.minecraft.inventory.InventoryHelper;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
import refinedstorage.api.network.IGridHandler;
|
import refinedstorage.api.network.IGridHandler;
|
||||||
import refinedstorage.autocrafting.CraftingPattern;
|
|
||||||
import refinedstorage.autocrafting.task.ICraftingTask;
|
|
||||||
import refinedstorage.item.ItemWirelessGrid;
|
import refinedstorage.item.ItemWirelessGrid;
|
||||||
import refinedstorage.network.GridPullFlags;
|
import refinedstorage.network.GridPullFlags;
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ public class GridHandler implements IGridHandler {
|
|||||||
|
|
||||||
int quantityPerRequest = 0;
|
int quantityPerRequest = 0;
|
||||||
|
|
||||||
CraftingPattern pattern = network.getPatternWithBestScore(stack);
|
ICraftingPattern pattern = network.getPatternWithBestScore(stack);
|
||||||
|
|
||||||
if (pattern != null) {
|
if (pattern != null) {
|
||||||
for (ItemStack output : pattern.getOutputs()) {
|
for (ItemStack output : pattern.getOutputs()) {
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ import refinedstorage.RefinedStorage;
|
|||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.api.RefinedStorageCapabilities;
|
import refinedstorage.api.RefinedStorageCapabilities;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
import refinedstorage.api.network.IGridHandler;
|
import refinedstorage.api.network.IGridHandler;
|
||||||
import refinedstorage.api.network.INetworkMaster;
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
import refinedstorage.api.network.INetworkSlave;
|
import refinedstorage.api.network.INetworkSlave;
|
||||||
@@ -21,10 +23,9 @@ import refinedstorage.api.network.IWirelessGridHandler;
|
|||||||
import refinedstorage.api.storage.CompareFlags;
|
import refinedstorage.api.storage.CompareFlags;
|
||||||
import refinedstorage.api.storage.IStorage;
|
import refinedstorage.api.storage.IStorage;
|
||||||
import refinedstorage.api.storage.IStorageProvider;
|
import refinedstorage.api.storage.IStorageProvider;
|
||||||
import refinedstorage.autocrafting.CraftingPattern;
|
import refinedstorage.apiimpl.autocrafting.BasicCraftingTask;
|
||||||
import refinedstorage.autocrafting.task.BasicCraftingTask;
|
import refinedstorage.apiimpl.autocrafting.CraftingPattern;
|
||||||
import refinedstorage.autocrafting.task.ICraftingTask;
|
import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask;
|
||||||
import refinedstorage.autocrafting.task.ProcessingCraftingTask;
|
|
||||||
import refinedstorage.block.BlockController;
|
import refinedstorage.block.BlockController;
|
||||||
import refinedstorage.block.EnumControllerType;
|
import refinedstorage.block.EnumControllerType;
|
||||||
import refinedstorage.container.ContainerGrid;
|
import refinedstorage.container.ContainerGrid;
|
||||||
@@ -62,7 +63,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
private List<BlockPos> slavesToLoad = new ArrayList<BlockPos>();
|
private List<BlockPos> slavesToLoad = new ArrayList<BlockPos>();
|
||||||
private List<BlockPos> slavesToRemove = new ArrayList<BlockPos>();
|
private List<BlockPos> slavesToRemove = new ArrayList<BlockPos>();
|
||||||
|
|
||||||
private List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
|
private List<ICraftingPattern> patterns = new ArrayList<ICraftingPattern>();
|
||||||
|
|
||||||
private Stack<ICraftingTask> craftingTasks = new Stack<ICraftingTask>();
|
private Stack<ICraftingTask> craftingTasks = new Stack<ICraftingTask>();
|
||||||
private List<ICraftingTask> craftingTasksToAddAsLast = new ArrayList<ICraftingTask>();
|
private List<ICraftingTask> craftingTasksToAddAsLast = new ArrayList<ICraftingTask>();
|
||||||
@@ -72,7 +73,6 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY);
|
private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY);
|
||||||
private int energyUsage;
|
private int energyUsage;
|
||||||
|
|
||||||
private int wirelessGridRange;
|
|
||||||
private boolean couldRun;
|
private boolean couldRun;
|
||||||
private long lastEnergyUpdate;
|
private long lastEnergyUpdate;
|
||||||
|
|
||||||
@@ -105,22 +105,27 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public EnergyStorage getEnergy() {
|
public EnergyStorage getEnergy() {
|
||||||
return energy;
|
return energy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getEnergyUsage() {
|
public int getEnergyUsage() {
|
||||||
return energyUsage;
|
return energyUsage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public BlockPos getPosition() {
|
public BlockPos getPosition() {
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public World getWorld() {
|
public World getWorld() {
|
||||||
return world;
|
return world;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setWorld(World world) {
|
public void setWorld(World world) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.type = (EnumControllerType) world.getBlockState(pos).getValue(BlockController.TYPE);
|
this.type = (EnumControllerType) world.getBlockState(pos).getValue(BlockController.TYPE);
|
||||||
@@ -138,10 +143,12 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
this.slavesToLoad.clear();
|
this.slavesToLoad.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean canRun() {
|
public boolean canRun() {
|
||||||
return energy.getEnergyStored() > 0 && energy.getEnergyStored() >= energyUsage && redstoneMode.isEnabled(world, pos);
|
return energy.getEnergyStored() > 0 && energy.getEnergyStored() >= energyUsage && redstoneMode.isEnabled(world, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
for (BlockPos slave : slavesToAdd) {
|
for (BlockPos slave : slavesToAdd) {
|
||||||
if (!slaves.contains(slave)) {
|
if (!slaves.contains(slave)) {
|
||||||
@@ -199,7 +206,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
if (!craftingTasks.empty()) {
|
if (!craftingTasks.empty()) {
|
||||||
ICraftingTask top = craftingTasks.peek();
|
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);
|
top.onDone(this);
|
||||||
|
|
||||||
craftingTasks.pop();
|
craftingTasks.pop();
|
||||||
@@ -241,6 +248,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
ticks++;
|
ticks++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Iterator<INetworkSlave> getSlaves() {
|
public Iterator<INetworkSlave> getSlaves() {
|
||||||
return new Iterator<INetworkSlave>() {
|
return new Iterator<INetworkSlave>() {
|
||||||
private int index;
|
private int index;
|
||||||
@@ -262,18 +270,21 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void addSlave(BlockPos slave) {
|
public void addSlave(BlockPos slave) {
|
||||||
slavesToAdd.add(slave);
|
slavesToAdd.add(slave);
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void removeSlave(BlockPos slave) {
|
public void removeSlave(BlockPos slave) {
|
||||||
slavesToRemove.add(slave);
|
slavesToRemove.add(slave);
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public IGridHandler getGridHandler() {
|
public IGridHandler getGridHandler() {
|
||||||
return gridHandler;
|
return gridHandler;
|
||||||
}
|
}
|
||||||
@@ -283,10 +294,6 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
return wirelessGridHandler;
|
return wirelessGridHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getWirelessGridRange() {
|
|
||||||
return wirelessGridRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disconnectAll() {
|
public void disconnectAll() {
|
||||||
Iterator<INetworkSlave> slaves = getSlaves();
|
Iterator<INetworkSlave> slaves = getSlaves();
|
||||||
|
|
||||||
@@ -297,27 +304,32 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
this.slaves.clear();
|
this.slaves.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<ItemStack> getItems() {
|
public List<ItemStack> getItems() {
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<ICraftingTask> getCraftingTasks() {
|
public List<ICraftingTask> getCraftingTasks() {
|
||||||
return craftingTasks;
|
return craftingTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void addCraftingTask(ICraftingTask task) {
|
public void addCraftingTask(ICraftingTask task) {
|
||||||
craftingTasksToAdd.add(task);
|
craftingTasksToAdd.add(task);
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void addCraftingTaskAsLast(ICraftingTask task) {
|
public void addCraftingTaskAsLast(ICraftingTask task) {
|
||||||
craftingTasksToAddAsLast.add(task);
|
craftingTasksToAddAsLast.add(task);
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICraftingTask createCraftingTask(CraftingPattern pattern) {
|
@Override
|
||||||
|
public ICraftingTask createCraftingTask(ICraftingPattern pattern) {
|
||||||
if (pattern.isProcessing()) {
|
if (pattern.isProcessing()) {
|
||||||
return new ProcessingCraftingTask(pattern);
|
return new ProcessingCraftingTask(pattern);
|
||||||
} else {
|
} else {
|
||||||
@@ -325,20 +337,23 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void cancelCraftingTask(ICraftingTask task) {
|
public void cancelCraftingTask(ICraftingTask task) {
|
||||||
craftingTasksToCancel.add(task);
|
craftingTasksToCancel.add(task);
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CraftingPattern> getPatterns() {
|
@Override
|
||||||
|
public List<ICraftingPattern> getPatterns() {
|
||||||
return patterns;
|
return patterns;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CraftingPattern> getPattern(ItemStack pattern, int flags) {
|
@Override
|
||||||
List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
|
public List<ICraftingPattern> getPattern(ItemStack pattern, int flags) {
|
||||||
|
List<ICraftingPattern> patterns = new ArrayList<ICraftingPattern>();
|
||||||
|
|
||||||
for (CraftingPattern craftingPattern : getPatterns()) {
|
for (ICraftingPattern craftingPattern : getPatterns()) {
|
||||||
for (ItemStack output : craftingPattern.getOutputs()) {
|
for (ItemStack output : craftingPattern.getOutputs()) {
|
||||||
if (RefinedStorageUtils.compareStack(output, pattern, flags)) {
|
if (RefinedStorageUtils.compareStack(output, pattern, flags)) {
|
||||||
patterns.add(craftingPattern);
|
patterns.add(craftingPattern);
|
||||||
@@ -349,12 +364,14 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
return patterns;
|
return patterns;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CraftingPattern getPatternWithBestScore(ItemStack pattern) {
|
@Override
|
||||||
|
public ICraftingPattern getPatternWithBestScore(ItemStack pattern) {
|
||||||
return getPatternWithBestScore(pattern, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT);
|
return getPatternWithBestScore(pattern, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CraftingPattern getPatternWithBestScore(ItemStack pattern, int flags) {
|
@Override
|
||||||
List<CraftingPattern> patterns = getPattern(pattern, flags);
|
public ICraftingPattern getPatternWithBestScore(ItemStack pattern, int flags) {
|
||||||
|
List<ICraftingPattern> patterns = getPattern(pattern, flags);
|
||||||
|
|
||||||
if (patterns.isEmpty()) {
|
if (patterns.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
@@ -384,11 +401,12 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateSlaves() {
|
private void updateSlaves() {
|
||||||
this.wirelessGridRange = 0;
|
|
||||||
this.energyUsage = 0;
|
this.energyUsage = 0;
|
||||||
this.storages.clear();
|
this.storages.clear();
|
||||||
this.patterns.clear();
|
this.patterns.clear();
|
||||||
|
|
||||||
|
int range = 0;
|
||||||
|
|
||||||
Iterator<INetworkSlave> slaves = getSlaves();
|
Iterator<INetworkSlave> slaves = getSlaves();
|
||||||
while (slaves.hasNext()) {
|
while (slaves.hasNext()) {
|
||||||
INetworkSlave slave = slaves.next();
|
INetworkSlave slave = slaves.next();
|
||||||
@@ -398,7 +416,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (slave instanceof TileWirelessTransmitter) {
|
if (slave instanceof TileWirelessTransmitter) {
|
||||||
this.wirelessGridRange += ((TileWirelessTransmitter) slave).getRange();
|
range += ((TileWirelessTransmitter) slave).getRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (slave instanceof IStorageProvider) {
|
if (slave instanceof IStorageProvider) {
|
||||||
@@ -420,6 +438,8 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
this.energyUsage += slave.getEnergyUsage();
|
this.energyUsage += slave.getEnergyUsage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wirelessGridHandler.setRange(range);
|
||||||
|
|
||||||
Collections.sort(storages, new Comparator<IStorage>() {
|
Collections.sort(storages, new Comparator<IStorage>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(IStorage left, IStorage right) {
|
public int compare(IStorage left, IStorage right) {
|
||||||
@@ -456,7 +476,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
storage.addItems(items);
|
storage.addItems(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (CraftingPattern pattern : patterns) {
|
for (ICraftingPattern pattern : patterns) {
|
||||||
for (ItemStack output : pattern.getOutputs()) {
|
for (ItemStack output : pattern.getOutputs()) {
|
||||||
ItemStack patternStack = output.copy();
|
ItemStack patternStack = output.copy();
|
||||||
patternStack.stackSize = 0;
|
patternStack.stackSize = 0;
|
||||||
@@ -497,6 +517,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
items.removeAll(combinedItems);
|
items.removeAll(combinedItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateItemsWithClient() {
|
public void updateItemsWithClient() {
|
||||||
for (EntityPlayer player : world.playerEntities) {
|
for (EntityPlayer player : world.playerEntities) {
|
||||||
if (player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition())) {
|
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) {
|
public void updateItemsWithClient(EntityPlayerMP player) {
|
||||||
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
|
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack push(ItemStack stack, int size, boolean simulate) {
|
public ItemStack push(ItemStack stack, int size, boolean simulate) {
|
||||||
if (stack == null || stack.getItem() == null) {
|
if (stack == null || stack.getItem() == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -552,10 +575,12 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
return remainder;
|
return remainder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack take(ItemStack stack, int size) {
|
public ItemStack take(ItemStack stack, int size) {
|
||||||
return take(stack, size, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT);
|
return take(stack, size, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack take(ItemStack stack, int size, int flags) {
|
public ItemStack take(ItemStack stack, int size, int flags) {
|
||||||
int requested = size;
|
int requested = size;
|
||||||
int received = 0;
|
int received = 0;
|
||||||
@@ -588,6 +613,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
return newStack;
|
return newStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack getItem(ItemStack stack, int flags) {
|
public ItemStack getItem(ItemStack stack, int flags) {
|
||||||
for (ItemStack otherStack : items) {
|
for (ItemStack otherStack : items) {
|
||||||
if (RefinedStorageUtils.compareStack(otherStack, stack, flags)) {
|
if (RefinedStorageUtils.compareStack(otherStack, stack, flags)) {
|
||||||
@@ -598,6 +624,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound tag) {
|
public void readFromNBT(NBTTagCompound tag) {
|
||||||
energy.readFromNBT(tag);
|
energy.readFromNBT(tag);
|
||||||
|
|
||||||
@@ -637,6 +664,7 @@ public class NetworkMaster implements INetworkMaster {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
||||||
energy.writeToNBT(tag);
|
energy.writeToNBT(tag);
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import java.util.List;
|
|||||||
public class WirelessGridHandler implements IWirelessGridHandler {
|
public class WirelessGridHandler implements IWirelessGridHandler {
|
||||||
private NetworkMaster network;
|
private NetworkMaster network;
|
||||||
|
|
||||||
|
private int range;
|
||||||
|
|
||||||
private List<WirelessGridConsumer> consumers = new ArrayList<WirelessGridConsumer>();
|
private List<WirelessGridConsumer> consumers = new ArrayList<WirelessGridConsumer>();
|
||||||
private List<WirelessGridConsumer> consumersToRemove = new ArrayList<WirelessGridConsumer>();
|
private List<WirelessGridConsumer> consumersToRemove = new ArrayList<WirelessGridConsumer>();
|
||||||
|
|
||||||
@@ -46,7 +48,7 @@ public class WirelessGridHandler implements IWirelessGridHandler {
|
|||||||
public boolean onOpen(EntityPlayer player, EnumHand hand) {
|
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));
|
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;
|
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
|
@Override
|
||||||
public void drainEnergy(EntityPlayer player, int energy) {
|
public void drainEnergy(EntityPlayer player, int energy) {
|
||||||
WirelessGridConsumer consumer = getConsumer(player);
|
WirelessGridConsumer consumer = getConsumer(player);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package refinedstorage.api.storage;
|
package refinedstorage.apiimpl.storage;
|
||||||
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -7,6 +7,7 @@ import net.minecraft.nbt.NBTTagList;
|
|||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
|
import refinedstorage.api.storage.IStorage;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,7 @@ import net.minecraft.util.EnumHand;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.api.storage.NBTStorage;
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.block.EnumStorageType;
|
import refinedstorage.block.EnumStorageType;
|
||||||
import refinedstorage.tile.TileStorage;
|
import refinedstorage.tile.TileStorage;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import net.minecraft.util.EnumActionResult;
|
|||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.api.storage.NBTStorage;
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.block.EnumStorageType;
|
import refinedstorage.block.EnumStorageType;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import net.minecraft.item.Item;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.api.storage.NBTStorage;
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.tile.TileStorage;
|
import refinedstorage.tile.TileStorage;
|
||||||
|
|
||||||
@JEIPlugin
|
@JEIPlugin
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ import refinedstorage.RefinedStorage;
|
|||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.api.solderer.SoldererRegistry;
|
import refinedstorage.api.solderer.SoldererRegistry;
|
||||||
import refinedstorage.api.storage.NBTStorage;
|
|
||||||
import refinedstorage.apiimpl.network.NetworkMasterEventHandler;
|
import refinedstorage.apiimpl.network.NetworkMasterEventHandler;
|
||||||
import refinedstorage.apiimpl.solderer.*;
|
import refinedstorage.apiimpl.solderer.*;
|
||||||
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.block.BlockBase;
|
import refinedstorage.block.BlockBase;
|
||||||
import refinedstorage.block.EnumControllerType;
|
import refinedstorage.block.EnumControllerType;
|
||||||
import refinedstorage.block.EnumGridType;
|
import refinedstorage.block.EnumGridType;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import net.minecraftforge.items.CapabilityItemHandler;
|
|||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.autocrafting.CraftingTaskScheduler;
|
import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler;
|
||||||
import refinedstorage.container.ContainerConstructor;
|
import refinedstorage.container.ContainerConstructor;
|
||||||
import refinedstorage.container.slot.SlotSpecimen;
|
import refinedstorage.container.slot.SlotSpecimen;
|
||||||
import refinedstorage.inventory.BasicItemHandler;
|
import refinedstorage.inventory.BasicItemHandler;
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ import net.minecraftforge.items.IItemHandler;
|
|||||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.autocrafting.task.ICraftingTask;
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
import refinedstorage.container.ContainerCrafter;
|
import refinedstorage.container.ContainerCrafter;
|
||||||
import refinedstorage.inventory.BasicItemHandler;
|
import refinedstorage.inventory.BasicItemHandler;
|
||||||
import refinedstorage.inventory.BasicItemValidator;
|
import refinedstorage.inventory.BasicItemValidator;
|
||||||
@@ -19,7 +20,7 @@ import refinedstorage.inventory.IItemValidator;
|
|||||||
import refinedstorage.item.ItemPattern;
|
import refinedstorage.item.ItemPattern;
|
||||||
import refinedstorage.item.ItemUpgrade;
|
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() {
|
private BasicItemHandler patterns = new BasicItemHandler(9, this, new IItemValidator() {
|
||||||
@Override
|
@Override
|
||||||
public boolean valid(ItemStack stack) {
|
public boolean valid(ItemStack stack) {
|
||||||
@@ -46,7 +47,7 @@ public class TileCrafter extends TileSlave {
|
|||||||
@Override
|
@Override
|
||||||
public void disconnect(World world) {
|
public void disconnect(World world) {
|
||||||
for (ICraftingTask task : network.getCraftingTasks()) {
|
for (ICraftingTask task : network.getCraftingTasks()) {
|
||||||
if (task.getPattern().getCrafter(worldObj) == this) {
|
if (task.getPattern().getContainer(world) == this) {
|
||||||
network.cancelCraftingTask(task);
|
network.cancelCraftingTask(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,10 +73,16 @@ public class TileCrafter extends TileSlave {
|
|||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getSpeed() {
|
public int getSpeed() {
|
||||||
return 20 - (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_SPEED) * 4);
|
return 20 - (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_SPEED) * 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemHandler getConnectedInventory() {
|
||||||
|
return RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite());
|
||||||
|
}
|
||||||
|
|
||||||
public IItemHandler getPatterns() {
|
public IItemHandler getPatterns() {
|
||||||
return patterns;
|
return patterns;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.netty.buffer.ByteBuf;
|
|||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||||
import refinedstorage.autocrafting.task.ICraftingTask;
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
import refinedstorage.container.ContainerCraftingMonitor;
|
import refinedstorage.container.ContainerCraftingMonitor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import refinedstorage.RefinedStorageItems;
|
|||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.api.storage.IStorage;
|
import refinedstorage.api.storage.IStorage;
|
||||||
import refinedstorage.api.storage.IStorageProvider;
|
import refinedstorage.api.storage.IStorageProvider;
|
||||||
import refinedstorage.api.storage.NBTStorage;
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.block.EnumStorageType;
|
import refinedstorage.block.EnumStorageType;
|
||||||
import refinedstorage.container.ContainerDiskDrive;
|
import refinedstorage.container.ContainerDiskDrive;
|
||||||
import refinedstorage.inventory.BasicItemHandler;
|
import refinedstorage.inventory.BasicItemHandler;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import net.minecraftforge.items.IItemHandler;
|
|||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.autocrafting.CraftingTaskScheduler;
|
import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler;
|
||||||
import refinedstorage.container.ContainerExporter;
|
import refinedstorage.container.ContainerExporter;
|
||||||
import refinedstorage.inventory.BasicItemHandler;
|
import refinedstorage.inventory.BasicItemHandler;
|
||||||
import refinedstorage.inventory.BasicItemValidator;
|
import refinedstorage.inventory.BasicItemValidator;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import refinedstorage.RefinedStorageBlocks;
|
|||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.api.storage.IStorage;
|
import refinedstorage.api.storage.IStorage;
|
||||||
import refinedstorage.api.storage.IStorageProvider;
|
import refinedstorage.api.storage.IStorageProvider;
|
||||||
import refinedstorage.api.storage.NBTStorage;
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.block.BlockStorage;
|
import refinedstorage.block.BlockStorage;
|
||||||
import refinedstorage.block.EnumStorageType;
|
import refinedstorage.block.EnumStorageType;
|
||||||
import refinedstorage.container.ContainerStorage;
|
import refinedstorage.container.ContainerStorage;
|
||||||
|
|||||||
@@ -88,13 +88,13 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RedstoneMode getRedstoneMode() {
|
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
|
@Override
|
||||||
public void setRedstoneMode(RedstoneMode mode) {
|
public void setRedstoneMode(RedstoneMode mode) {
|
||||||
if (getNetwork() != null) {
|
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().getEnergy().getEnergyStored() : 0);
|
||||||
buf.writeInt(getNetwork() != null ? getNetwork().getEnergyUsage() : 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) {
|
if (getNetwork() != null) {
|
||||||
List<ClientSlave> clientSlaves = new ArrayList<ClientSlave>();
|
List<ClientSlave> clientSlaves = new ArrayList<ClientSlave>();
|
||||||
|
|||||||
Reference in New Issue
Block a user