Skip to content

Commit 8717077

Browse files
committed
Made the temporary fix for the latest version of AxiomPaper.
1 parent a3ac663 commit 8717077

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88
}
99

1010
group = "com.moulberry.axiom"
11-
version = "1.2.1"
11+
version = "1.2.1.1"
1212
description = "Serverside component for Axiom on Paper"
1313

1414
java {

src/main/java/com/moulberry/axiom/packet/SetBlockPacketListener.java

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import com.moulberry.axiom.event.AxiomModifyWorldEvent;
55
import io.netty.buffer.Unpooled;
66
import net.minecraft.core.BlockPos;
7+
import net.minecraft.core.Direction;
78
import net.minecraft.core.SectionPos;
89
import net.minecraft.network.FriendlyByteBuf;
10+
import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
911
import net.minecraft.server.level.ServerLevel;
1012
import net.minecraft.server.level.ServerPlayer;
1113
import net.minecraft.world.level.block.Block;
@@ -17,16 +19,19 @@
1719
import net.minecraft.world.level.levelgen.Heightmap;
1820
import net.minecraft.world.level.lighting.LightEngine;
1921
import org.bukkit.Bukkit;
22+
import org.bukkit.Material;
2023
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
24+
import org.bukkit.craftbukkit.v1_20_R1.event.CraftEventFactory;
2125
import org.bukkit.entity.Player;
26+
import org.bukkit.event.block.Action;
27+
import org.bukkit.event.block.BlockBreakEvent;
2228
import org.bukkit.plugin.messaging.PluginMessageListener;
2329
import org.jetbrains.annotations.NotNull;
2430
import xyz.jpenilla.reflectionremapper.ReflectionRemapper;
2531

2632
import java.lang.reflect.InvocationTargetException;
2733
import java.lang.reflect.Method;
2834
import java.util.Map;
29-
import java.util.logging.Level;
3035

3136
public class SetBlockPacketListener implements PluginMessageListener {
3237

@@ -68,7 +73,35 @@ public void onPluginMessageReceived(@NotNull String channel, @NotNull Player buk
6873

6974
ServerPlayer player = ((CraftPlayer)bukkitPlayer).getHandle();
7075

71-
// Update blocks
76+
Material blockMaterial = blockState.getBukkitMaterial();
77+
Action interactAction = blockMaterial == Material.AIR ? Action.LEFT_CLICK_BLOCK : Action.RIGHT_CLICK_BLOCK;
78+
BlockState oldBlockState = player.level().getBlockState(blockPos);
79+
80+
if (CraftEventFactory.callPlayerInteractEvent(player, interactAction, blockPos.below(), Direction.UP, player.getInventory().getSelected(), player.getUsedItemHand()).isCancelled()) {
81+
player.connection.send(new ClientboundBlockUpdatePacket(blockPos, oldBlockState));
82+
} else {
83+
updateBlock(player, updateNeighbors, blockPos, blockState);
84+
85+
org.bukkit.block.Block bukkitBlock = bukkitPlayer.getWorld().getBlockAt(blockPos.getX(), blockPos.getY(), blockPos.getZ());
86+
87+
boolean cancelled;
88+
if (interactAction.isLeftClick()) {
89+
cancelled = !new BlockBreakEvent(bukkitBlock, bukkitPlayer).callEvent();
90+
} else {
91+
cancelled = CraftEventFactory.callBlockPlaceEvent(player.serverLevel(), player, player.getUsedItemHand(), bukkitBlock.getState(), blockPos.getX(), blockPos.getY(), blockPos.getZ()).isCancelled();
92+
}
93+
94+
if (cancelled) {
95+
updateBlock(player, updateNeighbors, blockPos, oldBlockState);
96+
}
97+
}
98+
99+
if (sequenceId >= 0) {
100+
player.connection.ackBlockChangesUpTo(sequenceId);
101+
}
102+
}
103+
104+
private void updateBlock(ServerPlayer player, boolean updateNeighbors, BlockPos blockPos, BlockState blockState) {
72105
if (updateNeighbors) {
73106
player.level().setBlock(blockPos, blockState, 3);
74107
} else {
@@ -154,10 +187,6 @@ public void onPluginMessageReceived(@NotNull String channel, @NotNull Player buk
154187
level.getChunkSource().getLightEngine().updateSectionStatus(SectionPos.of(cx, cy, cz), nowHasOnlyAir);
155188
}
156189
}
157-
158-
if (sequenceId >= 0) {
159-
player.connection.ackBlockChangesUpTo(sequenceId);
160-
}
161190
}
162191

163192
}

0 commit comments

Comments
 (0)