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;
import com.raoulvdberge.refinedstorage.RS;
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.network.grid.GridItemDeltaMessage;
import com.raoulvdberge.refinedstorage.network.grid.GridItemUpdateMessage;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemStack> {
@@ -20,7 +25,7 @@ public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemS
@Override
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
@@ -30,11 +35,15 @@ public class StorageCacheListenerGridItem implements IStorageCacheListener<ItemS
@Override
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
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.api.storage.disk.IStorageDiskSync;
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 java.util.HashMap;
@@ -31,7 +31,7 @@ public class StorageDiskSync implements IStorageDiskSync {
long lastSync = syncTime.getOrDefault(id, 0L);
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());
}

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.FilterLegacySlot;
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.data.TileDataWatcher;
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)) {
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.screen.IScreenInfoProvider;
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.ItemGridStack;
import com.raoulvdberge.refinedstorage.tile.TileCrafterManager;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
@@ -172,7 +172,7 @@ public class CrafterManagerContainer extends BaseContainer {
visible = false;
for (ItemStack output : pattern.getOutputs()) {
GridStackItem outputConverted = new GridStackItem(output);
ItemGridStack outputConverted = new ItemGridStack(output);
for (Predicate<IGridStack> filter : filters) {
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.filter.DisabledFluidFilterSlot;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.ItemStackHandler;
@@ -14,16 +14,16 @@ public class CraftingSettingsContainer extends BaseContainer {
public CraftingSettingsContainer(PlayerEntity player, IGridStack stack) {
super(null, null, player, 0);
if (stack instanceof GridStackFluid) {
if (stack instanceof FluidGridStack) {
FluidInventory inventory = new FluidInventory(1);
inventory.setFluid(0, ((GridStackFluid) stack).getStack());
inventory.setFluid(0, ((FluidGridStack) stack).getStack());
addSlot(new DisabledFluidFilterSlot(inventory, 0, 89, 48));
} else if (stack instanceof GridStackItem) {
} else if (stack instanceof ItemGridStack) {
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));
}

View File

@@ -8,14 +8,14 @@ import net.minecraftforge.fml.network.NetworkEvent;
import java.util.function.Supplier;
public class MessageFilterUpdate {
public class FilterUpdateMessage {
private int compare;
private int mode;
private boolean modFilter;
private String name;
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.mode = mode;
this.modFilter = modFilter;
@@ -23,8 +23,8 @@ public class MessageFilterUpdate {
this.type = type;
}
public static MessageFilterUpdate decode(PacketBuffer buf) {
return new MessageFilterUpdate(
public static FilterUpdateMessage decode(PacketBuffer buf) {
return new FilterUpdateMessage(
buf.readInt(),
buf.readInt(),
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.mode);
buf.writeBoolean(message.modFilter);
@@ -41,7 +41,7 @@ public class MessageFilterUpdate {
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(() -> {
PlayerEntity player = ctx.get().getSender();

View File

@@ -9,25 +9,25 @@ import net.minecraftforge.fml.network.NetworkEvent;
import java.util.function.Supplier;
public class MessageSlotFilterFluidUpdate {
public class FluidFilterSlotUpdateMessage {
private int containerSlot;
private FluidStack stack;
public MessageSlotFilterFluidUpdate(int containerSlot, FluidStack stack) {
public FluidFilterSlotUpdateMessage(int containerSlot, FluidStack stack) {
this.containerSlot = containerSlot;
this.stack = stack;
}
public static void encode(MessageSlotFilterFluidUpdate message, PacketBuffer buf) {
public static void encode(FluidFilterSlotUpdateMessage message, PacketBuffer buf) {
buf.writeInt(message.containerSlot);
message.stack.writeToPacket(buf);
}
public static MessageSlotFilterFluidUpdate decode(PacketBuffer buf) {
return new MessageSlotFilterFluidUpdate(buf.readInt(), FluidStack.readFromPacket(buf));
public static FluidFilterSlotUpdateMessage decode(PacketBuffer 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 -> {
if (message.containerSlot >= 0 && message.containerSlot < gui.getContainer().inventorySlots.size()) {
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;
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.util.ResourceLocation;
import net.minecraftforge.common.util.FakePlayer;
@@ -20,12 +26,14 @@ public class NetworkHandler {
public void register() {
int id = 0;
handler.registerMessage(id++, MessageStorageDiskSizeRequest.class, MessageStorageDiskSizeRequest::encode, MessageStorageDiskSizeRequest::decode, MessageStorageDiskSizeRequest::handle);
handler.registerMessage(id++, MessageStorageDiskSizeResponse.class, MessageStorageDiskSizeResponse::encode, MessageStorageDiskSizeResponse::decode, MessageStorageDiskSizeResponse::handle);
handler.registerMessage(id++, MessageFilterUpdate.class, MessageFilterUpdate::encode, MessageFilterUpdate::decode, MessageFilterUpdate::handle);
handler.registerMessage(id++, MessageSlotFilterFluidUpdate.class, MessageSlotFilterFluidUpdate::encode, MessageSlotFilterFluidUpdate::decode, MessageSlotFilterFluidUpdate::handle);
handler.registerMessage(id++, MessageTileDataParameter.class, MessageTileDataParameter::encode, MessageTileDataParameter::decode, MessageTileDataParameter::handle);
handler.registerMessage(id++, MessageTileDataParameterUpdate.class, MessageTileDataParameterUpdate::encode, MessageTileDataParameterUpdate::decode, MessageTileDataParameterUpdate::handle);
handler.registerMessage(id++, StorageDiskSizeRequestMessage.class, StorageDiskSizeRequestMessage::encode, StorageDiskSizeRequestMessage::decode, StorageDiskSizeRequestMessage::handle);
handler.registerMessage(id++, StorageDiskSizeResponseMessage.class, StorageDiskSizeResponseMessage::encode, StorageDiskSizeResponseMessage::decode, StorageDiskSizeResponseMessage::handle);
handler.registerMessage(id++, FilterUpdateMessage.class, FilterUpdateMessage::encode, FilterUpdateMessage::decode, FilterUpdateMessage::handle);
handler.registerMessage(id++, FluidFilterSlotUpdateMessage.class, FluidFilterSlotUpdateMessage::encode, FluidFilterSlotUpdateMessage::decode, FluidFilterSlotUpdateMessage::handle);
handler.registerMessage(id++, TileDataParameterMessage.class, TileDataParameterMessage::encode, TileDataParameterMessage::decode, TileDataParameterMessage::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) {

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.api.storage.disk.IStorageDisk;
@@ -9,27 +9,27 @@ import net.minecraftforge.fml.network.NetworkEvent;
import java.util.UUID;
import java.util.function.Supplier;
public class MessageStorageDiskSizeRequest {
public class StorageDiskSizeRequestMessage {
private UUID id;
public MessageStorageDiskSizeRequest(UUID id) {
public StorageDiskSizeRequestMessage(UUID id) {
this.id = id;
}
public static MessageStorageDiskSizeRequest decode(PacketBuffer buf) {
return new MessageStorageDiskSizeRequest(buf.readUniqueId());
public static StorageDiskSizeRequestMessage decode(PacketBuffer buf) {
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);
}
public static void handle(MessageStorageDiskSizeRequest message, Supplier<NetworkEvent.Context> ctx) {
public static void handle(StorageDiskSizeRequestMessage message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
IStorageDisk disk = API.instance().getStorageDiskManager(ctx.get().getSender().getServerWorld()).get(message.id);
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);

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.storage.disk.StorageDiskSync;
@@ -9,28 +9,28 @@ import net.minecraftforge.fml.network.NetworkEvent;
import java.util.UUID;
import java.util.function.Supplier;
public class MessageStorageDiskSizeResponse {
public class StorageDiskSizeResponseMessage {
private UUID id;
private int stored;
private int capacity;
public MessageStorageDiskSizeResponse(UUID id, int stored, int capacity) {
public StorageDiskSizeResponseMessage(UUID id, int stored, int capacity) {
this.id = id;
this.stored = stored;
this.capacity = capacity;
}
public static void encode(MessageStorageDiskSizeResponse message, PacketBuffer buf) {
public static void encode(StorageDiskSizeResponseMessage message, PacketBuffer buf) {
buf.writeUniqueId(message.id);
buf.writeInt(message.stored);
buf.writeInt(message.capacity);
}
public static MessageStorageDiskSizeResponse decode(PacketBuffer buf) {
return new MessageStorageDiskSizeResponse(buf.readUniqueId(), buf.readInt(), buf.readInt());
public static StorageDiskSizeResponseMessage decode(PacketBuffer buf) {
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().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.TileDataParameter;
@@ -8,18 +8,18 @@ import net.minecraftforge.fml.network.NetworkEvent;
import java.util.function.Supplier;
public class MessageTileDataParameter {
public class TileDataParameterMessage {
private TileEntity tile;
private TileDataParameter parameter;
private boolean initial;
public MessageTileDataParameter(TileEntity tile, TileDataParameter parameter, boolean initial) {
public TileDataParameterMessage(TileEntity tile, TileDataParameter parameter, boolean initial) {
this.tile = tile;
this.parameter = parameter;
this.initial = initial;
}
public static MessageTileDataParameter decode(PacketBuffer buf) {
public static TileDataParameterMessage decode(PacketBuffer buf) {
int id = buf.readInt();
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.writeBoolean(message.initial);
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);
}
}

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.tile.data.TileDataManager;
@@ -10,16 +10,16 @@ import net.minecraftforge.fml.network.NetworkEvent;
import java.util.function.BiConsumer;
import java.util.function.Supplier;
public class MessageTileDataParameterUpdate {
public class TileDataParameterUpdateMessage {
private TileDataParameter parameter;
private Object value;
public MessageTileDataParameterUpdate(TileDataParameter parameter, Object value) {
public TileDataParameterUpdateMessage(TileDataParameter parameter, Object value) {
this.parameter = parameter;
this.value = value;
}
public static MessageTileDataParameterUpdate decode(PacketBuffer buf) {
public static TileDataParameterUpdateMessage decode(PacketBuffer buf) {
int id = buf.readInt();
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());
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(() -> {
Container c = ctx.get().getSender().openContainer;

View File

@@ -1,7 +1,6 @@
package com.raoulvdberge.refinedstorage.screen;
import com.mojang.blaze3d.platform.GlStateManager;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
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) {
boolean large = /* TODO font.getUnicodeFlag() ||*/ RS.INSTANCE.config.largeFont;
boolean large = minecraft.getForceUnicodeFont() /* TODO || RS.INSTANCE.config.largeFont*/;
GlStateManager.pushMatrix();
GlStateManager.translatef(x, y, 1);

View File

@@ -99,7 +99,7 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
renderItem(x, y + 5, node.getStack());
float scale = /*TODO fontRenderer.getUnicodeFlag() ? 1F :*/ 0.5F;
float scale = minecraft.getForceUnicodeFont() ? 1F : 0.5F;
GlStateManager.pushMatrix();
GlStateManager.scalef(scale, scale, 1);
@@ -107,7 +107,7 @@ public class ControllerScreen extends BaseScreen<ControllerContainer> {
renderString(
RenderUtils.getOffsetOnScale(x + 1, 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");

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.container.FilterContainer;
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 net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.gui.widget.button.Button;
@@ -128,6 +128,6 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
}
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.IScreenInfoProvider;
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.view.GridViewFluid;
import com.raoulvdberge.refinedstorage.screen.grid.view.GridViewItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
import com.raoulvdberge.refinedstorage.screen.grid.view.FluidGridView;
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.SearchWidget;
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);
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.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() {
@@ -406,9 +406,10 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
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
@@ -542,15 +543,15 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
public static List<IGridSorter> getSorters() {
List<IGridSorter> sorters = new LinkedList<>();
sorters.add(getDefaultSorter());
sorters.add(new GridSorterQuantity());
sorters.add(new GridSorterID());
sorters.add(new GridSorterInventoryTweaks());
sorters.add(new GridSorterLastModified());
sorters.add(new QuantityGridSorter());
sorters.add(new IdGridSorter());
sorters.add(new LastModifiedGridSorter());
sorters.add(new InvTweaksGridSorter());
return sorters;
}
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.screen.AmountSpecifyingScreen;
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 net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerEntity;
@@ -32,7 +32,7 @@ public class GuiGridCraftingSettings extends AmountSpecifyingScreen<CraftingSett
@Override
protected int[] getIncrements() {
if (stack instanceof GridStackFluid) {
if (stack instanceof FluidGridStack) {
return new int[]{
100, 500, 1000,
-100, -500, -1000
@@ -47,7 +47,7 @@ public class GuiGridCraftingSettings extends AmountSpecifyingScreen<CraftingSett
@Override
protected int getDefaultAmount() {
return stack instanceof GridStackFluid ? FluidAttributes.BUCKET_VOLUME : 1;
return stack instanceof FluidGridStack ? FluidAttributes.BUCKET_VOLUME : 1;
}
@Override

View File

@@ -1,19 +1,19 @@
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.ItemGridStack;
import java.util.function.Predicate;
public class GridFilterCraftable implements Predicate<IGridStack> {
public class CraftableGridFilter implements Predicate<IGridStack> {
private boolean craftable;
public GridFilterCraftable(boolean craftable) {
public CraftableGridFilter(boolean craftable) {
this.craftable = craftable;
}
@Override
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.apiimpl.API;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import java.util.List;
import java.util.function.Predicate;
public class GridFilterFilter implements Predicate<IGridStack> {
public class FilterGridFilter implements Predicate<IGridStack> {
private List<IFilter> filters;
public GridFilterFilter(List<IFilter> filters) {
public FilterGridFilter(List<IFilter> filters) {
this.filters = filters;
}
@@ -29,7 +29,7 @@ public class GridFilterFilter implements Predicate<IGridStack> {
for (IFilter filter : filters) {
lastMode = filter.getMode();
if (stack instanceof GridStackItem && filter.getStack() instanceof ItemStack) {
if (stack instanceof ItemGridStack && filter.getStack() instanceof ItemStack) {
ItemStack stackInFilter = (ItemStack) filter.getStack();
if (filter.isModFilter()) {
@@ -39,10 +39,10 @@ public class GridFilterFilter implements Predicate<IGridStack> {
if (filterModId != null && filterModId.equals(stackModId)) {
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;
}
} else if (stack instanceof GridStackFluid && filter.getStack() instanceof FluidStack) {
} else if (stack instanceof FluidGridStack && filter.getStack() instanceof FluidStack) {
FluidStack stackInFilter = (FluidStack) filter.getStack();
if (filter.isModFilter()) {
@@ -51,7 +51,7 @@ public class GridFilterFilter implements Predicate<IGridStack> {
if (stackInFilterModId != null && stackInFilterModId.equalsIgnoreCase(stack.getModId())) {
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;
}
}

View File

@@ -25,19 +25,19 @@ public final class GridFilterParser {
}
gridFilters = new LinkedList<>();
gridFilters.add(new GridFilterOr(orPartFilters));
gridFilters.add(new OrGridFilter(orPartFilters));
}
if (grid != null) {
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) {
gridFilters.add(new GridFilterCraftable(true));
gridFilters.add(new CraftableGridFilter(true));
}
}
if (!filters.isEmpty()) {
gridFilters.add(new GridFilterFilter(filters));
gridFilters.add(new FilterGridFilter(filters));
}
return gridFilters;
@@ -48,13 +48,13 @@ public final class GridFilterParser {
for (String part : query.toLowerCase().trim().split(" ")) {
if (part.startsWith("@")) {
gridFilters.add(new GridFilterMod(part.substring(1)));
gridFilters.add(new ModGridFilter(part.substring(1)));
} else if (part.startsWith("#")) {
gridFilters.add(new GridFilterTooltip(part.substring(1)));
gridFilters.add(new TooltipGridFilter(part.substring(1)));
} else if (part.startsWith("$")) {
gridFilters.add(new GridFilterOreDict(part.substring(1)));
gridFilters.add(new OredictGridFilter(part.substring(1)));
} 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;
public class GridFilterMod implements Predicate<IGridStack> {
public class ModGridFilter implements Predicate<IGridStack> {
private String inputModName;
public GridFilterMod(String inputModName) {
public ModGridFilter(String inputModName) {
this.inputModName = standardify(inputModName);
}

View File

@@ -4,10 +4,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import java.util.function.Predicate;
public class GridFilterName implements Predicate<IGridStack> {
public class NameGridFilter implements Predicate<IGridStack> {
private String name;
public GridFilterName(String name) {
public NameGridFilter(String name) {
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.function.Predicate;
public class GridFilterOr implements Predicate<IGridStack> {
public class OrGridFilter implements Predicate<IGridStack> {
private List<List<Predicate<IGridStack>>> orPartFilters;
public GridFilterOr(List<List<Predicate<IGridStack>>> orPartFilters) {
public OrGridFilter(List<List<Predicate<IGridStack>>> 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.function.Predicate;
public class GridFilterOreDict implements Predicate<IGridStack> {
public class OredictGridFilter implements Predicate<IGridStack> {
private String oreName;
public GridFilterOreDict(String oreName) {
public OredictGridFilter(String oreName) {
this.oreName = oreName.toLowerCase();
}

View File

@@ -4,10 +4,10 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import java.util.function.Predicate;
public class GridFilterTooltip implements Predicate<IGridStack> {
public class TooltipGridFilter implements Predicate<IGridStack> {
private String tooltip;
public GridFilterTooltip(String tooltip) {
public TooltipGridFilter(String tooltip) {
this.tooltip = tooltip.toLowerCase();
}

View File

@@ -6,5 +6,5 @@ import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
public interface IGridSorter {
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.ItemStack;
public class GridSorterID implements IGridSorter {
public class IdGridSorter implements IGridSorter {
@Override
public boolean isApplicable(IGrid grid) {
return grid.getSortingType() == IGrid.SORTING_TYPE_ID;
}
@Override
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
int x = left.getHash();
int y = right.getHash();
@@ -22,9 +22,9 @@ public class GridSorterID implements IGridSorter {
}
if (x != y) {
if (sortingDirection == GridSorterDirection.DESCENDING) {
if (sortingDirection == SortingDirection.DESCENDING) {
return Integer.compare(x, y);
} else if (sortingDirection == GridSorterDirection.ASCENDING) {
} else if (sortingDirection == SortingDirection.ASCENDING) {
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;
// TODO
public class GridSorterInventoryTweaks implements IGridSorter {
public class InvTweaksGridSorter implements IGridSorter {
public static final String MOD_ID = "inventorytweaks";
@Override
@@ -13,7 +13,7 @@ public class GridSorterInventoryTweaks implements IGridSorter {
}
@Override
public int compare(IGridStack left, IGridStack right, GridSorterDirection direction) {
public int compare(IGridStack left, IGridStack right, SortingDirection direction) {
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.screen.grid.stack.IGridStack;
public class GridSorterLastModified implements IGridSorter {
public class LastModifiedGridSorter implements IGridSorter {
@Override
public boolean isApplicable(IGrid grid) {
return grid.getSortingType() == IGrid.SORTING_TYPE_LAST_MODIFIED;
}
@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 rt = right.getTrackerEntry() != null ? right.getTrackerEntry().getTime() : 0;
if (lt != rt) {
// For "last modified" the comparison is reversed
if (sortingDirection == GridSorterDirection.DESCENDING) {
if (sortingDirection == SortingDirection.DESCENDING) {
return Long.compare(rt, lt);
} else if (sortingDirection == GridSorterDirection.ASCENDING) {
} else if (sortingDirection == SortingDirection.ASCENDING) {
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.screen.grid.stack.IGridStack;
public class GridSorterName implements IGridSorter {
public class NameGridSorter implements IGridSorter {
@Override
public boolean isApplicable(IGrid grid) {
return grid.getSortingType() == IGrid.SORTING_TYPE_NAME;
}
@Override
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
String leftName = left.getName();
String rightName = right.getName();
if (sortingDirection == GridSorterDirection.ASCENDING) {
if (sortingDirection == SortingDirection.ASCENDING) {
return leftName.compareTo(rightName);
} else if (sortingDirection == GridSorterDirection.DESCENDING) {
} else if (sortingDirection == SortingDirection.DESCENDING) {
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.screen.grid.stack.IGridStack;
public class GridSorterQuantity implements IGridSorter {
public class QuantityGridSorter implements IGridSorter {
@Override
public boolean isApplicable(IGrid grid) {
return grid.getSortingType() == IGrid.SORTING_TYPE_QUANTITY;
}
@Override
public int compare(IGridStack left, IGridStack right, GridSorterDirection sortingDirection) {
public int compare(IGridStack left, IGridStack right, SortingDirection sortingDirection) {
int leftSize = left.getQuantity();
int rightSize = right.getQuantity();
if (leftSize != rightSize) {
if (sortingDirection == GridSorterDirection.ASCENDING) {
if (sortingDirection == SortingDirection.ASCENDING) {
return (leftSize > rightSize) ? 1 : -1;
} else if (sortingDirection == GridSorterDirection.DESCENDING) {
} else if (sortingDirection == SortingDirection.DESCENDING) {
return (rightSize > leftSize) ? 1 : -1;
}
}

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.screen.grid.sorting;
public enum GridSorterDirection {
public enum SortingDirection {
ASCENDING,
DESCENDING
}

View File

@@ -9,7 +9,7 @@ import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nullable;
public class GridStackFluid implements IGridStack {
public class FluidGridStack implements IGridStack {
private int hash;
private FluidStack stack;
@Nullable
@@ -19,7 +19,7 @@ public class GridStackFluid implements IGridStack {
private String modId;
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.stack = stack;
this.entry = entry;
@@ -73,7 +73,7 @@ public class GridStackFluid implements IGridStack {
@Override
public String getModName() {
if (modName == null) {
modName = GridStackItem.getModNameByModId(getModId());
modName = ItemGridStack.getModNameByModId(getModId());
if (modName == null) {
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.apiimpl.API;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack;
import javax.annotation.Nullable;
import java.util.stream.Collectors;
public class GridStackItem implements IGridStack {
public class ItemGridStack implements IGridStack {
private int hash;
private ItemStack stack;
private String cachedName;
@@ -21,11 +23,11 @@ public class GridStackItem implements IGridStack {
private String modName;
private String tooltip;
public GridStackItem(ItemStack stack) {
public ItemGridStack(ItemStack 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.stack = stack;
this.craftable = craftable;
@@ -129,8 +131,7 @@ public class GridStackItem implements IGridStack {
public String getTooltip() {
if (tooltip == null) {
try {
tooltip = "dinosaur";//TODO
//tooltip = RenderUtils.getItemTooltip(stack).stream().collect(Collectors.joining("\n"));
tooltip = RenderUtils.getTooltipFromItem(stack).stream().collect(Collectors.joining("\n"));
} catch (Throwable t) {
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.screen.grid.GridScreen;
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.SortingDirection;
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
import java.util.*;
import java.util.function.Predicate;
public abstract class GridViewBase implements IGridView {
private GridScreen gui;
public abstract class BaseGridView implements IGridView {
private GridScreen screen;
private boolean canCraft;
private IGridSorter defaultSorter;
@@ -20,8 +20,8 @@ public abstract class GridViewBase implements IGridView {
private List<IGridStack> stacks = new ArrayList<>();
protected Map<Integer, IGridStack> map = new HashMap<>();
public GridViewBase(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
this.gui = gui;
public BaseGridView(GridScreen screen, IGridSorter defaultSorter, List<IGridSorter> sorters) {
this.screen = screen;
this.defaultSorter = defaultSorter;
this.sorters = sorters;
}
@@ -35,14 +35,14 @@ public abstract class GridViewBase implements IGridView {
public void sort() {
List<IGridStack> stacks = new ArrayList<>();
if (gui.getGrid().isActive()) {
if (screen.getGrid().isActive()) {
stacks.addAll(map.values());
IGrid grid = gui.getGrid();
IGrid grid = screen.getGrid();
List<Predicate<IGridStack>> filters = GridFilterParser.getFilters(
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()
);
@@ -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));
@@ -73,7 +73,7 @@ public abstract class GridViewBase implements IGridView {
this.stacks = stacks;
this.gui.updateScrollbar();
this.screen.updateScrollbar();
}
@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.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 java.util.List;
public class GridViewFluid extends GridViewBase {
public GridViewFluid(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
super(gui, defaultSorter, sorters);
public class FluidGridView extends BaseGridView {
public FluidGridView(GridScreen screen, IGridSorter defaultSorter, List<IGridSorter> sorters) {
super(screen, defaultSorter, sorters);
}
@Override
@@ -28,14 +28,14 @@ public class GridViewFluid extends GridViewBase {
@Override
public void postChange(IGridStack stack, int delta) {
if (!(stack instanceof GridStackFluid)) {
if (!(stack instanceof FluidGridStack)) {
return;
}
GridStackFluid existing = (GridStackFluid) map.get(stack.getHash());
FluidGridStack existing = (FluidGridStack) map.get(stack.getHash());
if (existing == null) {
((GridStackFluid) stack).getStack().setAmount(delta);
((FluidGridStack) stack).getStack().setAmount(delta);
map.put(stack.getHash(), stack);
} 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.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.ItemGridStack;
import java.util.List;
public class GridViewItem extends GridViewBase {
public GridViewItem(GridScreen gui, IGridSorter defaultSorter, List<IGridSorter> sorters) {
super(gui, defaultSorter, sorters);
public class ItemGridView extends BaseGridView {
public ItemGridView(GridScreen screen, IGridSorter defaultSorter, List<IGridSorter> sorters) {
super(screen, defaultSorter, sorters);
}
@Override
@@ -28,14 +28,14 @@ public class GridViewItem extends GridViewBase {
@Override
public void postChange(IGridStack stack, int delta) {
if (!(stack instanceof GridStackItem)) {
if (!(stack instanceof ItemGridStack)) {
return;
}
GridStackItem existing = (GridStackItem) map.get(stack.getHash());
ItemGridStack existing = (ItemGridStack) map.get(stack.getHash());
if (existing == null) {
((GridStackItem) stack).getStack().setCount(delta);
((ItemGridStack) stack).getStack().setCount(delta);
map.put(stack.getHash(), stack);
} else {

View File

@@ -45,6 +45,7 @@ import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.block.BlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.tileentity.ITickableTileEntity;
@@ -209,9 +210,14 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
return craftingManager;
}
private int ticks;
@Override
public void tick() {
if (!world.isRemote) {
if (++ticks % 20 == 0)
insertItem(new ItemStack(Items.DIRT), 10, Action.PERFORM);
if (canRun()) {
craftingManager.update();

View File

@@ -1,7 +1,7 @@
package com.raoulvdberge.refinedstorage.tile.data;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.network.MessageTileDataParameterUpdate;
import com.raoulvdberge.refinedstorage.network.tiledata.TileDataParameterUpdateMessage;
import net.minecraft.tileentity.TileEntity;
import java.util.ArrayList;
@@ -70,6 +70,6 @@ public class TileDataManager {
}
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;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.network.MessageTileDataParameter;
import com.raoulvdberge.refinedstorage.network.tiledata.TileDataParameterMessage;
import net.minecraft.entity.player.ServerPlayerEntity;
public class TileDataWatcher {
@@ -54,6 +54,6 @@ public class TileDataWatcher {
}
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();
// RS BEGIN
//float textScale = font.getUnicodeFlag() ? 1F : 0.7F;
float textScale = 1F;
float textScale = Minecraft.getInstance().getForceUnicodeFont() ? 1F : 0.7F;
// RS END
GlStateManager.disableRescaleNormal();
@@ -281,7 +280,7 @@ public final class RenderUtils {
font.drawStringWithShadow(
TextFormatting.GRAY + smallTextLines.get(i),
RenderUtils.getOffsetOnScale(tooltipX, textScale),
RenderUtils.getOffsetOnScale(y - (/* TODO font.getUnicodeFlag() ? 2 : */0), textScale),
RenderUtils.getOffsetOnScale(y - (Minecraft.getInstance().getForceUnicodeFont() ? 2 : 0), textScale),
-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.storage.StorageTrackerEntry;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackFluid;
import com.raoulvdberge.refinedstorage.screen.grid.stack.GridStackItem;
import com.raoulvdberge.refinedstorage.screen.grid.stack.FluidGridStack;
import com.raoulvdberge.refinedstorage.screen.grid.stack.ItemGridStack;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -48,7 +48,7 @@ public final class StackUtils {
Item item = stack.getItem();
buf.writeVarInt(Item.getIdFromItem(item));
buf.writeByte(stack.getCount());
buf.writeInt(stack.getCount());
CompoundNBT tag = null;
@@ -66,7 +66,7 @@ public final class StackUtils {
return ItemStack.EMPTY;
} else {
int id = buf.readVarInt();
int count = buf.readByte();
int count = buf.readInt();
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);
int hash = buf.readInt();
boolean craftable = buf.readBoolean();
@@ -110,7 +110,7 @@ public final class StackUtils {
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) {
@@ -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);
int hash = buf.readInt();
boolean craftable = buf.readBoolean();
@@ -147,7 +147,7 @@ public final class StackUtils {
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) {