1.5 -> 1.6 migration: convert empty whitelist to empty blacklist. #1816

This commit is contained in:
raoulvdberge
2018-06-14 22:13:23 +02:00
parent c351c552a6
commit 2daed84c03
11 changed files with 55 additions and 10 deletions

View File

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

View File

@@ -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() {

View File

@@ -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() {

View File

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

View File

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

View File

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

View File

@@ -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() {

View File

@@ -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() {

View File

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

View File

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

View File

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