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

Update 1.20.4

This commit is contained in:
violetc
2023-12-10 21:15:29 +08:00
parent 10acfe96b2
commit 3ab0f61472
99 changed files with 813 additions and 1171 deletions

View File

@@ -1,8 +1,15 @@
import io.papermc.paperweight.tasks.BaseTask
import io.papermc.paperweight.util.*
import java.io.ByteArrayOutputStream
import java.nio.file.Path
import java.util.regex.Pattern
import kotlin.io.path.*
plugins {
java
`maven-publish`
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
id("io.papermc.paperweight.patcher") version "1.5.10"
id("io.papermc.paperweight.patcher") version "1.5.11"
}
repositories {
@@ -67,3 +74,16 @@ paperweight {
}
}
}
if (providers.gradleProperty("updatingMinecraft").getOrElse("false").toBoolean()) {
tasks.withType<io.papermc.paperweight.tasks.CollectATsFromPatches>().configureEach {
val dir = layout.projectDirectory.dir("patches/unapplied")
if (dir.path.isDirectory()) {
extraPatchDir = dir
}
}
tasks.withType<io.papermc.paperweight.tasks.RebuildGitPatches>().configureEach {
filterPatches = false
}
}

View File

@@ -1,8 +1,9 @@
group=top.leavesmc.leaves
version=1.20.2-R0.1-SNAPSHOT
version=1.20.4-R0.1-SNAPSHOT
mcVersion=1.20.2
packageVersion=1_20_R2
mcVersion=1.20.4
packageVersion=1_20_R3
org.gradle.jvmargs=-Xmx2G
paperRef=931781c220b98dde0159c9a3c8dce06c3b2b1e13
preVersion=false
paperRef=b42a1da8737895f4fcacfae9b4d49a96b1445972
preVersion=true
updatingMinecraft=true

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Leaves Server Config
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index d0c634629aa0b6bac0da93655dd86ad3aea0ce30..1fc734c2898fc3d3b89b58284d56a0cff68794c4 100644
index f1fa97d12f97baf97beb92ca0719cf3cf906b225..119429ff7b4b7c3313b9affdd1adb25ae814f089 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2189,6 +2189,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add fakeplayer api
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 884902cb7f86c0b56594ccafc7d05c6c7a23ab53..b7dadd622a1845bb1b56ee7ca135119d31bed2d9 100644
index 4863d9f21f0a0f11974be85360edc587ffd7eab3..f54403c29005b891377577a36aa79af1365adc31 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -58,6 +58,7 @@ import org.jetbrains.annotations.Contract;
@@ -35,7 +35,7 @@ index 884902cb7f86c0b56594ccafc7d05c6c7a23ab53..b7dadd622a1845bb1b56ee7ca135119d
public static Server.Spigot spigot() {
return server.spigot();
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 1fc734c2898fc3d3b89b58284d56a0cff68794c4..50c9e22183c796838dd66cfabbc4befe7e00785b 100644
index 119429ff7b4b7c3313b9affdd1adb25ae814f089..7171f1b4729bf28e6c528c2f1036018a5ffcc895 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -58,6 +58,7 @@ import org.bukkit.util.CachedServerIcon;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Replay Mod API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index b7dadd622a1845bb1b56ee7ca135119d31bed2d9..4d211b9d21efcc344224a46b5fcb11e01abab7ad 100644
index f54403c29005b891377577a36aa79af1365adc31..15f18b4961effe78645e54d0b0cc8c530a807a68 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -59,6 +59,7 @@ import org.jetbrains.annotations.NotNull;
@@ -29,7 +29,7 @@ index b7dadd622a1845bb1b56ee7ca135119d31bed2d9..4d211b9d21efcc344224a46b5fcb11e0
@NotNull
public static Server.Spigot spigot() {
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 50c9e22183c796838dd66cfabbc4befe7e00785b..1d7e461b43dd24a8f15f37107e0ba4f331057308 100644
index 7171f1b4729bf28e6c528c2f1036018a5ffcc895..bb02f2e08597cd9362a587b1c9b442393cc19d54 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -59,6 +59,7 @@ import org.jetbrains.annotations.Contract;

View File

@@ -5,28 +5,30 @@ Subject: [PATCH] Build changes
diff --git a/build.gradle.kts b/build.gradle.kts
index 64479f0a892d6847f987d844efe282a6080d607b..9109ec2f462ea8becae3dbe92a3bb36e8de6263e 100644
index 170a915098f09ace226648da342a04c5c7583d11..9dd0f8b3e4042bdd3adcb2ec59fdbe9629d0915f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
val alsoShade: Configuration by configurations.creating
@@ -26,9 +26,13 @@ repositories {
}
dependencies {
- extraRuntime(platform("net.kyori:adventure-bom:4.15.0-SNAPSHOT"))
- implementation(project(":paper-api"))
- implementation(project(":paper-mojangapi"))
+ extraRuntime(platform("net.kyori:adventure-bom:4.15.0-SNAPSHOT"))
+ implementation(project(":leaves-api")) // Leaves
+ // Leaves start
+ implementation("io.papermc.paper:paper-mojangapi:1.20.2-R0.1-SNAPSHOT") {
+ implementation("io.papermc.paper:paper-mojangapi:1.20.4-R0.1-SNAPSHOT") {
+ exclude("io.papermc.paper", "paper-api")
+ }
+ // Leaves end
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.0")
@@ -58,19 +62,29 @@ dependencies {
@@ -72,19 +76,29 @@ dependencies {
}
val craftbukkitPackageVersion = "1_20_R2" // Paper
val craftbukkitPackageVersion = "1_20_R3" // Paper
+
+// Leaves start - hide irrelevant compilation warnings
+tasks.withType<JavaCompile> {
@@ -55,7 +57,7 @@ index 64479f0a892d6847f987d844efe282a6080d607b..9109ec2f462ea8becae3dbe92a3bb36e
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
@@ -154,7 +168,7 @@ fun TaskContainer.registerRunTask(
@@ -168,7 +182,7 @@ fun TaskContainer.registerRunTask(
name: String,
block: JavaExec.() -> Unit
): TaskProvider<JavaExec> = register<JavaExec>(name) {
@@ -153,10 +155,10 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..9ce4d3d96d2d5fbde1f0af599209c6c5
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..8ac996335015e5d494886f29921c4c3362659daa 100644
index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..8a4de5d230679889c8ef8388f09c662b74759a6e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1697,7 +1697,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1866,7 +1866,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@@ -166,7 +168,7 @@ index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..8ac996335015e5d494886f29921c4c33
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 1c9742ad81f04052d2c3bc18c7636f45b2fc5160..190d2fb23f2d7ef476a8051f1f0a86400f902652 100644
index 58536aabf607015939a1326f80207c0a06eed8ff..5a07dad83602425b35f480cf8a31ed328cdfe640 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -217,11 +217,12 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -184,10 +186,10 @@ index 1c9742ad81f04052d2c3bc18c7636f45b2fc5160..190d2fb23f2d7ef476a8051f1f0a8640
this.setFlightAllowed(dedicatedserverproperties.allowFlight);
this.setMotd(dedicatedserverproperties.motd);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 356107688a5d40d1c462b164f61af82f4dfd3926..dc60dda029bd28dac7b31e2998d178e7f1453a81 100644
index 782bb8ca67517dde5dba8f0a133eb8699353dd01..057b5fd0fd4f5dc2340cd80f316703edc1f88cae 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper
@@ -270,7 +270,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
@@ -197,7 +199,7 @@ index 356107688a5d40d1c462b164f61af82f4dfd3926..dc60dda029bd28dac7b31e2998d178e7
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index c737c5d62407337d3db2899cfc01713a058a6467..3c53be7f4cd162b8f7b808431ad36e7289e1aeb5 100644
index 4b457cbfc56e55e0ae0fee5b69e2e75349702aab..0815d354bbcb3ce2e263690f71f32c320fe3d1d2 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -301,7 +301,7 @@ public class Main {

View File

@@ -5,16 +5,15 @@ Subject: [PATCH] Delete Timings
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
deleted file mode 100644
index e6452bb4f29bf32600dbf8654365826600189bb5..0000000000000000000000000000000000000000
index 4b467f1af93452d13829f756d55dee18b8889d40..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
+++ /dev/null
@@ -1,182 +0,0 @@
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -1,181 +0,0 @@
-package co.aikar.timings;
-
-import com.google.common.collect.MapMaker;
-import io.papermc.paper.configuration.GlobalConfiguration;
-import net.minecraft.commands.CommandFunction;
-import net.minecraft.commands.functions.CommandFunction;
-import net.minecraft.network.protocol.Packet;
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.entity.BlockEntity;
@@ -61,7 +60,6 @@ index e6452bb4f29bf32600dbf8654365826600189bb5..00000000000000000000000000000000
- public static final Timing scoreboardScoreSearch = Timings.ofSafe("Scoreboard score search"); // Paper - add timings for scoreboard search
- public static final Timing distanceManagerTick = Timings.ofSafe("Distance Manager Tick"); // Paper - add timings for distance manager
-
-
- public static final Timing midTickChunkTasks = Timings.ofSafe("Mid Tick Chunk Tasks");
-
- private static final Map<Class<?>, String> taskNameCache = new MapMaker().weakKeys().makeMap();
@@ -172,8 +170,8 @@ index e6452bb4f29bf32600dbf8654365826600189bb5..00000000000000000000000000000000
- return Timings.ofSafe("## Packet - " + packet.getClass().getName(), packetProcessTimer);
- }
-
- public static Timing getCommandFunctionTiming(CommandFunction function) {
- return Timings.ofSafe("Command Function - " + function.getId());
- public static Timing getCommandFunctionTiming(CommandFunction<?> function) {
- return Timings.ofSafe("Command Function - " + function.id());
- }
-
- public static void processConfig(GlobalConfiguration.Timings config) {
@@ -844,30 +842,13 @@ index dab211c458311869c61779305580a1c7da830f71..193a527c8ebd3b8772820883046de7e9
@Override
diff --git a/src/main/java/net/minecraft/commands/CommandFunction.java b/src/main/java/net/minecraft/commands/CommandFunction.java
index 956cddf5d975b91619316b9b6779cf51575cfc0a..0e460de37ac2ae8accbd0d3da73faac6cd7df8e0 100644
--- a/src/main/java/net/minecraft/commands/CommandFunction.java
+++ b/src/main/java/net/minecraft/commands/CommandFunction.java
@@ -32,15 +32,6 @@ import net.minecraft.server.ServerFunctionManager;
public class CommandFunction {
private final CommandFunction.Entry[] entries;
final ResourceLocation id;
- // Paper start
- public co.aikar.timings.Timing timing;
- public co.aikar.timings.Timing getTiming() {
- if (timing == null) {
- timing = co.aikar.timings.MinecraftTimings.getCommandFunctionTiming(this);
- }
- return timing;
- }
- // Paper end
public CommandFunction(ResourceLocation id, CommandFunction.Entry[] elements) {
this.id = id;
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
index 9a49f5271ec1d9de17632bfffe8309cb1ba0d8b1..8055ebf912ea595b6c70c6e6fcda14f3b2516077 100644
index c5c734b9eb80d1cdf0e9fd8a043f2b6d1f4cbffe..de9a8ba5317d6e5ae682a2376c8d04512a0b0936 100644
--- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java
+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
@@ -48,8 +48,7 @@ public class PacketUtils {
@@ -49,8 +49,7 @@ public class PacketUtils {
try { // Paper - detailed watchdog information
if (MinecraftServer.getServer().hasStopped() || (listener instanceof ServerCommonPacketListenerImpl && ((ServerCommonPacketListenerImpl) listener).processedDisconnect)) return; // CraftBukkit, MC-142590
if (listener.shouldHandleMessage(packet)) {
@@ -876,9 +857,9 @@ index 9a49f5271ec1d9de17632bfffe8309cb1ba0d8b1..8055ebf912ea595b6c70c6e6fcda14f3
+ try {
packet.handle(listener);
} catch (Exception exception) {
if (exception instanceof ReportedException) {
label25:
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8ac996335015e5d494886f29921c4c3362659daa..1a375701b6ba43825af59f1dcc966633459adf29 100644
index 8a4de5d230679889c8ef8388f09c662b74759a6e..a67ddd1ca3f18e6754dd52d9f34e5d2e850760e0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -3,9 +3,6 @@ package net.minecraft.server;
@@ -891,23 +872,7 @@ index 8ac996335015e5d494886f29921c4c3362659daa..1a375701b6ba43825af59f1dcc966633
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -86,7 +83,6 @@ import net.minecraft.server.level.ServerChunkCache;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.level.ServerPlayerGameMode;
-import net.minecraft.server.level.TicketType;
import net.minecraft.server.level.progress.ChunkProgressListener;
import net.minecraft.server.level.progress.ChunkProgressListenerFactory;
import net.minecraft.server.network.ServerConnectionListener;
@@ -109,7 +105,6 @@ import net.minecraft.util.NativeModuleLister;
import net.minecraft.util.ProgressListener;
import net.minecraft.util.RandomSource;
import net.minecraft.util.SignatureValidator;
-import net.minecraft.util.Unit;
import net.minecraft.util.datafix.DataFixers;
import net.minecraft.util.profiling.EmptyProfileResults;
import net.minecraft.util.profiling.ProfileResults;
@@ -188,8 +183,6 @@ import org.bukkit.craftbukkit.Main;
@@ -189,8 +186,6 @@ import org.bukkit.craftbukkit.Main;
import org.bukkit.event.server.ServerLoadEvent;
// CraftBukkit end
@@ -916,7 +881,7 @@ index 8ac996335015e5d494886f29921c4c3362659daa..1a375701b6ba43825af59f1dcc966633
public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTask> implements ServerInfo, CommandSource, AutoCloseable {
private static MinecraftServer SERVER; // Paper
@@ -924,7 +917,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -970,7 +965,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
MinecraftServer.LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Shutdown and don't bother finishing
@@ -924,124 +889,7 @@ index 8ac996335015e5d494886f29921c4c3362659daa..1a375701b6ba43825af59f1dcc966633
// CraftBukkit start
if (this.server != null) {
this.server.disablePlugins();
@@ -1363,15 +1355,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public void onServerExit() {}
public void tickServer(BooleanSupplier shouldKeepTicking) {
- co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper
long i = Util.getNanos();
// Paper start - move oversleep into full server tick
- isOversleep = true;MinecraftTimings.serverOversleep.startTiming();
+ isOversleep = true;
this.managedBlock(() -> {
return !this.canOversleep();
});
- isOversleep = false;MinecraftTimings.serverOversleep.stopTiming();
+ isOversleep = false;
// Paper end
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper
@@ -1406,9 +1397,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end
io.papermc.paper.util.CachedLists.reset(); // Paper
// Paper start - move executeAll() into full server tick timing
- try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) {
- this.runAllTasks();
- }
+ this.runAllTasks();
// Paper end
// Paper start
long endTime = System.nanoTime();
@@ -1429,7 +1418,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.logTickTime(k - i);
this.profiler.pop();
org.spigotmc.WatchdogThread.tick(); // Spigot
- co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper
}
protected void logTickTime(long nanos) {}
@@ -1466,9 +1454,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.getPlayerList().getPlayers().forEach((entityplayer) -> {
entityplayer.connection.suspendFlushing();
});
- MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper
this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit
- MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
@@ -1485,21 +1471,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
this.profiler.push("commandFunctions");
- MinecraftTimings.commandFunctionsTimer.startTiming(); // Spigot // Paper
this.getFunctions().tick();
- MinecraftTimings.commandFunctionsTimer.stopTiming(); // Spigot // Paper
this.profiler.popPush("levels");
//Iterator iterator = this.getAllLevels().iterator(); // Paper - moved down
// CraftBukkit start
// Run tasks that are waiting on processing
- MinecraftTimings.processQueueTimer.startTiming(); // Spigot
while (!this.processQueue.isEmpty()) {
this.processQueue.remove().run();
}
- MinecraftTimings.processQueueTimer.stopTiming(); // Spigot
- MinecraftTimings.timeUpdateTimer.startTiming(); // Spigot // Paper
// Send time updates to everyone, it will get the right time from the world the player is in.
// Paper start - optimize time updates
for (final ServerLevel level : this.getAllLevels()) {
@@ -1519,7 +1500,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Paper end
- MinecraftTimings.timeUpdateTimer.stopTiming(); // Spigot // Paper
this.isIteratingOverLevels = true; // Paper
Iterator iterator = this.getAllLevels().iterator(); // Paper - move down
@@ -1544,14 +1524,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.push("tick");
try {
- worldserver.timings.doTick.startTiming(); // Spigot
worldserver.tick(shouldKeepTicking);
// Paper start
for (final io.papermc.paper.chunk.SingleThreadChunkRegionManager regionManager : worldserver.getChunkSource().chunkMap.regionManagers) {
regionManager.recalculateRegions();
}
// Paper end
- worldserver.timings.doTick.stopTiming(); // Spigot
} catch (Throwable throwable) {
// Spigot Start
CrashReport crashreport;
@@ -1574,24 +1552,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isIteratingOverLevels = false; // Paper
this.profiler.popPush("connection");
- MinecraftTimings.connectionTimer.startTiming(); // Spigot
this.getConnection().tick();
- MinecraftTimings.connectionTimer.stopTiming(); // Spigot
this.profiler.popPush("players");
- MinecraftTimings.playerListTimer.startTiming(); // Spigot // Paper
this.playerList.tick();
- MinecraftTimings.playerListTimer.stopTiming(); // Spigot // Paper
if (SharedConstants.IS_RUNNING_IN_IDE) {
GameTestTicker.SINGLETON.tick();
}
this.profiler.popPush("server gui refresh");
- MinecraftTimings.tickablesTimer.startTiming(); // Spigot // Paper
for (int i = 0; i < this.tickables.size(); ++i) {
((Runnable) this.tickables.get(i)).run();
}
- MinecraftTimings.tickablesTimer.stopTiming(); // Spigot // Paper
this.profiler.popPush("send chunks");
iterator = this.playerList.getPlayers().iterator();
@@ -2779,34 +2751,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1399,34 +1393,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return;
}
@@ -1084,8 +932,8 @@ index 8ac996335015e5d494886f29921c4c3362659daa..1a375701b6ba43825af59f1dcc966633
+ overuse = 10L * 1000L * 1000L; // 10ms
}
+
+ double overuseCount = (double) overuse / (double) MAX_CHUNK_EXEC_TIME;
+ long extraSleep = (long) Math.round(overuseCount * CHUNK_TASK_QUEUE_BACKOFF_MIN_TIME);
+ double overuseCount = (double)overuse/(double)MAX_CHUNK_EXEC_TIME;
+ long extraSleep = (long)Math.round(overuseCount*CHUNK_TASK_QUEUE_BACKOFF_MIN_TIME);
+
+ lastMidTickExecute = currTime + extraSleep;
+ return;
@@ -1095,21 +943,125 @@ index 8ac996335015e5d494886f29921c4c3362659daa..1a375701b6ba43825af59f1dcc966633
}
}
// Paper end - execute chunk tasks mid tick
diff --git a/src/main/java/net/minecraft/server/ServerFunctionManager.java b/src/main/java/net/minecraft/server/ServerFunctionManager.java
index d10abd28c522612934aada8124e5bb67a9b4e9da..4a87d5d7f0bfa777ba311ac021d887847aeaf335 100644
--- a/src/main/java/net/minecraft/server/ServerFunctionManager.java
+++ b/src/main/java/net/minecraft/server/ServerFunctionManager.java
@@ -97,7 +97,7 @@ public class ServerFunctionManager {
} else {
int i;
@@ -1501,15 +1490,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
- try (co.aikar.timings.Timing timing = function.getTiming().startTiming()) { // Paper
+ try { // Paper
this.context = new ServerFunctionManager.ExecutionContext(tracer);
i = this.context.runTopCommand(customfunction1, source);
} finally {
public void tickServer(BooleanSupplier shouldKeepTicking) {
- co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper
long i = Util.getNanos();
// Paper start - move oversleep into full server tick
- isOversleep = true;MinecraftTimings.serverOversleep.startTiming();
+ isOversleep = true;
this.managedBlock(() -> {
return !this.canOversleep();
});
- isOversleep = false;MinecraftTimings.serverOversleep.stopTiming();
+ isOversleep = false;
// Paper end
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper
@@ -1546,9 +1534,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end
io.papermc.paper.util.CachedLists.reset(); // Paper
// Paper start - move executeAll() into full server tick timing
- try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) {
- this.runAllTasks();
- }
+ this.runAllTasks();
// Paper end
// Paper start
long endTime = System.nanoTime();
@@ -1573,7 +1559,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.logTickTime(l - i);
this.profiler.pop();
org.spigotmc.WatchdogThread.tick(); // Spigot
- co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper
}
private int computeNextAutosaveInterval() {
@@ -1635,9 +1620,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.getPlayerList().getPlayers().forEach((entityplayer) -> {
entityplayer.connection.suspendFlushing();
});
- MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper
this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit
- MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
@@ -1654,21 +1637,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
this.profiler.push("commandFunctions");
- MinecraftTimings.commandFunctionsTimer.startTiming(); // Spigot // Paper
this.getFunctions().tick();
- MinecraftTimings.commandFunctionsTimer.stopTiming(); // Spigot // Paper
this.profiler.popPush("levels");
//Iterator iterator = this.getAllLevels().iterator(); // Paper - moved down
// CraftBukkit start
// Run tasks that are waiting on processing
- MinecraftTimings.processQueueTimer.startTiming(); // Spigot
while (!this.processQueue.isEmpty()) {
this.processQueue.remove().run();
}
- MinecraftTimings.processQueueTimer.stopTiming(); // Spigot
- MinecraftTimings.timeUpdateTimer.startTiming(); // Spigot // Paper
// Send time updates to everyone, it will get the right time from the world the player is in.
// Paper start - optimize time updates
for (final ServerLevel level : this.getAllLevels()) {
@@ -1688,7 +1666,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Paper end
- MinecraftTimings.timeUpdateTimer.stopTiming(); // Spigot // Paper
this.isIteratingOverLevels = true; // Paper
Iterator iterator = this.getAllLevels().iterator(); // Paper - move down
@@ -1713,14 +1690,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.push("tick");
try {
- worldserver.timings.doTick.startTiming(); // Spigot
worldserver.tick(shouldKeepTicking);
// Paper start
for (final io.papermc.paper.chunk.SingleThreadChunkRegionManager regionManager : worldserver.getChunkSource().chunkMap.regionManagers) {
regionManager.recalculateRegions();
}
// Paper end
- worldserver.timings.doTick.stopTiming(); // Spigot
} catch (Throwable throwable) {
// Spigot Start
CrashReport crashreport;
@@ -1743,24 +1718,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isIteratingOverLevels = false; // Paper
this.profiler.popPush("connection");
- MinecraftTimings.connectionTimer.startTiming(); // Spigot // Paper
this.getConnection().tick();
- MinecraftTimings.connectionTimer.stopTiming(); // Spigot // Paper
this.profiler.popPush("players");
- MinecraftTimings.playerListTimer.startTiming(); // Spigot // Paper
this.playerList.tick();
- MinecraftTimings.playerListTimer.stopTiming(); // Spigot // Paper
if (SharedConstants.IS_RUNNING_IN_IDE && this.tickRateManager.runsNormally()) {
GameTestTicker.SINGLETON.tick();
}
this.profiler.popPush("server gui refresh");
- MinecraftTimings.tickablesTimer.startTiming(); // Spigot // Paper
for (int i = 0; i < this.tickables.size(); ++i) {
((Runnable) this.tickables.get(i)).run();
}
- MinecraftTimings.tickablesTimer.stopTiming(); // Spigot // Paper
this.profiler.popPush("send chunks");
iterator = this.playerList.getPlayers().iterator();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 190d2fb23f2d7ef476a8051f1f0a86400f902652..c19be54aa4294c6abce23761043f369f324a7a71 100644
index 5a07dad83602425b35f480cf8a31ed328cdfe640..11d26f4a84792019ce9ad6886bd96214cd73a320 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -58,7 +58,6 @@ import org.apache.logging.log4j.Level;
@@ -1136,7 +1088,7 @@ index 190d2fb23f2d7ef476a8051f1f0a86400f902652..c19be54aa4294c6abce23761043f369f
}
@Override
@@ -775,21 +772,9 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -776,21 +773,9 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
// Paper start
command.set(event.getCommand());
@@ -1322,10 +1274,10 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..d9a33968fa0f1aa5def297f34ba1dbf2
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42e9caf07e 100644
index 6e212f672579a3e08dc362c287be59ca5170d717..1f07d7cc8e15d54bc7841454aa47c8e51d77ea86 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -295,10 +295,8 @@ public class ServerChunkCache extends ChunkSource {
@@ -293,10 +293,8 @@ public class ServerChunkCache extends ChunkSource {
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.pushChunkWait(this.level, x1, z1); // Paper - rewrite chunk system
// Paper end
com.destroystokyo.paper.io.SyncLoadFinder.logSyncLoad(this.level, x1, z1); // Paper - sync load info
@@ -1336,7 +1288,7 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42
} // Paper
ichunkaccess = (ChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> {
return ichunkaccess1;
@@ -447,17 +445,13 @@ public class ServerChunkCache extends ChunkSource {
@@ -445,17 +443,13 @@ public class ServerChunkCache extends ChunkSource {
public void save(boolean flush) {
this.runDistanceManagerUpdates();
@@ -1355,7 +1307,7 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42
}
// Paper end
@@ -487,22 +481,16 @@ public class ServerChunkCache extends ChunkSource {
@@ -485,23 +479,17 @@ public class ServerChunkCache extends ChunkSource {
@Override
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
this.level.getProfiler().push("purge");
@@ -1369,6 +1321,7 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42
this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes
this.tickChunks();
- this.level.timings.chunks.stopTiming(); // Paper - timings
this.chunkMap.tick();
}
- this.level.timings.doChunkUnload.startTiming(); // Spigot
@@ -1378,39 +1331,43 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42
this.level.getProfiler().pop();
this.clearCache();
}
@@ -525,7 +513,6 @@ public class ServerChunkCache extends ChunkSource {
boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
@@ -516,7 +504,6 @@ public class ServerChunkCache extends ChunkSource {
gameprofilerfiller.push("naturalSpawnCount");
gameprofilerfiller.push("pollingChunks");
gameprofilerfiller.push("filteringLoadedChunks");
- if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper
// Paper start - optimise chunk tick iteration
ChunkMap playerChunkMap = this.chunkMap;
@@ -556,7 +543,6 @@ public class ServerChunkCache extends ChunkSource {
if (this.level.getServer().tickRateManager().runsNormally()) {
gameprofilerfiller.popPush("naturalSpawnCount");
- this.level.timings.countNaturalMobs.startTiming(); // Paper - timings
int l = this.distanceManager.getNaturalSpawnChunkCount();
int k = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
NaturalSpawner.SpawnState spawnercreature_d; // moved down
@@ -549,13 +536,11 @@ public class ServerChunkCache extends ChunkSource {
spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false);
int naturalSpawnChunkCount = k;
@@ -581,7 +567,6 @@ public class ServerChunkCache extends ChunkSource {
spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false);
}
// Paper end
- this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings
this.lastSpawnState = spawnercreature_d;
gameprofilerfiller.popPush("filteringLoadedChunks");
// Paper - optimise chunk tick iteration
// Paper - optimise chunk tick iteration
- this.level.timings.chunkTicks.startTiming(); // Paper
// Paper - optimise chunk tick iteration
@@ -661,17 +646,12 @@ public class ServerChunkCache extends ChunkSource {
gameprofilerfiller.popPush("spawnAndTick");
@@ -688,19 +673,14 @@ public class ServerChunkCache extends ChunkSource {
}
}
// Paper end - optimise chunk tick iteration
- this.level.timings.chunkTicks.stopTiming(); // Paper
gameprofilerfiller.popPush("customSpawners");
if (flag2) {
if (flag) {
- try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings
this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies);
- } // Paper - timings
}
}
gameprofilerfiller.popPush("broadcast");
- // Paper - optimise chunk tick iteration
@@ -1418,7 +1375,7 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42
// Paper start - optimise chunk tick iteration
if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) {
it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<ChunkHolder> copy = this.chunkMap.needsChangeBroadcasting.clone();
@@ -685,8 +665,6 @@ public class ServerChunkCache extends ChunkSource {
@@ -714,8 +694,6 @@ public class ServerChunkCache extends ChunkSource {
}
}
// Paper end - optimise chunk tick iteration
@@ -1426,9 +1383,9 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..a8df45f925546dc584e32a4038eebc42
- // Paper - optimise chunk tick iteration
gameprofilerfiller.pop();
gameprofilerfiller.pop();
this.chunkMap.tick();
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2ca831989 100644
index b78a9628a88f2a495ef6de74446a02a14d41a1f6..bfd670484fc58f8b6edd8d6d1065fe808bc777e4 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1,7 +1,6 @@
@@ -1439,70 +1396,48 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
import com.google.common.collect.Lists;
import com.mojang.datafixers.DataFixer;
import com.mojang.datafixers.util.Pair;
@@ -132,12 +131,10 @@ import net.minecraft.world.level.chunk.storage.EntityStorage;
import net.minecraft.world.level.dimension.BuiltinDimensionTypes;
import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.dimension.end.EndDragonFight;
-import net.minecraft.world.level.entity.EntityPersistentStorage;
import net.minecraft.world.level.entity.EntityTickList;
import net.minecraft.world.level.entity.EntityTypeTest;
import net.minecraft.world.level.entity.LevelCallback;
import net.minecraft.world.level.entity.LevelEntityGetter;
-import net.minecraft.world.level.entity.PersistentEntitySectionManager;
import net.minecraft.world.level.gameevent.DynamicGameEventListener;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraft.world.level.gameevent.GameEventDispatcher;
@@ -168,12 +165,10 @@ import org.bukkit.Location;
import org.bukkit.WeatherType;
import org.bukkit.craftbukkit.event.CraftEventFactory;
import org.bukkit.craftbukkit.generator.CustomWorldChunkManager;
-import org.bukkit.craftbukkit.util.CraftNamespacedKey;
import org.bukkit.craftbukkit.util.WorldUUID;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.server.MapInitializeEvent;
import org.bukkit.event.weather.LightningStrikeEvent;
-import org.bukkit.event.world.GenericGameEvent;
import org.bukkit.event.world.TimeSkipEvent;
// CraftBukkit end
import it.unimi.dsi.fastutil.ints.IntArrayList; // Paper
@@ -835,7 +830,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.updateSkyBrightness();
this.tickTime();
@@ -846,7 +845,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.popPush("tickPending");
- this.timings.scheduledBlocks.startTiming(); // Paper
if (!this.isDebug()) {
if (!this.isDebug() && flag) {
j = this.getGameTime();
gameprofilerfiller.push("blockTicks");
@@ -844,20 +838,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -855,24 +853,17 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.fluidTicks.tick(j, 65536, this::tickFluid);
gameprofilerfiller.pop();
}
- this.timings.scheduledBlocks.stopTiming(); // Paper
gameprofilerfiller.popPush("raid");
if (flag) {
- this.timings.raids.startTiming(); // Paper - timings
this.raids.tick();
- this.timings.raids.stopTiming(); // Paper - timings
}
gameprofilerfiller.popPush("chunkSource");
- this.timings.chunkProviderTick.startTiming(); // Paper - timings
this.getChunkSource().tick(shouldKeepTicking, true);
- this.timings.chunkProviderTick.stopTiming(); // Paper - timings
gameprofilerfiller.popPush("blockEvents");
if (flag) {
- this.timings.doSounds.startTiming(); // Spigot
this.runBlockEvents();
- this.timings.doSounds.stopTiming(); // Spigot
this.handlingTick = false;
gameprofilerfiller.pop();
boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
@@ -868,7 +855,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
if (flag || this.emptyTime++ < 300) {
this.handlingTick = false;
@@ -885,7 +876,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (flag1 || this.emptyTime++ < 300) {
gameprofilerfiller.push("entities");
- this.timings.tickEntities.startTiming(); // Spigot
if (this.dragonFight != null) {
if (this.dragonFight != null && flag) {
gameprofilerfiller.push("dragonFight");
this.dragonFight.tick();
@@ -876,7 +862,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -893,7 +883,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
@@ -1510,7 +1445,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
this.entityTickList.forEach((entity) -> {
if (!entity.isRemoved()) {
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
@@ -903,8 +888,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -920,8 +909,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
});
@@ -1519,15 +1454,15 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
gameprofilerfiller.pop();
this.tickBlockEntities();
}
@@ -1016,7 +999,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1034,7 +1021,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
} // Paper
// Paper start - optimise random block ticking
gameprofilerfiller.popPush("tickBlocks");
- timings.chunkTicksBlocks.startTiming(); // Paper
if (randomTickSpeed > 0) {
// Paper start - optimize random block ticking
LevelChunkSection[] sections = chunk.getSections();
final int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this);
@@ -1049,7 +1031,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1068,7 +1054,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper end - optimise random block ticking
@@ -1535,7 +1470,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
gameprofilerfiller.pop();
}
@@ -1357,9 +1338,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1381,9 +1366,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
currentlyTickingEntity.lazySet(entity);
}
// Paper end - log detailed entity tick information
@@ -1545,7 +1480,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
/*if (!org.spigotmc.ActivationRange.checkIfActive(entity)) { // Paper - comment out - EAR 2, reimplement below
entity.tickCount++;
timer = entity.getType().inactiveTickTimer.startTiming(); try { // Paper - timings
@@ -1368,11 +1347,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1392,11 +1375,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
return;
}*/ // Paper - comment out EAR 2
// Spigot end
@@ -1557,7 +1492,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
entity.setOldPosAndRot();
ProfilerFiller gameprofilerfiller = this.getProfiler();
@@ -1382,12 +1357,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1406,12 +1385,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
});
gameprofilerfiller.incrementCounter("tickNonPassenger");
if (isActive) { // Paper - EAR 2
@@ -1570,7 +1505,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
Iterator iterator = entity.getPassengers().iterator();
while (iterator.hasNext()) {
@@ -1410,8 +1383,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1434,8 +1411,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (passenger instanceof Player || this.entityTickList.contains(passenger)) {
// Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
@@ -1579,7 +1514,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -1440,8 +1411,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1464,8 +1439,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.tickPassenger(passenger, entity2);
}
@@ -1588,7 +1523,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
}
} else {
passenger.stopRiding();
@@ -1461,26 +1430,22 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1485,26 +1458,22 @@ public class ServerLevel extends Level implements WorldGenLevel {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld()));
}
@@ -1627,7 +1562,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
}
// Paper end
@@ -1494,7 +1459,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1518,7 +1487,6 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (!savingDisabled) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit
@@ -1635,7 +1570,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
if (progressListener != null) {
progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel"));
}
@@ -1504,11 +1468,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1528,11 +1496,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
progressListener.progressStage(Component.translatable("menu.savingChunks"));
}
@@ -1648,10 +1583,10 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..c3291b40ed73790a94db34efd683cfa2
} else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 65bb221993147a558995b36fb835f7b82e0eb4bd..fb5f3745dd9435aa20b159caf8a3d0d53b0de340 100644
index 9073db9ad3627633f46314ae936d584fa400a9ce..b0455f7afc1b35102ec85d3c8557433946fe5cf3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2389,7 +2389,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2391,7 +2391,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void handleCommand(String s) { // Paper - private -> public
org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher
@@ -1659,7 +1594,7 @@ index 65bb221993147a558995b36fb835f7b82e0eb4bd..fb5f3745dd9435aa20b159caf8a3d0d5
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
@@ -2399,20 +2398,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2401,20 +2400,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.cserver.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@@ -1682,7 +1617,7 @@ index 65bb221993147a558995b36fb835f7b82e0eb4bd..fb5f3745dd9435aa20b159caf8a3d0d5
}
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 33abcf12b4426572b74ca4c813e4392c823494bc..733170a3666e74bd87f6a50fda2d00529a08c55f 100644
index a35638a92479b90afa89cf201fc45b49c9e767f3..cd4e8facc10796fbb68141994b7fed5ca379f1a4 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1,6 +1,5 @@
@@ -1692,7 +1627,7 @@ index 33abcf12b4426572b74ca4c813e4392c823494bc..733170a3666e74bd87f6a50fda2d0052
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -1232,7 +1231,6 @@ public abstract class PlayerList {
@@ -1230,7 +1229,6 @@ public abstract class PlayerList {
public void saveAll(int interval) {
io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main
@@ -1700,7 +1635,7 @@ index 33abcf12b4426572b74ca4c813e4392c823494bc..733170a3666e74bd87f6a50fda2d0052
int numSaved = 0;
long now = MinecraftServer.currentTick;
for (int i = 0; i < this.players.size(); ++i) {
@@ -1243,7 +1241,6 @@ public abstract class PlayerList {
@@ -1241,7 +1239,6 @@ public abstract class PlayerList {
}
// Paper end
}
@@ -1709,10 +1644,10 @@ index 33abcf12b4426572b74ca4c813e4392c823494bc..733170a3666e74bd87f6a50fda2d0052
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index 73871f456a85bda1e51f54986d0e61fb629822e8..7dbb55953ce9fb489c8a6706bc8a64fd3fe0e2a3 100644
index 940b8d0b89d7e55c938aefbe80ee71b0db3dacb8..068a22bd9ee64ed153b7eedbfad9252adf87cb89 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -327,10 +327,6 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -331,10 +331,6 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
this(factory, spawnGroup, saveable, summonable, fireImmune, spawnableFarFromPlayer, canSpawnInside, dimensions, maxTrackDistance, trackTickInterval, requiredFeatures, "custom");
}
public EntityType(EntityType.EntityFactory<T> factory, MobCategory spawnGroup, boolean saveable, boolean summonable, boolean fireImmune, boolean spawnableFarFromPlayer, ImmutableSet<Block> canSpawnInside, EntityDimensions dimensions, int maxTrackDistance, int trackTickInterval, FeatureFlagSet requiredFeatures, String id) {
@@ -1723,7 +1658,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..7dbb55953ce9fb489c8a6706bc8a64fd
// Paper end
this.builtInRegistryHolder = BuiltInRegistries.ENTITY_TYPE.createIntrusiveHolder(this);
this.factory = factory;
@@ -685,12 +681,6 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -689,12 +685,6 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
return this.updateInterval;
}
@@ -1737,7 +1672,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..7dbb55953ce9fb489c8a6706bc8a64fd
return this != EntityType.PLAYER && this != EntityType.LLAMA_SPIT && this != EntityType.WITHER && this != EntityType.BAT && this != EntityType.ITEM_FRAME && this != EntityType.GLOW_ITEM_FRAME && this != EntityType.LEASH_KNOT && this != EntityType.PAINTING && this != EntityType.END_CRYSTAL && this != EntityType.EVOKER_FANGS;
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 87134e57a57df0fceda903e35d22f3f2de31adf3..aab9cc7bb9913f30161a78bfdf7e0258a5cabedf 100644
index 45b1a182acf6b2aef40b714d31ca125d8f74619a..ae1ffb1bc4535f393f40be60571446f66c7ebe16 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
@@ -1824,7 +1759,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..b68c69a7ab71926ecf478d8daa5ec5ac
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c298809aef35a0 100644
index 0b56e5f7f18fc4286992af22d402205b771165a3..d1f19c87d6112e7ab9afa5c2e6d6ec529b351d24 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1,10 +1,7 @@
@@ -1846,15 +1781,15 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c29880
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Holder;
@@ -36,7 +32,6 @@ import net.minecraft.server.level.FullChunkStatus;
import net.minecraft.server.level.ServerLevel;
@@ -38,7 +34,6 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
-import net.minecraft.util.AbortableIterationConsumer;
import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import net.minecraft.util.profiling.ProfilerFiller;
@@ -44,8 +39,6 @@ import net.minecraft.world.DifficultyInstance;
@@ -47,8 +42,6 @@ import net.minecraft.world.TickRateManager;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageSources;
import net.minecraft.world.entity.Entity;
@@ -1863,7 +1798,7 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c29880
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
@@ -91,17 +84,14 @@ import net.minecraft.network.protocol.game.ClientboundSetBorderSizePacket;
@@ -94,17 +87,14 @@ import net.minecraft.network.protocol.game.ClientboundSetBorderSizePacket;
import net.minecraft.network.protocol.game.ClientboundSetBorderWarningDelayPacket;
import net.minecraft.network.protocol.game.ClientboundSetBorderWarningDistancePacket;
import org.bukkit.Bukkit;
@@ -1881,7 +1816,7 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c29880
// CraftBukkit end
public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -176,7 +166,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -179,7 +169,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
// Paper end
public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
@@ -1889,7 +1824,7 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c29880
public static BlockPos lastPhysicsProblem; // Spigot
private org.spigotmc.TickLimiter entityLimiter;
private org.spigotmc.TickLimiter tileLimiter;
@@ -292,7 +281,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -295,7 +284,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public void onBorderSetDamageSafeZOne(WorldBorder border, double safeZoneRadius) {}
});
// CraftBukkit end
@@ -1897,7 +1832,7 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c29880
this.keepSpawnInMemory = this.paperConfig().spawn.keepSpawnLoaded; // Paper
this.entityLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.entityMaxTickTime);
this.tileLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.tileMaxTickTime);
@@ -1256,15 +1244,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1265,15 +1253,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
ProfilerFiller gameprofilerfiller = this.getProfiler();
gameprofilerfiller.push("blockEntities");
@@ -1911,9 +1846,9 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..b197d4c4a031c020e3994190f0c29880
- this.timings.tileEntityTick.startTiming(); // Spigot
// Spigot start
// Iterator iterator = this.blockEntityTickers.iterator();
int tilesThisCycle = 0;
@@ -1297,9 +1282,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
// Iterator<TickingBlockEntity> iterator = this.blockEntityTickers.iterator();
boolean flag = this.tickRateManager().runsNormally();
@@ -1308,9 +1293,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
this.blockEntityTickers.removeAll(toRemove);
@@ -1944,10 +1879,10 @@ index 3cdddda9c0618e95288b81b975d499c8dd30c05f..aec5396b7dea8ba45f82f487719d42a1
}
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index d4cbff18adb62073a1dceb189043789620af6877..3ed0c227e1df184a84ecf1bdde9c598fabc329c7 100644
index 4d50dd92a7f3187ee1d8edb926e7c273c8156549..a0c43e8c65b6ab78b24d1514dace8d1d7ae56bd1 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -101,13 +101,6 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -103,13 +103,6 @@ public class Block extends BlockBehaviour implements ItemLike {
this != Blocks.STRUCTURE_BLOCK &&
this != Blocks.JIGSAW;
}
@@ -2019,7 +1954,7 @@ index fa170cc1ce7011d201295b89718292d696c7fc24..6b47cd3dfd0b7a9fc670522d8591e2f4
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 3c53be7f4cd162b8f7b808431ad36e7289e1aeb5..6ba8a91ba676d371c286014d1474e949108c8dee 100644
index 0815d354bbcb3ce2e263690f71f32c320fe3d1d2..e815dc2a36343925150c3bcb3a0ef6fded1bc955 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -343,8 +343,8 @@ public class Main {
@@ -2156,11 +2091,11 @@ index ea26d9464644b5217879b8c21b4da28e57708dcb..e4868e83cd7883408c598f2dcc3f9f4e
long getCreatedAt() {
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
index 891f850ea99dac1433f3e395e26be14c8abf2bfb..b1a3b4d7577a8abb5582a0123c972e0a60ee7840 100644
index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..e9798517b9211c50a20ea5c69603aab35f614f02 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
@@ -115,16 +115,9 @@ public final class CraftScoreboardManager implements ScoreboardManager {
public void getScoreboardScores(ObjectiveCriteria criteria, String name, Consumer<Score> consumer) {
public void forAllObjectives(ObjectiveCriteria criteria, ScoreHolder holder, Consumer<ScoreAccess> consumer) {
// Paper start - add timings for scoreboard search
// plugins leaking scoreboards will make this very expensive, let server owners debug it easily
- co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.startTimingIfSync();
@@ -2168,7 +2103,7 @@ index 891f850ea99dac1433f3e395e26be14c8abf2bfb..b1a3b4d7577a8abb5582a0123c972e0a
- // Paper end - add timings for scoreboard search
for (CraftScoreboard scoreboard : this.scoreboards) {
Scoreboard board = scoreboard.board;
board.forAllObjectives(criteria, name, (score) -> consumer.accept(score));
board.forAllObjectives(criteria, holder, (score) -> consumer.accept(score));
}
- } finally { // Paper start - add timings for scoreboard search
- co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.stopTimingIfSync();
@@ -2177,10 +2112,10 @@ index 891f850ea99dac1433f3e395e26be14c8abf2bfb..b1a3b4d7577a8abb5582a0123c972e0a
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 548c77592a3520e8053483644eba805079a14f1a..02341fc8d2877a1f057567b3ea287938139e4a91 100644
index ec2396f0e5d62b10450eaa7239a8c5479638b3c3..995ae8f2f76bf0255d7eac4190c5b961bfb17f24 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -214,7 +214,6 @@ public final class CraftMagicNumbers implements UnsafeValues {
@@ -212,7 +212,6 @@ public final class CraftMagicNumbers implements UnsafeValues {
// Paper start
@Override
public void reportTimings() {

View File

@@ -31,10 +31,10 @@ index 46954db7ecd35ac4018fdf476df7c8020d7ce6c8..044c51ebb058fc36074fd178929e3279
public PlayerAreaMap() {
super();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index fece91254b10b59474056aa730fd420f90cd7bec..2f18ce5769a39aeecaf36b6f7419aee9fac3bc32 100644
index 9abe817ae202edaa2d88cd59ae5c7db0b1c634be..a260235364b7acaac5ffa28234400ee907a4889b 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -417,6 +417,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -422,6 +422,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
private UUID originWorld;
public boolean freezeLocked = false; // Paper - Freeze Tick Lock API
public boolean collidingWithWorldBorder; // Paper
@@ -42,15 +42,15 @@ index fece91254b10b59474056aa730fd420f90cd7bec..2f18ce5769a39aeecaf36b6f7419aee9
public boolean fixedPose = false; // Paper
public void setOrigin(@javax.annotation.Nonnull Location location) {
@@ -2455,6 +2456,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
nbt.putBoolean("Paper.FreezeLock", true);
@@ -2478,6 +2479,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
nbttagcompound.putBoolean("Paper.FreezeLock", true);
}
// Paper end
+ nbt.put("Leaves.Data", leavesData); // Leaves - leaves ex data
return nbt;
+ nbttagcompound.put("Leaves.Data", leavesData); // Leaves - leaves ex data
return nbttagcompound;
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
@@ -2602,6 +2604,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -2625,6 +2627,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
freezeLocked = nbt.getBoolean("Paper.FreezeLock");
}
// Paper end
@@ -62,7 +62,7 @@ index fece91254b10b59474056aa730fd420f90cd7bec..2f18ce5769a39aeecaf36b6f7419aee9
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT");
@@ -4874,4 +4881,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -4916,4 +4923,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this);
}
// Paper end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Server Config And Command
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 1a375701b6ba43825af59f1dcc966633459adf29..d6f913b7bc79d2ffaa994b60d4a8252a296d852c 100644
index a67ddd1ca3f18e6754dd52d9f34e5d2e850760e0..fe547d04abece42bdc0d0897e2d3f2e6c190c455 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1095,6 +1095,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1143,6 +1143,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("Done ({})! For help, type \"help\"", doneTime);
// Paper end
@@ -17,7 +17,7 @@ index 1a375701b6ba43825af59f1dcc966633459adf29..d6f913b7bc79d2ffaa994b60d4a8252a
org.spigotmc.WatchdogThread.hasStarted = true; // Paper
Arrays.fill( this.recentTps, 20 );
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index c19be54aa4294c6abce23761043f369f324a7a71..e7df4b05736378b3cc437a07f072e98262a10477 100644
index 11d26f4a84792019ce9ad6886bd96214cd73a320..fd89dfb3f2ceab015b74d7e3a061973e590cedd5 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -219,6 +219,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -48,10 +48,10 @@ index 8c942c21dc3aebcd2fc89b5bde92c73a95bdc3e3..c3d1d7b525a6f2b708144ebe9bc28dfa
private GossipType(String key, int multiplier, int maxReputation, int decay, int shareDecrement) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index b197d4c4a031c020e3994190f0c298809aef35a0..8ba39643a843a1df9bb22e5949cbee9ebdfee197 100644
index d1f19c87d6112e7ab9afa5c2e6d6ec529b351d24..1c4a75b556be384807cbc26e7ee8b580412eebf3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -166,6 +166,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -169,6 +169,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
// Paper end
public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
@@ -59,7 +59,7 @@ index b197d4c4a031c020e3994190f0c298809aef35a0..8ba39643a843a1df9bb22e5949cbee9e
public static BlockPos lastPhysicsProblem; // Spigot
private org.spigotmc.TickLimiter entityLimiter;
private org.spigotmc.TickLimiter tileLimiter;
@@ -202,6 +203,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -205,6 +206,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper
@@ -68,10 +68,10 @@ index b197d4c4a031c020e3994190f0c298809aef35a0..8ba39643a843a1df9bb22e5949cbee9e
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index dc60dda029bd28dac7b31e2998d178e7f1453a81..a250171851caa2dea909869c2e58b814133ba291 100644
index 057b5fd0fd4f5dc2340cd80f316703edc1f88cae..04d9a1838f1c47c83eb94ea85e46d689c83a679a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1041,6 +1041,7 @@ public final class CraftServer implements Server {
@@ -1036,6 +1036,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
@@ -79,7 +79,7 @@ index dc60dda029bd28dac7b31e2998d178e7f1453a81..a250171851caa2dea909869c2e58b814
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1056,6 +1057,7 @@ public final class CraftServer implements Server {
@@ -1051,6 +1052,7 @@ public final class CraftServer implements Server {
}
}
world.spigotConfig.init(); // Spigot
@@ -87,7 +87,7 @@ index dc60dda029bd28dac7b31e2998d178e7f1453a81..a250171851caa2dea909869c2e58b814
}
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1071,6 +1073,7 @@ public final class CraftServer implements Server {
@@ -1066,6 +1068,7 @@ public final class CraftServer implements Server {
this.reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
@@ -95,7 +95,7 @@ index dc60dda029bd28dac7b31e2998d178e7f1453a81..a250171851caa2dea909869c2e58b814
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -2977,6 +2980,14 @@ public final class CraftServer implements Server {
@@ -3009,6 +3012,14 @@ public final class CraftServer implements Server {
{
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
}
@@ -111,7 +111,7 @@ index dc60dda029bd28dac7b31e2998d178e7f1453a81..a250171851caa2dea909869c2e58b814
@Override
public void restart() {
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 6ba8a91ba676d371c286014d1474e949108c8dee..4169d2458f168da300946a2a64f192d3063fded6 100644
index e815dc2a36343925150c3bcb3a0ef6fded1bc955..afe922d39eeacc7916862a3287a9e97e22813dab 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -166,6 +166,14 @@ public class Main {

View File

@@ -23,10 +23,10 @@ index af86f752c33a2990405fea058b7c41c437ba9d46..bada9fae1e7178162429e1f5a1608b9c
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index d6f913b7bc79d2ffaa994b60d4a8252a296d852c..19a49358826c9fe39aeaf89348dc07b228d737c2 100644
index fe547d04abece42bdc0d0897e2d3f2e6c190c455..eb376bf0cb055fb3ddb05e5a0ff8602a0108f772 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1562,6 +1562,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1728,6 +1728,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.popPush("server gui refresh");
@@ -36,7 +36,7 @@ index d6f913b7bc79d2ffaa994b60d4a8252a296d852c..19a49358826c9fe39aeaf89348dc07b2
((Runnable) this.tickables.get(i)).run();
}
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 598f807f0d0caac98b81e0e2991f1bd497c4534e..0374cfb97e08496451d2f1d570c5fbc005f0215d 100644
index 4a712f5fc4f0b4a4434ae808c989113bee8d8634..cfecb021de2f32fbe7d49332c5df763cd7cf0529 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -115,6 +115,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -56,10 +56,10 @@ index 598f807f0d0caac98b81e0e2991f1bd497c4534e..0374cfb97e08496451d2f1d570c5fbc0
} catch (Exception ex) {
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 733170a3666e74bd87f6a50fda2d00529a08c55f..afbe41b671073232614a1de246bea30ea2a26929 100644
index cd4e8facc10796fbb68141994b7fed5ca379f1a4..937c4aefc5f24cbfe3f9c9fce3cfb2f40db5675b 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -348,6 +348,8 @@ public abstract class PlayerList {
@@ -346,6 +346,8 @@ public abstract class PlayerList {
return;
}
@@ -68,7 +68,7 @@ index 733170a3666e74bd87f6a50fda2d00529a08c55f..afbe41b671073232614a1de246bea30e
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
@@ -599,6 +601,7 @@ public abstract class PlayerList {
@@ -597,6 +599,7 @@ public abstract class PlayerList {
return this.remove(entityplayer, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())));
}
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
@@ -77,10 +77,10 @@ index 733170a3666e74bd87f6a50fda2d00529a08c55f..afbe41b671073232614a1de246bea30e
ServerLevel worldserver = entityplayer.serverLevel();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 144956403df78cb98641351fefec630ccc1258fb..98924f31ea97dbdf61dc0d59e423ba9d22b07b85 100644
index 04d9a1838f1c47c83eb94ea85e46d689c83a679a..8fa5e507214b79573506c987a7060013dbf5ac2e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -472,6 +472,7 @@ public final class CraftServer implements Server {
@@ -467,6 +467,7 @@ public final class CraftServer implements Server {
MapPalette.setMapColorCache(new CraftMapColorCache(this.logger));
}
datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper
@@ -88,7 +88,7 @@ index 144956403df78cb98641351fefec630ccc1258fb..98924f31ea97dbdf61dc0d59e423ba9d
}
public boolean getCommandBlockOverride(String command) {
@@ -1076,6 +1077,7 @@ public final class CraftServer implements Server {
@@ -1071,6 +1072,7 @@ public final class CraftServer implements Server {
top.leavesmc.leaves.LeavesConfig.registerCommands(); // Leaves - Server Command
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix gravity block duper
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 2f18ce5769a39aeecaf36b6f7419aee9fac3bc32..d4e22baadc9e58ccc0b59ae36b2266730bb0ead8 100644
index a260235364b7acaac5ffa28234400ee907a4889b..ab66958a734ff303f25e62fec21f1b250aeec5ab 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -500,38 +500,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -505,38 +505,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
public boolean updatingSectionStatus = false;
// Paper end
@@ -48,7 +48,7 @@ index 2f18ce5769a39aeecaf36b6f7419aee9fac3bc32..d4e22baadc9e58ccc0b59ae36b226673
public boolean isLegacyTrackingEntity = false;
@@ -3154,7 +3125,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -3183,7 +3154,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
this.processPortalCooldown();
@@ -58,7 +58,7 @@ index 2f18ce5769a39aeecaf36b6f7419aee9fac3bc32..d4e22baadc9e58ccc0b59ae36b226673
}
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index e6f75a9cac46c8e3ddba664a9d5b27b665a94cb4..d790c8de8c7b0bbe44c7e0eba3468b1f820fc0c0 100644
index 45c07733f03b5c11f6d8e820f65dc950c70d9a67..414c949bdfcac9e21ee958fd878a5230f3ccd5fe 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -132,11 +132,7 @@ public class FallingBlockEntity extends Entity {
@@ -88,10 +88,10 @@ index e6f75a9cac46c8e3ddba664a9d5b27b665a94cb4..d790c8de8c7b0bbe44c7e0eba3468b1f
// Paper start - Configurable EntityFallingBlock height nerf
if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) {
diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
index 41d7cff39fc37955877668337689b4b26cd8c7cf..5e0e8afa553a8dcd87dfc10a595ba10c2b3da7df 100644
index c82ebcac07033d887af499f81520982fbe5ed4f1..ef38de1c64f067250c12cceca24f68ef3a8feb74 100644
--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
@@ -53,12 +53,19 @@ public class EndPortalBlock extends BaseEntityBlock {
@@ -61,12 +61,19 @@ public class EndPortalBlock extends BaseEntityBlock {
// return; // CraftBukkit - always fire event in case plugins wish to change it
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix trading with the void
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 47bf04c95163149063d1828a02d0d86dde5fab01..379cbb8e5e0b4e990bbe71aa67c890344df7b25c 100644
index bfd670484fc58f8b6edd8d6d1065fe808bc777e4..5a864a2ac7549a01663b221624bee919947d2696 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -2754,11 +2754,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -2804,11 +2804,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Spigot end
// Spigot Start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message

View File

@@ -30,7 +30,7 @@ index 718e120c9768cf716b32d3d652f53f1dda925168..21f5c59e7e01ffefdb077d1aa9853935
@Override
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java
index 588e5ac6fc9b2d12be3bb80bc3fe50d81470c441..e79d994bb855626e740e23de564f73924a1f5098 100644
index b64ecadae45c2126b92963ac8d118dde76126ddd..04ef5989f108c164b6fafeaa40822471a2d25480 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java
@@ -45,7 +45,14 @@ public class ThrownEgg extends ThrowableItemProjectile {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fakeplayer support
diff --git a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
index 997ddf7cd0051ba67e9c4ef7da39481649303791..1e0618a12842a0250c6d095e7c1d0e73a2beaabe 100644
index 31fa6a0cb00139bfcb71f4fd30da8b736bf491f2..1ad8b58fc3e97026173727fd4bb847823942a474 100644
--- a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
+++ b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
@@ -51,6 +51,7 @@ public abstract class SimpleCriterionTrigger<T extends SimpleCriterionTrigger.Si
@@ -42,6 +42,7 @@ public abstract class SimpleCriterionTrigger<T extends SimpleCriterionTrigger.Si
}
protected void trigger(ServerPlayer player, Predicate<T> predicate) {
@@ -36,10 +36,10 @@ index c0ea20dcee8bb293df96bc6ee019e50ad6b383fd..f265b3b3736de5ff3bc1b52146d11f92
if (this.packetListener != null) {
throw new IllegalStateException("Listener already set");
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 19a49358826c9fe39aeaf89348dc07b228d737c2..fed5c2cd5bbd390e6cbf61420fdc8d7b9cab96a5 100644
index eb376bf0cb055fb3ddb05e5a0ff8602a0108f772..37af0a508cfe56f23be806d2d4100d890ad5e7ec 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -121,6 +121,7 @@ import net.minecraft.util.profiling.metrics.storage.MetricsPersister;
@@ -123,6 +123,7 @@ import net.minecraft.util.profiling.metrics.storage.MetricsPersister;
import net.minecraft.util.thread.ReentrantBlockableEventLoop;
import net.minecraft.world.Difficulty;
import net.minecraft.world.RandomSequences;
@@ -47,7 +47,7 @@ index 19a49358826c9fe39aeaf89348dc07b228d737c2..fed5c2cd5bbd390e6cbf61420fdc8d7b
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.ai.village.VillageSiege;
import net.minecraft.world.entity.npc.CatSpawner;
@@ -617,6 +618,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -665,6 +666,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end
@@ -56,7 +56,7 @@ index 19a49358826c9fe39aeaf89348dc07b228d737c2..fed5c2cd5bbd390e6cbf61420fdc8d7b
this.server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD);
this.server.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.STARTUP));
this.connection.acceptConnections();
@@ -917,6 +920,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -965,6 +968,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
MinecraftServer.LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Shutdown and don't bother finishing
@@ -65,10 +65,10 @@ index 19a49358826c9fe39aeaf89348dc07b228d737c2..fed5c2cd5bbd390e6cbf61420fdc8d7b
if (this.server != null) {
this.server.disablePlugins();
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index e38e2e5a7ddba9c140f362021b6be0b0974f7cd1..870a9c94885c983cd7a557b76cb4dbace6564b8a 100644
index f655e0ae4a287886d0291cd0089bad2000249d0f..2694f899241ad8ce06d3bcba78550af5626561ce 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -222,6 +222,11 @@ public class PlayerAdvancements {
@@ -221,6 +221,11 @@ public class PlayerAdvancements {
}
public boolean award(AdvancementHolder advancement, String criterionName) {
@@ -99,7 +99,7 @@ index d9a33968fa0f1aa5def297f34ba1dbf229ee7c32..a54e9a6a35760eae2c70eb6b9d4881ec
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c32da4d90a 100644
index 8efbbd379244e3ed54d4aba199037cc20ccd096a..5ae4f2a4138611ef4428719f27b991612cb962e8 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -95,7 +95,6 @@ import net.minecraft.util.Mth;
@@ -110,7 +110,7 @@ index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c3
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
@@ -180,6 +179,7 @@ import org.bukkit.event.player.PlayerTeleportEvent;
@@ -186,6 +185,7 @@ import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.MainHand;
@@ -118,7 +118,7 @@ index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c3
// CraftBukkit end
public class ServerPlayer extends Player {
@@ -723,15 +723,19 @@ public class ServerPlayer extends Player {
@@ -730,15 +730,19 @@ public class ServerPlayer extends Player {
}
// Paper start - Configurable container update tick rate
@@ -146,7 +146,7 @@ index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c3
Entity entity = this.getCamera();
@@ -747,7 +751,7 @@ public class ServerPlayer extends Player {
@@ -754,7 +758,7 @@ public class ServerPlayer extends Player {
}
}
@@ -155,7 +155,7 @@ index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c3
if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
}
@@ -940,7 +944,7 @@ public class ServerPlayer extends Player {
@@ -947,7 +951,7 @@ public class ServerPlayer extends Player {
List<DefaultDrop> loot = new java.util.ArrayList<>(this.getInventory().getContainerSize()); // Paper
boolean keepInventory = this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) || this.isSpectator();
@@ -164,7 +164,7 @@ index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c3
for (ItemStack item : this.getInventory().getContents()) {
if (!item.isEmpty() && !EnchantmentHelper.hasVanishingCurse(item)) {
loot.add(new DefaultDrop(item, stack -> this.drop(stack, true, false))); // Paper - drop function taken from Inventory#dropAll
@@ -1267,6 +1271,13 @@ public class ServerPlayer extends Player {
@@ -1271,6 +1275,13 @@ public class ServerPlayer extends Player {
this.lastSentHealth = -1.0F;
this.lastSentFood = -1;
@@ -179,12 +179,12 @@ index 907c8f15f5247f9972c6677ff0f9e1aa22764a04..cbf1acaae2707c42f0574ff1766957c3
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld());
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index fb5f3745dd9435aa20b159caf8a3d0d53b0de340..47f6d557df3e1f91603b0d4343f8f4e27db63326 100644
index b0455f7afc1b35102ec85d3c8557433946fe5cf3..e018fb8d2649e1e07289f12421ac0ddcf05e1c72 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -298,7 +298,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.lastSeenMessages = new LastSeenMessagesValidator(20);
this.messageSignatureCache = MessageSignatureCache.createDefault();
public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player, CommonListenerCookie clientData) {
super(server, connection, clientData, player); // CraftBukkit
this.chunkSender = new PlayerChunkSender(connection.isMemoryConnection());
- connection.setListener(this);
+ // Leaves start - fakeplayer
@@ -198,34 +198,19 @@ index fb5f3745dd9435aa20b159caf8a3d0d53b0de340..47f6d557df3e1f91603b0d4343f8f4e2
player.connection = this;
player.getTextFilter().join();
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index afbe41b671073232614a1de246bea30ea2a26929..dea28bf8e1c0f67f13cc51d9e2cc6da69ad7fcb1 100644
index 937c4aefc5f24cbfe3f9c9fce3cfb2f40db5675b..81c09a9686731953787b56c3c8a20543418941a4 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -101,6 +101,7 @@ import net.minecraft.world.scores.Objective;
import net.minecraft.world.scores.PlayerTeam;
import net.minecraft.world.scores.Scoreboard; // Paper
import net.minecraft.world.scores.Team;
+import top.leavesmc.leaves.bot.ServerBot;
import org.slf4j.Logger;
// CraftBukkit start
@@ -110,7 +111,6 @@ import org.bukkit.Location;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.entity.CraftPlayer;
-import org.bukkit.craftbukkit.util.CraftChatMessage;
import org.bukkit.craftbukkit.util.CraftLocation;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerChangedWorldEvent;
@@ -119,7 +119,6 @@ import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
-import org.bukkit.event.player.PlayerSpawnChangeEvent;
@@ -120,6 +120,8 @@ import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
import org.bukkit.event.player.PlayerSpawnChangeEvent;
// CraftBukkit end
+import top.leavesmc.leaves.bot.ServerBot;
+
public abstract class PlayerList {
@@ -350,6 +349,21 @@ public abstract class PlayerList {
public static final File USERBANLIST_FILE = new File("banned-players.json");
@@ -348,6 +350,21 @@ public abstract class PlayerList {
top.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); // Leaves - protocol
@@ -247,13 +232,13 @@ index afbe41b671073232614a1de246bea30ea2a26929..dea28bf8e1c0f67f13cc51d9e2cc6da6
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
@@ -1002,6 +1016,13 @@ public abstract class PlayerList {
@@ -1000,6 +1017,13 @@ public abstract class PlayerList {
}
// Paper end
+ // Leaves start - bot support
+ if (top.leavesmc.leaves.LeavesConfig.fakeplayerSupport) {
+ top.leavesmc.leaves.bot.ServerBot.getBots().forEach(bot1 ->
+ ServerBot.getBots().forEach(bot1 ->
+ bot1.sendFakeDataIfNeed(entityplayer1, true)); // Leaves - render bot
+ }
+ // Leaves end - bot support
@@ -261,7 +246,7 @@ index afbe41b671073232614a1de246bea30ea2a26929..dea28bf8e1c0f67f13cc51d9e2cc6da6
// CraftBukkit end
return entityplayer1;
}
@@ -1112,11 +1133,16 @@ public abstract class PlayerList {
@@ -1110,11 +1134,16 @@ public abstract class PlayerList {
}
public String[] getPlayerNamesArray() {
@@ -279,7 +264,7 @@ index afbe41b671073232614a1de246bea30ea2a26929..dea28bf8e1c0f67f13cc51d9e2cc6da6
return astring;
}
@@ -1593,4 +1619,16 @@ public abstract class PlayerList {
@@ -1593,4 +1622,16 @@ public abstract class PlayerList {
public boolean isAllowCheatsForAllPlayers() {
return this.allowCheatsForAllPlayers;
}
@@ -297,10 +282,10 @@ index afbe41b671073232614a1de246bea30ea2a26929..dea28bf8e1c0f67f13cc51d9e2cc6da6
+ // Leaves end - fakeplayer support
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d4e22baadc9e58ccc0b59ae36b2266730bb0ead8..ab1117bbc095e5935bba5e23c6232e7ec122cd1e 100644
index ab66958a734ff303f25e62fec21f1b250aeec5ab..741b090e46a34e9c7711ddebf06c12316b5ad7de 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1416,7 +1416,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1421,7 +1421,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return offsetFactor;
}
@@ -323,7 +308,7 @@ index a2093158e57d5f43c4afa66386481b82b3c4c3c4..35672105a000d87c7fe82eb65456d891
private int timeUntilHooked;
private float fishAngle;
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
index 82f18790b9dc55b039ae03600a80a46d56a87521..29d215c23dca6a6226f1c2254a0df5946485ab48 100644
index 8fd82051bba33b4703e4d99fff886b63a319a5ba..1a1736fe28014aca767aa9efdcba378be3adc8ea 100644
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -406,6 +406,8 @@ public abstract class AbstractContainerMenu {
@@ -335,7 +320,7 @@ index 82f18790b9dc55b039ae03600a80a46d56a87521..29d215c23dca6a6226f1c2254a0df594
if (actionType == ClickType.QUICK_CRAFT) {
int i1 = this.quickcraftStatus;
@@ -676,6 +678,23 @@ public abstract class AbstractContainerMenu {
@@ -680,6 +682,23 @@ public abstract class AbstractContainerMenu {
}
@@ -376,10 +361,10 @@ index dfeb3e336e06ef01f5401a362755030db942bb07..c51413bf02b3572a05f09d2f0d02493d
if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper
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 914248c017711165541a2e246cb4f61bb8267d3a..b76d078606b9c8486c1cbff240fd45e69eb9e58d 100644
index 8fa5e507214b79573506c987a7060013dbf5ac2e..a36b234f884e2aae88a29fae872aeef662b27712 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -264,6 +264,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -265,6 +265,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.error.MarkedYAMLException;
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
@@ -387,7 +372,7 @@ index 914248c017711165541a2e246cb4f61bb8267d3a..b76d078606b9c8486c1cbff240fd45e6
import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
@@ -309,6 +310,7 @@ public final class CraftServer implements Server {
@@ -310,6 +311,7 @@ public final class CraftServer implements Server {
public static Exception excessiveVelEx; // Paper - Velocity warnings
private final io.papermc.paper.logging.SysoutCatcher sysoutCatcher = new io.papermc.paper.logging.SysoutCatcher(); // Paper
private final CraftPotionBrewer potionBrewer = new CraftPotionBrewer(); // Paper
@@ -395,7 +380,7 @@ index 914248c017711165541a2e246cb4f61bb8267d3a..b76d078606b9c8486c1cbff240fd45e6
// Paper start - Folia region threading API
private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler();
@@ -3209,4 +3211,11 @@ public final class CraftServer implements Server {
@@ -3241,4 +3243,11 @@ public final class CraftServer implements Server {
}
// Paper end
@@ -408,10 +393,10 @@ index 914248c017711165541a2e246cb4f61bb8267d3a..b76d078606b9c8486c1cbff240fd45e6
+ // Leaves end - Bot API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 9f843b89dc20b91bf7243facee8486d525e4a1b3..22e22234473c601bf674f42efa81a6920c0fb344 100644
index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..801ee163a71ab2afd822c7f17bf45573c0fd83f5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -194,6 +194,8 @@ import org.bukkit.plugin.Plugin;
@@ -199,6 +199,8 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.NumberConversions;
import org.bukkit.util.Vector;
@@ -420,7 +405,7 @@ index 9f843b89dc20b91bf7243facee8486d525e4a1b3..22e22234473c601bf674f42efa81a692
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
@@ -231,7 +233,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -236,7 +238,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
if (entity instanceof LivingEntity) {
// Players
if (entity instanceof net.minecraft.world.entity.player.Player) {
@@ -986,10 +971,10 @@ index 0000000000000000000000000000000000000000..c3f114fba0759221b5fea0ccc4862f05
+}
diff --git a/src/main/java/top/leavesmc/leaves/bot/BotUtil.java b/src/main/java/top/leavesmc/leaves/bot/BotUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..be3a40e3100ec838cf8de6437cc6b1b0c454bc68
index 0000000000000000000000000000000000000000..b0ad5ed3d2a179001312733b780dd532d3b4a001
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/bot/BotUtil.java
@@ -0,0 +1,182 @@
@@ -0,0 +1,183 @@
+package top.leavesmc.leaves.bot;
+
+import com.google.common.base.Charsets;
@@ -999,6 +984,7 @@ index 0000000000000000000000000000000000000000..be3a40e3100ec838cf8de6437cc6b1b0
+import net.minecraft.core.NonNullList;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtAccounter;
+import net.minecraft.nbt.NbtIo;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.world.entity.EquipmentSlot;
@@ -1113,7 +1099,7 @@ index 0000000000000000000000000000000000000000..be3a40e3100ec838cf8de6437cc6b1b0
+ file.delete();
+ }
+ file.createNewFile();
+ NbtIo.writeCompressed(invnbt, file);
+ NbtIo.writeCompressed(invnbt, file.toPath());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
@@ -1139,7 +1125,7 @@ index 0000000000000000000000000000000000000000..be3a40e3100ec838cf8de6437cc6b1b0
+ File file = MinecraftServer.getServer().getWorldPath(LevelResource.ROOT).resolve("fakeplayer/" + getBotUUID(state) + ".dat").toFile();
+ if (file.exists()) {
+ try {
+ CompoundTag nbt = NbtIo.readCompressed(file);
+ CompoundTag nbt = NbtIo.readCompressed(file.toPath(), NbtAccounter.unlimitedHeap());
+ inv = nbt.getList("Inventory", 10);
+ } catch (IOException e) {
+ e.printStackTrace();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Redstone Shears Wrench
diff --git a/src/main/java/net/minecraft/world/item/ShearsItem.java b/src/main/java/net/minecraft/world/item/ShearsItem.java
index a6ebb08a8f9681fd3a35de5d0e268f320e31ce1a..7c3c3a28a95c58caa83e283cdbb472b2499a8f7b 100644
index 88156fa7722baa2738b908bfcd648bca371c533f..8206f105f80355fcc9061886215103bb480ab4a1 100644
--- a/src/main/java/net/minecraft/world/item/ShearsItem.java
+++ b/src/main/java/net/minecraft/world/item/ShearsItem.java
@@ -1,7 +1,9 @@

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add isShrink to EntityResurrectEvent
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index aab9cc7bb9913f30161a78bfdf7e0258a5cabedf..a03d8f8e6d025f997993a41e2a06f700aa1a1874 100644
index ae1ffb1bc4535f393f40be60571446f66c7ebe16..09cbe3db4b412176377a101e080523bafe39b916 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1613,12 +1613,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -1612,12 +1612,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;
@@ -23,7 +23,7 @@ index aab9cc7bb9913f30161a78bfdf7e0258a5cabedf..a03d8f8e6d025f997993a41e2a06f700
itemstack1.shrink(1);
}
if (itemstack != null && this instanceof ServerPlayer) {
@@ -4539,3 +4539,4 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -4543,3 +4543,4 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Budding Amethyst can push by piston
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 3ed0c227e1df184a84ecf1bdde9c598fabc329c7..065fbac30d22ec45cd3f5b66599c8500ae5c278d 100644
index a0c43e8c65b6ab78b24d1514dace8d1d7ae56bd1..3d8b39cfc50de89fda4d221ea27743508691857c 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -586,6 +586,12 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -594,6 +594,12 @@ public class Block extends BlockBehaviour implements ItemLike {
}
// Spigot end
@@ -22,10 +22,10 @@ index 3ed0c227e1df184a84ecf1bdde9c598fabc329c7..065fbac30d22ec45cd3f5b66599c8500
private final BlockState first;
diff --git a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
index 2548244c089dff583c8c424dcaa5504caedf3f10..e53624d9f2372fceab44bd1c881a6f3cf5862b8c 100644
index ee24eac5e37a2fd0c8c37365ea10d03749beb9a7..915b148e8bf5bdf6364253cf81e01b87f420d598 100644
--- a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
@@ -53,4 +53,11 @@ public class BuddingAmethystBlock extends AmethystBlock {
@@ -60,4 +60,11 @@ public class BuddingAmethystBlock extends AmethystBlock {
public static boolean canClusterGrowAtState(BlockState state) {
return state.isAir() || state.is(Blocks.WATER) && state.getFluidState().getAmount() == 8;
}
@@ -38,10 +38,10 @@ index 2548244c089dff583c8c424dcaa5504caedf3f10..e53624d9f2372fceab44bd1c881a6f3c
+ // Leaves end - budding amethyst can push by piston
}
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
index e6a4a5898ffdcb2aa2bc01371a6d7dbc06d610ce..22eae4a483b437c75082d889d4ea2904bf2093fc 100644
index 3ab8b99837b1d1faea722c598b0228b2780be8b1..3ece300f5e5d470138b54b19b3ad082504831185 100644
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -1090,7 +1090,7 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -1157,7 +1157,7 @@ public abstract class BlockBehaviour implements FeatureElement {
}
public PushReaction getPistonPushReaction() {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Spectator dont get Advancement
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index 870a9c94885c983cd7a557b76cb4dbace6564b8a..fbd602b5219c0eeefea36dbaca7aae10d483a152 100644
index 2694f899241ad8ce06d3bcba78550af5626561ce..f941e7add46e690e21d39111bed520df9156f154 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -46,6 +46,7 @@ import net.minecraft.server.level.ServerPlayer;
@@ -45,6 +45,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.PlayerList;
import net.minecraft.util.datafix.DataFixTypes;
import net.minecraft.world.level.GameRules;
@@ -16,7 +16,7 @@ index 870a9c94885c983cd7a557b76cb4dbace6564b8a..fbd602b5219c0eeefea36dbaca7aae10
import org.slf4j.Logger;
public class PlayerAdvancements {
@@ -227,6 +228,11 @@ public class PlayerAdvancements {
@@ -226,6 +227,11 @@ public class PlayerAdvancements {
return false;
}
// Leaves end - bot can't get advancement

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Stick can change ArmorStand arm status
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 1c7702a5c888846f93f8f80d3b854a26c11499be..6609f4309c2d6fac14b56dd75963d868a464c44c 100644
index 1e86e86b0a100a5d14aee10b60e70c32d2733660..18e9ee9e0c986b1174ff9529b198a839df12825f 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -386,6 +386,12 @@ public class ArmorStand extends LivingEntity {

View File

@@ -5,15 +5,14 @@ Subject: [PATCH] Fix tripwire update
diff --git a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
index 004dce26ff073f1de52a84cd425c4f60fdab5e50..22d42186973e8f0bf664c5fae261c40af2836173 100644
index a3cef4ac925d09ad8789a59b46df134cf25c282a..319ecf3d72f08630f905389df370e29d3c1a03fb 100644
--- a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
@@ -147,7 +147,7 @@ public class TripWireHookBlock extends Block {
@@ -162,7 +162,6 @@ public class TripWireHookBlock extends Block {
boolean flag7 = (Boolean) iblockdata2.getValue(TripWireBlock.POWERED);
flag5 |= flag6 && flag7;
- if (k != i || !tripWireBeingRemoved || !flag6) // Paper - don't update the tripwire again if being removed and not disarmed
+ if (k != i || true || !flag6) // Paper - don't update the tripwire again if being removed and not disarmed // Leaves - no! always update it
aiblockdata[k] = iblockdata2;
if (k == i) {
world.scheduleTick(pos, (Block) this, 10);
world.scheduleTick(pos, block, 10);

View File

@@ -41,23 +41,15 @@ index 72a8aa676836fcb3b4578689d16af65e18f55bbe..47a06936a4727c6209a7ad0fb8fb1099
public MessageSignature get(String argumentName) {
for(ArgumentSignatures.Entry entry : this.entries) {
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
index 2e395962b555bef0ce1a98e1d768e7738f011535..62558d52fc55e8a7430c2a30783223d11dc0792c 100644
index ff794499df6a2b65db2ca5956d2b98317592057f..5f3fb560a64fdcf7d6be449316c8defbb8d2bb8d 100644
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
@@ -65,6 +65,7 @@ import net.minecraft.nbt.NbtIo;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.protocol.status.ServerStatus;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Crypt;
@@ -137,6 +138,16 @@ public class FriendlyByteBuf extends ByteBuf {
@@ -138,6 +138,16 @@ public class FriendlyByteBuf extends ByteBuf {
public <T> void writeJsonWithCodec(Codec<T> codec, T value) {
DataResult<JsonElement> dataresult = codec.encodeStart(JsonOps.INSTANCE, value);
+ // Leaves start - no chat sign
+ if (codec == ServerStatus.CODEC) {
+ if (codec == net.minecraft.network.protocol.status.ServerStatus.CODEC) {
+ JsonElement element = Util.getOrThrow(dataresult, string -> new EncoderException("Failed to encode: " + string + " " + value));
+ element.getAsJsonObject().addProperty("preventsChatReports", top.leavesmc.leaves.LeavesConfig.noChatSign);
+
@@ -110,20 +102,20 @@ index 9d6db4a378036559efab91c8b7dcf2a6b0c2cce6..2c349dc502ce275a8215766933f4855f
}
}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 76592ce972f8fa508ee22a7b572759e55082e6ee..9576e2ffffa7eea64ab631aed43225719f3a7483 100644
index fd89dfb3f2ceab015b74d7e3a061973e590cedd5..4b13af14fcbe1925f9d3104d95ebbfbc596cfb3c 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -642,7 +642,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -643,7 +643,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper start - fix secure profile with proxy online mode
return dedicatedserverproperties.enforceSecureProfile
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
- && this.services.profileKeySignatureValidator() != null;
+ && this.services.profileKeySignatureValidator() != null && !top.leavesmc.leaves.LeavesConfig.noChatSign; // Leaves - No Secure profile;
- && this.services.canValidateProfileKeys();
+ && this.services.canValidateProfileKeys() && !top.leavesmc.leaves.LeavesConfig.noChatSign;
// Paper end
}
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 0374cfb97e08496451d2f1d570c5fbc005f0215d..8812c99c0d89d379eac1ea0af28bd9c78f2cf537 100644
index cfecb021de2f32fbe7d49332c5df763cd7cf0529..8cf3cce4a1824919d6687e555f4f5136120dbbcf 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -226,10 +226,27 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -155,10 +147,10 @@ index 0374cfb97e08496451d2f1d570c5fbc005f0215d..8812c99c0d89d379eac1ea0af28bd9c7
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index dea28bf8e1c0f67f13cc51d9e2cc6da69ad7fcb1..eebe80d8374b42d03b4658a0a04deafb96b06ace 100644
index 81c09a9686731953787b56c3c8a20543418941a4..59270faed37229de11291e8259f292ad43e790c5 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1480,7 +1480,7 @@ public abstract class PlayerList {
@@ -1483,7 +1483,7 @@ public abstract class PlayerList {
}
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Fix Paper#6045, block goal shouldn't load chunks
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
index 34f319ad09276c6f68dde449c79351de0d7d86f5..bbca34e70b1ee88ac77b0d8e319eedbffae3effb 100644
index 4bbc36404b396500df0d9db380cf223b5897662e..2dda876b01b34f26337f53f2b3b6a2a1110bd96a 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
@@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal {

View File

@@ -25,10 +25,10 @@ index 8240bb085b619f257f8c0a25775e0b15068e440f..5af6b3ce20afa75e1510fb70c2382045
public static long getCoordinateKey(final ChunkPos pair) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 167ac5d96c8abd67b8dc987560e792837348cae4..ff506cd04cda5b01c0c62bdec3de10adfca9f3c8 100644
index 741b090e46a34e9c7711ddebf06c12316b5ad7de..94de127e75688b6e5fa5660eb853140438258083 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -307,7 +307,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
public double yo;
public double zo;
private Vec3 position;

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize suffocation
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 086558a8476ba40fa4ce1a6d4ee48d67afbdbd63..9ffd7203b2f5f7b0a240f84056ab5af7aa0860b4 100644
index 09cbe3db4b412176377a101e080523bafe39b916..4819a159f0b0dd6a2c58be59dc22f7e77daee57e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -413,7 +413,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -412,7 +412,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
boolean flag = this instanceof net.minecraft.world.entity.player.Player;
if (!this.level().isClientSide) {
@@ -18,7 +18,7 @@ index 086558a8476ba40fa4ce1a6d4ee48d67afbdbd63..9ffd7203b2f5f7b0a240f84056ab5af7
this.hurt(this.damageSources().inWall(), 1.0F);
} else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) {
double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone();
@@ -1408,6 +1408,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -1407,6 +1407,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.getHealth() <= 0.0F;
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Only check for spooky season once an hour
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
index 5beaa849a250ea005733250ad3edfa8382224667..f124d17106edc490e90376bbbaba6912f0579d16 100644
index 6b614818b14ecfc8fc82b523eeb7e21fdf9bf1ba..0cb018795bc3f76d6a5afa4da591322d6bb5475f 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -237,13 +237,30 @@ public class Bat extends AmbientCreature {
@@ -241,13 +241,30 @@ public class Bat extends AmbientCreature {
}
}

View File

@@ -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 bb75a3d6b57c6523a95b11436ebc7577218264a0..244cf1e0b1f767a41f0a863e77b58c66ee3ff71f 100644
index 5a864a2ac7549a01663b221624bee919947d2696..eacc88d49f1c4158eb60a7b4425134fa827a6381 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -945,7 +945,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -966,7 +966,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper start - optimise random block ticking
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
@@ -19,10 +19,10 @@ index bb75a3d6b57c6523a95b11436ebc7577218264a0..244cf1e0b1f767a41f0a863e77b58c66
public void tickChunk(LevelChunk chunk, int randomTickSpeed) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 219f4c7368ce6b805f3f4cffd8e3f65b1590f7ed..b84bb2d3fa53ca66df2e0978596064f1df8e09dd 100644
index 1c4a75b556be384807cbc26e7ee8b580412eebf3..bd78938cbba3932ad740e3bd3c1507d2b952dafa 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -200,6 +200,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -203,6 +203,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public abstract ResourceKey<LevelStem> getTypeKey();
@@ -31,7 +31,7 @@ index 219f4c7368ce6b805f3f4cffd8e3f65b1590f7ed..b84bb2d3fa53ca66df2e0978596064f1
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper
@@ -293,6 +295,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -296,6 +298,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
// Paper end - optimise collisions
}

View File

@@ -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/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index a8df45f925546dc584e32a4038eebc42e9caf07e..19aec4b735a25592ae173dcb63110d6dce0381e7 100644
index 1f07d7cc8e15d54bc7841454aa47c8e51d77ea86..8a3e55b3a79a174a2a55f38d39ed4b8ba29b8763 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -509,6 +509,11 @@ public class ServerChunkCache extends ChunkSource {
@@ -503,6 +503,11 @@ public class ServerChunkCache extends ChunkSource {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
gameprofilerfiller.push("pollingChunks");
@@ -18,14 +18,14 @@ index a8df45f925546dc584e32a4038eebc42e9caf07e..19aec4b735a25592ae173dcb63110d6d
+ this.level.resetIceAndSnowTick();
+ }
+ // Leaves end - reset ice & snow tick random
int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING);
boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
gameprofilerfiller.push("filteringLoadedChunks");
// Paper start - optimise chunk tick iteration
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 9cd0a6e5080a73264ec5f379e3bce7679647bba9..dd7d27ab88b35ac4203bf48bc987dfe3205fa529 100644
index eacc88d49f1c4158eb60a7b4425134fa827a6381..62745cdb8cb2d153621dc5e4c8ebd2cbd5fc7c08 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -948,6 +948,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -969,6 +969,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
// private final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(this.random.nextLong()); // Leaves - moved to super
// Paper end
@@ -39,7 +39,7 @@ index 9cd0a6e5080a73264ec5f379e3bce7679647bba9..dd7d27ab88b35ac4203bf48bc987dfe3
public void tickChunk(LevelChunk chunk, int randomTickSpeed) {
ChunkPos chunkcoordintpair = chunk.getPos();
boolean flag = this.isRaining();
@@ -958,7 +965,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -979,7 +986,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
gameprofilerfiller.push("thunder");
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Config to disable method profiler
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8e9f72fe364bc4ad51d7a235531af09df5cdcfa9..3f4b4d905ff440eaf4a66b10ad85933c0b07dc58 100644
index 37af0a508cfe56f23be806d2d4100d890ad5e7ec..89a50e07bc79cb0d5353f5a06fa037f3942c5940 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2251,6 +2251,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2429,6 +2429,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public ProfilerFiller getProfiler() {
@@ -22,10 +22,10 @@ index 8e9f72fe364bc4ad51d7a235531af09df5cdcfa9..3f4b4d905ff440eaf4a66b10ad85933c
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index b84bb2d3fa53ca66df2e0978596064f1df8e09dd..35063fa42e9ec1d963d94b2c714b82ac30d1f67b 100644
index bd78938cbba3932ad740e3bd3c1507d2b952dafa..5dea0118e5dd49cdefd22e4386c6a3fc189cd84b 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1772,6 +1772,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1792,6 +1792,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public ProfilerFiller getProfiler() {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Throttle goal selector during inactive ticking
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index d28c477171c1b6888a45175075017d960464b5cd..48889d29c94dc09030d5c9825d3b0a637e660b0e 100644
index 5af48151159135b869ec4753bbcf79dd257c1570..339782b10101189fdf70d41330d2e793713d1544 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -220,11 +220,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -221,11 +221,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
return this.lookControl;
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Reduce entity allocations
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index ff506cd04cda5b01c0c62bdec3de10adfca9f3c8..60672f00b8355815de47f58753a4a184288fc728 100644
index 94de127e75688b6e5fa5660eb853140438258083..13d6f4e7ca613fe11e97b5a562b494ce9ce5d211 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -435,6 +435,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -440,6 +440,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return this.originWorld;
}
// Paper end

View File

@@ -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 897d7f9abacfea2aae2f6e067065c55333a0b391..dd3e223c40ff2514df5e2ca1ff5d27f42f3a0cf8 100644
index 62745cdb8cb2d153621dc5e4c8ebd2cbd5fc7c08..c78515de20c53c5c3b6727bee4972020ab23007b 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -882,7 +882,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -903,7 +903,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.push("tick");

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Cache climbing check for activation
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index f9d13ba967b68b79590e5d562f6ebe42d69edd61..76952434d4d3632261df737ab9b66c1b01fa827d 100644
index 4819a159f0b0dd6a2c58be59dc22f7e77daee57e..67bb1b03f2cf0a77f12e70e790cc3bb78ca233c1 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2012,6 +2012,22 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -2009,6 +2009,22 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.lastClimbablePos;
}

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Use aging cache for biome temperatures
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java
index 65012a12e1430956ef55ced56773e6354ac26444..fe43432da26a3570c993b5592b7b8020331bdb74 100644
index 4f9187d9d640618c40a2fa528f36b845017b4777..dda41c3e3a1a937156e36545753a03cd53d1fb3a 100644
--- a/src/main/java/net/minecraft/world/level/biome/Biome.java
+++ b/src/main/java/net/minecraft/world/level/biome/Biome.java
@@ -66,23 +66,37 @@ public final class Biome {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Reduce entity fluid lookups if no fluids
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 0231259e691d342ad8cb1306e9d35b4296a6148f..c201b92d04a48b8330182db6b0d9a0fdff4c7f92 100644
index 13d6f4e7ca613fe11e97b5a562b494ce9ce5d211..2d9af0ad73e718fe387dc0df1984c83a962319f3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -4342,16 +4342,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -4384,16 +4384,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
@@ -35,7 +35,7 @@ index 0231259e691d342ad8cb1306e9d35b4296a6148f..c201b92d04a48b8330182db6b0d9a0fd
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
@@ -4359,38 +4361,123 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -4401,38 +4403,123 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Reduce chunk loading & lookups
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index b0a97679157a18a3c623ce3b2ae315789772c254..a8867058fb09fd4c6b965b91d5f406b2a1b7035a 100644
index bd5996eef2d946e9d7765b6b315bc5951158810e..a6da5165ac20e01a9162b216cddf7b0dc040b5a9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -333,11 +333,28 @@ public class EnderMan extends Monster implements NeutralMob {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] PCA sync protocol
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
index 09e9c0e55c789f03a4b64136f28154bd114db6f5..39a9737c8e50eb729fff9956ee1b7fa34a17d589 100644
index 63bbb5723f587788a65cc1cdac4cea94d96f254b..3e3b5fae4a3eca360a1f091aa165e5d71c344c9b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
@@ -373,6 +373,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
@@ -22,7 +22,7 @@ index 09e9c0e55c789f03a4b64136f28154bd114db6f5..39a9737c8e50eb729fff9956ee1b7fa3
this.updateContainerEquipment();
diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
index 5119d070dbb04f5a4f9c2def526e33e15ca8573f..e585eca535ceb2ed28334bc3c6949fcb4881a364 100644
index 5a591c439c5cef6b7e7e6f836ab813cb4f29b08c..17cc25b6fbc85c9e0023be7e9d857b2d76f6e58c 100644
--- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
@@ -64,6 +64,15 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -42,7 +42,7 @@ index 5119d070dbb04f5a4f9c2def526e33e15ca8573f..e585eca535ceb2ed28334bc3c6949fcb
@Override
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
index 272095d7a09ab41227d741172735f66fd2798ce1..f6acbef804a50c58f4298ebeae4fdbebaf129e1c 100644
index 6d23c39e4eadf23616080d6d08672e13b5d3c37d..f86384ba4e5b5ffd26dd64e41a9af8a3f3a8da49 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java
@@ -129,7 +129,13 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme
@@ -103,7 +103,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..213bc3c11ff4ed9bc761e8153aa669d1
protected Component getDefaultName() {
return Component.translatable("container.barrel");
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
index 41c9f074203915c31c1ae7a160ce509c13383f84..4c9e84dcd154a4306659ef41ab40127ea8452835 100644
index dfd364ac4b7551a13c4c6c100b5e62c0dfb10595..5b6d31c1045ed777376af775378bec5b3ef92fc7 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
@@ -248,7 +248,7 @@ index 881379681c39230a00b3a1f11cd87498984396c7..e01eb2025458cf311348c58a15308540
protected Component getDefaultName() {
return Component.translatable("container.dispenser");
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 1d9b23c6e458caddc2c738164e6c079cd85d3ce9..88ae3b334e35ac9d0ca4238b5da3c3af1f421bd4 100644
index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..8e1201d91bac88c043de5dfdc003d20b2647af9a 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -129,6 +129,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] BBOR Protocol
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index eebe80d8374b42d03b4658a0a04deafb96b06ace..fe9110a92b690c2d3d8da171216129da20462984 100644
index 59270faed37229de11291e8259f292ad43e790c5..f1fc9282e6b1072e5c866828e0a05332490e9360 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1614,6 +1614,7 @@ public abstract class PlayerList {
@@ -1617,6 +1617,7 @@ public abstract class PlayerList {
entityplayer.getRecipeBook().sendInitialRecipeBook(entityplayer);
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] InstantBlockUpdater Reintroduced
This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition)
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 35063fa42e9ec1d963d94b2c714b82ac30d1f67b..cb62c2b8b6cdd628037b67a58b3fbf7e5f1d0284 100644
index 5dea0118e5dd49cdefd22e4386c6a3fc189cd84b..614c37b11f7820bedc576fce74829c1950ed7756 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -67,6 +67,7 @@ import net.minecraft.world.level.lighting.LevelLightEngine;
@@ -70,6 +70,7 @@ import net.minecraft.world.level.lighting.LevelLightEngine;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.level.redstone.CollectingNeighborUpdater;
@@ -17,7 +17,7 @@ index 35063fa42e9ec1d963d94b2c714b82ac30d1f67b..cb62c2b8b6cdd628037b67a58b3fbf7e
import net.minecraft.world.level.redstone.NeighborUpdater;
import net.minecraft.world.level.saveddata.maps.MapItemSavedData;
import net.minecraft.world.level.storage.LevelData;
@@ -246,7 +247,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -249,7 +250,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
this.thread = Thread.currentThread();
this.biomeManager = new BiomeManager(this, i);
this.isDebug = flag1;

View File

@@ -20,7 +20,7 @@ index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..fe8c9b7e7956837829b4fe3eb449b2c0
diff --git a/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0af99ba7bc27c27890b78cb6c370fa0c86e16f8
index 0000000000000000000000000000000000000000..03c4ed0135a8e570723726a402556e37d11308c4
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/protocol/JadeProtocol.java
@@ -0,0 +1,622 @@
@@ -235,7 +235,7 @@ index 0000000000000000000000000000000000000000..b0af99ba7bc27c27890b78cb6c370fa0
+ }));
+ tileDataProviders.register(JukeboxBlockEntity.class, ((data, player, world, object, showDetails) -> {
+ if (object instanceof JukeboxBlockEntity jukebox) {
+ ItemStack stack = jukebox.getFirstItem();
+ ItemStack stack = jukebox.getTheItem();
+ if (!stack.isEmpty()) {
+ data.put("Record", stack.save(new CompoundTag()));
+ }

View File

@@ -44,10 +44,10 @@ index 88072259a9de205db428351c5c9f6114e199e402..e641360a3e82cb03393b856fa545d6b0
if (iblockdata2 != null && this.canPlace(world, iblockdata2, blockposition)) {
iblockdata1 = iblockdata2;
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 065fbac30d22ec45cd3f5b66599c8500ae5c278d..9a970c6aff2f5f2edbad600156493a7c1f28e620 100644
index 3d8b39cfc50de89fda4d221ea27743508691857c..d38e7894239db17b6a00a6e6316643fbc990d496 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -404,6 +404,33 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -411,6 +411,33 @@ public class Block extends BlockBehaviour implements ItemLike {
public void stepOn(Level world, BlockPos pos, BlockState state, Entity entity) {}

View File

@@ -6,11 +6,11 @@ Subject: [PATCH] Player operation limiter
This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index cbf1acaae2707c42f0574ff1766957c32da4d90a..3aaf711182ad26e33c26b29ef1b51b9050233b3d 100644
index 5ae4f2a4138611ef4428719f27b991612cb962e8..7ba1067382a53740e82480db9ce2ba48f28beb92 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -274,6 +274,10 @@ public class ServerPlayer extends Player {
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
@@ -281,6 +281,10 @@ public class ServerPlayer extends Player {
public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
public @Nullable String clientBrandName = null; // Paper - Brand name
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
+ // Leaves start - player operation limiter
@@ -20,7 +20,7 @@ index cbf1acaae2707c42f0574ff1766957c32da4d90a..3aaf711182ad26e33c26b29ef1b51b90
// Paper start - replace player chunk loader
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
@@ -715,6 +719,7 @@ public class ServerPlayer extends Player {
@@ -722,6 +726,7 @@ public class ServerPlayer extends Player {
this.joining = false;
}
// CraftBukkit end
@@ -28,7 +28,7 @@ index cbf1acaae2707c42f0574ff1766957c32da4d90a..3aaf711182ad26e33c26b29ef1b51b90
this.gameMode.tick();
this.wardenSpawnTracker.tick();
--this.spawnInvulnerableTime;
@@ -2664,5 +2669,32 @@ public class ServerPlayer extends Player {
@@ -2765,5 +2770,32 @@ public class ServerPlayer extends Player {
public CraftPlayer getBukkitEntity() {
return (CraftPlayer) super.getBukkitEntity();
}
@@ -62,7 +62,7 @@ index cbf1acaae2707c42f0574ff1766957c32da4d90a..3aaf711182ad26e33c26b29ef1b51b90
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index 3706e94108f68a16fea63e734f3e3b6871dcb0b8..58586b97d3bdb6f5e40fc9c487ba82d57c17a20c 100644
index 58f972832c39a27a8ccd606f9144e1c54adbf6f3..b2aae4463f2d0fc6ae03bbb9a63c5b8f08d67d43 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -44,6 +44,7 @@ import org.bukkit.event.Event;

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Stackable ShulkerBoxes
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) and plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..e2f3044ce964f0da9df83b8a302316d2438384e7 100644
index a39db702063887cf530f272deaf4f334047cc7d4..1b6cd8276c6bda2832f6447a2cceb75f11e6811a 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -14,10 +14,12 @@ import net.minecraft.world.entity.Entity;
@@ -30,7 +30,7 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..e2f3044ce964f0da9df83b8a302316d2
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
// CraftBukkit end
@@ -71,6 +74,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -73,6 +76,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
this.setDeltaMovement(this.random.nextDouble() * 0.2D - 0.1D, 0.2D, this.random.nextDouble() * 0.2D - 0.1D);
this.setItem(stack);
// Paper end
@@ -44,7 +44,7 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..e2f3044ce964f0da9df83b8a302316d2
}
public ItemEntity(Level world, double x, double y, double z, ItemStack stack, double velocityX, double velocityY, double velocityZ) {
@@ -289,10 +299,49 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -307,10 +317,49 @@ public class ItemEntity extends Entity implements TraceableEntity {
private boolean isMergable() {
ItemStack itemstack = this.getItem();
@@ -132,21 +132,10 @@ index 41cb0d1efd81b7754b68c89af289c1260779c08b..75a26684dc892f96e9209ef77709d1b4
if (this.add(i, stack.split(j)) && notifiesClient && this.player instanceof ServerPlayer) {
((ServerPlayer) this.player).connection.send(new ClientboundContainerSetSlotPacket(-2, 0, i, this.getItem(i)));
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349dd449438 100644
index 1a1736fe28014aca767aa9efdcba378be3adc8ea..62586df674570a7762e8a2118a16918643c7dd59 100644
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -30,8 +30,10 @@ import net.minecraft.world.entity.SlotAccess;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.flag.FeatureFlagSet;
+import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.ShulkerBoxBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import org.slf4j.Logger;
@@ -456,7 +458,7 @@ public abstract class AbstractContainerMenu {
@@ -456,7 +456,7 @@ public abstract class AbstractContainerMenu {
if (slot1 != null && AbstractContainerMenu.canItemQuickReplace(slot1, itemstack2, true) && slot1.mayPlace(itemstack2) && (this.quickcraftType == 2 || itemstack2.getCount() >= this.quickcraftSlots.size()) && this.canDragTo(slot1)) {
int j1 = slot1.hasItem() ? slot1.getItem().getCount() : 0;
@@ -155,7 +144,7 @@ index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349
int l1 = Math.min(AbstractContainerMenu.getQuickCraftPlaceCount(this.quickcraftSlots, this.quickcraftType, itemstack1) + j1, k1);
l -= l1 - j1;
@@ -575,7 +577,7 @@ public abstract class AbstractContainerMenu {
@@ -575,7 +575,7 @@ public abstract class AbstractContainerMenu {
slot.setByPlayer(itemstack3);
}
} else if (ItemStack.isSameItemSameTags(itemstack, itemstack3)) {
@@ -164,7 +153,7 @@ index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349
optional1.ifPresent((itemstack4) -> {
itemstack3.grow(itemstack4.getCount());
@@ -642,7 +644,7 @@ public abstract class AbstractContainerMenu {
@@ -645,7 +645,7 @@ public abstract class AbstractContainerMenu {
slot2 = (Slot) this.slots.get(slotIndex);
if (slot2.hasItem()) {
itemstack1 = slot2.getItem();
@@ -173,7 +162,7 @@ index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349
}
} else if (actionType == ClickType.THROW && this.getCarried().isEmpty() && slotIndex >= 0) {
slot2 = (Slot) this.slots.get(slotIndex);
@@ -657,14 +659,14 @@ public abstract class AbstractContainerMenu {
@@ -660,13 +660,13 @@ public abstract class AbstractContainerMenu {
j2 = button == 0 ? 1 : -1;
for (i2 = 0; i2 < 2; ++i2) {
@@ -182,16 +171,14 @@ index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349
Slot slot3 = (Slot) this.slots.get(k2);
if (slot3.hasItem() && AbstractContainerMenu.canItemQuickReplace(slot3, itemstack1, true) && slot3.mayPickup(player) && this.canTakeItemForPickAll(itemstack1, slot3)) {
ItemStack itemstack4 = slot3.getItem();
ItemStack itemstack5 = slot3.getItem();
- if (i2 != 0 || itemstack4.getCount() != itemstack4.getMaxStackSize()) {
- ItemStack itemstack5 = slot3.safeTake(itemstack4.getCount(), itemstack1.getMaxStackSize() - itemstack1.getCount(), player);
+ if (i2 != 0 || itemstack4.getCount() != top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack4)) { // Leaves - stackable shulker boxes
+ ItemStack itemstack5 = slot3.safeTake(itemstack4.getCount(), top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1) - itemstack1.getCount(), player); // Leaves - stackable shulker boxes
- if (i2 != 0 || itemstack5.getCount() != itemstack5.getMaxStackSize()) {
+ if (i2 != 0 || itemstack5.getCount() != top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack5)) {
ItemStack itemstack6 = slot3.safeTake(itemstack5.getCount(), itemstack1.getMaxStackSize() - itemstack1.getCount(), player);
itemstack1.grow(itemstack5.getCount());
}
@@ -801,7 +803,7 @@ public abstract class AbstractContainerMenu {
itemstack1.grow(itemstack6.getCount());
@@ -805,7 +805,7 @@ public abstract class AbstractContainerMenu {
Slot slot;
ItemStack itemstack1;
@@ -200,7 +187,7 @@ index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349
while (!stack.isEmpty()) {
if (fromLast) {
if (k < startIndex) {
@@ -821,16 +823,18 @@ public abstract class AbstractContainerMenu {
@@ -825,16 +825,18 @@ public abstract class AbstractContainerMenu {
if (!itemstack1.isEmpty() && ItemStack.isSameItemSameTags(stack, itemstack1)) {
int l = itemstack1.getCount() + stack.getCount();
@@ -224,7 +211,7 @@ index bc734baa18eb12b499bca2c0fc6b8d8960b3ba26..0c87b9a7ef04fbe500a3c903099c2349
slot.setChanged();
} // Paper
diff --git a/src/main/java/net/minecraft/world/inventory/Slot.java b/src/main/java/net/minecraft/world/inventory/Slot.java
index a43b85b82fc83d0e5e3fd589bede0b279927a989..4e68e77180df7929d8993f049fc73c90f0158a2c 100644
index e2fd415b69e0213688561e9a19aec2cdcd267211..bb99bdd45efdb52323429565a4e13c07f5ab6d44 100644
--- a/src/main/java/net/minecraft/world/inventory/Slot.java
+++ b/src/main/java/net/minecraft/world/inventory/Slot.java
@@ -77,7 +77,7 @@ public class Slot {
@@ -237,21 +224,13 @@ index a43b85b82fc83d0e5e3fd589bede0b279927a989..4e68e77180df7929d8993f049fc73c90
@Nullable
diff --git a/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java b/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java
index 47468086c1cae252aa99c55b0065f225357dee62..bca757ea05403fe46f5bf0dfa75561b8b124622d 100644
index 5780d349f968ea3d05cf569b63531f8e76884827..d30af75de7d146b6bf49814b0eabae94e57682f5 100644
--- a/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java
@@ -9,6 +9,7 @@ import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
@@ -51,9 +52,27 @@ public abstract class AbstractCauldronBlock extends Block {
@@ -53,9 +53,27 @@ public abstract class AbstractCauldronBlock extends Block {
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
ItemStack itemStack = player.getItemInHand(hand);
CauldronInteraction cauldronInteraction = this.interactions.get(itemStack.getItem());
CauldronInteraction cauldronInteraction = this.interactions.map().get(itemStack.getItem());
- return cauldronInteraction.interact(state, world, pos, player, hand, itemStack);
+ return wrapInteractor(cauldronInteraction, state, world, pos, player, hand, itemStack); // Leaves - stackable shulker boxes
}
@@ -259,14 +238,14 @@ index 47468086c1cae252aa99c55b0065f225357dee62..bca757ea05403fe46f5bf0dfa75561b8
+ // Leaves start - stackable shulker boxes
+ private InteractionResult wrapInteractor(CauldronInteraction cauldronBehavior, BlockState blockState, Level world, BlockPos blockPos, Player playerEntity, InteractionHand hand, ItemStack itemStack) {
+ int count = -1;
+ if (top.leavesmc.leaves.LeavesConfig.shulkerBoxStackSize > 1 && itemStack.getItem() instanceof BlockItem bi &&
+ if (top.leavesmc.leaves.LeavesConfig.shulkerBoxStackSize > 1 && itemStack.getItem() instanceof net.minecraft.world.item.BlockItem bi &&
+ bi.getBlock() instanceof ShulkerBoxBlock) {
+ count = itemStack.getCount();
+ }
+ InteractionResult result = cauldronBehavior.interact(blockState, world, blockPos, playerEntity, hand, itemStack);
+ if (count > 0 && result.consumesAction()) {
+ ItemStack current = playerEntity.getItemInHand(hand);
+ if (current.getItem() instanceof BlockItem bi && bi.getBlock() instanceof ShulkerBoxBlock) {
+ if (current.getItem() instanceof net.minecraft.world.item.BlockItem bi && bi.getBlock() instanceof ShulkerBoxBlock) {
+ current.setCount(count);
+ }
+ }
@@ -278,7 +257,7 @@ index 47468086c1cae252aa99c55b0065f225357dee62..bca757ea05403fe46f5bf0dfa75561b8
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
return SHAPE;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 88ae3b334e35ac9d0ca4238b5da3c3af1f421bd4..9310444c04608a0015844eafa872f24c8baedf4d 100644
index 8e1201d91bac88c043de5dfdc003d20b2647af9a..5fabdda079ebcb0e5d119f3e60f7447d88dd2707 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -733,9 +733,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen

View File

@@ -31,10 +31,10 @@ index fa1c0aee8c3a4d0868482cf5c703bbfd08e09874..8b0feb7f0d008e5b8a5294a014a0cd9b
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 fd39cbd4e3fad04cc0441aff5142891964c7c76f..a95b794553074a8c446a55f56862ccf7c5d6c261 100644
index c78515de20c53c5c3b6727bee4972020ab23007b..653de62cf785bd6a3a6f2ea5cd657dcc351d090e 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -2694,7 +2694,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -2743,7 +2743,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
public void onTickingEnd(Entity entity) {
ServerLevel.this.entityTickList.remove(entity);
// Paper start - Reset pearls when they stop being ticked
@@ -57,10 +57,10 @@ index ffc5b68c4246a7111845230a75552bb15875a209..990cdebf1b9e64a5001c71411e64f681
|| ((ServerLevel) this.level()).getDragonFight() == null
|| ((ServerLevel) this.level()).getDragonFight().respawnStage == null
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..25a01ca42b8f2f0590965edbeca9c1f95cd66420 100644
index c3e47426382296d650fa00ce0bc1a82bf23c7877..1d3764c2278a5daf1cfddf28c6ae78dd8809d4ff 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -63,7 +63,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -71,7 +71,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@Override
public void tick() {
@@ -70,10 +70,10 @@ index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..25a01ca42b8f2f0590965edbeca9c1f9
this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.04D, 0.0D));
}
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
index a90317100d32974e481e14476843f66997a2cf3a..34029cdf229ef8f78ddb0c8a2e5e0542628848d8 100644
index 2f058cec80c6ef7a5a5ca065dc6c9fe353c521de..bda52c1afdcc5a3410f31179dec2f1989d02f6e9 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
@@ -122,7 +122,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@@ -119,7 +119,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
if (nbt.hasUUID("Owner")) {
this.ownerUUID = nbt.getUUID("Owner");
this.cachedOwner = null;

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Return nether portal fix
This patch is powered by NetherPortalFix(https://github.com/TwelveIterationMods/NetherPortalFix)
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 3aaf711182ad26e33c26b29ef1b51b9050233b3d..0b6cd28cbaa65a391dfe190f8934befcff696ed5 100644
index 7ba1067382a53740e82480db9ce2ba48f28beb92..b60f13f552b5bccf01e1c9e0bfc1e82013ad31a9 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -180,6 +180,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -186,6 +186,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.MainHand;
import top.leavesmc.leaves.bot.ServerBot;
@@ -17,7 +17,7 @@ index 3aaf711182ad26e33c26b29ef1b51b9050233b3d..0b6cd28cbaa65a391dfe190f8934befc
// CraftBukkit end
public class ServerPlayer extends Player {
@@ -1287,6 +1288,24 @@ public class ServerPlayer extends Player {
@@ -1291,6 +1292,24 @@ public class ServerPlayer extends Player {
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld());
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
// CraftBukkit end
@@ -42,7 +42,7 @@ index 3aaf711182ad26e33c26b29ef1b51b9050233b3d..0b6cd28cbaa65a391dfe190f8934befc
}
// Paper start
if (this.isBlocking()) {
@@ -1339,6 +1358,30 @@ public class ServerPlayer extends Player {
@@ -1343,6 +1362,30 @@ public class ServerPlayer extends Player {
protected Optional<BlockUtil.FoundRectangle> getExitPortal(ServerLevel worldserver, BlockPos blockposition, boolean flag, WorldBorder worldborder, int searchRadius, boolean canCreatePortal, int createRadius) { // CraftBukkit
Optional<BlockUtil.FoundRectangle> optional = super.getExitPortal(worldserver, blockposition, flag, worldborder, searchRadius, canCreatePortal, createRadius); // CraftBukkit
@@ -74,28 +74,18 @@ index 3aaf711182ad26e33c26b29ef1b51b9050233b3d..0b6cd28cbaa65a391dfe190f8934befc
return optional;
} else {
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index fe9110a92b690c2d3d8da171216129da20462984..70c2ee8b98afdf8006273511f70dbd8ad81b473a 100644
index f1fc9282e6b1072e5c866828e0a05332490e9360..24dd15c15ba8a2953c158e38f0453b1ab4f5aa18 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -24,6 +24,8 @@ import java.util.UUID;
import java.util.function.Function;
import java.util.function.Predicate;
import javax.annotation.Nullable;
+
+import net.minecraft.BlockUtil;
import net.minecraft.ChatFormatting;
import net.minecraft.FileUtil;
import net.minecraft.commands.CommandSourceStack;
@@ -121,6 +123,8 @@ import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
@@ -121,6 +121,7 @@ import org.bukkit.event.player.PlayerSpawnChangeEvent;
// CraftBukkit end
import top.leavesmc.leaves.bot.ServerBot;
+import top.leavesmc.leaves.util.ReturnPortalManager; // Leaves - return portal fix
+
public abstract class PlayerList {
public static final File USERBANLIST_FILE = new File("banned-players.json");
@@ -1003,6 +1007,24 @@ public abstract class PlayerList {
@@ -1004,6 +1005,24 @@ public abstract class PlayerList {
if (fromWorld != location.getWorld()) {
PlayerChangedWorldEvent event = new PlayerChangedWorldEvent(entityplayer.getBukkitEntity(), fromWorld);
this.server.server.getPluginManager().callEvent(event);
@@ -108,7 +98,7 @@ index fe9110a92b690c2d3d8da171216129da20462984..70c2ee8b98afdf8006273511f70dbd8a
+ if (!((fromDim != OVERWORLD || toDim != THE_NETHER) && (fromDim != THE_NETHER || toDim != OVERWORLD))) {
+ BlockPos lastPos = entityplayer1.lastPos;
+ if (lastPos != null) {
+ BlockUtil.FoundRectangle fromPortal = ReturnPortalManager.findPortalAt(entityplayer1, fromDim, lastPos);
+ net.minecraft.BlockUtil.FoundRectangle fromPortal = ReturnPortalManager.findPortalAt(entityplayer1, fromDim, lastPos);
+ BlockPos toPos = entityplayer1.blockPosition();
+ if (fromPortal != null) {
+ ReturnPortalManager.storeReturnPortal(entityplayer1, toDim, toPos, fromPortal);
@@ -121,10 +111,10 @@ index fe9110a92b690c2d3d8da171216129da20462984..70c2ee8b98afdf8006273511f70dbd8a
// Save player file again if they were disconnected
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index e27b95e71342dc3dc2e7274fb8cf0c41629f3426..eea0eb67b3f74574d8dcd8cad30394f3a49cb2cd 100644
index 67bb1b03f2cf0a77f12e70e790cc3bb78ca233c1..c5be586d14751991c95626adb76d7a99612f7daa 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -241,7 +241,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -240,7 +240,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
protected ItemStack useItem;
protected int useItemRemaining;
protected int fallFlyTicks;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Xaero Map Protocol
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 70c2ee8b98afdf8006273511f70dbd8ad81b473a..683691fa61d02be951a0f759b1983ce9c5cd3863 100644
index 24dd15c15ba8a2953c158e38f0453b1ab4f5aa18..2818f21777560f271379884e0cf3ef26bd99196a 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1319,6 +1319,7 @@ public abstract class PlayerList {
@@ -1317,6 +1317,7 @@ public abstract class PlayerList {
player.connection.send(new ClientboundInitializeBorderPacket(worldborder));
player.connection.send(new ClientboundSetTimePacket(world.getGameTime(), world.getDayTime(), world.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)));
player.connection.send(new ClientboundSetDefaultSpawnPositionPacket(world.getSharedSpawnPos(), world.getSharedSpawnAngle()));

View File

@@ -18,10 +18,10 @@ index 48e774677edf17d4a99ae9ed23d1b371dab41abb..21409ff86db65c00d92bff9eae8bdeb3
public PaperAuthenticationService(Proxy proxy) {
super(proxy);
diff --git a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java
index f1e7c7f0fa1d6a8f61de4215eabc121ab2a0b67f..91e07f127361bd573ccd59f37fcba93b300c289a 100644
index bfc1e27c37689c1fbb927404a7176780a439a057..bc8ab50ef1390a2c51110a89dc43db58215396a9 100644
--- a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java
+++ b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java
@@ -44,7 +44,7 @@ import java.util.stream.Collectors;
@@ -46,7 +46,7 @@ import java.util.stream.Collectors;
public class YggdrasilMinecraftSessionService implements MinecraftSessionService {
private static final Logger LOGGER = LoggerFactory.getLogger(YggdrasilMinecraftSessionService.class);
@@ -31,10 +31,10 @@ index f1e7c7f0fa1d6a8f61de4215eabc121ab2a0b67f..91e07f127361bd573ccd59f37fcba93b
private final String baseUrl;
private final URL joinUrl;
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
index ec268189b19b6fa5c4521f96ce211a531db35ec5..24376290ac1d5f5e140ff06b23f9711b38de362e 100644
index 7573c12a77797146c51ef2dfe4b2a636df45e21a..458c69eee97a5284b8e7658450cbac32a52137fe 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -201,7 +201,7 @@ public class Main {
@@ -198,7 +198,7 @@ public class Main {
file = new File(bukkitConfiguration.getString("settings.world-container", "."));
}
// Paper end - fix SPIGOT-5824
@@ -44,18 +44,18 @@ index ec268189b19b6fa5c4521f96ce211a531db35ec5..24376290ac1d5f5e140ff06b23f9711b
String s = (String) Optional.ofNullable((String) optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName);
LevelStorageSource convertable = LevelStorageSource.createDefault(file.toPath());
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 3f4b4d905ff440eaf4a66b10ad85933c0b07dc58..7dec27260fce938f5d1e5c437f564ed9cee575f3 100644
index 89a50e07bc79cb0d5353f5a06fa037f3942c5940..760b1fb833fea279062965002686b57f967a5eaf 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -253,7 +253,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -260,7 +260,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private boolean isDemo;
private volatile boolean isReady;
private long lastOverloadWarning;
private long lastOverloadWarningNanos;
- protected final Services services;
+ public final Services services; // Leaves - protected -> public
private long lastServerStatus;
public final Thread serverThread;
private long nextTickTime;
private long nextTickTimeNanos;
diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
index ac3642af48056698686d0784bb483f99d3f84fa3..50403436dbe22328c7099c1d04b2a87d4f55aab6 100644
--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Use vanilla random config
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 759ee77818ea2916ea8c217be8ed26338f662861..4073424b4a2eb2f48540ee196598bac423695ad6 100644
index 2d9af0ad73e718fe387dc0df1984c83a962319f3..4c703438c091171df4bd673b6b732d07490e9cc5 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -543,7 +543,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -548,7 +548,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
this.bb = Entity.INITIAL_AABB;
this.stuckSpeedMultiplier = Vec3.ZERO;
this.nextStep = 1.0F;
@@ -18,10 +18,10 @@ index 759ee77818ea2916ea8c217be8ed26338f662861..4073424b4a2eb2f48540ee196598bac4
this.fluidHeight = new Object2DoubleArrayMap(2);
this.fluidOnEyes = new HashSet();
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index 9a7956befc346e1b58f064213800fd099a052fc6..d508448c7627c4cef90a30b471252841b7e20fa1 100644
index a87a34b0c4c8e5d0cf079025c230b1434c919b54..c56dd96ab35dae5331e9cec4bc27cdb78c1741fc 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -1029,7 +1029,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -1036,7 +1036,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
BeeGoToHiveGoal() {
super();
@@ -44,10 +44,10 @@ index f60c4cd0543fd5d50fa7e2c1a9e8381227adb540..8c9c694744951dc11b9f8828f27e4d4a
}
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index e2f3044ce964f0da9df83b8a302316d2438384e7..5eb9d599e2f6e61adb34c991fe9008859633fdfc 100644
index 1b6cd8276c6bda2832f6447a2cceb75f11e6811a..c8abafdfc2bd09429fe0a509b1afa1579d5d75b6 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -71,7 +71,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -73,7 +73,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
// Paper start - don't use world random in entity constructor
this(EntityType.ITEM, world);
this.setPos(x, y, z);
@@ -63,10 +63,10 @@ index e2f3044ce964f0da9df83b8a302316d2438384e7..5eb9d599e2f6e61adb34c991fe900885
// Paper end
// Leaves start - stackable shulker boxes
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 25a01ca42b8f2f0590965edbeca9c1f95cd66420..e66b138370ceae2ea16c48a17d0a3d8209fe9b55 100644
index 1d3764c2278a5daf1cfddf28c6ae78dd8809d4ff..8c96f1ad6b6de5f42b275f08ad47ce8d8f7aea49 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -36,7 +36,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -43,7 +43,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {
public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) {
this(EntityType.TNT, world);
this.setPos(x, y, z);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix update suppression crash
diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
index 8055ebf912ea595b6c70c6e6fcda14f3b2516077..f666ae4df36ed57368082e47786ab6ba4148d9c7 100644
index de9a8ba5317d6e5ae682a2376c8d04512a0b0936..c2c399be2d8d0d58ab43b36926ba9c45962ac322 100644
--- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java
+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
@@ -50,6 +50,10 @@ public class PacketUtils {
@@ -51,6 +51,10 @@ public class PacketUtils {
if (listener.shouldHandleMessage(packet)) {
try {
packet.handle(listener);
@@ -17,13 +17,13 @@ index 8055ebf912ea595b6c70c6e6fcda14f3b2516077..f666ae4df36ed57368082e47786ab6ba
+ top.leavesmc.leaves.LeavesLogger.LOGGER.info(exception.getMessage());
+ // Leaves start - update suppression crash fix
} catch (Exception exception) {
if (exception instanceof ReportedException) {
ReportedException reportedexception = (ReportedException) exception;
label25:
{
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 7dec27260fce938f5d1e5c437f564ed9cee575f3..8c0b428ef004d87be0748584ae6a0557d43bc946 100644
index 760b1fb833fea279062965002686b57f967a5eaf..b22327cbda661538fbf1c9f32de6449d6039f04f 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1529,7 +1529,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1695,7 +1695,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.push("tick");
try {
@@ -39,10 +39,10 @@ index 7dec27260fce938f5d1e5c437f564ed9cee575f3..8c0b428ef004d87be0748584ae6a0557
for (final io.papermc.paper.chunk.SingleThreadChunkRegionManager regionManager : worldserver.getChunkSource().chunkMap.regionManagers) {
regionManager.recalculateRegions();
diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
index d5fe3b8e2f5a8899f6afeb0600764284a617f261..66f652724d1a4a27d75cd2f15c0a50879d5bafc5 100644
index 42407c5c0c09cd9d19bc7af92af8868bb038c686..dd40b975b72f7bd16f2c491a36c39b7098c66f2b 100644
--- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -249,7 +249,17 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@@ -265,7 +265,17 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@Override
public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bedrock break list
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8c0b428ef004d87be0748584ae6a0557d43bc946..fccb76a8dfa6a0c5d704a0a8f7392beedea320c9 100644
index b22327cbda661538fbf1c9f32de6449d6039f04f..f49270818284b27eb755b5edd99e6d0441adbdca 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1573,6 +1573,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1739,6 +1739,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.popPush("server gui refresh");
top.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(); // Leaves - protocol
@@ -17,10 +17,10 @@ index 8c0b428ef004d87be0748584ae6a0557d43bc946..fccb76a8dfa6a0c5d704a0a8f7392bee
for (int i = 0; i < this.tickables.size(); ++i) {
((Runnable) this.tickables.get(i)).run();
diff --git a/src/main/java/net/minecraft/server/ServerScoreboard.java b/src/main/java/net/minecraft/server/ServerScoreboard.java
index 03d13c2425170a6513ea7442a4a12fc9aa6e211d..c54b8779e099b642bbbbb9f380377a167ebf25cb 100644
index 5cc8173e845bf8d3414ac3347d25e1f6d0c65ce9..96b5afb3ec53fe50f6e9ee47c85db2dcce835058 100644
--- a/src/main/java/net/minecraft/server/ServerScoreboard.java
+++ b/src/main/java/net/minecraft/server/ServerScoreboard.java
@@ -135,6 +135,7 @@ public class ServerScoreboard extends Scoreboard {
@@ -144,6 +144,7 @@ public class ServerScoreboard extends Scoreboard {
@Override
public void onObjectiveAdded(Objective objective) {
super.onObjectiveAdded(objective);
@@ -28,7 +28,7 @@ index 03d13c2425170a6513ea7442a4a12fc9aa6e211d..c54b8779e099b642bbbbb9f380377a16
this.setDirty();
}
@@ -151,6 +152,7 @@ public class ServerScoreboard extends Scoreboard {
@@ -160,6 +161,7 @@ public class ServerScoreboard extends Scoreboard {
@Override
public void onObjectiveRemoved(Objective objective) {
super.onObjectiveRemoved(objective);
@@ -37,10 +37,10 @@ index 03d13c2425170a6513ea7442a4a12fc9aa6e211d..c54b8779e099b642bbbbb9f380377a16
this.stopTrackingObjective(objective);
}
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java b/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java
index 5acf0e1fba2967e67bdb208ef73ae8fa84ffe35d..8c48d6815150ae21522c0b99c8eac08c01b2aa38 100644
index b9025fcc6a4db9533cdc42034c9e77323d0785fa..eeb159f05d4877ff0843052cf9ccfc87f3fc1e59 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java
@@ -92,6 +92,11 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -105,6 +105,11 @@ public class PistonBaseBlock extends DirectionalBlock {
@Override
public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) {
if (!world.isClientSide) {
@@ -52,7 +52,7 @@ index 5acf0e1fba2967e67bdb208ef73ae8fa84ffe35d..8c48d6815150ae21522c0b99c8eac08c
this.checkIfExtend(world, pos, state);
}
@@ -277,13 +282,24 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -290,13 +295,24 @@ public class PistonBaseBlock extends DirectionalBlock {
}
}
// Paper end
@@ -80,7 +80,7 @@ index 5acf0e1fba2967e67bdb208ef73ae8fa84ffe35d..8c48d6815150ae21522c0b99c8eac08c
((ServerLevel)world).getChunkSource().blockChanged(headPos); // ... fix client desync
diff --git a/src/main/java/top/leavesmc/leaves/util/BreakBedrockList.java b/src/main/java/top/leavesmc/leaves/util/BreakBedrockList.java
new file mode 100644
index 0000000000000000000000000000000000000000..a1194aca9f70a44472d1f2ce0cbd6a3e0463eba9
index 0000000000000000000000000000000000000000..c92607e9f735a029bbb24a7792eeda1c51b1d8a3
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/util/BreakBedrockList.java
@@ -0,0 +1,114 @@
@@ -93,6 +93,7 @@ index 0000000000000000000000000000000000000000..a1194aca9f70a44472d1f2ce0cbd6a3e
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.DirectionalBlock;
+import net.minecraft.world.scores.Objective;
+import net.minecraft.world.scores.ScoreHolder;
+import net.minecraft.world.scores.criteria.ObjectiveCriteria;
+import org.jetbrains.annotations.NotNull;
+import top.leavesmc.leaves.LeavesConfig;
@@ -135,17 +136,17 @@ index 0000000000000000000000000000000000000000..a1194aca9f70a44472d1f2ce0cbd6a3e
+
+ if (flag) {
+ if (!BBL.isEmpty()) {
+ String player = map.get(bedrock).getScoreboardName();
+ Player player = map.get(bedrock);
+ for (Objective objective : BBL) {
+ level.getScoreboard().getOrCreatePlayerScore(player, objective).increment();
+ }
+ }
+ } else {
+ if (!MBB.isEmpty()) {
+ String world = "$" + level.dimension().location();
+ ScoreHolder world = ScoreHolder.forNameOnly("$" + level.dimension().location());
+ for (Objective objective : MBB) {
+ level.getScoreboard().getOrCreatePlayerScore(world, objective).increment();
+ level.getScoreboard().getOrCreatePlayerScore("$total", objective).increment();
+ level.getScoreboard().getOrCreatePlayerScore(ScoreHolder.forNameOnly("$total"), objective).increment();
+ }
+ }
+ }
@@ -153,9 +154,8 @@ index 0000000000000000000000000000000000000000..a1194aca9f70a44472d1f2ce0cbd6a3e
+ if (!LBL.isEmpty() && !level.players().isEmpty()) {
+ Player closestPlayer = level.getNearestPlayer(bedrock.getX(), bedrock.getY(), bedrock.getZ(), 10.5, null);
+ if (closestPlayer != null) {
+ String player = closestPlayer.getScoreboardName();
+ for (Objective objective : LBL) {
+ level.getScoreboard().getOrCreatePlayerScore(player, objective).increment();
+ level.getScoreboard().getOrCreatePlayerScore(closestPlayer, objective).increment();
+ }
+ }
+ }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix trapdoor feature
diff --git a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java
index b9e3c9cd709d42bced85436720ccc7b9c7e49552..90f193caf333d39e9494f1596d49b4a592e56e4c 100644
index ab5d25e2e1e86804c91885739c4f86770c40143c..c1fd5151b69df56b9379368bf1063d001fe3e186 100644
--- a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java
@@ -124,26 +124,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW
@@ -153,26 +153,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW
flag1 = eventRedstone.getNewCurrent() > 0;
}
// CraftBukkit end

View File

@@ -6,18 +6,18 @@ Subject: [PATCH] Syncmatica Protocol
This patch is Powered by Syncmatica(https://github.com/End-Tech/syncmatica)
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 79a236ec2b7e9bab6c9a6c25b3b9f08152891c34..5fe844179c66204ec3eacc1bbfe6128af205b86f 100644
index e018fb8d2649e1e07289f12421ac0ddcf05e1c72..0ebedd4f2e37b7f07cc4f3e32aaa7e79204f3440 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -310,6 +310,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
player.getTextFilter().join();
this.signedMessageDecoder = server.enforceSecureProfile() ? SignedMessageChain.Decoder.REJECT_ALL : SignedMessageChain.Decoder.unsigned(player.getUUID());
@@ -313,6 +313,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Objects.requireNonNull(server);
this.signedMessageDecoder = SignedMessageChain.Decoder.unsigned(uuid, server::enforceSecureProfile);
this.chatMessageChain = new FutureChain(server.chatExecutor); // CraftBukkit - async chat
+ this.exchangeTarget = new top.leavesmc.leaves.protocol.syncmatica.exchange.ExchangeTarget(this); // Leaves - Syncmatica Protocol
}
// CraftBukkit start - add fields
@@ -329,6 +330,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -332,6 +333,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
private boolean hasMoved; // Spigot
// CraftBukkit end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Disable distance check for UseItemOnPacket
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index d3ef269f89f220379fc84bbab92dd8333d054c3c..aa35917f6d5c6c37f5c62bd220ccd0b04b264d73 100644
index 0ebedd4f2e37b7f07cc4f3e32aaa7e79204f3440..ab2f40d35baddb0c850a427a5ae226eb3898bf3f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1905,7 +1905,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1932,7 +1932,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Vec3 vec3d2 = vec3d.subtract(vec3d1);
double d0 = 1.0000001D;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] No feather falling trample
diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
index 502dcba14da9d3dcefc61fdc349a4e1e1d94b478..9828ab37ba2ae1e6e1f4b46d021061e0924cf3c7 100644
index 59bbdead2ebd8965d222540c7243dde051bbcc4b..3eaa46b60aa8f4fcdbfa54dbcf1e051ec2eda140 100644
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
@@ -104,6 +104,13 @@ public class FarmBlock extends Block {
@@ -111,6 +111,13 @@ public class FarmBlock extends Block {
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage.
if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Redstone wire dont connect if on trapdoor
diff --git a/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java b/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java
index 2b054439b7a763d5a3fbb5dbfe197cb9a9a3525c..9f56f20032ff590bc3ce82f74c26095cde79a549 100644
index 507be06ad51b7a212e28d3ca6680e0e4b00f4233..36984ff7b8ffa253cf5279f89b056cf976f186bd 100644
--- a/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/RedStoneWireBlock.java
@@ -226,7 +226,7 @@ public class RedStoneWireBlock extends Block {
@@ -233,7 +233,7 @@ public class RedStoneWireBlock extends Block {
BlockState iblockdata = world.getBlockState(blockposition1);
if (flag) {

View File

@@ -1,19 +1,19 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Thu, 15 Jun 2023 18:01:51 +0800
Date: Sun, 10 Dec 2023 13:13:14 +0800
Subject: [PATCH] Disable check out-of-order command
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index aa35917f6d5c6c37f5c62bd220ccd0b04b264d73..454fd5f449d19660aec50e4b76152cbf272b572b 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2248,7 +2248,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) {
- if (!this.updateChatOrder(timestamp)) {
+ if (!top.leavesmc.leaves.LeavesConfig.disableCheckOutOfOrderCommand && !this.updateChatOrder(timestamp)) { // Leaves - disable check to support Velocity
ServerGamePacketListenerImpl.LOGGER.warn("{} sent out-of-order chat: '{}': {} > {}", this.player.getName().getString(), message, this.lastChatTimeStamp.get().getEpochSecond(), timestamp.getEpochSecond()); // Paper
this.server.scheduleOnMain(() -> { // Paper - push to main
this.disconnect(Component.translatable("multiplayer.disconnect.out_of_order_chat"), org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event causes
diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java
index 85a8a687b1568a56e3e646b37ef78b562c1b8a82..90eb8e13c9ef9b966c6abf5a56f69f44a296e969 100644
--- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java
+++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java
@@ -38,7 +38,7 @@ public class SignedMessageChain {
throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause)
} else if (playerPublicKey.data().hasExpired()) {
throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey", org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY), false); // Paper - kick event causes
- } else if (body.timeStamp().isBefore(this.lastTimeStamp)) {
+ } else if (body.timeStamp().isBefore(this.lastTimeStamp) && !top.leavesmc.leaves.LeavesConfig.disableCheckOutOfOrderCommand) { // Leaves - disable check to support Velocity
throw new SignedMessageChain.DecodeException(Component.translatable("multiplayer.disconnect.out_of_order_chat", org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT), true); // Paper - kick event causes
} else {
this.lastTimeStamp = body.timeStamp();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Despawn enderman with block
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index a8867058fb09fd4c6b965b91d5f406b2a1b7035a..acc18cbd9e2b81857dba23fb198d5afbf8e218a4 100644
index a6da5165ac20e01a9162b216cddf7b0dc040b5a9..602340221cbba4a9edc155800b2a9188b8f7d522 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -486,7 +486,7 @@ public class EnderMan extends Monster implements NeutralMob {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Creative fly no clip
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index d58b4c0dbe651b5068212e5f14dce3164ee520f5..4aa241f2ef7f27e9c9cf5ea3bbb1c4b389ce887c 100644
index 7f3466340891b4409d1399ebeb2ca865d77841cd..1f87de025be6f29339c5e472cd37d5b97c145764 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -243,8 +243,8 @@ public abstract class Player extends LivingEntity {
@@ -238,8 +238,8 @@ public abstract class Player extends LivingEntity {
@Override
public void tick() {
@@ -28,7 +28,7 @@ index d58b4c0dbe651b5068212e5f14dce3164ee520f5..4aa241f2ef7f27e9c9cf5ea3bbb1c4b3
if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING)) {
entitypose1 = Pose.CROUCHING;
} else {
@@ -581,7 +581,7 @@ public abstract class Player extends LivingEntity {
@@ -576,7 +576,7 @@ public abstract class Player extends LivingEntity {
}
this.bob += (f - this.bob) * 0.4F;
@@ -37,7 +37,7 @@ index d58b4c0dbe651b5068212e5f14dce3164ee520f5..4aa241f2ef7f27e9c9cf5ea3bbb1c4b3
AABB axisalignedbb;
if (this.isPassenger() && !this.getVehicle().isRemoved()) {
@@ -2136,6 +2136,12 @@ public abstract class Player extends LivingEntity {
@@ -2051,6 +2051,12 @@ public abstract class Player extends LivingEntity {
@Override
public abstract boolean isSpectator();
@@ -64,7 +64,7 @@ index 5c311270a39f6b4996c8b58822d24556c67adc41..cb40179236952edcc1678a58a5886b19
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
index 1ec80f9c901dff1c9f29befa5a8e3c3f6f37aaf7..f26e5626c0823c041eeb388cbcd78e5293d2f0ff 100644
index 7491e075baebc7d412d35593bb844b200e304447..e5c4deb9a921b90b7e0760955e90e815db95d3a1 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
@@ -18,6 +18,7 @@ import net.minecraft.util.Mth;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Elytra aeronautics no chunk load
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 255c6508d7b507dc9b23c5910f872c2fa97c7c50..55cdb8e23b91ad68ad128c664ddad5b2cd734423 100644
index e82fd89dc613381e5ed8079b96901b338a8b5aa5..ea617a5695db07d58f9115d85a06e6c07c47953e 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -150,7 +150,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -45,10 +45,10 @@ index 255c6508d7b507dc9b23c5910f872c2fa97c7c50..55cdb8e23b91ad68ad128c664ddad5b2
SectionPos sectionposition = player.getLastSectionPos();
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 13185dfaf91b1029f4091d4754b03b88fcc00f22..f311111b91543288588be584dbbd7bb833df0eca 100644
index ab2f40d35baddb0c850a427a5ae226eb3898bf3f..6ecfad2ef86a6d2cd280c847e159977285999134 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -540,7 +540,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -543,7 +543,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
// Paper start - Prevent moving into unloaded chunks
@@ -58,10 +58,10 @@ index 13185dfaf91b1029f4091d4754b03b88fcc00f22..f311111b91543288588be584dbbd7bb8
!worldserver.areChunksLoadedForMove(entity.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(entity.position())))
)) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4073424b4a2eb2f48540ee196598bac423695ad6..00cc1bfec7578f2118d38ef275e92a0c01ecdecc 100644
index 4c703438c091171df4bd673b6b732d07490e9cc5..9752b4205b5d3047b29fc7e98233f4f601826a57 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1064,7 +1064,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1069,7 +1069,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return;
}
}
@@ -76,7 +76,7 @@ index 4073424b4a2eb2f48540ee196598bac423695ad6..00cc1bfec7578f2118d38ef275e92a0c
this.level().getProfiler().push("move");
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) {
movement = movement.multiply(this.stuckSpeedMultiplier);
@@ -2003,6 +2009,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -2008,6 +2014,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
this.yo = y;
this.zo = d4;
this.setPos(d3, y, d4);
@@ -85,10 +85,10 @@ index 4073424b4a2eb2f48540ee196598bac423695ad6..00cc1bfec7578f2118d38ef275e92a0c
}
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 78e39714759ef2fc8495d1c9de9e11b5bb364002..608bc9b00661dcacc9ac87adc364c2acd9e74450 100644
index 1f87de025be6f29339c5e472cd37d5b97c145764..ebe913516d93adbf611197f610cf16b33cca99ec 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity {
@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity {
public boolean affectsSpawning = true;
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET;
// Paper end

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix Paper#9372
This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish)
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 0b6cd28cbaa65a391dfe190f8934befcff696ed5..21aa07c96ebc7f760ecf8fa62da7dc6738c2cf93 100644
index b60f13f552b5bccf01e1c9e0bfc1e82013ad31a9..700613bf12bb1b1c23bc33f335edb553edb2c630 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1258,6 +1258,7 @@ public class ServerPlayer extends Player {
@@ -1262,6 +1262,7 @@ public class ServerPlayer extends Player {
this.setServerLevel(worldserver);
this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
this.connection.resetPosition();
@@ -17,7 +17,7 @@ index 0b6cd28cbaa65a391dfe190f8934befcff696ed5..21aa07c96ebc7f760ecf8fa62da7dc67
worldserver.addDuringPortalTeleport(this);
worldserver1.getProfiler().pop();
this.triggerDimensionChangeTriggers(worldserver1);
@@ -1974,6 +1975,7 @@ public class ServerPlayer extends Player {
@@ -2075,6 +2076,7 @@ public class ServerPlayer extends Player {
public void moveTo(double x, double y, double z) {
super.moveTo(x, y, z);
this.connection.resetPosition();
@@ -25,7 +25,7 @@ index 0b6cd28cbaa65a391dfe190f8934befcff696ed5..21aa07c96ebc7f760ecf8fa62da7dc67
}
@Override
@@ -2220,6 +2222,7 @@ public class ServerPlayer extends Player {
@@ -2321,6 +2323,7 @@ public class ServerPlayer extends Player {
this.connection.send(new ClientboundSetCameraPacket(this.camera));
this.connection.resetPosition();
@@ -33,7 +33,7 @@ index 0b6cd28cbaa65a391dfe190f8934befcff696ed5..21aa07c96ebc7f760ecf8fa62da7dc67
}
}
@@ -2659,6 +2662,7 @@ public class ServerPlayer extends Player {
@@ -2760,6 +2763,7 @@ public class ServerPlayer extends Player {
public void forceSetPositionRotation(double x, double y, double z, float yaw, float pitch) {
this.moveTo(x, y, z, yaw, pitch);
this.connection.resetPosition();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Cache ignite odds
diff --git a/src/main/java/net/minecraft/world/level/block/FireBlock.java b/src/main/java/net/minecraft/world/level/block/FireBlock.java
index 4002e0fffb60556e7af1aeff71b4be244f02b0f5..8fc696d806aa3f4af313f145397ec497e186def2 100644
index 8c0db5219ff30bdfae61b4b9f6033c8e28d21ee1..227434f1800f6716c20dc284f98045a86edd4d09 100644
--- a/src/main/java/net/minecraft/world/level/block/FireBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FireBlock.java
@@ -214,6 +214,7 @@ public class FireBlock extends BaseFireBlock {
@@ -221,6 +221,7 @@ public class FireBlock extends BaseFireBlock {
this.trySpread(world, pos.south(), 300 + k, random, i, pos);
// CraftBukkit end
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -16,7 +16,7 @@ index 4002e0fffb60556e7af1aeff71b4be244f02b0f5..8fc696d806aa3f4af313f145397ec497
for (int l = -1; l <= 1; ++l) {
for (int i1 = -1; i1 <= 1; ++i1) {
@@ -226,7 +227,7 @@ public class FireBlock extends BaseFireBlock {
@@ -233,7 +234,7 @@ public class FireBlock extends BaseFireBlock {
}
blockposition_mutableblockposition.setWithOffset(pos, l, j1, i1);
@@ -25,7 +25,7 @@ index 4002e0fffb60556e7af1aeff71b4be244f02b0f5..8fc696d806aa3f4af313f145397ec497
if (l1 > 0) {
int i2 = (l1 + 40 + world.getDifficulty().getId() * 7) / (i + 30);
@@ -338,6 +339,11 @@ public class FireBlock extends BaseFireBlock {
@@ -345,6 +346,11 @@ public class FireBlock extends BaseFireBlock {
}
private int getIgniteOdds(LevelReader world, BlockPos pos) {
@@ -37,7 +37,7 @@ index 4002e0fffb60556e7af1aeff71b4be244f02b0f5..8fc696d806aa3f4af313f145397ec497
if (!world.isEmptyBlock(pos)) {
return 0;
} else {
@@ -346,10 +352,20 @@ public class FireBlock extends BaseFireBlock {
@@ -353,10 +359,20 @@ public class FireBlock extends BaseFireBlock {
int j = aenumdirection.length;
for (int k = 0; k < j; ++k) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Lava riptide
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
index 8078f127ff4b6e0aafb5804b9c02e237f79445b5..801f066878d6ffe5dabe01d20513db9022b323ec 100644
index 5fab851b319847035fb1eefd0ab999de3ccc2cd8..272a509aea654c76628915d61b7d57b888e34e93 100644
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
@@ -66,7 +66,7 @@ public class TridentItem extends Item implements Vanishable {
@@ -17,7 +17,7 @@ index 8078f127ff4b6e0aafb5804b9c02e237f79445b5..801f066878d6ffe5dabe01d20513db90
if (!world.isClientSide) {
// CraftBukkit - moved down
/*
@@ -162,7 +162,7 @@ public class TridentItem extends Item implements Vanishable {
@@ -163,7 +163,7 @@ public class TridentItem extends Item implements Vanishable {
if (itemstack.getDamageValue() >= itemstack.getMaxDamage() - 1) {
return InteractionResultHolder.fail(itemstack);

View File

@@ -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 a95b794553074a8c446a55f56862ccf7c5d6c261..7e5712f0fffe2a8606c47bdfe4bfa5191aaf5bfc 100644
index 653de62cf785bd6a3a6f2ea5cd657dcc351d090e..49bed177db75c73f09dfd6b48dc88ae3432f5e84 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -2482,6 +2482,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -2521,6 +2521,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@Override
public void blockUpdated(BlockPos pos, Block block) {
@@ -17,10 +17,10 @@ index a95b794553074a8c446a55f56862ccf7c5d6c261..7e5712f0fffe2a8606c47bdfe4bfa519
// CraftBukkit start
if (this.populating) {
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index d0f7baa80cb7d0883304abe2ed990c258a0d92b6..a314d3aa9b2cf22bc34ac54ba1552138ad39191a 100644
index de277d61b718fe07a87d75a2547bb1c7f8553aa1..fdfbca595e5bff701bf6d9dd7990d67fbb16795f 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -461,7 +461,7 @@ public final class ItemStack {
@@ -482,7 +482,7 @@ public final class ItemStack {
net.minecraft.world.level.block.state.BlockState block = world.getBlockState(newblockposition);
if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Container open passthrough
diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java
index 614777d15bcf4141a89d0a0f7bd880526c668ffd..a9dc9431fab1cbb45119e61be6d7689a34247ed0 100644
index ade170b4c76ad4a36eb2fba831d438642c096205..872f50bdf238ff6cf3d327b3858323a84fcb777d 100644
--- a/src/main/java/net/minecraft/world/level/block/SignBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java
@@ -114,6 +114,25 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
@@ -117,6 +117,25 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
return InteractionResult.SUCCESS;
} else if (flag2) {
return InteractionResult.SUCCESS;

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Bladeren mspt sync protocol
diff --git a/src/main/java/top/leavesmc/leaves/protocol/bladeren/MsptSyncProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/bladeren/MsptSyncProtocol.java
new file mode 100644
index 0000000000000000000000000000000000000000..3250965ac6e7beca255643a8b15f887c2835316a
index 0000000000000000000000000000000000000000..cf909f22f0860e6f56a86510dfcbd949a4c1fc32
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/protocol/bladeren/MsptSyncProtocol.java
@@ -0,0 +1,73 @@
@@ -67,7 +67,7 @@ index 0000000000000000000000000000000000000000..3250965ac6e7beca255643a8b15f887c
+
+ MinecraftServer server = MinecraftServer.getServer();
+ if (server.getTickCount() % LeavesConfig.msptSyncTickInterval == 0) {
+ double mspt = Arrays.stream(server.tickTimes).average().getAsDouble() * 1.0E-6D;
+ double mspt = Arrays.stream(server.getTickTimesNanos()).average().getAsDouble() * 1.0E-6D;
+ double tps = 1000.0D / Math.max(mspt, 50);
+ players.forEach(player -> ProtocolUtils.sendPayloadPacket(player, MSPT_SYNC, buf -> {
+ buf.writeDouble(mspt);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] SIMD support
diff --git a/build.gradle.kts b/build.gradle.kts
index e3ef85b9556b93453d6e4b07a3416ffa3f1029a0..879f8163d820cfe5b0581e80622f530587748127 100644
index 9dd0f8b3e4042bdd3adcb2ec59fdbe9629d0915f..eb7f6bda9fb38dd100d24fb92fce77b93974d874 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -69,6 +69,7 @@ tasks.withType<JavaCompile> {
@@ -83,6 +83,7 @@ tasks.withType<JavaCompile> {
compilerArgs.add("-Xlint:-module")
compilerArgs.add("-Xlint:-removal")
compilerArgs.add("-Xlint:-dep-ann")
@@ -16,7 +16,7 @@ index e3ef85b9556b93453d6e4b07a3416ffa3f1029a0..879f8163d820cfe5b0581e80622f5305
}
// Leaves end - hide irrelevant compilation warnings
@@ -193,6 +194,8 @@ fun TaskContainer.registerRunTask(
@@ -207,6 +208,8 @@ fun TaskContainer.registerRunTask(
minHeapSize = "${memoryGb}G"
maxHeapSize = "${memoryGb}G"

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Dont respond ping before start fully
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
index 2c13147bc063a09bb7907d6f90c3a1e811a09eb1..b6332639468dbfc3086f100809fdb3d471867d12 100644
index e5006e7672ba79ed4bcf2c4173c5a9ed4c68395b..06093105d58db26ae4b7dac80bce659995eeaf0f 100644
--- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
@@ -153,6 +153,12 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Optimize world generation chunk and block access
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
index 50ed7cfe1ecef6d075ba484804827cec83ba2bf2..933569818700d19ed1e18b6550584aa3f432dd31 100644
index 14a5492428eac823a295ef3746d0aca6fbdab4ec..bd1b75907d9fd9726ce513b9e0d84abfa5ed9ae9 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -83,6 +83,10 @@ public class WorldGenRegion implements WorldGenLevel {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Cache BlockStatePairKey hash
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 9a970c6aff2f5f2edbad600156493a7c1f28e620..671a2f0f6f4abe7915644598185092a4ad9106fa 100644
index d38e7894239db17b6a00a6e6316643fbc990d496..478dcee61e4cb5e0691ce52a3be2e307f6d4af64 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -624,11 +624,18 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -632,11 +632,18 @@ public class Block extends BlockBehaviour implements ItemLike {
private final BlockState first;
private final BlockState second;
private final Direction direction;
@@ -28,7 +28,7 @@ index 9a970c6aff2f5f2edbad600156493a7c1f28e620..671a2f0f6f4abe7915644598185092a4
}
public boolean equals(Object object) {
@@ -644,11 +651,17 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -652,11 +659,17 @@ public class Block extends BlockBehaviour implements ItemLike {
}
public int hashCode() {

View File

@@ -142,7 +142,7 @@ index 06648f9751fd8a322d0809ffebf6a544596ee1a4..40e957a4364c8017072dcd81fcb7cf2c
@Override
diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java
index 84fc2adf591f02a14862f7c1cd645c2efde55c3d..8a601f7d10ea985b2383a5be31c0ba8596a16d7b 100644
index e464ada187fd1f15efef29a0e5033aeb0c688059..31ae491fdac6e27a3569c8c421cc49e7eab5d4b5 100644
--- a/src/main/java/net/minecraft/nbt/CompoundTag.java
+++ b/src/main/java/net/minecraft/nbt/CompoundTag.java
@@ -17,6 +17,7 @@ import javax.annotation.Nullable;
@@ -153,7 +153,7 @@ index 84fc2adf591f02a14862f7c1cd645c2efde55c3d..8a601f7d10ea985b2383a5be31c0ba85
public class CompoundTag implements Tag {
public static final Codec<CompoundTag> CODEC = Codec.PASSTHROUGH.comapFlatMap((dynamic) -> {
@@ -416,7 +417,7 @@ public class CompoundTag implements Tag {
@@ -420,7 +421,7 @@ public class CompoundTag implements Tag {
throw new ReportedException(this.createReport(key, ByteArrayTag.TYPE, var3));
}
@@ -162,7 +162,7 @@ index 84fc2adf591f02a14862f7c1cd645c2efde55c3d..8a601f7d10ea985b2383a5be31c0ba85
}
public int[] getIntArray(String key) {
@@ -428,7 +429,7 @@ public class CompoundTag implements Tag {
@@ -432,7 +433,7 @@ public class CompoundTag implements Tag {
throw new ReportedException(this.createReport(key, IntArrayTag.TYPE, var3));
}
@@ -171,7 +171,7 @@ index 84fc2adf591f02a14862f7c1cd645c2efde55c3d..8a601f7d10ea985b2383a5be31c0ba85
}
public long[] getLongArray(String key) {
@@ -440,7 +441,7 @@ public class CompoundTag implements Tag {
@@ -444,7 +445,7 @@ public class CompoundTag implements Tag {
throw new ReportedException(this.createReport(key, LongArrayTag.TYPE, var3));
}
@@ -227,10 +227,10 @@ index b0517b9483a8cfd74997f89efdc0d8559b80ae4a..e7cfc98aa6dc19c5adad4c797ae7292a
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 7e5712f0fffe2a8606c47bdfe4bfa5191aaf5bfc..3579766177a5ad627fef0ba27948e962d1140415 100644
index 49bed177db75c73f09dfd6b48dc88ae3432f5e84..4b3c4e8b404ee8fca48ceb333438a1ecb70c5cb3 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -172,6 +172,7 @@ import org.bukkit.event.weather.LightningStrikeEvent;
@@ -178,6 +178,7 @@ import org.bukkit.event.world.GenericGameEvent;
import org.bukkit.event.world.TimeSkipEvent;
// CraftBukkit end
import it.unimi.dsi.fastutil.ints.IntArrayList; // Paper
@@ -238,16 +238,16 @@ index 7e5712f0fffe2a8606c47bdfe4bfa5191aaf5bfc..3579766177a5ad627fef0ba27948e962
public class ServerLevel extends Level implements WorldGenLevel {
@@ -1047,7 +1048,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1070,7 +1071,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
BlockPos blockposition2 = blockposition.set(j + randomX, randomY, k + randomZ);
BlockState iblockdata = com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(raw);
- iblockdata.randomTick(this, blockposition2, this.randomTickRandom);
+ iblockdata.randomTick(this, blockposition2.immutable(), this.randomTickRandom); // Leaves - reduce array allocations
}
// We drop the fluid tick since LAVA is ALREADY TICKED by the above method (See LiquidBlock).
// TODO CHECK ON UPDATE (ping the Canadian)
}
@@ -1348,7 +1349,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1376,7 +1377,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
public static List<Entity> getCurrentlyTickingEntities() {
Entity ticking = currentlyTickingEntity.get();
@@ -257,10 +257,10 @@ index 7e5712f0fffe2a8606c47bdfe4bfa5191aaf5bfc..3579766177a5ad627fef0ba27948e962
return ret;
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 55e9f1e3124ee1c876ed37cf291df77ac0ee596c..afbefe01fe7b4a129d8bd471658d5ee64507477e 100644
index 6ecfad2ef86a6d2cd280c847e159977285999134..9e1e99a5afa972527d036a32339b571816b325fe 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -239,6 +239,7 @@ import org.bukkit.inventory.EquipmentSlot;
@@ -243,6 +243,7 @@ import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.SmithingInventory;
// CraftBukkit end
@@ -268,7 +268,7 @@ index 55e9f1e3124ee1c876ed37cf291df77ac0ee596c..afbefe01fe7b4a129d8bd471658d5ee6
public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl implements ServerGamePacketListener, ServerPlayerConnection, TickablePacketListener {
@@ -780,13 +781,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -783,13 +784,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - run this async
// CraftBukkit start
if (this.chatSpamTickCount.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamLimit && !this.server.getPlayerList().isOp(this.player.getGameProfile())) { // Paper start - split and make configurable
@@ -284,7 +284,7 @@ index 55e9f1e3124ee1c876ed37cf291df77ac0ee596c..afbefe01fe7b4a129d8bd471658d5ee6
return;
}
// Paper end
@@ -3200,7 +3201,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -3202,7 +3203,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Paper start
if (!org.bukkit.Bukkit.isPrimaryThread()) {
if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) {
@@ -294,10 +294,10 @@ index 55e9f1e3124ee1c876ed37cf291df77ac0ee596c..afbefe01fe7b4a129d8bd471658d5ee6
}
}
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 1c4f272219e68373eaae93fc5ea9af7d8f3fd6f9..e6834c3388cba6d014871efb3ab2b9538ca18c3f 100644
index 89b3184be952fd0803520dd0f717f3acfc3cb496..adf510f28ce9a9c83821e23e0e46dfc32659c6a7 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -43,6 +43,7 @@ import org.bukkit.craftbukkit.util.Waitable;
@@ -44,6 +44,7 @@ import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerPreLoginEvent;
// CraftBukkit end
@@ -305,20 +305,18 @@ index 1c4f272219e68373eaae93fc5ea9af7d8f3fd6f9..e6834c3388cba6d014871efb3ab2b953
public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, TickablePacketListener {
@@ -157,8 +158,10 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
@@ -138,8 +139,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
@Override
public void handleHello(ServerboundHelloPacket packet) {
- Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", new Object[0]);
- Validate.validState(ServerLoginPacketListenerImpl.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]);
+ // Gale start - JettPack - reduce array allocations
+ Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", ArrayConstants.emptyObjectArray);
+ Validate.validState(ServerLoginPacketListenerImpl.isValidUsername(packet.name()), "Invalid characters in username", ArrayConstants.emptyObjectArray);
+ // Gale end - JettPack - reduce array allocations
// Paper start - validate usernames
if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation) {
if (!this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation && !validateUsername(packet.name())) {
@@ -251,7 +254,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
- if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) Validate.validState(Player.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]); // Paper - config username validation
+ Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", ArrayConstants.emptyObjectArray); // Leaves - reduce array allocations
+ if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) Validate.validState(Player.isValidUsername(packet.name()), "Invalid characters in username", ArrayConstants.emptyObjectArray); // Paper - config username validation // Leaves - reduce array allocations
this.requestedUsername = packet.name();
GameProfile gameprofile = this.server.getSingleplayerProfile();
@@ -218,7 +219,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
@Override
public void handleKey(ServerboundKeyPacket packet) {
@@ -328,18 +326,18 @@ index 1c4f272219e68373eaae93fc5ea9af7d8f3fd6f9..e6834c3388cba6d014871efb3ab2b953
final String s;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 683691fa61d02be951a0f759b1983ce9c5cd3863..1bc21038e33faa9c1f24acedabeb84741e31de05 100644
index 2818f21777560f271379884e0cf3ef26bd99196a..cd962621ee0d8bd17926a90ce960c46f1ae5a8dd 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -123,6 +123,7 @@ import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
// CraftBukkit end
@@ -122,6 +122,7 @@ import org.bukkit.event.player.PlayerSpawnChangeEvent;
+import top.leavesmc.leaves.util.ArrayConstants;
import top.leavesmc.leaves.bot.ServerBot;
import top.leavesmc.leaves.util.ReturnPortalManager; // Leaves - return portal fix
+import top.leavesmc.leaves.util.ArrayConstants;
public abstract class PlayerList {
@@ -736,7 +737,7 @@ public abstract class PlayerList {
@@ -734,7 +735,7 @@ public abstract class PlayerList {
while (iterator.hasNext()) {
entityplayer = (ServerPlayer) iterator.next();
this.save(entityplayer); // CraftBukkit - Force the player's inventory to be saved
@@ -349,10 +347,10 @@ index 683691fa61d02be951a0f759b1983ce9c5cd3863..1bc21038e33faa9c1f24acedabeb8474
// Instead of kicking then returning, we need to store the kick reason
diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java
index 09fc086548b9d0f97849f56f41e3a5be87f5091a..455efedffb3301a9883107dc35499f493a06a4ef 100644
index 665120a62525f56912263a3e1b6f12f6c3e15dec..7fd220838520bf0f971d6fbe6d9286592d590253 100644
--- a/src/main/java/net/minecraft/server/players/StoredUserList.java
+++ b/src/main/java/net/minecraft/server/players/StoredUserList.java
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
@@ -25,6 +25,7 @@ import javax.annotation.Nullable;
import net.minecraft.Util;
import net.minecraft.util.GsonHelper;
import org.slf4j.Logger;
@@ -360,7 +358,7 @@ index 09fc086548b9d0f97849f56f41e3a5be87f5091a..455efedffb3301a9883107dc35499f49
public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
@@ -96,7 +97,7 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
@@ -79,7 +80,7 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
}
public String[] getUserList() {
@@ -398,10 +396,10 @@ index 2e324276ea4cd9e528c6a3f9a9ba394b378fe075..8d949983a30f27a60982f6b406151408
private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) {
this.type = type;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index eea0eb67b3f74574d8dcd8cad30394f3a49cb2cd..8360805905810eae915a61b2e41aedf232c106da 100644
index c5be586d14751991c95626adb76d7a99612f7daa..2b34c1b58bc0f25462834bdc2e79c6936553729b 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3146,7 +3146,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3143,7 +3143,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@Nullable
private Map<EquipmentSlot, ItemStack> collectEquipmentChanges() {
Map<EquipmentSlot, ItemStack> map = null;
@@ -411,10 +409,10 @@ index eea0eb67b3f74574d8dcd8cad30394f3a49cb2cd..8360805905810eae915a61b2e41aedf2
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 115c25ec168145ae78797eeed830de66aa4546b1..c233c1e9f3162e6835d02ec1f3ef8267f8f1d7b2 100644
index 339782b10101189fdf70d41330d2e793713d1544..a4193814174821614e8c47d7662d567a352102bc 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1081,7 +1081,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -1082,7 +1082,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@Override
protected void dropCustomDeathLoot(DamageSource source, int lootingMultiplier, boolean allowDrops) {
super.dropCustomDeathLoot(source, lootingMultiplier, allowDrops);
@@ -423,7 +421,7 @@ index 115c25ec168145ae78797eeed830de66aa4546b1..c233c1e9f3162e6835d02ec1f3ef8267
int j = aenumitemslot.length;
for (int k = 0; k < j; ++k) {
@@ -1143,7 +1143,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -1144,7 +1144,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
}
boolean flag = true;
@@ -432,7 +430,7 @@ index 115c25ec168145ae78797eeed830de66aa4546b1..c233c1e9f3162e6835d02ec1f3ef8267
int j = aenumitemslot.length;
for (int k = 0; k < j; ++k) {
@@ -1230,7 +1230,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -1231,7 +1231,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
float f = localDifficulty.getSpecialMultiplier();
this.enchantSpawnedWeapon(random, f);
@@ -441,7 +439,7 @@ index 115c25ec168145ae78797eeed830de66aa4546b1..c233c1e9f3162e6835d02ec1f3ef8267
int i = aenumitemslot.length;
for (int j = 0; j < i; ++j) {
@@ -1449,7 +1449,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -1450,7 +1450,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
t0.setInvulnerable(this.isInvulnerable());
if (flag) {
t0.setCanPickUpLoot(this.canPickUpLoot());
@@ -464,10 +462,10 @@ index 94396ad1a3c280787d36c6c18256d10340ace488..ae0de0d0cb970a10a8a612cf34810a36
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index a314d3aa9b2cf22bc34ac54ba1552138ad39191a..e46f323e0b11bc22b7c4c07f313cbba501eb0cc0 100644
index fdfbca595e5bff701bf6d9dd7990d67fbb16795f..c85ae98b7d50e7f08035417d2f4d43099c02041c 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -1027,7 +1027,7 @@ public final class ItemStack {
@@ -1052,7 +1052,7 @@ public final class ItemStack {
int k;
if (ItemStack.shouldShowInTooltip(i, ItemStack.TooltipPart.MODIFIERS)) {
@@ -477,10 +475,10 @@ index a314d3aa9b2cf22bc34ac54ba1552138ad39191a..e46f323e0b11bc22b7c4c07f313cbba5
k = aenumitemslot.length;
diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java
index 17bef91546fa85d401b263c3a69fbf464f290eca..131d9b730f1c3dfa4c8c4a63a6567fe3ebd6191e 100644
index d772cf80fa3831e1c79d601ea09a073da089e2c5..4699f5fd794a7ef1f430e801bd35f1c62452aa8e 100644
--- a/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java
+++ b/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java
@@ -25,6 +25,7 @@ import org.bukkit.craftbukkit.inventory.CraftRecipe;
@@ -16,6 +16,7 @@ import org.bukkit.craftbukkit.inventory.CraftRecipe;
import org.bukkit.craftbukkit.inventory.CraftShapedRecipe;
import org.bukkit.inventory.RecipeChoice;
// CraftBukkit end
@@ -488,37 +486,28 @@ index 17bef91546fa85d401b263c3a69fbf464f290eca..131d9b730f1c3dfa4c8c4a63a6567fe3
public class ShapedRecipe extends io.papermc.paper.inventory.recipe.RecipeBookExactChoiceRecipe<CraftingContainer> implements CraftingRecipe { // Paper - improve exact recipe choices
@@ -226,7 +227,7 @@ public class ShapedRecipe extends io.papermc.paper.inventory.recipe.RecipeBookEx
}
if (pattern.size() == l) {
- return new String[0];
+ return ArrayConstants.emptyStringArray; // Leaves - reduce array allocations
} else {
String[] astring = new String[pattern.size() - l - k];
diff --git a/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java b/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java
index 2bfbdaeb2b0d99dfd956cd5936403fe8b0eeae64..7ad1545631604aa55f6d4fbdcbaefe6dc647f35c 100644
index 6c2e8049c2197ddc912c1a0fc99c87beae81e25b..be13baa7b51c4ad377b50d8ca8f7cfad3c870390 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java
@@ -44,8 +44,10 @@ public class Enchantments {
public static final Enchantment MULTISHOT = Enchantments.register("multishot", new MultiShotEnchantment(Enchantment.Rarity.RARE, new EquipmentSlot[]{EquipmentSlot.MAINHAND}));
public static final Enchantment QUICK_CHARGE = Enchantments.register("quick_charge", new QuickChargeEnchantment(Enchantment.Rarity.UNCOMMON, new EquipmentSlot[]{EquipmentSlot.MAINHAND}));
public static final Enchantment PIERCING = Enchantments.register("piercing", new ArrowPiercingEnchantment(Enchantment.Rarity.COMMON, new EquipmentSlot[]{EquipmentSlot.MAINHAND}));
- public static final Enchantment MENDING = Enchantments.register("mending", new MendingEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.values()));
- public static final Enchantment VANISHING_CURSE = Enchantments.register("vanishing_curse", new VanishingCurseEnchantment(Enchantment.Rarity.VERY_RARE, EquipmentSlot.values()));
@@ -43,8 +43,10 @@ public class Enchantments {
public static final Enchantment MULTISHOT = register("multishot", new MultiShotEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.MAINHAND));
public static final Enchantment QUICK_CHARGE = register("quick_charge", new QuickChargeEnchantment(Enchantment.Rarity.UNCOMMON, EquipmentSlot.MAINHAND));
public static final Enchantment PIERCING = register("piercing", new ArrowPiercingEnchantment(Enchantment.Rarity.COMMON, EquipmentSlot.MAINHAND));
- public static final Enchantment MENDING = register("mending", new MendingEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.values()));
- public static final Enchantment VANISHING_CURSE = register("vanishing_curse", new VanishingCurseEnchantment(Enchantment.Rarity.VERY_RARE, EquipmentSlot.values()));
+ // Leaves start - reduce array allocations
+ public static final Enchantment MENDING = Enchantments.register("mending", new MendingEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.VALUES));
+ public static final Enchantment VANISHING_CURSE = Enchantments.register("vanishing_curse", new VanishingCurseEnchantment(Enchantment.Rarity.VERY_RARE, EquipmentSlot.VALUES));
+ // Leaves end - reduce array allocations
public Enchantments() {}
private static Enchantment register(String name, Enchantment enchantment) {
return Registry.register(BuiltInRegistries.ENCHANTMENT, name, enchantment);
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index cdfeb7f87efdfe689a43b3d13656c8f682b5400e..cabd335e0a52e992bb2e1fbd3215ee10715c993b 100644
index 614c37b11f7820bedc576fce74829c1950ed7756..302f0f5c3a8137e1eb1b90a25e92e82e308c02c4 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -94,6 +94,7 @@ import org.bukkit.craftbukkit.util.CraftSpawnCategory;
@@ -97,6 +97,7 @@ import org.bukkit.craftbukkit.util.CraftSpawnCategory;
import org.bukkit.entity.SpawnCategory;
import org.bukkit.event.block.BlockPhysicsEvent;
// CraftBukkit end
@@ -526,7 +515,7 @@ index cdfeb7f87efdfe689a43b3d13656c8f682b5400e..cabd335e0a52e992bb2e1fbd3215ee10
public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1828,7 +1829,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1848,7 +1849,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public org.bukkit.entity.Entity[] getChunkEntities(int chunkX, int chunkZ) {
io.papermc.paper.world.ChunkEntitySlices slices = ((ServerLevel)this).getEntityLookup().getChunk(chunkX, chunkZ);
if (slices == null) {
@@ -536,10 +525,10 @@ index cdfeb7f87efdfe689a43b3d13656c8f682b5400e..cabd335e0a52e992bb2e1fbd3215ee10
return slices.getChunkEntities();
}
diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
index 10d3912ef043eefdf89105332e29b0d2bf4a5539..3bc33b552743be03c6b895e0d217152a65454807 100644
index de8b5cab7925c1c46478952ed2cb2bd40f9a9c48..3ea1c2a9a3e6dfb65d95b5ed92d21f401a1c0cd2 100644
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
@@ -43,6 +43,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
@@ -44,6 +44,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
import org.bukkit.craftbukkit.inventory.CraftBlockInventoryHolder;
import org.bukkit.craftbukkit.util.DummyGeneratorAccess;
// CraftBukkit end
@@ -547,7 +536,7 @@ index 10d3912ef043eefdf89105332e29b0d2bf4a5539..3bc33b552743be03c6b895e0d217152a
public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -415,7 +416,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -422,7 +423,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@Override
public int[] getSlotsForFace(Direction side) {
@@ -556,7 +545,7 @@ index 10d3912ef043eefdf89105332e29b0d2bf4a5539..3bc33b552743be03c6b895e0d217152a
}
@Override
@@ -464,7 +465,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -471,7 +472,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@Override
public int[] getSlotsForFace(Direction side) {
@@ -565,7 +554,7 @@ index 10d3912ef043eefdf89105332e29b0d2bf4a5539..3bc33b552743be03c6b895e0d217152a
}
@Override
@@ -506,7 +507,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -513,7 +514,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@Override
public int[] getSlotsForFace(Direction side) {
@@ -596,10 +585,10 @@ index eeed0ccbf0fc04e12dea5e8602f67d862fbd3600..0caf6040c2da342971c37a9af5d83f32
private static final int[] SLOTS_FOR_SIDES = new int[]{1};
public static final int DATA_LIT_DURATION = 1;
diff --git a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
index 36af81f0957d17e170d229059c66f4eb4539dfeb..487d09aaadd9cf1b239cf9773fa71cbff6e6a77e 100644
index b3a90d6ef0e17c236e0b3c46e2d0012671afdaa7..f273d6ab29d8c2a36a4a00ef341d2a8e7ce3e8c3 100644
--- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
+++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
@@ -9,7 +9,6 @@ import net.minecraft.nbt.CompoundTag;
@@ -12,7 +12,6 @@ import net.minecraft.nbt.NbtAccounter;
import net.minecraft.nbt.NbtIo;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.server.level.ServerPlayer;
@@ -607,7 +596,7 @@ index 36af81f0957d17e170d229059c66f4eb4539dfeb..487d09aaadd9cf1b239cf9773fa71cbf
import net.minecraft.world.entity.player.Player;
import org.slf4j.Logger;
@@ -18,6 +17,7 @@ import java.io.FileInputStream;
@@ -21,6 +20,7 @@ import java.io.FileInputStream;
import java.io.InputStream;
import org.bukkit.craftbukkit.entity.CraftPlayer;
// CraftBukkit end
@@ -615,7 +604,7 @@ index 36af81f0957d17e170d229059c66f4eb4539dfeb..487d09aaadd9cf1b239cf9773fa71cbf
public class PlayerDataStorage {
@@ -119,7 +119,7 @@ public class PlayerDataStorage {
@@ -124,7 +124,7 @@ public class PlayerDataStorage {
String[] astring = this.playerDir.list();
if (astring == null) {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize sun burn tick
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 00cc1bfec7578f2118d38ef275e92a0c01ecdecc..4fdacff42533daa0cd4eabc25b5f30cbc9bbbfb4 100644
index 9752b4205b5d3047b29fc7e98233f4f601826a57..3d450dd637502941fb0a0be9aa64f09bf14eef0a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1989,8 +1989,22 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1994,8 +1994,22 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
/** @deprecated */
@Deprecated
public float getLightLevelDependentMagicValue() {
@@ -34,10 +34,10 @@ index 00cc1bfec7578f2118d38ef275e92a0c01ecdecc..4fdacff42533daa0cd4eabc25b5f30cb
public void absMoveTo(double x, double y, double z, float yaw, float pitch) {
this.absMoveTo(x, y, z);
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index c233c1e9f3162e6835d02ec1f3ef8267f8f1d7b2..7a4231892fb43a10193e2881f3715b32ac1c382f 100644
index a4193814174821614e8c47d7662d567a352102bc..b24076ebe434b510a3a01b99dd41dbb481f4cf66 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1711,15 +1711,41 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -1712,15 +1712,41 @@ public abstract class Mob extends LivingEntity implements Targeting {
}

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Use optimized collection
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 55cdb8e23b91ad68ad128c664ddad5b2cd734423..f84b3716657784ba8448b91dbebef4a12422a5d1 100644
index ea617a5695db07d58f9115d85a06e6c07c47953e..1ffbec72ea000be04f4d0abfa9831e27b3cf3fac 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -237,7 +237,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -71,10 +71,10 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..2d1abb9518795875b3719efe91e60508
private final EnumSet<Goal.Flag> disabledFlags = EnumSet.noneOf(Goal.Flag.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be.
private final com.destroystokyo.paper.util.set.OptimizedSmallEnumSet<net.minecraft.world.entity.ai.goal.Goal.Flag> goalTypes = new com.destroystokyo.paper.util.set.OptimizedSmallEnumSet<>(Goal.Flag.class); // Paper - remove streams from pathfindergoalselector
diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java
index 6639902efb85b4f49f26ba5f90556fb871ef8a0e..d1c389021503423f20835dac32550da285930392 100644
index 4f2fa47d094348bb8f86a86e808019ddba56e187..e6938589bf12ccd401cc6700cfa5f28cefc93c9f 100644
--- a/src/main/java/net/minecraft/world/level/GameRules.java
+++ b/src/main/java/net/minecraft/world/level/GameRules.java
@@ -137,7 +137,7 @@ public class GameRules {
@@ -141,7 +141,7 @@ public class GameRules {
}
private GameRules(Map<GameRules.Key<?>, GameRules.Value<?>> rules) {
@@ -84,10 +84,10 @@ index 6639902efb85b4f49f26ba5f90556fb871ef8a0e..d1c389021503423f20835dac32550da2
// Paper start
int arraySize = rules.keySet().stream().mapToInt(key -> key.gameRuleIndex).max().orElse(-1) + 1;
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 671a2f0f6f4abe7915644598185092a4ad9106fa..6058750fdc664e674b00551dbbbaeae78c00028a 100644
index 478dcee61e4cb5e0691ce52a3be2e307f6d4af64..38f3644ffe7fd13f13b928ee8568860a23d7c69d 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -61,6 +61,7 @@ import net.minecraft.world.phys.shapes.BooleanOp;
@@ -62,6 +62,7 @@ import net.minecraft.world.phys.shapes.BooleanOp;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.slf4j.Logger;
@@ -95,7 +95,7 @@ index 671a2f0f6f4abe7915644598185092a4ad9106fa..6058750fdc664e674b00551dbbbaeae7
public class Block extends BlockBehaviour implements ItemLike {
@@ -72,6 +73,12 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -74,6 +75,12 @@ public class Block extends BlockBehaviour implements ItemLike {
return !Shapes.joinIsNotEmpty(Shapes.block(), voxelshape, BooleanOp.NOT_SAME);
}
});

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Check frozen ticks before landing block
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 61379db810c84a6044dee6d1a0457442d41cb407..8e9af399588698b05018cc63b5c36841a0bc02ed 100644
index 2b34c1b58bc0f25462834bdc2e79c6936553729b..abc2c1c5ffb1ccf8bfac88b79326d62921daf632 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -582,11 +582,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -581,11 +581,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
protected void tryAddFrost() {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Cache ominous banner item
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java b/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java
index 3509fd5ad4f06cbac24d2dcdde171cebbdd0fcc1..d0bbe00173c72eccd4b9a8a72b17ad698fb5fbf3 100644
index f4e5ada556a7fc7adac9b8d3e75ace483f753782..31a26dc4b6fb22fa27e7e6de0c7a32df04849271 100644
--- a/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java
+++ b/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java
@@ -15,7 +15,7 @@ public record EntityEquipmentPredicate(Optional<ItemPredicate> head, Optional<It

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Skip entity move if movement is zero
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index b0056c266ef358b4784b6ce4539806810e1904b9..a88e7d5fae43abb8ee5d3111d53100e27cd11350 100644
index 3d450dd637502941fb0a0be9aa64f09bf14eef0a..98570eb6c9c42bba4daf32d447c29650cfcd4de7 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -314,6 +314,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -315,6 +315,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
public float yRotO;
public float xRotO;
private AABB bb;
@@ -17,7 +17,7 @@ index b0056c266ef358b4784b6ce4539806810e1904b9..a88e7d5fae43abb8ee5d3111d53100e2
public boolean onGround;
public boolean horizontalCollision;
public boolean verticalCollision;
@@ -1042,6 +1043,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1047,6 +1048,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
// Paper end - detailed watchdog information
public void move(MoverType movementType, Vec3 movement) {
@@ -31,7 +31,7 @@ index b0056c266ef358b4784b6ce4539806810e1904b9..a88e7d5fae43abb8ee5d3111d53100e2
// Paper start - detailed watchdog information
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
synchronized (this.posLock) {
@@ -4047,6 +4055,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -4085,6 +4093,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
public final void setBoundingBox(AABB boundingBox) {

View File

@@ -6,15 +6,15 @@ Subject: [PATCH] Skip cloning advancement criteria
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/advancements/Advancement.java b/src/main/java/net/minecraft/advancements/Advancement.java
index afa5ac5e3b045f8eeafd14b7db09e547fbd59f3a..d9d53679c5eebaf848238cfb9288ae3c6a4d687f 100644
index a053d30f171c0c022888f098313b50f73c434180..b0904b5b0a7eff80f66759febd893ae1cc68ced8 100644
--- a/src/main/java/net/minecraft/advancements/Advancement.java
+++ b/src/main/java/net/minecraft/advancements/Advancement.java
@@ -22,7 +22,7 @@ import net.minecraft.world.level.ItemLike;
@@ -40,7 +40,7 @@ public record Advancement(Optional<ResourceLocation> parent, Optional<DisplayInf
}), Advancement::validate);
public record Advancement(Optional<ResourceLocation> parent, Optional<DisplayInfo> display, AdvancementRewards rewards, Map<String, Criterion<?>> criteria, AdvancementRequirements requirements, boolean sendsTelemetryEvent, Optional<Component> name) {
public Advancement(Optional<ResourceLocation> parent, Optional<DisplayInfo> display, AdvancementRewards rewards, Map<String, Criterion<?>> criteria, AdvancementRequirements requirements, boolean sendsTelemetryEvent) {
- this(parent, display, rewards, Map.copyOf(criteria), requirements, sendsTelemetryEvent, display.map(Advancement::decorateName));
+ this(parent, display, rewards, !top.leavesmc.leaves.LeavesConfig.skipCloningAdvancementCriteria ? Map.copyOf(criteria) : criteria, requirements, sendsTelemetryEvent, display.map(Advancement::decorateName)); // Leaves - skip cloning advancement criteria
}
public static Component decorateName(DisplayInfo display) {
private static DataResult<Advancement> validate(Advancement advancement) {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Skip negligible planar movement multiplication
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index f0ccd174fb7fa56ab3cd387d6680e8c5e5ecb5c3..c1f0c485af4198ba16c606bcfa8507982776ec55 100644
index 98570eb6c9c42bba4daf32d447c29650cfcd4de7..295f16965ef33c6369303b3c9a19be047223afaa 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1213,9 +1213,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1218,9 +1218,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
this.tryCheckInsideBlocks();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Fix villagers dont release memory
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index cbe2a37f74f4fb2abd0b3297699e54335aaed64f..212c8a00eae9ef255e70790c26e50c44f9d5ff49 100644
index 11935e5b16324af572b07c5b173708f5a91f8289..0b334ab58d723f27dae68974ed6ec5d64b10ad40 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -1076,4 +1076,20 @@ public class Villager extends AbstractVillager implements ReputationEventHandler

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Avoid anvil too expensive
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b9fcf49ed88c62265d9aa8926c1228b96bf314b6 100644
index f00638e9d7baf8b803dd610f2bf6250da34efab3..6ceb841fe5b415265cf3799d11c85f1ac9166601 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -293,7 +293,7 @@ public class AnvilMenu extends ItemCombinerMenu {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Zero tick plants
diff --git a/src/main/java/net/minecraft/world/level/block/BambooStalkBlock.java b/src/main/java/net/minecraft/world/level/block/BambooStalkBlock.java
index 05a508cb457b67078ccb08bd2228a59e73701cf3..a1d340eb20fab567eee26591dffee2c57cfafd05 100644
index 1dd85da8da9e2040d740c5f573e7438380f9a7a8..a7fd8a4a6eb252bac8641547cef3a76e47118fcc 100644
--- a/src/main/java/net/minecraft/world/level/block/BambooStalkBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BambooStalkBlock.java
@@ -115,8 +115,11 @@ public class BambooStalkBlock extends Block implements BonemealableBlock {
@@ -122,8 +122,11 @@ public class BambooStalkBlock extends Block implements BonemealableBlock {
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) {
if (!state.canSurvive(world, pos)) {
world.destroyBlock(pos, true);
@@ -22,10 +22,10 @@ index 05a508cb457b67078ccb08bd2228a59e73701cf3..a1d340eb20fab567eee26591dffee2c5
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
index 0003fb51ae3a6575575e10b4c86719f3061e2577..12e251428260c6e05e9a48c71493aaf2bd2b486b 100644
index a9629a102c4fa4e5720e63fcf4590e9231426c62..b630f9c84e736bcc5d28e5ffd90bc47b2502d3de 100644
--- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
@@ -39,8 +39,11 @@ public class CactusBlock extends Block {
@@ -46,8 +46,11 @@ public class CactusBlock extends Block {
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) {
if (!state.canSurvive(world, pos)) {
world.destroyBlock(pos, true);
@@ -39,10 +39,10 @@ index 0003fb51ae3a6575575e10b4c86719f3061e2577..12e251428260c6e05e9a48c71493aaf2
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java b/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java
index e9beebedf1d60e06e16c442b64d28d022a3e3164..cda6d18e4bdaec7d581169b3b8237bb00c1c2962 100644
index 0ab1bbd7c8dc8e45f754434357898d8fc990a021..107a3df31a77ff7d13e18691dc2c96024456a0d6 100644
--- a/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java
@@ -39,8 +39,11 @@ public class ChorusFlowerBlock extends Block {
@@ -51,8 +51,11 @@ public class ChorusFlowerBlock extends Block {
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) {
if (!state.canSurvive(world, pos)) {
world.destroyBlock(pos, true);
@@ -56,10 +56,10 @@ index e9beebedf1d60e06e16c442b64d28d022a3e3164..cda6d18e4bdaec7d581169b3b8237bb0
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
index b325fdec8eb99ce57152a5c0fefa5059685276e4..5897fdb2b9d4eaa07d539d92e74a71f8cee01d7b 100644
index 4ebdc4918131a15a1c91b45e8ceb1392bca20a81..b7941eb8819592adb003adc2c6acb49c5f2709dc 100644
--- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
@@ -138,4 +138,15 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements
@@ -142,4 +142,15 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements
protected GrowingPlantHeadBlock getHeadBlock() {
return this;
}
@@ -76,10 +76,10 @@ index b325fdec8eb99ce57152a5c0fefa5059685276e4..5897fdb2b9d4eaa07d539d92e74a71f8
+ // Leaves end - zero tick plants
}
diff --git a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
index c3f500580d257e1397f2eb7c47b063a6fe6bb405..34de88e9677deb7b81b314d48c4880cce451d6a6 100644
index ceaec1776067b7635c3952025f00f13f4ea86c88..81f8519b8d21d871ff3ddabb4a3674e8f35af82c 100644
--- a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
@@ -39,8 +39,11 @@ public class SugarCaneBlock extends Block {
@@ -46,8 +46,11 @@ public class SugarCaneBlock extends Block {
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) {
if (!state.canSurvive(world, pos)) {
world.destroyBlock(pos, true);

View File

@@ -53,7 +53,7 @@ index 0000000000000000000000000000000000000000..293117a6c54fdce70d69b93fe80ce021
+}
diff --git a/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java b/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..7476f6c5bf8c4572878159a74507193e3c4a6207
index 0000000000000000000000000000000000000000..9b18d711191aa26c9afea85fc901e422e8f8496c
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java
@@ -0,0 +1,234 @@
@@ -202,7 +202,7 @@ index 0000000000000000000000000000000000000000..7476f6c5bf8c4572878159a74507193e
+
+ File nowServerCore = new File(autoUpdateDir + File.separator + "leaves" + File.separator + buildInfo.fileName);
+ File backupServerCore = new File(autoUpdateDir + File.separator + "leaves" + File.separator + buildInfo.fileName + ".old");
+ Util.safeReplaceFile(nowServerCore, outFile.toFile(), backupServerCore);
+ Util.safeReplaceFile(nowServerCore.toPath(), outFile, backupServerCore.toPath());
+
+ try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(corePathFileName))) {
+ bufferedWriter.write(autoUpdateDir + File.separator + "leaves" + File.separator + "leaves-1.20.1.jar");

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Force peaceful mode switch
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 19aec4b735a25592ae173dcb63110d6dce0381e7..6df41418bc02f65c6d5ec84507b6ed799270b90c 100644
index 8a3e55b3a79a174a2a55f38d39ed4b8ba29b8763..d1a32a9e5267c27d1983abfb4812a6063964291f 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -76,6 +76,12 @@ public class ServerChunkCache extends ChunkSource {
@@ -74,6 +74,12 @@ public class ServerChunkCache extends ChunkSource {
private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4];
@@ -21,11 +21,10 @@ index 19aec4b735a25592ae173dcb63110d6dce0381e7..6df41418bc02f65c6d5ec84507b6ed79
private static int getChunkCacheKey(int x, int z) {
return x & 3 | ((z & 3) << 2);
}
@@ -514,6 +520,22 @@ public class ServerChunkCache extends ChunkSource {
this.level.resetIceAndSnowTick();
}
@@ -510,6 +516,21 @@ public class ServerChunkCache extends ChunkSource {
// Leaves end - reset ice & snow tick random
+
gameprofilerfiller.push("filteringLoadedChunks");
+ // Leaves start - peaceful mode switch
+ if (peacefulModeSwitchTick > 0) {
+ if (this.level.getLevelData().getGameTime() % peacefulModeSwitchTick == 0) {
@@ -41,30 +40,37 @@ index 19aec4b735a25592ae173dcb63110d6dce0381e7..6df41418bc02f65c6d5ec84507b6ed79
+ }
+ // Leaves end - peaceful mode switch
+
int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING);
boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
@@ -603,6 +625,16 @@ public class ServerChunkCache extends ChunkSource {
Collections.shuffle(shuffled);
iterator1 = shuffled.iterator();
// Paper start - optimise chunk tick iteration
ChunkMap playerChunkMap = this.chunkMap;
for (ServerPlayer player : this.level.players) {
@@ -628,10 +649,20 @@ public class ServerChunkCache extends ChunkSource {
}
Util.shuffle(shuffled, this.level.random);
chunkIterator = shuffled.iterator();
+ }
+
+ // Leaves start - peaceful mode switch
+ boolean peacefulModeSwitch = false;
+ if (lastSpawnState != null && peacefulModeSwitchCount != -1) {
+ if (peacefulModeSwitchCount >= NaturalSpawner.globalLimitForCategory(level, net.minecraft.world.entity.MobCategory.MONSTER, lastSpawnState.getSpawnableChunkCount())) {
+ peacefulModeSwitch = true;
+ }
}
- try {
- // Paper end - optimise chunk tick iteration
- while (chunkIterator.hasNext()) {
+ }
+ // Leaves end - peaceful mode switch
+
try {
+ try {
+ // Paper end - optimise chunk tick iteration
+ while (chunkIterator.hasNext()) {
LevelChunk chunk1 = chunkIterator.next(); // Paper - optimise chunk tick iteration
ChunkPos chunkcoordintpair = chunk1.getPos();
@@ -662,7 +693,7 @@ public class ServerChunkCache extends ChunkSource {
// Paper end - optimise chunk tick iteration
while (iterator1.hasNext()) {
@@ -635,7 +667,7 @@ public class ServerChunkCache extends ChunkSource {
if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { // Paper - optimise chunk tick iteration
chunk1.incrementInhabitedTime(j);
if (spawn && flag2 && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration
if (spawn && flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration
- NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1);
+ NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1, peacefulModeSwitch); // Leaves - peaceful mode switch
}
@@ -100,10 +106,10 @@ index 7eec9dc8237ff04c53b573c3cc87e6cdbfdda7ed..2aafb872578d266f2826e5bddebc9b4a
boolean spawnThisTick = true;
int limit = enumcreaturetype.getMaxInstancesPerChunk();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 90c76ddcb8af13409490b8976263d27a71954668..da1b4a6dcb87d81b5fb1bfd2f2fd924b59161792 100644
index e1fad381b861471a17529c246bb8a4a9c7646420..306c61c5d37bfda23fecde572ec6acd6d6d91e1e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2364,6 +2364,18 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2370,6 +2370,18 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return CraftFeatureFlag.getFromNMS(this.getHandle().enabledFeatures()).stream().map(FeatureFlag.class::cast).collect(Collectors.toUnmodifiableSet());
}

View File

@@ -25,7 +25,7 @@ index 01514c0948c4705f7cee872ddd4686741feabefe..204718256522b0bcfb2f71754fe73787
LeavesLogger.LOGGER.warning("Auto-Update is not completely safe. Enabling it may cause data security problems!");
}
diff --git a/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java b/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java
index 7476f6c5bf8c4572878159a74507193e3c4a6207..7b38b707869932bd81522c100cb430389d44ad00 100644
index 9b18d711191aa26c9afea85fc901e422e8f8496c..35a9ea436b86137d0329b16489e3fb3bbdedee48 100644
--- a/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java
+++ b/src/main/java/top/leavesmc/leaves/util/LeavesUpdateHelper.java
@@ -7,8 +7,11 @@ import com.google.gson.JsonElement;

View File

@@ -94,10 +94,10 @@ index 73c15a0c56a103ba4e62f0a51af8d42566b07245..a2dd8434cdf1f7b117b46fbb14e75890
if (((List) object).size() >= i) {
return (List) object;
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index fbd602b5219c0eeefea36dbaca7aae10d483a152..e05620a5fa75e22001511fff205b718b3e11619c 100644
index f941e7add46e690e21d39111bed520df9156f154..5ea28c20b34b46eb68fb8a2d468ea009a30180c0 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -224,7 +224,7 @@ public class PlayerAdvancements {
@@ -223,7 +223,7 @@ public class PlayerAdvancements {
public boolean award(AdvancementHolder advancement, String criterionName) {
// Leaves start - bot can't get advancement
@@ -107,11 +107,11 @@ index fbd602b5219c0eeefea36dbaca7aae10d483a152..e05620a5fa75e22001511fff205b718b
}
// Leaves end - bot can't get advancement
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index afbefe01fe7b4a129d8bd471658d5ee64507477e..2277e70b2adacad0341d07da718ce3110253926e 100644
index 9e1e99a5afa972527d036a32339b571816b325fe..a2f3d0d77dd7e07451af4b33f63bae55634f02f0 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -300,7 +300,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.messageSignatureCache = MessageSignatureCache.createDefault();
super(server, connection, clientData, player); // CraftBukkit
this.chunkSender = new PlayerChunkSender(connection.isMemoryConnection());
// Leaves start - fakeplayer
- if (player instanceof top.leavesmc.leaves.bot.ServerBot) {
@@ -120,18 +120,18 @@ index afbefe01fe7b4a129d8bd471658d5ee64507477e..2277e70b2adacad0341d07da718ce311
} else {
connection.setListener(this);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175dbe55e4e8 100644
index cd962621ee0d8bd17926a90ce960c46f1ae5a8dd..2a2262a9f0ead7a9b477cf7a75905b8d2a5f2932 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -125,6 +125,7 @@ import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
import top.leavesmc.leaves.util.ArrayConstants;
@@ -123,6 +123,7 @@ import org.bukkit.event.player.PlayerSpawnChangeEvent;
import top.leavesmc.leaves.bot.ServerBot;
import top.leavesmc.leaves.util.ReturnPortalManager; // Leaves - return portal fix
import top.leavesmc.leaves.util.ArrayConstants;
+import top.leavesmc.leaves.replay.ServerPhotographer;
public abstract class PlayerList {
@@ -157,6 +158,7 @@ public abstract class PlayerList {
@@ -155,6 +156,7 @@ public abstract class PlayerList {
private boolean allowCheatsForAllPlayers;
private static final boolean ALLOW_LOGOUTIVATOR = false;
private int sendAllPlayerInfoIn;
@@ -139,7 +139,7 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
// CraftBukkit start
private CraftServer cserver;
@@ -183,6 +185,120 @@ public abstract class PlayerList {
@@ -181,6 +183,120 @@ public abstract class PlayerList {
}
abstract public void loadAndSaveFiles(); // Paper - moved from DedicatedPlayerList constructor
@@ -260,7 +260,7 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
public void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie clientData) {
player.isRealPlayer = true; // Paper
player.loginTime = System.currentTimeMillis(); // Paper
@@ -329,6 +445,7 @@ public abstract class PlayerList {
@@ -327,6 +443,7 @@ public abstract class PlayerList {
// entityplayer.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(this.players)); // CraftBukkit - replaced with loop below
this.players.add(player);
@@ -268,7 +268,7 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot
this.playersByUUID.put(player.getUUID(), player);
// this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(entityplayer))); // CraftBukkit - replaced with loop below
@@ -400,6 +517,12 @@ public abstract class PlayerList {
@@ -398,6 +515,12 @@ public abstract class PlayerList {
continue;
}
@@ -281,7 +281,7 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
onlinePlayers.add(entityplayer1); // Paper - use single player info update packet
}
// Paper start - use single player info update packet
@@ -615,6 +738,43 @@ public abstract class PlayerList {
@@ -613,6 +736,43 @@ public abstract class PlayerList {
}
@@ -298,7 +298,7 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
+ if (server.isSameThread()) entityplayer.doTick();
+
+ if (this.collideRuleTeamName != null) {
+ final Scoreboard scoreBoard = this.server.getLevel(Level.OVERWORLD).getScoreboard();
+ final net.minecraft.world.scores.Scoreboard scoreBoard = this.server.getLevel(Level.OVERWORLD).getScoreboard();
+ final PlayerTeam team = scoreBoard.getPlayersTeam(this.collideRuleTeamName);
+ if (entityplayer.getTeam() == team && team != null) {
+ scoreBoard.removePlayerFromTeam(entityplayer.getScoreboardName(), team);
@@ -325,7 +325,7 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer) { // CraftBukkit - return string // Paper - return Component
// Paper start
return this.remove(entityplayer, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())));
@@ -683,6 +843,7 @@ public abstract class PlayerList {
@@ -681,6 +841,7 @@ public abstract class PlayerList {
entityplayer.retireScheduler(); // Paper - Folia schedulers
entityplayer.getAdvancements().stopListening();
this.players.remove(entityplayer);
@@ -334,10 +334,10 @@ index 1bc21038e33faa9c1f24acedabeb84741e31de05..dc7b69f429cc9b19080fa05c6135175d
this.server.getCustomBossEvents().onPlayerDisconnect(entityplayer);
UUID uuid = entityplayer.getUUID();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b76d078606b9c8486c1cbff240fd45e69eb9e58d..73e77895559ad935e03f27cee32d433c13d47b73 100644
index a36b234f884e2aae88a29fae872aeef662b27712..43e4c9fe0243f29d66b0255306b02e07f886d8c6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -265,6 +265,7 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
@@ -266,6 +266,7 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
import top.leavesmc.leaves.entity.CraftBotManager;
@@ -345,7 +345,7 @@ index b76d078606b9c8486c1cbff240fd45e69eb9e58d..73e77895559ad935e03f27cee32d433c
import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
@@ -311,6 +312,7 @@ public final class CraftServer implements Server {
@@ -312,6 +313,7 @@ public final class CraftServer implements Server {
private final io.papermc.paper.logging.SysoutCatcher sysoutCatcher = new io.papermc.paper.logging.SysoutCatcher(); // Paper
private final CraftPotionBrewer potionBrewer = new CraftPotionBrewer(); // Paper
private final CraftBotManager botManager = new CraftBotManager();
@@ -353,7 +353,7 @@ index b76d078606b9c8486c1cbff240fd45e69eb9e58d..73e77895559ad935e03f27cee32d433c
// Paper start - Folia region threading API
private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler();
@@ -392,7 +394,7 @@ public final class CraftServer implements Server {
@@ -393,7 +395,7 @@ public final class CraftServer implements Server {
public CraftServer(DedicatedServer console, PlayerList playerList) {
this.console = console;
this.playerList = (DedicatedPlayerList) playerList;
@@ -362,7 +362,7 @@ index b76d078606b9c8486c1cbff240fd45e69eb9e58d..73e77895559ad935e03f27cee32d433c
@Override
public CraftPlayer apply(ServerPlayer player) {
return player.getBukkitEntity();
@@ -3218,4 +3220,11 @@ public final class CraftServer implements Server {
@@ -3250,4 +3252,11 @@ public final class CraftServer implements Server {
return botManager;
}
// Leaves end - Bot API
@@ -375,10 +375,10 @@ index b76d078606b9c8486c1cbff240fd45e69eb9e58d..73e77895559ad935e03f27cee32d433c
+ // Leaves end - replay mod api
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 22e22234473c601bf674f42efa81a6920c0fb344..796423c97b06b29d1e5afa16792338f86738fc81 100644
index 801ee163a71ab2afd822c7f17bf45573c0fd83f5..8598a20fa2a2a81ccbf2099f52c15103f91d53d0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -198,6 +198,8 @@ import top.leavesmc.leaves.bot.ServerBot;
@@ -203,6 +203,8 @@ import top.leavesmc.leaves.bot.ServerBot;
import top.leavesmc.leaves.entity.CraftBot;
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
@@ -387,7 +387,7 @@ index 22e22234473c601bf674f42efa81a6920c0fb344..796423c97b06b29d1e5afa16792338f8
public abstract class CraftEntity implements org.bukkit.entity.Entity {
private static PermissibleBase perm;
@@ -236,6 +238,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -241,6 +243,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
// Leaves start - add CraftBot
if (entity instanceof ServerPlayer) {
if (entity instanceof ServerBot) { return new CraftBot(server, (ServerBot) entity); }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Fix vehicle teleport by end gateway
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
index f26e5626c0823c041eeb388cbcd78e5293d2f0ff..8c13b0ff5a34a66df0e087320e7bb6542fbf89fd 100644
index e5c4deb9a921b90b7e0760955e90e815db95d3a1..29f421a5df918523cfbe7a565e3a0227834db001 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
@@ -108,7 +108,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {

View File

@@ -1,257 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Sun, 13 Aug 2023 17:22:08 +0800
Subject: [PATCH] Leaves tick command
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index a890c2afd91c250e9b06e826a0eaa4d1eadf5a00..863abf6a15cc35bceb18e20a4e2798d3f4d62655 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -184,6 +184,8 @@ import org.bukkit.craftbukkit.Main;
import org.bukkit.event.server.ServerLoadEvent;
// CraftBukkit end
+import top.leavesmc.leaves.util.TickStatus; // Leaves - tick command
+
public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTask> implements ServerInfo, CommandSource, AutoCloseable {
private static MinecraftServer SERVER; // Paper
@@ -1075,6 +1077,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot End
public static volatile RuntimeException chunkSystemCrash; // Paper - rewrite chunk system
+ public static TickStatus tickStatus = TickStatus.NORMAL; // Leaves - tick command
protected void runServer() {
try {
@@ -1123,21 +1126,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.lastOverloadWarning = this.nextTickTime;
}
- ++MinecraftServer.currentTickLong; // Paper
- if ( ++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0 )
- {
- final long diff = curTime - tickSection;
- java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
- tps1.add(currentTps, diff);
- tps5.add(currentTps, diff);
- tps15.add(currentTps, diff);
- // Backwards compat with bad plugins
- this.recentTps[0] = tps1.getAverage();
- this.recentTps[1] = tps5.getAverage();
- this.recentTps[2] = tps15.getAverage();
- // Paper end
- tickSection = curTime;
+ // Leaves start - tick command
+ if (tickStatus != TickStatus.FREEZE) {
+ ++MinecraftServer.currentTickLong; // Paper
+ if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
+ final long diff = curTime - tickSection;
+ java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
+ tps1.add(currentTps, diff);
+ tps5.add(currentTps, diff);
+ tps15.add(currentTps, diff);
+ // Backwards compat with bad plugins
+ this.recentTps[0] = tps1.getAverage();
+ this.recentTps[1] = tps5.getAverage();
+ this.recentTps[2] = tps15.getAverage();
+ // Paper end
+ tickSection = curTime;
+ }
}
+ // Leaves end - tick command
// Spigot end
if (this.debugCommandProfilerDelayStart) {
@@ -1150,11 +1156,23 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.nextTickTime += 50L;
this.startMetricsRecordingTick();
this.profiler.push("tick");
- this.tickServer(this::haveTime);
+ // Leaves start - tick command
+ if (tickStatus == TickStatus.FREEZE) {
+ this.tickFreeze();
+ } else {
+ this.tickServer(this::haveTime);
+ }
+ // Leaves end - tick command
this.profiler.popPush("nextTickWait");
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTime = Math.max(Util.getMillis() + 50L, this.nextTickTime);
- this.waitUntilNextTick();
+ // Leaves start - tick command
+ if (tickStatus == TickStatus.WARP) {
+ this.nextTickTime = Util.getMillis();
+ } else {
+ this.waitUntilNextTick();
+ }
+ // Leaves end - tick command
this.profiler.pop();
this.endMetricsRecordingTick();
this.isReady = true;
@@ -1211,6 +1229,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
+ // Leaves start - tick command - freeze
+ private void tickFreeze() {
+ this.getConnection().tick();
+ this.runAllTasks();
+ while (!this.processQueue.isEmpty()) {
+ this.processQueue.remove().run();
+ }
+ org.spigotmc.WatchdogThread.tick();
+ }
+ // Leaves end - tick command - freeze
+
private static CrashReport constructOrExtractCrashReport(Throwable throwable) {
ReportedException reportedexception = null;
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 21aa07c96ebc7f760ecf8fa62da7dc6738c2cf93..c806c7d445dd04600504f869cfcbd2991cba65dc 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2740,7 +2740,7 @@ public class ServerPlayer extends Player {
}
public boolean allowOperation() {
- return (instaBreakCountPerTick == 0 || placeBlockCountPerTick == 0) && (instaBreakCountPerTick <= 1 && placeBlockCountPerTick <= 2);
+ return MinecraftServer.tickStatus == top.leavesmc.leaves.util.TickStatus.FREEZE || (instaBreakCountPerTick == 0 || placeBlockCountPerTick == 0) && (instaBreakCountPerTick <= 1 && placeBlockCountPerTick <= 2); // Leaves - tick command
}
// Leaves end - player operation limiter
// CraftBukkit end
diff --git a/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java b/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
index da1f7ce2db23c509c70f673c8bb1c46af2ed7279..0259a1472bba36b5bb903e559a99f791e8a9317a 100644
--- a/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
+++ b/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
@@ -13,6 +13,7 @@ import org.bukkit.plugin.PluginManager;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.jetbrains.annotations.NotNull;
import top.leavesmc.leaves.command.subcommands.PeacefulModeSwitchCommand;
+import top.leavesmc.leaves.command.subcommands.TickCommand;
import top.leavesmc.leaves.command.subcommands.UpdateCommand;
import java.util.ArrayList;
@@ -35,6 +36,7 @@ public final class LeavesCommand extends Command {
final Map<Set<String>, LeavesSubcommand> commands = new HashMap<>();
commands.put(Set.of("update"), new UpdateCommand());
commands.put(Set.of("peaceful"), new PeacefulModeSwitchCommand());
+ commands.put(Set.of("tick"), new TickCommand());
return commands.entrySet().stream()
.flatMap(entry -> entry.getKey().stream().map(s -> Map.entry(s, entry.getValue())))
diff --git a/src/main/java/top/leavesmc/leaves/command/subcommands/TickCommand.java b/src/main/java/top/leavesmc/leaves/command/subcommands/TickCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..162c3c005130bfa07c7b924015356430b1e1ac2a
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/command/subcommands/TickCommand.java
@@ -0,0 +1,82 @@
+package top.leavesmc.leaves.command.subcommands;
+
+import io.papermc.paper.command.CommandUtil;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.JoinConfiguration;
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.minecraft.server.MinecraftServer;
+import org.bukkit.command.CommandSender;
+import top.leavesmc.leaves.LeavesConfig;
+import top.leavesmc.leaves.command.LeavesSubcommand;
+import top.leavesmc.leaves.util.TickStatus;
+
+import java.util.Collections;
+import java.util.List;
+
+public class TickCommand implements LeavesSubcommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String subCommand, String[] args) {
+ if (!LeavesConfig.tickCommand) {
+ return true;
+ }
+
+ if (args.length < 1) {
+ sender.sendMessage(Component.join(JoinConfiguration.noSeparators(),
+ Component.text("Tick Status: ", NamedTextColor.GRAY),
+ this.getStatus().getMessage()
+ ));
+ return true;
+ }
+
+ TickStatus oldStatus = this.getStatus();
+
+ switch (args[0]) {
+ case "warp" -> {
+ MinecraftServer.tickStatus = TickStatus.WARP;
+ sender.sendMessage(this.getStatusChangeMessage(oldStatus));
+ }
+
+ case "freeze" -> {
+ MinecraftServer.tickStatus = TickStatus.FREEZE;
+ sender.sendMessage(this.getStatusChangeMessage(oldStatus));
+ }
+
+ case "normal" -> {
+ MinecraftServer.tickStatus = TickStatus.NORMAL;
+ sender.sendMessage(this.getStatusChangeMessage(oldStatus));
+ }
+ }
+ return true;
+ }
+
+ public Component getStatusChangeMessage(TickStatus old) {
+ return Component.join(JoinConfiguration.noSeparators(),
+ Component.text("Tick Status: ", NamedTextColor.GRAY),
+ old.getMessage(),
+ Component.text(" -> ", NamedTextColor.GRAY),
+ this.getStatus().getMessage()
+ );
+ }
+
+ public TickStatus getStatus() {
+ return MinecraftServer.tickStatus;
+ }
+
+ @Override
+ public List<String> tabComplete(final CommandSender sender, final String subCommand, final String[] args) {
+ if (!LeavesConfig.tickCommand) {
+ return Collections.emptyList();
+ }
+
+ if (args.length == 1) {
+ return CommandUtil.getListMatchingLast(sender, args, "normal", "warp", "freeze");
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean tabCompletes() {
+ return LeavesConfig.tickCommand;
+ }
+}
diff --git a/src/main/java/top/leavesmc/leaves/util/TickStatus.java b/src/main/java/top/leavesmc/leaves/util/TickStatus.java
new file mode 100644
index 0000000000000000000000000000000000000000..460307c6d477704417dbfe38364afbc5efe8c767
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/util/TickStatus.java
@@ -0,0 +1,20 @@
+package top.leavesmc.leaves.util;
+
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.NamedTextColor;
+
+public enum TickStatus {
+ NORMAL(Component.text("normal", NamedTextColor.GRAY)),
+ WARP(Component.text("warp", NamedTextColor.GREEN)),
+ FREEZE(Component.text("freeze", NamedTextColor.AQUA));
+
+ private final Component message;
+
+ private TickStatus(Component message) {
+ this.message = message;
+ }
+
+ public Component getMessage() {
+ return message;
+ }
+}

View File

@@ -51,7 +51,7 @@ index 571fdf253ebc5cf2a3ec120c53293b37b770836d..800cadbb379cb90d5351c6d73f994713
ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
BiConsumer<String, String> biConsumer = builder::put;
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 7362fb735a7eb006ebe63190992ae098c4efb2f9..1070582db86ac46e80a0f0ebe4d00eddb5256be6 100644
index 4b13af14fcbe1925f9d3104d95ebbfbc596cfb3c..2225401b9b864d58803cfd76357c4e9f7d97e5ec 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -223,6 +223,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Wool Hopper Counter
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet)
diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..27dded619e1cab0a9df658e25fe6dcd55e1d2555 100644
index 7c29750e534eae4266bf7a63c50e3827401d6569..ab9a8c428975d016fbfa210b3a8cb5310cf3def2 100644
--- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
@@ -33,7 +33,7 @@ import net.minecraft.world.level.ItemLike;
@@ -30,7 +30,7 @@ import net.minecraft.world.level.ItemLike;
public final class Ingredient implements Predicate<ItemStack> {
public static final Ingredient EMPTY = new Ingredient(Stream.empty());
@@ -19,7 +19,7 @@ index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..27dded619e1cab0a9df658e25fe6dcd5
public ItemStack[] itemStacks;
@Nullable
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 9310444c04608a0015844eafa872f24c8baedf4d..772189ffb380335c4c88533f91b28e8d5a327af4 100644
index 5fabdda079ebcb0e5d119f3e60f7447d88dd2707..659d4e62bb57946e595174d758c351e4feed1952 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -444,6 +444,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -61,7 +61,7 @@ index 9310444c04608a0015844eafa872f24c8baedf4d..772189ffb380335c4c88533f91b28e8d
return inventory instanceof WorldlyContainer ? IntStream.of(((WorldlyContainer) inventory).getSlotsForFace(side)) : IntStream.range(0, inventory.getContainerSize());
}
diff --git a/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java b/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
index 0259a1472bba36b5bb903e559a99f791e8a9317a..258c6c97eb8cc86ee53569377c3c472f87293334 100644
index da1f7ce2db23c509c70f673c8bb1c46af2ed7279..5e413b0216289922a49a3de7ff5cd9aef4c3c16e 100644
--- a/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
+++ b/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
@@ -12,6 +12,7 @@ import org.bukkit.permissions.PermissionDefault;
@@ -70,12 +70,12 @@ index 0259a1472bba36b5bb903e559a99f791e8a9317a..258c6c97eb8cc86ee53569377c3c472f
import org.jetbrains.annotations.NotNull;
+import top.leavesmc.leaves.command.subcommands.CounterCommand;
import top.leavesmc.leaves.command.subcommands.PeacefulModeSwitchCommand;
import top.leavesmc.leaves.command.subcommands.TickCommand;
import top.leavesmc.leaves.command.subcommands.UpdateCommand;
@@ -37,6 +38,7 @@ public final class LeavesCommand extends Command {
@@ -35,6 +36,7 @@ public final class LeavesCommand extends Command {
final Map<Set<String>, LeavesSubcommand> commands = new HashMap<>();
commands.put(Set.of("update"), new UpdateCommand());
commands.put(Set.of("peaceful"), new PeacefulModeSwitchCommand());
commands.put(Set.of("tick"), new TickCommand());
+ commands.put(Set.of("counter"), new CounterCommand());
return commands.entrySet().stream()

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Leaves Reload Command
diff --git a/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java b/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
index 258c6c97eb8cc86ee53569377c3c472f87293334..aa69854adfea877d4d8fdc741d6c9f3ca83a12c0 100644
index 5e413b0216289922a49a3de7ff5cd9aef4c3c16e..5109d08998707f7443880b2daff719483dff7a5e 100644
--- a/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
+++ b/src/main/java/top/leavesmc/leaves/command/LeavesCommand.java
@@ -14,6 +14,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
@@ -13,12 +13,12 @@ index 258c6c97eb8cc86ee53569377c3c472f87293334..aa69854adfea877d4d8fdc741d6c9f3c
import top.leavesmc.leaves.command.subcommands.CounterCommand;
import top.leavesmc.leaves.command.subcommands.PeacefulModeSwitchCommand;
+import top.leavesmc.leaves.command.subcommands.ReloadCommand;
import top.leavesmc.leaves.command.subcommands.TickCommand;
import top.leavesmc.leaves.command.subcommands.UpdateCommand;
@@ -39,6 +40,7 @@ public final class LeavesCommand extends Command {
import java.util.ArrayList;
@@ -37,6 +38,7 @@ public final class LeavesCommand extends Command {
commands.put(Set.of("update"), new UpdateCommand());
commands.put(Set.of("peaceful"), new PeacefulModeSwitchCommand());
commands.put(Set.of("tick"), new TickCommand());
commands.put(Set.of("counter"), new CounterCommand());
+ commands.put(Set.of("reload"), new ReloadCommand());

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Spider jockeys drop gapples
diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java
index 71b5a9c97a13f703073c0122742ff9e8a0e49df2..15b1cdc7e2bf53998187c12ffff17c6653098890 100644
index 6f12e342adf1a008709fd9a4fbbbe1da8ec31b83..aaac1df6a29b64446f964285b5e825bc145017b0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java
@@ -154,6 +154,18 @@ public class Spider extends Monster {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Force Void Trade
diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
index e585eca535ceb2ed28334bc3c6949fcb4881a364..7162f7acfdca6985dfdac2661d4e94b1d781a185 100644
index 17cc25b6fbc85c9e0023be7e9d857b2d76f6e58c..4c54a9f54310efb78e5f5c47457b9f0d62c1de55 100644
--- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
@@ -59,6 +59,7 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -63,7 +63,7 @@ index e585eca535ceb2ed28334bc3c6949fcb4881a364..7162f7acfdca6985dfdac2661d4e94b1
+ // Leaves end - force void trade
}
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 452caefc36140937f31be7e67c2580970e64626c..957fefdc5d942e647148f5c5b673a942eea18928 100644
index 0b334ab58d723f27dae68974ed6ec5d64b10ad40..a63549154fc3a2c93b7f66072bc9a89a31bea55f 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -347,6 +347,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -90,7 +90,7 @@ index 452caefc36140937f31be7e67c2580970e64626c..957fefdc5d942e647148f5c5b673a942
this.updateMerchantTimer = 40;
this.increaseProfessionLevelOnUpdate = true;
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index 3c2941d799c9acb3dd9e2b67b7092f4bba5ede17..bde29322bb3158ea99333247cf79ab62c311f581 100644
index 833563e237462ccfc1b730b8f5fb35340d0db854..92981bbfe854339fdb52a5940fadda009987e8e8 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -120,6 +120,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -115,7 +115,7 @@ index 8eab7596e1f7d1beb9ab0d70d1310d26822262e9..55ae9ccbadeb3bb358dd04aadd7b32b1
private int merchantLevel;
private boolean showProgressBar;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
index 8c13b0ff5a34a66df0e087320e7bb6542fbf89fd..d9295fb332342f8f77798757e65d7eb2fa6d7a0f 100644
index 29f421a5df918523cfbe7a565e3a0227834db001..9e0f5df8a398e24de845de1e4019e9e383e2d338 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
@@ -225,6 +225,16 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Servux Protocol
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index 7add47837626b7cbc170b1e0b1d0e445e7b51fa5..6ecd3feb095385afcd69f80392e6282530b3931d 100644
index ed288e84029d5ef7e9b7eb2827458c258f0ce10e..99ad309a2957e25004138a4b32a701108b832514 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -935,6 +935,7 @@ public class LevelChunk extends ChunkAccess {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] CCE update suppression
diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
index 66f652724d1a4a27d75cd2f15c0a50879d5bafc5..346c749aaf4cd8fad14b0813b516576023bf1ee1 100644
index dd40b975b72f7bd16f2c491a36c39b7098c66f2b..b312d46de96ac63d6ff4b7e82eae01d5cb92a843 100644
--- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -249,17 +249,21 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@@ -265,17 +265,21 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@Override
public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Disable offline warn if use proxy
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 1070582db86ac46e80a0f0ebe4d00eddb5256be6..d63da8855732f155bce0ab1ba47c50fb0338ca4b 100644
index 2225401b9b864d58803cfd76357c4e9f7d97e5ec..c2d98ccd9f2a71007dc39c1a67eb2b20b403e833 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -284,7 +284,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Disable moved wrongly threshold
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 2277e70b2adacad0341d07da718ce3110253926e..090e07c9c61578bf0771e89dc36d61f3a00f7a1d 100644
index a2f3d0d77dd7e07451af4b33f63bae55634f02f0..76043154cb073a9ed4b3f15969f7d02cac46443b 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -586,7 +586,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -589,7 +589,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
d10 = d6 * d6 + d7 * d7 + d8 * d8;
boolean flag2 = false;
@@ -17,7 +17,7 @@ index 2277e70b2adacad0341d07da718ce3110253926e..090e07c9c61578bf0771e89dc36d61f3
flag2 = true; // Paper - diff on change, this should be moved wrongly
ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", new Object[]{entity.getName().getString(), this.player.getName().getString(), Math.sqrt(d10)});
}
@@ -1470,7 +1470,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1497,7 +1497,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
d10 = d6 * d6 + d7 * d7 + d8 * d8;
boolean flag2 = false;

View File

@@ -5,16 +5,16 @@ Subject: [PATCH] Armor stand cant kill by mob projectile
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 3d982458fa0e5c5af27368e8750d7d24392386d2..d6cbd2cdaf10a5ba76c6052255b5ae2e119e2db6 100644
index 18e9ee9e0c986b1174ff9529b198a839df12825f..a6d486c867f86d5eec9423e53f37b7df6e93e7e2 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -518,6 +518,14 @@ public class ArmorStand extends LivingEntity {
boolean flag = "player".equals(source.getMsgId());
boolean flag = source.is(DamageTypeTags.CAN_BREAK_ARMOR_STAND);
boolean flag1 = source.is(DamageTypeTags.ALWAYS_KILLS_ARMOR_STANDS);
+ // Leaves start - Armor stand cant kill by mob projectile
+ if (top.leavesmc.leaves.LeavesConfig.armorStandCantKillByMobProjectile) {
+ if (!flag && !(source.getDirectEntity() instanceof AbstractArrow)) {
+ if (!flag && !(source.getDirectEntity() instanceof net.minecraft.world.entity.projectile.AbstractArrow)) {
+ return false;
+ }
+ }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make Item tick vanilla
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index 5eb9d599e2f6e61adb34c991fe9008859633fdfc..862e99ddfcc1216ea4b5a7f12efc1a67ac839674 100644
index c8abafdfc2bd09429fe0a509b1afa1579d5d75b6..aef0d33036dae6ee0cd89cf9a3ec7fdab781b8d9 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -233,6 +233,9 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -251,6 +251,9 @@ public class ItemEntity extends Entity implements TraceableEntity {
// Spigot start - copied from above
@Override
public void inactiveTick() {
@@ -18,7 +18,7 @@ index 5eb9d599e2f6e61adb34c991fe9008859633fdfc..862e99ddfcc1216ea4b5a7f12efc1a67
// CraftBukkit start - Use wall time for pickup and despawn timers
int elapsedTicks = MinecraftServer.currentTick - this.lastTick;
if (this.pickupDelay != 32767) this.pickupDelay -= elapsedTicks;
@@ -250,6 +253,8 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -268,6 +271,8 @@ public class ItemEntity extends Entity implements TraceableEntity {
// CraftBukkit end
this.discard();
}