Files
refinedstorage/src/main/java/refinedstorage/network/MessageGridFluidDelta.java
Raoul Van den Berge 1a3351311f Fluid Grid
2016-08-13 01:32:13 +02:00

62 lines
1.8 KiB
Java
Executable File

package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import refinedstorage.gui.grid.GuiGrid;
import refinedstorage.gui.grid.stack.ClientStackFluid;
public class MessageGridFluidDelta implements IMessage, IMessageHandler<MessageGridFluidDelta, IMessage> {
private FluidStack stack;
private int delta;
private ClientStackFluid clientStack;
public MessageGridFluidDelta() {
}
public MessageGridFluidDelta(FluidStack stack, int delta) {
this.stack = stack;
this.delta = delta;
}
@Override
public void fromBytes(ByteBuf buf) {
clientStack = new ClientStackFluid(buf);
delta = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
ClientStackFluid.write(buf, stack);
buf.writeInt(delta);
}
@Override
public IMessage onMessage(MessageGridFluidDelta message, MessageContext ctx) {
Fluid fluid = message.clientStack.getStack().getFluid();
for (ClientStackFluid stack : GuiGrid.FLUIDS.get(fluid)) {
if (stack.equals(message.clientStack)) {
if (stack.getStack().amount + message.delta == 0) {
GuiGrid.FLUIDS.remove(fluid, stack);
} else {
stack.getStack().amount += message.delta;
}
GuiGrid.markForSorting();
return null;
}
}
GuiGrid.FLUIDS.put(fluid, message.clientStack);
GuiGrid.markForSorting();
return null;
}
}