diff --git a/src/main/java/me/youhavetrouble/blockedit/BlockEditCommands.java b/src/main/java/me/youhavetrouble/blockedit/BlockEditCommands.java index e635da8..7ae4ed8 100644 --- a/src/main/java/me/youhavetrouble/blockedit/BlockEditCommands.java +++ b/src/main/java/me/youhavetrouble/blockedit/BlockEditCommands.java @@ -277,7 +277,7 @@ public class BlockEditCommands { Selection selection = bePlayer.getSelection(); - BlockEditAPI.runOperation(selection, 1, new SetOperation(blockState.getBlockData())); + BlockEditAPI.runOperation(selection, 1, new SetOperation(blockState)); player.sendMessage(Component.text("Setting blocks...")); return Command.SINGLE_SUCCESS; @@ -308,7 +308,7 @@ public class BlockEditCommands { Selection selection = bePlayer.getSelection(); - BlockEditAPI.runOperation(selection, 1, new ReplaceOperation(toReplace.getBlockData(), replaceWith.getBlockData())); + BlockEditAPI.runOperation(selection, 1, new ReplaceOperation(toReplace.getBlockData(), replaceWith)); player.sendMessage(Component.text("Replacing blocks...")); return Command.SINGLE_SUCCESS; diff --git a/src/main/java/me/youhavetrouble/blockedit/operations/PasteOperation.java b/src/main/java/me/youhavetrouble/blockedit/operations/PasteOperation.java index fcb0cd6..06a09fb 100644 --- a/src/main/java/me/youhavetrouble/blockedit/operations/PasteOperation.java +++ b/src/main/java/me/youhavetrouble/blockedit/operations/PasteOperation.java @@ -11,11 +11,14 @@ import java.util.Map; * Pastes blocks from a map of vectors and block states. Caution! Vectors must be floored to align with block locations. * @param blockStateMap */ +@SuppressWarnings("UnstableApiUsage") public record PasteOperation(Map blockStateMap) implements BlockEditOperation { @Override public void transformBlock(Block block) { if (!blockStateMap.containsKey(block.getLocation().toVector())) return; - block.setBlockData(blockStateMap.get(block.getLocation().toVector()).getBlockData()); + BlockState blockState = blockStateMap.get(block.getLocation().toVector()); + BlockState newState = blockState.copy(block.getLocation()); + newState.update(true, false); } } diff --git a/src/main/java/me/youhavetrouble/blockedit/operations/ReplaceOperation.java b/src/main/java/me/youhavetrouble/blockedit/operations/ReplaceOperation.java index e249adb..fd8f64e 100644 --- a/src/main/java/me/youhavetrouble/blockedit/operations/ReplaceOperation.java +++ b/src/main/java/me/youhavetrouble/blockedit/operations/ReplaceOperation.java @@ -2,13 +2,16 @@ package me.youhavetrouble.blockedit.operations; import me.youhavetrouble.blockedit.api.BlockEditOperation; import org.bukkit.block.Block; +import org.bukkit.block.BlockState; import org.bukkit.block.data.BlockData; -public record ReplaceOperation(BlockData blockToReplace, BlockData blockToSet) implements BlockEditOperation { +@SuppressWarnings("UnstableApiUsage") +public record ReplaceOperation(BlockData blockToReplace, BlockState blockToSet) implements BlockEditOperation { @Override public void transformBlock(Block block) { if (!block.getBlockData().matches(blockToReplace)) return; - block.setBlockData(blockToSet); + BlockState newState = blockToSet.copy(block.getLocation()); + newState.update(true, false); } } diff --git a/src/main/java/me/youhavetrouble/blockedit/operations/SetOperation.java b/src/main/java/me/youhavetrouble/blockedit/operations/SetOperation.java index ccee905..682afce 100644 --- a/src/main/java/me/youhavetrouble/blockedit/operations/SetOperation.java +++ b/src/main/java/me/youhavetrouble/blockedit/operations/SetOperation.java @@ -2,12 +2,14 @@ package me.youhavetrouble.blockedit.operations; import me.youhavetrouble.blockedit.api.BlockEditOperation; import org.bukkit.block.Block; -import org.bukkit.block.data.BlockData; +import org.bukkit.block.BlockState; -public record SetOperation(BlockData blockData) implements BlockEditOperation { +@SuppressWarnings("UnstableApiUsage") +public record SetOperation(BlockState blockToSet) implements BlockEditOperation { @Override public void transformBlock(Block block) { - block.setBlockData(blockData); + BlockState newState = blockToSet.copy(block.getLocation()); + newState.update(true, false); } }