From ba042757fd21659f25a2a8456309503afe607bde Mon Sep 17 00:00:00 2001 From: Moulberry Date: Wed, 21 Aug 2024 09:50:48 +0800 Subject: [PATCH] Construct CraftBlockState correctly --- .../axiom/packet/SetBlockPacketListener.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/moulberry/axiom/packet/SetBlockPacketListener.java b/src/main/java/com/moulberry/axiom/packet/SetBlockPacketListener.java index 91ca117..2b69c59 100644 --- a/src/main/java/com/moulberry/axiom/packet/SetBlockPacketListener.java +++ b/src/main/java/com/moulberry/axiom/packet/SetBlockPacketListener.java @@ -4,7 +4,6 @@ import com.google.common.collect.Maps; import com.moulberry.axiom.AxiomPaper; import com.moulberry.axiom.integration.Integration; import com.moulberry.axiom.integration.coreprotect.CoreProtectIntegration; -import com.moulberry.axiom.integration.plotsquared.PlotSquaredIntegration; import io.netty.buffer.Unpooled; import net.kyori.adventure.text.Component; import net.minecraft.core.BlockPos; @@ -28,24 +27,22 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.lighting.LightEngine; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.block.BlockFace; import org.bukkit.craftbukkit.CraftWorld; -import org.bukkit.craftbukkit.block.CapturedBlockState; import org.bukkit.craftbukkit.block.CraftBlock; -import org.bukkit.craftbukkit.block.CraftBlockStates; +import org.bukkit.craftbukkit.block.CraftBlockState; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.event.CraftEventFactory; -import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.block.Action; -import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.plugin.messaging.PluginMessageListener; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import xyz.jpenilla.reflectionremapper.ReflectionRemapper; import java.lang.reflect.InvocationTargetException; @@ -86,6 +83,12 @@ public class SetBlockPacketListener implements PluginMessageListener { } } + public static class AxiomPlacingCraftBlockState extends CraftBlockState { + public AxiomPlacingCraftBlockState(@Nullable World world, BlockPos blockPosition, BlockState blockData) { + super(world, blockPosition, blockData); + } + } + private void process(Player bukkitPlayer, byte[] message) { if (!this.plugin.canUseAxiom(bukkitPlayer, "axiom.build.place")) { return; @@ -139,8 +142,9 @@ public class SetBlockPacketListener implements PluginMessageListener { // Call BlockMultiPlace / BlockPlace event List blockStates = new ArrayList<>(); + World world = player.serverLevel().getWorld(); for (Map.Entry entry : blocks.entrySet()) { - blockStates.add(CraftBlockStates.getBlockState(entry.getKey(), entry.getValue(), null)); + blockStates.add(new AxiomPlacingCraftBlockState(world, entry.getKey(), entry.getValue())); } Cancellable event = null;