reduce chance for corruption of RS data (#2792)
This commit is contained in:
@@ -3,11 +3,11 @@ package com.refinedmods.refinedstorage.apiimpl.network;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkManager;
|
||||
import com.refinedmods.refinedstorage.api.network.NetworkType;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.ListNBT;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.storage.WorldSavedData;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -16,7 +16,7 @@ import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class NetworkManager extends WorldSavedData implements INetworkManager {
|
||||
public class NetworkManager extends RSWorldSavedData implements INetworkManager {
|
||||
public static final String NAME = "refinedstorage_networks";
|
||||
|
||||
private static final String NBT_NETWORKS = "Networks";
|
||||
|
@@ -4,12 +4,12 @@ import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeFactory;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.ListNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.storage.WorldSavedData;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -18,7 +18,7 @@ import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class NetworkNodeManager extends WorldSavedData implements INetworkNodeManager {
|
||||
public class NetworkNodeManager extends RSWorldSavedData implements INetworkNodeManager {
|
||||
public static final String NAME = "refinedstorage_nodes";
|
||||
|
||||
private static final String NBT_NODES = "Nodes";
|
||||
|
@@ -5,12 +5,12 @@ import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskFactory;
|
||||
import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskManager;
|
||||
import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.ListNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.server.ServerWorld;
|
||||
import net.minecraft.world.storage.WorldSavedData;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -18,7 +18,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class StorageDiskManager extends WorldSavedData implements IStorageDiskManager {
|
||||
public class StorageDiskManager extends RSWorldSavedData implements IStorageDiskManager {
|
||||
public static final String NAME = "refinedstorage_disks";
|
||||
|
||||
private static final String NBT_DISKS = "Disks";
|
||||
|
@@ -0,0 +1,49 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.util;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.util.SharedConstants;
|
||||
import net.minecraft.world.storage.WorldSavedData;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
public abstract class RSWorldSavedData extends WorldSavedData {
|
||||
private final Logger LOGGER = LogManager.getLogger(RSWorldSavedData.class);
|
||||
|
||||
public RSWorldSavedData(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract void read(CompoundNBT nbt);
|
||||
|
||||
@Override
|
||||
public abstract CompoundNBT write(CompoundNBT compound);
|
||||
|
||||
@Override
|
||||
public void save(File fileIn) {
|
||||
//@Volatile Mostly Copied from WorldSavedData
|
||||
if (this.isDirty()) {
|
||||
File tempFile = fileIn.toPath().getParent().resolve(fileIn.getName() + ".temp").toFile();
|
||||
|
||||
CompoundNBT compoundnbt = new CompoundNBT();
|
||||
compoundnbt.put("data", this.write(new CompoundNBT()));
|
||||
compoundnbt.putInt("DataVersion", SharedConstants.getVersion().getWorldVersion());
|
||||
|
||||
try {
|
||||
CompressedStreamTools.func_244264_a(compoundnbt, tempFile);
|
||||
if (fileIn.delete()) {
|
||||
tempFile.renameTo(fileIn);
|
||||
}
|
||||
} catch (IOException ioexception) {
|
||||
LOGGER.error("Could not save data {}", this, ioexception);
|
||||
}
|
||||
|
||||
this.setDirty(false);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user