From 8c711022e13d05b57a315f7bfdd1c40b02ea7b20 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Wed, 17 May 2023 21:43:41 +0200 Subject: [PATCH] managerize the rest of the lighting data --- .../falsepattern/chunk/internal/ChunkAPI.java | 2 + .../common/vanilla/AnvilChunkLoaderMixin.java | 4 -- .../internal/vanilla/LightingManager.java | 37 +++++++++++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/falsepattern/chunk/internal/vanilla/LightingManager.java diff --git a/src/main/java/com/falsepattern/chunk/internal/ChunkAPI.java b/src/main/java/com/falsepattern/chunk/internal/ChunkAPI.java index 04d56e0..14cd010 100644 --- a/src/main/java/com/falsepattern/chunk/internal/ChunkAPI.java +++ b/src/main/java/com/falsepattern/chunk/internal/ChunkAPI.java @@ -11,6 +11,7 @@ import com.falsepattern.chunk.api.ChunkDataRegistry; import com.falsepattern.chunk.internal.vanilla.BiomeManager; import com.falsepattern.chunk.internal.vanilla.BlockIDManager; import com.falsepattern.chunk.internal.vanilla.BlocklightManager; +import com.falsepattern.chunk.internal.vanilla.LightingManager; import com.falsepattern.chunk.internal.vanilla.MetadataManager; import com.falsepattern.chunk.internal.vanilla.SkylightManager; @@ -28,6 +29,7 @@ public class ChunkAPI { public void init(FMLInitializationEvent event) { ChunkDataRegistry.registerDataManager(new BlockIDManager()); ChunkDataRegistry.registerDataManager(new MetadataManager()); + ChunkDataRegistry.registerDataManager(new LightingManager()); ChunkDataRegistry.registerDataManager(new BlocklightManager()); ChunkDataRegistry.registerDataManager(new SkylightManager()); ChunkDataRegistry.registerDataManager(new BiomeManager()); diff --git a/src/main/java/com/falsepattern/chunk/internal/mixin/mixins/common/vanilla/AnvilChunkLoaderMixin.java b/src/main/java/com/falsepattern/chunk/internal/mixin/mixins/common/vanilla/AnvilChunkLoaderMixin.java index c19ad33..c2036a7 100644 --- a/src/main/java/com/falsepattern/chunk/internal/mixin/mixins/common/vanilla/AnvilChunkLoaderMixin.java +++ b/src/main/java/com/falsepattern/chunk/internal/mixin/mixins/common/vanilla/AnvilChunkLoaderMixin.java @@ -42,9 +42,7 @@ public abstract class AnvilChunkLoaderMixin { nbt.setInteger("xPos", chunk.xPosition); nbt.setInteger("zPos", chunk.zPosition); nbt.setLong("LastUpdate", world.getTotalWorldTime()); - nbt.setIntArray("HeightMap", chunk.heightMap); nbt.setBoolean("TerrainPopulated", chunk.isTerrainPopulated); - nbt.setBoolean("LightPopulated", chunk.isLightPopulated); nbt.setLong("InhabitedTime", chunk.inhabitedTime); writeSections(chunk, nbt); writeCustomData(chunk, nbt); @@ -63,9 +61,7 @@ public abstract class AnvilChunkLoaderMixin { int x = nbt.getInteger("xPos"); int z = nbt.getInteger("zPos"); Chunk chunk = new Chunk(world, x, z); - chunk.heightMap = nbt.getIntArray("HeightMap"); chunk.isTerrainPopulated = nbt.getBoolean("TerrainPopulated"); - chunk.isLightPopulated = nbt.getBoolean("LightPopulated"); chunk.inhabitedTime = nbt.getLong("InhabitedTime"); readSections(chunk, nbt); readCustomData(chunk, nbt); diff --git a/src/main/java/com/falsepattern/chunk/internal/vanilla/LightingManager.java b/src/main/java/com/falsepattern/chunk/internal/vanilla/LightingManager.java new file mode 100644 index 0000000..d39cad2 --- /dev/null +++ b/src/main/java/com/falsepattern/chunk/internal/vanilla/LightingManager.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 FalsePattern + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ + * or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + */ + +package com.falsepattern.chunk.internal.vanilla; + +import com.falsepattern.chunk.api.ChunkDataManager; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.chunk.Chunk; + +public class LightingManager extends VanillaManager implements ChunkDataManager.ChunkNBTDataManager { + @Override + public String id() { + return "lighting"; + } + + @Override + public void writeChunkToNBT(Chunk chunk, NBTTagCompound nbt) { + nbt.setIntArray("HeightMap", chunk.heightMap); + nbt.setBoolean("LightPopulated", chunk.isLightPopulated); + } + + @Override + public void readChunkFromNBT(Chunk chunk, NBTTagCompound nbt) { + chunk.heightMap = nbt.getIntArray("HeightMap"); + chunk.isLightPopulated = nbt.getBoolean("LightPopulated"); + } + + @Override + public boolean chunkPrivilegedAccess() { + return true; + } +}