Remove storage deltas for now, make it stable first

This commit is contained in:
Raoul Van den Berge
2016-06-29 21:14:12 +02:00
parent 281f78dd9c
commit 2e4f7a03a0
6 changed files with 10 additions and 127 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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