Update Upstream (Pufferfish)

Also drop merged PRs and patches replaced by the new chunk system
This commit is contained in:
etil2jz
2022-10-13 12:48:37 +02:00
parent 4ee7d3b369
commit ac9967167c
82 changed files with 188 additions and 851 deletions

View File

@@ -5,4 +5,4 @@ org.gradle.vfs.watch=false
group=wtf.etil.mirai group=wtf.etil.mirai
version=1.19.2-R0.1-SNAPSHOT version=1.19.2-R0.1-SNAPSHOT
mcVersion=1.19.2 mcVersion=1.19.2
pufferfishRef=58865aa0d59aa6f459d4256f78917e97428a6124 pufferfishRef=9d9a0e1a32466455cd3c3eff5b673a9e177491d6

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Mirai Configuration
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index da5cab4246bd253fcc4e4d9574bdae1867ebb5ab..61026efa7aa6f60f3bc7f137164734bc08c1bc96 100644 index e43fef0152468944d8a33036344a43e95fe58476..0aa8e0b5f0e5e93114c4ad65e9d9254f7dcd9c12 100644
--- a/src/main/java/org/bukkit/Server.java --- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java
@@ -1948,6 +1948,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -1969,6 +1969,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
} }
// Paper end // Paper end

View File

@@ -7,10 +7,10 @@ Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia You can find the original code on https://github.com/YatopiaMC/Yatopia
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 840aaf9e8fc828b5a7ea02252038c6524680f2e0..994e81359154fc52392fe64cbe5f17a7a67e66c0 100644 index 232c08c9a588d957d90f198ce479e57615c6e650..bfa71be59dd84459bd420ace2d6694e1d80aee81 100644
--- a/src/main/java/org/bukkit/Bukkit.java --- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2410,6 +2410,16 @@ public final class Bukkit { @@ -2430,6 +2430,16 @@ public final class Bukkit {
return server.isStopping(); return server.isStopping();
} }
@@ -28,10 +28,10 @@ index 840aaf9e8fc828b5a7ea02252038c6524680f2e0..994e81359154fc52392fe64cbe5f17a7
* Returns the {@link com.destroystokyo.paper.entity.ai.MobGoals} manager * Returns the {@link com.destroystokyo.paper.entity.ai.MobGoals} manager
* *
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 61026efa7aa6f60f3bc7f137164734bc08c1bc96..f25e6808c9ce7276c3e49c6ad03eda5ffa35e5f8 100644 index 0aa8e0b5f0e5e93114c4ad65e9d9254f7dcd9c12..259209a999b80542a21ce6083301d3848d4006af 100644
--- a/src/main/java/org/bukkit/Server.java --- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java
@@ -2107,6 +2107,26 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -2128,6 +2128,26 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/ */
boolean isStopping(); boolean isStopping();

View File

@@ -1,43 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tom <cryptite@gmail.com>
Date: Fri, 12 Aug 2022 08:20:02 -0500
Subject: [PATCH] Set BlockData without light updates
Copyright (c) 2021 Tom Miller
Original license: MIT
Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
index 9930ebe7a23d306c602840fd43652fbdaba481b3..ed65bb8867bc2b8e67726dee07a82ac3671b0306 100644
--- a/src/main/java/org/bukkit/block/Block.java
+++ b/src/main/java/org/bukkit/block/Block.java
@@ -297,6 +297,28 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
*/
void setBlockData(@NotNull BlockData data, boolean applyPhysics);
+ /**
+ * Sets the complete data for this block
+ *
+ * <br>
+ * Note that applyPhysics = false is not in general safe. It should only be
+ * used when you need to avoid triggering a physics update of neighboring
+ * blocks, for example when creating a {@link Bisected} block. If you are
+ * using a custom populator, then this parameter may also be required to
+ * prevent triggering infinite chunk loads on border blocks. This method
+ * should NOT be used to "hack" physics by placing blocks in impossible
+ * locations. Such blocks are liable to be removed on various events such as
+ * world upgrades. Furthermore setting large amounts of such blocks in close
+ * proximity may overload the server physics engine if an update is
+ * triggered at a later point. If this occurs, the resulting behavior is
+ * undefined.
+ *
+ * @param data new block specific data
+ * @param applyPhysics false to cancel physics from the changed block
+ * @param checkLight false to prevent a light-check update
+ */
+ void setBlockData(@NotNull BlockData data, boolean applyPhysics, boolean checkLight);
+
/**
* Sets the type of this block
*

View File

@@ -9,10 +9,10 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 5e51bc9176b481ec70fd7e5ac23d04d59f8d1a9a..5e79e8fd5d59bb8e372a7b376daa4684285b729f 100644 index 1d98abff1ad0116f7a2599f078aa730cb84843c1..f874819cd0f15c77a032345ac7985cd3d3aa4b25 100644
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -2739,6 +2739,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -2763,6 +2763,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName(); String getClientBrandName();
// Paper end // Paper end

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Mirai Branding Changes
diff --git a/build.gradle.kts b/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts
index 7074295d7399d03e259598bb4bfa0f21434d74be..b3b74bfee4a568697f36d6fab9f77652911c75ff 100644 index f0d22a733e3b97fb959cd566fb6c93c6d5681e16..65441b943a97f8aa453f31bf5cf7f87862fdcc07 100644
--- a/build.gradle.kts --- a/build.gradle.kts
+++ b/build.gradle.kts +++ b/build.gradle.kts
@@ -9,7 +9,7 @@ plugins { @@ -9,7 +9,7 @@ plugins {
@@ -204,7 +204,7 @@ index bf42969859545a8a520923ef1836ffa4a5cc24a0..00000000000000000000000000000000
- } - }
-} -}
diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..509a9a5326d94200ca3d7a83ae47c6bb093d6969 100644 index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..d0a342ce8a5cc1a12ecab7969187166fe3597708 100644
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java --- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
+++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java +++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
@@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole { @@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole {
@@ -217,10 +217,10 @@ index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..509a9a5326d94200ca3d7a83ae47c6bb
.completer(new ConsoleCommandCompleter(this.server)) .completer(new ConsoleCommandCompleter(this.server))
.option(LineReader.Option.COMPLETE_IN_WORD, true); .option(LineReader.Option.COMPLETE_IN_WORD, true);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a6486ccc2faa 100644 index af9da39dffda01325af2ab3dd8b5e1efb18e013a..da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -913,7 +913,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread(); shutdownThread = Thread.currentThread();
org.spigotmc.WatchdogThread.doStop(); // Paper org.spigotmc.WatchdogThread.doStop(); // Paper
if (!isSameThread()) { if (!isSameThread()) {
@@ -229,7 +229,7 @@ index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a648
while (this.getRunningThread().isAlive()) { while (this.getRunningThread().isAlive()) {
this.getRunningThread().stop(); this.getRunningThread().stop();
try { try {
@@ -1675,7 +1675,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1656,7 +1656,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate @DontObfuscate
public String getServerModName() { public String getServerModName() {
@@ -239,7 +239,7 @@ index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a648
public SystemReport fillSystemReport(SystemReport details) { public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 660d3f6e8a59751aa1d5b71f5bab72254b6065b8..613c72b94dc47edf5c454545e2e2b05752a92bc8 100644 index b8efe50c860a7537f345f46f3b3d68906ad54006..adf6308c0d8dbd8919db60abce51082091005bd1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -248,7 +248,7 @@ import javax.annotation.Nullable; // Paper @@ -248,7 +248,7 @@ import javax.annotation.Nullable; // Paper
@@ -302,10 +302,10 @@ index 80553face9c70c2a3d897681e7761df85b22d464..bcdb4fd83b665a6f96b6d6e989f2cfe2
} }
} }
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index d568fc92d03c313a782796cc720a1ebb1a5ad8be..413bcdb0389718a73047a114e6f5d05d96bdcf43 100644 index e9fa7faaa4451e36b3908cbcbbe0baf213abde96..a566fa4b061961fb07720642564c4d521fbacab6 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java --- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -155,14 +155,14 @@ public class WatchdogThread extends Thread @@ -155,14 +155,14 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
if (isLongTimeout) { if (isLongTimeout) {
// Paper end // Paper end
log.log( Level.SEVERE, "------------------------------" ); log.log( Level.SEVERE, "------------------------------" );
@@ -323,7 +323,7 @@ index d568fc92d03c313a782796cc720a1ebb1a5ad8be..413bcdb0389718a73047a114e6f5d05d
// //
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null ) if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
{ {
@@ -185,12 +185,12 @@ public class WatchdogThread extends Thread @@ -185,12 +185,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
// Paper end // Paper end
} else } else
{ {
@@ -335,10 +335,10 @@ index d568fc92d03c313a782796cc720a1ebb1a5ad8be..413bcdb0389718a73047a114e6f5d05d
log.log( Level.SEVERE, "------------------------------" ); log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper - log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Mirai!):" ); // Paper // Mirai + log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Mirai!):" ); // Paper // Mirai
com.destroystokyo.paper.io.chunk.ChunkTaskManager.dumpAllChunkLoadInfo(); // Paper io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system
this.dumpTickingInfo(); // Paper - log detailed tick information this.dumpTickingInfo(); // Paper - log detailed tick information
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( server.serverThread.getId(), Integer.MAX_VALUE ), log ); WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -206,7 +206,7 @@ public class WatchdogThread extends Thread @@ -206,7 +206,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
WatchdogThread.dumpThread( thread, log ); WatchdogThread.dumpThread( thread, log );
} }
} else { } else {

View File

@@ -54,19 +54,19 @@ index ae60bd96b5284d54676d8e7e4dd5d170b526ec1e..2344ea858eda8e54c2eb3ccbdad464ed
return true; return true;
} }
diff --git a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java diff --git a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java
index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80eab1263e 100644 index f597d65d56964297eeeed6c7e77703764178fee0..209c4f0b25470bff7278c0a8dcd30576900b9933 100644
--- a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java --- a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java
+++ b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java +++ b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java
@@ -63,7 +63,7 @@ public final class ChunkEntitySlices { @@ -81,7 +81,7 @@ public final class ChunkEntitySlices {
} }
} }
- return ret.toArray(new org.bukkit.entity.Entity[0]); - return ret.toArray(new org.bukkit.entity.Entity[0]);
+ return ret.toArray(me.titaniumtown.Constants.EMPTY_bukkit_entity_arr); // JettPack + return ret.toArray(me.titaniumtown.Constants.EMPTY_bukkit_entity_arr); // JettPack
} }
// Paper end - optimise CraftChunk#getEntities
@@ -189,7 +189,7 @@ public final class ChunkEntitySlices { public CompoundTag save() {
@@ -298,7 +298,7 @@ public final class ChunkEntitySlices {
protected static final class BasicEntityList<E extends Entity> { protected static final class BasicEntityList<E extends Entity> {
@@ -75,7 +75,7 @@ index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80
protected static final int DEFAULT_CAPACITY = 4; protected static final int DEFAULT_CAPACITY = 4;
protected E[] storage; protected E[] storage;
@@ -200,7 +200,7 @@ public final class ChunkEntitySlices { @@ -309,7 +309,7 @@ public final class ChunkEntitySlices {
} }
public BasicEntityList(final int cap) { public BasicEntityList(final int cap) {
@@ -84,7 +84,7 @@ index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80
} }
public boolean isEmpty() { public boolean isEmpty() {
@@ -212,7 +212,7 @@ public final class ChunkEntitySlices { @@ -321,7 +321,7 @@ public final class ChunkEntitySlices {
} }
private void resize() { private void resize() {
@@ -237,7 +237,7 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..f7f19e360d712211625ff28e92f83949
protected CipherBase(Cipher cipher) { protected CipherBase(Cipher cipher) {
this.cipher = cipher; this.cipher = cipher;
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
index 2a26d03fba2f3b37f176be9e47954ef9a6cd7b3e..969968cfcf2c2ed019fab3407b22d4974926bdd2 100644 index 6967c90c50ea75fb9dd5da808b2c8c8ea046ecec..2852c47afcba5633a747977e250e60a5d28b0e1e 100644
--- a/src/main/java/net/minecraft/network/Connection.java --- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java
@@ -311,7 +311,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -311,7 +311,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -276,10 +276,10 @@ index 5962f7a2b185d7d54a0f9e341a4fdf6e6f1c1ec5..0b677d128cbd108bb58d74d3cfe60155
OptionSpec<Integer> optionspec11 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]); OptionSpec<Integer> optionspec11 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]);
OptionSpec<String> optionspec12 = optionparser.accepts("serverId").withRequiredArg(); OptionSpec<String> optionspec12 = optionparser.accepts("serverId").withRequiredArg();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 9b64602e5ce5100dd1d467d404b4a6486ccc2faa..e5e88728d2d3b4ac9e266294999af84aee4aeae4 100644 index da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c..7ace6c1e81519b3e4f673d23627ca603fecb646d 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1374,8 +1374,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1354,8 +1354,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
try { try {
BufferedImage bufferedimage = ImageIO.read(file); BufferedImage bufferedimage = ImageIO.read(file);
@@ -291,10 +291,10 @@ index 9b64602e5ce5100dd1d467d404b4a6486ccc2faa..e5e88728d2d3b4ac9e266294999af84a
ImageIO.write(bufferedimage, "PNG", bytearrayoutputstream); ImageIO.write(bufferedimage, "PNG", bytearrayoutputstream);
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 88152988425b7b02ec5ce229ba4c24b40e030329..a0317be1eea29e4e911976e0106563cf49db1e6b 100644 index 1eb912ad97f9663bf6bd336ad739f2552b0a5c9b..9901ffe9de585a73e9ef32c700b1e8702f8786d3 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -307,7 +307,7 @@ public class ServerEntity { @@ -303,7 +303,7 @@ public class ServerEntity {
if (this.entity instanceof LivingEntity) { if (this.entity instanceof LivingEntity) {
List<Pair<EquipmentSlot, ItemStack>> list = Lists.newArrayList(); List<Pair<EquipmentSlot, ItemStack>> list = Lists.newArrayList();
@@ -304,10 +304,10 @@ index 88152988425b7b02ec5ce229ba4c24b40e030329..a0317be1eea29e4e911976e0106563cf
for (int j = 0; j < i; ++j) { 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 diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 8ed9f14f1ca71111a8215b28821bd5e398c0d0a6..31a4dac824b3d98e05cef5b96473a8a179516a01 100644 index f8750675044708e71dbf6293be6ce36bd6c510ca..413c5891e1affc89f2d4e63214ef6621d63f83b3 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -877,7 +877,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -907,7 +907,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
BlockPos blockposition2 = blockposition.set(j + randomX, randomY, k + randomZ); BlockPos blockposition2 = blockposition.set(j + randomX, randomY, k + randomZ);
BlockState iblockdata = com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(raw); BlockState iblockdata = com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(raw);
@@ -316,7 +316,7 @@ index 8ed9f14f1ca71111a8215b28821bd5e398c0d0a6..31a4dac824b3d98e05cef5b96473a8a1
// We drop the fluid tick since LAVA is ALREADY TICKED by the above method (See LiquidBlock). // We drop the fluid tick since LAVA is ALREADY TICKED by the above method (See LiquidBlock).
// TODO CHECK ON UPDATE // TODO CHECK ON UPDATE
} }
@@ -1132,7 +1132,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1162,7 +1162,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
public static List<Entity> getCurrentlyTickingEntities() { public static List<Entity> getCurrentlyTickingEntities() {
Entity ticking = currentlyTickingEntity.get(); Entity ticking = currentlyTickingEntity.get();
@@ -364,7 +364,7 @@ index cc55cb14f2d0f656213be25a1e428132871ac5dd..69316c97dd898ecf1a72f032374ccd8e
} }
} }
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 855eac5e6f3a99a2fc31ad0e02c496d4b5c60622..e7ff681368bcbda82ff9f783ce5d953c8dc194b8 100644 index b607f5ccbce10570f827dd21eb38504f42781d2f..d6f1cbea24de82ada6083749f079401dbcca1ced 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -269,8 +269,8 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se @@ -269,8 +269,8 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
@@ -388,7 +388,7 @@ index 855eac5e6f3a99a2fc31ad0e02c496d4b5c60622..e7ff681368bcbda82ff9f783ce5d953c
final String s; 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 diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 5999d85e38951503fc83b40cfe39671921ae5088..c50d214eed0414e9b8dc3062d67dc9427c534ef0 100644 index 06eda955f96b5fe2d08ed0d39229c7a6ebb88931..3fc95b7d7b41e078e1d219e29ada27aeab1320bf 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -741,7 +741,7 @@ public abstract class PlayerList { @@ -741,7 +741,7 @@ public abstract class PlayerList {
@@ -451,10 +451,10 @@ index c82bb38b5b1c9204daef21455723d21509ad1c44..4aa044ab8748c01b0022096733e5bacf
private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) { private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) {
this.type = type; 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 diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index ded69bc892aaf35cc57a562116bb623c07b08550..d33d551838ea12f9f7f4416b9e7b5111e86ad82e 100644 index 26efc49b4530112c8bd3f580ce375ab4203c9609..c0e316582e085873c05a76c16e612eabd2e8cf2a 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3067,7 +3067,7 @@ public abstract class LivingEntity extends Entity { @@ -3070,7 +3070,7 @@ public abstract class LivingEntity extends Entity {
@Nullable @Nullable
private Map<EquipmentSlot, ItemStack> collectEquipmentChanges() { private Map<EquipmentSlot, ItemStack> collectEquipmentChanges() {
Map<EquipmentSlot, ItemStack> map = null; Map<EquipmentSlot, ItemStack> map = null;
@@ -464,7 +464,7 @@ index ded69bc892aaf35cc57a562116bb623c07b08550..d33d551838ea12f9f7f4416b9e7b5111
for (int j = 0; j < i; ++j) { 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 diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 5ab1f5d36a61e7a7fe8da4e74f75963ea6432101..5c0b53b5ddc2f5f18850f72fa562938fe108b244 100644 index e89b88eb3d4202ea7ff043dc9e92163332cd10d3..78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1027,7 +1027,7 @@ public abstract class Mob extends LivingEntity { @@ -1027,7 +1027,7 @@ public abstract class Mob extends LivingEntity {
@@ -583,12 +583,12 @@ index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..b9579e3d1610ddcb5251baa2dd9462e0
@Override @Override
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 388a153113d87ba99515828c6d535110b4413c7c..6014e93a0698ddb283778478fd64ee1c8400a27b 100644 index 0277633fd328ef9993fea4ac29df83b5b00c0f42..0948242ecebe507c90af343faeffc7c9388fa7e4 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1522,7 +1522,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -1521,7 +1521,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public org.bukkit.entity.Entity[] getChunkEntities(int chunkX, int chunkZ) { public org.bukkit.entity.Entity[] getChunkEntities(int chunkX, int chunkZ) {
io.papermc.paper.world.ChunkEntitySlices slices = this.entitySliceManager.getChunk(chunkX, chunkZ); io.papermc.paper.world.ChunkEntitySlices slices = ((ServerLevel)this).getEntityLookup().getChunk(chunkX, chunkZ);
if (slices == null) { if (slices == null) {
- return new org.bukkit.entity.Entity[0]; - return new org.bukkit.entity.Entity[0];
+ return me.titaniumtown.Constants.EMPTY_bukkit_entity_arr; // JettPack + return me.titaniumtown.Constants.EMPTY_bukkit_entity_arr; // JettPack
@@ -627,7 +627,7 @@ index 492e3ffd6a4588a521486db631f3e8b2a25b74ec..111635d43ac0b93e089f5a115521a502
@Override @Override
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index 4977f3fad3bfc12fd4c5f9fbe8beea2895247c57..f86ac933490d50179e09fa61e2f6e5af339249c3 100644 index c6aeda6497cb59673b469588142f5f15a338389d..ebf718cea97d4ff88e888675eeceeca253dc01cb 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -64,7 +64,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -64,7 +64,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -666,10 +666,10 @@ index 16d2aa4556bc9f32a2def7f9ca282aa3fa23fb87..290a0d35e1e4ca8b7281aa6d8cdb66da
@Nullable @Nullable
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java b/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java b/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java
index e91714a66f582c14184ddb5e4bf2443d3ed45efb..375107cbc51b907342379bb5539500d76fb76a92 100644 index 402a238cf502003a232bb95473bd13e59e067fab..6ab50d7ed8481d14152f19a4b63a3d96e52a40a7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java --- a/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java
@@ -4,8 +4,8 @@ import org.bukkit.inventory.EquipmentSlot; @@ -5,8 +5,8 @@ import org.bukkit.inventory.EquipmentSlot;
public class CraftEquipmentSlot { public class CraftEquipmentSlot {

View File

@@ -8,7 +8,7 @@ You can find the original code on https://github.com/CaffeineMC/lithium-fabric (
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..d2b00d9a91b60716d5f458048df3d944060eb749 index 0000000000000000000000000000000000000000..b8c9cb28876c2c1781cd72870076d528b9647916
--- /dev/null --- /dev/null
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java +++ b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
@@ -67,12 +67,12 @@ index 0000000000000000000000000000000000000000..d2b00d9a91b60716d5f458048df3d944
+ +
+ // [VanillaCopy] MathHelper#sin(float) + // [VanillaCopy] MathHelper#sin(float)
+ public static float sin(float f) { + public static float sin(float f) {
+ return lookup((int) (f * 10430.38) & 0xFFFF); + return lookup((int) (f * 10430.378f) & 0xFFFF);
+ } + }
+ +
+ // [VanillaCopy] MathHelper#cos(float) + // [VanillaCopy] MathHelper#cos(float)
+ public static float cos(float f) { + public static float cos(float f) {
+ return lookup((int) (f * 10430.38 + 16384.0) & 0xFFFF); + return lookup((int) (f * 10430.378f + 16384.0f) & 0xFFFF);
+ } + }
+ +
+ private static float lookup(int index) { + private static float lookup(int index) {

View File

@@ -7,19 +7,18 @@ Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia You can find the original code on https://github.com/YatopiaMC/Yatopia
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index e5e88728d2d3b4ac9e266294999af84aee4aeae4..98b9b07e24b50e7021546680baf2ddd86ce5bd98 100644 index 7ace6c1e81519b3e4f673d23627ca603fecb646d..3378298b0c465c0df9618804c390930e875bcce3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1122,6 +1122,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1095,6 +1095,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper End
// Spigot End // Spigot End
public static volatile RuntimeException chunkSystemCrash; // Paper - rewrite chunk system
+ public static java.time.Duration lastTickTime = java.time.Duration.ZERO; // Yatopia + public static java.time.Duration lastTickTime = java.time.Duration.ZERO; // Yatopia
+
protected void runServer() { protected void runServer() {
try { try {
long serverStartTime = Util.getNanos(); // Paper @@ -1172,7 +1173,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1192,7 +1194,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.nextTickTime += 50L; this.nextTickTime += 50L;
this.startMetricsRecordingTick(); this.startMetricsRecordingTick();
this.profiler.push("tick"); this.profiler.push("tick");
@@ -30,10 +29,10 @@ index e5e88728d2d3b4ac9e266294999af84aee4aeae4..98b9b07e24b50e7021546680baf2ddd8
this.mayHaveDelayedTasks = true; this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTime = Math.max(Util.getMillis() + 50L, this.nextTickTime); this.delayedTasksMaxNextTickTime = Math.max(Util.getMillis() + 50L, this.nextTickTime);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 613c72b94dc47edf5c454545e2e2b05752a92bc8..fb00db7158f90baf0b6dff752b31012ac3224d47 100644 index adf6308c0d8dbd8919db60abce51082091005bd1..f6f15f1913b558b457e6e63db93cb0f9c1b6724d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2909,6 +2909,12 @@ public final class CraftServer implements Server { @@ -2914,6 +2914,12 @@ public final class CraftServer implements Server {
public CraftPotionBrewer getPotionBrewer() { public CraftPotionBrewer getPotionBrewer() {
return this.potionBrewer; return this.potionBrewer;
} }

View File

@@ -7,7 +7,7 @@ Original code by PatinaMC, licensed under GNU General Public License v3.0
You can find the original code on https://github.com/PatinaMC/Patina You can find the original code on https://github.com/PatinaMC/Patina
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 98b9b07e24b50e7021546680baf2ddd86ce5bd98..fa185dba873f8a58378a5575bf4086905d2f430c 100644 index 3378298b0c465c0df9618804c390930e875bcce3..904ce75db06d3a50025bf758279e84346912ef6c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -182,7 +182,7 @@ import org.bukkit.event.server.ServerLoadEvent; @@ -182,7 +182,7 @@ import org.bukkit.event.server.ServerLoadEvent;
@@ -19,7 +19,7 @@ index 98b9b07e24b50e7021546680baf2ddd86ce5bd98..fa185dba873f8a58378a5575bf408690
private static MinecraftServer SERVER; // Paper private static MinecraftServer SERVER; // Paper
public static final Logger LOGGER = LogUtils.getLogger(); public static final Logger LOGGER = LogUtils.getLogger();
@@ -1318,19 +1318,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1297,19 +1297,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
@Override @Override
@@ -43,7 +43,7 @@ index 98b9b07e24b50e7021546680baf2ddd86ce5bd98..fa185dba873f8a58378a5575bf408690
@Override @Override
public boolean pollTask() { public boolean pollTask() {
@@ -1362,10 +1364,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1341,10 +1343,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
} }
@@ -57,10 +57,10 @@ index 98b9b07e24b50e7021546680baf2ddd86ce5bd98..fa185dba873f8a58378a5575bf408690
private void updateStatusIcon(ServerStatus metadata) { private void updateStatusIcon(ServerStatus metadata) {
Optional<File> optional = Optional.of(this.getFile("server-icon.png")).filter(File::isFile); Optional<File> optional = Optional.of(this.getFile("server-icon.png")).filter(File::isFile);
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 795691bcb61a7c2b4f903d8db3b6714908c78ac2..2bb545b505aa726b7ed7c757caed84bf0538782e 100644 index 7266e6703d5cd0fea90ec88c74a7d4567f2420ae..16ee24bef4eb2184d821565665f3c1ddf0f3bb39 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -1085,10 +1085,12 @@ public class ServerChunkCache extends ChunkSource { @@ -1007,10 +1007,12 @@ public class ServerChunkCache extends ChunkSource {
return runnable; return runnable;
} }

View File

@@ -7,10 +7,10 @@ Original code by PatinaMC, licensed under GNU General Public License v3.0
You can find the original code on https://github.com/PatinaMC/Patina You can find the original code on https://github.com/PatinaMC/Patina
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 94944ba458178f9e5b772224da329bb5d85f4394..56e5679a3910a6e5b25aeb0d3eb7420444296932 100644 index af7acb628b84539b1ee5ef1934f75f091c4cd91e..707b803e4851b1cb00aa31de49e0961d403dbad5 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -376,7 +376,7 @@ public class ServerPlayer extends Player { @@ -361,7 +361,7 @@ public class ServerPlayer extends Player {
long l = k * k; long l = k * k;
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l; int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
int j1 = this.getCoprime(i1); int j1 = this.getCoprime(i1);
@@ -19,7 +19,7 @@ index 94944ba458178f9e5b772224da329bb5d85f4394..56e5679a3910a6e5b25aeb0d3eb74204
for (int l1 = 0; l1 < i1; ++l1) { for (int l1 = 0; l1 < i1; ++l1) {
int i2 = (k1 + j1 * l1) % i1; int i2 = (k1 + j1 * l1) % i1;
@@ -413,7 +413,7 @@ public class ServerPlayer extends Player { @@ -398,7 +398,7 @@ public class ServerPlayer extends Player {
long l = k * k; long l = k * k;
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l; int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
int j1 = this.getCoprime(i1); int j1 = this.getCoprime(i1);

View File

@@ -7,7 +7,7 @@ Original code by Titaniumtown, licensed under GNU General Public License v3.0
You can find the original code on https://gitlab.com/Titaniumtown/JettPack You can find the original code on https://gitlab.com/Titaniumtown/JettPack
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 4b9db6c2e800c4ad8211afca79c2521a741dba1e..53149faf2b33d202809e259800b15a0d0c2dacf2 100644 index 13aee2a785b3ddb481744277a25c1ab95e036d4a..7fc3c9892d69d14de694d5328fe17a971019cc54 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -176,8 +176,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -176,8 +176,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -30,8 +30,8 @@ index 4b9db6c2e800c4ad8211afca79c2521a741dba1e..53149faf2b33d202809e259800b15a0d
+ //this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime); // JettPack - remove tick limiter + //this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime); // JettPack - remove tick limiter
+ //this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime); // JettPack - remove tick limiter + //this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime); // JettPack - remove tick limiter
this.chunkPacketBlockController = this.paperConfig().anticheat.antiXray.enabled ? new com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray(this, executor) : com.destroystokyo.paper.antixray.ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray this.chunkPacketBlockController = this.paperConfig().anticheat.antiXray.enabled ? new com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray(this, executor) : com.destroystokyo.paper.antixray.ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray
this.entitySliceManager = new io.papermc.paper.world.EntitySliceManager((ServerLevel)this); // Paper
} }
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index bbf15fbb889670e57bd86377590a1b3abe80b96d..ce61f9e8a835bc5e2d3815e337ed9785f9d06f04 100644 index bbf15fbb889670e57bd86377590a1b3abe80b96d..ce61f9e8a835bc5e2d3815e337ed9785f9d06f04 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java

View File

@@ -8,7 +8,7 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 95455c3a786a746dbf14095c89dfd2b7bdb1e4da..32b74aa339db55d187824984b1bd82ccb0953167 100644 index 532de4002d797c4d049f1f94ee588c20f80f6b69..b4158aed45ec60be71251d5b90e340f790e239fb 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1038,22 +1038,22 @@ public abstract class PlayerList { @@ -1038,22 +1038,22 @@ public abstract class PlayerList {
@@ -48,10 +48,10 @@ index 95455c3a786a746dbf14095c89dfd2b7bdb1e4da..32b74aa339db55d187824984b1bd82cc
public void broadcastAll(Packet<?> packet) { public void broadcastAll(Packet<?> packet) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4ba927b4585ca56337fa763d60d21de3b58bb2f7..b85ed871a502d0793b4991ed6e7d3f9ad6bba027 100644 index 968aa80b57a31d89852c6f4bc0ec5ed4a98c6530..d0fc98ed0530a99adeb3c126b1040e40bb97685b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1840,7 +1840,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1883,7 +1883,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public boolean canSee(org.bukkit.entity.Entity entity) { public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -7,7 +7,7 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index a0317be1eea29e4e911976e0106563cf49db1e6b..4197961b2f03a5151b396d0d09bf5cb9ab6481e7 100644 index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..aa1bd3423829900729d413a5f98f4a0b9aaf6135 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -181,6 +181,7 @@ public class ServerEntity { @@ -181,6 +181,7 @@ public class ServerEntity {
@@ -40,7 +40,7 @@ index a0317be1eea29e4e911976e0106563cf49db1e6b..4197961b2f03a5151b396d0d09bf5cb9
+ +
public void removePairing(ServerPlayer player) { public void removePairing(ServerPlayer player) {
this.entity.stopSeenByPlayer(player); this.entity.stopSeenByPlayer(player);
// Pufferfish start - ensure main thread player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()}));
diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java
index 0f94e6a76ab2c323562231ffe58a7c18819e6b00..992ab312e6e2b8283ef8187bcbeeb35dd51858a1 100644 index 0f94e6a76ab2c323562231ffe58a7c18819e6b00..992ab312e6e2b8283ef8187bcbeeb35dd51858a1 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java --- a/src/main/java/wtf/etil/mirai/MiraiConfig.java

View File

@@ -29,7 +29,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216
setListData(vector); setListData(vector);
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de28e0936fb 100644 index 904ce75db06d3a50025bf758279e84346912ef6c..6cdced357fdcd5ea4ce0c63d29e39573a5f40f65 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -290,7 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab @@ -290,7 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab
@@ -41,7 +41,7 @@ index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de2
// Spigot end // Spigot end
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations;
public static long currentTickLong = 0L; // Paper public static long currentTickLong = 0L; // Paper
@@ -1075,6 +1075,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab @@ -1047,6 +1047,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
private long lastTick = 0; private long lastTick = 0;
private long catchupTime = 0; private long catchupTime = 0;
@@ -49,7 +49,7 @@ index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de2
public final RollingAverage tps1 = new RollingAverage(60); public final RollingAverage tps1 = new RollingAverage(60);
public final RollingAverage tps5 = new RollingAverage(60 * 5); public final RollingAverage tps5 = new RollingAverage(60 * 5);
public final RollingAverage tps15 = new RollingAverage(60 * 15); public final RollingAverage tps15 = new RollingAverage(60 * 15);
@@ -1172,13 +1173,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab @@ -1151,13 +1152,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab
{ {
final long diff = curTime - tickSection; final long diff = curTime - tickSection;
java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
@@ -71,10 +71,10 @@ index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de2
tickSection = curTime; tickSection = curTime;
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index fb00db7158f90baf0b6dff752b31012ac3224d47..1b1e3cff46ed4c8447421d056a91018e624a47a6 100644 index f6f15f1913b558b457e6e63db93cb0f9c1b6724d..d2478bda9e8395a8730a3416ce3133782ab9a8e9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2690,6 +2690,7 @@ public final class CraftServer implements Server { @@ -2695,6 +2695,7 @@ public final class CraftServer implements Server {
@Override @Override
public double[] getTPS() { public double[] getTPS() {
return new double[] { return new double[] {

View File

@@ -7,10 +7,10 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 422c65f6e42f3ba5e58126d936dd17913ae0d2b8..e52256415e2776f41d107cbf39a73708d6e0d506 100644 index 707b803e4851b1cb00aa31de49e0961d403dbad5..d298e85ff59d4fd3229a711468d520bb73028f8b 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1153,6 +1153,7 @@ public class ServerPlayer extends Player { @@ -1138,6 +1138,7 @@ public class ServerPlayer extends Player {
playerlist.sendPlayerPermissionLevel(this); playerlist.sendPlayerPermissionLevel(this);
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved(); this.unsetRemoved();
@@ -19,10 +19,10 @@ index 422c65f6e42f3ba5e58126d936dd17913ae0d2b8..e52256415e2776f41d107cbf39a73708
// CraftBukkit end // CraftBukkit end
this.setLevel(worldserver); this.setLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 417570c2ad71bc3727e7d5eb841a92ec815d12f6..f30d79d0f77cf411bdb47148ae86ba406a2fdee6 100644 index fc4bd8ad4836aa6bdd228885f0aeb22500782af5..1af80fe51a67260e4ada32fb5880d50b3fac1d51 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2875,12 +2875,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2876,12 +2876,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return Vec3.directionFromRotation(this.getRotationVector()); return Vec3.directionFromRotation(this.getRotationVector());
} }

View File

@@ -7,10 +7,10 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index f30d79d0f77cf411bdb47148ae86ba406a2fdee6..ae3908fb16c935c223853c456795aa680c8f81f9 100644 index 1af80fe51a67260e4ada32fb5880d50b3fac1d51..572a0e6881f817a44fd1b09b920ba692fb2affb7 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2880,7 +2880,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2881,7 +2881,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
if (this.isOnPortalCooldown()) { if (this.isOnPortalCooldown()) {
if (!(wtf.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur if (!(wtf.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown(); this.setPortalCooldown();
@@ -19,7 +19,7 @@ index f30d79d0f77cf411bdb47148ae86ba406a2fdee6..ae3908fb16c935c223853c456795aa68
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) { if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable(); this.portalEntrancePos = pos.immutable();
portalPos = BlockPos.ZERO; // Purpur portalPos = BlockPos.ZERO; // Purpur
@@ -3553,7 +3553,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -3554,7 +3554,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
} }
public boolean canChangeDimensions() { public boolean canChangeDimensions() {

View File

@@ -9,7 +9,7 @@ Original code by RelativityMC, licensed under MIT
You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index ae3908fb16c935c223853c456795aa680c8f81f9..b29ceb976323a80d37f0292fa09f2318db970548 100644 index 572a0e6881f817a44fd1b09b920ba692fb2affb7..bf52e05566a0e4e21a34ead51a1e32fac9fbfbc2 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -300,6 +300,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -300,6 +300,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -20,7 +20,7 @@ index ae3908fb16c935c223853c456795aa680c8f81f9..b29ceb976323a80d37f0292fa09f2318
public boolean onGround; public boolean onGround;
public boolean horizontalCollision; public boolean horizontalCollision;
public boolean verticalCollision; public boolean verticalCollision;
@@ -1032,6 +1033,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1033,6 +1034,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
// Paper end - detailed watchdog information // Paper end - detailed watchdog information
public void move(MoverType movementType, Vec3 movement) { public void move(MoverType movementType, Vec3 movement) {
@@ -33,7 +33,7 @@ index ae3908fb16c935c223853c456795aa680c8f81f9..b29ceb976323a80d37f0292fa09f2318
// Paper start - detailed watchdog information // Paper start - detailed watchdog information
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main"); io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
synchronized (this.posLock) { synchronized (this.posLock) {
@@ -3758,6 +3765,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -3759,6 +3766,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
} }
public final void setBoundingBox(AABB boundingBox) { public final void setBoundingBox(AABB boundingBox) {

View File

@@ -7,10 +7,10 @@ Original code by Cryptite, licensed under MIT
You can find the original code on https://github.com/Cryptite/Slice You can find the original code on https://github.com/Cryptite/Slice
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index b29ceb976323a80d37f0292fa09f2318db970548..aabc4a50f7af451c236f34efbcb3ef1330414a36 100644 index bf52e05566a0e4e21a34ead51a1e32fac9fbfbc2..d4ae6b345762d224f89ca65634ff4af178dc634f 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -878,7 +878,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -879,7 +879,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.checkOutOfWorld(); this.checkOutOfWorld();
if (!this.level.isClientSide) { if (!this.level.isClientSide) {

View File

@@ -1,87 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: ishland <ishlandmc@yeah.net>
Date: Sun, 21 Nov 2021 03:01:00 +0100
Subject: [PATCH] vmp: ingredient_matching
Copyright (c) 2021-2022 ishland
Original code by RelativityMC, licensed under MIT
You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings)
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 895c0f1600139e340aa22a7c398978add56fa706..bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1 100644
--- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
@@ -12,9 +12,12 @@ import it.unimi.dsi.fastutil.ints.IntList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet; // Mirai
import java.util.Iterator;
import java.util.List;
+import java.util.Set; // Mirai
import java.util.function.Predicate;
+import java.util.stream.Collectors; // Mirai
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import javax.annotation.Nullable;
@@ -38,6 +41,8 @@ public final class Ingredient implements Predicate<ItemStack> {
@Nullable
private IntList stackingIds;
public boolean exact; // CraftBukkit
+ private Set<Item> matchingItems = null; // Mirai
+ private boolean isEmptyMatch = false; // Mirai
public Ingredient(Stream<? extends Ingredient.Value> entries) {
this.values = (Ingredient.Value[]) entries.toArray((i) -> {
@@ -65,32 +70,25 @@ public final class Ingredient implements Predicate<ItemStack> {
if (itemstack == null) {
return false;
} else {
- this.dissolve();
- if (this.itemStacks.length == 0) {
- return itemstack.isEmpty();
- } else {
- ItemStack[] aitemstack = this.itemStacks;
- int i = aitemstack.length;
-
- for (int j = 0; j < i; ++j) {
- ItemStack itemstack1 = aitemstack[j];
-
- // CraftBukkit start
- if (this.exact) {
- if (itemstack1.getItem() == itemstack.getItem() && ItemStack.tagMatches(itemstack, itemstack1)) {
- return true;
- }
-
- continue;
- }
- // CraftBukkit end
- if (itemstack1.is(itemstack.getItem())) {
- return true;
- }
- }
-
- return false;
+ // Mirai start
+ /**
+ * @author ishland
+ * @reason optimize test()
+ */
+ Set<Item> matchingItems = this.matchingItems;
+ boolean isEmptyMatch = this.isEmptyMatch;
+ if (matchingItems == null) {
+ matchingItems = this.matchingItems = Arrays.stream(this.values)
+ .flatMap(entry -> entry.getItems().stream())
+ .filter(itemstack1 -> !itemstack1.isEmpty())
+ .map(ItemStack::getItem)
+ .collect(Collectors.toCollection(HashSet::new));
+ isEmptyMatch = this.isEmptyMatch = this.matchingItems.isEmpty();
+ }
+ if (itemstack.isEmpty()) {
+ return isEmptyMatch;
}
+ return matchingItems.contains(itemstack.getItem());
}
}

View File

@@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index d33d551838ea12f9f7f4416b9e7b5111e86ad82e..3677f635f6fec3be02dce49f2585a0396b1af004 100644 index c0e316582e085873c05a76c16e612eabd2e8cf2a..dbcabd230bd9bd070e157f35d098553f3ed06987 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3425,6 +3425,8 @@ public abstract class LivingEntity extends Entity { @@ -3428,6 +3428,8 @@ public abstract class LivingEntity extends Entity {
} }
private void updateFallFlying() { private void updateFallFlying() {

View File

@@ -1,112 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: ishland <ishlandmc@yeah.net>
Date: Sat, 1 Jan 2022 11:05:22 +0100
Subject: [PATCH] vmp: entity.iteration
Copyright (c) 2021-2022 ishland
Original code by RelativityMC, licensed under MIT
You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings)
diff --git a/src/main/java/com/ishland/vmp/common/general/collections/ITypeFilterableList.java b/src/main/java/com/ishland/vmp/common/general/collections/ITypeFilterableList.java
new file mode 100644
index 0000000000000000000000000000000000000000..beaa0a60771b17b93e4074b272b503a2f6e4cf34
--- /dev/null
+++ b/src/main/java/com/ishland/vmp/common/general/collections/ITypeFilterableList.java
@@ -0,0 +1,8 @@
+package com.ishland.vmp.common.general.collections;
+
+public interface ITypeFilterableList {
+
+ Object[] getBackingArray();
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/level/entity/EntitySection.java b/src/main/java/net/minecraft/world/level/entity/EntitySection.java
index e9aee7d11798c3bd990466f101e9e342686de11c..13ebaf6aede402f5f702aae6c1e44445b00cd9bb 100644
--- a/src/main/java/net/minecraft/world/level/entity/EntitySection.java
+++ b/src/main/java/net/minecraft/world/level/entity/EntitySection.java
@@ -8,6 +8,10 @@ import net.minecraft.util.ClassInstanceMultiMap;
import net.minecraft.util.VisibleForDebug;
import net.minecraft.world.phys.AABB;
import org.slf4j.Logger;
+import com.ishland.vmp.common.general.collections.ITypeFilterableList; // Mirai
+import it.unimi.dsi.fastutil.objects.ObjectArrayList; // Mirai
+import net.minecraft.world.level.entity.EntityAccess; // Mirai
+import net.minecraft.world.level.entity.EntityTypeTest; // Mirai
public class EntitySection<T extends EntityAccess> {
private static final Logger LOGGER = LogUtils.getLogger();
@@ -45,27 +49,62 @@ public class EntitySection<T extends EntityAccess> {
return this.storage.remove(entity);
}
+ // Mirai start
+ /**
+ * @author ishland
+ * @reason use array for iteration & inline math
+ */
public void getEntities(AABB box, Consumer<T> action) {
- for(T entityAccess : this.storage) {
- if (entityAccess.getBoundingBox().intersects(box)) {
- action.accept(entityAccess);
+ if (this.storage instanceof ITypeFilterableList iTypeFilterableList) { // use array for iteration
+ for (Object _entityLike : iTypeFilterableList.getBackingArray()) {
+ if (_entityLike != null) {
+ @SuppressWarnings("unchecked") T entityAccess = (T) _entityLike;
+ AABB box1 = entityAccess.getBoundingBox();
+ if (box1.minX < box.maxX && box1.maxX > box.minX && box1.minY < box.maxY && box1.maxY > box.minY && box1.minZ < box.maxZ && box1.maxZ > box.minZ) { // inline math
+ action.accept(entityAccess);
+ }
+ }
+ }
+ } else { // fallback
+ for (T entityAccess : this.storage) {
+ AABB box1 = entityAccess.getBoundingBox();
+ if (box1.minX < box.maxX && box1.maxX > box.minX && box1.minY < box.maxY && box1.maxY > box.minY && box1.minZ < box.maxZ && box1.maxZ > box.minZ) { // inline math
+ action.accept(entityAccess);
+ }
}
}
-
}
+ /**
+ * @author ishland
+ * @reason use array for iteration & inline math
+ */
public <U extends T> void getEntities(EntityTypeTest<T, U> type, AABB box, Consumer<? super U> action) {
Collection<? extends T> collection = this.storage.find(type.getBaseClass());
if (!collection.isEmpty()) {
- for(T entityAccess : collection) {
- U entityAccess2 = (U)((EntityAccess)type.tryCast(entityAccess));
- if (entityAccess2 != null && entityAccess.getBoundingBox().intersects(box)) {
- action.accept(entityAccess2); // Paper - decompile fix
+ if (collection instanceof ObjectArrayList objectArrayList) { // use array for iteration
+ for (Object _entityLike : objectArrayList.elements()) {
+ if (_entityLike != null) {
+ T entityAccess = (T) _entityLike;
+ U entityAccess2 = type.tryCast(entityAccess);
+ final AABB boundingBox = entityAccess.getBoundingBox();
+ if (entityAccess2 != null && boundingBox.minX < box.maxX && boundingBox.maxX > box.minX && boundingBox.minY < box.maxY && boundingBox.maxY > box.minY && boundingBox.minZ < box.maxZ && boundingBox.maxZ > box.minZ) { // inline math
+ action.accept(entityAccess2);
+ }
+ }
+ }
+ } else { // fallback
+ for(T entityAccess : collection) {
+ U entityAccess2 = type.tryCast(entityAccess);
+ AABB box1 = entityAccess.getBoundingBox();
+ if (entityAccess2 != null && box1.minX < box.maxX && box1.maxX > box.minX && box1.minY < box.maxY && box1.maxY > box.minY && box1.minZ < box.maxZ && box1.maxZ > box.minZ) { // inline math
+ action.accept(entityAccess2);
+ }
}
}
-
}
}
+ // Mirai end
public boolean isEmpty() {
return this.storage.isEmpty();

View File

@@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 31a4dac824b3d98e05cef5b96473a8a179516a01..e298e40166e7804b8c5e17a4e98f20bb1de8fd50 100644 index 413c5891e1affc89f2d4e63214ef6621d63f83b3..aef9c28228be51e217b068e8731665cceff17717 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -224,6 +224,13 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -224,6 +224,13 @@ public class ServerLevel extends Level implements WorldGenLevel {

View File

@@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 3677f635f6fec3be02dce49f2585a0396b1af004..28424fc7a1dad07baebe850f8931835e2f74f304 100644 index dbcabd230bd9bd070e157f35d098553f3ed06987..2cd8dfe953ac72f6be14557ab39d3cec1108499e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2485,6 +2485,8 @@ public abstract class LivingEntity extends Entity { @@ -2488,6 +2488,8 @@ public abstract class LivingEntity extends Entity {
} }
protected void updateSwingTime() { protected void updateSwingTime() {

View File

@@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 28424fc7a1dad07baebe850f8931835e2f74f304..843642cd3b635e3f6a3dee9d5cd8bad38108143b 100644 index 2cd8dfe953ac72f6be14557ab39d3cec1108499e..d6f7fd9dc4804e7565c89a9cbb0948f256559f03 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -569,11 +569,11 @@ public abstract class LivingEntity extends Entity { @@ -569,11 +569,11 @@ public abstract class LivingEntity extends Entity {

View File

@@ -9,10 +9,10 @@ Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia You can find the original code on https://github.com/YatopiaMC/Yatopia
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf33bb84848 100644 index d298e85ff59d4fd3229a711468d520bb73028f8b..48e195a6c8005a64cb286cfae39e54745f83affe 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -615,7 +615,7 @@ public class ServerPlayer extends Player { @@ -600,7 +600,7 @@ public class ServerPlayer extends Player {
@Override @Override
protected void onInsideBlock(BlockState state) { protected void onInsideBlock(BlockState state) {
@@ -21,7 +21,7 @@ index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf3
} }
@Override @Override
@@ -661,7 +661,7 @@ public class ServerPlayer extends Player { @@ -646,7 +646,7 @@ public class ServerPlayer extends Player {
} }
} }
@@ -30,7 +30,7 @@ index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf3
if (this.levitationStartPos != null) { if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime); CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
} }
@@ -737,9 +737,7 @@ public class ServerPlayer extends Player { @@ -722,9 +722,7 @@ public class ServerPlayer extends Player {
this.connection.send(new ClientboundSetExperiencePacket(this.experienceProgress, this.totalExperience, this.experienceLevel)); this.connection.send(new ClientboundSetExperiencePacket(this.experienceProgress, this.totalExperience, this.experienceLevel));
} }

View File

@@ -7,10 +7,10 @@ Original code by Titaniumtown, licensed under GNU General Public License v3.0
You can find the original code on https://gitlab.com/Titaniumtown/JettPack You can find the original code on https://gitlab.com/Titaniumtown/JettPack
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd4445ac18974 100644 index d4ae6b345762d224f89ca65634ff4af178dc634f..4e92962cc351bf3abcf51b8952eff5686eda5ea9 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1880,12 +1880,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1881,12 +1881,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
} }
} }
@@ -30,7 +30,7 @@ index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd444
public void absMoveTo(double x, double y, double z, float yaw, float pitch) { public void absMoveTo(double x, double y, double z, float yaw, float pitch) {
this.absMoveTo(x, y, z); this.absMoveTo(x, y, z);
this.setYRot(yaw % 360.0F); this.setYRot(yaw % 360.0F);
@@ -4323,6 +4329,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -4334,6 +4340,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
} }
// Paper end - block invalid positions // Paper end - block invalid positions
@@ -44,7 +44,7 @@ index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd444
// Paper start // Paper start
this.setPosRaw(x, y, z, false); this.setPosRaw(x, y, z, false);
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 5c0b53b5ddc2f5f18850f72fa562938fe108b244..ee6c33ff21dcbc6d7ee5f4df18be02fe2350ebd6 100644 index 78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c..63911fd0d2a5f194ed4632f209555b3146ed7b79 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1647,15 +1647,31 @@ public abstract class Mob extends LivingEntity { @@ -1647,15 +1647,31 @@ public abstract class Mob extends LivingEntity {

View File

@@ -7,10 +7,10 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 5fdef81245cb3cc686225cfd7c5ce13b011503ef..cec58f0d7ac6bf73a0f7b418a595704b8b807425 100644 index 9ac645e08275bb7943dd1edcd635c179c0620d89..4748828f84f7d5f2dd79945dd65f3fa55cd43010 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java --- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1821,7 +1821,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -983,7 +983,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return this.anyPlayerCloseEnoughForSpawning(this.getUpdatingChunkIfPresent(chunkcoordintpair.toLong()), chunkcoordintpair, reducedRange); return this.anyPlayerCloseEnoughForSpawning(this.getUpdatingChunkIfPresent(chunkcoordintpair.toLong()), chunkcoordintpair, reducedRange);
} }

View File

@@ -12,10 +12,10 @@ doing questionable/buggy ones, and claiming breathtaking performance improvement
any of those Spigot forks! any of those Spigot forks!
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d388b5fb34d9a5f1156bd49f3b5bd4445ac18974..d4452da9e89f711d20c8c3450ab050c3b2b00a1e 100644 index 4e92962cc351bf3abcf51b8952eff5686eda5ea9..6153c46809b12c44f2f8588e6978a4cab21e02f4 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1205,7 +1205,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1206,7 +1206,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
} }
this.tryCheckInsideBlocks(); this.tryCheckInsideBlocks();

View File

@@ -201,7 +201,7 @@ index 1194c501a82e0e84d961d4ccb62f0c6092db559e..8afacc53a673567cead4c6e49966f07f
@Override @Override
public FluidState getFluidState(BlockPos pos) { public FluidState getFluidState(BlockPos pos) {
diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
index 575efe82a7219e256afd8362984eb26795445119..6292dead8c2d682e524edee6af9f04b31a79489c 100644 index cf87490a446285132daaf9d90154ac6d477a62fe..3d6c50822701a3828cbde704f419d1c900a67954 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java --- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
@@ -67,6 +67,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { @@ -67,6 +67,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] PaperPR Add more collision code skipping logic
Taken from https://github.com/PaperMC/Paper/pull/7581 Taken from https://github.com/PaperMC/Paper/pull/7581
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 843642cd3b635e3f6a3dee9d5cd8bad38108143b..fea7b1c5a1236a4667c738b9cf27800863b26cfb 100644 index d6f7fd9dc4804e7565c89a9cbb0948f256559f03..24484d985929c7860aa08dbfca6df113086d2ed0 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3467,6 +3467,10 @@ public abstract class LivingEntity extends Entity { @@ -3470,6 +3470,10 @@ public abstract class LivingEntity extends Entity {
protected void pushEntities() { protected void pushEntities() {
// Paper start - don't run getEntities if we're not going to use its result // Paper start - don't run getEntities if we're not going to use its result

View File

@@ -9,23 +9,23 @@ Original code by RelativityMC, licensed under MIT
You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index cec58f0d7ac6bf73a0f7b418a595704b8b807425..a9f83218af1675a15505acafd67d79954a8ed38d 100644 index 4748828f84f7d5f2dd79945dd65f3fa55cd43010..a83b5520b0210d82e26cb6ec490fe30778ea92ab 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java --- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -111,6 +111,7 @@ import org.bukkit.craftbukkit.generator.CustomChunkGenerator; @@ -111,6 +111,7 @@ import org.bukkit.entity.Player;
import org.bukkit.entity.Player;
// CraftBukkit end // CraftBukkit end
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; // Paper import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; // Paper
+import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; // Mirai - vmp: use linked map for entity trackers for faster iteration +import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; // Mirai - vmp: use linked map for entity trackers for faster iteration
public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider { public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider {
@@ -416,7 +417,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -291,7 +292,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
this.toDrop = new LongOpenHashSet(); // Paper - rewrite chunk system
this.tickingGenerated = new AtomicInteger(); this.tickingGenerated = new AtomicInteger();
this.playerMap = new PlayerMap(); this.playerMap = new PlayerMap();
- this.entityMap = new Int2ObjectOpenHashMap(); - this.entityMap = new Int2ObjectOpenHashMap();
+ this.entityMap = new Int2ObjectLinkedOpenHashMap<>(); // Mirai - vmp: use linked map for entity trackers for faster iteration + this.entityMap = new Int2ObjectLinkedOpenHashMap<>(); // Mirai - vmp: use linked map for entity trackers for faster iteration
this.chunkTypeCache = new Long2ByteOpenHashMap(); this.chunkTypeCache = new Long2ByteOpenHashMap();
this.chunkSaveCooldowns = new Long2LongOpenHashMap(); this.chunkSaveCooldowns = new Long2LongOpenHashMap();
this.unloadQueue = new com.destroystokyo.paper.utils.CachedSizeConcurrentLinkedQueue<>(); // Paper - need constant-time size() this.unloadQueue = Queues.newConcurrentLinkedQueue();

View File

@@ -9,10 +9,10 @@ Original license: GNU Lesser General Public License v3.0
Original project: https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) Original project: https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d4452da9e89f711d20c8c3450ab050c3b2b00a1e..968f5382ca001e60698ce06eea751bbea45cb31c 100644 index 6153c46809b12c44f2f8588e6978a4cab21e02f4..1508e8c4ba01f92e79b8256b306b4eaab96aa888 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2607,39 +2607,64 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2608,39 +2608,64 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return !this.isRemoved(); return !this.isRemoved();
} }

View File

@@ -5,28 +5,10 @@ Subject: [PATCH] Optimize default values for configs
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
index 38cb29c646ff496ffaa6553f98a565b71155c464..26f9a007931edb1c0b67920309bc7c6b848bbd32 100644 index 34eb43ca2bf446504c372f98dfbe6dbfd0a81369..74d86c1a9ef79e09b1ec02b93e8f62d3e0746d43 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -216,7 +216,7 @@ public class PufferfishConfig { @@ -217,7 +217,7 @@ public class PufferfishConfig {
public static boolean enableAsyncEntityTracker;
public static boolean enableAsyncEntityTrackerInitialized;
private static void asyncEntityTracker() {
- boolean temp = getBoolean("enable-async-entity-tracker", false,
+ boolean temp = getBoolean("enable-async-entity-tracker", true, // Mirai - optimize default values for configs
"Whether or not async entity tracking should be enabled.");
if (!enableAsyncEntityTrackerInitialized) {
enableAsyncEntityTrackerInitialized = true;
@@ -227,7 +227,7 @@ public class PufferfishConfig {
public static boolean enableAsyncPathfinding;
public static boolean enableAsyncPathfindingInitialized;
private static void asyncPathfinding() {
- boolean temp = getBoolean("enable-async-pathfinding", false,
+ boolean temp = getBoolean("enable-async-pathfinding", true, // Mirai - optimize default values for configs
"Whether or not async pathfinding should be enabled.");
if (!enableAsyncPathfindingInitialized) {
enableAsyncPathfindingInitialized = true;
@@ -239,7 +239,7 @@ public class PufferfishConfig {
public static int maxProjectileLoadsPerProjectile; public static int maxProjectileLoadsPerProjectile;
private static void projectileLoading() { private static void projectileLoading() {
maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick.");
@@ -36,10 +18,10 @@ index 38cb29c646ff496ffaa6553f98a565b71155c464..26f9a007931edb1c0b67920309bc7c6b
setComment("projectile", "Optimizes projectile settings"); setComment("projectile", "Optimizes projectile settings");
} }
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index bc72131afa1ae9986ee311a9b371e97c8feb38f8..0130e2c3c047055fbea9c3d893a9b4593fa10ed2 100644 index 54bca103347e89f116fb7fbf37449a32ac094286..76810d7767b1a66315b006569654c718105ab4ee 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -56,7 +56,7 @@ public class GlobalConfiguration extends ConfigurationPart { @@ -55,7 +55,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public boolean enabled = true; public boolean enabled = true;
public boolean reallyEnabled = false; public boolean reallyEnabled = false;
public boolean verbose = true; public boolean verbose = true;
@@ -48,7 +30,7 @@ index bc72131afa1ae9986ee311a9b371e97c8feb38f8..0130e2c3c047055fbea9c3d893a9b459
public boolean serverNamePrivacy = false; public boolean serverNamePrivacy = false;
public List<String> hiddenConfigEntries = List.of( public List<String> hiddenConfigEntries = List.of(
"database", "database",
@@ -266,9 +266,9 @@ public class GlobalConfiguration extends ConfigurationPart { @@ -289,9 +289,9 @@ public class GlobalConfiguration extends ConfigurationPart {
public boolean fixEntityPositionDesync = true; public boolean fixEntityPositionDesync = true;
public boolean loadPermissionsYmlBeforePlugins = true; public boolean loadPermissionsYmlBeforePlugins = true;
@Constraints.Min(4) @Constraints.Min(4)

View File

@@ -8,10 +8,10 @@ Original license: GPLv3
Original project: https://github.com/Akarin-project/Akarin Original project: https://github.com/Akarin-project/Akarin
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 968f5382ca001e60698ce06eea751bbea45cb31c..630f97c436b15225157007622533593033dcad1a 100644 index 1508e8c4ba01f92e79b8256b306b4eaab96aa888..e2565f129cf61d1e3dd9cb6076299edcf66119dc 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1997,8 +1997,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1998,8 +1998,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
public void playerTouch(Player player) {} public void playerTouch(Player player) {}
public void push(Entity entity) { public void push(Entity entity) {

View File

@@ -7,10 +7,10 @@ Original license: GPLv3
Original project: https://github.com/Electroid/SportPaper Original project: https://github.com/Electroid/SportPaper
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 4197961b2f03a5151b396d0d09bf5cb9ab6481e7..09be313aefd5dda15bd4db6ee0324b2aec879744 100644 index aa1bd3423829900729d413a5f98f4a0b9aaf6135..82604712640140dbc5ec632233b937b2e073e28e 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -346,8 +346,10 @@ public class ServerEntity { @@ -342,8 +342,10 @@ public class ServerEntity {
} }
// CraftBukkit start - Fix for nonsensical head yaw // CraftBukkit start - Fix for nonsensical head yaw

View File

@@ -7,10 +7,10 @@ Original license: GPLv3
Original project: https://github.com/Electroid/SportPaper Original project: https://github.com/Electroid/SportPaper
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index e298e40166e7804b8c5e17a4e98f20bb1de8fd50..e2da2c2823fd64ec714c3d083039fc04d11fea73 100644 index aef9c28228be51e217b068e8731665cceff17717..b0b881eed06b1963c639b1a2c0808ab47fb34ac0 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1545,6 +1545,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1570,6 +1570,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (entity instanceof Player) entityhuman = (Player) entity; if (entity instanceof Player) entityhuman = (Player) entity;
// CraftBukkit end // CraftBukkit end
@@ -18,7 +18,7 @@ index e298e40166e7804b8c5e17a4e98f20bb1de8fd50..e2da2c2823fd64ec714c3d083039fc04
while (iterator.hasNext()) { while (iterator.hasNext()) {
ServerPlayer entityplayer = (ServerPlayer) iterator.next(); ServerPlayer entityplayer = (ServerPlayer) iterator.next();
@@ -1560,7 +1561,10 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1585,7 +1586,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
// CraftBukkit end // CraftBukkit end
if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) { if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) {

View File

@@ -114,7 +114,7 @@ index 40447d00aefb5ffedb8a2ee87155a04088f0649f..633a6e313174244cf13ed89b53893ea5
} }
} }
diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
index b53402903eb6845df361daf6b05a668608ad7b63..0d43afcdd5db346d0ddf82e06bad5b219721715c 100644 index dd501e83d991e45598509134fab05bafc1904953..5ecdbeb90e9715fc89ff25e9b3c33a2e8d98ff93 100644
--- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java --- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java +++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
@@ -387,11 +387,11 @@ public final class PlayerChunkLoader { @@ -387,11 +387,11 @@ public final class PlayerChunkLoader {
@@ -132,10 +132,10 @@ index b53402903eb6845df361daf6b05a668608ad7b63..0d43afcdd5db346d0ddf82e06bad5b21
public void onChunkPlayerTickReady(final int chunkX, final int chunkZ) { public void onChunkPlayerTickReady(final int chunkX, final int chunkZ) {
diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java
index 68645bbbab9b4225048b647252d8f462028a9c84..14eff63f7725769ba0ce15eedf7f605ee34d1722 100644 index 450bd95218852174cfbc88d4517e17daee5ffd5f..317e952655db5a4dcb2e6ec6573510f75bba9255 100644
--- a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java --- a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java
+++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java +++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java
@@ -105,12 +105,12 @@ public final class FixLightCommand implements PaperSubcommand { @@ -95,12 +95,12 @@ public final class FixLightCommand implements PaperSubcommand {
++relitChunks[0]; ++relitChunks[0];
sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append( sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append(
text("Relit chunk ", BLUE), text(chunkPos.toString()), text("Relit chunk ", BLUE), text(chunkPos.toString()),
@@ -143,7 +143,7 @@ index 68645bbbab9b4225048b647252d8f462028a9c84..14eff63f7725769ba0ce15eedf7f605e
+ text(", progress: ", BLUE), text((int) (carpetfixes.helpers.FastMath.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%") // Mirai + text(", progress: ", BLUE), text((int) (carpetfixes.helpers.FastMath.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%") // Mirai
)); ));
}, },
(int totalRelit) -> { (final int totalRelit) -> {
final long end = System.nanoTime(); final long end = System.nanoTime();
- final long diff = Math.round(1.0e-6 * (end - start)); - final long diff = Math.round(1.0e-6 * (end - start));
+ final long diff = carpetfixes.helpers.FastMath.round(1.0e-6 * (end - start)); // Mirai + final long diff = carpetfixes.helpers.FastMath.round(1.0e-6 * (end - start)); // Mirai
@@ -164,10 +164,10 @@ index e3e80db89c18588322ffdaa0f9fd85e398cb1471..d947011b80ee14e7aaf74af3d9081fc7
throw ERROR_INVALID_TICK_COUNT.create(j); throw ERROR_INVALID_TICK_COUNT.create(j);
} else { } else {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index c25f0c98128c85ed4e867c6d842c8de28e0936fb..2789eb371b3c9c8803a10d07f8c21ced49ad6d16 100644 index 6cdced357fdcd5ea4ce0c63d29e39573a5f40f65..3c528e612e9ed17e8c58bbef6c26471cc3411a7a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2787,7 +2787,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab @@ -2767,7 +2767,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab
} }
double overuseCount = (double)overuse/(double)MAX_CHUNK_EXEC_TIME; double overuseCount = (double)overuse/(double)MAX_CHUNK_EXEC_TIME;
@@ -202,7 +202,7 @@ index ec587cf6592a1dc0d90d6f54af1bdfab97aec7c6..41fe8bbdf9235ce79bffe6b2fe1339f7
} }
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035ae2c7041d 100644 index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb89ec6fbb 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1496,7 +1496,7 @@ public abstract class LivingEntity extends Entity { @@ -1496,7 +1496,7 @@ public abstract class LivingEntity extends Entity {
@@ -214,7 +214,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
} }
} }
@@ -2047,9 +2047,9 @@ public abstract class LivingEntity extends Entity { @@ -2050,9 +2050,9 @@ public abstract class LivingEntity extends Entity {
if (f3 > 0.0F && f3 < 3.4028235E37F) { if (f3 > 0.0F && f3 < 3.4028235E37F) {
if (this instanceof ServerPlayer) { if (this instanceof ServerPlayer) {
@@ -226,7 +226,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
} }
} }
} }
@@ -2161,9 +2161,9 @@ public abstract class LivingEntity extends Entity { @@ -2164,9 +2164,9 @@ public abstract class LivingEntity extends Entity {
float f3 = (float) -event.getDamage(DamageModifier.RESISTANCE); float f3 = (float) -event.getDamage(DamageModifier.RESISTANCE);
if (f3 > 0.0F && f3 < 3.4028235E37F) { if (f3 > 0.0F && f3 < 3.4028235E37F) {
if (this instanceof ServerPlayer) { if (this instanceof ServerPlayer) {
@@ -238,7 +238,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
} }
} }
} }
@@ -2195,10 +2195,10 @@ public abstract class LivingEntity extends Entity { @@ -2198,10 +2198,10 @@ public abstract class LivingEntity extends Entity {
float f2 = absorptionModifier; float f2 = absorptionModifier;
if (f2 > 0.0F && f2 < 3.4028235E37F && this instanceof net.minecraft.world.entity.player.Player) { if (f2 > 0.0F && f2 < 3.4028235E37F && this instanceof net.minecraft.world.entity.player.Player) {
@@ -251,7 +251,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
} }
if (f > 0 || !human) { if (f > 0 || !human) {
@@ -2206,7 +2206,7 @@ public abstract class LivingEntity extends Entity { @@ -2209,7 +2209,7 @@ public abstract class LivingEntity extends Entity {
// PAIL: Be sure to drag all this code from the EntityHuman subclass each update. // PAIL: Be sure to drag all this code from the EntityHuman subclass each update.
((net.minecraft.world.entity.player.Player) this).causeFoodExhaustion(damagesource.getFoodExhaustion(), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.DAMAGED); // CraftBukkit - EntityExhaustionEvent ((net.minecraft.world.entity.player.Player) this).causeFoodExhaustion(damagesource.getFoodExhaustion(), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.DAMAGED); // CraftBukkit - EntityExhaustionEvent
if (f < 3.4028235E37F) { if (f < 3.4028235E37F) {
@@ -260,7 +260,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
} }
} }
// CraftBukkit end // CraftBukkit end
@@ -2228,7 +2228,7 @@ public abstract class LivingEntity extends Entity { @@ -2231,7 +2231,7 @@ public abstract class LivingEntity extends Entity {
CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, f, originalDamage, true); CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, f, originalDamage, true);
f2 = (float) -event.getDamage(DamageModifier.BLOCKING); f2 = (float) -event.getDamage(DamageModifier.BLOCKING);
if (f2 > 0.0F && f2 < 3.4028235E37F) { if (f2 > 0.0F && f2 < 3.4028235E37F) {
@@ -269,7 +269,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
} }
} }
@@ -3032,13 +3032,13 @@ public abstract class LivingEntity extends Entity { @@ -3035,13 +3035,13 @@ public abstract class LivingEntity extends Entity {
this.level.getProfiler().push("rangeChecks"); this.level.getProfiler().push("rangeChecks");
// Paper start - stop large pitch and yaw changes from crashing the server // Paper start - stop large pitch and yaw changes from crashing the server
@@ -424,7 +424,7 @@ index 16504b8be08064e61b013fa943f692816612cbd0..38f6759501dcc2a0adb9608a9f639c24
i = Mth.clamp(i, (int) 0, (int) 15); i = Mth.clamp(i, (int) 0, (int) 15);
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
index 19ffd93b7bc745d9a6822f1e5642d2f640f61df7..61e35c7a91341701bad119ca9ea56373b6b7d7a9 100644 index cb64b46eb874bb7ce22cdbf9e9629c929a05fb61..92439cfe75932ff0997c6deabf43a552175e927e 100644
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
@@ -249,8 +249,8 @@ public abstract class ChunkGenerator { @@ -249,8 +249,8 @@ public abstract class ChunkGenerator {

View File

@@ -1,51 +1,47 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: etil2jz <81570777+etil2jz@users.noreply.github.com> From: astei <andrew@steinborn.me>
Date: Sat, 16 Jul 2022 18:12:38 +0200 Date: Sat, 1 Oct 2022 09:56:47 +0200
Subject: [PATCH] Implement Velocity VarInt optimizations Subject: [PATCH] PaperPR Optimize VarInts
Original license: GPLv3 Original license: GPLv3
Original project: https://github.com/PaperMC/Velocity Original project: https://github.com/PaperMC/Velocity
Paper pull request: https://github.com/PaperMC/Paper/pull/6957 Paper pull request: https://github.com/PaperMC/Paper/pull/8418
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
index 35377576ed182814051c11f902e02e8e921e84e3..8747a55d8818d4526939070fa29a12ab643f0798 100644 index 35377576ed182814051c11f902e02e8e921e84e3..4b4a3c0da7a512e16d9a5758ed7312dc9ddc1e28 100644
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
@@ -82,19 +82,22 @@ public class FriendlyByteBuf extends ByteBuf { @@ -87,15 +87,18 @@ public class FriendlyByteBuf extends ByteBuf {
private static final int PUBLIC_KEY_SIZE = 256;
private static final int MAX_PUBLIC_KEY_HEADER_SIZE = 256;
private static final int MAX_PUBLIC_KEY_LENGTH = 512;
+ // Mirai start - Optimize VarInts
+ private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33];
+ static {
+ for (int i = 0; i <= 32; ++i) {
+ VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d);
+ }
+ VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0.
+ }
+ // Mirai end
public FriendlyByteBuf(ByteBuf parent) {
this.source = parent; this.source = parent;
} }
public static int getVarIntSize(int value) { - public static int getVarIntSize(int value) {
- for (int j = 1; j < 5; ++j) { - for (int j = 1; j < 5; ++j) {
- if ((value & -1 << j * 7) == 0) { - if ((value & -1 << j * 7) == 0) {
- return j; - return j;
- } - }
- } + //Paper start - Optimize VarInts
+ private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33];
+ static {
+ for (int i = 0; i <= 32; ++i) {
+ VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d);
}
- -
- return 5; - return 5;
+ return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; // Mirai - Optimize VarInts + VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0.
+ }
+ public static int getVarIntSize(int value) {
+ return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; // Paper - Optimize VarInts
} }
+ //Paper end - Optimize VarInts
public static int getVarLongSize(long value) { public static int getVarLongSize(long value) {
@@ -503,7 +506,23 @@ public class FriendlyByteBuf extends ByteBuf { for (int j = 1; j < 10; ++j) {
@@ -503,7 +506,22 @@ public class FriendlyByteBuf extends ByteBuf {
return new UUID(this.readLong(), this.readLong()); return new UUID(this.readLong(), this.readLong());
} }
+ // Mirai start - Optimize VarInts + // Paper start - Optimize VarInts
public FriendlyByteBuf writeVarInt(int value) { public FriendlyByteBuf writeVarInt(int value) {
+ // Peel the one and two byte count cases explicitly as they are the most common VarInt sizes + // Peel the one and two byte count cases explicitly as they are the most common VarInt sizes
+ // that the proxy will write, to improve inlining. + // that the proxy will write, to improve inlining.
@@ -59,9 +55,8 @@ index 35377576ed182814051c11f902e02e8e921e84e3..8747a55d8818d4526939070fa29a12ab
+ } + }
+ return this; + return this;
+ } + }
+
+ public FriendlyByteBuf writeVarInt_(int value) { + public FriendlyByteBuf writeVarInt_(int value) {
+ // Mirai end + // Paper end - Optimize VarInts
while ((value & -128) != 0) { while ((value & -128) != 0) {
this.writeByte(value & 127 | 128); this.writeByte(value & 127 | 128);
value >>>= 7; value >>>= 7;

View File

@@ -11,10 +11,10 @@ Original project: https://github.com/Bloom-host/Petal
2. euclideangameeventdispatcher is not used concurrently so we ban that usage for improved performance with allays 2. euclideangameeventdispatcher is not used concurrently so we ban that usage for improved performance with allays
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index e2da2c2823fd64ec714c3d083039fc04d11fea73..3f749f33f9168455cfe14a6e6120f36b412205f3 100644 index b0b881eed06b1963c639b1a2c0808ab47fb34ac0..7dc341e91aaa581e499dfa3823712fcece9d5756 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1623,6 +1623,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1648,6 +1648,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (chunk != null) { if (chunk != null) {
for (int j2 = k; j2 <= j1; ++j2) { for (int j2 = k; j2 <= j1; ++j2) {
flag |= chunk.getEventDispatcher(j2).walkListeners(event, emitterPos, emitter, (gameeventlistener, vec3d1) -> { flag |= chunk.getEventDispatcher(j2).walkListeners(event, emitterPos, emitter, (gameeventlistener, vec3d1) -> {
@@ -41,7 +41,7 @@ index 22c309343299e60ed8028229b7f134109001ff35..d5947d29295ddc93ba8ac1c0fc61f7ba
org.bukkit.craftbukkit.event.CraftEventFactory.sourceBlockOverride = blockEntity.getBlockPos(); // CraftBukkit - SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep. org.bukkit.craftbukkit.event.CraftEventFactory.sourceBlockOverride = blockEntity.getBlockPos(); // CraftBukkit - SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep.
blockEntity.sculkSpreader.updateCursors(world, pos, world.getRandom(), true); blockEntity.sculkSpreader.updateCursors(world, pos, world.getRandom(), true);
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java 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 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d03461922d 100644 index 34334c139176e0aa9f6d93a87821508d17567cfc..6ba7d8c32cdd51c2c291ccafe0a9d145c88155f5 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -84,7 +84,18 @@ public class LevelChunk extends ChunkAccess { @@ -84,7 +84,18 @@ public class LevelChunk extends ChunkAccess {
@@ -63,8 +63,8 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0
+ // petal end + // petal end
private final LevelChunkTicks<Block> blockTicks; private final LevelChunkTicks<Block> blockTicks;
private final LevelChunkTicks<Fluid> fluidTicks; private final LevelChunkTicks<Fluid> fluidTicks;
// Paper start - track last save time
@@ -119,7 +130,7 @@ public class LevelChunk extends ChunkAccess { @@ -113,7 +124,7 @@ public class LevelChunk extends ChunkAccess {
this.tickersInLevel = Maps.newHashMap(); this.tickersInLevel = Maps.newHashMap();
this.clientLightReady = false; this.clientLightReady = false;
this.level = (ServerLevel) world; // CraftBukkit - type this.level = (ServerLevel) world; // CraftBukkit - type
@@ -73,7 +73,7 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0
Heightmap.Types[] aheightmap_type = Heightmap.Types.values(); Heightmap.Types[] aheightmap_type = Heightmap.Types.values();
int j = aheightmap_type.length; int j = aheightmap_type.length;
@@ -453,9 +464,23 @@ public class LevelChunk extends ChunkAccess { @@ -446,9 +457,23 @@ public class LevelChunk extends ChunkAccess {
if (world instanceof ServerLevel) { if (world instanceof ServerLevel) {
ServerLevel worldserver = (ServerLevel) world; ServerLevel worldserver = (ServerLevel) world;
@@ -100,7 +100,7 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0
} else { } else {
return super.getEventDispatcher(ySectionCoord); return super.getEventDispatcher(ySectionCoord);
} }
@@ -819,7 +844,7 @@ public class LevelChunk extends ChunkAccess { @@ -812,7 +837,7 @@ public class LevelChunk extends ChunkAccess {
gameeventdispatcher.unregister(gameeventlistener); gameeventdispatcher.unregister(gameeventlistener);
if (gameeventdispatcher.isEmpty()) { if (gameeventdispatcher.isEmpty()) {

View File

@@ -10,7 +10,7 @@ this patch is focused around the sensors used for ai
delete the line of sight cache less often and use a faster nearby comparison delete the line of sight cache less often and use a faster nearby comparison
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index e31bb8d49a9efa0417e6f855a020035ae2c7041d..0b4d283ec3af265eed4e75ac89007ad30adc3071 100644 index 2c4cd831414f73e6eba51e8b49d97cdb89ec6fbb..bfa50273b6726e6f228ee235b1abf4d9d5145703 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -998,12 +998,14 @@ public abstract class LivingEntity extends Entity { @@ -998,12 +998,14 @@ public abstract class LivingEntity extends Entity {
@@ -31,7 +31,7 @@ index e31bb8d49a9efa0417e6f855a020035ae2c7041d..0b4d283ec3af265eed4e75ac89007ad3
return d0; return d0;
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index ee6c33ff21dcbc6d7ee5f4df18be02fe2350ebd6..4d8604bbf9f5f740a3248b1388408a76c9f232d0 100644 index 63911fd0d2a5f194ed4632f209555b3146ed7b79..fe6ea0b8f40172e59ad0f84c440ceeddd9b2c001 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -855,10 +855,10 @@ public abstract class Mob extends LivingEntity { @@ -855,10 +855,10 @@ public abstract class Mob extends LivingEntity {

View File

@@ -17,10 +17,10 @@ index 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..d08127b516fbae1a5500a9d3f0df02a4
} }
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index aec14ff5235686a3e02b66eb3ad05fed2c4756b4..60ba00eb6daeeb9b97281f9380d373af3cc29402 100644 index 7cce3a758a0b19956572135162d88e92e4412018..6fd98bfba759af0f21d5225664757c023a9e4f6c 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -619,6 +619,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -646,6 +646,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override @Override
public boolean enforceSecureProfile() { public boolean enforceSecureProfile() {
@@ -68,7 +68,7 @@ index c2f1eeeac3f48b99ade23f95b2af034773af2286..bc916c46c940e9395feb4f7c835e2844
if (packet == null || this.processedDisconnect) { // Spigot if (packet == null || this.processedDisconnect) { // Spigot
return; return;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 32b74aa339db55d187824984b1bd82ccb0953167..193ff873323b2f4845ef6e90f8a05fc168b6b77d 100644 index b4158aed45ec60be71251d5b90e340f790e239fb..631cb49918cb0eef97407ffc95a0b001ecd31a62 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1489,6 +1489,7 @@ public abstract class PlayerList { @@ -1489,6 +1489,7 @@ public abstract class PlayerList {

View File

@@ -98,10 +98,10 @@ index 4fea1c9873b4dd9c9f21722adbb02200487caf3c..cd47b6882509888f7d34e95b4687ca7a
return instance.group(Registry.ITEM.byNameCodec().fieldOf("id").forGetter((itemstack) -> { return instance.group(Registry.ITEM.byNameCodec().fieldOf("id").forGetter((itemstack) -> {
return itemstack.item; return itemstack.item;
diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java 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 bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1..c707fd29ba282c1ee45d3dc8d8c03dca048420ef 100644 index 895c0f1600139e340aa22a7c398978add56fa706..d5ced4c4ad354bbe6e6d256853de659923044299 100644
--- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
@@ -59,7 +59,11 @@ public final class Ingredient implements Predicate<ItemStack> { @@ -54,7 +54,11 @@ public final class Ingredient implements Predicate<ItemStack> {
if (this.itemStacks == null) { if (this.itemStacks == null) {
this.itemStacks = (ItemStack[]) Arrays.stream(this.values).flatMap((recipeitemstack_provider) -> { this.itemStacks = (ItemStack[]) Arrays.stream(this.values).flatMap((recipeitemstack_provider) -> {
return recipeitemstack_provider.getItems().stream(); return recipeitemstack_provider.getItems().stream();
@@ -114,7 +114,7 @@ index bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1..c707fd29ba282c1ee45d3dc8d8c03dca
return new ItemStack[i]; return new ItemStack[i];
}); });
} }
@@ -102,7 +106,13 @@ public final class Ingredient implements Predicate<ItemStack> { @@ -104,7 +108,13 @@ public final class Ingredient implements Predicate<ItemStack> {
for (int j = 0; j < i; ++j) { for (int j = 0; j < i; ++j) {
ItemStack itemstack = aitemstack[j]; ItemStack itemstack = aitemstack[j];

View File

@@ -1,121 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Mon, 11 Jul 2022 11:56:41 -0700
Subject: [PATCH] Fix a bunch of vanilla bugs
https://bugs.mojang.com/browse/MC-253884
show raid entity event to all tracking players
https://bugs.mojang.com/browse/MC-253721
wrong msg for opping multiple players
https://bugs.mojang.com/browse/MC-248588
respect mob griefing gamerule for draining water cauldrons
https://bugs.mojang.com/browse/MC-244739
play goat eating sound for last item in stack
https://bugs.mojang.com/browse/MC-243057
ignore furnace fuel slot in recipe book click
Taken from https://github.com/PaperMC/Paper/pull/8187
diff --git a/src/main/java/net/minecraft/server/commands/DeOpCommands.java b/src/main/java/net/minecraft/server/commands/DeOpCommands.java
index cca2618d90306eed9894c5fa7b6ed96b68210688..10769c60bd53438d44fbc6192667acdf4cc95594 100644
--- a/src/main/java/net/minecraft/server/commands/DeOpCommands.java
+++ b/src/main/java/net/minecraft/server/commands/DeOpCommands.java
@@ -33,7 +33,7 @@ public class DeOpCommands {
if (playerList.isOp(gameProfile)) {
playerList.deop(gameProfile);
++i;
- source.sendSuccess(Component.translatable("commands.deop.success", targets.iterator().next().getName()), true);
+ source.sendSuccess(Component.translatable("commands.deop.success", gameProfile.getName()), true); // Paper - fixes MC-253721
}
}
diff --git a/src/main/java/net/minecraft/server/commands/OpCommand.java b/src/main/java/net/minecraft/server/commands/OpCommand.java
index 43e77cef0fce75f59aeb05e161668bebb8fca229..ef50fbf8cb3f008827850b5ed33422007be09bd2 100644
--- a/src/main/java/net/minecraft/server/commands/OpCommand.java
+++ b/src/main/java/net/minecraft/server/commands/OpCommand.java
@@ -38,7 +38,7 @@ public class OpCommand {
if (!playerList.isOp(gameProfile)) {
playerList.op(gameProfile);
++i;
- source.sendSuccess(Component.translatable("commands.op.success", targets.iterator().next().getName()), true);
+ source.sendSuccess(Component.translatable("commands.op.success", gameProfile.getName()), true); // Paper - fixes MC-253721
}
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
index 362f952888f63a453a4352a9f1dc7df799244a3c..0a700defc04f649fb45cb3d3df1e332f39f6d89a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -213,9 +213,10 @@ public class Goat extends Animal {
player.setItemInHand(hand, itemstack1);
return InteractionResult.sidedSuccess(this.level.isClientSide);
} else {
+ boolean isFood = this.isFood(itemstack); // Paper - track before stack is possibly decreased to 0 (Fixes MC-244739)
InteractionResult enuminteractionresult = super.mobInteract(player, hand);
- if (enuminteractionresult.consumesAction() && this.isFood(itemstack)) {
+ if (enuminteractionresult.consumesAction() && isFood) { // Paper
this.level.playSound((Player) null, (Entity) this, this.getEatingSound(itemstack), SoundSource.NEUTRAL, 1.0F, Mth.randomBetween(this.level.random, 0.8F, 1.2F));
}
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java
index fa8fcdfea51a35e4a482d3d7b18159099da62706..feb89eb69994bdd1d2f95d2b9992e69251b2bee7 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raids.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java
@@ -125,7 +125,7 @@ public class Raids extends SavedData {
// CraftBukkit end
} else {
player.removeEffect(MobEffects.BAD_OMEN);
- player.connection.send(new ClientboundEntityEventPacket(player, (byte) 43));
+ this.level.broadcastEntityEvent(player, net.minecraft.world.entity.EntityEvent.BAD_OMEN_TRIGGERED /* (byte) 43 */); // Paper - Fix MC-253884
}
if (flag) {
@@ -140,7 +140,7 @@ public class Raids extends SavedData {
}
// CraftBukkit end
raid.absorbBadOmen(player);
- player.connection.send(new ClientboundEntityEventPacket(player, (byte) 43));
+ this.level.broadcastEntityEvent(player, net.minecraft.world.entity.EntityEvent.BAD_OMEN_TRIGGERED /* (byte) 43 */); // Paper - Fix MC-253884
if (!raid.hasFirstWaveSpawned()) {
player.awardStat(Stats.RAID_TRIGGER);
CriteriaTriggers.BAD_OMEN.trigger(player);
diff --git a/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java b/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java
index a223959f766ac41aff7aeff80606f5e7c37ebf49..1a90860bc39afb8bade96a5c6c40861dbb68c21e 100644
--- a/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java
@@ -63,7 +63,7 @@ public class LayeredCauldronBlock extends AbstractCauldronBlock {
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper
if (!world.isClientSide && entity.isOnFire() && this.isEntityInsideContent(state, pos, entity)) {
// CraftBukkit start
- if (entity.mayInteract(world, pos)) {
+ if ((entity instanceof net.minecraft.world.entity.player.Player || world.getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING)) && entity.mayInteract(world, pos)) { // Paper - Fixes MC-248588
if (!this.handleEntityOnFireInsideWithEvent(state, world, pos, entity)) { // Paper - fix powdered snow cauldron extinguishing entities
return;
}
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index f86ac933490d50179e09fa61e2f6e5af339249c3..ebf718cea97d4ff88e888675eeceeca253dc01cb 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -669,13 +669,10 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@Override
public void fillStackedContents(StackedContents finder) {
- Iterator iterator = this.items.iterator();
-
- while (iterator.hasNext()) {
- ItemStack itemstack = (ItemStack) iterator.next();
-
- finder.accountStack(itemstack);
- }
+ // Paper start - don't account fuel stack (fixes MC-243057)
+ finder.accountStack(this.items.get(SLOT_INPUT));
+ finder.accountStack(this.items.get(SLOT_RESULT));
+ // Paper end
}
}

View File

@@ -9,7 +9,7 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 9c49496741db2e4f309b1bc6ece26f592dd216b8..ac64ed3d6c64caa5c548f350f141e2fee5c2e736 100644 index 48e195a6c8005a64cb286cfae39e54745f83affe..9afedb53289cbdeb62e3e14f8f58b4b77e241a49 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -266,6 +266,7 @@ public class ServerPlayer extends Player { @@ -266,6 +266,7 @@ public class ServerPlayer extends Player {
@@ -21,7 +21,7 @@ index 9c49496741db2e4f309b1bc6ece26f592dd216b8..ac64ed3d6c64caa5c548f350f141e2fe
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, @Nullable ProfilePublicKey publicKey) { public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, @Nullable ProfilePublicKey publicKey) {
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile, publicKey); super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile, publicKey);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 193ff873323b2f4845ef6e90f8a05fc168b6b77d..bded25d3d87ee8c6e90874275e9d1ab3fd65a26b 100644 index 631cb49918cb0eef97407ffc95a0b001ecd31a62..2441cda53d8d0197abf49e53ef101dd5bf63185e 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -970,12 +970,12 @@ public abstract class PlayerList { @@ -970,12 +970,12 @@ public abstract class PlayerList {
@@ -40,10 +40,10 @@ index 193ff873323b2f4845ef6e90f8a05fc168b6b77d..bded25d3d87ee8c6e90874275e9d1ab3
// entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot()); // entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b85ed871a502d0793b4991ed6e7d3f9ad6bba027..35ef241b3d3fbd2249c22f3069bfe41a53ab64be 100644 index d0fc98ed0530a99adeb3c126b1040e40bb97685b..f20d307cc9cf684c181b5e7e9f32625452fea93d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1169,6 +1169,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1212,6 +1212,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end // Paper end
} }

View File

@@ -1,23 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
Date: Sat, 6 Aug 2022 18:10:14 -0400
Subject: [PATCH] PaperPR Set position before player sending on dimension
change
This causes a moment where the player entity is sent with the previous location, and the
teleport packet which is sent shortly after is meant to correct that.
Taken from https://github.com/PaperMC/Paper/pull/8253
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 4d705dc5294bb07b0ce34c68d1c4bbf33bb84848..9c49496741db2e4f309b1bc6ece26f592dd216b8 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1155,6 +1155,7 @@ public class ServerPlayer extends Player {
// CraftBukkit end
this.setLevel(worldserver);
+ this.moveTo(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch()); // Paper - Set the location before
worldserver.addDuringPortalTeleport(this);
this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
this.connection.resetPosition(); // CraftBukkit - sync position after changing it (from PortalTravelAgent#findAndteleport)

View File

@@ -1,181 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tom <cryptite@gmail.com>
Date: Fri, 12 Aug 2022 08:20:02 -0500
Subject: [PATCH] Set BlockData without light updates
Copyright (c) 2021 Tom Miller
Original license: MIT
Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
index 8afacc53a673567cead4c6e49966f07f1d5da754..33f07595a99a94984f221fdf8e436dd3c3b094f5 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -278,7 +278,7 @@ public class WorldGenRegion implements WorldGenLevel {
Block.dropResources(iblockdata, this.level, pos, tileentity, breakingEntity, ItemStack.EMPTY);
}
- return this.setBlock(pos, Blocks.AIR.defaultBlockState(), 3, maxUpdateDepth);
+ return this.setBlock(pos, Blocks.AIR.defaultBlockState(), 3, maxUpdateDepth, true); // Slice
}
}
@@ -353,7 +353,7 @@ public class WorldGenRegion implements WorldGenLevel {
}
@Override
- public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) {
+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) { // Slice
if (!this.ensureCanWrite(pos)) {
return false;
} else {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 53149faf2b33d202809e259800b15a0d0c2dacf2..4f79fb616d594c1d1456cf7efc938c6621fbee68 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -613,12 +613,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
@Override
- public final boolean setBlock(BlockPos pos, BlockState state, int flags) { // Paper - final for inline
- return this.setBlock(pos, state, flags, 512);
+ public final boolean setBlock(BlockPos pos, BlockState state, int flags, boolean checkLight) { // Paper - final for inline
+ return this.setBlock(pos, state, flags, 512, checkLight);
}
@Override
- public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) {
+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) {
// CraftBukkit start - tree generation
if (this.captureTreeGeneration) {
// Paper start
@@ -665,7 +665,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
} else {
BlockState iblockdata2 = this.getBlockState(pos);
- if ((flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) {
+ if (checkLight && (flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) {
this.getProfiler().push("queueCheckLight");
this.getChunkSource().getLightEngine().checkBlock(pos);
this.getProfiler().pop();
@@ -813,7 +813,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
Block.dropResources(iblockdata, this, pos, tileentity, breakingEntity, ItemStack.EMPTY);
}
- boolean flag1 = this.setBlock(pos, fluid.createLegacyBlock(), 3, maxUpdateDepth);
+ boolean flag1 = this.setBlock(pos, fluid.createLegacyBlock(), 3, maxUpdateDepth, true);
if (flag1) {
this.gameEvent(GameEvent.BLOCK_DESTROY, pos, GameEvent.Context.of(breakingEntity, iblockdata));
diff --git a/src/main/java/net/minecraft/world/level/LevelWriter.java b/src/main/java/net/minecraft/world/level/LevelWriter.java
index 134e5ec79bf2dddd4e31930f8a7cb2c02fa29518..fd72d278a2719911a46b6bc9e7da2dc24bbe681e 100644
--- a/src/main/java/net/minecraft/world/level/LevelWriter.java
+++ b/src/main/java/net/minecraft/world/level/LevelWriter.java
@@ -7,10 +7,14 @@ import net.minecraft.world.level.block.state.BlockState;
public interface LevelWriter {
- boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth);
+ boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight);
default boolean setBlock(BlockPos pos, BlockState state, int flags) {
- return this.setBlock(pos, state, flags, 512);
+ return this.setBlock(pos, state, flags, 512, true);
+ }
+
+ default boolean setBlock(BlockPos pos, BlockState state, int flags, boolean checkLight) {
+ return this.setBlock(pos, state, flags, 512, checkLight);
}
boolean removeBlock(BlockPos pos, boolean move);
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 1834470b549d8352317cf081173ff542c9faac1e..ebbbb5033f88a4cea866b0415001c2f747e1248f 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -200,7 +200,7 @@ public class Block extends BlockBehaviour implements ItemLike {
world.destroyBlock(pos, (flags & 32) == 0, (Entity) null, maxUpdateDepth);
}
} else {
- world.setBlock(pos, newState, flags & -33, maxUpdateDepth);
+ world.setBlock(pos, newState, flags & -33, maxUpdateDepth, true); // Slice
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
index 62bca85da6c5d9877e21fecb702370506ddf671c..9e339db1a9257e64f5645ba7e4025debaa4110e9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
@@ -277,7 +277,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
BlockPos pos = new BlockPos(x, y, z);
net.minecraft.world.level.block.state.BlockState old = this.getHandle().getBlockState(pos);
- CraftBlock.setTypeAndData(world, pos, old, ((CraftBlockData) blockData).getState(), true);
+ CraftBlock.setTypeAndData(world, pos, old, ((CraftBlockData) blockData).getState(), true, true);
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index 0d47460494135d4ec4c95260de033e054c2f0404..4d49cc4ceba781bc24ac9b4229483625a996839d 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -187,15 +187,20 @@ public class CraftBlock implements Block {
@Override
public void setBlockData(BlockData data, boolean applyPhysics) {
+ setBlockData(data, applyPhysics, true);
+ }
+
+ @Override
+ public void setBlockData(BlockData data, boolean applyPhysics, boolean checkLight) {
Preconditions.checkArgument(data != null, "BlockData cannot be null");
- this.setTypeAndData(((CraftBlockData) data).getState(), applyPhysics);
+ this.setTypeAndData(((CraftBlockData) data).getState(), applyPhysics, checkLight);
}
- boolean setTypeAndData(final net.minecraft.world.level.block.state.BlockState blockData, final boolean applyPhysics) {
- return CraftBlock.setTypeAndData(this.world, this.position, this.getNMS(), blockData, applyPhysics);
+ boolean setTypeAndData(final net.minecraft.world.level.block.state.BlockState blockData, final boolean applyPhysics, boolean checkLight) {
+ return CraftBlock.setTypeAndData(this.world, this.position, this.getNMS(), blockData, applyPhysics, checkLight);
}
- public static boolean setTypeAndData(LevelAccessor world, BlockPos position, net.minecraft.world.level.block.state.BlockState old, net.minecraft.world.level.block.state.BlockState blockData, boolean applyPhysics) {
+ public static boolean setTypeAndData(LevelAccessor world, BlockPos position, net.minecraft.world.level.block.state.BlockState old, net.minecraft.world.level.block.state.BlockState blockData, boolean applyPhysics, boolean checkLight) {
// SPIGOT-611: need to do this to prevent glitchiness. Easier to handle this here (like /setblock) than to fix weirdness in tile entity cleanup
if (old.hasBlockEntity() && blockData.getBlock() != old.getBlock()) { // SPIGOT-3725 remove old tile entity if block changes
// SPIGOT-4612: faster - just clear tile
@@ -209,7 +214,7 @@ public class CraftBlock implements Block {
if (applyPhysics) {
return world.setBlock(position, blockData, 3);
} else {
- boolean success = world.setBlock(position, blockData, 2 | 16 | 1024); // NOTIFY | NO_OBSERVER | NO_PLACE (custom)
+ boolean success = world.setBlock(position, blockData, 2 | 16 | 1024, checkLight); // NOTIFY | NO_OBSERVER | NO_PLACE (custom)
if (success && world instanceof net.minecraft.world.level.Level) {
world.getMinecraftWorld().sendBlockUpdated(
position,
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
index 966ac60daebb7bb211ab8096fc0c5f33db67320a..d68b046e30d0f3d186ed90b7c36086ccd889de1f 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
@@ -213,7 +213,7 @@ public class CraftBlockState implements BlockState {
}
net.minecraft.world.level.block.state.BlockState newBlock = this.data;
- block.setTypeAndData(newBlock, applyPhysics);
+ block.setTypeAndData(newBlock, applyPhysics, true);
if (access instanceof net.minecraft.world.level.Level) {
this.world.getHandle().sendBlockUpdated(
position,
diff --git a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
index cd0dc080fbd8c5b1509d67e2b60264393b2b7dbb..8195cace753c6d044a128f768459303bc2f97588 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
@@ -241,7 +241,7 @@ public class DummyGeneratorAccess implements WorldGenLevel {
}
@Override
- public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) {
+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) {
return false;
}

View File

@@ -7,7 +7,7 @@ Original license: GPLv3
Original project: https://github.com/MultiPaper/MultiPaper Original project: https://github.com/MultiPaper/MultiPaper
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d8f85e052 100644 index d2478bda9e8395a8730a3416ce3133782ab9a8e9..cc9c5eecc4ef1d5dc4e814ad89a40a34f4d48a69 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -45,6 +45,8 @@ import java.util.logging.Level; @@ -45,6 +45,8 @@ import java.util.logging.Level;
@@ -27,7 +27,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d
private final Map<Class<?>, Registry<?>> registries = new HashMap<>(); private final Map<Class<?>, Registry<?>> registries = new HashMap<>();
private YamlConfiguration configuration; private YamlConfiguration configuration;
private YamlConfiguration commandsConfiguration; private YamlConfiguration commandsConfiguration;
@@ -1307,6 +1310,7 @@ public final class CraftServer implements Server { @@ -1312,6 +1315,7 @@ public final class CraftServer implements Server {
this.getLogger().log(Level.SEVERE, null, ex); this.getLogger().log(Level.SEVERE, null, ex);
} }
@@ -35,7 +35,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d
this.worlds.remove(world.getName().toLowerCase(java.util.Locale.ENGLISH)); this.worlds.remove(world.getName().toLowerCase(java.util.Locale.ENGLISH));
this.console.removeLevel(handle); this.console.removeLevel(handle);
return true; return true;
@@ -1325,6 +1329,7 @@ public final class CraftServer implements Server { @@ -1330,6 +1334,7 @@ public final class CraftServer implements Server {
@Override @Override
public World getWorld(UUID uid) { public World getWorld(UUID uid) {
@@ -43,7 +43,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d
for (World world : this.worlds.values()) { for (World world : this.worlds.values()) {
if (world.getUID().equals(uid)) { if (world.getUID().equals(uid)) {
return world; return world;
@@ -1348,6 +1353,7 @@ public final class CraftServer implements Server { @@ -1353,6 +1358,7 @@ public final class CraftServer implements Server {
System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world.");
return; return;
} }

View File

@@ -1,45 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PureGero <puregero@gmail.com>
Date: Sat, 25 Dec 2021 18:34:04 +1000
Subject: [PATCH] Run tasks while reading poi data
Original license: GPLv3
Original project: https://github.com/MultiPaper/MultiPaper
diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java
index 210b0cdd4831421c8f43c3d823ac8e962b56bbbc..a52955c51988c821ab00f0c2298193aaa8126330 100644
--- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java
+++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java
@@ -1,5 +1,6 @@
package net.minecraft.world.entity.ai.village.poi;
+import com.destroystokyo.paper.io.PaperFileIOThread;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; // Paper
import com.mojang.datafixers.DataFixer;
import com.mojang.datafixers.util.Pair;
@@ -11,6 +12,7 @@ import java.nio.file.Path;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.BiPredicate;
import java.util.function.BooleanSupplier;
@@ -460,9 +462,15 @@ public class PoiManager extends SectionStorage<PoiSection> {
@Override
public net.minecraft.nbt.CompoundTag read(ChunkPos chunkcoordintpair) throws java.io.IOException {
if (this.world != null && Thread.currentThread() != com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE) {
- net.minecraft.nbt.CompoundTag ret = com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE
+ // MultiPaper start - don't block the main thread, run tasks in the meantime
+ CompletableFuture<PaperFileIOThread.ChunkData> completablefuture = com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE
.loadChunkDataAsyncFuture(this.world, chunkcoordintpair.x, chunkcoordintpair.z, com.destroystokyo.paper.io.IOUtil.getPriorityForCurrentThread(),
- true, false, true).join().poiData;
+ true, false, true);
+ if (!completablefuture.isDone()) {
+ world.chunkSource.mainThreadProcessor.managedBlock(completablefuture::isDone);
+ }
+ net.minecraft.nbt.CompoundTag ret = completablefuture.join().poiData;
+ // MultiPaper end
if (ret == com.destroystokyo.paper.io.PaperFileIOThread.FAILURE_VALUE) {
throw new java.io.IOException("See logs for further detail");

View File

@@ -1,27 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PureGero <puregero@gmail.com>
Date: Thu, 27 Jan 2022 22:43:56 +1000
Subject: [PATCH] Run tasks while we wait for the entity storage worker to
close
Original license: GPLv3
Original project: https://github.com/MultiPaper/MultiPaper
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
index 2bc0384728f89b7c64a8beec78a1b77dc063d37b..513ba9199a1361e678e0146e1ca36af9e42ce3dd 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
@@ -122,7 +122,12 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
@Override
public void flush(boolean sync) {
- this.worker.synchronize(sync).join();
+ // MultiPaper start - Run tasks while we wait for the entity storage worker to close
+ CompletableFuture<Void> completableFuture = this.worker.synchronize(sync);
+ if (!completableFuture.isDone()) {
+ level.chunkSource.mainThreadProcessor.managedBlock(completableFuture::isDone);
+ }
+ // MultiPaper end
this.entityDeserializerQueue.runAll();
}