1.5 -> 1.6 migration: convert empty whitelist to empty blacklist. #1816
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
@@ -23,6 +25,7 @@ import java.util.UUID;
|
||||
public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
private static final String NBT_OWNER = "Owner";
|
||||
private static final String NBT_DIRECTION = "Direction";
|
||||
private static final String NBT_VERSION = "Version";
|
||||
|
||||
@Nullable
|
||||
protected INetwork network;
|
||||
@@ -32,6 +35,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
protected RedstoneMode redstoneMode = RedstoneMode.IGNORE;
|
||||
@Nullable
|
||||
protected UUID owner;
|
||||
protected String version;
|
||||
|
||||
private EnumFacing direction = EnumFacing.NORTH;
|
||||
|
||||
@@ -147,6 +151,8 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
tag.setUniqueId(NBT_OWNER, owner);
|
||||
}
|
||||
|
||||
tag.setString(NBT_VERSION, RS.VERSION);
|
||||
|
||||
tag.setInteger(NBT_DIRECTION, direction.ordinal());
|
||||
|
||||
writeConfiguration(tag);
|
||||
@@ -169,7 +175,17 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
direction = EnumFacing.getFront(tag.getInteger(NBT_DIRECTION));
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_VERSION)) {
|
||||
version = tag.getString(NBT_VERSION);
|
||||
}
|
||||
|
||||
readConfiguration(tag);
|
||||
|
||||
// We do this after readConfiguration so the 1.6 migration calls see that version is null.
|
||||
OneSixMigrationHelper.removalHook();
|
||||
if (version == null) {
|
||||
version = RS.VERSION;
|
||||
}
|
||||
}
|
||||
|
||||
public void readConfiguration(NBTTagCompound tag) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
@@ -262,6 +263,8 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
||||
|
||||
StackUtils.readItems(itemFilters, 0, tag);
|
||||
StackUtils.readItems(fluidFilters, 2, tag);
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||
}
|
||||
|
||||
public IItemHandler getUpgrades() {
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
@@ -193,6 +194,8 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
||||
|
||||
StackUtils.readItems(itemFilters, 0, tag);
|
||||
StackUtils.readItems(fluidFilters, 2, tag);
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||
}
|
||||
|
||||
public IItemHandler getUpgrades() {
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
@@ -214,6 +215,8 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
||||
}
|
||||
|
||||
accessType = AccessTypeUtils.readAccessType(tag);
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.inventory.*;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
||||
@@ -524,6 +525,8 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
||||
if (tag.hasKey(NBT_IO_MODE)) {
|
||||
ioMode = tag.getInteger(NBT_IO_MODE);
|
||||
}
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
@@ -144,6 +145,8 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
||||
}
|
||||
|
||||
accessType = AccessTypeUtils.readAccessType(tag);
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.block.BlockFluidStorage;
|
||||
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
@@ -172,6 +173,8 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
|
||||
}
|
||||
|
||||
accessType = AccessTypeUtils.readAccessType(tag);
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, null, filters);
|
||||
}
|
||||
|
||||
public FluidStorageType getType() {
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.block.BlockStorage;
|
||||
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
@@ -172,6 +173,8 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
|
||||
}
|
||||
|
||||
accessType = AccessTypeUtils.readAccessType(tag);
|
||||
|
||||
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, filters, null);
|
||||
}
|
||||
|
||||
public ItemStorageType getType() {
|
||||
|
||||
@@ -2,9 +2,11 @@ package com.raoulvdberge.refinedstorage.apiimpl.util;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IOneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemPattern;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@@ -15,6 +17,7 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.UUID;
|
||||
|
||||
public class OneSixMigrationHelper implements IOneSixMigrationHelper {
|
||||
@@ -186,4 +189,12 @@ public class OneSixMigrationHelper implements IOneSixMigrationHelper {
|
||||
// If we remove the OneSixMigrationHelper we know where to remove other migration hooks by removing this method.
|
||||
public static void removalHook() {
|
||||
}
|
||||
|
||||
public static void migrateEmptyWhitelistToEmptyBlacklist(String version, IFilterable filterable, @Nullable IItemHandler itemFilterInv, @Nullable IItemHandler fluidFilterInv) {
|
||||
// Only migrate if we come from a version where the RS version tag stuff in NetworkNode wasn't added yet.
|
||||
// Otherwise, we would constantly migrate empty whitelists to empty blacklists...
|
||||
if (version == null && filterable.getMode() == IFilterable.WHITELIST && IFilterable.isEmpty(itemFilterInv) && IFilterable.isEmpty(fluidFilterInv)) {
|
||||
filterable.setMode(IFilter.MODE_BLACKLIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,15 +43,6 @@ public abstract class TileNode<N extends NetworkNode> extends TileBase implement
|
||||
getNode().setRedstoneMode(mode);
|
||||
}
|
||||
|
||||
public NBTTagCompound writeConfiguration(NBTTagCompound tag) {
|
||||
return getNode().writeConfiguration(tag);
|
||||
}
|
||||
|
||||
public void readConfiguration(NBTTagCompound tag) {
|
||||
getNode().readConfiguration(tag);
|
||||
getNode().markDirty();
|
||||
}
|
||||
|
||||
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
|
||||
super.writeUpdate(tag);
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface IFilterable {
|
||||
int WHITELIST = 0;
|
||||
int BLACKLIST = 1;
|
||||
@@ -74,7 +76,11 @@ public interface IFilterable {
|
||||
return false;
|
||||
}
|
||||
|
||||
static boolean isEmpty(IItemHandler filter) {
|
||||
static boolean isEmpty(@Nullable IItemHandler filter) {
|
||||
if (filter == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (int i = 0; i < filter.getSlots(); i++) {
|
||||
if (!filter.getStackInSlot(i).isEmpty()) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user