Add fluid grid handler
This commit is contained in:
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
36
src/main/java/refinedstorage/api/network/grid/IFluidGridHandler.java
Executable file
36
src/main/java/refinedstorage/api/network/grid/IFluidGridHandler.java
Executable 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);
|
||||||
|
}
|
||||||
33
src/main/java/refinedstorage/apiimpl/network/grid/FluidGridHandler.java
Executable file
33
src/main/java/refinedstorage/apiimpl/network/grid/FluidGridHandler.java
Executable 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!");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
34
src/main/java/refinedstorage/network/MessageGridFluidInsertHeld.java
Executable file
34
src/main/java/refinedstorage/network/MessageGridFluidInsertHeld.java
Executable 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
src/main/java/refinedstorage/network/MessageGridFluidPull.java
Executable file
46
src/main/java/refinedstorage/network/MessageGridFluidPull.java
Executable 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
@@ -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);
|
||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user