Add fluid grid handler

This commit is contained in:
Raoul Van den Berge
2016-08-13 02:00:43 +02:00
parent 1a3351311f
commit 24a765f705
19 changed files with 255 additions and 52 deletions

View File

@@ -7,6 +7,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.CompareUtils;
import refinedstorage.api.storage.fluid.IGroupedFluidStorage; import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
@@ -50,6 +51,11 @@ public interface INetworkMaster {
*/ */
IItemGridHandler getItemGridHandler(); IItemGridHandler getItemGridHandler();
/**
* @return The {@link IFluidGridHandler} for this network
*/
IFluidGridHandler getFluidGridHandler();
/** /**
* @return The {@link IWirelessGridHandler} for this network * @return The {@link IWirelessGridHandler} for this network
*/ */

View File

@@ -2,6 +2,7 @@ package refinedstorage.api.network;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.CompareUtils;
@@ -29,6 +30,10 @@ public final class NetworkUtils {
return stack.getItem().hashCode() * (stack.getItemDamage() + 1) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1); return stack.getItem().hashCode() * (stack.getItemDamage() + 1) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1);
} }
public static int getFluidStackHashCode(FluidStack stack) {
return stack.getFluid().hashCode() * (stack.tag != null ? stack.tag.hashCode() : 1);
}
public static int getNodeHashCode(World world, INetworkNode node) { public static int getNodeHashCode(World world, INetworkNode node) {
int result = node.getPosition().hashCode(); int result = node.getPosition().hashCode();
result = 31 * result + world.provider.getDimension(); result = 31 * result + world.provider.getDimension();

View File

@@ -0,0 +1,36 @@
package refinedstorage.api.network.grid;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import javax.annotation.Nullable;
/**
* Defines the behavior of item grids.
*/
public interface IFluidGridHandler {
/**
* Called when a player tries to extract a fluid from the grid.
*
* @param hash The hash of the fluid we're trying to extract, see {@link refinedstorage.api.network.NetworkUtils#getFluidStackHashCode(net.minecraftforge.fluids.FluidStack)}
* @param shift If we're shift clicking
* @param player The player that is attempting the extraction
*/
void onExtract(int hash, boolean shift, EntityPlayerMP player);
/**
* Called when a player tries to insert fluids to the grid.
*
* @param container A stack with a container we're trying to insert
* @return The remainder, or null if there is no remainder
*/
@Nullable
ItemStack onInsert(ItemStack container);
/**
* Called when a player is trying to insert a fluid that it is holding in their hand in the GUI.
*
* @param player The player that is attempting the insert
*/
void onInsertHeldContainer(EntityPlayerMP player);
}

View File

@@ -0,0 +1,33 @@
package refinedstorage.apiimpl.network.grid;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.grid.IFluidGridHandler;
import javax.annotation.Nullable;
public class FluidGridHandler implements IFluidGridHandler {
private INetworkMaster network;
public FluidGridHandler(INetworkMaster network) {
this.network = network;
}
@Override
public void onExtract(int hash, boolean shift, EntityPlayerMP player) {
System.out.println("Extract " + hash);
}
@Nullable
@Override
public ItemStack onInsert(ItemStack container) {
System.out.println("Insert " + container);
return container;
}
@Override
public void onInsertHeldContainer(EntityPlayerMP player) {
System.out.println("Insert held!");
}
}

View File

@@ -106,8 +106,12 @@ public class ContainerGrid extends ContainerBase {
if (slot.getHasStack()) { if (slot.getHasStack()) {
if (slot == craftingResultSlot) { if (slot == craftingResultSlot) {
((TileGrid) grid).onCraftedShift(this, player); ((TileGrid) grid).onCraftedShift(this, player);
} else if (grid.getHandler() != null && slot != patternResultSlot && !(slot instanceof SlotSpecimenLegacy) && grid.getType() != EnumGridType.FLUID) { } else if (slot != patternResultSlot && !(slot instanceof SlotSpecimenLegacy)) {
slot.putStack(grid.getHandler().onInsert(slot.getStack())); if (grid.getType() != EnumGridType.FLUID && grid.getItemHandler() != null) {
slot.putStack(grid.getItemHandler().onInsert(slot.getStack()));
} else if (grid.getType() == EnumGridType.FLUID && grid.getFluidHandler() != null) {
slot.putStack(grid.getFluidHandler().onInsert(slot.getStack()));
}
detectAndSendChanges(); detectAndSendChanges();
} }

View File

@@ -27,10 +27,7 @@ import refinedstorage.gui.grid.stack.ClientStackItem;
import refinedstorage.gui.grid.stack.IClientStack; import refinedstorage.gui.grid.stack.IClientStack;
import refinedstorage.gui.sidebutton.*; import refinedstorage.gui.sidebutton.*;
import refinedstorage.integration.jei.IntegrationJEI; import refinedstorage.integration.jei.IntegrationJEI;
import refinedstorage.network.MessageGridCraftingClear; import refinedstorage.network.*;
import refinedstorage.network.MessageGridInsertHeld;
import refinedstorage.network.MessageGridPatternCreate;
import refinedstorage.network.MessageGridPull;
import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.IGrid;
import refinedstorage.tile.grid.TileGrid; import refinedstorage.tile.grid.TileGrid;
import refinedstorage.tile.grid.WirelessGrid; import refinedstorage.tile.grid.WirelessGrid;
@@ -352,7 +349,7 @@ public class GuiGrid extends GuiBase {
BlockPos gridPos = ((TileGrid) grid).getPos(); BlockPos gridPos = ((TileGrid) grid).getPos();
RefinedStorage.INSTANCE.network.sendToServer(new MessageGridPatternCreate(gridPos.getX(), gridPos.getY(), gridPos.getZ())); RefinedStorage.INSTANCE.network.sendToServer(new MessageGridPatternCreate(gridPos.getX(), gridPos.getY(), gridPos.getZ()));
} else if (grid.isConnected() && grid.getType() != EnumGridType.FLUID) { } else if (grid.isConnected()) {
if (clickedClear) { if (clickedClear) {
RefinedStorage.INSTANCE.network.sendToServer(new MessageGridCraftingClear((TileGrid) grid)); RefinedStorage.INSTANCE.network.sendToServer(new MessageGridCraftingClear((TileGrid) grid));
} }
@@ -360,30 +357,34 @@ public class GuiGrid extends GuiBase {
ItemStack held = container.getPlayer().inventory.getItemStack(); ItemStack held = container.getPlayer().inventory.getItemStack();
if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && held != null && (clickedButton == 0 || clickedButton == 1)) { if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && held != null && (clickedButton == 0 || clickedButton == 1)) {
RefinedStorage.INSTANCE.network.sendToServer(new MessageGridInsertHeld(clickedButton == 1)); RefinedStorage.INSTANCE.network.sendToServer(grid.getType() == EnumGridType.FLUID ? new MessageGridFluidInsertHeld() : new MessageGridItemInsertHeld(clickedButton == 1));
} }
if (isOverSlotWithItem() && (held == null || (held != null && clickedButton == 2))) { if (isOverSlotWithItem() && (held == null || (held != null && clickedButton == 2))) {
ClientStackItem stack = (ClientStackItem) STACKS.get(slotNumber); if (grid.getType() != EnumGridType.FLUID) {
ClientStackItem stack = (ClientStackItem) STACKS.get(slotNumber);
if (stack.isCraftable() && (stack.getQuantity() == 0 || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown()))) { if (stack.isCraftable() && (stack.getQuantity() == 0 || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown()))) {
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, container.getPlayer(), stack)); FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, container.getPlayer(), stack));
} else {
int flags = 0;
if (clickedButton == 1) {
flags |= IItemGridHandler.EXTRACT_HALF;
}
if (GuiScreen.isShiftKeyDown()) {
flags |= IItemGridHandler.EXTRACT_SHIFT;
}
if (clickedButton == 2) {
flags |= IItemGridHandler.EXTRACT_SINGLE;
}
RefinedStorage.INSTANCE.network.sendToServer(new MessageGridItemPull(stack.getHash(), flags));
}
} else { } else {
int flags = 0; RefinedStorage.INSTANCE.network.sendToServer(new MessageGridFluidPull(STACKS.get(slotNumber).getHash(), GuiScreen.isShiftKeyDown()));
if (clickedButton == 1) {
flags |= IItemGridHandler.EXTRACT_HALF;
}
if (GuiScreen.isShiftKeyDown()) {
flags |= IItemGridHandler.EXTRACT_SHIFT;
}
if (clickedButton == 2) {
flags |= IItemGridHandler.EXTRACT_SINGLE;
}
RefinedStorage.INSTANCE.network.sendToServer(new MessageGridPull(stack.getHash(), flags));
} }
} }
} }

View File

@@ -6,32 +6,40 @@ import net.minecraft.client.Minecraft;
import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.ByteBufUtils;
import refinedstorage.api.network.NetworkUtils;
import refinedstorage.gui.GuiBase; import refinedstorage.gui.GuiBase;
import java.util.Locale; import java.util.Locale;
public class ClientStackFluid implements IClientStack { public class ClientStackFluid implements IClientStack {
private int hash;
private FluidStack stack; private FluidStack stack;
private FluidStackRenderer renderer; private FluidStackRenderer renderer;
public ClientStackFluid(ByteBuf buf) { public ClientStackFluid(ByteBuf buf) {
stack = new FluidStack(FluidRegistry.getFluid(ByteBufUtils.readUTF8String(buf)), buf.readInt(), ByteBufUtils.readTag(buf)); this.hash = buf.readInt();
renderer = new FluidStackRenderer(1000, false, 16, 16, null); this.stack = new FluidStack(FluidRegistry.getFluid(ByteBufUtils.readUTF8String(buf)), buf.readInt(), ByteBufUtils.readTag(buf));
// @TODO: Switch to own implementation
this.renderer = new FluidStackRenderer(1000, false, 16, 16, null);
} }
public FluidStack getStack() { public FluidStack getStack() {
return stack; return stack;
} }
@Override
public int getHash() {
return hash;
}
@Override @Override
public String getName() { public String getName() {
return stack.getFluid().getLocalizedName(stack); return stack.getFluid().getLocalizedName(stack);
} }
// @todo: ;-)
@Override @Override
public String getModId() { public String getModId() {
return "minecraft"; return stack.getFluid().getStill(stack).getResourceDomain();
} }
@Override @Override
@@ -57,6 +65,7 @@ public class ClientStackFluid implements IClientStack {
} }
public static void write(ByteBuf buf, FluidStack stack) { public static void write(ByteBuf buf, FluidStack stack) {
buf.writeInt(NetworkUtils.getFluidStackHashCode(stack));
ByteBufUtils.writeUTF8String(buf, FluidRegistry.getFluidName(stack.getFluid())); ByteBufUtils.writeUTF8String(buf, FluidRegistry.getFluidName(stack.getFluid()));
buf.writeInt(stack.amount); buf.writeInt(stack.amount);
ByteBufUtils.writeTag(buf, stack.tag); ByteBufUtils.writeTag(buf, stack.tag);

View File

@@ -24,10 +24,6 @@ public class ClientStackItem implements IClientStack {
craftable = buf.readBoolean(); craftable = buf.readBoolean();
} }
public int getHash() {
return hash;
}
public ItemStack getStack() { public ItemStack getStack() {
return stack; return stack;
} }
@@ -36,6 +32,11 @@ public class ClientStackItem implements IClientStack {
return craftable; return craftable;
} }
@Override
public int getHash() {
return hash;
}
@Override @Override
public String getName() { public String getName() {
return stack.getDisplayName(); return stack.getDisplayName();

View File

@@ -3,6 +3,8 @@ package refinedstorage.gui.grid.stack;
import refinedstorage.gui.GuiBase; import refinedstorage.gui.GuiBase;
public interface IClientStack { public interface IClientStack {
int getHash();
String getName(); String getName();
String getModId(); String getModId();

View File

@@ -36,7 +36,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<Messa
Container container = player.openContainer; Container container = player.openContainer;
if (container instanceof ContainerGrid) { if (container instanceof ContainerGrid) {
IItemGridHandler handler = ((ContainerGrid) container).getGrid().getHandler(); IItemGridHandler handler = ((ContainerGrid) container).getGrid().getItemHandler();
if (handler != null) { if (handler != null) {
handler.onCraftingRequested(message.hash, message.quantity); handler.onCraftingRequested(message.hash, message.quantity);

View File

@@ -0,0 +1,34 @@
package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.container.ContainerGrid;
public class MessageGridFluidInsertHeld extends MessageHandlerPlayerToServer<MessageGridFluidInsertHeld> implements IMessage {
public MessageGridFluidInsertHeld() {
}
@Override
public void fromBytes(ByteBuf buf) {
}
@Override
public void toBytes(ByteBuf buf) {
}
@Override
public void handle(MessageGridFluidInsertHeld message, EntityPlayerMP player) {
Container container = player.openContainer;
if (container instanceof ContainerGrid) {
IFluidGridHandler handler = ((ContainerGrid) container).getGrid().getFluidHandler();
if (handler != null) {
handler.onInsertHeldContainer(player);
}
}
}
}

View File

@@ -0,0 +1,46 @@
package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.container.ContainerGrid;
public class MessageGridFluidPull extends MessageHandlerPlayerToServer<MessageGridFluidPull> implements IMessage {
private int hash;
private boolean shift;
public MessageGridFluidPull() {
}
public MessageGridFluidPull(int hash, boolean shift) {
this.hash = hash;
this.shift = shift;
}
@Override
public void fromBytes(ByteBuf buf) {
hash = buf.readInt();
shift = buf.readBoolean();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(hash);
buf.writeBoolean(shift);
}
@Override
public void handle(MessageGridFluidPull message, EntityPlayerMP player) {
Container container = player.openContainer;
if (container instanceof ContainerGrid) {
IFluidGridHandler handler = ((ContainerGrid) container).getGrid().getFluidHandler();
if (handler != null) {
handler.onExtract(message.hash, message.shift, player);
}
}
}
}

View File

@@ -7,13 +7,13 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.container.ContainerGrid; import refinedstorage.container.ContainerGrid;
public class MessageGridInsertHeld extends MessageHandlerPlayerToServer<MessageGridInsertHeld> implements IMessage { public class MessageGridItemInsertHeld extends MessageHandlerPlayerToServer<MessageGridItemInsertHeld> implements IMessage {
private boolean single; private boolean single;
public MessageGridInsertHeld() { public MessageGridItemInsertHeld() {
} }
public MessageGridInsertHeld(boolean single) { public MessageGridItemInsertHeld(boolean single) {
this.single = single; this.single = single;
} }
@@ -28,11 +28,11 @@ public class MessageGridInsertHeld extends MessageHandlerPlayerToServer<MessageG
} }
@Override @Override
public void handle(MessageGridInsertHeld message, EntityPlayerMP player) { public void handle(MessageGridItemInsertHeld message, EntityPlayerMP player) {
Container container = player.openContainer; Container container = player.openContainer;
if (container instanceof ContainerGrid) { if (container instanceof ContainerGrid) {
IItemGridHandler handler = ((ContainerGrid) container).getGrid().getHandler(); IItemGridHandler handler = ((ContainerGrid) container).getGrid().getItemHandler();
if (handler != null) { if (handler != null) {
handler.onInsertHeldItem(message.single, player); handler.onInsertHeldItem(message.single, player);

View File

@@ -7,14 +7,14 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.container.ContainerGrid; import refinedstorage.container.ContainerGrid;
public class MessageGridPull extends MessageHandlerPlayerToServer<MessageGridPull> implements IMessage { public class MessageGridItemPull extends MessageHandlerPlayerToServer<MessageGridItemPull> implements IMessage {
private int hash; private int hash;
private int flags; private int flags;
public MessageGridPull() { public MessageGridItemPull() {
} }
public MessageGridPull(int hash, int flags) { public MessageGridItemPull(int hash, int flags) {
this.hash = hash; this.hash = hash;
this.flags = flags; this.flags = flags;
} }
@@ -32,11 +32,11 @@ public class MessageGridPull extends MessageHandlerPlayerToServer<MessageGridPul
} }
@Override @Override
public void handle(MessageGridPull message, EntityPlayerMP player) { public void handle(MessageGridItemPull message, EntityPlayerMP player) {
Container container = player.openContainer; Container container = player.openContainer;
if (container instanceof ContainerGrid) { if (container instanceof ContainerGrid) {
IItemGridHandler handler = ((ContainerGrid) container).getGrid().getHandler(); IItemGridHandler handler = ((ContainerGrid) container).getGrid().getItemHandler();
if (handler != null) { if (handler != null) {
handler.onExtract(message.hash, message.flags, player); handler.onExtract(message.hash, message.flags, player);

View File

@@ -44,8 +44,8 @@ public class CommonProxy {
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT); RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT);
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameterUpdate.class, MessageTileDataParameterUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameterUpdate.class, MessageTileDataParameterUpdate.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridInsertHeld.class, MessageGridInsertHeld.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridItemInsertHeld.class, MessageGridItemInsertHeld.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridPull.class, MessageGridPull.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridItemPull.class, MessageGridItemPull.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, id++, Side.SERVER);
@@ -56,6 +56,8 @@ public class CommonProxy {
RefinedStorage.INSTANCE.network.registerMessage(MessageGridItemDelta.class, MessageGridItemDelta.class, id++, Side.CLIENT); RefinedStorage.INSTANCE.network.registerMessage(MessageGridItemDelta.class, MessageGridItemDelta.class, id++, Side.CLIENT);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFluidUpdate.class, MessageGridFluidUpdate.class, id++, Side.CLIENT); RefinedStorage.INSTANCE.network.registerMessage(MessageGridFluidUpdate.class, MessageGridFluidUpdate.class, id++, Side.CLIENT);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFluidDelta.class, MessageGridFluidDelta.class, id++, Side.CLIENT); RefinedStorage.INSTANCE.network.registerMessage(MessageGridFluidDelta.class, MessageGridFluidDelta.class, id++, Side.CLIENT);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFluidPull.class, MessageGridFluidPull.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFluidInsertHeld.class, MessageGridFluidInsertHeld.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderClear.class, MessageProcessingPatternEncoderClear.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderClear.class, MessageProcessingPatternEncoderClear.class, id++, Side.SERVER);
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFilterUpdate.class, MessageGridFilterUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridFilterUpdate.class, MessageGridFilterUpdate.class, id++, Side.SERVER);

View File

@@ -23,6 +23,7 @@ import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingPatternContainer; import refinedstorage.api.autocrafting.ICraftingPatternContainer;
import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.*; import refinedstorage.api.network.*;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.CompareUtils;
import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorage;
@@ -34,6 +35,7 @@ import refinedstorage.apiimpl.autocrafting.CraftingPattern;
import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask; import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask;
import refinedstorage.apiimpl.network.NetworkNodeGraph; import refinedstorage.apiimpl.network.NetworkNodeGraph;
import refinedstorage.apiimpl.network.WirelessGridHandler; import refinedstorage.apiimpl.network.WirelessGridHandler;
import refinedstorage.apiimpl.network.grid.FluidGridHandler;
import refinedstorage.apiimpl.network.grid.ItemGridHandler; import refinedstorage.apiimpl.network.grid.ItemGridHandler;
import refinedstorage.apiimpl.storage.fluid.FluidUtils; import refinedstorage.apiimpl.storage.fluid.FluidUtils;
import refinedstorage.apiimpl.storage.fluid.GroupedFluidStorage; import refinedstorage.apiimpl.storage.fluid.GroupedFluidStorage;
@@ -146,6 +148,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
}; };
private ItemGridHandler itemGridHandler = new ItemGridHandler(this); private ItemGridHandler itemGridHandler = new ItemGridHandler(this);
private FluidGridHandler fluidGridHandler = new FluidGridHandler(this);
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this); private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this); private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this);
@@ -180,8 +184,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
dataManager.addParameter(ENERGY_CAPACITY); dataManager.addParameter(ENERGY_CAPACITY);
dataManager.addParameter(NODES); dataManager.addParameter(NODES);
fluidStorage.add(new FluidStack(FluidRegistry.WATER, 1000 * 32), false); fluidStorage.add(new FluidStack(FluidRegistry.WATER, 1000 * 32), true);
fluidStorage.add(new FluidStack(FluidRegistry.LAVA, 1000 * 64), false); fluidStorage.add(new FluidStack(FluidRegistry.LAVA, 1000 * 64), true);
if (IntegrationIC2.isLoaded()) { if (IntegrationIC2.isLoaded()) {
this.energyEU = new ControllerEnergyIC2(this); this.energyEU = new ControllerEnergyIC2(this);
@@ -325,6 +329,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
return itemGridHandler; return itemGridHandler;
} }
@Override
public IFluidGridHandler getFluidGridHandler() {
return fluidGridHandler;
}
@Override @Override
public IWirelessGridHandler getWirelessGridHandler() { public IWirelessGridHandler getWirelessGridHandler() {
return wirelessGridHandler; return wirelessGridHandler;

View File

@@ -1,6 +1,7 @@
package refinedstorage.tile.grid; package refinedstorage.tile.grid;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.block.EnumGridType; import refinedstorage.block.EnumGridType;
import refinedstorage.gui.grid.GridFilteredItem; import refinedstorage.gui.grid.GridFilteredItem;
@@ -14,7 +15,9 @@ public interface IGrid {
BlockPos getNetworkPosition(); BlockPos getNetworkPosition();
IItemGridHandler getHandler(); IItemGridHandler getItemHandler();
IFluidGridHandler getFluidHandler();
int getViewType(); int getViewType();

View File

@@ -16,6 +16,7 @@ import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageBlocks;
import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageItems;
import refinedstorage.api.network.NetworkUtils; import refinedstorage.api.network.NetworkUtils;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.CompareUtils;
import refinedstorage.block.BlockGrid; import refinedstorage.block.BlockGrid;
@@ -199,10 +200,15 @@ public class TileGrid extends TileNode implements IGrid {
} }
@Override @Override
public IItemGridHandler getHandler() { public IItemGridHandler getItemHandler() {
return isConnected() ? network.getItemGridHandler() : null; return isConnected() ? network.getItemGridHandler() : null;
} }
@Override
public IFluidGridHandler getFluidHandler() {
return isConnected() ? network.getFluidGridHandler() : null;
}
public InventoryCrafting getMatrix() { public InventoryCrafting getMatrix() {
return matrix; return matrix;
} }

View File

@@ -7,6 +7,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.api.network.grid.IFluidGridHandler;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.block.EnumGridType; import refinedstorage.block.EnumGridType;
import refinedstorage.gui.grid.GridFilteredItem; import refinedstorage.gui.grid.GridFilteredItem;
@@ -84,12 +85,17 @@ public class WirelessGrid implements IGrid {
} }
@Override @Override
public IItemGridHandler getHandler() { public IItemGridHandler getItemHandler() {
TileController controller = getController(); TileController controller = getController();
return controller != null ? controller.getItemGridHandler() : null; return controller != null ? controller.getItemGridHandler() : null;
} }
@Override
public IFluidGridHandler getFluidHandler() {
return null;
}
@Override @Override
public int getViewType() { public int getViewType() {
return viewType; return viewType;