diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/StorageCacheItemPortable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/StorageCacheItemPortable.java index 34b1f30fc..062d4bfee 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/StorageCacheItemPortable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/StorageCacheItemPortable.java @@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.network.MessageGridItemDelta; import com.raoulvdberge.refinedstorage.network.MessageGridItemUpdate; import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid; import com.raoulvdberge.refinedstorage.util.StackUtils; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -36,7 +37,7 @@ public class StorageCacheItemPortable implements IStorageCache { listeners.forEach(Runnable::run); - portableGrid.getWatchers().forEach(w -> sendUpdateTo(w.getPlayer())); + portableGrid.getWatchers().forEach(this::sendUpdateTo); } @Override @@ -44,7 +45,7 @@ public class StorageCacheItemPortable implements IStorageCache { list.add(stack, size); if (!rebuilding) { - portableGrid.getWatchers().forEach(w -> RS.INSTANCE.network.sendTo(new MessageGridItemDelta(null, stack, size), w.getPlayer())); + portableGrid.getWatchers().forEach(w -> RS.INSTANCE.network.sendTo(new MessageGridItemDelta(null, stack, size), (EntityPlayerMP) w)); listeners.forEach(Runnable::run); } @@ -53,7 +54,7 @@ public class StorageCacheItemPortable implements IStorageCache { @Override public void remove(@Nonnull ItemStack stack, int size, boolean batched) { if (list.remove(stack, size)) { - portableGrid.getWatchers().forEach(w -> RS.INSTANCE.network.sendTo(new MessageGridItemDelta(null, stack, -size), w.getPlayer())); + portableGrid.getWatchers().forEach(w -> RS.INSTANCE.network.sendTo(new MessageGridItemDelta(null, stack, -size), (EntityPlayerMP) w)); listeners.forEach(Runnable::run); } @@ -84,13 +85,13 @@ public class StorageCacheItemPortable implements IStorageCache { return Collections.emptyList(); } - public void sendUpdateTo(EntityPlayerMP player) { + public void sendUpdateTo(EntityPlayer player) { RS.INSTANCE.network.sendTo(new MessageGridItemUpdate(buf -> { buf.writeInt(list.getStacks().size()); for (ItemStack stack : list.getStacks()) { StackUtils.writeItemStack(buf, stack, null, false); } - }, false), player); + }, false), (EntityPlayerMP) player); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/data/TileDataManager.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/data/TileDataManager.java index b2ee97395..33d999a09 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/data/TileDataManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/data/TileDataManager.java @@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.tile.data; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.network.MessageTileDataParameterUpdate; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import java.util.ArrayList; @@ -20,6 +21,7 @@ public class TileDataManager { private List watchedParameters = new ArrayList<>(); private List watchers = new CopyOnWriteArrayList<>(); + private List playersWatching = new CopyOnWriteArrayList<>(); public TileDataManager(TileEntity tile) { this.tile = tile; @@ -47,16 +49,18 @@ public class TileDataManager { return watchedParameters; } - public List getWatchers() { - return watchers; + public List getPlayersWatching() { + return playersWatching; } public void addWatcher(TileDataWatcher listener) { watchers.add(listener); + playersWatching.add(listener.getPlayer()); } public void removeWatcher(TileDataWatcher listener) { watchers.remove(listener); + playersWatching.remove(listener.getPlayer()); } public void sendParameterToWatchers(TileDataParameter parameter) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/IPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/IPortableGrid.java index 49afb553c..1ee2925c1 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/IPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/IPortableGrid.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.tile.grid.portable; import com.raoulvdberge.refinedstorage.api.storage.IStorageCache; import com.raoulvdberge.refinedstorage.api.storage.IStorageDisk; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; -import com.raoulvdberge.refinedstorage.tile.data.TileDataWatcher; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandlerModifiable; @@ -16,7 +16,7 @@ public interface IPortableGrid { @Nullable IStorageDisk getStorage(); - List getWatchers(); + List getWatchers(); void drainEnergy(int energy); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java index 61ace08bd..839c817bc 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java @@ -39,6 +39,7 @@ import net.minecraftforge.items.IItemHandlerModifiable; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class PortableGrid implements IGrid, IPortableGrid { @@ -166,8 +167,8 @@ public class PortableGrid implements IGrid, IPortableGrid { } @Override - public List getWatchers() { - return dummyWatchers; + public List getWatchers() { + return Collections.singletonList(player); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java index 95611f4a7..2db0f428c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java @@ -31,7 +31,6 @@ import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; -import com.raoulvdberge.refinedstorage.tile.data.TileDataWatcher; import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.client.Minecraft; @@ -461,8 +460,8 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid, } @Override - public List getWatchers() { - return dataManager.getWatchers(); + public List getWatchers() { + return dataManager.getPlayersWatching(); } @Override