Version autocrafting code

This commit is contained in:
raoulvdberge
2020-01-25 20:24:59 +01:00
parent 6124c7f778
commit 847befeeb1
24 changed files with 82 additions and 40 deletions

View File

@@ -4,9 +4,9 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternRenderHa
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementList;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElementRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.api.network.INetworkManager;
import com.raoulvdberge.refinedstorage.api.network.grid.ICraftingGridBehavior;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager;

View File

@@ -1,5 +1,6 @@
package com.raoulvdberge.refinedstorage.api.autocrafting;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskRegistry;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
@@ -77,9 +78,9 @@ public interface ICraftingPattern {
NonNullList<FluidStack> getFluidOutputs();
/**
* @return the id of the factory that creates a crafting task for this pattern, as defined in the {@link com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry}
* @return the id of the factory that creates a crafting task for this pattern, as defined in the {@link ICraftingTaskRegistry}
*/
ResourceLocation getId();
ResourceLocation getCraftingTaskFactoryId();
/**
* @param other the other pattern

View File

@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.api.autocrafting.task;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
/**
* Gets thrown from {@link com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskFactory#createFromNbt(INetwork, net.minecraft.nbt.CompoundNBT)}.
* Gets thrown from {@link ICraftingTaskFactory#createFromNbt(INetwork, net.minecraft.nbt.CompoundNBT)}.
*/
public class CraftingTaskReadException extends Exception {
/**

View File

@@ -1,9 +1,6 @@
package com.raoulvdberge.refinedstorage.api.autocrafting.registry;
package com.raoulvdberge.refinedstorage.api.autocrafting.task;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import net.minecraft.nbt.CompoundNBT;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.api.autocrafting.registry;
package com.raoulvdberge.refinedstorage.api.autocrafting.task;
import net.minecraft.util.ResourceLocation;

View File

@@ -6,9 +6,9 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternRenderHa
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementList;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElementRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.api.network.INetworkManager;
import com.raoulvdberge.refinedstorage.api.network.grid.ICraftingGridBehavior;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager;
@@ -24,11 +24,11 @@ import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStor
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.api.util.IQuantityFormatter;
import com.raoulvdberge.refinedstorage.api.util.IStackList;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingRequestInfo;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementList;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.CraftingRequestInfo;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.CraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkManager;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeManager;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeRegistry;

View File

@@ -5,10 +5,10 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternChainList;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorListener;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskFactory;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
@@ -98,7 +98,7 @@ public class CraftingManager implements ICraftingManager {
return null;
}
ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(pattern.getId());
ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(pattern.getCraftingTaskFactoryId());
if (factory == null) {
return null;
}
@@ -114,7 +114,7 @@ public class CraftingManager implements ICraftingManager {
return null;
}
ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(pattern.getId());
ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(pattern.getCraftingTaskFactoryId());
if (factory == null) {
return null;
}
@@ -202,7 +202,7 @@ public class CraftingManager implements ICraftingManager {
for (ICraftingTask task : tasks.values()) {
CompoundNBT taskTag = new CompoundNBT();
taskTag.putString(NBT_TASK_TYPE, task.getPattern().getId().toString());
taskTag.putString(NBT_TASK_TYPE, task.getPattern().getCraftingTaskFactoryId().toString());
taskTag.put(NBT_TASK_DATA, task.writeToNbt(new CompoundNBT()));
list.add(taskTag);

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5.CraftingTaskFactory;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.inventory.container.Container;
@@ -164,7 +164,7 @@ public class CraftingPattern implements ICraftingPattern {
}
@Override
public ResourceLocation getId() {
public ResourceLocation getCraftingTaskFactoryId() {
return CraftingTaskFactory.ID;
}

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;

View File

@@ -1,7 +1,7 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskFactory;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskRegistry;
import net.minecraft.util.ResourceLocation;
import javax.annotation.Nullable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5;
import com.google.common.collect.Maps;
import com.raoulvdberge.refinedstorage.RS;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskErrorType;

View File

@@ -1,20 +1,19 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskFactory;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.CraftingTask;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
import javax.annotation.Nonnull;
public class CraftingTaskFactory implements ICraftingTaskFactory {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "default");
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "v5");
@Nonnull
@Override

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task;
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5;
enum ProcessingState {
READY,

View File

@@ -0,0 +1,12 @@
# Autocrafting v5
This is the fifth iteration of the autocrafting code.
Some history:
|------|---|
|v0.6 |v1 |
|v1.0 |v2 |
|v1.2 |v3 |
|v1.6 |v4 |
|v1.6.4|v5 |
|------|---|

View File

@@ -15,6 +15,7 @@ import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
@@ -127,10 +128,13 @@ public class FluidGridHandler implements IFluidGridHandler {
ICraftingTaskError error = task.calculate();
ResourceLocation factoryId = task.getPattern().getCraftingTaskFactoryId();
if (error != null) {
RS.NETWORK_HANDLER.sendTo(
player,
new GridCraftingPreviewResponseMessage(
factoryId,
Collections.singletonList(new ErrorCraftingPreviewElement(error.getType(), error.getRecursedPattern() == null ? ItemStack.EMPTY : error.getRecursedPattern().getStack())),
id,
quantity,
@@ -145,6 +149,7 @@ public class FluidGridHandler implements IFluidGridHandler {
RS.NETWORK_HANDLER.sendTo(
player,
new GridCraftingPreviewResponseMessage(
factoryId,
task.getPreviewStacks(),
id,
quantity,

View File

@@ -14,6 +14,7 @@ import com.raoulvdberge.refinedstorage.network.grid.GridCraftingStartResponseMes
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper;
@@ -165,10 +166,13 @@ public class ItemGridHandler implements IItemGridHandler {
ICraftingTaskError error = task.calculate();
ResourceLocation factoryId = task.getPattern().getCraftingTaskFactoryId();
if (error != null) {
RS.NETWORK_HANDLER.sendTo(
player,
new GridCraftingPreviewResponseMessage(
factoryId,
Collections.singletonList(new ErrorCraftingPreviewElement(error.getType(), error.getRecursedPattern() == null ? ItemStack.EMPTY : error.getRecursedPattern().getStack())),
id,
quantity,
@@ -183,6 +187,7 @@ public class ItemGridHandler implements IItemGridHandler {
RS.NETWORK_HANDLER.sendTo(
player,
new GridCraftingPreviewResponseMessage(
factoryId,
task.getPreviewStacks(),
id,
quantity,

View File

@@ -34,7 +34,7 @@ public class PatternDumpCommand implements Command<CommandSource> {
CraftingPattern pattern = PatternItem.fromCache(context.getSource().getWorld(), stack);
context.getSource().sendFeedback(new StringTextComponent("Crafting ID: ").setStyle(Styles.YELLOW).appendSibling(new StringTextComponent(pattern.getId().toString()).setStyle(Styles.WHITE)), false);
context.getSource().sendFeedback(new StringTextComponent("Crafting task factory ID: ").setStyle(Styles.YELLOW).appendSibling(new StringTextComponent(pattern.getCraftingTaskFactoryId().toString()).setStyle(Styles.WHITE)), false);
if (!pattern.isValid()) {
context.getSource().sendFeedback(new StringTextComponent("Pattern is invalid! Reason: ").appendSibling(pattern.getErrorMessage()).setStyle(Styles.RED), false);

View File

@@ -19,7 +19,15 @@ public class ClientProxy {
screen = ((CraftingSettingsScreen) screen).getParent();
}
Minecraft.getInstance().displayGuiScreen(new CraftingPreviewScreen(screen, message.getStacks(), message.getId(), message.getQuantity(), message.isFluids(), new TranslationTextComponent("gui.refinedstorage.crafting_preview")));
Minecraft.getInstance().displayGuiScreen(new CraftingPreviewScreen(
screen,
message.getFactoryId(),
message.getStacks(),
message.getId(),
message.getQuantity(),
message.isFluids(),
new TranslationTextComponent("gui.refinedstorage.crafting_preview")
));
}
public static void onReceivedCraftingStartResponseMessage(GridCraftingStartResponseMessage message) {

View File

@@ -13,18 +13,24 @@ import java.util.UUID;
import java.util.function.Supplier;
public class GridCraftingPreviewResponseMessage {
private ResourceLocation factoryId;
private List<ICraftingPreviewElement> stacks;
private UUID id;
private int quantity;
private boolean fluids;
public GridCraftingPreviewResponseMessage(List<ICraftingPreviewElement> stacks, UUID id, int quantity, boolean fluids) {
public GridCraftingPreviewResponseMessage(ResourceLocation factoryId, List<ICraftingPreviewElement> stacks, UUID id, int quantity, boolean fluids) {
this.factoryId = factoryId;
this.stacks = stacks;
this.id = id;
this.quantity = quantity;
this.fluids = fluids;
}
public ResourceLocation getFactoryId() {
return factoryId;
}
public List<ICraftingPreviewElement> getStacks() {
return stacks;
}
@@ -42,6 +48,7 @@ public class GridCraftingPreviewResponseMessage {
}
public static GridCraftingPreviewResponseMessage decode(PacketBuffer buf) {
ResourceLocation factoryId = buf.readResourceLocation();
UUID id = buf.readUniqueId();
int quantity = buf.readInt();
boolean fluids = buf.readBoolean();
@@ -55,10 +62,11 @@ public class GridCraftingPreviewResponseMessage {
stacks.add(API.instance().getCraftingPreviewElementRegistry().get(type).apply(buf));
}
return new GridCraftingPreviewResponseMessage(stacks, id, quantity, fluids);
return new GridCraftingPreviewResponseMessage(factoryId, stacks, id, quantity, fluids);
}
public static void encode(GridCraftingPreviewResponseMessage message, PacketBuffer buf) {
buf.writeResourceLocation(message.factoryId);
buf.writeUniqueId(message.id);
buf.writeInt(message.quantity);
buf.writeBoolean(message.fluids);

View File

@@ -1,6 +1,5 @@
package com.raoulvdberge.refinedstorage.screen.grid;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
@@ -13,6 +12,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ItemCrafting
import com.raoulvdberge.refinedstorage.apiimpl.render.CraftingPreviewElementDrawers;
import com.raoulvdberge.refinedstorage.item.PatternItem;
import com.raoulvdberge.refinedstorage.network.grid.GridCraftingStartRequestMessage;
import com.raoulvdberge.refinedstorage.render.RenderSettings;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.widget.ScrollbarWidget;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
@@ -25,6 +25,7 @@ import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.container.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.glfw.GLFW;
@@ -40,6 +41,7 @@ public class CraftingPreviewScreen extends BaseScreen {
private final List<ICraftingPreviewElement> stacks;
private final Screen parent;
private final ResourceLocation factoryId;
private final ScrollbarWidget scrollbar;
@@ -52,7 +54,7 @@ public class CraftingPreviewScreen extends BaseScreen {
private IElementDrawers drawers = new CraftingPreviewElementDrawers(this, font);
public CraftingPreviewScreen(Screen parent, List<ICraftingPreviewElement> stacks, UUID id, int quantity, boolean fluids, ITextComponent title) {
public CraftingPreviewScreen(Screen parent, ResourceLocation factoryId, List<ICraftingPreviewElement> stacks, UUID id, int quantity, boolean fluids, ITextComponent title) {
super(new Container(null, 0) {
@Override
public boolean canInteractWith(PlayerEntity player) {
@@ -62,6 +64,7 @@ public class CraftingPreviewScreen extends BaseScreen {
this.stacks = new ArrayList<>(stacks);
this.parent = parent;
this.factoryId = factoryId;
this.id = id;
this.quantity = quantity;
@@ -72,10 +75,12 @@ public class CraftingPreviewScreen extends BaseScreen {
@Override
public void onPostInit(int x, int y) {
addButton(x + 55, y + 201 - 20 - 7, 50, 20, I18n.format("gui.cancel"), true, true, btn -> close());
int btnYPos = y + 201 - 20 - 7;
Button startButton = addButton(x + 129, y + 201 - 20 - 7, 50, 20, I18n.format("misc.refinedstorage.start"), true, true, btn -> startRequest());
Button startButton = addButton(x + 7, btnYPos, 50, 20, I18n.format("misc.refinedstorage.start"), true, true, btn -> startRequest());
startButton.active = stacks.stream().noneMatch(ICraftingPreviewElement::hasMissing) && getErrorType() == null;
addButton(startButton.x + startButton.getWidth() + 5, btnYPos, 50, 20, I18n.format("gui.cancel"), true, true, btn -> close());
}
@Override
@@ -110,6 +115,8 @@ public class CraftingPreviewScreen extends BaseScreen {
public void renderForeground(int mouseX, int mouseY) {
renderString(7, 7, title.getFormattedText());
font.drawStringWithShadow(factoryId.toString(), xSize - font.getStringWidth(factoryId.toString()) - 7, 201 - 21, RenderSettings.INSTANCE.getSecondaryColor());
int x = 7;
int y = 15;

View File

@@ -13,7 +13,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.Item
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ErrorCraftingPreviewElement;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.FluidCraftingPreviewElement;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ItemCraftingPreviewElement;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.v5.CraftingTaskFactory;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkListener;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.*;