package net.minecraft.server; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public abstract class PersistentBase { private static final Logger LOGGER = LogManager.getLogger(); private final String id; private boolean c; public PersistentBase(String s) { this.id = s; } public abstract void a(NBTTagCompound nbttagcompound); public abstract NBTTagCompound b(NBTTagCompound nbttagcompound); public void b() { this.a(true); } public void a(boolean flag) { this.c = flag; } public boolean c() { return this.c; } public String getId() { return this.id; } public void a(File file) { if (this.c()) { NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.set("data", this.b(new NBTTagCompound())); nbttagcompound.setInt("DataVersion", SharedConstants.getGameVersion().getWorldVersion()); try { FileOutputStream fileoutputstream = new FileOutputStream(file); Throwable throwable = null; try { NBTCompressedStreamTools.a(nbttagcompound, (OutputStream) fileoutputstream); } catch (Throwable throwable1) { throwable = throwable1; throw throwable1; } finally { if (fileoutputstream != null) { if (throwable != null) { try { fileoutputstream.close(); } catch (Throwable throwable2) { throwable.addSuppressed(throwable2); } } else { fileoutputstream.close(); } } } } catch (IOException ioexception) { PersistentBase.LOGGER.error("Could not save data {}", this, ioexception); } this.a(false); } } }