From 2206674c0dff92d260ef9719497760a75f369a12 Mon Sep 17 00:00:00 2001 From: davidalb97 Date: Thu, 18 Nov 2021 12:22:37 +0000 Subject: [PATCH] Migrated BetterNether's PR BetterNether/pull/437 into BCLib --- .../common/LayerLightSectionStorageMixin.java | 40 +++++++++++++++++++ src/main/resources/bclib.mixins.common.json | 1 + 2 files changed, 41 insertions(+) create mode 100644 src/main/java/ru/bclib/mixin/common/LayerLightSectionStorageMixin.java diff --git a/src/main/java/ru/bclib/mixin/common/LayerLightSectionStorageMixin.java b/src/main/java/ru/bclib/mixin/common/LayerLightSectionStorageMixin.java new file mode 100644 index 00000000..ac0dc5fa --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/LayerLightSectionStorageMixin.java @@ -0,0 +1,40 @@ +package ru.bclib.mixin.common; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.SectionPos; +import net.minecraft.world.level.chunk.DataLayer; +import net.minecraft.world.level.lighting.LayerLightSectionStorage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LayerLightSectionStorage.class) +public class LayerLightSectionStorageMixin { + + @Shadow + protected DataLayer getDataLayer(long sectionPos, boolean cached) { + return null; + } + + @Inject(method = "getStoredLevel", at = @At(value = "HEAD"), cancellable = true) + private void lightFix(long blockPos, CallbackInfoReturnable info) { + try { + long m = SectionPos.blockToSection(blockPos); + DataLayer dataLayer = this.getDataLayer(m, true); + info.setReturnValue( + dataLayer.get( + SectionPos.sectionRelative(BlockPos.getX(blockPos)), + SectionPos.sectionRelative(BlockPos.getY(blockPos)), + SectionPos.sectionRelative(BlockPos.getZ(blockPos)) + ) + ); + info.cancel(); + } catch (Exception e) { + info.setReturnValue(0); + info.cancel(); + } + } + +} diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index 1487977a..2ecb65eb 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -20,6 +20,7 @@ "MinecraftServerMixin", "PistonBaseBlockMixin", "WorldGenRegionMixin", + "LayerLightSectionStorageMixin", "DimensionTypeMixin", "RecipeManagerMixin", "CraftingMenuMixin",