diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java index 85e44e8..4e0fde6 100644 --- a/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java @@ -1,20 +1,9 @@ package io.github.slimeistdev.crystalline_sky.mixin; -import com.llamalad7.mixinextras.expression.Definition; -import com.llamalad7.mixinextras.expression.Expression; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.llamalad7.mixinextras.sugar.Local; -import com.llamalad7.mixinextras.sugar.Share; -import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; -import com.llamalad7.mixinextras.sugar.ref.LocalIntRef; -import com.llamalad7.mixinextras.sugar.ref.LocalRef; import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; -import net.minecraft.util.math.Direction; import net.minecraft.world.chunk.ChunkProvider; import net.minecraft.world.chunk.ChunkToNibbleArrayMap; import net.minecraft.world.chunk.light.ChunkLightProvider; @@ -23,10 +12,8 @@ import net.minecraft.world.chunk.light.LightStorage; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ChunkSkyLightProvider.class) @@ -35,9 +22,6 @@ public abstract class ChunkSkyLightProviderMixin direction, @Share("unreduced") LocalBooleanRef unreduced) { - if (lightLevel == 15 && (packed & crystalline_sky$EMISSION_FROM_SKY_BLOCK) != 0 && direction.get() == Direction.DOWN) { - unreduced.set(true); - return lightLevel; - } else { - unreduced.set(false); - return original; - } - } - - @WrapOperation( - method = "propagateIncrease", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getOpacity(Lnet/minecraft/block/BlockState;)I", - ordinal = 0 - ), - slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getStateForLighting(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", ordinal = 0) - ) - ) - private int unreducedDown2(ChunkSkyLightProvider instance, BlockState blockState, Operation original, @Share("unreduced") LocalBooleanRef unreduced) { - if (unreduced.get()) { - return blockState.getOpacity(); - } - - return original.call(instance, blockState); - } - - @WrapOperation( - method = "propagateIncrease", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;enqueueIncrease(JJ)V" - ), - slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getStateForLighting(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", ordinal = 0) - ) - ) - private void passFlagOn(ChunkSkyLightProvider instance, long pos, long flags, Operation original, @Share("unreduced") LocalBooleanRef unreduced) { - if (unreduced.get()) { - flags |= crystalline_sky$EMISSION_FROM_SKY_BLOCK; - } - original.call(instance, pos, flags); - } - - @Definition(id = "k", local = @Local(type = int.class, ordinal = 4)) - @Definition(id = "j", local = @Local(type = int.class, ordinal = 1)) - @Expression("k <= j - 1") - @ModifyExpressionValue( - method = "propagateDecrease", - at = @At("MIXINEXTRAS:EXPRESSION"), - slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/SkyLightStorage;get(J)I"), - to = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/SkyLightStorage;set(JI)V") - ) - ) - private boolean cleanBelowSkyLight(boolean original, @Local(ordinal = 1) LocalIntRef j, @Local(ordinal = 4) LocalIntRef k, @SuppressWarnings("LocalMayBeArgsOnly") @Local LocalRef direction) { - return original || direction.get() == Direction.DOWN && j.get() == 15 && k.get() == 15; - } }