Grid syncing

This commit is contained in:
raoulvdberge
2019-10-08 21:18:10 +02:00
parent 51956e6e5c
commit e3cec30e18
47 changed files with 371 additions and 396 deletions

View File

@@ -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));
} }
} }

View File

@@ -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());
} }

View File

@@ -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));
} }
} }
} }

View File

@@ -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)) {

View File

@@ -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));
} }

View File

@@ -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();

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
} }

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
} }
} }

View File

@@ -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;

View File

@@ -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);

View File

@@ -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");

View File

@@ -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));
} }
} }

View File

@@ -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();
} }
} }

View File

@@ -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

View File

@@ -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;
} }
} }

View File

@@ -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;
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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);
} }

View File

@@ -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();
} }

View File

@@ -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;
} }

View File

@@ -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();
} }

View File

@@ -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();
} }

View File

@@ -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);
} }

View File

@@ -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);
} }
} }

View File

@@ -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;
} }

View File

@@ -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);
} }
} }

View File

@@ -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);
} }

View File

@@ -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;
} }
} }

View File

@@ -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
} }

View File

@@ -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 = "???";

View File

@@ -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 = "";
} }

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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();

View File

@@ -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));
} }
} }

View File

@@ -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));
} }
} }

View File

@@ -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
); );

View File

@@ -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) {