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
version=1.19.2-R0.1-SNAPSHOT
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
index da5cab4246bd253fcc4e4d9574bdae1867ebb5ab..61026efa7aa6f60f3bc7f137164734bc08c1bc96 100644
index e43fef0152468944d8a33036344a43e95fe58476..0aa8e0b5f0e5e93114c4ad65e9d9254f7dcd9c12 100644
--- a/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

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
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
+++ 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();
}
@@ -28,10 +28,10 @@ index 840aaf9e8fc828b5a7ea02252038c6524680f2e0..994e81359154fc52392fe64cbe5f17a7
* 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
index 61026efa7aa6f60f3bc7f137164734bc08c1bc96..f25e6808c9ce7276c3e49c6ad03eda5ffa35e5f8 100644
index 0aa8e0b5f0e5e93114c4ad65e9d9254f7dcd9c12..259209a999b80542a21ce6083301d3848d4006af 100644
--- a/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();

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
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
+++ 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();
// Paper end

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Mirai Branding Changes
diff --git a/build.gradle.kts b/build.gradle.kts
index 7074295d7399d03e259598bb4bfa0f21434d74be..b3b74bfee4a568697f36d6fab9f77652911c75ff 100644
index f0d22a733e3b97fb959cd566fb6c93c6d5681e16..65441b943a97f8aa453f31bf5cf7f87862fdcc07 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -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
index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..509a9a5326d94200ca3d7a83ae47c6bb093d6969 100644
index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..d0a342ce8a5cc1a12ecab7969187166fe3597708 100644
--- a/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 {
@@ -217,10 +217,10 @@ index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..509a9a5326d94200ca3d7a83ae47c6bb
.completer(new ConsoleCommandCompleter(this.server))
.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
index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a6486ccc2faa 100644
index af9da39dffda01325af2ab3dd8b5e1efb18e013a..da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c 100644
--- a/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();
org.spigotmc.WatchdogThread.doStop(); // Paper
if (!isSameThread()) {
@@ -229,7 +229,7 @@ index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a648
while (this.getRunningThread().isAlive()) {
this.getRunningThread().stop();
try {
@@ -1675,7 +1675,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1656,7 +1656,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@@ -239,7 +239,7 @@ index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a648
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
index 660d3f6e8a59751aa1d5b71f5bab72254b6065b8..613c72b94dc47edf5c454545e2e2b05752a92bc8 100644
index b8efe50c860a7537f345f46f3b3d68906ad54006..adf6308c0d8dbd8919db60abce51082091005bd1 100644
--- a/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
@@ -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
index d568fc92d03c313a782796cc720a1ebb1a5ad8be..413bcdb0389718a73047a114e6f5d05d96bdcf43 100644
index e9fa7faaa4451e36b3908cbcbbe0baf213abde96..a566fa4b061961fb07720642564c4d521fbacab6 100644
--- a/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) {
// Paper end
log.log( Level.SEVERE, "------------------------------" );
@@ -323,7 +323,7 @@ index d568fc92d03c313a782796cc720a1ebb1a5ad8be..413bcdb0389718a73047a114e6f5d05d
//
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
} else
{
@@ -335,10 +335,10 @@ index d568fc92d03c313a782796cc720a1ebb1a5ad8be..413bcdb0389718a73047a114e6f5d05d
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 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
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( server.serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -206,7 +206,7 @@ public class WatchdogThread extends Thread
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -206,7 +206,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
WatchdogThread.dumpThread( thread, log );
}
} else {

View File

@@ -54,19 +54,19 @@ index ae60bd96b5284d54676d8e7e4dd5d170b526ec1e..2344ea858eda8e54c2eb3ccbdad464ed
return true;
}
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
+++ 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(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> {
@@ -75,7 +75,7 @@ index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80
protected static final int DEFAULT_CAPACITY = 4;
protected E[] storage;
@@ -200,7 +200,7 @@ public final class ChunkEntitySlices {
@@ -309,7 +309,7 @@ public final class ChunkEntitySlices {
}
public BasicEntityList(final int cap) {
@@ -84,7 +84,7 @@ index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80
}
public boolean isEmpty() {
@@ -212,7 +212,7 @@ public final class ChunkEntitySlices {
@@ -321,7 +321,7 @@ public final class ChunkEntitySlices {
}
private void resize() {
@@ -237,7 +237,7 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..f7f19e360d712211625ff28e92f83949
protected CipherBase(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
index 2a26d03fba2f3b37f176be9e47954ef9a6cd7b3e..969968cfcf2c2ed019fab3407b22d4974926bdd2 100644
index 6967c90c50ea75fb9dd5da808b2c8c8ea046ecec..2852c47afcba5633a747977e250e60a5d28b0e1e 100644
--- a/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<?>> {
@@ -276,10 +276,10 @@ index 5962f7a2b185d7d54a0f9e341a4fdf6e6f1c1ec5..0b677d128cbd108bb58d74d3cfe60155
OptionSpec<Integer> optionspec11 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]);
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
index 9b64602e5ce5100dd1d467d404b4a6486ccc2faa..e5e88728d2d3b4ac9e266294999af84aee4aeae4 100644
index da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c..7ace6c1e81519b3e4f673d23627ca603fecb646d 100644
--- a/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 {
BufferedImage bufferedimage = ImageIO.read(file);
@@ -291,10 +291,10 @@ index 9b64602e5ce5100dd1d467d404b4a6486ccc2faa..e5e88728d2d3b4ac9e266294999af84a
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
index 88152988425b7b02ec5ce229ba4c24b40e030329..a0317be1eea29e4e911976e0106563cf49db1e6b 100644
index 1eb912ad97f9663bf6bd336ad739f2552b0a5c9b..9901ffe9de585a73e9ef32c700b1e8702f8786d3 100644
--- a/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) {
List<Pair<EquipmentSlot, ItemStack>> list = Lists.newArrayList();
@@ -304,10 +304,10 @@ index 88152988425b7b02ec5ce229ba4c24b40e030329..a0317be1eea29e4e911976e0106563cf
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 8ed9f14f1ca71111a8215b28821bd5e398c0d0a6..31a4dac824b3d98e05cef5b96473a8a179516a01 100644
index f8750675044708e71dbf6293be6ce36bd6c510ca..413c5891e1affc89f2d4e63214ef6621d63f83b3 100644
--- a/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);
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).
// 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() {
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
index 855eac5e6f3a99a2fc31ad0e02c496d4b5c60622..e7ff681368bcbda82ff9f783ce5d953c8dc194b8 100644
index b607f5ccbce10570f827dd21eb38504f42781d2f..d6f1cbea24de82ada6083749f079401dbcca1ced 100644
--- a/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
@@ -388,7 +388,7 @@ index 855eac5e6f3a99a2fc31ad0e02c496d4b5c60622..e7ff681368bcbda82ff9f783ce5d953c
final String s;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 5999d85e38951503fc83b40cfe39671921ae5088..c50d214eed0414e9b8dc3062d67dc9427c534ef0 100644
index 06eda955f96b5fe2d08ed0d39229c7a6ebb88931..3fc95b7d7b41e078e1d219e29ada27aeab1320bf 100644
--- a/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 {
@@ -451,10 +451,10 @@ index c82bb38b5b1c9204daef21455723d21509ad1c44..4aa044ab8748c01b0022096733e5bacf
private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) {
this.type = type;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index ded69bc892aaf35cc57a562116bb623c07b08550..d33d551838ea12f9f7f4416b9e7b5111e86ad82e 100644
index 26efc49b4530112c8bd3f580ce375ab4203c9609..c0e316582e085873c05a76c16e612eabd2e8cf2a 100644
--- a/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
private Map<EquipmentSlot, ItemStack> collectEquipmentChanges() {
Map<EquipmentSlot, ItemStack> map = null;
@@ -464,7 +464,7 @@ index ded69bc892aaf35cc57a562116bb623c07b08550..d33d551838ea12f9f7f4416b9e7b5111
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 5ab1f5d36a61e7a7fe8da4e74f75963ea6432101..5c0b53b5ddc2f5f18850f72fa562938fe108b244 100644
index e89b88eb3d4202ea7ff043dc9e92163332cd10d3..78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c 100644
--- a/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 {
@@ -583,12 +583,12 @@ index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..b9579e3d1610ddcb5251baa2dd9462e0
@Override
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
+++ 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) {
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) {
- return new org.bukkit.entity.Entity[0];
+ return me.titaniumtown.Constants.EMPTY_bukkit_entity_arr; // JettPack
@@ -627,7 +627,7 @@ index 492e3ffd6a4588a521486db631f3e8b2a25b74ec..111635d43ac0b93e089f5a115521a502
@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
index 4977f3fad3bfc12fd4c5f9fbe8beea2895247c57..f86ac933490d50179e09fa61e2f6e5af339249c3 100644
index c6aeda6497cb59673b469588142f5f15a338389d..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
@@ -64,7 +64,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -666,10 +666,10 @@ index 16d2aa4556bc9f32a2def7f9ca282aa3fa23fb87..290a0d35e1e4ca8b7281aa6d8cdb66da
@Nullable
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
+++ 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 {

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
new file mode 100644
index 0000000000000000000000000000000000000000..d2b00d9a91b60716d5f458048df3d944060eb749
index 0000000000000000000000000000000000000000..b8c9cb28876c2c1781cd72870076d528b9647916
--- /dev/null
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java
@@ -0,0 +1,90 @@
@@ -67,12 +67,12 @@ index 0000000000000000000000000000000000000000..d2b00d9a91b60716d5f458048df3d944
+
+ // [VanillaCopy] MathHelper#sin(float)
+ public static float sin(float f) {
+ return lookup((int) (f * 10430.38) & 0xFFFF);
+ return lookup((int) (f * 10430.378f) & 0xFFFF);
+ }
+
+ // [VanillaCopy] MathHelper#cos(float)
+ 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) {

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
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
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1122,6 +1122,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper End
@@ -1095,6 +1095,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot End
public static volatile RuntimeException chunkSystemCrash; // Paper - rewrite chunk system
+ public static java.time.Duration lastTickTime = java.time.Duration.ZERO; // Yatopia
+
protected void runServer() {
try {
long serverStartTime = Util.getNanos(); // Paper
@@ -1192,7 +1194,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1172,7 +1173,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.nextTickTime += 50L;
this.startMetricsRecordingTick();
this.profiler.push("tick");
@@ -30,10 +29,10 @@ index e5e88728d2d3b4ac9e266294999af84aee4aeae4..98b9b07e24b50e7021546680baf2ddd8
this.mayHaveDelayedTasks = true;
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
index 613c72b94dc47edf5c454545e2e2b05752a92bc8..fb00db7158f90baf0b6dff752b31012ac3224d47 100644
index adf6308c0d8dbd8919db60abce51082091005bd1..f6f15f1913b558b457e6e63db93cb0f9c1b6724d 100644
--- a/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() {
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
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
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -182,7 +182,7 @@ import org.bukkit.event.server.ServerLoadEvent;
@@ -19,7 +19,7 @@ index 98b9b07e24b50e7021546680baf2ddd86ce5bd98..fa185dba873f8a58378a5575bf408690
private static MinecraftServer SERVER; // Paper
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
@@ -43,7 +43,7 @@ index 98b9b07e24b50e7021546680baf2ddd86ce5bd98..fa185dba873f8a58378a5575bf408690
@Override
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) {
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
index 795691bcb61a7c2b4f903d8db3b6714908c78ac2..2bb545b505aa726b7ed7c757caed84bf0538782e 100644
index 7266e6703d5cd0fea90ec88c74a7d4567f2420ae..16ee24bef4eb2184d821565665f3c1ddf0f3bb39 100644
--- a/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;
}

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
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
+++ 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;
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
int j1 = this.getCoprime(i1);
@@ -19,7 +19,7 @@ index 94944ba458178f9e5b772224da329bb5d85f4394..56e5679a3910a6e5b25aeb0d3eb74204
for (int l1 = 0; l1 < i1; ++l1) {
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;
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
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
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
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -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.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.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
index bbf15fbb889670e57bd86377590a1b3abe80b96d..ce61f9e8a835bc5e2d3815e337ed9785f9d06f04 100644
--- 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
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
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1038,22 +1038,22 @@ public abstract class PlayerList {
@@ -48,10 +48,10 @@ index 95455c3a786a746dbf14095c89dfd2b7bdb1e4da..32b74aa339db55d187824984b1bd82cc
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
index 4ba927b4585ca56337fa763d60d21de3b58bb2f7..b85ed871a502d0793b4991ed6e7d3f9ad6bba027 100644
index 968aa80b57a31d89852c6f4bc0ec5ed4a98c6530..d0fc98ed0530a99adeb3c126b1040e40bb97685b 100644
--- a/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
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
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
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -181,6 +181,7 @@ public class ServerEntity {
@@ -40,7 +40,7 @@ index a0317be1eea29e4e911976e0106563cf49db1e6b..4197961b2f03a5151b396d0d09bf5cb9
+
public void removePairing(ServerPlayer 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
index 0f94e6a76ab2c323562231ffe58a7c18819e6b00..992ab312e6e2b8283ef8187bcbeeb35dd51858a1 100644
--- a/src/main/java/wtf/etil/mirai/MiraiConfig.java

View File

@@ -29,7 +29,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216
setListData(vector);
}
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
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -290,7 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab
@@ -41,7 +41,7 @@ index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de2
// Spigot end
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations;
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 long lastTick = 0;
private long catchupTime = 0;
@@ -49,7 +49,7 @@ index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de2
public final RollingAverage tps1 = new RollingAverage(60);
public final RollingAverage tps5 = new RollingAverage(60 * 5);
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;
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;
}
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
+++ 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
public double[] getTPS() {
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
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
+++ 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);
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved();
@@ -19,10 +19,10 @@ index 422c65f6e42f3ba5e58126d936dd17913ae0d2b8..e52256415e2776f41d107cbf39a73708
// CraftBukkit end
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
index 417570c2ad71bc3727e7d5eb841a92ec815d12f6..f30d79d0f77cf411bdb47148ae86ba406a2fdee6 100644
index fc4bd8ad4836aa6bdd228885f0aeb22500782af5..1af80fe51a67260e4ada32fb5880d50b3fac1d51 100644
--- a/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());
}

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
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
+++ 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 (!(wtf.etil.mirai.MiraiConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown();
@@ -19,7 +19,7 @@ index f30d79d0f77cf411bdb47148ae86ba406a2fdee6..ae3908fb16c935c223853c456795aa68
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable();
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() {

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)
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
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -300,6 +300,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -20,7 +20,7 @@ index ae3908fb16c935c223853c456795aa680c8f81f9..b29ceb976323a80d37f0292fa09f2318
public boolean onGround;
public boolean horizontalCollision;
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
public void move(MoverType movementType, Vec3 movement) {
@@ -33,7 +33,7 @@ index ae3908fb16c935c223853c456795aa680c8f81f9..b29ceb976323a80d37f0292fa09f2318
// Paper start - detailed watchdog information
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
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) {

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
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
+++ 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();
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)
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
+++ 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() {

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)
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
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -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)
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
+++ 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() {

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)
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
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -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
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
+++ 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
protected void onInsideBlock(BlockState state) {
@@ -21,7 +21,7 @@ index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf3
}
@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) {
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));
}

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
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
+++ 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) {
this.absMoveTo(x, y, z);
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
@@ -44,7 +44,7 @@ index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd444
// Paper start
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
index 5c0b53b5ddc2f5f18850f72fa562938fe108b244..ee6c33ff21dcbc6d7ee5f4df18be02fe2350ebd6 100644
index 78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c..63911fd0d2a5f194ed4632f209555b3146ed7b79 100644
--- a/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 {

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
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
+++ 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);
}

View File

@@ -12,10 +12,10 @@ doing questionable/buggy ones, and claiming breathtaking performance improvement
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
index d388b5fb34d9a5f1156bd49f3b5bd4445ac18974..d4452da9e89f711d20c8c3450ab050c3b2b00a1e 100644
index 4e92962cc351bf3abcf51b8952eff5686eda5ea9..6153c46809b12c44f2f8588e6978a4cab21e02f4 100644
--- a/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();

View File

@@ -201,7 +201,7 @@ index 1194c501a82e0e84d961d4ccb62f0c6092db559e..8afacc53a673567cead4c6e49966f07f
@Override
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
index 575efe82a7219e256afd8362984eb26795445119..6292dead8c2d682e524edee6af9f04b31a79489c 100644
index cf87490a446285132daaf9d90154ac6d477a62fe..3d6c50822701a3828cbde704f419d1c900a67954 100644
--- a/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 {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] PaperPR Add more collision code skipping logic
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
index 843642cd3b635e3f6a3dee9d5cd8bad38108143b..fea7b1c5a1236a4667c738b9cf27800863b26cfb 100644
index d6f7fd9dc4804e7565c89a9cbb0948f256559f03..24484d985929c7860aa08dbfca6df113086d2ed0 100644
--- a/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() {
// 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)
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
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -111,6 +111,7 @@ import org.bukkit.craftbukkit.generator.CustomChunkGenerator;
import org.bukkit.entity.Player;
@@ -111,6 +111,7 @@ import org.bukkit.entity.Player;
// CraftBukkit end
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
public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider {
@@ -416,7 +417,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
this.toDrop = new LongOpenHashSet();
@@ -291,7 +292,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper - rewrite chunk system
this.tickingGenerated = new AtomicInteger();
this.playerMap = new PlayerMap();
- this.entityMap = new Int2ObjectOpenHashMap();
+ this.entityMap = new Int2ObjectLinkedOpenHashMap<>(); // Mirai - vmp: use linked map for entity trackers for faster iteration
this.chunkTypeCache = new Long2ByteOpenHashMap();
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)
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
+++ 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();
}

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
index 38cb29c646ff496ffaa6553f98a565b71155c464..26f9a007931edb1c0b67920309bc7c6b848bbd32 100644
index 34eb43ca2bf446504c372f98dfbe6dbfd0a81369..74d86c1a9ef79e09b1ec02b93e8f62d3e0746d43 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -216,7 +216,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 {
@@ -217,7 +217,7 @@ public class PufferfishConfig {
public static int maxProjectileLoadsPerProjectile;
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.");
@@ -36,10 +18,10 @@ index 38cb29c646ff496ffaa6553f98a565b71155c464..26f9a007931edb1c0b67920309bc7c6b
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
index bc72131afa1ae9986ee311a9b371e97c8feb38f8..0130e2c3c047055fbea9c3d893a9b4593fa10ed2 100644
index 54bca103347e89f116fb7fbf37449a32ac094286..76810d7767b1a66315b006569654c718105ab4ee 100644
--- a/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 reallyEnabled = false;
public boolean verbose = true;
@@ -48,7 +30,7 @@ index bc72131afa1ae9986ee311a9b371e97c8feb38f8..0130e2c3c047055fbea9c3d893a9b459
public boolean serverNamePrivacy = false;
public List<String> hiddenConfigEntries = List.of(
"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 loadPermissionsYmlBeforePlugins = true;
@Constraints.Min(4)

View File

@@ -8,10 +8,10 @@ Original license: GPLv3
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
index 968f5382ca001e60698ce06eea751bbea45cb31c..630f97c436b15225157007622533593033dcad1a 100644
index 1508e8c4ba01f92e79b8256b306b4eaab96aa888..e2565f129cf61d1e3dd9cb6076299edcf66119dc 100644
--- a/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 push(Entity entity) {

View File

@@ -7,10 +7,10 @@ Original license: GPLv3
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
index 4197961b2f03a5151b396d0d09bf5cb9ab6481e7..09be313aefd5dda15bd4db6ee0324b2aec879744 100644
index aa1bd3423829900729d413a5f98f4a0b9aaf6135..82604712640140dbc5ec632233b937b2e073e28e 100644
--- a/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

View File

@@ -7,10 +7,10 @@ Original license: GPLv3
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
index e298e40166e7804b8c5e17a4e98f20bb1de8fd50..e2da2c2823fd64ec714c3d083039fc04d11fea73 100644
index aef9c28228be51e217b068e8731665cceff17717..b0b881eed06b1963c639b1a2c0808ab47fb34ac0 100644
--- a/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;
// CraftBukkit end
@@ -18,7 +18,7 @@ index e298e40166e7804b8c5e17a4e98f20bb1de8fd50..e2da2c2823fd64ec714c3d083039fc04
while (iterator.hasNext()) {
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
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
index b53402903eb6845df361daf6b05a668608ad7b63..0d43afcdd5db346d0ddf82e06bad5b219721715c 100644
index dd501e83d991e45598509134fab05bafc1904953..5ecdbeb90e9715fc89ff25e9b3c33a2e8d98ff93 100644
--- a/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 {
@@ -132,10 +132,10 @@ index b53402903eb6845df361daf6b05a668608ad7b63..0d43afcdd5db346d0ddf82e06bad5b21
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
index 68645bbbab9b4225048b647252d8f462028a9c84..14eff63f7725769ba0ce15eedf7f605ee34d1722 100644
index 450bd95218852174cfbc88d4517e17daee5ffd5f..317e952655db5a4dcb2e6ec6573510f75bba9255 100644
--- a/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];
sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append(
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
));
},
(int totalRelit) -> {
(final int totalRelit) -> {
final long end = System.nanoTime();
- final long diff = Math.round(1.0e-6 * (end - start));
+ 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);
} else {
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
+++ 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;
@@ -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
index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035ae2c7041d 100644
index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb89ec6fbb 100644
--- a/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 {
@@ -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 (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);
if (f3 > 0.0F && f3 < 3.4028235E37F) {
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;
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) {
@@ -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.
((net.minecraft.world.entity.player.Player) this).causeFoodExhaustion(damagesource.getFoodExhaustion(), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.DAMAGED); // CraftBukkit - EntityExhaustionEvent
if (f < 3.4028235E37F) {
@@ -260,7 +260,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a
}
}
// 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);
f2 = (float) -event.getDamage(DamageModifier.BLOCKING);
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");
// 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);
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
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
@@ -249,8 +249,8 @@ public abstract class ChunkGenerator {

View File

@@ -1,51 +1,47 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: etil2jz <81570777+etil2jz@users.noreply.github.com>
Date: Sat, 16 Jul 2022 18:12:38 +0200
Subject: [PATCH] Implement Velocity VarInt optimizations
From: astei <andrew@steinborn.me>
Date: Sat, 1 Oct 2022 09:56:47 +0200
Subject: [PATCH] PaperPR Optimize VarInts
Original license: GPLv3
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
index 35377576ed182814051c11f902e02e8e921e84e3..8747a55d8818d4526939070fa29a12ab643f0798 100644
index 35377576ed182814051c11f902e02e8e921e84e3..4b4a3c0da7a512e16d9a5758ed7312dc9ddc1e28 100644
--- a/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 {
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) {
@@ -87,15 +87,18 @@ public class FriendlyByteBuf extends ByteBuf {
this.source = parent;
}
public static int getVarIntSize(int value) {
- public static int getVarIntSize(int value) {
- for (int j = 1; j < 5; ++j) {
- if ((value & -1 << j * 7) == 0) {
- 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 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) {
@@ -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());
}
+ // Mirai start - Optimize VarInts
+ // Paper start - Optimize VarInts
public FriendlyByteBuf writeVarInt(int value) {
+ // 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.
@@ -59,9 +55,8 @@ index 35377576ed182814051c11f902e02e8e921e84e3..8747a55d8818d4526939070fa29a12ab
+ }
+ return this;
+ }
+
+ public FriendlyByteBuf writeVarInt_(int value) {
+ // Mirai end
+ // Paper end - Optimize VarInts
while ((value & -128) != 0) {
this.writeByte(value & 127 | 128);
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
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
+++ 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) {
for (int j2 = k; j2 <= j1; ++j2) {
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.
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
index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d03461922d 100644
index 34334c139176e0aa9f6d93a87821508d17567cfc..6ba7d8c32cdd51c2c291ccafe0a9d145c88155f5 100644
--- a/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 {
@@ -63,8 +63,8 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0
+ // petal end
private final LevelChunkTicks<Block> blockTicks;
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.clientLightReady = false;
this.level = (ServerLevel) world; // CraftBukkit - type
@@ -73,7 +73,7 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0
Heightmap.Types[] aheightmap_type = Heightmap.Types.values();
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) {
ServerLevel worldserver = (ServerLevel) world;
@@ -100,7 +100,7 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0
} else {
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);
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
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
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -998,12 +998,14 @@ public abstract class LivingEntity extends Entity {
@@ -31,7 +31,7 @@ index e31bb8d49a9efa0417e6f855a020035ae2c7041d..0b4d283ec3af265eed4e75ac89007ad3
return d0;
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
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -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
index aec14ff5235686a3e02b66eb3ad05fed2c4756b4..60ba00eb6daeeb9b97281f9380d373af3cc29402 100644
index 7cce3a758a0b19956572135162d88e92e4412018..6fd98bfba759af0f21d5225664757c023a9e4f6c 100644
--- a/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
public boolean enforceSecureProfile() {
@@ -68,7 +68,7 @@ index c2f1eeeac3f48b99ade23f95b2af034773af2286..bc916c46c940e9395feb4f7c835e2844
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 32b74aa339db55d187824984b1bd82ccb0953167..193ff873323b2f4845ef6e90f8a05fc168b6b77d 100644
index b4158aed45ec60be71251d5b90e340f790e239fb..631cb49918cb0eef97407ffc95a0b001ecd31a62 100644
--- a/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 {

View File

@@ -98,10 +98,10 @@ index 4fea1c9873b4dd9c9f21722adbb02200487caf3c..cd47b6882509888f7d34e95b4687ca7a
return instance.group(Registry.ITEM.byNameCodec().fieldOf("id").forGetter((itemstack) -> {
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
index bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1..c707fd29ba282c1ee45d3dc8d8c03dca048420ef 100644
index 895c0f1600139e340aa22a7c398978add56fa706..d5ced4c4ad354bbe6e6d256853de659923044299 100644
--- a/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) {
this.itemStacks = (ItemStack[]) Arrays.stream(this.values).flatMap((recipeitemstack_provider) -> {
return recipeitemstack_provider.getItems().stream();
@@ -114,7 +114,7 @@ index bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1..c707fd29ba282c1ee45d3dc8d8c03dca
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) {
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
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
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -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) {
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
index 193ff873323b2f4845ef6e90f8a05fc168b6b77d..bded25d3d87ee8c6e90874275e9d1ab3fd65a26b 100644
index 631cb49918cb0eef97407ffc95a0b001ecd31a62..2441cda53d8d0197abf49e53ef101dd5bf63185e 100644
--- a/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 {
@@ -40,10 +40,10 @@ index 193ff873323b2f4845ef6e90f8a05fc168b6b77d..bded25d3d87ee8c6e90874275e9d1ab3
// 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
index b85ed871a502d0793b4991ed6e7d3f9ad6bba027..35ef241b3d3fbd2249c22f3069bfe41a53ab64be 100644
index d0fc98ed0530a99adeb3c126b1040e40bb97685b..f20d307cc9cf684c181b5e7e9f32625452fea93d 100644
--- a/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
}

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
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
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -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 YamlConfiguration configuration;
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);
}
@@ -35,7 +35,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d
this.worlds.remove(world.getName().toLowerCase(java.util.Locale.ENGLISH));
this.console.removeLevel(handle);
return true;
@@ -1325,6 +1329,7 @@ public final class CraftServer implements Server {
@@ -1330,6 +1334,7 @@ public final class CraftServer implements Server {
@Override
public World getWorld(UUID uid) {
@@ -43,7 +43,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d
for (World world : this.worlds.values()) {
if (world.getUID().equals(uid)) {
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.");
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();
}