Fixed Wireless Crafting Monitor remaining in network item list
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
### 1.5.13
|
||||
- Fixed Wireless Fluid Grid not using up energy (raoulvdberge)
|
||||
- Fixed Wireless Crafting Monitor remaining in network item list (raoulvdberge)
|
||||
|
||||
### 1.5.12
|
||||
- The Network Transmitter now uses 1 FE/t per block instead of 4 FE/t (raoulvdberge)
|
||||
|
||||
@@ -10,11 +10,6 @@ import javax.annotation.Nullable;
|
||||
* It stores which player is currently using what network item.
|
||||
*/
|
||||
public interface INetworkItemHandler {
|
||||
/**
|
||||
* Called every network tick.
|
||||
*/
|
||||
void update();
|
||||
|
||||
/**
|
||||
* Called when a player opens a network item.
|
||||
*
|
||||
|
||||
@@ -10,26 +10,18 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.text.TextComponentTranslation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class NetworkItemHandler implements INetworkItemHandler {
|
||||
private INetwork network;
|
||||
|
||||
private List<INetworkItem> items = new ArrayList<>();
|
||||
private List<INetworkItem> itemsToRemove = new ArrayList<>();
|
||||
private Map<EntityPlayer, INetworkItem> items = new ConcurrentHashMap<>();
|
||||
|
||||
public NetworkItemHandler(INetwork network) {
|
||||
this.network = network;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
items.removeAll(itemsToRemove);
|
||||
itemsToRemove.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpen(EntityPlayer player, EnumHand hand) {
|
||||
boolean inRange = false;
|
||||
@@ -57,31 +49,17 @@ public class NetworkItemHandler implements INetworkItemHandler {
|
||||
INetworkItem item = ((INetworkItemProvider) player.getHeldItem(hand).getItem()).provide(this, player, player.getHeldItem(hand));
|
||||
|
||||
if (item.onOpen(network, player, hand)) {
|
||||
items.add(item);
|
||||
items.put(player, item);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(EntityPlayer player) {
|
||||
INetworkItem item = getItem(player);
|
||||
|
||||
if (item != null) {
|
||||
itemsToRemove.add(item);
|
||||
}
|
||||
items.remove(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public INetworkItem getItem(EntityPlayer player) {
|
||||
Iterator<INetworkItem> it = items.iterator();
|
||||
|
||||
while (it.hasNext()) {
|
||||
INetworkItem item = it.next();
|
||||
|
||||
if (item.getPlayer() == player) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return items.get(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,6 +128,11 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
TileDataManager.setParameter(TileCraftingMonitor.VIEW_AUTOMATED, viewAutomated);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClosed(EntityPlayer player) {
|
||||
// NO OP
|
||||
}
|
||||
|
||||
public void setViewAutomated(boolean viewAutomated) {
|
||||
this.viewAutomated = viewAutomated;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,15 @@ public class ContainerCraftingMonitor extends ContainerBase {
|
||||
addPlayerInventory(8, 148);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(EntityPlayer player) {
|
||||
super.onContainerClosed(player);
|
||||
|
||||
if (!player.getEntityWorld().isRemote) {
|
||||
craftingMonitor.onClosed(player);
|
||||
}
|
||||
}
|
||||
|
||||
public ICraftingMonitor getCraftingMonitor() {
|
||||
return craftingMonitor;
|
||||
}
|
||||
|
||||
@@ -207,8 +207,6 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
}
|
||||
}
|
||||
|
||||
networkItemHandler.update();
|
||||
|
||||
if (getType() == ControllerType.NORMAL) {
|
||||
if (!RS.INSTANCE.config.controllerUsesEnergy) {
|
||||
energy.setEnergyStored(energy.getMaxEnergyStored());
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
@@ -31,4 +32,6 @@ public interface ICraftingMonitor {
|
||||
void onViewAutomatedChanged(boolean viewAutomated);
|
||||
|
||||
boolean isActive();
|
||||
|
||||
void onClosed(EntityPlayer player);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageWirelessCraftingMonitorViewAutomated;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@@ -138,4 +139,13 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
||||
public boolean isActive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClosed(EntityPlayer player) {
|
||||
INetwork network = getNetwork();
|
||||
|
||||
if (network != null) {
|
||||
network.getNetworkItemHandler().onClose(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user