Remove storage deltas for now, make it stable first
This commit is contained in:
@@ -130,14 +130,6 @@ public interface INetworkMaster {
|
||||
*/
|
||||
void sendStorageToClient(EntityPlayerMP player);
|
||||
|
||||
/**
|
||||
* Sends a specific delta to all grid watchers.
|
||||
*
|
||||
* @param stack The stack
|
||||
* @param amount The amount changed
|
||||
*/
|
||||
void sendStorageDelta(ItemStack stack, int amount);
|
||||
|
||||
/**
|
||||
* Pushes an item to this network.
|
||||
*
|
||||
|
@@ -19,7 +19,6 @@ public class GroupedStorage implements IGroupedStorage {
|
||||
private List<IStorage> storages = new ArrayList<IStorage>();
|
||||
private Multimap<Item, ItemStack> stacks = ArrayListMultimap.create();
|
||||
private INetworkMaster network;
|
||||
private boolean rebuilding;
|
||||
|
||||
public GroupedStorage(INetworkMaster network) {
|
||||
this.network = network;
|
||||
@@ -27,8 +26,6 @@ public class GroupedStorage implements IGroupedStorage {
|
||||
|
||||
@Override
|
||||
public void rebuild() {
|
||||
rebuilding = true;
|
||||
|
||||
storages.clear();
|
||||
|
||||
for (INetworkSlave slave : network.getSlaves()) {
|
||||
@@ -45,7 +42,7 @@ public class GroupedStorage implements IGroupedStorage {
|
||||
}
|
||||
}
|
||||
|
||||
rebuilding = false;
|
||||
network.sendStorageToClient();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -65,9 +62,7 @@ public class GroupedStorage implements IGroupedStorage {
|
||||
|
||||
stacks.put(stack.getItem(), stack.copy());
|
||||
|
||||
if (!rebuilding) {
|
||||
network.sendStorageDelta(stack, stack.stackSize);
|
||||
}
|
||||
network.sendStorageToClient();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,7 +75,7 @@ public class GroupedStorage implements IGroupedStorage {
|
||||
stacks.remove(otherStack.getItem(), otherStack);
|
||||
}
|
||||
|
||||
network.sendStorageDelta(stack, -stack.stackSize);
|
||||
network.sendStorageToClient();
|
||||
|
||||
return;
|
||||
}
|
||||
|
@@ -1,67 +0,0 @@
|
||||
package refinedstorage.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.inventory.Container;
|
||||
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 net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.container.ContainerGrid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MessageGridDelta implements IMessage, IMessageHandler<MessageGridDelta, IMessage> {
|
||||
private ItemStack stack;
|
||||
private int delta;
|
||||
|
||||
public MessageGridDelta() {
|
||||
}
|
||||
|
||||
public MessageGridDelta(ItemStack stack, int delta) {
|
||||
this.stack = stack;
|
||||
this.delta = delta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
this.stack = ByteBufUtils.readItemStack(buf);
|
||||
this.delta = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
ByteBufUtils.writeItemStack(buf, stack);
|
||||
buf.writeInt(delta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageGridDelta message, MessageContext ctx) {
|
||||
Container container = Minecraft.getMinecraft().thePlayer.openContainer;
|
||||
|
||||
if (container instanceof ContainerGrid) {
|
||||
List<ItemStack> items = ((ContainerGrid) container).getGrid().getItems();
|
||||
|
||||
for (ItemStack item : items) {
|
||||
if (RefinedStorageUtils.compareStackNoQuantity(item, message.stack)) {
|
||||
item.stackSize += message.delta;
|
||||
|
||||
if (item.stackSize <= 0) {
|
||||
items.remove(item);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (message.delta > 0) {
|
||||
items.add(ItemHandlerHelper.copyStackWithSize(message.stack, message.delta));
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -55,18 +55,12 @@ public class TileDiskDrive extends TileSlave implements IStorageProvider, IStora
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
if (!worldObj.isRemote) {
|
||||
ItemStack disk = getStackInSlot(slot);
|
||||
ItemStack disk = getStackInSlot(slot);
|
||||
|
||||
if (disk == null) {
|
||||
storages[slot] = null;
|
||||
} else {
|
||||
storages[slot] = new Storage(disk);
|
||||
}
|
||||
|
||||
if (isConnected()) {
|
||||
network.getStorage().rebuild();
|
||||
}
|
||||
if (disk == null) {
|
||||
storages[slot] = null;
|
||||
} else {
|
||||
storages[slot] = new Storage(disk);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -11,7 +11,6 @@ import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.api.RefinedStorageCapabilities;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.network.INetworkSlave;
|
||||
import refinedstorage.api.storage.IStorageProvider;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
@@ -169,10 +168,6 @@ public abstract class TileSlave extends TileBase implements INetworkSlave, ISync
|
||||
markDirty();
|
||||
|
||||
this.redstoneMode = mode;
|
||||
|
||||
if (this instanceof IStorageProvider && isConnected()) {
|
||||
network.getStorage().rebuild();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -27,7 +27,6 @@ import refinedstorage.api.network.IWirelessGridHandler;
|
||||
import refinedstorage.api.storage.CompareFlags;
|
||||
import refinedstorage.api.storage.IGroupedStorage;
|
||||
import refinedstorage.api.storage.IStorage;
|
||||
import refinedstorage.api.storage.IStorageProvider;
|
||||
import refinedstorage.apiimpl.autocrafting.BasicCraftingTask;
|
||||
import refinedstorage.apiimpl.autocrafting.CraftingPattern;
|
||||
import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask;
|
||||
@@ -39,7 +38,6 @@ import refinedstorage.block.EnumControllerType;
|
||||
import refinedstorage.container.ContainerController;
|
||||
import refinedstorage.container.ContainerGrid;
|
||||
import refinedstorage.item.ItemPattern;
|
||||
import refinedstorage.network.MessageGridDelta;
|
||||
import refinedstorage.network.MessageGridItems;
|
||||
import refinedstorage.tile.ISynchronizedContainer;
|
||||
import refinedstorage.tile.TileBase;
|
||||
@@ -60,7 +58,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
|
||||
|
||||
private IGroupedStorage storage = new GroupedStorage(this);
|
||||
private boolean rebuildStorage;
|
||||
|
||||
private List<INetworkSlave> slaves = new ArrayList<INetworkSlave>();
|
||||
private List<INetworkSlave> slavesToAdd = new ArrayList<INetworkSlave>();
|
||||
@@ -132,14 +129,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
slaves.removeAll(slavesToRemove);
|
||||
slavesToRemove.clear();
|
||||
|
||||
if (rebuildStorage) {
|
||||
storage.rebuild();
|
||||
|
||||
rebuildStorage = false;
|
||||
|
||||
sendStorageToClient();
|
||||
}
|
||||
|
||||
if (canRun()) {
|
||||
if (ticks % 20 == 0 || forceUpdate) {
|
||||
updateSlaves();
|
||||
@@ -227,19 +216,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
@Override
|
||||
public void addSlave(INetworkSlave slave) {
|
||||
slavesToAdd.add(slave);
|
||||
|
||||
if (slave instanceof IStorageProvider) {
|
||||
rebuildStorage = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSlave(INetworkSlave slave) {
|
||||
slavesToRemove.add(slave);
|
||||
|
||||
if (slave instanceof IStorageProvider) {
|
||||
rebuildStorage = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void disconnectSlaves() {
|
||||
@@ -411,6 +392,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
return (left.getPriority() > right.getPriority()) ? -1 : 1;
|
||||
}
|
||||
});
|
||||
|
||||
this.storage.rebuild();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -427,15 +410,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendStorageDelta(ItemStack stack, int amount) {
|
||||
for (EntityPlayer player : worldObj.playerEntities) {
|
||||
if (isWatchingGrid(player)) {
|
||||
RefinedStorage.NETWORK.sendTo(new MessageGridDelta(stack, amount), (EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isWatchingGrid(EntityPlayer player) {
|
||||
return player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition());
|
||||
}
|
||||
|
Reference in New Issue
Block a user