From 5d0047753dfac0caaf5d97cc3f5c9a8b0990cb44 Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 2 Feb 2024 12:50:09 -0800 Subject: [PATCH] Add null check to DimensionDataStorage. Fixes #9859 --- .../world/level/storage/DimensionDataStorage.java.patch | 9 +++++++++ .../minecraftforge/common/util/LevelCapabilityData.java | 3 +-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch b/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch index eb77f16f0c..d24905dc59 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch @@ -14,3 +14,12 @@ } return (T)saveddata; +@@ -94,7 +_,7 @@ + } + + int i = NbtUtils.getDataVersion(compoundtag, 1343); +- compoundtag1 = p_301060_.update(this.fixerUpper, compoundtag, i, p_78160_); ++ compoundtag1 = p_301060_ == null ? compoundtag : p_301060_.update(this.fixerUpper, compoundtag, i, p_78160_); // Forge: Allow the data fixer to be null, leaving the modder responsible for keeping track of their own data formats + } + + return compoundtag1; diff --git a/src/main/java/net/minecraftforge/common/util/LevelCapabilityData.java b/src/main/java/net/minecraftforge/common/util/LevelCapabilityData.java index 64ecb868ac..7c395aa1d2 100644 --- a/src/main/java/net/minecraftforge/common/util/LevelCapabilityData.java +++ b/src/main/java/net/minecraftforge/common/util/LevelCapabilityData.java @@ -6,7 +6,6 @@ package net.minecraftforge.common.util; import net.minecraft.nbt.CompoundTag; -import net.minecraft.util.datafix.DataFixTypes; import net.minecraft.world.level.saveddata.SavedData; import net.minecraft.world.level.storage.DimensionDataStorage; @@ -58,7 +57,7 @@ public class LevelCapabilityData extends SavedData { ret.read(tag); return ret; }, - DataFixTypes.SAVED_DATA_COMMAND_STORAGE //TODO: Hook this for our own types? + null ); var ret = data.computeIfAbsent(factory, ID);