Allow accessing Registry context from TagValueOutput

This commit is contained in:
LexManos committed 2026-01-03 12:24:53 -08:00
1 parent 8368a1d20a
commit d61de63482
3 files changed
+38 -1

No files matched your search

@@ -13,6 +13,8 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.chunk.LevelChunk;
import net.minecraft.world.level.storage.TagValueOutput;
import net.minecraft.world.level.storage.ValueOutput;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.ForgeEventFactory;
@@ -176,6 +178,16 @@ public abstract class CapabilityProvider<B extends ICapabilityProviderImpl<B>> i
return capabilities;
}
protected final @Nullable CompoundTag serializeCaps(ValueOutput output) {
if (isLazy && !initialized)
return lazyData;
var disp = getCapabilities();
if (disp == null || !(output instanceof TagValueOutput tagOutput) || tagOutput.lookup == null)
return null;
return disp.serializeNBT(tagOutput.lookup);
}
protected final @Nullable CompoundTag serializeCaps(HolderLookup.Provider registryAccess) {
if (isLazy && !initialized)
return lazyData;