From 2f8255bd9ebcf55046fb7677c0dabeda54691417 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Tue, 22 Jul 2025 21:23:04 +0800 Subject: [PATCH] Fix LitematicaEasyPlaceProtocol --- .../leaves/protocol/LitematicaEasyPlaceProtocol.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/LitematicaEasyPlaceProtocol.java b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/LitematicaEasyPlaceProtocol.java index 16da03c9..c50bb56d 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/protocol/LitematicaEasyPlaceProtocol.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/protocol/LitematicaEasyPlaceProtocol.java @@ -1,5 +1,6 @@ package org.leavesmc.leaves.protocol; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -23,6 +24,7 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Map; import java.util.function.BiFunction; public class LitematicaEasyPlaceProtocol { @@ -51,8 +53,8 @@ public class LitematicaEasyPlaceProtocol { BlockStateProperties.ROTATION_16 ); - public static final ImmutableSet> DYNAMIC_PROPERTIES = ImmutableSet.of( - (state, original) -> state.setValue(BlockStateProperties.WATERLOGGED, original.is(Blocks.WATER)) + public static final ImmutableMap, BiFunction> DYNAMIC_PROPERTIES = ImmutableMap.of( + BlockStateProperties.WATERLOGGED, (state, original) -> state.setValue(BlockStateProperties.WATERLOGGED, original.is(Blocks.WATER)) ); public static BlockState applyPlacementProtocol(BlockState state, BlockPlaceContext context) { @@ -74,8 +76,10 @@ public class LitematicaEasyPlaceProtocol { return oldState; } - for (var func : DYNAMIC_PROPERTIES) { - state = func.apply(state, original); + for (Map.Entry, BiFunction> entry : DYNAMIC_PROPERTIES.entrySet()) { + if (state.hasProperty(entry.getKey())) { + state = entry.getValue().apply(state, original); + } } if (property != null && property != BlockStateProperties.VERTICAL_DIRECTION) {