From c219416bb85eb97851c439d28d1ba36458d91295 Mon Sep 17 00:00:00 2001 From: cpw Date: Sun, 24 Feb 2019 13:03:11 -0500 Subject: [PATCH] Patch DimensionSavedDataManager to not spam FS mkdirs requests for empty files that don't exist yet, and don't contain data. Should result in a significant performance improvement for those with slower disks. Signed-off-by: cpw --- .../DimensionSavedDataManager.java.patch | 20 +++++++++++++++++ .../common/util/DummyWorldSaveData.java | 22 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 patches/minecraft/net/minecraft/world/storage/DimensionSavedDataManager.java.patch create mode 100644 src/main/java/net/minecraftforge/common/util/DummyWorldSaveData.java diff --git a/patches/minecraft/net/minecraft/world/storage/DimensionSavedDataManager.java.patch b/patches/minecraft/net/minecraft/world/storage/DimensionSavedDataManager.java.patch new file mode 100644 index 0000000000..a56c933a60 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/storage/DimensionSavedDataManager.java.patch @@ -0,0 +1,20 @@ +--- a/net/minecraft/world/storage/DimensionSavedDataManager.java ++++ b/net/minecraft/world/storage/DimensionSavedDataManager.java +@@ -38,6 +38,7 @@ + @Nullable + public T func_201067_a(Function p_201067_1_, String p_201067_2_) { + WorldSavedData worldsaveddata = this.field_212778_c.get(p_201067_2_); ++ if (worldsaveddata == net.minecraftforge.common.util.DummyWorldSaveData.DUMMY) return null; + if (worldsaveddata == null && this.field_212780_e != null) { + try { + File file1 = this.field_212780_e.func_212423_a(this.field_212777_b, p_201067_2_); +@@ -45,6 +46,9 @@ + worldsaveddata = (WorldSavedData)p_201067_1_.apply(p_201067_2_); + worldsaveddata.func_76184_a(func_212774_a(this.field_212780_e, this.field_212777_b, p_201067_2_, 1631).func_74775_l("data")); + this.field_212778_c.put(p_201067_2_, worldsaveddata); ++ } else { ++ this.field_212778_c.put(p_201067_2_, net.minecraftforge.common.util.DummyWorldSaveData.DUMMY); ++ return null; + } + } catch (Exception exception) { + field_212776_a.error("Error loading saved data: {}", p_201067_2_, exception); diff --git a/src/main/java/net/minecraftforge/common/util/DummyWorldSaveData.java b/src/main/java/net/minecraftforge/common/util/DummyWorldSaveData.java new file mode 100644 index 0000000000..45bcff7fee --- /dev/null +++ b/src/main/java/net/minecraftforge/common/util/DummyWorldSaveData.java @@ -0,0 +1,22 @@ +package net.minecraftforge.common.util; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.storage.WorldSavedData; + +public class DummyWorldSaveData extends WorldSavedData { + public static final DummyWorldSaveData DUMMY = new DummyWorldSaveData(); + private DummyWorldSaveData() { + super("DUMMYDUMMY \uD83D\uDC4C\uD83D\uDC4C\uD83D\uDC4C"); + } + + @Override + public void read(final NBTTagCompound nbt) { + // NOOP + } + + @Override + public NBTTagCompound write(final NBTTagCompound compound) { + // NOOP + return null; + } +}