Grid syncing
This commit is contained in:
@@ -1,12 +1,17 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.storage;
|
package com.raoulvdberge.refinedstorage.apiimpl.storage;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageCacheListener;
|
import com.raoulvdberge.refinedstorage.api.storage.IStorageCacheListener;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.grid.GridItemDeltaMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.grid.GridItemUpdateMessage;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemStack> {
|
public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemStack> {
|
||||||
@@ -20,7 +25,7 @@ public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttached() {
|
public void onAttached() {
|
||||||
// TODO RS.INSTANCE.network.sendTo(new MessageGridItemUpdate(network, network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)), player);
|
RS.NETWORK_HANDLER.sendTo(player, new GridItemUpdateMessage(network, network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -30,11 +35,15 @@ public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(@Nonnull ItemStack stack, int size) {
|
public void onChanged(@Nonnull ItemStack stack, int size) {
|
||||||
// TODO RS.INSTANCE.network.sendTo(new MessageGridItemDelta(network, network.getItemStorageTracker(), stack, size), player);
|
List<Pair<ItemStack, Integer>> deltas = new ArrayList<>();
|
||||||
|
|
||||||
|
deltas.add(Pair.of(stack, size));
|
||||||
|
|
||||||
|
onChangedBulk(deltas);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChangedBulk(@Nonnull List<Pair<ItemStack, Integer>> stacks) {
|
public void onChangedBulk(@Nonnull List<Pair<ItemStack, Integer>> stacks) {
|
||||||
// TODO RS.INSTANCE.network.sendTo(new MessageGridItemDelta(network, network.getItemStorageTracker(), stacks), player);
|
RS.NETWORK_HANDLER.sendTo(player, new GridItemDeltaMessage(network, stacks));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.storage.disk;
|
|||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSync;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSync;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageStorageDiskSizeRequest;
|
import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeRequestMessage;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -31,7 +31,7 @@ public class StorageDiskSync implements IStorageDiskSync {
|
|||||||
long lastSync = syncTime.getOrDefault(id, 0L);
|
long lastSync = syncTime.getOrDefault(id, 0L);
|
||||||
|
|
||||||
if (System.currentTimeMillis() - lastSync > THROTTLE_MS) {
|
if (System.currentTimeMillis() - lastSync > THROTTLE_MS) {
|
||||||
RS.NETWORK_HANDLER.sendToServer(new MessageStorageDiskSizeRequest(id));
|
RS.NETWORK_HANDLER.sendToServer(new StorageDiskSizeRequestMessage(id));
|
||||||
|
|
||||||
syncTime.put(id, System.currentTimeMillis());
|
syncTime.put(id, System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
|
|||||||
import com.raoulvdberge.refinedstorage.container.slot.legacy.DisabledLegacySlot;
|
import com.raoulvdberge.refinedstorage.container.slot.legacy.DisabledLegacySlot;
|
||||||
import com.raoulvdberge.refinedstorage.container.slot.legacy.FilterLegacySlot;
|
import com.raoulvdberge.refinedstorage.container.slot.legacy.FilterLegacySlot;
|
||||||
import com.raoulvdberge.refinedstorage.container.transfer.TransferManager;
|
import com.raoulvdberge.refinedstorage.container.transfer.TransferManager;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageSlotFilterFluidUpdate;
|
import com.raoulvdberge.refinedstorage.network.FluidFilterSlotUpdateMessage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.BaseTile;
|
import com.raoulvdberge.refinedstorage.tile.BaseTile;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataWatcher;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataWatcher;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
@@ -189,7 +189,7 @@ public abstract class BaseContainer extends Container {
|
|||||||
if (!API.instance().getComparer().isEqual(cached, actual, IComparer.COMPARE_QUANTITY | IComparer.COMPARE_NBT)) {
|
if (!API.instance().getComparer().isEqual(cached, actual, IComparer.COMPARE_QUANTITY | IComparer.COMPARE_NBT)) {
|
||||||
this.fluids.set(i, actual);
|
this.fluids.set(i, actual);
|
||||||
|
|
||||||
RS.NETWORK_HANDLER.sendTo((ServerPlayerEntity) getPlayer(), new MessageSlotFilterFluidUpdate(slot.slotNumber, actual));
|
RS.NETWORK_HANDLER.sendTo((ServerPlayerEntity) getPlayer(), new FluidFilterSlotUpdateMessage(slot.slotNumber, actual));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import com.raoulvdberge.refinedstorage.container.slot.CrafterManagerSlot;
|
|||||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
|
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.filtering.GridFilterParser;
|
import com.raoulvdberge.refinedstorage.screen.grid.filtering.GridFilterParser;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileCrafterManager;
|
import com.raoulvdberge.refinedstorage.tile.TileCrafterManager;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
@@ -172,7 +172,7 @@ public class CrafterManagerContainer extends BaseContainer {
|
|||||||
visible = false;
|
visible = false;
|
||||||
|
|
||||||
for (ItemStack output : pattern.getOutputs()) {
|
for (ItemStack output : pattern.getOutputs()) {
|
||||||
GridStackItem outputConverted = new GridStackItem(output);
|
ItemGridStack outputConverted = new ItemGridStack(output);
|
||||||
|
|
||||||
for (Predicate<IGridStack> filter : filters) {
|
for (Predicate<IGridStack> filter : filters) {
|
||||||
if (filter.test(outputConverted)) {
|
if (filter.test(outputConverted)) {
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package com.raoulvdberge.refinedstorage.container;
|
|||||||
import com.raoulvdberge.refinedstorage.container.slot.DisabledSlot;
|
import com.raoulvdberge.refinedstorage.container.slot.DisabledSlot;
|
||||||
import com.raoulvdberge.refinedstorage.container.slot.filter.DisabledFluidFilterSlot;
|
import com.raoulvdberge.refinedstorage.container.slot.filter.DisabledFluidFilterSlot;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
@@ -14,16 +14,16 @@ public class CraftingSettingsContainer extends BaseContainer {
|
|||||||
public CraftingSettingsContainer(PlayerEntity player, IGridStack stack) {
|
public CraftingSettingsContainer(PlayerEntity player, IGridStack stack) {
|
||||||
super(null, null, player, 0);
|
super(null, null, player, 0);
|
||||||
|
|
||||||
if (stack instanceof GridStackFluid) {
|
if (stack instanceof FluidGridStack) {
|
||||||
FluidInventory inventory = new FluidInventory(1);
|
FluidInventory inventory = new FluidInventory(1);
|
||||||
|
|
||||||
inventory.setFluid(0, ((GridStackFluid) stack).getStack());
|
inventory.setFluid(0, ((FluidGridStack) stack).getStack());
|
||||||
|
|
||||||
addSlot(new DisabledFluidFilterSlot(inventory, 0, 89, 48));
|
addSlot(new DisabledFluidFilterSlot(inventory, 0, 89, 48));
|
||||||
} else if (stack instanceof GridStackItem) {
|
} else if (stack instanceof ItemGridStack) {
|
||||||
ItemStackHandler handler = new ItemStackHandler(1);
|
ItemStackHandler handler = new ItemStackHandler(1);
|
||||||
|
|
||||||
handler.setStackInSlot(0, ItemHandlerHelper.copyStackWithSize(((GridStackItem) stack).getStack(), 1));
|
handler.setStackInSlot(0, ItemHandlerHelper.copyStackWithSize(((ItemGridStack) stack).getStack(), 1));
|
||||||
|
|
||||||
addSlot(new DisabledSlot(handler, 0, 89, 48));
|
addSlot(new DisabledSlot(handler, 0, 89, 48));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ import net.minecraftforge.fml.network.NetworkEvent;
|
|||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MessageFilterUpdate {
|
public class FilterUpdateMessage {
|
||||||
private int compare;
|
private int compare;
|
||||||
private int mode;
|
private int mode;
|
||||||
private boolean modFilter;
|
private boolean modFilter;
|
||||||
private String name;
|
private String name;
|
||||||
private int type;
|
private int type;
|
||||||
|
|
||||||
public MessageFilterUpdate(int compare, int mode, boolean modFilter, String name, int type) {
|
public FilterUpdateMessage(int compare, int mode, boolean modFilter, String name, int type) {
|
||||||
this.compare = compare;
|
this.compare = compare;
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
this.modFilter = modFilter;
|
this.modFilter = modFilter;
|
||||||
@@ -23,8 +23,8 @@ public class MessageFilterUpdate {
|
|||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageFilterUpdate decode(PacketBuffer buf) {
|
public static FilterUpdateMessage decode(PacketBuffer buf) {
|
||||||
return new MessageFilterUpdate(
|
return new FilterUpdateMessage(
|
||||||
buf.readInt(),
|
buf.readInt(),
|
||||||
buf.readInt(),
|
buf.readInt(),
|
||||||
buf.readBoolean(),
|
buf.readBoolean(),
|
||||||
@@ -33,7 +33,7 @@ public class MessageFilterUpdate {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(MessageFilterUpdate message, PacketBuffer buf) {
|
public static void encode(FilterUpdateMessage message, PacketBuffer buf) {
|
||||||
buf.writeInt(message.compare);
|
buf.writeInt(message.compare);
|
||||||
buf.writeInt(message.mode);
|
buf.writeInt(message.mode);
|
||||||
buf.writeBoolean(message.modFilter);
|
buf.writeBoolean(message.modFilter);
|
||||||
@@ -41,7 +41,7 @@ public class MessageFilterUpdate {
|
|||||||
buf.writeInt(message.type);
|
buf.writeInt(message.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(MessageFilterUpdate message, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(FilterUpdateMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().enqueueWork(() -> {
|
ctx.get().enqueueWork(() -> {
|
||||||
PlayerEntity player = ctx.get().getSender();
|
PlayerEntity player = ctx.get().getSender();
|
||||||
|
|
||||||
@@ -9,25 +9,25 @@ import net.minecraftforge.fml.network.NetworkEvent;
|
|||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MessageSlotFilterFluidUpdate {
|
public class FluidFilterSlotUpdateMessage {
|
||||||
private int containerSlot;
|
private int containerSlot;
|
||||||
private FluidStack stack;
|
private FluidStack stack;
|
||||||
|
|
||||||
public MessageSlotFilterFluidUpdate(int containerSlot, FluidStack stack) {
|
public FluidFilterSlotUpdateMessage(int containerSlot, FluidStack stack) {
|
||||||
this.containerSlot = containerSlot;
|
this.containerSlot = containerSlot;
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(MessageSlotFilterFluidUpdate message, PacketBuffer buf) {
|
public static void encode(FluidFilterSlotUpdateMessage message, PacketBuffer buf) {
|
||||||
buf.writeInt(message.containerSlot);
|
buf.writeInt(message.containerSlot);
|
||||||
message.stack.writeToPacket(buf);
|
message.stack.writeToPacket(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageSlotFilterFluidUpdate decode(PacketBuffer buf) {
|
public static FluidFilterSlotUpdateMessage decode(PacketBuffer buf) {
|
||||||
return new MessageSlotFilterFluidUpdate(buf.readInt(), FluidStack.readFromPacket(buf));
|
return new FluidFilterSlotUpdateMessage(buf.readInt(), FluidStack.readFromPacket(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(MessageSlotFilterFluidUpdate message, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(FluidFilterSlotUpdateMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
BaseScreen.executeLater(gui -> {
|
BaseScreen.executeLater(gui -> {
|
||||||
if (message.containerSlot >= 0 && message.containerSlot < gui.getContainer().inventorySlots.size()) {
|
if (message.containerSlot >= 0 && message.containerSlot < gui.getContainer().inventorySlots.size()) {
|
||||||
Slot slot = gui.getContainer().getSlot(message.containerSlot);
|
Slot slot = gui.getContainer().getSlot(message.containerSlot);
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
|
||||||
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 org.apache.commons.lang3.tuple.Pair;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class MessageGridItemDelta implements IMessage, IMessageHandler<MessageGridItemDelta, IMessage> {
|
|
||||||
@Nullable
|
|
||||||
private INetwork network;
|
|
||||||
private IStorageTracker<ItemStack> storageTracker;
|
|
||||||
|
|
||||||
private List<Pair<ItemStack, Integer>> deltas;
|
|
||||||
@Nullable
|
|
||||||
private ItemStack stack;
|
|
||||||
private int delta;
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private GridStackItem gridStack;
|
|
||||||
private List<Pair<GridStackItem, Integer>> gridStacks;
|
|
||||||
|
|
||||||
public MessageGridItemDelta() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridItemDelta(@Nullable INetwork network, IStorageTracker<ItemStack> storageTracker, ItemStack stack, int delta) {
|
|
||||||
this.network = network;
|
|
||||||
this.storageTracker = storageTracker;
|
|
||||||
this.stack = stack;
|
|
||||||
this.delta = delta;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridItemDelta(@Nullable INetwork network, IStorageTracker<ItemStack> storageTracker, List<Pair<ItemStack, Integer>> deltas) {
|
|
||||||
this.network = network;
|
|
||||||
this.storageTracker = storageTracker;
|
|
||||||
this.deltas = deltas;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
int size = buf.readInt();
|
|
||||||
|
|
||||||
if (size == 1) {
|
|
||||||
gridStack = new GridStackItem(buf);
|
|
||||||
delta = buf.readInt();
|
|
||||||
} else {
|
|
||||||
gridStacks = new LinkedList<>();
|
|
||||||
|
|
||||||
for (int i = 0; i < size; ++i) {
|
|
||||||
gridStacks.add(Pair.of(new GridStackItem(buf), buf.readInt()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
if (stack != null) {
|
|
||||||
buf.writeInt(1);
|
|
||||||
|
|
||||||
StackUtils.writeItemStack(buf, stack, network, false);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = storageTracker.get(stack);
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeInt(delta);
|
|
||||||
} else {
|
|
||||||
buf.writeInt(deltas.size());
|
|
||||||
|
|
||||||
for (Pair<ItemStack, Integer> delta : deltas) {
|
|
||||||
StackUtils.writeItemStack(buf, delta.getLeft(), network, false);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = storageTracker.get(delta.getLeft());
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeInt(delta.getRight());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMessage onMessage(MessageGridItemDelta message, MessageContext ctx) {
|
|
||||||
GuiBase.executeLater(GuiGrid.class, grid -> {
|
|
||||||
if (message.gridStack != null) {
|
|
||||||
grid.getView().postChange(message.gridStack, message.delta);
|
|
||||||
} else {
|
|
||||||
message.gridStacks.forEach(p -> grid.getView().postChange(p.getLeft(), p.getRight()));
|
|
||||||
}
|
|
||||||
|
|
||||||
grid.getView().sort();
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.view.GridViewItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
|
||||||
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 java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public class MessageGridItemUpdate implements IMessage, IMessageHandler<MessageGridItemUpdate, IMessage> {
|
|
||||||
private Consumer<ByteBuf> sendHandler;
|
|
||||||
private boolean canCraft;
|
|
||||||
private List<IGridStack> stacks = new ArrayList<>();
|
|
||||||
|
|
||||||
public MessageGridItemUpdate() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridItemUpdate(INetwork network, boolean canCraft) {
|
|
||||||
this.sendHandler = (buf) -> {
|
|
||||||
int size = network.getItemStorageCache().getList().getStacks().size();
|
|
||||||
|
|
||||||
for (ICraftingPattern pattern : network.getCraftingManager().getPatterns()) {
|
|
||||||
size += pattern.getOutputs().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeInt(size);
|
|
||||||
|
|
||||||
for (ItemStack stack : network.getItemStorageCache().getList().getStacks()) {
|
|
||||||
StackUtils.writeItemStack(buf, stack, network, false);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = network.getItemStorageTracker().get(stack);
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ICraftingPattern pattern : network.getCraftingManager().getPatterns()) {
|
|
||||||
for (ItemStack output : pattern.getOutputs()) {
|
|
||||||
StackUtils.writeItemStack(buf, output, network, true);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = network.getItemStorageTracker().get(output);
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.canCraft = canCraft;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridItemUpdate(Consumer<ByteBuf> sendHandler, boolean canCraft) {
|
|
||||||
this.sendHandler = sendHandler;
|
|
||||||
this.canCraft = canCraft;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
canCraft = buf.readBoolean();
|
|
||||||
|
|
||||||
int items = buf.readInt();
|
|
||||||
|
|
||||||
for (int i = 0; i < items; ++i) {
|
|
||||||
this.stacks.add(new GridStackItem(buf));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
buf.writeBoolean(canCraft);
|
|
||||||
|
|
||||||
sendHandler.accept(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMessage onMessage(MessageGridItemUpdate message, MessageContext ctx) {
|
|
||||||
GuiBase.executeLater(GuiGrid.class, grid -> {
|
|
||||||
grid.setView(new GridViewItem(grid, GuiGrid.getDefaultSorter(), GuiGrid.getSorters()));
|
|
||||||
grid.getView().setCanCraft(message.canCraft);
|
|
||||||
grid.getView().setStacks(message.stacks);
|
|
||||||
grid.getView().sort();
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,12 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeRequestMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeResponseMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.grid.GridItemDeltaMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.grid.GridItemUpdateMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.tiledata.TileDataParameterMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.tiledata.TileDataParameterUpdateMessage;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
import net.minecraftforge.common.util.FakePlayer;
|
||||||
@@ -20,12 +26,14 @@ public class NetworkHandler {
|
|||||||
public void register() {
|
public void register() {
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
handler.registerMessage(id++, MessageStorageDiskSizeRequest.class, MessageStorageDiskSizeRequest::encode, MessageStorageDiskSizeRequest::decode, MessageStorageDiskSizeRequest::handle);
|
handler.registerMessage(id++, StorageDiskSizeRequestMessage.class, StorageDiskSizeRequestMessage::encode, StorageDiskSizeRequestMessage::decode, StorageDiskSizeRequestMessage::handle);
|
||||||
handler.registerMessage(id++, MessageStorageDiskSizeResponse.class, MessageStorageDiskSizeResponse::encode, MessageStorageDiskSizeResponse::decode, MessageStorageDiskSizeResponse::handle);
|
handler.registerMessage(id++, StorageDiskSizeResponseMessage.class, StorageDiskSizeResponseMessage::encode, StorageDiskSizeResponseMessage::decode, StorageDiskSizeResponseMessage::handle);
|
||||||
handler.registerMessage(id++, MessageFilterUpdate.class, MessageFilterUpdate::encode, MessageFilterUpdate::decode, MessageFilterUpdate::handle);
|
handler.registerMessage(id++, FilterUpdateMessage.class, FilterUpdateMessage::encode, FilterUpdateMessage::decode, FilterUpdateMessage::handle);
|
||||||
handler.registerMessage(id++, MessageSlotFilterFluidUpdate.class, MessageSlotFilterFluidUpdate::encode, MessageSlotFilterFluidUpdate::decode, MessageSlotFilterFluidUpdate::handle);
|
handler.registerMessage(id++, FluidFilterSlotUpdateMessage.class, FluidFilterSlotUpdateMessage::encode, FluidFilterSlotUpdateMessage::decode, FluidFilterSlotUpdateMessage::handle);
|
||||||
handler.registerMessage(id++, MessageTileDataParameter.class, MessageTileDataParameter::encode, MessageTileDataParameter::decode, MessageTileDataParameter::handle);
|
handler.registerMessage(id++, TileDataParameterMessage.class, TileDataParameterMessage::encode, TileDataParameterMessage::decode, TileDataParameterMessage::handle);
|
||||||
handler.registerMessage(id++, MessageTileDataParameterUpdate.class, MessageTileDataParameterUpdate::encode, MessageTileDataParameterUpdate::decode, MessageTileDataParameterUpdate::handle);
|
handler.registerMessage(id++, TileDataParameterUpdateMessage.class, TileDataParameterUpdateMessage::encode, TileDataParameterUpdateMessage::decode, TileDataParameterUpdateMessage::handle);
|
||||||
|
handler.registerMessage(id++, GridItemUpdateMessage.class, GridItemUpdateMessage::encode, GridItemUpdateMessage::decode, GridItemUpdateMessage::handle);
|
||||||
|
handler.registerMessage(id++, GridItemDeltaMessage.class, GridItemDeltaMessage::encode, GridItemDeltaMessage::decode, GridItemDeltaMessage::handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToServer(Object message) {
|
public void sendToServer(Object message) {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
public static MessageXXX decode(PacketBuffer buf) {
|
||||||
|
return new MessageXXX(
|
||||||
|
buf.readInt(),
|
||||||
|
buf.readInt(),
|
||||||
|
buf.readBoolean(),
|
||||||
|
buf.readString(),
|
||||||
|
buf.readInt()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(MessageXXX message, PacketBuffer buf) {
|
||||||
|
buf.writeInt(message.compare);
|
||||||
|
buf.writeInt(message.mode);
|
||||||
|
buf.writeBoolean(message.modFilter);
|
||||||
|
buf.writeString(message.name);
|
||||||
|
buf.writeInt(message.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(MessageXXX message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
ctx.get().enqueueWork(() -> {
|
||||||
|
// XXX
|
||||||
|
});
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
package com.raoulvdberge.refinedstorage.network.disk;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
||||||
@@ -9,27 +9,27 @@ import net.minecraftforge.fml.network.NetworkEvent;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MessageStorageDiskSizeRequest {
|
public class StorageDiskSizeRequestMessage {
|
||||||
private UUID id;
|
private UUID id;
|
||||||
|
|
||||||
public MessageStorageDiskSizeRequest(UUID id) {
|
public StorageDiskSizeRequestMessage(UUID id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageStorageDiskSizeRequest decode(PacketBuffer buf) {
|
public static StorageDiskSizeRequestMessage decode(PacketBuffer buf) {
|
||||||
return new MessageStorageDiskSizeRequest(buf.readUniqueId());
|
return new StorageDiskSizeRequestMessage(buf.readUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(MessageStorageDiskSizeRequest message, PacketBuffer buf) {
|
public static void encode(StorageDiskSizeRequestMessage message, PacketBuffer buf) {
|
||||||
buf.writeUniqueId(message.id);
|
buf.writeUniqueId(message.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(MessageStorageDiskSizeRequest message, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(StorageDiskSizeRequestMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().enqueueWork(() -> {
|
ctx.get().enqueueWork(() -> {
|
||||||
IStorageDisk disk = API.instance().getStorageDiskManager(ctx.get().getSender().getServerWorld()).get(message.id);
|
IStorageDisk disk = API.instance().getStorageDiskManager(ctx.get().getSender().getServerWorld()).get(message.id);
|
||||||
|
|
||||||
if (disk != null) {
|
if (disk != null) {
|
||||||
RS.NETWORK_HANDLER.sendTo(ctx.get().getSender(), new MessageStorageDiskSizeResponse(message.id, disk.getStored(), disk.getCapacity()));
|
RS.NETWORK_HANDLER.sendTo(ctx.get().getSender(), new StorageDiskSizeResponseMessage(message.id, disk.getStored(), disk.getCapacity()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ctx.get().setPacketHandled(true);
|
ctx.get().setPacketHandled(true);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
package com.raoulvdberge.refinedstorage.network.disk;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskSync;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskSync;
|
||||||
@@ -9,28 +9,28 @@ import net.minecraftforge.fml.network.NetworkEvent;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MessageStorageDiskSizeResponse {
|
public class StorageDiskSizeResponseMessage {
|
||||||
private UUID id;
|
private UUID id;
|
||||||
private int stored;
|
private int stored;
|
||||||
private int capacity;
|
private int capacity;
|
||||||
|
|
||||||
public MessageStorageDiskSizeResponse(UUID id, int stored, int capacity) {
|
public StorageDiskSizeResponseMessage(UUID id, int stored, int capacity) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.stored = stored;
|
this.stored = stored;
|
||||||
this.capacity = capacity;
|
this.capacity = capacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(MessageStorageDiskSizeResponse message, PacketBuffer buf) {
|
public static void encode(StorageDiskSizeResponseMessage message, PacketBuffer buf) {
|
||||||
buf.writeUniqueId(message.id);
|
buf.writeUniqueId(message.id);
|
||||||
buf.writeInt(message.stored);
|
buf.writeInt(message.stored);
|
||||||
buf.writeInt(message.capacity);
|
buf.writeInt(message.capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageStorageDiskSizeResponse decode(PacketBuffer buf) {
|
public static StorageDiskSizeResponseMessage decode(PacketBuffer buf) {
|
||||||
return new MessageStorageDiskSizeResponse(buf.readUniqueId(), buf.readInt(), buf.readInt());
|
return new StorageDiskSizeResponseMessage(buf.readUniqueId(), buf.readInt(), buf.readInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(MessageStorageDiskSizeResponse message, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(StorageDiskSizeResponseMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().enqueueWork(() -> ((StorageDiskSync) API.instance().getStorageDiskSync()).setData(message.id, new StorageDiskSyncData(message.stored, message.capacity)));
|
ctx.get().enqueueWork(() -> ((StorageDiskSync) API.instance().getStorageDiskSync()).setData(message.id, new StorageDiskSyncData(message.stored, message.capacity)));
|
||||||
ctx.get().setPacketHandled(true);
|
ctx.get().setPacketHandled(true);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network.grid;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class GridItemDeltaMessage {
|
||||||
|
@Nullable
|
||||||
|
private INetwork network;
|
||||||
|
private List<Pair<ItemStack, Integer>> deltas;
|
||||||
|
|
||||||
|
private List<Pair<IGridStack, Integer>> gridStacks;
|
||||||
|
|
||||||
|
public GridItemDeltaMessage(INetwork network, List<Pair<ItemStack, Integer>> deltas) {
|
||||||
|
this.network = network;
|
||||||
|
this.deltas = deltas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GridItemDeltaMessage(List<Pair<IGridStack, Integer>> gridStacks) {
|
||||||
|
this.gridStacks = gridStacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GridItemDeltaMessage decode(PacketBuffer buf) {
|
||||||
|
int size = buf.readInt();
|
||||||
|
|
||||||
|
List<Pair<IGridStack, Integer>> gridStacks = new LinkedList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
gridStacks.add(Pair.of(StackUtils.readItemGridStack(buf), buf.readInt()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new GridItemDeltaMessage(gridStacks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(GridItemDeltaMessage message, PacketBuffer buf) {
|
||||||
|
buf.writeInt(message.deltas.size());
|
||||||
|
|
||||||
|
for (Pair<ItemStack, Integer> delta : message.deltas) {
|
||||||
|
StackUtils.writeItemGridStack(buf, delta.getLeft(), message.network, false, message.network.getItemStorageTracker().get(delta.getLeft()));
|
||||||
|
|
||||||
|
buf.writeInt(delta.getRight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(GridItemDeltaMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
BaseScreen.executeLater(GridScreen.class, grid -> {
|
||||||
|
message.gridStacks.forEach(p -> grid.getView().postChange(p.getLeft(), p.getRight()));
|
||||||
|
|
||||||
|
grid.getView().sort();
|
||||||
|
});
|
||||||
|
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network.grid;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.view.ItemGridView;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class GridItemUpdateMessage {
|
||||||
|
private INetwork network;
|
||||||
|
|
||||||
|
private boolean canCraft;
|
||||||
|
private List<IGridStack> stacks = new ArrayList<>();
|
||||||
|
|
||||||
|
public GridItemUpdateMessage(boolean canCraft, List<IGridStack> stacks) {
|
||||||
|
this.canCraft = canCraft;
|
||||||
|
this.stacks = stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GridItemUpdateMessage(INetwork network, boolean canCraft) {
|
||||||
|
this.network = network;
|
||||||
|
this.canCraft = canCraft;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GridItemUpdateMessage decode(PacketBuffer buf) {
|
||||||
|
boolean canCraft = buf.readBoolean();
|
||||||
|
|
||||||
|
int size = buf.readInt();
|
||||||
|
|
||||||
|
List<IGridStack> stacks = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
stacks.add(StackUtils.readItemGridStack(buf));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new GridItemUpdateMessage(canCraft, stacks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(GridItemUpdateMessage message, PacketBuffer buf) {
|
||||||
|
buf.writeBoolean(message.canCraft);
|
||||||
|
|
||||||
|
int size = message.network.getItemStorageCache().getList().getStacks().size();
|
||||||
|
|
||||||
|
for (ICraftingPattern pattern : message.network.getCraftingManager().getPatterns()) {
|
||||||
|
size += pattern.getOutputs().size();
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.writeInt(size);
|
||||||
|
|
||||||
|
for (ItemStack stack : message.network.getItemStorageCache().getList().getStacks()) {
|
||||||
|
StackUtils.writeItemGridStack(buf, stack, message.network, false, message.network.getItemStorageTracker().get(stack));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ICraftingPattern pattern : message.network.getCraftingManager().getPatterns()) {
|
||||||
|
for (ItemStack output : pattern.getOutputs()) {
|
||||||
|
StackUtils.writeItemGridStack(buf, output, message.network, true, message.network.getItemStorageTracker().get(output));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(GridItemUpdateMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
BaseScreen.executeLater(GridScreen.class, grid -> {
|
||||||
|
grid.setView(new ItemGridView(grid, GridScreen.getDefaultSorter(), GridScreen.getSorters()));
|
||||||
|
grid.getView().setCanCraft(message.canCraft);
|
||||||
|
grid.getView().setStacks(message.stacks);
|
||||||
|
grid.getView().sort();
|
||||||
|
});
|
||||||
|
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
package com.raoulvdberge.refinedstorage.network.tiledata;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
@@ -8,18 +8,18 @@ import net.minecraftforge.fml.network.NetworkEvent;
|
|||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MessageTileDataParameter {
|
public class TileDataParameterMessage {
|
||||||
private TileEntity tile;
|
private TileEntity tile;
|
||||||
private TileDataParameter parameter;
|
private TileDataParameter parameter;
|
||||||
private boolean initial;
|
private boolean initial;
|
||||||
|
|
||||||
public MessageTileDataParameter(TileEntity tile, TileDataParameter parameter, boolean initial) {
|
public TileDataParameterMessage(TileEntity tile, TileDataParameter parameter, boolean initial) {
|
||||||
this.tile = tile;
|
this.tile = tile;
|
||||||
this.parameter = parameter;
|
this.parameter = parameter;
|
||||||
this.initial = initial;
|
this.initial = initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageTileDataParameter decode(PacketBuffer buf) {
|
public static TileDataParameterMessage decode(PacketBuffer buf) {
|
||||||
int id = buf.readInt();
|
int id = buf.readInt();
|
||||||
boolean initial = buf.readBoolean();
|
boolean initial = buf.readBoolean();
|
||||||
|
|
||||||
@@ -33,17 +33,17 @@ public class MessageTileDataParameter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MessageTileDataParameter(null, null, initial);
|
return new TileDataParameterMessage(null, null, initial);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(MessageTileDataParameter message, PacketBuffer buf) {
|
public static void encode(TileDataParameterMessage message, PacketBuffer buf) {
|
||||||
buf.writeInt(message.parameter.getId());
|
buf.writeInt(message.parameter.getId());
|
||||||
buf.writeBoolean(message.initial);
|
buf.writeBoolean(message.initial);
|
||||||
|
|
||||||
message.parameter.getSerializer().write(buf, message.parameter.getValueProducer().apply(message.tile));
|
message.parameter.getSerializer().write(buf, message.parameter.getValueProducer().apply(message.tile));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(MessageTileDataParameter message, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(TileDataParameterMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().setPacketHandled(true);
|
ctx.get().setPacketHandled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
package com.raoulvdberge.refinedstorage.network.tiledata;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.container.BaseContainer;
|
import com.raoulvdberge.refinedstorage.container.BaseContainer;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||||
@@ -10,16 +10,16 @@ import net.minecraftforge.fml.network.NetworkEvent;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MessageTileDataParameterUpdate {
|
public class TileDataParameterUpdateMessage {
|
||||||
private TileDataParameter parameter;
|
private TileDataParameter parameter;
|
||||||
private Object value;
|
private Object value;
|
||||||
|
|
||||||
public MessageTileDataParameterUpdate(TileDataParameter parameter, Object value) {
|
public TileDataParameterUpdateMessage(TileDataParameter parameter, Object value) {
|
||||||
this.parameter = parameter;
|
this.parameter = parameter;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageTileDataParameterUpdate decode(PacketBuffer buf) {
|
public static TileDataParameterUpdateMessage decode(PacketBuffer buf) {
|
||||||
int id = buf.readInt();
|
int id = buf.readInt();
|
||||||
|
|
||||||
TileDataParameter parameter = TileDataManager.getParameter(id);
|
TileDataParameter parameter = TileDataManager.getParameter(id);
|
||||||
@@ -33,16 +33,16 @@ public class MessageTileDataParameterUpdate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MessageTileDataParameterUpdate(parameter, value);
|
return new TileDataParameterUpdateMessage(parameter, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(MessageTileDataParameterUpdate message, PacketBuffer buf) {
|
public static void encode(TileDataParameterUpdateMessage message, PacketBuffer buf) {
|
||||||
buf.writeInt(message.parameter.getId());
|
buf.writeInt(message.parameter.getId());
|
||||||
|
|
||||||
message.parameter.getSerializer().write(buf, message.value);
|
message.parameter.getSerializer().write(buf, message.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(MessageTileDataParameterUpdate message, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(TileDataParameterUpdateMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().enqueueWork(() -> {
|
ctx.get().enqueueWork(() -> {
|
||||||
Container c = ctx.get().getSender().openContainer;
|
Container c = ctx.get().getSender().openContainer;
|
||||||
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.raoulvdberge.refinedstorage.screen;
|
package com.raoulvdberge.refinedstorage.screen;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
|
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
|
||||||
import com.raoulvdberge.refinedstorage.render.FluidRenderer;
|
import com.raoulvdberge.refinedstorage.render.FluidRenderer;
|
||||||
@@ -270,7 +269,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void renderQuantity(int x, int y, String qty) {
|
public void renderQuantity(int x, int y, String qty) {
|
||||||
boolean large = /* TODO font.getUnicodeFlag() ||*/ RS.INSTANCE.config.largeFont;
|
boolean large = minecraft.getForceUnicodeFont() /* TODO || RS.INSTANCE.config.largeFont*/;
|
||||||
|
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
GlStateManager.translatef(x, y, 1);
|
GlStateManager.translatef(x, y, 1);
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
|
|||||||
|
|
||||||
renderItem(x, y + 5, node.getStack());
|
renderItem(x, y + 5, node.getStack());
|
||||||
|
|
||||||
float scale = /*TODO fontRenderer.getUnicodeFlag() ? 1F :*/ 0.5F;
|
float scale = minecraft.getForceUnicodeFont() ? 1F : 0.5F;
|
||||||
|
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
GlStateManager.scalef(scale, scale, 1);
|
GlStateManager.scalef(scale, scale, 1);
|
||||||
@@ -107,7 +107,7 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
|
|||||||
renderString(
|
renderString(
|
||||||
RenderUtils.getOffsetOnScale(x + 1, scale),
|
RenderUtils.getOffsetOnScale(x + 1, scale),
|
||||||
RenderUtils.getOffsetOnScale(y - 2, scale),
|
RenderUtils.getOffsetOnScale(y - 2, scale),
|
||||||
trimNameIfNeeded(/*TODO !fontRenderer.getUnicodeFlag()*/false, node.getStack().getDisplayName().getString()) // TODO
|
trimNameIfNeeded(!minecraft.getForceUnicodeFont(), node.getStack().getDisplayName().getString())
|
||||||
);
|
);
|
||||||
renderString(RenderUtils.getOffsetOnScale(x + 21, scale), RenderUtils.getOffsetOnScale(y + 10, scale), node.getAmount() + "x");
|
renderString(RenderUtils.getOffsetOnScale(x + 21, scale), RenderUtils.getOffsetOnScale(y + 10, scale), node.getAmount() + "x");
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
|||||||
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||||
import com.raoulvdberge.refinedstorage.container.FilterContainer;
|
import com.raoulvdberge.refinedstorage.container.FilterContainer;
|
||||||
import com.raoulvdberge.refinedstorage.item.FilterItem;
|
import com.raoulvdberge.refinedstorage.item.FilterItem;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageFilterUpdate;
|
import com.raoulvdberge.refinedstorage.network.FilterUpdateMessage;
|
||||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.FilterTypeSideButton;
|
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.FilterTypeSideButton;
|
||||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||||
import net.minecraft.client.gui.widget.button.Button;
|
import net.minecraft.client.gui.widget.button.Button;
|
||||||
@@ -128,6 +128,6 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendUpdate() {
|
public void sendUpdate() {
|
||||||
RS.NETWORK_HANDLER.sendToServer(new MessageFilterUpdate(compare, mode, modFilter, nameField.getText(), type));
|
RS.NETWORK_HANDLER.sendToServer(new FilterUpdateMessage(compare, mode, modFilter, nameField.getText(), type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ import com.raoulvdberge.refinedstorage.container.GridContainer;
|
|||||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
|
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.sorting.*;
|
import com.raoulvdberge.refinedstorage.screen.grid.sorting.*;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.view.GridViewFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.view.GridViewItem;
|
import com.raoulvdberge.refinedstorage.screen.grid.view.FluidGridView;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.view.IGridView;
|
import com.raoulvdberge.refinedstorage.screen.grid.view.IGridView;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.view.ItemGridView;
|
||||||
import com.raoulvdberge.refinedstorage.screen.widget.ScrollbarWidget;
|
import com.raoulvdberge.refinedstorage.screen.widget.ScrollbarWidget;
|
||||||
import com.raoulvdberge.refinedstorage.screen.widget.SearchWidget;
|
import com.raoulvdberge.refinedstorage.screen.widget.SearchWidget;
|
||||||
import com.raoulvdberge.refinedstorage.screen.widget.TabListWidget;
|
import com.raoulvdberge.refinedstorage.screen.widget.TabListWidget;
|
||||||
@@ -62,7 +62,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
|
|||||||
super(container, 227, 0, inventory, title);
|
super(container, 227, 0, inventory, title);
|
||||||
|
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
this.view = grid.getGridType() == GridType.FLUID ? new GridViewFluid(this, getDefaultSorter(), getSorters()) : new GridViewItem(this, getDefaultSorter(), getSorters());
|
this.view = grid.getGridType() == GridType.FLUID ? new FluidGridView(this, getDefaultSorter(), getSorters()) : new ItemGridView(this, getDefaultSorter(), getSorters());
|
||||||
this.wasConnected = this.grid.isActive();
|
this.wasConnected = this.grid.isActive();
|
||||||
this.tabs = new TabListWidget(this, new ElementDrawers(this, font), grid::getTabs, grid::getTotalTabPages, grid::getTabPage, grid::getTabSelected, IGrid.TABS_PER_PAGE);
|
this.tabs = new TabListWidget(this, new ElementDrawers(this, font), grid::getTabs, grid::getTotalTabPages, grid::getTabPage, grid::getTabSelected, IGrid.TABS_PER_PAGE);
|
||||||
this.tabs.addListener(new TabListWidget.ITabListListener() {
|
this.tabs.addListener(new TabListWidget.ITabListListener() {
|
||||||
@@ -406,9 +406,10 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
|
|||||||
smallTextLines.add(TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName()));
|
smallTextLines.add(TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack stack = gridStack instanceof GridStackItem ? ((GridStackItem) gridStack).getStack() : ItemStack.EMPTY;
|
ItemStack stack = gridStack instanceof ItemGridStack ? ((ItemGridStack) gridStack).getStack() : ItemStack.EMPTY;
|
||||||
|
|
||||||
RenderUtils.drawTooltipWithSmallText(textLines, smallTextLines, RS.INSTANCE.config.detailedTooltip, stack, mouseX, mouseY, xSize, ySize, font);
|
// @TODO DetailedToolTip
|
||||||
|
RenderUtils.drawTooltipWithSmallText(textLines, smallTextLines, true, stack, mouseX, mouseY, xSize, ySize, font);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -542,15 +543,15 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
|
|||||||
public static List<IGridSorter> getSorters() {
|
public static List<IGridSorter> getSorters() {
|
||||||
List<IGridSorter> sorters = new LinkedList<>();
|
List<IGridSorter> sorters = new LinkedList<>();
|
||||||
sorters.add(getDefaultSorter());
|
sorters.add(getDefaultSorter());
|
||||||
sorters.add(new GridSorterQuantity());
|
sorters.add(new QuantityGridSorter());
|
||||||
sorters.add(new GridSorterID());
|
sorters.add(new IdGridSorter());
|
||||||
sorters.add(new GridSorterInventoryTweaks());
|
sorters.add(new LastModifiedGridSorter());
|
||||||
sorters.add(new GridSorterLastModified());
|
sorters.add(new InvTweaksGridSorter());
|
||||||
|
|
||||||
return sorters;
|
return sorters;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IGridSorter getDefaultSorter() {
|
public static IGridSorter getDefaultSorter() {
|
||||||
return new GridSorterName();
|
return new NameGridSorter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.google.common.primitives.Ints;
|
|||||||
import com.raoulvdberge.refinedstorage.container.CraftingSettingsContainer;
|
import com.raoulvdberge.refinedstorage.container.CraftingSettingsContainer;
|
||||||
import com.raoulvdberge.refinedstorage.screen.AmountSpecifyingScreen;
|
import com.raoulvdberge.refinedstorage.screen.AmountSpecifyingScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
@@ -32,7 +32,7 @@ public class GuiGridCraftingSettings extends AmountSpecifyingScreen<CraftingSett
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int[] getIncrements() {
|
protected int[] getIncrements() {
|
||||||
if (stack instanceof GridStackFluid) {
|
if (stack instanceof FluidGridStack) {
|
||||||
return new int[]{
|
return new int[]{
|
||||||
100, 500, 1000,
|
100, 500, 1000,
|
||||||
-100, -500, -1000
|
-100, -500, -1000
|
||||||
@@ -47,7 +47,7 @@ public class GuiGridCraftingSettings extends AmountSpecifyingScreen<CraftingSett
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getDefaultAmount() {
|
protected int getDefaultAmount() {
|
||||||
return stack instanceof GridStackFluid ? FluidAttributes.BUCKET_VOLUME : 1;
|
return stack instanceof FluidGridStack ? FluidAttributes.BUCKET_VOLUME : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
package com.raoulvdberge.refinedstorage.screen.grid.filtering;
|
package com.raoulvdberge.refinedstorage.screen.grid.filtering;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterCraftable implements Predicate<IGridStack> {
|
public class CraftableGridFilter implements Predicate<IGridStack> {
|
||||||
private boolean craftable;
|
private boolean craftable;
|
||||||
|
|
||||||
public GridFilterCraftable(boolean craftable) {
|
public CraftableGridFilter(boolean craftable) {
|
||||||
this.craftable = craftable;
|
this.craftable = craftable;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(IGridStack stack) {
|
public boolean test(IGridStack stack) {
|
||||||
return stack instanceof GridStackItem && stack.isCraftable() == craftable;
|
return stack instanceof ItemGridStack && stack.isCraftable() == craftable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,19 +2,19 @@ package com.raoulvdberge.refinedstorage.screen.grid.filtering;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterFilter implements Predicate<IGridStack> {
|
public class FilterGridFilter implements Predicate<IGridStack> {
|
||||||
private List<IFilter> filters;
|
private List<IFilter> filters;
|
||||||
|
|
||||||
public GridFilterFilter(List<IFilter> filters) {
|
public FilterGridFilter(List<IFilter> filters) {
|
||||||
this.filters = filters;
|
this.filters = filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ public class GridFilterFilter implements Predicate<IGridStack> {
|
|||||||
for (IFilter filter : filters) {
|
for (IFilter filter : filters) {
|
||||||
lastMode = filter.getMode();
|
lastMode = filter.getMode();
|
||||||
|
|
||||||
if (stack instanceof GridStackItem && filter.getStack() instanceof ItemStack) {
|
if (stack instanceof ItemGridStack && filter.getStack() instanceof ItemStack) {
|
||||||
ItemStack stackInFilter = (ItemStack) filter.getStack();
|
ItemStack stackInFilter = (ItemStack) filter.getStack();
|
||||||
|
|
||||||
if (filter.isModFilter()) {
|
if (filter.isModFilter()) {
|
||||||
@@ -39,10 +39,10 @@ public class GridFilterFilter implements Predicate<IGridStack> {
|
|||||||
if (filterModId != null && filterModId.equals(stackModId)) {
|
if (filterModId != null && filterModId.equals(stackModId)) {
|
||||||
return filter.getMode() == IFilter.MODE_WHITELIST;
|
return filter.getMode() == IFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
} else if (API.instance().getComparer().isEqual(((GridStackItem) stack).getStack(), stackInFilter, filter.getCompare())) {
|
} else if (API.instance().getComparer().isEqual(((ItemGridStack) stack).getStack(), stackInFilter, filter.getCompare())) {
|
||||||
return filter.getMode() == IFilter.MODE_WHITELIST;
|
return filter.getMode() == IFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
} else if (stack instanceof GridStackFluid && filter.getStack() instanceof FluidStack) {
|
} else if (stack instanceof FluidGridStack && filter.getStack() instanceof FluidStack) {
|
||||||
FluidStack stackInFilter = (FluidStack) filter.getStack();
|
FluidStack stackInFilter = (FluidStack) filter.getStack();
|
||||||
|
|
||||||
if (filter.isModFilter()) {
|
if (filter.isModFilter()) {
|
||||||
@@ -51,7 +51,7 @@ public class GridFilterFilter implements Predicate<IGridStack> {
|
|||||||
if (stackInFilterModId != null && stackInFilterModId.equalsIgnoreCase(stack.getModId())) {
|
if (stackInFilterModId != null && stackInFilterModId.equalsIgnoreCase(stack.getModId())) {
|
||||||
return filter.getMode() == IFilter.MODE_WHITELIST;
|
return filter.getMode() == IFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
} else if (API.instance().getComparer().isEqual(((GridStackFluid) stack).getStack(), stackInFilter, filter.getCompare())) {
|
} else if (API.instance().getComparer().isEqual(((FluidGridStack) stack).getStack(), stackInFilter, filter.getCompare())) {
|
||||||
return filter.getMode() == IFilter.MODE_WHITELIST;
|
return filter.getMode() == IFilter.MODE_WHITELIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -25,19 +25,19 @@ public final class GridFilterParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gridFilters = new LinkedList<>();
|
gridFilters = new LinkedList<>();
|
||||||
gridFilters.add(new GridFilterOr(orPartFilters));
|
gridFilters.add(new OrGridFilter(orPartFilters));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (grid != null) {
|
if (grid != null) {
|
||||||
if (grid.getViewType() == IGrid.VIEW_TYPE_NON_CRAFTABLES) {
|
if (grid.getViewType() == IGrid.VIEW_TYPE_NON_CRAFTABLES) {
|
||||||
gridFilters.add(new GridFilterCraftable(false));
|
gridFilters.add(new CraftableGridFilter(false));
|
||||||
} else if (grid.getViewType() == IGrid.VIEW_TYPE_CRAFTABLES) {
|
} else if (grid.getViewType() == IGrid.VIEW_TYPE_CRAFTABLES) {
|
||||||
gridFilters.add(new GridFilterCraftable(true));
|
gridFilters.add(new CraftableGridFilter(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!filters.isEmpty()) {
|
if (!filters.isEmpty()) {
|
||||||
gridFilters.add(new GridFilterFilter(filters));
|
gridFilters.add(new FilterGridFilter(filters));
|
||||||
}
|
}
|
||||||
|
|
||||||
return gridFilters;
|
return gridFilters;
|
||||||
@@ -48,13 +48,13 @@ public final class GridFilterParser {
|
|||||||
|
|
||||||
for (String part : query.toLowerCase().trim().split(" ")) {
|
for (String part : query.toLowerCase().trim().split(" ")) {
|
||||||
if (part.startsWith("@")) {
|
if (part.startsWith("@")) {
|
||||||
gridFilters.add(new GridFilterMod(part.substring(1)));
|
gridFilters.add(new ModGridFilter(part.substring(1)));
|
||||||
} else if (part.startsWith("#")) {
|
} else if (part.startsWith("#")) {
|
||||||
gridFilters.add(new GridFilterTooltip(part.substring(1)));
|
gridFilters.add(new TooltipGridFilter(part.substring(1)));
|
||||||
} else if (part.startsWith("$")) {
|
} else if (part.startsWith("$")) {
|
||||||
gridFilters.add(new GridFilterOreDict(part.substring(1)));
|
gridFilters.add(new OredictGridFilter(part.substring(1)));
|
||||||
} else {
|
} else {
|
||||||
gridFilters.add(new GridFilterName(part));
|
gridFilters.add(new NameGridFilter(part));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterMod implements Predicate<IGridStack> {
|
public class ModGridFilter implements Predicate<IGridStack> {
|
||||||
private String inputModName;
|
private String inputModName;
|
||||||
|
|
||||||
public GridFilterMod(String inputModName) {
|
public ModGridFilter(String inputModName) {
|
||||||
this.inputModName = standardify(inputModName);
|
this.inputModName = standardify(inputModName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4,10 +4,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterName implements Predicate<IGridStack> {
|
public class NameGridFilter implements Predicate<IGridStack> {
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public GridFilterName(String name) {
|
public NameGridFilter(String name) {
|
||||||
this.name = name.toLowerCase();
|
this.name = name.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5,10 +5,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterOr implements Predicate<IGridStack> {
|
public class OrGridFilter implements Predicate<IGridStack> {
|
||||||
private List<List<Predicate<IGridStack>>> orPartFilters;
|
private List<List<Predicate<IGridStack>>> orPartFilters;
|
||||||
|
|
||||||
public GridFilterOr(List<List<Predicate<IGridStack>>> orPartFilters) {
|
public OrGridFilter(List<List<Predicate<IGridStack>>> orPartFilters) {
|
||||||
this.orPartFilters = orPartFilters;
|
this.orPartFilters = orPartFilters;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5,10 +5,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterOreDict implements Predicate<IGridStack> {
|
public class OredictGridFilter implements Predicate<IGridStack> {
|
||||||
private String oreName;
|
private String oreName;
|
||||||
|
|
||||||
public GridFilterOreDict(String oreName) {
|
public OredictGridFilter(String oreName) {
|
||||||
this.oreName = oreName.toLowerCase();
|
this.oreName = oreName.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4,10 +4,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class GridFilterTooltip implements Predicate<IGridStack> {
|
public class TooltipGridFilter implements Predicate<IGridStack> {
|
||||||
private String tooltip;
|
private String tooltip;
|
||||||
|
|
||||||
public GridFilterTooltip(String tooltip) {
|
public TooltipGridFilter(String tooltip) {
|
||||||
this.tooltip = tooltip.toLowerCase();
|
this.tooltip = tooltip.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6,5 +6,5 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
public interface IGridSorter {
|
public interface IGridSorter {
|
||||||
boolean isApplicable(IGrid grid);
|
boolean isApplicable(IGrid grid);
|
||||||
|
|
||||||
int compare(IGridStack left, IGridStack right, GridSorterDirection direction);
|
int compare(IGridStack left, IGridStack right, SortingDirection direction);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class GridSorterID implements IGridSorter {
|
public class IdGridSorter implements IGridSorter {
|
||||||
@Override
|
@Override
|
||||||
public boolean isApplicable(IGrid grid) {
|
public boolean isApplicable(IGrid grid) {
|
||||||
return grid.getSortingType() == IGrid.SORTING_TYPE_ID;
|
return grid.getSortingType() == IGrid.SORTING_TYPE_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
|
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
|
||||||
int x = left.getHash();
|
int x = left.getHash();
|
||||||
int y = right.getHash();
|
int y = right.getHash();
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@ public class GridSorterID implements IGridSorter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (x != y) {
|
if (x != y) {
|
||||||
if (sortingDirection == GridSorterDirection.DESCENDING) {
|
if (sortingDirection == SortingDirection.DESCENDING) {
|
||||||
return Integer.compare(x, y);
|
return Integer.compare(x, y);
|
||||||
} else if (sortingDirection == GridSorterDirection.ASCENDING) {
|
} else if (sortingDirection == SortingDirection.ASCENDING) {
|
||||||
return Integer.compare(y, x);
|
return Integer.compare(y, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
|||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
public class GridSorterInventoryTweaks implements IGridSorter {
|
public class InvTweaksGridSorter implements IGridSorter {
|
||||||
public static final String MOD_ID = "inventorytweaks";
|
public static final String MOD_ID = "inventorytweaks";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -13,7 +13,7 @@ public class GridSorterInventoryTweaks implements IGridSorter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(IGridStack left, IGridStack right, GridSorterDirection direction) {
|
public int compare(IGridStack left, IGridStack right, SortingDirection direction) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3,22 +3,22 @@ package com.raoulvdberge.refinedstorage.screen.grid.sorting;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
|
||||||
public class GridSorterLastModified implements IGridSorter {
|
public class LastModifiedGridSorter implements IGridSorter {
|
||||||
@Override
|
@Override
|
||||||
public boolean isApplicable(IGrid grid) {
|
public boolean isApplicable(IGrid grid) {
|
||||||
return grid.getSortingType() == IGrid.SORTING_TYPE_LAST_MODIFIED;
|
return grid.getSortingType() == IGrid.SORTING_TYPE_LAST_MODIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
|
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
|
||||||
long lt = left.getTrackerEntry() != null ? left.getTrackerEntry().getTime() : 0;
|
long lt = left.getTrackerEntry() != null ? left.getTrackerEntry().getTime() : 0;
|
||||||
long rt = right.getTrackerEntry() != null ? right.getTrackerEntry().getTime() : 0;
|
long rt = right.getTrackerEntry() != null ? right.getTrackerEntry().getTime() : 0;
|
||||||
|
|
||||||
if (lt != rt) {
|
if (lt != rt) {
|
||||||
// For "last modified" the comparison is reversed
|
// For "last modified" the comparison is reversed
|
||||||
if (sortingDirection == GridSorterDirection.DESCENDING) {
|
if (sortingDirection == SortingDirection.DESCENDING) {
|
||||||
return Long.compare(rt, lt);
|
return Long.compare(rt, lt);
|
||||||
} else if (sortingDirection == GridSorterDirection.ASCENDING) {
|
} else if (sortingDirection == SortingDirection.ASCENDING) {
|
||||||
return Long.compare(lt, rt);
|
return Long.compare(lt, rt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,20 +3,20 @@ package com.raoulvdberge.refinedstorage.screen.grid.sorting;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
|
||||||
public class GridSorterName implements IGridSorter {
|
public class NameGridSorter implements IGridSorter {
|
||||||
@Override
|
@Override
|
||||||
public boolean isApplicable(IGrid grid) {
|
public boolean isApplicable(IGrid grid) {
|
||||||
return grid.getSortingType() == IGrid.SORTING_TYPE_NAME;
|
return grid.getSortingType() == IGrid.SORTING_TYPE_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
|
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
|
||||||
String leftName = left.getName();
|
String leftName = left.getName();
|
||||||
String rightName = right.getName();
|
String rightName = right.getName();
|
||||||
|
|
||||||
if (sortingDirection == GridSorterDirection.ASCENDING) {
|
if (sortingDirection == SortingDirection.ASCENDING) {
|
||||||
return leftName.compareTo(rightName);
|
return leftName.compareTo(rightName);
|
||||||
} else if (sortingDirection == GridSorterDirection.DESCENDING) {
|
} else if (sortingDirection == SortingDirection.DESCENDING) {
|
||||||
return rightName.compareTo(leftName);
|
return rightName.compareTo(leftName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3,21 +3,21 @@ package com.raoulvdberge.refinedstorage.screen.grid.sorting;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
|
||||||
public class GridSorterQuantity implements IGridSorter {
|
public class QuantityGridSorter implements IGridSorter {
|
||||||
@Override
|
@Override
|
||||||
public boolean isApplicable(IGrid grid) {
|
public boolean isApplicable(IGrid grid) {
|
||||||
return grid.getSortingType() == IGrid.SORTING_TYPE_QUANTITY;
|
return grid.getSortingType() == IGrid.SORTING_TYPE_QUANTITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
|
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
|
||||||
int leftSize = left.getQuantity();
|
int leftSize = left.getQuantity();
|
||||||
int rightSize = right.getQuantity();
|
int rightSize = right.getQuantity();
|
||||||
|
|
||||||
if (leftSize != rightSize) {
|
if (leftSize != rightSize) {
|
||||||
if (sortingDirection == GridSorterDirection.ASCENDING) {
|
if (sortingDirection == SortingDirection.ASCENDING) {
|
||||||
return (leftSize > rightSize) ? 1 : -1;
|
return (leftSize > rightSize) ? 1 : -1;
|
||||||
} else if (sortingDirection == GridSorterDirection.DESCENDING) {
|
} else if (sortingDirection == SortingDirection.DESCENDING) {
|
||||||
return (rightSize > leftSize) ? 1 : -1;
|
return (rightSize > leftSize) ? 1 : -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.raoulvdberge.refinedstorage.screen.grid.sorting;
|
package com.raoulvdberge.refinedstorage.screen.grid.sorting;
|
||||||
|
|
||||||
public enum GridSorterDirection {
|
public enum SortingDirection {
|
||||||
ASCENDING,
|
ASCENDING,
|
||||||
DESCENDING
|
DESCENDING
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@ import net.minecraftforge.fluids.FluidStack;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class GridStackFluid implements IGridStack {
|
public class FluidGridStack implements IGridStack {
|
||||||
private int hash;
|
private int hash;
|
||||||
private FluidStack stack;
|
private FluidStack stack;
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -19,7 +19,7 @@ public class GridStackFluid implements IGridStack {
|
|||||||
private String modId;
|
private String modId;
|
||||||
private String modName;
|
private String modName;
|
||||||
|
|
||||||
public GridStackFluid(int hash, FluidStack stack, @Nullable IStorageTracker.IStorageTrackerEntry entry, boolean craftable, boolean displayCraftText) {
|
public FluidGridStack(int hash, FluidStack stack, @Nullable IStorageTracker.IStorageTrackerEntry entry, boolean craftable, boolean displayCraftText) {
|
||||||
this.hash = hash;
|
this.hash = hash;
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.entry = entry;
|
this.entry = entry;
|
||||||
@@ -73,7 +73,7 @@ public class GridStackFluid implements IGridStack {
|
|||||||
@Override
|
@Override
|
||||||
public String getModName() {
|
public String getModName() {
|
||||||
if (modName == null) {
|
if (modName == null) {
|
||||||
modName = GridStackItem.getModNameByModId(getModId());
|
modName = ItemGridStack.getModNameByModId(getModId());
|
||||||
|
|
||||||
if (modName == null) {
|
if (modName == null) {
|
||||||
modName = "???";
|
modName = "???";
|
||||||
@@ -3,12 +3,14 @@ package com.raoulvdberge.refinedstorage.screen.grid.stack;
|
|||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class GridStackItem implements IGridStack {
|
public class ItemGridStack implements IGridStack {
|
||||||
private int hash;
|
private int hash;
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private String cachedName;
|
private String cachedName;
|
||||||
@@ -21,11 +23,11 @@ public class GridStackItem implements IGridStack {
|
|||||||
private String modName;
|
private String modName;
|
||||||
private String tooltip;
|
private String tooltip;
|
||||||
|
|
||||||
public GridStackItem(ItemStack stack) {
|
public ItemGridStack(ItemStack stack) {
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GridStackItem(int hash, ItemStack stack, boolean craftable, boolean displayCraftText, IStorageTracker.IStorageTrackerEntry entry) {
|
public ItemGridStack(int hash, ItemStack stack, boolean craftable, boolean displayCraftText, IStorageTracker.IStorageTrackerEntry entry) {
|
||||||
this.hash = hash;
|
this.hash = hash;
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.craftable = craftable;
|
this.craftable = craftable;
|
||||||
@@ -129,8 +131,7 @@ public class GridStackItem implements IGridStack {
|
|||||||
public String getTooltip() {
|
public String getTooltip() {
|
||||||
if (tooltip == null) {
|
if (tooltip == null) {
|
||||||
try {
|
try {
|
||||||
tooltip = "dinosaur";//TODO
|
tooltip = RenderUtils.getTooltipFromItem(stack).stream().collect(Collectors.joining("\n"));
|
||||||
//tooltip = RenderUtils.getItemTooltip(stack).stream().collect(Collectors.joining("\n"));
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
tooltip = "";
|
tooltip = "";
|
||||||
}
|
}
|
||||||
@@ -3,15 +3,15 @@ package com.raoulvdberge.refinedstorage.screen.grid.view;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.filtering.GridFilterParser;
|
import com.raoulvdberge.refinedstorage.screen.grid.filtering.GridFilterParser;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.sorting.GridSorterDirection;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
|
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.sorting.SortingDirection;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public abstract class GridViewBase implements IGridView {
|
public abstract class BaseGridView implements IGridView {
|
||||||
private GridScreen gui;
|
private GridScreen screen;
|
||||||
private boolean canCraft;
|
private boolean canCraft;
|
||||||
|
|
||||||
private IGridSorter defaultSorter;
|
private IGridSorter defaultSorter;
|
||||||
@@ -20,8 +20,8 @@ public abstract class GridViewBase implements IGridView {
|
|||||||
private List<IGridStack> stacks = new ArrayList<>();
|
private List<IGridStack> stacks = new ArrayList<>();
|
||||||
protected Map<Integer, IGridStack> map = new HashMap<>();
|
protected Map<Integer, IGridStack> map = new HashMap<>();
|
||||||
|
|
||||||
public GridViewBase(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
|
public BaseGridView(GridScreen screen, IGridSorter defaultSorter, List<IGridSorter> sorters) {
|
||||||
this.gui = gui;
|
this.screen = screen;
|
||||||
this.defaultSorter = defaultSorter;
|
this.defaultSorter = defaultSorter;
|
||||||
this.sorters = sorters;
|
this.sorters = sorters;
|
||||||
}
|
}
|
||||||
@@ -35,14 +35,14 @@ public abstract class GridViewBase implements IGridView {
|
|||||||
public void sort() {
|
public void sort() {
|
||||||
List<IGridStack> stacks = new ArrayList<>();
|
List<IGridStack> stacks = new ArrayList<>();
|
||||||
|
|
||||||
if (gui.getGrid().isActive()) {
|
if (screen.getGrid().isActive()) {
|
||||||
stacks.addAll(map.values());
|
stacks.addAll(map.values());
|
||||||
|
|
||||||
IGrid grid = gui.getGrid();
|
IGrid grid = screen.getGrid();
|
||||||
|
|
||||||
List<Predicate<IGridStack>> filters = GridFilterParser.getFilters(
|
List<Predicate<IGridStack>> filters = GridFilterParser.getFilters(
|
||||||
grid,
|
grid,
|
||||||
gui.getSearchField() != null ? gui.getSearchField().getText() : "",
|
screen.getSearchField() != null ? screen.getSearchField().getText() : "",
|
||||||
(grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters()
|
(grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public abstract class GridViewBase implements IGridView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GridSorterDirection sortingDirection = grid.getSortingDirection() == IGrid.SORTING_DIRECTION_DESCENDING ? GridSorterDirection.DESCENDING : GridSorterDirection.ASCENDING;
|
SortingDirection sortingDirection = grid.getSortingDirection() == IGrid.SORTING_DIRECTION_DESCENDING ? SortingDirection.DESCENDING : SortingDirection.ASCENDING;
|
||||||
|
|
||||||
stacks.sort((left, right) -> defaultSorter.compare(left, right, sortingDirection));
|
stacks.sort((left, right) -> defaultSorter.compare(left, right, sortingDirection));
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ public abstract class GridViewBase implements IGridView {
|
|||||||
|
|
||||||
this.stacks = stacks;
|
this.stacks = stacks;
|
||||||
|
|
||||||
this.gui.updateScrollbar();
|
this.screen.updateScrollbar();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2,14 +2,14 @@ package com.raoulvdberge.refinedstorage.screen.grid.view;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
|
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GridViewFluid extends GridViewBase {
|
public class FluidGridView extends BaseGridView {
|
||||||
public GridViewFluid(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
|
public FluidGridView(GridScreen screen, IGridSorter defaultSorter, List<IGridSorter> sorters) {
|
||||||
super(gui, defaultSorter, sorters);
|
super(screen, defaultSorter, sorters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -28,14 +28,14 @@ public class GridViewFluid extends GridViewBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postChange(IGridStack stack, int delta) {
|
public void postChange(IGridStack stack, int delta) {
|
||||||
if (!(stack instanceof GridStackFluid)) {
|
if (!(stack instanceof FluidGridStack)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GridStackFluid existing = (GridStackFluid) map.get(stack.getHash());
|
FluidGridStack existing = (FluidGridStack) map.get(stack.getHash());
|
||||||
|
|
||||||
if (existing == null) {
|
if (existing == null) {
|
||||||
((GridStackFluid) stack).getStack().setAmount(delta);
|
((FluidGridStack) stack).getStack().setAmount(delta);
|
||||||
|
|
||||||
map.put(stack.getHash(), stack);
|
map.put(stack.getHash(), stack);
|
||||||
} else {
|
} else {
|
||||||
@@ -2,14 +2,14 @@ package com.raoulvdberge.refinedstorage.screen.grid.view;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
|
import com.raoulvdberge.refinedstorage.screen.grid.sorting.IGridSorter;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GridViewItem extends GridViewBase {
|
public class ItemGridView extends BaseGridView {
|
||||||
public GridViewItem(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
|
public ItemGridView(GridScreen screen, IGridSorter defaultSorter, List<IGridSorter> sorters) {
|
||||||
super(gui, defaultSorter, sorters);
|
super(screen, defaultSorter, sorters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -28,14 +28,14 @@ public class GridViewItem extends GridViewBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postChange(IGridStack stack, int delta) {
|
public void postChange(IGridStack stack, int delta) {
|
||||||
if (!(stack instanceof GridStackItem)) {
|
if (!(stack instanceof ItemGridStack)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GridStackItem existing = (GridStackItem) map.get(stack.getHash());
|
ItemGridStack existing = (ItemGridStack) map.get(stack.getHash());
|
||||||
|
|
||||||
if (existing == null) {
|
if (existing == null) {
|
||||||
((GridStackItem) stack).getStack().setCount(delta);
|
((ItemGridStack) stack).getStack().setCount(delta);
|
||||||
|
|
||||||
map.put(stack.getHash(), stack);
|
map.put(stack.getHash(), stack);
|
||||||
} else {
|
} else {
|
||||||
@@ -45,6 +45,7 @@ import com.raoulvdberge.refinedstorage.util.StackUtils;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
import net.minecraft.tileentity.ITickableTileEntity;
|
import net.minecraft.tileentity.ITickableTileEntity;
|
||||||
@@ -209,9 +210,14 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
|||||||
return craftingManager;
|
return craftingManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int ticks;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
|
if (++ticks % 20 == 0)
|
||||||
|
insertItem(new ItemStack(Items.DIRT), 10, Action.PERFORM);
|
||||||
|
|
||||||
if (canRun()) {
|
if (canRun()) {
|
||||||
craftingManager.update();
|
craftingManager.update();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile.data;
|
package com.raoulvdberge.refinedstorage.tile.data;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageTileDataParameterUpdate;
|
import com.raoulvdberge.refinedstorage.network.tiledata.TileDataParameterUpdateMessage;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -70,6 +70,6 @@ public class TileDataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void setParameter(TileDataParameter parameter, Object value) {
|
public static void setParameter(TileDataParameter parameter, Object value) {
|
||||||
RS.NETWORK_HANDLER.sendToServer(new MessageTileDataParameterUpdate(parameter, value));
|
RS.NETWORK_HANDLER.sendToServer(new TileDataParameterUpdateMessage(parameter, value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile.data;
|
package com.raoulvdberge.refinedstorage.tile.data;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageTileDataParameter;
|
import com.raoulvdberge.refinedstorage.network.tiledata.TileDataParameterMessage;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
|
|
||||||
public class TileDataWatcher {
|
public class TileDataWatcher {
|
||||||
@@ -54,6 +54,6 @@ public class TileDataWatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendParameter(boolean initial, TileDataParameter parameter) {
|
public void sendParameter(boolean initial, TileDataParameter parameter) {
|
||||||
RS.NETWORK_HANDLER.sendTo(player, new MessageTileDataParameter(manager.getTile(), parameter, initial));
|
RS.NETWORK_HANDLER.sendTo(player, new TileDataParameterMessage(manager.getTile(), parameter, initial));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,8 +185,7 @@ public final class RenderUtils {
|
|||||||
FontRenderer font = event.getFontRenderer();
|
FontRenderer font = event.getFontRenderer();
|
||||||
|
|
||||||
// RS BEGIN
|
// RS BEGIN
|
||||||
//float textScale = font.getUnicodeFlag() ? 1F : 0.7F;
|
float textScale = Minecraft.getInstance().getForceUnicodeFont() ? 1F : 0.7F;
|
||||||
float textScale = 1F;
|
|
||||||
// RS END
|
// RS END
|
||||||
|
|
||||||
GlStateManager.disableRescaleNormal();
|
GlStateManager.disableRescaleNormal();
|
||||||
@@ -281,7 +280,7 @@ public final class RenderUtils {
|
|||||||
font.drawStringWithShadow(
|
font.drawStringWithShadow(
|
||||||
TextFormatting.GRAY + smallTextLines.get(i),
|
TextFormatting.GRAY + smallTextLines.get(i),
|
||||||
RenderUtils.getOffsetOnScale(tooltipX, textScale),
|
RenderUtils.getOffsetOnScale(tooltipX, textScale),
|
||||||
RenderUtils.getOffsetOnScale(y - (/* TODO font.getUnicodeFlag() ? 2 : */0), textScale),
|
RenderUtils.getOffsetOnScale(y - (Minecraft.getInstance().getForceUnicodeFont() ? 2 : 0), textScale),
|
||||||
-1
|
-1
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -48,7 +48,7 @@ public final class StackUtils {
|
|||||||
Item item = stack.getItem();
|
Item item = stack.getItem();
|
||||||
|
|
||||||
buf.writeVarInt(Item.getIdFromItem(item));
|
buf.writeVarInt(Item.getIdFromItem(item));
|
||||||
buf.writeByte(stack.getCount());
|
buf.writeInt(stack.getCount());
|
||||||
|
|
||||||
CompoundNBT tag = null;
|
CompoundNBT tag = null;
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public final class StackUtils {
|
|||||||
return ItemStack.EMPTY;
|
return ItemStack.EMPTY;
|
||||||
} else {
|
} else {
|
||||||
int id = buf.readVarInt();
|
int id = buf.readVarInt();
|
||||||
int count = buf.readByte();
|
int count = buf.readInt();
|
||||||
|
|
||||||
ItemStack stack = new ItemStack(Item.getItemById(id), count);
|
ItemStack stack = new ItemStack(Item.getItemById(id), count);
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ public final class StackUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GridStackItem readItemGridStack(PacketBuffer buf) {
|
public static ItemGridStack readItemGridStack(PacketBuffer buf) {
|
||||||
ItemStack stack = readItemStack(buf);
|
ItemStack stack = readItemStack(buf);
|
||||||
int hash = buf.readInt();
|
int hash = buf.readInt();
|
||||||
boolean craftable = buf.readBoolean();
|
boolean craftable = buf.readBoolean();
|
||||||
@@ -110,7 +110,7 @@ public final class StackUtils {
|
|||||||
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return new GridStackItem(hash, stack, craftable, displayCraftText, entry);
|
return new ItemGridStack(hash, stack, craftable, displayCraftText, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeFluidGridStack(PacketBuffer buf, FluidStack stack, @Nullable INetwork network, boolean displayCraftText, @Nullable IStorageTracker.IStorageTrackerEntry entry) {
|
public static void writeFluidGridStack(PacketBuffer buf, FluidStack stack, @Nullable INetwork network, boolean displayCraftText, @Nullable IStorageTracker.IStorageTrackerEntry entry) {
|
||||||
@@ -136,7 +136,7 @@ public final class StackUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GridStackFluid readFluidGridStack(PacketBuffer buf) {
|
public static FluidGridStack readFluidGridStack(PacketBuffer buf) {
|
||||||
FluidStack stack = FluidStack.readFromPacket(buf);
|
FluidStack stack = FluidStack.readFromPacket(buf);
|
||||||
int hash = buf.readInt();
|
int hash = buf.readInt();
|
||||||
boolean craftable = buf.readBoolean();
|
boolean craftable = buf.readBoolean();
|
||||||
@@ -147,7 +147,7 @@ public final class StackUtils {
|
|||||||
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return new GridStackFluid(hash, stack, entry, craftable, displayCraftText);
|
return new FluidGridStack(hash, stack, entry, craftable, displayCraftText);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack nullToEmpty(@Nullable ItemStack stack) {
|
public static ItemStack nullToEmpty(@Nullable ItemStack stack) {
|
||||||
|
|||||||
Reference in New Issue
Block a user