Move crafting patterns to interface

This commit is contained in:
Raoul Van den Berge
2016-06-23 01:06:17 +02:00
parent 7024caa17e
commit 4c8d1527f6
26 changed files with 194 additions and 113 deletions

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

View File

@@ -0,0 +1,9 @@
package refinedstorage.api.autocrafting;
import net.minecraftforge.items.IItemHandler;
public interface ICraftingPatternContainer {
int getSpeed();
IItemHandler getConnectedInventory();
}

View 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();
}

View File

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

View File

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

View File

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

View File

@@ -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<ItemStack> itemsTook = new ArrayList<ItemStack>();
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);
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<BlockPos> slavesToLoad = 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 List<ICraftingTask> craftingTasksToAddAsLast = new ArrayList<ICraftingTask>();
@@ -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<INetworkSlave> getSlaves() {
return new Iterator<INetworkSlave>() {
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<INetworkSlave> slaves = getSlaves();
@@ -297,27 +304,32 @@ public class NetworkMaster implements INetworkMaster {
this.slaves.clear();
}
@Override
public List<ItemStack> getItems() {
return items;
}
@Override
public List<ICraftingTask> 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<CraftingPattern> getPatterns() {
@Override
public List<ICraftingPattern> getPatterns() {
return patterns;
}
public List<CraftingPattern> getPattern(ItemStack pattern, int flags) {
List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
@Override
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()) {
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<CraftingPattern> patterns = getPattern(pattern, flags);
@Override
public ICraftingPattern getPatternWithBestScore(ItemStack pattern, int flags) {
List<ICraftingPattern> 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<INetworkSlave> 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<IStorage>() {
@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);

View File

@@ -19,6 +19,8 @@ import java.util.List;
public class WirelessGridHandler implements IWirelessGridHandler {
private NetworkMaster network;
private int range;
private List<WirelessGridConsumer> consumers = 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) {
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);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<ClientSlave> clientSlaves = new ArrayList<ClientSlave>();