9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-19 14:59:32 +00:00

feat: temp merge

This commit is contained in:
MC_XiaoHei
2025-09-25 16:26:07 +08:00
parent c3b0b6dff7
commit dfd1125354
19 changed files with 139 additions and 146 deletions

View File

@@ -40,10 +40,10 @@ index f0e16de0cd2e5794c0a86b54979d9ac043c704df..68fddcab51a72af0548cd845ab07569c
public SystemReport fillSystemReport(SystemReport systemReport) {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 9b3894ec6d458a8d7ed8078fb51193c5dfa1641c..147be1e79b36283d9eb8d0b93d0ca1dc2e73c185 100644
index 9b3894ec6d458a8d7ed8078fb51193c5dfa1641c..4693330ebbd1540559caa4ef5494e75b69351c24 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -275,11 +275,17 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -275,9 +275,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
thread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
@@ -52,9 +52,9 @@ index 9b3894ec6d458a8d7ed8078fb51193c5dfa1641c..147be1e79b36283d9eb8d0b93d0ca1dc
+ com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics // Leaves - down
+
this.setPvpAllowed(properties.pvp);
this.setFlightAllowed(properties.allowFlight);
this.setMotd(properties.motd);
// this.worldData.setGameType(properties.gameMode.get()); // CraftBukkit - moved to world loading
LOGGER.info("Default game type: {}", properties.gameMode.get());
// Paper start - Unix domain socket support
diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java
index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..a2b69a0cc34adb4d3da00250db8320b26d0ed697 100644
--- a/net/minecraft/server/gui/MinecraftServerGui.java

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Leaves Server Config And Command
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 147be1e79b36283d9eb8d0b93d0ca1dc2e73c185..4f0f0a6f8c8a3dd95213ce9148c2093010b440d9 100644
index 4693330ebbd1540559caa4ef5494e75b69351c24..ecdb937f08a437a1d2398e49ca835071015844f2 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -277,6 +277,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -16,4 +16,4 @@ index 147be1e79b36283d9eb8d0b93d0ca1dc2e73c185..4f0f0a6f8c8a3dd95213ce9148c20930
+
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics // Leaves - down
this.setPvpAllowed(properties.pvp);
// this.worldData.setGameType(properties.gameMode.get()); // CraftBukkit - moved to world loading

View File

@@ -106,10 +106,10 @@ index 88447fc2108126ccfad2fb7eb79ac94537f132d3..1bca4150c63da064bd2d1ee8f504f2eb
private static final String PREFIX = "data:image/png;base64,";
public static final Codec<ServerStatus.Favicon> CODEC = Codec.STRING.comapFlatMap(string -> {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index a3a47b5ee911f48452d3521692373d331ce10db2..97b95b07d378c2159d123f918f80d7f86bcaed7a 100644
index fdda4acec6186c5a0290f3d9895cbcec782b8629..d49f84c17e624c4023b678df07ec812124278db3 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -787,7 +787,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -782,7 +782,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper start - Add setting for proxy online mode status
return properties.enforceSecureProfile
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()

View File

@@ -4,30 +4,30 @@ Date: Fri, 17 Mar 2023 15:57:08 +0800
Subject: [PATCH] Catch update suppression crash
diff --git a/net/minecraft/network/protocol/PacketUtils.java b/net/minecraft/network/protocol/PacketUtils.java
index ea687aab76df31a3e4ef7377c5a401ae76e17893..9b6f065d4ed6433ea1a067d46300f9d2525f5411 100644
--- a/net/minecraft/network/protocol/PacketUtils.java
+++ b/net/minecraft/network/protocol/PacketUtils.java
@@ -27,7 +27,20 @@ public class PacketUtils {
if (processor.shouldHandleMessage(packet)) {
diff --git a/net/minecraft/network/PacketProcessor.java b/net/minecraft/network/PacketProcessor.java
index 064c3dea7f1e7fe07f63853532edae6f0a3e4a5c..5b8425a964ff479940fd3a9f4ef3c912b525d93b 100644
--- a/net/minecraft/network/PacketProcessor.java
+++ b/net/minecraft/network/PacketProcessor.java
@@ -70,7 +70,20 @@ public class PacketProcessor implements AutoCloseable {
if (this.listener.shouldHandleMessage(this.packet)) {
try {
packet.handle(processor);
this.packet.handle(this.listener);
+ // Leaves start - update suppression crash fix
+ } catch (org.leavesmc.leaves.util.UpdateSuppressionException exception) {
+ if (processor instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
+ if (this.listener instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
+ exception.providePlayer(gamePacketListener.player);
+ }
+ exception.consume();
+ } catch (Exception var4) {
+ if (var4.getCause() instanceof org.leavesmc.leaves.util.UpdateSuppressionException exception) {
+ if (processor instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
} catch (Exception var3) {
+ if (var3.getCause() instanceof org.leavesmc.leaves.util.UpdateSuppressionException exception) {
+ if (this.listener instanceof net.minecraft.server.network.ServerGamePacketListenerImpl gamePacketListener) {
+ exception.providePlayer(gamePacketListener.player);
+ }
+ exception.consume();
+ }
+ // Leaves end - update suppression crash fix
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
throw makeReportedException(var4, packet, processor);
if (var3 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
throw PacketUtils.makeReportedException(var3, this.packet, this.listener);
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 2bcd2e36c2a934a3b09f2407bd91a4b45989ed74..9b7fb261b6170afe3748bf8628dcac1c31b336f2 100644
@@ -109,14 +109,13 @@ index 537223e73dbc6e1f76752b6cd8fc059ffea635d4..b8d93586189567eca93bd3a723a222a4
return true;
} else {
diff --git a/net/minecraft/world/level/block/ShulkerBoxBlock.java b/net/minecraft/world/level/block/ShulkerBoxBlock.java
index f3bc957110ef60ad5e4384b934b60dccea76d5a7..be76ec933182852504363048362ae1045a01dcf7 100644
index f3bc957110ef60ad5e4384b934b60dccea76d5a7..ffca65d881ee6f4bde8e579d012ee5c1a11a0c2d 100644
--- a/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -182,8 +182,23 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
}
@@ -183,7 +183,17 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@Override
protected int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos pos) {
protected int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos, Direction direction) {
- return AbstractContainerMenu.getRedstoneSignalFromBlockEntity(level.getBlockEntity(pos));
+ // Leaves start - update suppression crash fix
+ try {

View File

@@ -18,7 +18,7 @@ index c452ee3f26bf3f9e055d5055473b1ef76a8a5884..8bd430c5c417c76db02cf1e2c0bc6f22
} else {
this.followingPlayer = null;
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 468097eafe73b45924697d36acc962b7bf9ca17b..451ff11e0ad37d1766e937133f5879b6568953f8 100644
index 468097eafe73b45924697d36acc962b7bf9ca17b..a79f70af6c9c4939007307728c87d25808fce372 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -246,8 +246,8 @@ public abstract class Player extends Avatar implements ContainerUser {
@@ -41,16 +41,16 @@ index 468097eafe73b45924697d36acc962b7bf9ca17b..451ff11e0ad37d1766e937133f5879b6
pose = desiredPose;
} else if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING)) {
pose = Pose.CROUCHING;
@@ -624,7 +624,7 @@ public abstract class Player extends LivingEntity {
}
this.bob = this.bob + (f - this.bob) * 0.4F;
@@ -506,7 +506,7 @@ public abstract class Player extends Avatar implements ContainerUser {
this.updateSwingTime();
this.yHeadRot = this.getYRot();
this.setSpeed((float)this.getAttributeValue(Attributes.MOVEMENT_SPEED));
- if (this.getHealth() > 0.0F && !this.isSpectator()) {
+ if (this.getHealth() > 0.0F && !this.isCreativeFlyOrSpectator()) { // Leaves - creative no clip
AABB aabb;
if (this.isPassenger() && !this.getVehicle().isRemoved()) {
aabb = this.getBoundingBox().minmax(this.getVehicle().getBoundingBox()).inflate(1.0, 0.0, 1.0);
@@ -1732,9 +1744,29 @@ public abstract class Player extends Avatar implements ContainerUser {
@@ -1732,9 +1732,29 @@ public abstract class Player extends Avatar implements ContainerUser {
return this.gameMode() == GameType.SPECTATOR;
}

View File

@@ -88,7 +88,7 @@ index 09fd99c9cbd23b5f3c899bfb00c9b89651948ed8..d58539fe376f548930b49141c87ec5eb
+ @Override public <T> void compact(net.minecraft.world.level.chunk.Palette<T> srcPalette, net.minecraft.world.level.chunk.Palette<T> dstPalette, short[] out) {} // Leaves - Gale - Lithium - faster chunk serialization
}
diff --git a/net/minecraft/world/level/chunk/PalettedContainer.java b/net/minecraft/world/level/chunk/PalettedContainer.java
index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16ddaf0db57b8 100644
index 1843046fe145bb23f2e9cf3269fb05c0fb617603..0221b3f4e7dab46ff4c3c601db163307f4cbe3cf 100644
--- a/net/minecraft/world/level/chunk/PalettedContainer.java
+++ b/net/minecraft/world/level/chunk/PalettedContainer.java
@@ -23,6 +23,22 @@ import net.minecraft.util.ThreadingDetector;
@@ -114,7 +114,7 @@ index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16dda
private static final int MIN_PALETTE_BITS = 0;
public volatile PalettedContainer.Data<T> data; // Paper - optimise collisions - public
private final Strategy<T> strategy;
@@ -340,7 +356,61 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
@@ -340,6 +356,56 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
public synchronized PalettedContainerRO.PackedData<T> pack(Strategy<T> strategy) { // Paper - synchronize
this.acquire();
@@ -137,7 +137,7 @@ index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16dda
+
+ if (elements == null) {
+ org.leavesmc.leaves.lithium.common.world.chunk.LithiumHashPalette<T> compactedPalette = new org.leavesmc.leaves.lithium.common.world.chunk.LithiumHashPalette<>(registry, storage.getBits(), this.dummyPaletteResize);
+ short[] array = this.getOrCreate(strategy.size());
+ short[] array = this.getOrCreate(strategy.entryCount());
+
+ storage.compact(this.data.palette(), compactedPalette, array);
+
@@ -146,7 +146,7 @@ index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16dda
+ data = this.asOptional(storage.getRaw().clone());
+ elements = hashPalette.getElements();
+ } else {
+ int bits = strategy.calculateBitsForSerialization(registry, compactedPalette.getSize());
+ int bits = strategy.getConfigurationForPaletteSize(compactedPalette.getSize()).bitsInStorage();
+ if (bits != 0) {
+ // Re-pack the integer array as the palette has changed size
+ SimpleBitStorage copy = new SimpleBitStorage(bits, array.length);
@@ -168,11 +168,10 @@ index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16dda
+ return new PalettedContainerRO.PackedData<>(elements, data);
+ }
+ // Leaves end - Gale - Lithium - faster chunk serialization
PalettedContainerRO.PackedData var12;
PalettedContainerRO.PackedData var14;
try {
BitStorage bitStorage = this.data.storage;
Palette<T> palette = this.data.palette;
@@ -412,12 +482,59 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
@@ -412,13 +478,43 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
@Override
public void count(PalettedContainer.CountConsumer<T> countConsumer) {
@@ -180,8 +179,8 @@ index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16dda
- countConsumer.accept(this.data.palette.valueFor(0), this.data.storage.getSize());
- } else {
- Int2IntOpenHashMap map = new Int2IntOpenHashMap();
- this.data.storage.getAll(id -> map.addTo(id, 1));
- map.int2IntEntrySet().forEach(idEntry -> countConsumer.accept(this.data.palette.valueFor(idEntry.getIntKey()), idEntry.getIntValue()));
- this.data.storage.getAll(i -> map.addTo(i, 1));
- map.int2IntEntrySet().forEach(entry -> countConsumer.accept(this.data.palette.valueFor(entry.getIntKey()), entry.getIntValue()));
+ // Leaves start - Gale - Lithium - faster chunk serialization
+ if (!org.leavesmc.leaves.LeavesConfig.performance.fasterChunkSerialization) {
+ if (this.data.palette.getSize() == 1) {
@@ -221,4 +220,4 @@ index 1843046fe145bb23f2e9cf3269fb05c0fb617603..57fd2cba6d47af8f3156fe3487f16dda
+ // Leaves end - Gale - Lithium - faster chunk serialization
}
record Configuration<T>(Palette.Factory factory, int bits) {
@FunctionalInterface

View File

@@ -42,10 +42,10 @@ index d323afb09232aa5b472f15ce8b7e16b52b81d55c..26c7ca8a17ac4b01fd092a1e4065e724
public void absSnapTo(double x, double y, double z) {
double d = Mth.clamp(x, -3.0E7, 3.0E7);
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index 37ad911648aa88bdb5132a819806a5a303438dbf..09065cb08b3ee1aed8a20e4293ef7144cb473da9 100644
index 37ad911648aa88bdb5132a819806a5a303438dbf..a1cc9cf5a0967c5fd605a9fd309908314121e975 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -1565,7 +1565,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -1565,17 +1565,39 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
protected void playAttackSound() {
}
@@ -55,7 +55,7 @@ index 37ad911648aa88bdb5132a819806a5a303438dbf..09065cb08b3ee1aed8a20e4293ef7144
+ // Leaves end - optimize sun burn tick
+
public boolean isSunBurnTick() {
if (this.level().isBrightOutside() && !this.level().isClientSide) {
if (this.level().isBrightOutside() && !this.level().isClientSide()) {
- float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue();
- BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
- boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bow infinity fix
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index df40c8f807dc03bf70b6c15ff885343a2d195e9c..14cb7265f095f8879a88034b9195640dcf1736aa 100644
index 8af6895986c8695f67fe36e67eda54867cdbe227..e4733cdedf9bfbd187c5e2a4402d44e908186a3c 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -1979,8 +1979,10 @@ public abstract class Player extends Avatar implements ContainerUser {
@@ -1967,8 +1967,10 @@ public abstract class Player extends Avatar implements ContainerUser {
}
}

View File

@@ -80,7 +80,7 @@ index d438e31a082b675d7eb0eead7067a0b92363a9f9..c08f34bc17bec9f73c377b45389a7755
players.add(serverPlayer1);
if (players.size() >= resultLimit) {
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index e111da378b6b4c67a7baa05a145c53a7130683ac..299777b012bd733f76a6ab404d1c54645f7b4770 100644
index e111da378b6b4c67a7baa05a145c53a7130683ac..9ea2fdfbf328b8bedac48e863021d92d40eae8cc 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1575,7 +1575,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -101,6 +101,15 @@ index e111da378b6b4c67a7baa05a145c53a7130683ac..299777b012bd733f76a6ab404d1c5464
}
public String[] getPlayerNames() {
@@ -2029,7 +2029,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} else {
int i = 0;
- for (ServerPlayer serverPlayer : this.getPlayerList().getPlayers()) {
+ for (ServerPlayer serverPlayer : this.getPlayerList().realPlayers) { // Leaves - only real player
// Paper start - Expand PlayerGameModeChangeEvent
org.bukkit.event.player.PlayerGameModeChangeEvent event = serverPlayer.setGameMode(gameMode, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, null);
if (event != null && event.isCancelled()) {
@@ -2197,7 +2197,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (Thread.currentThread() != this.serverThread) return; // Paper
// Paper start - we don't need to save everything, just advancements
@@ -110,13 +119,13 @@ index e111da378b6b4c67a7baa05a145c53a7130683ac..299777b012bd733f76a6ab404d1c5464
player.getAdvancements().save();
}
// Paper end - we don't need to save everything, just advancements
@@ -2335,8 +2335,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2335,7 +2335,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
PlayerList playerList = this.getPlayerList();
UserWhiteList whiteList = playerList.getWhiteList();
- for (ServerPlayer serverPlayer : Lists.newArrayList(playerList.getPlayers())) {
+ for (ServerPlayer serverPlayer : Lists.newArrayList(playerList.realPlayers)) { // Leaves - only real player
if (!whiteList.isWhiteListed(serverPlayer.getGameProfile()) && !this.getPlayerList().isOp(serverPlayer.getGameProfile())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
if (!whiteList.isWhiteListed(serverPlayer.nameAndId()) && !this.getPlayerList().isOp(serverPlayer.nameAndId())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
serverPlayer.connection.disconnect(net.kyori.adventure.text.Component.text(org.spigotmc.SpigotConfig.whitelistMessage), org.bukkit.event.player.PlayerKickEvent.Cause.WHITELIST); // Paper - use configurable message & kick event cause
}
diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java
@@ -154,19 +163,6 @@ index 5c9f2a8476ff260ec7f0843f7c956c71e9b0d34d..22d67e72e0bf2dbe8c7a936260bb3577
if (serverPlayer.getBukkitEntity().getScoreboard().getHandle() != this) continue; // CraftBukkit - Only players on this board
for (Packet<?> packet : stopTrackingPackets) {
serverPlayer.connection.send(packet);
diff --git a/net/minecraft/server/commands/DefaultGameModeCommands.java b/net/minecraft/server/commands/DefaultGameModeCommands.java
index 843c8e299da32755f2d7648a7f0758820546f613..4de23b0f585ec7a5cee4efbc8ca0dac1f9fca689 100644
--- a/net/minecraft/server/commands/DefaultGameModeCommands.java
+++ b/net/minecraft/server/commands/DefaultGameModeCommands.java
@@ -27,7 +27,7 @@ public class DefaultGameModeCommands {
server.setDefaultGameType(gamemode);
GameType forcedGameType = server.getForcedGameType();
if (forcedGameType != null) {
- for (ServerPlayer serverPlayer : server.getPlayerList().getPlayers()) {
+ for (ServerPlayer serverPlayer : server.getPlayerList().realPlayers) { // Leaves - only real players
// Paper start - Expand PlayerGameModeChangeEvent
org.bukkit.event.player.PlayerGameModeChangeEvent event = serverPlayer.setGameMode(gamemode, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, net.kyori.adventure.text.Component.empty());
if (event != null && event.isCancelled()) {
diff --git a/net/minecraft/server/commands/ListPlayersCommand.java b/net/minecraft/server/commands/ListPlayersCommand.java
index e7c778a7f292fd0749cbd5e6586ad1b93ac7f29e..024b56405bb58801b17a6adad7fec7a461d12a5c 100644
--- a/net/minecraft/server/commands/ListPlayersCommand.java
@@ -269,20 +265,21 @@ index cfe62a56ce1b4222ed6d73fc6390b7726542a9cd..234478bca5f8b1ea768b487c943b44e0
.map(Player::nameAndId)
.filter(nameAndId -> !playerList.getWhiteList().isWhiteListed(nameAndId))
diff --git a/net/minecraft/server/gui/PlayerListComponent.java b/net/minecraft/server/gui/PlayerListComponent.java
index 5a8cd3e6b448a4472092690cf589bca10b142126..5933a2f42d2d3c3ab02003ef80d5e9ce2234bad2 100644
index 5a8cd3e6b448a4472092690cf589bca10b142126..c9abb60b96e07fae86111be503bc49422ba92906 100644
--- a/net/minecraft/server/gui/PlayerListComponent.java
+++ b/net/minecraft/server/gui/PlayerListComponent.java
@@ -17,8 +17,13 @@ public class PlayerListComponent extends JList<String> {
@@ -17,9 +17,8 @@ public class PlayerListComponent extends JList<String> {
if (this.tickCount++ % 20 == 0) {
Vector<String> list = new Vector<>();
- for (int i = 0; i < this.server.getPlayerList().getPlayers().size(); i++) {
- list.add(this.server.getPlayerList().getPlayers().get(i).getGameProfile().getName());
- list.add(this.server.getPlayerList().getPlayers().get(i).getGameProfile().name());
- }
+ for (int i = 0; i < this.server.getPlayerList().realPlayers.size(); i++) { // Leaves - only real players
+ list.add(this.server.getPlayerList().realPlayers.get(i).getGameProfile().getName()); // Leaves - only real players
}
+ list.add(this.server.getPlayerList().realPlayers.get(i).getGameProfile().name()); // Leaves - only real players
this.setListData(list);
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 5deab686b386e3b82205a828ae12a72cb0f2e6fb..0db088864eac6c65a78620953821a1280056a688 100644
--- a/net/minecraft/server/level/ServerLevel.java
@@ -306,7 +303,7 @@ index 5deab686b386e3b82205a828ae12a72cb0f2e6fb..0db088864eac6c65a78620953821a128
}
// Leaves end - skip
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19826e59fc 100644
index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..39e624aca0cc803b682ea8d2304dcd86480265bb 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -125,6 +125,7 @@ public abstract class PlayerList {
@@ -443,9 +440,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19
public void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie) {
player.isRealPlayer = true; // Paper
player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed
@@ -234,9 +354,109 @@ public abstract class PlayerList {
org.bukkit.event.player.PlayerJoinEvent playerJoinEvent = new org.bukkit.event.player.PlayerJoinEvent(bukkitPlayer, io.papermc.paper.adventure.PaperAdventure.asAdventure(mutableComponent)); // Paper - Adventure
this.cserver.getPluginManager().callEvent(playerJoinEvent);
@@ -215,6 +335,7 @@ public abstract class PlayerList {
// player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(this.players)); // CraftBukkit - replaced with loop below
this.players.add(player);
@@ -453,7 +448,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19
this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot
this.playersByUUID.put(player.getUUID(), player);
// this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player))); // CraftBukkit - replaced with loop below
@@ -503,6 +624,7 @@ public abstract class PlayerList {
@@ -419,6 +540,7 @@ public abstract class PlayerList {
}
protected void save(ServerPlayer player) {
@@ -461,7 +456,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19
if (!player.getBukkitEntity().isPersistent()) return; // CraftBukkit
player.lastSave = MinecraftServer.currentTick; // Paper - Incremental chunk and player saving
this.playerIo.save(player);
@@ -433,6 +654,43 @@ public abstract class PlayerList {
@@ -433,6 +555,43 @@ public abstract class PlayerList {
}
}
@@ -505,7 +500,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19
public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player) { // CraftBukkit - return string // Paper - return Component
// Paper start - Fix kick event leave message not being sent
return this.remove(player, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? player.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(player.getDisplayName())));
@@ -506,6 +764,7 @@ public abstract class PlayerList {
@@ -506,6 +665,7 @@ public abstract class PlayerList {
player.retireScheduler(); // Paper - Folia schedulers
player.getAdvancements().stopListening();
this.players.remove(player);
@@ -513,7 +508,7 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19
this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
this.server.getCustomBossEvents().onPlayerDisconnect(player);
UUID uuid = player.getUUID();
@@ -881,14 +1140,19 @@ public abstract class PlayerList {
@@ -881,14 +1041,14 @@ public abstract class PlayerList {
}
public String[] getPlayerNamesArray() {
@@ -521,25 +516,24 @@ index 248c08b4f1dc6cf47ac311d5872ae56485e3b425..190b5cce7e348c18612ba67eeca3ab19
+ String[] strings = new String[this.realPlayers.size() + this.server.getBotList().bots.size()]; // Leaves - fakeplayer support, and skip photographer
- for (int i = 0; i < this.players.size(); i++) {
- strings[i] = this.players.get(i).getGameProfile().getName();
- strings[i] = this.players.get(i).getGameProfile().name();
+ for (int i = 0; i < this.realPlayers.size(); i++) { // Leaves - only real players
+ strings[i] = this.realPlayers.get(i).getGameProfile().getName(); // Leaves - only real players
+ strings[i] = this.realPlayers.get(i).getGameProfile().name(); // Leaves - only real players
}
// Leaves start - fakeplayer support
- for (int i = this.players.size(); i < strings.length; ++i) {
- strings[i] = this.server.getBotList().bots.get(i - this.players.size()).getGameProfile().getName();
+ for (int i = this.realPlayers.size(); i < strings.length; ++i) { // Leaves - only real players
+ strings[i] = this.server.getBotList().bots.get(i - this.realPlayers.size()).getGameProfile().getName(); // Leaves - only real players
+ strings[i] = this.server.getBotList().bots.get(i - this.realPlayers.size()).getGameProfile().name(); // Leaves - only real players
}
// Leaves end - fakeplayer support
@@ -958,8 +1222,13 @@ public abstract class PlayerList {
}
@@ -959,7 +1119,7 @@ public abstract class PlayerList {
// Paper start - whitelist verify event / login event
public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) {
- final boolean shouldKick = this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile);
+ final boolean shouldKick = this.realPlayers.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile); // Leaves - only real player
public LoginResult canBypassFullServerLogin(final NameAndId nameAndId, final LoginResult currentResult) {
- final boolean shouldKick = this.players.size() >= this.getMaxPlayers() && !this.canBypassPlayerLimit(nameAndId);
+ final boolean shouldKick = this.realPlayers.size() >= this.getMaxPlayers() && !this.canBypassPlayerLimit(nameAndId); // Leaves - only real player
final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent(
new com.destroystokyo.paper.profile.CraftPlayerProfile(nameAndId),
io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message),

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Force Void Trade
diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java
index 54ba469380b51b38327c107e3a1c5574395f3507..580aad496f8ffb93ce0c0205e09774f2a520e829 100644
index 54ba469380b51b38327c107e3a1c5574395f3507..0f734c87ad5f25e646d69b35bf68448614d63893 100644
--- a/net/minecraft/world/entity/npc/AbstractVillager.java
+++ b/net/minecraft/world/entity/npc/AbstractVillager.java
@@ -43,6 +43,7 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -43,13 +43,13 @@ index 54ba469380b51b38327c107e3a1c5574395f3507..580aad496f8ffb93ce0c0205e09774f2
@@ -173,7 +180,7 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@Override
public void notifyTradeUpdated(ItemStack stack) {
if (!this.level().isClientSide && this.ambientSoundTime > -this.getAmbientSoundInterval() + 20) {
if (!this.level().isClientSide() && this.ambientSoundTime > -this.getAmbientSoundInterval() + 20) {
- this.ambientSoundTime = -this.getAmbientSoundInterval();
+ if (!voidTrade) this.ambientSoundTime = -this.getAmbientSoundInterval(); // Leaves - force void trade
this.makeSound(this.getTradeUpdatedSound(!stack.isEmpty()));
}
}
@@ -219,6 +231,12 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -219,6 +226,12 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
}
protected void stopTrading() {
@@ -62,7 +62,7 @@ index 54ba469380b51b38327c107e3a1c5574395f3507..580aad496f8ffb93ce0c0205e09774f2
this.setTradingPlayer(null);
}
@@ -297,4 +315,10 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -297,4 +310,10 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
public boolean stillValid(Player player) {
return this.getTradingPlayer() == player && this.isAlive() && player.canInteractWithEntity(this, 4.0);
}

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] CCE update suppression
diff --git a/net/minecraft/world/level/block/ShulkerBoxBlock.java b/net/minecraft/world/level/block/ShulkerBoxBlock.java
index be76ec933182852504363048362ae1045a01dcf7..be1da725af23875798862ed6596e9e49fa79fe4a 100644
index ffca65d881ee6f4bde8e579d012ee5c1a11a0c2d..efb25d556f2192b1ee499c28d14aa7d11bcabef8 100644
--- a/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -189,7 +189,9 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
protected int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos pos) {
@@ -185,7 +185,9 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
protected int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos, Direction direction) {
// Leaves start - update suppression crash fix
try {
- return AbstractContainerMenu.getRedstoneSignalFromBlockEntity(level.getBlockEntity(pos));

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Disable offline warn if use proxy
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 132a0d9e6a1e4792f87ba92731d1e53b6b01b548..637cf6145fba88287eef38ce360a83d5b908e3f7 100644
index 70f0adbd01aa6aabc7b8ecc9e02dd93e2f479a69..144d1ff610d2743e554e6a4940bcb184e09c1520 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -340,7 +340,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -335,7 +335,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
// Paper end - Add Velocity IP Forwarding Support

View File

@@ -54,16 +54,15 @@ index 51c126735ace8fdde89ad97b5cab62f244212db0..a6573e327ace16b7ea320eb1440ffcbc
+ public void moonrise$write(final org.leavesmc.leaves.region.IRegionFile regionFile) throws IOException; // Leaves - more region format
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 299777b012bd733f76a6ab404d1c54645f7b4770..c58d93e5a8c348ad67b1d5720d93e6b614650018 100644
index 9ea2fdfbf328b8bedac48e863021d92d40eae8cc..d925df996a3b1b47969859b9fecee4c8a0b123f2 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -874,11 +874,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// this.storageSource.saveDataTag(this.registryAccess(), this.worldData, this.getPlayerList().getSingleplayerData());
@@ -875,10 +875,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end
if (flush) {
for (ServerLevel serverLevel2 : this.getAllLevels()) {
- LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", serverLevel2.getChunkSource().chunkMap.getStorageName());
+ LOGGER.info("ThreadedChunkStorage ({}): All chunks are saved", serverLevel2.getChunkSource().chunkMap.getStorageName()); // Leaves - more region format
for (ServerLevel serverLevel : this.getAllLevels()) {
- LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", serverLevel.getChunkSource().chunkMap.getStorageName());
+ LOGGER.info("ThreadedChunkStorage ({}): All chunks are saved", serverLevel.getChunkSource().chunkMap.getStorageName()); // Leaves - more region format
}
- LOGGER.info("ThreadedAnvilChunkStorage: All dimensions are saved");
@@ -184,7 +183,7 @@ index 22f3aa1674664906e8ec45372d758d79017e3987..1d9b2a315d3c18df3c0dfc0e8daac18c
try (DataInputStream out = new DataInputStream(new java.io.BufferedInputStream(new java.util.zip.InflaterInputStream(Files.newInputStream(file))))) {
return net.minecraft.nbt.NbtIo.read((java.io.DataInput) out);
diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
index 8ea830f561f5b7d6ff6ca3c38adc7fe8e54e4cc7..e3e583fd919fa98ba12f1278ea69107c5fefb104 100644
index 8ea830f561f5b7d6ff6ca3c38adc7fe8e54e4cc7..1e192147ea50c4167a7bb876e3643ed770989ef3 100644
--- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
+++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
@@ -19,7 +19,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -380,16 +379,16 @@ index 8ea830f561f5b7d6ff6ca3c38adc7fe8e54e4cc7..e3e583fd919fa98ba12f1278ea69107c
if (regionFile == null) {
return;
}
@@ -400,6 +419,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
}
@@ -401,7 +420,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
public void write(ChunkPos chunkPos, @Nullable CompoundTag chunkData) throws IOException { // Paper - rewrite chunk system - public
if (!SharedConstants.DEBUG_DONT_SAVE_WORLD) {
- RegionFile regionFile = this.getRegionFile(chunkPos, chunkData == null); // CraftBukkit // Paper - rewrite chunk system
+ org.leavesmc.leaves.region.IRegionFile regionFile = this.getRegionFile(chunkPos, chunkData == null); // CraftBukkit // Paper - rewrite chunk system // Leaves - more region format
// Paper start - rewrite chunk system
if (regionFile == null) {
// if the RegionFile doesn't exist, no point in deleting from it
@@ -429,7 +448,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -432,7 +451,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
// Paper start - rewrite chunk system
synchronized (this) {
final ExceptionCollector<IOException> exceptionCollector = new ExceptionCollector<>();
@@ -398,7 +397,7 @@ index 8ea830f561f5b7d6ff6ca3c38adc7fe8e54e4cc7..e3e583fd919fa98ba12f1278ea69107c
try {
regionFile.close();
} catch (final IOException ex) {
@@ -448,7 +480,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
@@ -448,7 +467,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
// Paper start - rewrite chunk system
synchronized (this) {
final ExceptionCollector<IOException> exceptionCollector = new ExceptionCollector<>();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bytebuf API
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 190b5cce7e348c18612ba67eeca3ab19826e59fc..8f62978123dc40bbbc2f9e398a063000317dc655 100644
index 39e624aca0cc803b682ea8d2304dcd86480265bb..6fb2170c777ca0ac333f9663beb43644120cc9d6 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -385,6 +385,13 @@ public abstract class PlayerList {
@@ -289,6 +289,13 @@ public abstract class PlayerList {
boolean _boolean = gameRules.getBoolean(GameRules.RULE_DO_IMMEDIATE_RESPAWN);
boolean _boolean1 = gameRules.getBoolean(GameRules.RULE_REDUCEDDEBUGINFO);
boolean _boolean2 = gameRules.getBoolean(GameRules.RULE_LIMITED_CRAFTING);

View File

@@ -5,17 +5,18 @@ Subject: [PATCH] Fix CraftPortalEvent logic
diff --git a/net/minecraft/world/level/block/EndPortalBlock.java b/net/minecraft/world/level/block/EndPortalBlock.java
index cbd8c06f5bf4319dd2470c289442237c465cff57..dd0762c653f0ac1672f16265ba6689b88877ad4c 100644
index cbd8c06f5bf4319dd2470c289442237c465cff57..1df34a29925ba40e6c4af5a8ba4c2480e5c58cbe 100644
--- a/net/minecraft/world/level/block/EndPortalBlock.java
+++ b/net/minecraft/world/level/block/EndPortalBlock.java
@@ -111,7 +111,7 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
@@ -111,10 +111,10 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
}
// CraftBukkit start
- set.removeAll(Relative.ROTATION); // remove relative rotation flags to simplify event mutation
+ // set.removeAll(Relative.ROTATION); // remove relative rotation flags to simplify event mutation // Leaves - no
float absoluteYaw = flag ? f : entity.getYRot() + f;
- org.bukkit.craftbukkit.event.CraftPortalEvent event = entity.callPortalEvent(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1.getWorld(), absoluteYaw, entity.getXRot()), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.END_PORTAL, 0, 0);
float absoluteYaw = !flag ? f : entity.getYRot() + f;
float absolutePitch = entity.getXRot() + f1;
- org.bukkit.craftbukkit.event.CraftPortalEvent event = entity.callPortalEvent(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1, absoluteYaw, absolutePitch), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.END_PORTAL, 0, 0);
+ org.bukkit.craftbukkit.event.CraftPortalEvent event = entity.callPortalEvent(entity, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(bottomCenter, level1.getWorld(), absoluteYaw, 0.0F), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.END_PORTAL, 0, 0); // Leaves - fix
if (event == null) {
return null;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Xaero Map Protocol
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 8f62978123dc40bbbc2f9e398a063000317dc655..9fe5f2a30234473682c47e4876833eb3841321f2 100644
index 6fb2170c777ca0ac333f9663beb43644120cc9d6..65005673cbda87e6d581ae61586c03eaa4d20164 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -1356,6 +1356,7 @@ public abstract class PlayerList {
@@ -1247,6 +1247,7 @@ public abstract class PlayerList {
player.connection.send(new ClientboundInitializeBorderPacket(worldBorder));
player.connection.send(new ClientboundSetTimePacket(level.getGameTime(), level.getDayTime(), level.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)));
player.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getRespawnData()));

View File

@@ -5,10 +5,11 @@ Subject: [PATCH] Old projectile explosion behavior
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index 8b0341c060d9f61698f32dd05c360c303a443c9b..8447b824ad5b68c5af5507c3594cd74ffdc40e73 100644
index 8b0341c060d9f61698f32dd05c360c303a443c9b..7a3f9305abc7f094611c6d7ca36ca664bd483a73 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -539,7 +539,7 @@ public class ServerExplosion implements Explosion {
@@ -538,7 +538,7 @@ public class ServerExplosion implements Explosion {
// Paper end - knockback events
}
// CraftBukkit end
- entity.push(vec32);

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Prevent loss of item drops due to update suppression when
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
index fc205e54941d40a5583129b0c6540950f97a6b49..78211633d733ce30fa69ec47cd884c1d6680df82 100644
index fc205e54941d40a5583129b0c6540950f97a6b49..2b69ff82977f3592fb99ef494d090d77be34c186 100644
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -402,11 +402,20 @@ public class ServerPlayerGameMode {
@@ -402,11 +402,21 @@ public class ServerPlayerGameMode {
this.level.captureDrops = new java.util.ArrayList<>();
// CraftBukkit end
BlockState blockState1 = org.leavesmc.leaves.command.subcommands.BlockUpdateCommand.isNoBlockUpdate() ? blockState : block.playerWillDestroy(this.level, pos, blockState, this.player); // Leaves - no block update
@@ -33,7 +33,7 @@ index fc205e54941d40a5583129b0c6540950f97a6b49..78211633d733ce30fa69ec47cd884c1d
if (flag) {
block.destroy(this.level, pos, blockState1);
}
@@ -434,6 +443,7 @@ public class ServerPlayerGameMode {
@@ -434,6 +444,7 @@ public class ServerPlayerGameMode {
if (event.isDropItems()) {
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockDropItemEvent(bblock, state, this.player, itemsToDrop); // Paper - capture all item additions to the world
}

View File

@@ -53,7 +53,7 @@ index 7fff233c3aea5d5cf1084517f0040111d60fd054..dc76b783d112cf1b835852f616c8de76
this.removeAfterChangingDimensions();
- entityx.teleportSetPosition(PositionMoveRotation.of(this), PositionMoveRotation.of(teleportTransition), teleportTransition.relatives());
+ entityx.teleportSetPosition(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives());
if (this.inWorld || (org.leavesmc.leaves.LeavesConfig.modify.oldMC.enderDragonPartCanUseEndPortal && this instanceof net.minecraft.world.entity.boss.EnderDragonPart)) newLevel.addDuringTeleport(entityx); // CraftBukkit - Don't spawn the new entity if the current entity isn't spawned // Leaves - endDragonPartCanUseEndPortal
if (this.inWorld) newLevel.addDuringTeleport(entityx); // CraftBukkit - Don't spawn the new entity if the current entity isn't spawned
for (Entity entity2 : list) {
@@ -4283,6 +4283,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
@@ -65,7 +65,7 @@ index 7fff233c3aea5d5cf1084517f0040111d60fd054..dc76b783d112cf1b835852f616c8de76
if (!this.isAlive() || !this.valid) return false; // Paper - Fix item duplication and teleport issues
if (fromLevel.dimension() == Level.END && toLevel.dimension() == Level.OVERWORLD) {
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index 09065cb08b3ee1aed8a20e4293ef7144cb473da9..7fbd90c335bd85edff8db2954f1aeb59dd2042d6 100644
index a1cc9cf5a0967c5fd605a9fd309908314121e975..580d903921388701be7b4153fb7cc4163e3765c2 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -395,6 +395,16 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab