diff --git a/patches/server/0010-Fakeplayer-support.patch b/patches/server/0010-Fakeplayer-support.patch index 6f7b9572..6d89e09c 100644 --- a/patches/server/0010-Fakeplayer-support.patch +++ b/patches/server/0010-Fakeplayer-support.patch @@ -88,6 +88,63 @@ index 85b76c5da9eea5bae0dd55f5b7ac1eb1a0211944..c6eeb3324fbf58eb7a6eb61aa7a8dfdc } } +diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java +index 9ac697d12ec670e2f67d11d94a09de50c7bd0b9e..81ebb247a8d5c5cd77a3d4ce729146c9fbfa3668 100644 +--- a/src/main/java/net/minecraft/server/level/ServerLevel.java ++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -228,6 +228,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent + public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent + private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) ++ final List realPlayers; // Leaves - skip + + public LevelChunk getChunkIfLoaded(int x, int z) { + return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately +@@ -605,6 +606,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this, ca.spottedleaf.moonrise.common.util.MoonriseCommon.WORKER_POOL); + // Paper end - rewrite chunk system + this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit ++ this.realPlayers = Lists.newArrayList(); // Leaves - skip + } + + // Paper start +@@ -1977,6 +1979,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + return this.players; + } + ++ // Leaves start - fakeplayer skip ++ public List realPlayers() { ++ return this.realPlayers; ++ } ++ // Leaves end - fakeplayer skip ++ + @Override + public void onBlockStateChange(BlockPos pos, BlockState oldBlock, BlockState newBlock) { + Optional> optional = PoiTypes.forState(oldBlock); +@@ -2448,6 +2456,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + // ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true + if (entity instanceof ServerPlayer entityplayer) { + ServerLevel.this.players.add(entityplayer); ++ // Leaves start - skip ++ if (!(entityplayer instanceof org.leavesmc.leaves.bot.ServerBot)) { ++ ServerLevel.this.realPlayers.add(entityplayer); ++ } ++ // Leaves end - skip + ServerLevel.this.updateSleepingPlayerList(); + } + +@@ -2525,6 +2538,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + ServerLevel.this.getChunkSource().removeEntity(entity); + if (entity instanceof ServerPlayer entityplayer) { + ServerLevel.this.players.remove(entityplayer); ++ // Leaves start - skip ++ if (!(entityplayer instanceof org.leavesmc.leaves.bot.ServerBot)) { ++ ServerLevel.this.realPlayers.remove(entityplayer); ++ } ++ // Leaves end - skip + ServerLevel.this.updateSleepingPlayerList(); + } + diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java index 89ed20e9c629cf39a24c7a0ce5c4fee41fc64fd5..5afef331ec117adae0c29f5c4b9f43b7be7cdd4c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -326,7 +383,7 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..bb9d8cb957f5be517d3ae2959e0406af if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper - Ability to control player's insomnia and phantoms BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21)); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index cb4922442cb696e587d07022e152c4fd9a21ca6f..d7f373bae76e14ce20515ec22bf48c40a2054f92 100644 +index cb4922442cb696e587d07022e152c4fd9a21ca6f..1c7c0e4c5e78b9b4c0046345d71bade4acb730e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -309,6 +309,7 @@ public final class CraftServer implements Server { @@ -337,6 +394,15 @@ index cb4922442cb696e587d07022e152c4fd9a21ca6f..d7f373bae76e14ce20515ec22bf48c40 // Paper start - Folia region threading API private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler(); +@@ -1450,7 +1451,7 @@ public final class CraftServer implements Server { + return false; + } + +- if (handle.players().size() > 0) { ++ if (handle.realPlayers().size() > 0) { // Leaves - skip + return false; + } + @@ -3216,4 +3217,11 @@ public final class CraftServer implements Server { return this.potionBrewer; } @@ -349,6 +415,58 @@ index cb4922442cb696e587d07022e152c4fd9a21ca6f..d7f373bae76e14ce20515ec22bf48c40 + } + // Leaves end - Bot API } +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +index 8045d6c9398d1c88595da6e41aa1ed27fb6fbad0..74f4938c88b547c326c335aac09ab47fed3ea588 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +@@ -210,7 +210,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { + + @Override + public int getPlayerCount() { +- return world.players().size(); ++ return world.realPlayers().size(); // Leaves - skip + } + + @Override +@@ -1247,9 +1247,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { + + @Override + public List getPlayers() { +- List list = new ArrayList(this.world.players().size()); ++ List list = new ArrayList(this.world.realPlayers().size()); // Leaves - skip + +- for (net.minecraft.world.entity.player.Player human : this.world.players()) { ++ for (net.minecraft.world.entity.player.Player human : this.world.realPlayers()) { // Leaves - skip + HumanEntity bukkitEntity = human.getBukkitEntity(); + + if ((bukkitEntity != null) && (bukkitEntity instanceof Player)) { +@@ -1934,7 +1934,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { + public void playSound(final net.kyori.adventure.sound.Sound sound) { + org.spigotmc.AsyncCatcher.catchOp("play sound"); // Paper + final long seed = sound.seed().orElseGet(this.world.getRandom()::nextLong); +- for (ServerPlayer player : this.getHandle().players()) { ++ for (ServerPlayer player : this.getHandle().realPlayers()) { // Leaves - skip + player.connection.send(io.papermc.paper.adventure.PaperAdventure.asSoundPacket(sound, player.getX(), player.getY(), player.getZ(), seed, null)); + } + } +@@ -1950,7 +1950,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { + org.spigotmc.AsyncCatcher.catchOp("play sound"); // Paper + final long seed = sound.seed().orElseGet(this.getHandle().getRandom()::nextLong); + if (emitter == net.kyori.adventure.sound.Sound.Emitter.self()) { +- for (ServerPlayer player : this.getHandle().players()) { ++ for (ServerPlayer player : this.getHandle().realPlayers()) { // Leaves - skip + player.connection.send(io.papermc.paper.adventure.PaperAdventure.asSoundPacket(sound, player, seed, null)); + } + } else if (emitter instanceof CraftEntity craftEntity) { +@@ -2171,7 +2171,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { + Preconditions.checkArgument(particle.getDataType().isInstance(data), "data (%s) should be %s", data.getClass(), particle.getDataType()); + } + this.getHandle().sendParticles( +- receivers == null ? this.getHandle().players() : receivers.stream().map(player -> ((CraftPlayer) player).getHandle()).collect(java.util.stream.Collectors.toList()), // Paper - Particle API ++ receivers == null ? this.getHandle().realPlayers() : receivers.stream().map(player -> ((CraftPlayer) player).getHandle()).collect(java.util.stream.Collectors.toList()), // Paper - Particle API // Leaves - skip + sender != null ? ((CraftPlayer) sender).getHandle() : null, // Sender // Paper - Particle API + CraftParticle.createParticleParam(particle, data), // Particle + x, y, z, // Position diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 2cde808bfa797256409879505ba205a71f381981..a007beca6c00bce4514889935b1762a37826c75a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/patches/server/0024-Move-ThreadUnsafeRandom-Initialization.patch b/patches/server/0024-Move-ThreadUnsafeRandom-Initialization.patch index 3b2c07d5..7b5df3f3 100644 --- a/patches/server/0024-Move-ThreadUnsafeRandom-Initialization.patch +++ b/patches/server/0024-Move-ThreadUnsafeRandom-Initialization.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Move ThreadUnsafeRandom Initialization This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9ac697d12ec670e2f67d11d94a09de50c7bd0b9e..cef5f66db297a68d74cbb7ca538b30d3d362be30 100644 +index 81ebb247a8d5c5cd77a3d4ce729146c9fbfa3668..43977320ffefa9bff45e63194005375d9a2fe8b0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -802,7 +802,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -804,7 +804,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); diff --git a/patches/server/0029-Remove-lambda-from-ticking-guard.patch b/patches/server/0029-Remove-lambda-from-ticking-guard.patch index ecbec179..daa64f5d 100644 --- a/patches/server/0029-Remove-lambda-from-ticking-guard.patch +++ b/patches/server/0029-Remove-lambda-from-ticking-guard.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Remove lambda from ticking guard This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cef5f66db297a68d74cbb7ca538b30d3d362be30..1ff888bdc9c83a7e84393711ff50c96e78a1d55a 100644 +index 43977320ffefa9bff45e63194005375d9a2fe8b0..b633f8df58397936799a2ba37fa73dd4a588828d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -739,7 +739,23 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -741,7 +741,23 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } gameprofilerfiller.push("tick"); diff --git a/patches/server/0046-MC-Technical-Survival-Mode.patch b/patches/server/0046-MC-Technical-Survival-Mode.patch index 0fba3005..b8b0e983 100644 --- a/patches/server/0046-MC-Technical-Survival-Mode.patch +++ b/patches/server/0046-MC-Technical-Survival-Mode.patch @@ -39,10 +39,10 @@ index 83a726bcf8b7dce73a361b0d79dbd63a0afc7a12..12cf1f7ba7d6c14b8b31d939b6f281bd throw new RuntimeException("Could not reload paper configuration files", ex); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1ff888bdc9c83a7e84393711ff50c96e78a1d55a..2d21dbb62c720beead96bf9176c7bd22661592ac 100644 +index b633f8df58397936799a2ba37fa73dd4a588828d..ed9c83f2f6f078fab31e652bc04c2b886d719395 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2452,7 +2452,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -2460,7 +2460,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. public void onTickingEnd(Entity entity) { ServerLevel.this.entityTickList.remove(entity); // Paper start - Reset pearls when they stop being ticked diff --git a/patches/server/0070-No-block-update-command.patch b/patches/server/0070-No-block-update-command.patch index 2398ba3a..63fb45a4 100644 --- a/patches/server/0070-No-block-update-command.patch +++ b/patches/server/0070-No-block-update-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] No block update command diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2d21dbb62c720beead96bf9176c7bd22661592ac..0f1fef8f6e3b89f61b98358c6c8d84af4af2fa5e 100644 +index ed9c83f2f6f078fab31e652bc04c2b886d719395..628bc758d85a51a6cd48dc1a9581feef65cecd73 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2243,6 +2243,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -2251,6 +2251,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @Override public void blockUpdated(BlockPos pos, Block block) { diff --git a/patches/server/0099-Replay-Mod-API.patch b/patches/server/0099-Replay-Mod-API.patch index 52070ab5..3bc82d1f 100644 --- a/patches/server/0099-Replay-Mod-API.patch +++ b/patches/server/0099-Replay-Mod-API.patch @@ -146,6 +146,28 @@ index e7b444a10b244828827b3c66c53465206ea8e0ec..030601fdfde2232a933b2ad7022e9909 .stream() .filter(player -> !playerList.isOp(player.getGameProfile())) .map(player -> player.getGameProfile().getName()), +diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java +index ddeb36942d963ba81a85769eb65eddf0b4699528..3f9e6c71bc2495ea679e8051d478b7818fc22526 100644 +--- a/src/main/java/net/minecraft/server/level/ServerLevel.java ++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -2475,7 +2475,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + if (entity instanceof ServerPlayer entityplayer) { + ServerLevel.this.players.add(entityplayer); + // Leaves start - skip +- if (!(entityplayer instanceof org.leavesmc.leaves.bot.ServerBot)) { ++ if (!(entityplayer instanceof org.leavesmc.leaves.bot.ServerBot) && !(entityplayer instanceof org.leavesmc.leaves.replay.ServerPhotographer)) { // and photographer + ServerLevel.this.realPlayers.add(entityplayer); + } + // Leaves end - skip +@@ -2557,7 +2557,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + if (entity instanceof ServerPlayer entityplayer) { + ServerLevel.this.players.remove(entityplayer); + // Leaves start - skip +- if (!(entityplayer instanceof org.leavesmc.leaves.bot.ServerBot)) { ++ if (!(entityplayer instanceof org.leavesmc.leaves.bot.ServerBot) && !(entityplayer instanceof org.leavesmc.leaves.replay.ServerPhotographer)) { // and photographer + ServerLevel.this.realPlayers.remove(entityplayer); + } + // Leaves end - skip diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java index fedeaf43f7b61a7ca6dc2a99bb76a47f4c640a1d..34b0a606a0bb2073b3ce151a2fdeeb3c7c9f2acb 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java @@ -370,7 +392,7 @@ index fedeaf43f7b61a7ca6dc2a99bb76a47f4c640a1d..34b0a606a0bb2073b3ce151a2fdeeb3c } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d7f373bae76e14ce20515ec22bf48c40a2054f92..a58a495d35c5963df7947b42c4000a0f6ba28534 100644 +index 1c7c0e4c5e78b9b4c0046345d71bade4acb730e9..6a51197c6a17c9b57852924d66bd1c52b5b9e4bf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -310,6 +310,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0117-Servux-Protocol.patch b/patches/server/0117-Servux-Protocol.patch index 69cfec86..a4f65693 100644 --- a/patches/server/0117-Servux-Protocol.patch +++ b/patches/server/0117-Servux-Protocol.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Servux Protocol diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c97a9096e6b0fcb8f336a745b812b5cf0ea682ed..463c60ab0a5cc697315cbc23651e63cb96b7d90c 100644 +index 3f9e6c71bc2495ea679e8051d478b7818fc22526..421fa38abbef8037a3e90ff2e7c8acb76e77a4df 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1958,6 +1958,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1960,6 +1960,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } this.lastSpawnChunkRadius = i; diff --git a/patches/server/0131-Optimize-random-calls-in-chunk-ticking.patch b/patches/server/0131-Optimize-random-calls-in-chunk-ticking.patch index fced1c75..c5a94b75 100644 --- a/patches/server/0131-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/server/0131-Optimize-random-calls-in-chunk-ticking.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize random calls in chunk ticking This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 463c60ab0a5cc697315cbc23651e63cb96b7d90c..89c4d7a3e9c4a260ee7c44832db341fd190a46c7 100644 +index 421fa38abbef8037a3e90ff2e7c8acb76e77a4df..3db7d4ec535654fe8a3e425c6e55859fde37c8de 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -832,7 +832,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -834,7 +834,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change