diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ChunkAccessMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ChunkAccessMixin.java index 50f9d28..e996902 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ChunkAccessMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ChunkAccessMixin.java @@ -2,7 +2,15 @@ package ca.spottedleaf.moonrise.mixin.starlight.chunk; import ca.spottedleaf.moonrise.patches.starlight.chunk.StarlightChunk; import ca.spottedleaf.moonrise.patches.starlight.light.SWMRNibbleArray; +import ca.spottedleaf.moonrise.patches.starlight.light.StarLightEngine; +import net.minecraft.core.Registry; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ImposterProtoChunk; +import net.minecraft.world.level.chunk.LevelChunkSection; +import net.minecraft.world.level.chunk.UpgradeData; +import net.minecraft.world.level.levelgen.blending.BlendingData; import net.minecraft.world.level.lighting.ChunkSkyLightSources; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -72,7 +80,7 @@ public abstract class ChunkAccessMixin implements StarlightChunk { } /** - * @reason Remove unused skylight sources + * @reason Remove unused skylight sources, and initialise nibble arrays. * @author Spottedleaf */ @Inject( @@ -81,8 +89,14 @@ public abstract class ChunkAccessMixin implements StarlightChunk { value = "RETURN" ) ) - private void nullSources(final CallbackInfo ci) { + private void nullSources(ChunkPos chunkPos, UpgradeData upgradeData, LevelHeightAccessor levelHeightAccessor, + Registry registry, long l, LevelChunkSection[] levelChunkSections, BlendingData blendingData, + CallbackInfo ci) { this.skyLightSources = null; + if (!((Object)this instanceof ImposterProtoChunk)) { + this.setBlockNibbles(StarLightEngine.getFilledEmptyLight(levelHeightAccessor)); + this.setSkyNibbles(StarLightEngine.getFilledEmptyLight(levelHeightAccessor)); + } } /** diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/LevelChunkMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/LevelChunkMixin.java index ef3232e..51366db 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/LevelChunkMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/LevelChunkMixin.java @@ -1,18 +1,11 @@ package ca.spottedleaf.moonrise.mixin.starlight.chunk; import ca.spottedleaf.moonrise.patches.starlight.chunk.StarlightChunk; -import ca.spottedleaf.moonrise.patches.starlight.light.StarLightEngine; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.ProtoChunk; -import net.minecraft.world.level.chunk.UpgradeData; -import net.minecraft.world.level.levelgen.blending.BlendingData; import net.minecraft.world.level.lighting.ChunkSkyLightSources; -import net.minecraft.world.ticks.LevelChunkTicks; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -37,19 +30,6 @@ public abstract class LevelChunkMixin implements StarlightChunk { this.setBlockEmptinessMap(((StarlightChunk)protoChunk).getBlockEmptinessMap()); } - /** - * Initialises the nibble arrays to default values. - * TODO since this is a constructor inject, check for new constructors on update. - */ - @Inject( - method = "(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/level/chunk/UpgradeData;Lnet/minecraft/world/ticks/LevelChunkTicks;Lnet/minecraft/world/ticks/LevelChunkTicks;J[Lnet/minecraft/world/level/chunk/LevelChunkSection;Lnet/minecraft/world/level/chunk/LevelChunk$PostLoadProcessor;Lnet/minecraft/world/level/levelgen/blending/BlendingData;)V", - at = @At("TAIL") - ) - public void onConstruct(Level level, ChunkPos chunkPos, UpgradeData upgradeData, LevelChunkTicks levelChunkTicks, LevelChunkTicks levelChunkTicks2, long l, LevelChunkSection[] levelChunkSections, LevelChunk.PostLoadProcessor postLoadProcessor, BlendingData blendingData, CallbackInfo ci) { - this.setBlockNibbles(StarLightEngine.getFilledEmptyLight(level)); - this.setSkyNibbles(StarLightEngine.getFilledEmptyLight(level)); - } - /** * @reason Remove unused skylight sources * @author Spottedleaf diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ProtoChunkMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ProtoChunkMixin.java index 25785bf..f90bb5e 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ProtoChunkMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/starlight/chunk/ProtoChunkMixin.java @@ -1,43 +1,16 @@ package ca.spottedleaf.moonrise.mixin.starlight.chunk; import ca.spottedleaf.moonrise.patches.starlight.chunk.StarlightChunk; -import ca.spottedleaf.moonrise.patches.starlight.light.StarLightEngine; -import net.minecraft.core.Registry; import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.LevelHeightAccessor; -import net.minecraft.world.level.chunk.ImposterProtoChunk; -import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.ProtoChunk; -import net.minecraft.world.level.chunk.UpgradeData; -import net.minecraft.world.level.levelgen.blending.BlendingData; import net.minecraft.world.level.lighting.ChunkSkyLightSources; -import net.minecraft.world.ticks.ProtoChunkTicks; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ProtoChunk.class) public abstract class ProtoChunkMixin implements StarlightChunk { - /** - * Initialises the nibble arrays to default values. - * TODO since this is a constructor inject, check for new constructors on update. - */ - @Inject( - method = "(Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/level/chunk/UpgradeData;[Lnet/minecraft/world/level/chunk/LevelChunkSection;Lnet/minecraft/world/ticks/ProtoChunkTicks;Lnet/minecraft/world/ticks/ProtoChunkTicks;Lnet/minecraft/world/level/LevelHeightAccessor;Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/levelgen/blending/BlendingData;)V", - at = @At("TAIL") - ) - public void onConstruct(ChunkPos chunkPos, UpgradeData upgradeData, LevelChunkSection[] levelChunkSections, ProtoChunkTicks protoChunkTicks, ProtoChunkTicks protoChunkTicks2, LevelHeightAccessor levelHeightAccessor, Registry registry, BlendingData blendingData, CallbackInfo ci) { - if ((Object)this instanceof ImposterProtoChunk) { - return; - } - this.setBlockNibbles(StarLightEngine.getFilledEmptyLight(levelHeightAccessor)); - this.setSkyNibbles(StarLightEngine.getFilledEmptyLight(levelHeightAccessor)); - } - /** * @reason Remove unused skylight sources * @author Spottedleaf