3
0
Mirror von https://github.com/Moulberry/AxiomPaperPlugin.git synchronisiert 2024-11-08 17:40:04 +01:00

Construct CraftBlockState correctly

Dieser Commit ist enthalten in:
Moulberry 2024-08-21 09:50:48 +08:00
Ursprung 59fb92741e
Commit ba042757fd

Datei anzeigen

@ -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<org.bukkit.block.BlockState> blockStates = new ArrayList<>();
World world = player.serverLevel().getWorld();
for (Map.Entry<BlockPos, BlockState> entry : blocks.entrySet()) {
blockStates.add(CraftBlockStates.getBlockState(entry.getKey(), entry.getValue(), null));
blockStates.add(new AxiomPlacingCraftBlockState(world, entry.getKey(), entry.getValue()));
}
Cancellable event = null;