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;
|
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.INetwork;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -23,6 +25,7 @@ import java.util.UUID;
|
|||||||
public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||||
private static final String NBT_OWNER = "Owner";
|
private static final String NBT_OWNER = "Owner";
|
||||||
private static final String NBT_DIRECTION = "Direction";
|
private static final String NBT_DIRECTION = "Direction";
|
||||||
|
private static final String NBT_VERSION = "Version";
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
protected INetwork network;
|
protected INetwork network;
|
||||||
@@ -32,6 +35,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
|||||||
protected RedstoneMode redstoneMode = RedstoneMode.IGNORE;
|
protected RedstoneMode redstoneMode = RedstoneMode.IGNORE;
|
||||||
@Nullable
|
@Nullable
|
||||||
protected UUID owner;
|
protected UUID owner;
|
||||||
|
protected String version;
|
||||||
|
|
||||||
private EnumFacing direction = EnumFacing.NORTH;
|
private EnumFacing direction = EnumFacing.NORTH;
|
||||||
|
|
||||||
@@ -147,6 +151,8 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
|||||||
tag.setUniqueId(NBT_OWNER, owner);
|
tag.setUniqueId(NBT_OWNER, owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tag.setString(NBT_VERSION, RS.VERSION);
|
||||||
|
|
||||||
tag.setInteger(NBT_DIRECTION, direction.ordinal());
|
tag.setInteger(NBT_DIRECTION, direction.ordinal());
|
||||||
|
|
||||||
writeConfiguration(tag);
|
writeConfiguration(tag);
|
||||||
@@ -169,7 +175,17 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
|||||||
direction = EnumFacing.getFront(tag.getInteger(NBT_DIRECTION));
|
direction = EnumFacing.getFront(tag.getInteger(NBT_DIRECTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tag.hasKey(NBT_VERSION)) {
|
||||||
|
version = tag.getString(NBT_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
readConfiguration(tag);
|
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) {
|
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.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
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.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
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(itemFilters, 0, tag);
|
||||||
StackUtils.readItems(fluidFilters, 2, tag);
|
StackUtils.readItems(fluidFilters, 2, tag);
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IItemHandler getUpgrades() {
|
public IItemHandler getUpgrades() {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
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.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
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(itemFilters, 0, tag);
|
||||||
StackUtils.readItems(fluidFilters, 2, tag);
|
StackUtils.readItems(fluidFilters, 2, tag);
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IItemHandler getUpgrades() {
|
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.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
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.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||||
@@ -214,6 +215,8 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
|||||||
}
|
}
|
||||||
|
|
||||||
accessType = AccessTypeUtils.readAccessType(tag);
|
accessType = AccessTypeUtils.readAccessType(tag);
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
|
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.inventory.*;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
||||||
@@ -524,6 +525,8 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
|||||||
if (tag.hasKey(NBT_IO_MODE)) {
|
if (tag.hasKey(NBT_IO_MODE)) {
|
||||||
ioMode = tag.getInteger(NBT_IO_MODE);
|
ioMode = tag.getInteger(NBT_IO_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||||
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
|
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||||
@@ -144,6 +145,8 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
}
|
}
|
||||||
|
|
||||||
accessType = AccessTypeUtils.readAccessType(tag);
|
accessType = AccessTypeUtils.readAccessType(tag);
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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.IGuiStorage;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
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.BlockFluidStorage;
|
||||||
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
|
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||||
@@ -172,6 +173,8 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
|
|||||||
}
|
}
|
||||||
|
|
||||||
accessType = AccessTypeUtils.readAccessType(tag);
|
accessType = AccessTypeUtils.readAccessType(tag);
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, null, filters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FluidStorageType getType() {
|
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.IGuiStorage;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
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.BlockStorage;
|
||||||
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
|
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||||
@@ -172,6 +173,8 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
|
|||||||
}
|
}
|
||||||
|
|
||||||
accessType = AccessTypeUtils.readAccessType(tag);
|
accessType = AccessTypeUtils.readAccessType(tag);
|
||||||
|
|
||||||
|
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, filters, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStorageType getType() {
|
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.IStorageDisk;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
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.api.util.IOneSixMigrationHelper;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemPattern;
|
import com.raoulvdberge.refinedstorage.item.ItemPattern;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
@@ -15,6 +17,7 @@ import net.minecraftforge.fluids.FluidStack;
|
|||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class OneSixMigrationHelper implements IOneSixMigrationHelper {
|
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.
|
// If we remove the OneSixMigrationHelper we know where to remove other migration hooks by removing this method.
|
||||||
public static void removalHook() {
|
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);
|
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) {
|
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
|
||||||
super.writeUpdate(tag);
|
super.writeUpdate(tag);
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import net.minecraft.tileentity.TileEntity;
|
|||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public interface IFilterable {
|
public interface IFilterable {
|
||||||
int WHITELIST = 0;
|
int WHITELIST = 0;
|
||||||
int BLACKLIST = 1;
|
int BLACKLIST = 1;
|
||||||
@@ -74,7 +76,11 @@ public interface IFilterable {
|
|||||||
return false;
|
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++) {
|
for (int i = 0; i < filter.getSlots(); i++) {
|
||||||
if (!filter.getStackInSlot(i).isEmpty()) {
|
if (!filter.getStackInSlot(i).isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user