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);
|
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.
|
* Pushes an item to this network.
|
||||||
*
|
*
|
||||||
|
@@ -19,7 +19,6 @@ public class GroupedStorage implements IGroupedStorage {
|
|||||||
private List<IStorage> storages = new ArrayList<IStorage>();
|
private List<IStorage> storages = new ArrayList<IStorage>();
|
||||||
private Multimap<Item, ItemStack> stacks = ArrayListMultimap.create();
|
private Multimap<Item, ItemStack> stacks = ArrayListMultimap.create();
|
||||||
private INetworkMaster network;
|
private INetworkMaster network;
|
||||||
private boolean rebuilding;
|
|
||||||
|
|
||||||
public GroupedStorage(INetworkMaster network) {
|
public GroupedStorage(INetworkMaster network) {
|
||||||
this.network = network;
|
this.network = network;
|
||||||
@@ -27,8 +26,6 @@ public class GroupedStorage implements IGroupedStorage {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rebuild() {
|
public void rebuild() {
|
||||||
rebuilding = true;
|
|
||||||
|
|
||||||
storages.clear();
|
storages.clear();
|
||||||
|
|
||||||
for (INetworkSlave slave : network.getSlaves()) {
|
for (INetworkSlave slave : network.getSlaves()) {
|
||||||
@@ -45,7 +42,7 @@ public class GroupedStorage implements IGroupedStorage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rebuilding = false;
|
network.sendStorageToClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -65,9 +62,7 @@ public class GroupedStorage implements IGroupedStorage {
|
|||||||
|
|
||||||
stacks.put(stack.getItem(), stack.copy());
|
stacks.put(stack.getItem(), stack.copy());
|
||||||
|
|
||||||
if (!rebuilding) {
|
network.sendStorageToClient();
|
||||||
network.sendStorageDelta(stack, stack.stackSize);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -80,7 +75,7 @@ public class GroupedStorage implements IGroupedStorage {
|
|||||||
stacks.remove(otherStack.getItem(), otherStack);
|
stacks.remove(otherStack.getItem(), otherStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
network.sendStorageDelta(stack, -stack.stackSize);
|
network.sendStorageToClient();
|
||||||
|
|
||||||
return;
|
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) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (!worldObj.isRemote) {
|
ItemStack disk = getStackInSlot(slot);
|
||||||
ItemStack disk = getStackInSlot(slot);
|
|
||||||
|
|
||||||
if (disk == null) {
|
if (disk == null) {
|
||||||
storages[slot] = null;
|
storages[slot] = null;
|
||||||
} else {
|
} else {
|
||||||
storages[slot] = new Storage(disk);
|
storages[slot] = new Storage(disk);
|
||||||
}
|
|
||||||
|
|
||||||
if (isConnected()) {
|
|
||||||
network.getStorage().rebuild();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,7 +11,6 @@ import refinedstorage.RefinedStorageUtils;
|
|||||||
import refinedstorage.api.RefinedStorageCapabilities;
|
import refinedstorage.api.RefinedStorageCapabilities;
|
||||||
import refinedstorage.api.network.INetworkMaster;
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
import refinedstorage.api.network.INetworkSlave;
|
import refinedstorage.api.network.INetworkSlave;
|
||||||
import refinedstorage.api.storage.IStorageProvider;
|
|
||||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||||
import refinedstorage.tile.config.RedstoneMode;
|
import refinedstorage.tile.config.RedstoneMode;
|
||||||
import refinedstorage.tile.controller.TileController;
|
import refinedstorage.tile.controller.TileController;
|
||||||
@@ -169,10 +168,6 @@ public abstract class TileSlave extends TileBase implements INetworkSlave, ISync
|
|||||||
markDirty();
|
markDirty();
|
||||||
|
|
||||||
this.redstoneMode = mode;
|
this.redstoneMode = mode;
|
||||||
|
|
||||||
if (this instanceof IStorageProvider && isConnected()) {
|
|
||||||
network.getStorage().rebuild();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -27,7 +27,6 @@ import refinedstorage.api.network.IWirelessGridHandler;
|
|||||||
import refinedstorage.api.storage.CompareFlags;
|
import refinedstorage.api.storage.CompareFlags;
|
||||||
import refinedstorage.api.storage.IGroupedStorage;
|
import refinedstorage.api.storage.IGroupedStorage;
|
||||||
import refinedstorage.api.storage.IStorage;
|
import refinedstorage.api.storage.IStorage;
|
||||||
import refinedstorage.api.storage.IStorageProvider;
|
|
||||||
import refinedstorage.apiimpl.autocrafting.BasicCraftingTask;
|
import refinedstorage.apiimpl.autocrafting.BasicCraftingTask;
|
||||||
import refinedstorage.apiimpl.autocrafting.CraftingPattern;
|
import refinedstorage.apiimpl.autocrafting.CraftingPattern;
|
||||||
import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask;
|
import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask;
|
||||||
@@ -39,7 +38,6 @@ import refinedstorage.block.EnumControllerType;
|
|||||||
import refinedstorage.container.ContainerController;
|
import refinedstorage.container.ContainerController;
|
||||||
import refinedstorage.container.ContainerGrid;
|
import refinedstorage.container.ContainerGrid;
|
||||||
import refinedstorage.item.ItemPattern;
|
import refinedstorage.item.ItemPattern;
|
||||||
import refinedstorage.network.MessageGridDelta;
|
|
||||||
import refinedstorage.network.MessageGridItems;
|
import refinedstorage.network.MessageGridItems;
|
||||||
import refinedstorage.tile.ISynchronizedContainer;
|
import refinedstorage.tile.ISynchronizedContainer;
|
||||||
import refinedstorage.tile.TileBase;
|
import refinedstorage.tile.TileBase;
|
||||||
@@ -60,7 +58,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
|
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
|
||||||
|
|
||||||
private IGroupedStorage storage = new GroupedStorage(this);
|
private IGroupedStorage storage = new GroupedStorage(this);
|
||||||
private boolean rebuildStorage;
|
|
||||||
|
|
||||||
private List<INetworkSlave> slaves = new ArrayList<INetworkSlave>();
|
private List<INetworkSlave> slaves = new ArrayList<INetworkSlave>();
|
||||||
private List<INetworkSlave> slavesToAdd = 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);
|
slaves.removeAll(slavesToRemove);
|
||||||
slavesToRemove.clear();
|
slavesToRemove.clear();
|
||||||
|
|
||||||
if (rebuildStorage) {
|
|
||||||
storage.rebuild();
|
|
||||||
|
|
||||||
rebuildStorage = false;
|
|
||||||
|
|
||||||
sendStorageToClient();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (canRun()) {
|
if (canRun()) {
|
||||||
if (ticks % 20 == 0 || forceUpdate) {
|
if (ticks % 20 == 0 || forceUpdate) {
|
||||||
updateSlaves();
|
updateSlaves();
|
||||||
@@ -227,19 +216,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
@Override
|
@Override
|
||||||
public void addSlave(INetworkSlave slave) {
|
public void addSlave(INetworkSlave slave) {
|
||||||
slavesToAdd.add(slave);
|
slavesToAdd.add(slave);
|
||||||
|
|
||||||
if (slave instanceof IStorageProvider) {
|
|
||||||
rebuildStorage = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeSlave(INetworkSlave slave) {
|
public void removeSlave(INetworkSlave slave) {
|
||||||
slavesToRemove.add(slave);
|
slavesToRemove.add(slave);
|
||||||
|
|
||||||
if (slave instanceof IStorageProvider) {
|
|
||||||
rebuildStorage = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnectSlaves() {
|
public void disconnectSlaves() {
|
||||||
@@ -411,6 +392,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
return (left.getPriority() > right.getPriority()) ? -1 : 1;
|
return (left.getPriority() > right.getPriority()) ? -1 : 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.storage.rebuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -427,15 +410,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
|
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) {
|
private boolean isWatchingGrid(EntityPlayer player) {
|
||||||
return player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition());
|
return player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user