9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-20 15:39:37 +00:00

Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@51345a1c Correct nullable fall location type
PaperMC/Paper@93246a07 Fix errors when loading raid files without a PDC
PaperMC/Paper@cb3ffd0b Don't store empty PDCs on raids
PaperMC/Paper@d637ae85 Fix NoSuchElementException in EntityTransformEvent for slimes (#12510)
PaperMC/Paper@10742373 Pass correct draw strength for EntityShootBowEvent (#12308)
PaperMC/Paper@825685f8 Add PlayerPickBlockEvent and PlayerPickEntityEvent (#12425)
PaperMC/Paper@2bd84f6f Expand PotionMeta Api to allow getting effective potion colour and effects (#12390)
PaperMC/Paper@6f1f5b67 Fix ArmorStand items for canceled EntityDeathEvent (#12288)
This commit is contained in:
Dreeam
2025-05-03 08:11:09 -04:00
parent ff110e539d
commit fbb7d752a0
15 changed files with 79 additions and 77 deletions

View File

@@ -2,7 +2,7 @@ group=cn.dreeam.leaf
mcVersion=1.21.5 mcVersion=1.21.5
version=1.21.5-R0.1-SNAPSHOT version=1.21.5-R0.1-SNAPSHOT
paperCommit=ec421715edd5b3d9590fe6c48ecebb62971598b5 paperCommit=6f1f5b67e044b151feec164e4fad13ce282417c1
org.gradle.configuration-cache=true org.gradle.configuration-cache=true
org.gradle.caching=true org.gradle.caching=true

View File

@@ -22,10 +22,10 @@ you to easily disable books, should you want to preemptively remove this
functionality before additional exploits are found. functionality before additional exploits are found.
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index f49a2c18ec20a7181951389066b7d062b48d43fa..7aa2c1c070e77a580dcc12865956119e42a33ba3 100644 index 064a9b6cf6792192fc1fa80095a48c2025cebf2a..7576932c6ccb0e018ad19ef6cf4f5d217de6bda4 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1223,6 +1223,11 @@ public class ServerGamePacketListenerImpl @@ -1225,6 +1225,11 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleEditBook(ServerboundEditBookPacket packet) { public void handleEditBook(ServerboundEditBookPacket packet) {

View File

@@ -25,10 +25,10 @@ index 16b390f527cf18a000ebed2950a35bcfb15c6c21..671393424ca6773ffeb05c4183cf8331
public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable String clientBrandName = null; // Paper - Brand support
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index e9ddf4dfe2d8072d98dacddb875c0ac25731851d..2fd465ac724285318ef6a9037bf17f288c442bff 100644 index 7576932c6ccb0e018ad19ef6cf4f5d217de6bda4..debeec0ff3bfb9f9d84ce0607365a05802b6496b 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2397,7 +2397,7 @@ public class ServerGamePacketListenerImpl @@ -2399,7 +2399,7 @@ public class ServerGamePacketListenerImpl
this.disconnectAsync(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - add proper async disconnect this.disconnectAsync(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - add proper async disconnect
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false)); this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false));

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 2fd465ac724285318ef6a9037bf17f288c442bff..d8e66642bb33dc00d2e410c2739c0291777c88bc 100644 index debeec0ff3bfb9f9d84ce0607365a05802b6496b..421665c29e55c1b1a732e38e4b41577a82d901e5 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2479,7 +2479,7 @@ public class ServerGamePacketListenerImpl @@ -2481,7 +2481,7 @@ public class ServerGamePacketListenerImpl
// CraftBukkit start // CraftBukkit start
String rawMessage = message.signedContent(); String rawMessage = message.signedContent();
if (rawMessage.isEmpty()) { if (rawMessage.isEmpty()) {

View File

@@ -139,10 +139,10 @@ index b127f444b79ef9430121045f328dd77b6b8182b2..3d476a93ecf3b12012db92ef07c0a899
return ret; return ret;
} }
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index d8e66642bb33dc00d2e410c2739c0291777c88bc..096354ff2e65321b46bffefc91c0c47d2b114526 100644 index 421665c29e55c1b1a732e38e4b41577a82d901e5..c6f52c899a3e4baf483412af8315d72a29f7139a 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2769,7 +2769,7 @@ public class ServerGamePacketListenerImpl @@ -2771,7 +2771,7 @@ public class ServerGamePacketListenerImpl
// SPIGOT-7136 - Allays // SPIGOT-7136 - Allays
if (target instanceof net.minecraft.world.entity.animal.allay.Allay || target instanceof net.minecraft.world.entity.animal.horse.AbstractHorse) { // Paper - Fix horse armor desync if (target instanceof net.minecraft.world.entity.animal.allay.Allay || target instanceof net.minecraft.world.entity.animal.horse.AbstractHorse) { // Paper - Fix horse armor desync
ServerGamePacketListenerImpl.this.send(new net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket( ServerGamePacketListenerImpl.this.send(new net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket(

View File

@@ -13,10 +13,10 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric)
Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html)
diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java
index eb7208b03240d647ace22c41ac665d3030407196..654101353c7995bcce5be7f80c9ed76246ef56c5 100644 index 62a3a8d46e10e6f02e3f515bbce5d9ba1f6566b8..71166fbf93d62e8e1bff3db8161932ee2fc5ea86 100644
--- a/net/minecraft/world/entity/raid/Raid.java --- a/net/minecraft/world/entity/raid/Raid.java
+++ b/net/minecraft/world/entity/raid/Raid.java +++ b/net/minecraft/world/entity/raid/Raid.java
@@ -125,6 +125,7 @@ public class Raid { @@ -126,6 +126,7 @@ public class Raid {
private Raid.RaidStatus status; private Raid.RaidStatus status;
private int celebrationTicks; private int celebrationTicks;
private Optional<BlockPos> waveSpawnPos = Optional.empty(); private Optional<BlockPos> waveSpawnPos = Optional.empty();
@@ -24,7 +24,7 @@ index eb7208b03240d647ace22c41ac665d3030407196..654101353c7995bcce5be7f80c9ed762
public Raid(BlockPos center, Difficulty difficulty) { public Raid(BlockPos center, Difficulty difficulty) {
this.active = true; this.active = true;
@@ -277,6 +278,12 @@ public class Raid { @@ -278,6 +279,12 @@ public class Raid {
} }
public void tick(ServerLevel level) { public void tick(ServerLevel level) {
@@ -37,7 +37,7 @@ index eb7208b03240d647ace22c41ac665d3030407196..654101353c7995bcce5be7f80c9ed762
if (!this.isStopped()) { if (!this.isStopped()) {
if (this.status == Raid.RaidStatus.ONGOING) { if (this.status == Raid.RaidStatus.ONGOING) {
boolean flag = this.active; boolean flag = this.active;
@@ -587,6 +594,12 @@ public class Raid { @@ -588,6 +595,12 @@ public class Raid {
} }
public void updateBossbar() { public void updateBossbar() {

View File

@@ -26,7 +26,7 @@ index d381800ad054be6b054dcca43fbe80d3f0c0c771..5904b9d985487ff8bd1f330667c43096
double d1 = center.y - maxRange; double d1 = center.y - maxRange;
double d2 = center.x + maxRange; double d2 = center.x + maxRange;
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index ccbfb6ad7de454a622c55395b8876ac8cef0d5a8..9d5051a65dcbd87b7d29db4643fa2b070717845b 100644 index 08a4454a8dbbd75b60b8aaeafc03d2323a583c12..29e61a4cc550e4a627f4da99d116da5d4af9a45d 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -496,7 +496,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -496,7 +496,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -73,10 +73,10 @@ index 9476a33ff4ec272a2c3b3cf9685cb4653138c57e..1ecfcb37a0d1c3f3810c5c8ce8043626
public FishingHook(EntityType<? extends FishingHook> entityType, Level level) { public FishingHook(EntityType<? extends FishingHook> entityType, Level level) {
diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java
index 654101353c7995bcce5be7f80c9ed76246ef56c5..19b34cf9d23c255e16a0ee99f66f3f9a3ecb196a 100644 index 71166fbf93d62e8e1bff3db8161932ee2fc5ea86..c7ca8a71070f15c573a5748f1df9810af23febdb 100644
--- a/net/minecraft/world/entity/raid/Raid.java --- a/net/minecraft/world/entity/raid/Raid.java
+++ b/net/minecraft/world/entity/raid/Raid.java +++ b/net/minecraft/world/entity/raid/Raid.java
@@ -120,7 +120,7 @@ public class Raid { @@ -121,7 +121,7 @@ public class Raid {
public final ServerBossEvent raidEvent = new ServerBossEvent(RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10); public final ServerBossEvent raidEvent = new ServerBossEvent(RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10);
private int postRaidTicks; private int postRaidTicks;
private int raidCooldownTicks; private int raidCooldownTicks;
@@ -85,7 +85,7 @@ index 654101353c7995bcce5be7f80c9ed76246ef56c5..19b34cf9d23c255e16a0ee99f66f3f9a
public final int numGroups; public final int numGroups;
private Raid.RaidStatus status; private Raid.RaidStatus status;
private int celebrationTicks; private int celebrationTicks;
@@ -507,7 +507,7 @@ public class Raid { @@ -508,7 +508,7 @@ public class Raid {
float f = 13.0F; float f = 13.0F;
int i = 64; int i = 64;
Collection<ServerPlayer> players = this.raidEvent.getPlayers(); Collection<ServerPlayer> players = this.raidEvent.getPlayers();
@@ -94,7 +94,7 @@ index 654101353c7995bcce5be7f80c9ed76246ef56c5..19b34cf9d23c255e16a0ee99f66f3f9a
for (ServerPlayer serverPlayer : level.players()) { for (ServerPlayer serverPlayer : level.players()) {
Vec3 vec3 = serverPlayer.position(); Vec3 vec3 = serverPlayer.position();
@@ -531,7 +531,7 @@ public class Raid { @@ -532,7 +532,7 @@ public class Raid {
for (Raid.RaiderType raiderType : Raid.RaiderType.VALUES) { for (Raid.RaiderType raiderType : Raid.RaiderType.VALUES) {
int i1 = this.getDefaultNumSpawns(raiderType, i, shouldSpawnBonusGroup) int i1 = this.getDefaultNumSpawns(raiderType, i, shouldSpawnBonusGroup)

View File

@@ -1284,7 +1284,7 @@ index c4f4c21f32e2aba79e15315d73124c803bb1223a..d2e8adccf33c6b842fac615006b782b0
this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256);
} }
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596fc47cec76 100644 index c6f52c899a3e4baf483412af8315d72a29f7139a..d2c1da7df4961fddbb7db952d817f127ece275d9 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -321,6 +321,20 @@ public class ServerGamePacketListenerImpl @@ -321,6 +321,20 @@ public class ServerGamePacketListenerImpl
@@ -1338,7 +1338,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause
return; return;
} }
@@ -1236,6 +1259,10 @@ public class ServerGamePacketListenerImpl @@ -1238,6 +1261,10 @@ public class ServerGamePacketListenerImpl
final int maxBookPageSize = pageMax.intValue(); final int maxBookPageSize = pageMax.intValue();
final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D);
long byteAllowed = maxBookPageSize; long byteAllowed = maxBookPageSize;
@@ -1349,7 +1349,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
for (final String page : pageList) { for (final String page : pageList) {
final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
byteTotal += byteLength; byteTotal += byteLength;
@@ -1260,7 +1287,8 @@ public class ServerGamePacketListenerImpl @@ -1262,7 +1289,8 @@ public class ServerGamePacketListenerImpl
} }
if (byteTotal > byteAllowed) { if (byteTotal > byteAllowed) {
@@ -1359,7 +1359,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect
return; return;
} }
@@ -1279,31 +1307,45 @@ public class ServerGamePacketListenerImpl @@ -1281,31 +1309,45 @@ public class ServerGamePacketListenerImpl
Optional<String> optional = packet.title(); Optional<String> optional = packet.title();
optional.ifPresent(list::add); optional.ifPresent(list::add);
list.addAll(packet.pages()); list.addAll(packet.pages());
@@ -1409,7 +1409,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
itemStack.set( itemStack.set(
DataComponents.WRITTEN_BOOK_CONTENT, DataComponents.WRITTEN_BOOK_CONTENT,
new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true)
@@ -1317,6 +1359,16 @@ public class ServerGamePacketListenerImpl @@ -1319,6 +1361,16 @@ public class ServerGamePacketListenerImpl
return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText);
} }
@@ -1426,7 +1426,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
@Override @Override
public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
@@ -1352,7 +1404,15 @@ public class ServerGamePacketListenerImpl @@ -1354,7 +1406,15 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleMovePlayer(ServerboundMovePlayerPacket packet) { public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
@@ -1443,7 +1443,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause
} else { } else {
ServerLevel serverLevel = this.player.serverLevel(); ServerLevel serverLevel = this.player.serverLevel();
@@ -1534,7 +1594,7 @@ public class ServerGamePacketListenerImpl @@ -1536,7 +1596,7 @@ public class ServerGamePacketListenerImpl
movedWrongly = true; movedWrongly = true;
if (event.getLogWarning()) if (event.getLogWarning())
// Paper end // Paper end
@@ -1452,7 +1452,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
} // Paper } // Paper
} }
@@ -1600,6 +1660,8 @@ public class ServerGamePacketListenerImpl @@ -1602,6 +1662,8 @@ public class ServerGamePacketListenerImpl
this.lastYaw = to.getYaw(); this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch(); this.lastPitch = to.getPitch();
@@ -1461,7 +1461,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
Location oldTo = to.clone(); Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
this.cserver.getPluginManager().callEvent(event); this.cserver.getPluginManager().callEvent(event);
@@ -1655,6 +1717,13 @@ public class ServerGamePacketListenerImpl @@ -1657,6 +1719,13 @@ public class ServerGamePacketListenerImpl
this.player.tryResetCurrentImpulseContext(); this.player.tryResetCurrentImpulseContext();
} }
@@ -1475,7 +1475,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z);
this.lastGoodX = this.player.getX(); this.lastGoodX = this.player.getX();
this.lastGoodY = this.player.getY(); this.lastGoodY = this.player.getY();
@@ -1672,6 +1741,17 @@ public class ServerGamePacketListenerImpl @@ -1674,6 +1743,17 @@ public class ServerGamePacketListenerImpl
} }
} }
@@ -1493,7 +1493,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { private boolean shouldCheckPlayerMovement(boolean isElytraMovement) {
if (this.isSingleplayerOwner()) { if (this.isSingleplayerOwner()) {
return false; return false;
@@ -2068,6 +2148,7 @@ public class ServerGamePacketListenerImpl @@ -2070,6 +2150,7 @@ public class ServerGamePacketListenerImpl
boolean cancelled; boolean cancelled;
if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) {
@@ -1501,7 +1501,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand);
cancelled = event.useItemInHand() == Event.Result.DENY; cancelled = event.useItemInHand() == Event.Result.DENY;
} else { } else {
@@ -2740,6 +2821,7 @@ public class ServerGamePacketListenerImpl @@ -2742,6 +2823,7 @@ public class ServerGamePacketListenerImpl
AABB boundingBox = target.getBoundingBox(); AABB boundingBox = target.getBoundingBox();
if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range
@@ -1509,7 +1509,7 @@ index 096354ff2e65321b46bffefc91c0c47d2b114526..bc935e51c2c5134813d3476da14a596f
packet.dispatch( packet.dispatch(
new ServerboundInteractPacket.Handler() { new ServerboundInteractPacket.Handler() {
private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit
@@ -2752,6 +2834,8 @@ public class ServerGamePacketListenerImpl @@ -2754,6 +2836,8 @@ public class ServerGamePacketListenerImpl
ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event);
@@ -3184,7 +3184,7 @@ index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c1
double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); double d = this.llama.distanceToSqr(this.llama.getCaravanHead());
if (d > 676.0) { if (d > 676.0) {
diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
index 3d40911970caf6f1de2a1ebee1df4c077703226a..9b29c0c676a45de2abdc76e0502ac06ac1e53097 100644 index 5d025e0e4381a045fd82c26cdd3907e1a8710b45..084156166905562beb8d36db400bc9cab5c14be2 100644
--- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java --- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
+++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
@@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal {
@@ -8086,7 +8086,7 @@ index 09924cccf9208abda22cc7e1635b567ed166e95a..bbcb03548052b28bd622d7d8ce161cca
} }
diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java
index 99b8f53fc553bf3e752208a5c007bc49266ffc27..49500127eb3a471c41dc3ff32372ad6f20c6d69a 100644 index 1297f585753c53275e8e54e41b2e718b44aee1bf..0417175c7beabbca53cd080d158001eabe3941f0 100644
--- a/net/minecraft/world/entity/decoration/ArmorStand.java --- a/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -95,10 +95,13 @@ public class ArmorStand extends LivingEntity { @@ -95,10 +95,13 @@ public class ArmorStand extends LivingEntity {
@@ -8111,7 +8111,7 @@ index 99b8f53fc553bf3e752208a5c007bc49266ffc27..49500127eb3a471c41dc3ff32372ad6f
itemStack.set(DataComponents.CUSTOM_NAME, this.getCustomName()); itemStack.set(DataComponents.CUSTOM_NAME, this.getCustomName());
this.drops.add(new DefaultDrop(itemStack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior this.drops.add(new DefaultDrop(itemStack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior
return this.brokenByAnything(level, damageSource); // Paper return this.brokenByAnything(level, damageSource); // Paper
@@ -538,6 +542,7 @@ public class ArmorStand extends LivingEntity { @@ -546,6 +550,7 @@ public class ArmorStand extends LivingEntity {
@Override @Override
public void tick() { public void tick() {
@@ -8119,7 +8119,7 @@ index 99b8f53fc553bf3e752208a5c007bc49266ffc27..49500127eb3a471c41dc3ff32372ad6f
// Paper start - Allow ArmorStands not to tick // Paper start - Allow ArmorStands not to tick
if (!this.canTick) { if (!this.canTick) {
if (this.noTickPoseDirty) { if (this.noTickPoseDirty) {
@@ -867,4 +872,18 @@ public class ArmorStand extends LivingEntity { @@ -875,4 +880,18 @@ public class ArmorStand extends LivingEntity {
} }
} }
// Paper end // Paper end
@@ -8258,7 +8258,7 @@ index 5d23d8754b304d5e2fd54400cc81c7fe5c14a804..9a00aead39e194de076ee651d2f75b29
+ // Purpur end - Shears can defuse TNT + // Purpur end - Shears can defuse TNT
} }
diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java
index 408c72a28bde6d2f0a7c410c5c7558e5fe7ad4c8..185edd9878f5193c44b75a126e8182caade7e943 100644 index 22d5ccb271fc19255e99afa5d1ff10549a20dc31..21cf84f1d037e3e387a3e254599673125f89ba9c 100644
--- a/net/minecraft/world/entity/monster/AbstractSkeleton.java --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -64,21 +64,24 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -64,21 +64,24 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -9622,7 +9622,7 @@ index 8d6def85583a111841b28f20f58ddb8b8cbd7bc1..a4ce65911a5d778f60bcedb3acd9fe59
@Override @Override
diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java
index 264ec7acfc03eca4a8f5758ad8d3e11714e934b4..b8ada9ebd0d8d4ca0e8eb7e6084a0057f4758ea4 100644 index ec090d191969983c31950b8376bbb36ee8fce922..93eaafe260312f26840a2afee8375b8a95d97ba2 100644
--- a/net/minecraft/world/entity/monster/Illusioner.java --- a/net/minecraft/world/entity/monster/Illusioner.java
+++ b/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java
@@ -57,10 +57,52 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -57,10 +57,52 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
@@ -10681,7 +10681,7 @@ index 48f26ed693b43e3f65f1559ba69b3d7249664f71..48cbc3cb983da08cfec78828b15f1484
+ // Purpur end - Skeletons eat wither roses + // Purpur end - Skeletons eat wither roses
} }
diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java
index 6a8a5a76400beeaf69a17d53105a7a522ec5791e..7b6db084a483b4a9c2f292c5ed6e4c7550344c50 100644 index 5a81172c88f5699f1440b69b331a8ea353c1950a..9a157a2bdbbeab89dbfcd23be8bdc62c8de4548c 100644
--- a/net/minecraft/world/entity/monster/Slime.java --- a/net/minecraft/world/entity/monster/Slime.java
+++ b/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java
@@ -58,6 +58,7 @@ public class Slime extends Mob implements Enemy { @@ -58,6 +58,7 @@ public class Slime extends Mob implements Enemy {
@@ -13869,7 +13869,7 @@ index 13ce174e4f7e406f57a68ea0d3ef0ee3367f3f3b..ca86122e38688b29340cd8413ccf1746
return InteractionResult.FAIL; return InteractionResult.FAIL;
} else { } else {
diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java
index 57c933af200551162774f1d473437521e5a85833..b3e003694ce0da357e91ab3ce2b1380f9ab0a32a 100644 index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b43bf9797c 100644
--- a/net/minecraft/world/item/BowItem.java --- a/net/minecraft/world/item/BowItem.java
+++ b/net/minecraft/world/item/BowItem.java +++ b/net/minecraft/world/item/BowItem.java
@@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem { @@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem {
@@ -13888,8 +13888,8 @@ index 57c933af200551162774f1d473437521e5a85833..b3e003694ce0da357e91ab3ce2b1380f
} else { } else {
List<ItemStack> list = draw(stack, projectile, player); List<ItemStack> list = draw(stack, projectile, player);
if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { if (level instanceof ServerLevel serverLevel && !list.isEmpty()) {
- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, 1.0F, powerForTime == 1.0F, null); - this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, 1.0F, powerForTime == 1.0F, null, powerForTime); // Paper - Pass draw strength
+ this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null); // Purpur - Projectile offset config + this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null, powerForTime); // Paper - Pass draw strength // Purpur - Projectile offset config
} }
level.playSound( level.playSound(
@@ -13925,7 +13925,7 @@ index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe00
return true; return true;
diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java
index f5189cf0a0006864ac67b191cc0f1cd63b40f9e2..ff4294b9bcb6e2bb0f9d51dee6dcc889e45df95c 100644 index 45fc973971d00c35e5b715bfa6ae5042822ed35f..2ab3da301f7edbb811c2e055f75434a799ef093a 100644
--- a/net/minecraft/world/item/CrossbowItem.java --- a/net/minecraft/world/item/CrossbowItem.java
+++ b/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java
@@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
@@ -14217,10 +14217,10 @@ index a928124ee46a10e9033f771970198e36712917a6..65ff8078474d5039238e9398d8cfc12e
// Paper end - Add PlayerNameEntityEvent // Paper end - Add PlayerNameEntityEvent
mob.setPersistenceRequired(); mob.setPersistenceRequired();
diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java
index 220a1d955f31698d5aa6c81c6c779a87c17de447..662e286f40e042823fa7cdd9e27b44e4bfad9cb9 100644 index 1a9f91f3ee9c4d3902106eebd2639cc85a0dc34c..fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06 100644
--- a/net/minecraft/world/item/ProjectileWeaponItem.java --- a/net/minecraft/world/item/ProjectileWeaponItem.java
+++ b/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java
@@ -108,6 +108,8 @@ public abstract class ProjectileWeaponItem extends Item { @@ -109,6 +109,8 @@ public abstract class ProjectileWeaponItem extends Item {
abstractArrow.setCritArrow(true); abstractArrow.setCritArrow(true);
} }

View File

@@ -65,10 +65,10 @@ index 35fd539eb2bfe60ad17ab1e558a01273666acc54..445bbdc8da7f1fdbddfc4d8787d78fea
this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory());
this.repaint(); this.repaint();
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index bc935e51c2c5134813d3476da14a596fc47cec76..4f88a9f4f7a1f5234e1f506e1e3d22a5e1710a98 100644 index d2c1da7df4961fddbb7db952d817f127ece275d9..39d4ae0ae1ec89007fe1c86dc8d3409902890552 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1287,7 +1287,7 @@ public class ServerGamePacketListenerImpl @@ -1289,7 +1289,7 @@ public class ServerGamePacketListenerImpl
} }
if (byteTotal > byteAllowed) { if (byteTotal > byteAllowed) {

View File

@@ -7,10 +7,10 @@ This Check is added in 1.17.x -> 1.18.x that updated by Mojang.
By removing this check, it gives ability for hackers to use some modules of hack clients. By removing this check, it gives ability for hackers to use some modules of hack clients.
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 62586fc315b473761579daa863f89df150fb9576..956a19d137243baddcc44927b3ae77697ca0bfdf 100644 index 39d4ae0ae1ec89007fe1c86dc8d3409902890552..470660998d3df511f00936bcaa210142ab8ba7b2 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2073,8 +2073,13 @@ public class ServerGamePacketListenerImpl @@ -2075,8 +2075,13 @@ public class ServerGamePacketListenerImpl
BlockPos blockPos = hitResult.getBlockPos(); BlockPos blockPos = hitResult.getBlockPos();
if (this.player.canInteractWithBlock(blockPos, 1.0)) { if (this.player.canInteractWithBlock(blockPos, 1.0)) {
Vec3 vec3 = location.subtract(Vec3.atCenterOf(blockPos)); Vec3 vec3 = location.subtract(Vec3.atCenterOf(blockPos));

View File

@@ -53,10 +53,10 @@ index f3ccabaf4ff9bd0265415193831fd22b1868c00e..6d3b895fcbb3c2fe4438e1e30d87dc21
} else { } else {
getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true);
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index cec88f9bf2ca92dcd97addfbf256cda0bd0b3f6a..76e197dc09f07b5a0156dbc629dfd6818bd03110 100644 index 470660998d3df511f00936bcaa210142ab8ba7b2..220dd097aa1d912feb6699dccd1b68523c14cdf6 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2322,6 +2322,7 @@ public class ServerGamePacketListenerImpl @@ -2324,6 +2324,7 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleChatCommand(ServerboundChatCommandPacket packet) { public void handleChatCommand(ServerboundChatCommandPacket packet) {
@@ -64,7 +64,7 @@ index cec88f9bf2ca92dcd97addfbf256cda0bd0b3f6a..76e197dc09f07b5a0156dbc629dfd681
this.tryHandleChat(packet.command(), () -> { this.tryHandleChat(packet.command(), () -> {
// CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands
if (this.player.hasDisconnected()) { if (this.player.hasDisconnected()) {
@@ -2330,7 +2331,7 @@ public class ServerGamePacketListenerImpl @@ -2332,7 +2333,7 @@ public class ServerGamePacketListenerImpl
// CraftBukkit end // CraftBukkit end
this.performUnsignedChatCommand(packet.command()); this.performUnsignedChatCommand(packet.command());
this.detectRateSpam("/" + packet.command()); // Spigot this.detectRateSpam("/" + packet.command()); // Spigot
@@ -73,7 +73,7 @@ index cec88f9bf2ca92dcd97addfbf256cda0bd0b3f6a..76e197dc09f07b5a0156dbc629dfd681
} }
private void performUnsignedChatCommand(String command) { private void performUnsignedChatCommand(String command) {
@@ -2363,6 +2364,7 @@ public class ServerGamePacketListenerImpl @@ -2365,6 +2366,7 @@ public class ServerGamePacketListenerImpl
public void handleSignedChatCommand(ServerboundChatCommandSignedPacket packet) { public void handleSignedChatCommand(ServerboundChatCommandSignedPacket packet) {
Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(packet.lastSeenMessages()); Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(packet.lastSeenMessages());
if (!optional.isEmpty()) { if (!optional.isEmpty()) {
@@ -81,7 +81,7 @@ index cec88f9bf2ca92dcd97addfbf256cda0bd0b3f6a..76e197dc09f07b5a0156dbc629dfd681
this.tryHandleChat(packet.command(), () -> { this.tryHandleChat(packet.command(), () -> {
// CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands
if (this.player.hasDisconnected()) { if (this.player.hasDisconnected()) {
@@ -2371,7 +2373,7 @@ public class ServerGamePacketListenerImpl @@ -2373,7 +2375,7 @@ public class ServerGamePacketListenerImpl
// CraftBukkit end // CraftBukkit end
this.performSignedChatCommand(packet, optional.get()); this.performSignedChatCommand(packet, optional.get());
this.detectRateSpam("/" + packet.command()); // Spigot this.detectRateSpam("/" + packet.command()); // Spigot
@@ -90,7 +90,7 @@ index cec88f9bf2ca92dcd97addfbf256cda0bd0b3f6a..76e197dc09f07b5a0156dbc629dfd681
} }
} }
@@ -2478,12 +2480,17 @@ public class ServerGamePacketListenerImpl @@ -2480,12 +2482,17 @@ public class ServerGamePacketListenerImpl
return dispatcher.parse(command, this.player.createCommandSourceStack()); return dispatcher.parse(command, this.player.createCommandSourceStack());
} }
@@ -110,7 +110,7 @@ index cec88f9bf2ca92dcd97addfbf256cda0bd0b3f6a..76e197dc09f07b5a0156dbc629dfd681
this.player.resetLastActionTime(); this.player.resetLastActionTime();
// CraftBukkit start // CraftBukkit start
if (sync) { if (sync) {
@@ -2495,6 +2502,40 @@ public class ServerGamePacketListenerImpl @@ -2497,6 +2504,40 @@ public class ServerGamePacketListenerImpl
} }
} }

View File

@@ -225,10 +225,10 @@ index 5943b18f172fb1d77ef1fe768daa8e8f43c3c8c1..7b85a9ebdbe3e8bee0a8fc100ede8a3f
} }
} }
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index c34cf83f79314198b0f7a747e4ae68b88d09d2cd..c8590517efe4124c2b1db2b927d131b804736400 100644 index 729f595491c7a4edf24dff2e876dfb69ade87a17..a3069b29a1b78012314747d705e27c167acd10b3 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1876,7 +1876,7 @@ public class ServerGamePacketListenerImpl @@ -1878,7 +1878,7 @@ public class ServerGamePacketListenerImpl
} }
public void internalTeleport(PositionMoveRotation posMoveRotation, Set<Relative> relatives) { public void internalTeleport(PositionMoveRotation posMoveRotation, Set<Relative> relatives) {

View File

@@ -273,10 +273,10 @@ index 7e9ace691bb2662afd2c0fc504007a6d22a8aec0..dabd49c7b9e689be4b476c16b28cbb8e
// Paper start - EntityEquipmentChangedEvent // Paper start - EntityEquipmentChangedEvent
record EquipmentChangeImpl(org.bukkit.inventory.ItemStack oldItem, org.bukkit.inventory.ItemStack newItem) implements io.papermc.paper.event.entity.EntityEquipmentChangedEvent.EquipmentChange { record EquipmentChangeImpl(org.bukkit.inventory.ItemStack oldItem, org.bukkit.inventory.ItemStack newItem) implements io.papermc.paper.event.entity.EntityEquipmentChangedEvent.EquipmentChange {
diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java
index 49500127eb3a471c41dc3ff32372ad6f20c6d69a..a5a6e4cd74a5444ce06828404036de1728a1a5ce 100644 index 0417175c7beabbca53cd080d158001eabe3941f0..cb2a8f9cff99a7a906bc7be09d301728742bc11e 100644
--- a/net/minecraft/world/entity/decoration/ArmorStand.java --- a/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -551,8 +551,8 @@ public class ArmorStand extends LivingEntity { @@ -559,8 +559,8 @@ public class ArmorStand extends LivingEntity {
} }
if (this.noTickEquipmentDirty) { if (this.noTickEquipmentDirty) {

View File

@@ -11,7 +11,7 @@ Paper pull request: https://github.com/PaperMC/Paper/pull/12124
fixes https://github.com/PaperMC/Paper/issues/12123 fixes https://github.com/PaperMC/Paper/issues/12123
diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java
index b3e003694ce0da357e91ab3ce2b1380f9ab0a32a..4d5347a6a2fc8b10d11f89220f537c81a9a7be71 100644 index ce1ce18410fc1d47d999c918a8f880b43bf9797c..b9d31b0cbeabd5c62b810e50f612878624975d4e 100644
--- a/net/minecraft/world/item/BowItem.java --- a/net/minecraft/world/item/BowItem.java
+++ b/net/minecraft/world/item/BowItem.java +++ b/net/minecraft/world/item/BowItem.java
@@ -41,9 +41,9 @@ public class BowItem extends ProjectileWeaponItem { @@ -41,9 +41,9 @@ public class BowItem extends ProjectileWeaponItem {
@@ -21,13 +21,13 @@ index b3e003694ce0da357e91ab3ce2b1380f9ab0a32a..4d5347a6a2fc8b10d11f89220f537c81
- List<ItemStack> list = draw(stack, projectile, player); - List<ItemStack> list = draw(stack, projectile, player);
+ List<ItemStack> list = draw(stack, projectile, player, ProjectileDrawingItemConsumption.MAYBE_LATER); // Paper - prevent item consumption for cancelled events + List<ItemStack> list = draw(stack, projectile, player, ProjectileDrawingItemConsumption.MAYBE_LATER); // Paper - prevent item consumption for cancelled events
if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { if (level instanceof ServerLevel serverLevel && !list.isEmpty()) {
- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null); // Purpur - Projectile offset config - this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null, powerForTime); // Paper - Pass draw strength // Purpur - Projectile offset config
+ if (!this.shoot(serverLevel, player, player.getUsedItemHand(), stack, new UnrealizedDrawResult(list, projectile), powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null)) return false; // Purpur - Projectile offset config // Paper - prevent item consumption for cancelled events + if (!this.shoot(serverLevel, player, player.getUsedItemHand(), stack, new UnrealizedDrawResult(list, projectile), powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null, powerForTime)) return false; // Paper - Pass draw strength // Purpur - Projectile offset config // Paper - prevent item consumption for cancelled events
} }
level.playSound( level.playSound(
diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java
index ff4294b9bcb6e2bb0f9d51dee6dcc889e45df95c..0a8041741b8367478ec2cb658071fa4f29513040 100644 index 2ab3da301f7edbb811c2e055f75434a799ef093a..74fd1472d6840b7106d8f424319170e2e891bbac 100644
--- a/net/minecraft/world/item/CrossbowItem.java --- a/net/minecraft/world/item/CrossbowItem.java
+++ b/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java
@@ -95,7 +95,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -95,7 +95,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
@@ -59,13 +59,13 @@ index ff4294b9bcb6e2bb0f9d51dee6dcc889e45df95c..0a8041741b8367478ec2cb658071fa4f
- ChargedProjectiles chargedProjectiles = weapon.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY); - ChargedProjectiles chargedProjectiles = weapon.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY);
+ ChargedProjectiles chargedProjectiles = weapon.get(DataComponents.CHARGED_PROJECTILES); // Paper - prevent item consumption for cancelled events + ChargedProjectiles chargedProjectiles = weapon.get(DataComponents.CHARGED_PROJECTILES); // Paper - prevent item consumption for cancelled events
if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {
- this.shoot(serverLevel, shooter, hand, weapon, chargedProjectiles.getItems(), velocity, inaccuracy, shooter instanceof Player, target); - this.shoot(serverLevel, shooter, hand, weapon, chargedProjectiles.getItems(), velocity, inaccuracy, shooter instanceof Player, target, 1); // Paper - Pass draw strength
+ if (!this.shoot(serverLevel, shooter, hand, weapon, chargedProjectiles.getItems(), velocity, inaccuracy, shooter instanceof Player, target)) return; // Paper - prevent item consumption for cancelled events + if (!this.shoot(serverLevel, shooter, hand, weapon, chargedProjectiles.getItems(), velocity, inaccuracy, shooter instanceof Player, target, 1)) return; // Paper - Pass draw strength // Paper - prevent item consumption for cancelled events
if (shooter instanceof ServerPlayer serverPlayer) { if (shooter instanceof ServerPlayer serverPlayer) {
CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, weapon); CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, weapon);
serverPlayer.awardStat(Stats.ITEM_USED.get(weapon.getItem())); serverPlayer.awardStat(Stats.ITEM_USED.get(weapon.getItem()));
diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java
index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de22dcc722 100644 index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc09e3a2d0c 100644
--- a/net/minecraft/world/item/ProjectileWeaponItem.java --- a/net/minecraft/world/item/ProjectileWeaponItem.java
+++ b/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java
@@ -40,7 +40,20 @@ public abstract class ProjectileWeaponItem extends Item { @@ -40,7 +40,20 @@ public abstract class ProjectileWeaponItem extends Item {
@@ -90,12 +90,12 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
ServerLevel level, ServerLevel level,
LivingEntity shooter, LivingEntity shooter,
InteractionHand hand, InteractionHand hand,
@@ -51,6 +64,23 @@ public abstract class ProjectileWeaponItem extends Item { @@ -52,6 +65,24 @@ public abstract class ProjectileWeaponItem extends Item {
boolean isCrit,
@Nullable LivingEntity target @Nullable LivingEntity target
,float drawStrength // Paper - Pass draw strength
) { ) {
+ // Paper start - prevent item consumption for cancelled events + // Paper start - prevent item consumption for cancelled events
+ return shoot(level, shooter, hand, weapon, new UnrealizedDrawResult(projectileItems, null), velocity, inaccuracy, isCrit, target); + return shoot(level, shooter, hand, weapon, new UnrealizedDrawResult(projectileItems, null), velocity, inaccuracy, isCrit, target, drawStrength);
+ } + }
+ protected boolean shoot( + protected boolean shoot(
+ ServerLevel level, + ServerLevel level,
@@ -107,6 +107,7 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
+ float inaccuracy, + float inaccuracy,
+ boolean isCrit, + boolean isCrit,
+ @Nullable LivingEntity target + @Nullable LivingEntity target
+ ,float drawStrength // Paper - Pass draw strength
+ ) { + ) {
+ List<ItemStack> projectileItems = unrealizedDrawResult.projectileStacks(); + List<ItemStack> projectileItems = unrealizedDrawResult.projectileStacks();
+ boolean atLeastOneShootBowEventUncancelled = false; + boolean atLeastOneShootBowEventUncancelled = false;
@@ -114,13 +115,13 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
float f = EnchantmentHelper.processProjectileSpread(level, weapon, shooter, 0.0F); float f = EnchantmentHelper.processProjectileSpread(level, weapon, shooter, 0.0F);
float f1 = projectileItems.size() == 1 ? 0.0F : 2.0F * f / (projectileItems.size() - 1); float f1 = projectileItems.size() == 1 ? 0.0F : 2.0F * f / (projectileItems.size() - 1);
float f2 = (projectileItems.size() - 1) % 2 * f1 / 2.0F; float f2 = (projectileItems.size() - 1) % 2 * f1 / 2.0F;
@@ -66,11 +96,13 @@ public abstract class ProjectileWeaponItem extends Item { @@ -67,11 +98,13 @@ public abstract class ProjectileWeaponItem extends Item {
Projectile projectile = this.createProjectile(level, shooter, weapon, itemStack, isCrit); Projectile projectile = this.createProjectile(level, shooter, weapon, itemStack, isCrit);
this.shootProjectile(shooter, projectile, i1, velocity, inaccuracy, f4, target); this.shootProjectile(shooter, projectile, i1, velocity, inaccuracy, f4, target);
- org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(shooter, weapon, itemStack, projectile, hand, velocity, true); - org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(shooter, weapon, itemStack, projectile, hand, drawStrength, true);
+ boolean preConsumption = weapon.is(Items.CROSSBOW) || shooter.level().shouldConsumeArrow; + boolean preConsumption = weapon.is(Items.CROSSBOW) || shooter.level().shouldConsumeArrow;
+ org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(shooter, weapon, itemStack, projectile, hand, velocity, preConsumption); + org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(shooter, weapon, itemStack, projectile, hand, drawStrength, preConsumption);
if (event.isCancelled()) { if (event.isCancelled()) {
event.getProjectile().remove(); event.getProjectile().remove();
- return; - return;
@@ -130,7 +131,7 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
if (event.getProjectile() == projectile.getBukkitEntity()) { if (event.getProjectile() == projectile.getBukkitEntity()) {
if (Projectile.spawnProjectile( if (Projectile.spawnProjectile(
@@ -81,7 +113,25 @@ public abstract class ProjectileWeaponItem extends Item { @@ -82,7 +115,25 @@ public abstract class ProjectileWeaponItem extends Item {
if (shooter instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { if (shooter instanceof net.minecraft.server.level.ServerPlayer serverPlayer) {
serverPlayer.containerMenu.sendAllDataToRemote(); serverPlayer.containerMenu.sendAllDataToRemote();
} }
@@ -157,7 +158,7 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
} }
} }
// CraftBukkit end // CraftBukkit end
@@ -91,6 +141,7 @@ public abstract class ProjectileWeaponItem extends Item { @@ -92,6 +143,7 @@ public abstract class ProjectileWeaponItem extends Item {
} }
} }
} }
@@ -165,7 +166,7 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
} }
protected int getDurabilityUse(ItemStack stack) { protected int getDurabilityUse(ItemStack stack) {
@@ -114,11 +165,21 @@ public abstract class ProjectileWeaponItem extends Item { @@ -115,11 +167,21 @@ public abstract class ProjectileWeaponItem extends Item {
} }
protected static List<ItemStack> draw(ItemStack weapon, ItemStack ammo, LivingEntity shooter) { protected static List<ItemStack> draw(ItemStack weapon, ItemStack ammo, LivingEntity shooter) {
@@ -191,7 +192,7 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
if (ammo.isEmpty()) { if (ammo.isEmpty()) {
return List.of(); return List.of();
} else { } else {
@@ -126,8 +187,9 @@ public abstract class ProjectileWeaponItem extends Item { @@ -127,8 +189,9 @@ public abstract class ProjectileWeaponItem extends Item {
List<ItemStack> list = new ArrayList<>(i); List<ItemStack> list = new ArrayList<>(i);
ItemStack itemStack = ammo.copy(); ItemStack itemStack = ammo.copy();
@@ -202,7 +203,7 @@ index 662e286f40e042823fa7cdd9e27b44e4bfad9cb9..ebaf3422437b6815c8ab1d5f91c7e1de
if (!itemStack1.isEmpty()) { if (!itemStack1.isEmpty()) {
list.add(itemStack1); list.add(itemStack1);
} }
@@ -138,17 +200,23 @@ public abstract class ProjectileWeaponItem extends Item { @@ -139,17 +202,23 @@ public abstract class ProjectileWeaponItem extends Item {
} }
protected static ItemStack useAmmo(ItemStack weapon, ItemStack ammo, LivingEntity shooter, boolean intangable) { protected static ItemStack useAmmo(ItemStack weapon, ItemStack ammo, LivingEntity shooter, boolean intangable) {

View File

@@ -11,4 +11,5 @@
- [ ] Check beacon issues fix - [ ] Check beacon issues fix
- [ ] Update README.md - [ ] Update README.md
- [ ] Remove stream in Inventory and check new changes - [ ] Remove stream in Inventory and check new changes
- [ ] Check Purpur's Projectile offset config, in BowItem shoot
- [ ] Update from Leaf 1.21.4 (curr commit: `1431eff510a3ac1725ec82d52f5c253b4b7932d9`) - [ ] Update from Leaf 1.21.4 (curr commit: `1431eff510a3ac1725ec82d52f5c253b4b7932d9`)