diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java index df0f1a768..af70dad99 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java @@ -130,8 +130,8 @@ public final class BukkitCustomBlock extends AbstractCustomBlock { CoreReflections.field$BlockBehaviour$explosionResistance.set(nmsBlock, settings.resistance()); CoreReflections.field$BlockBehaviour$soundType.set(nmsBlock, SoundUtils.toSoundType(settings.sounds())); // 1.21.2以前要在init cache之前设定 isConditionallyFullOpaque + boolean isConditionallyFullOpaque = canOcclude & useShapeForLightOcclusion; if (!VersionHelper.isOrAbove1_21_2()) { - boolean isConditionallyFullOpaque = canOcclude & useShapeForLightOcclusion; CoreReflections.field$BlockStateBase$isConditionallyFullOpaque.set(nmsState, isConditionallyFullOpaque); } // init cache @@ -162,6 +162,9 @@ public final class BukkitCustomBlock extends AbstractCustomBlock { } else { CoreReflections.field$BlockStateBase$Cache$propagatesSkylightDown.set(cache, CoreReflections.field$BlockStateBase$Cache$propagatesSkylightDown.getBoolean(CoreReflections.field$BlockStateBase$cache.get(immutableBlockState.vanillaBlockState().handle()))); } + if (!isConditionallyFullOpaque) { + CoreReflections.field$BlockStateBase$opacityIfCached.set(nmsState, blockLight); + } } // set fluid later if (settings.fluidState()) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index ee3439b35..561c4a356 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -1328,6 +1328,10 @@ public final class CoreReflections { public static final Field field$BlockStateBase$lightBlock = ReflectionUtils.getInstanceDeclaredField(clazz$BlockStateBase, int.class, 1); + // 1.20-1.21.1 + public static final Field field$BlockStateBase$opacityIfCached = + ReflectionUtils.getInstanceDeclaredField(clazz$BlockStateBase, int.class, 1); + public static final Class clazz$AABB = requireNonNull( BukkitReflectionUtils.findReobfOrMojmapClass( "world.phys.AxisAlignedBB",