re-add bee count patch

This commit is contained in:
granny
2024-04-29 10:05:01 -07:00
parent fa3017b78e
commit 2c5e308110
66 changed files with 142 additions and 107 deletions

View File

@@ -29,10 +29,10 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e0393019
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644
index a34c44ba770ded446b7969a31d3d05016717c13b..e50954e35116ea60b68ae00191771f8d9f78b45d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -434,6 +434,11 @@ public class PurpurConfig {
@@ -418,6 +418,11 @@ public class PurpurConfig {
allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd);
}
@@ -44,23 +44,81 @@ index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f746
public static boolean loggerSuppressInitLegacyMaterialError = false;
public static boolean loggerSuppressIgnoredAdvancementWarnings = false;
public static boolean loggerSuppressUnrecognizedRecipeErrors = false;
diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
diff --git a/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java
new file mode 100644
index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409faab8b62e
index 0000000000000000000000000000000000000000..57e195fd2d457295cda6c366684be5577aeef071
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
@@ -0,0 +1,96 @@
+package org.purpurmc.purpur.task;
+++ b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java
@@ -0,0 +1,27 @@
+package org.purpurmc.purpur.network;
+
+import com.google.common.io.ByteArrayDataInput;
+import com.google.common.io.ByteArrayDataOutput;
+import com.google.common.io.ByteStreams;
+import io.netty.buffer.Unpooled;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
+import net.minecraft.resources.ResourceLocation;
+import org.jetbrains.annotations.NotNull;
+
+public record ClientboundBeehivePayload(BlockPos pos, int numOfBees) implements CustomPacketPayload {
+ public static final StreamCodec<FriendlyByteBuf, ClientboundBeehivePayload> STREAM_CODEC = CustomPacketPayload.codec(ClientboundBeehivePayload::write, ClientboundBeehivePayload::new);
+ public static final Type<ClientboundBeehivePayload> TYPE = new Type<>(new ResourceLocation("purpur", "beehive_s2c"));
+
+ public ClientboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) {
+ this(friendlyByteBuf.readBlockPos(), friendlyByteBuf.readInt());
+ }
+
+ private void write(FriendlyByteBuf friendlyByteBuf) {
+ friendlyByteBuf.writeBlockPos(this.pos);
+ friendlyByteBuf.writeInt(this.numOfBees);
+ }
+
+ @Override
+ public @NotNull Type<? extends CustomPacketPayload> type() {
+ return TYPE;
+ }
+}
diff --git a/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java
new file mode 100644
index 0000000000000000000000000000000000000000..27689754565bf048d1206d540913495d7194a54d
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java
@@ -0,0 +1,26 @@
+package org.purpurmc.purpur.network;
+
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.codec.StreamCodec;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
+import net.minecraft.resources.ResourceLocation;
+import org.jetbrains.annotations.NotNull;
+
+public record ServerboundBeehivePayload(BlockPos pos) implements CustomPacketPayload {
+ public static final StreamCodec<FriendlyByteBuf, ServerboundBeehivePayload> STREAM_CODEC = CustomPacketPayload.codec(ServerboundBeehivePayload::write, ServerboundBeehivePayload::new);
+ public static final Type<ServerboundBeehivePayload> TYPE = new Type<>(new ResourceLocation("purpur", "beehive_c2s"));
+
+ public ServerboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) {
+ this(friendlyByteBuf.readBlockPos());
+ }
+
+ private void write(FriendlyByteBuf friendlyByteBuf) {
+ friendlyByteBuf.writeBlockPos(this.pos);
+ }
+
+ @Override
+ public @NotNull Type<? extends CustomPacketPayload> type() {
+ return TYPE;
+ }
+}
diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..e20fa234520c42e4d32a2a634fc0a2938904f983
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
@@ -0,0 +1,66 @@
+package org.purpurmc.purpur.task;
+
+import io.netty.buffer.Unpooled;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.level.block.entity.BeehiveBlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntity;
@@ -71,10 +129,10 @@ index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409f
+import org.bukkit.plugin.PluginBase;
+import org.bukkit.plugin.messaging.PluginMessageListener;
+import org.jetbrains.annotations.NotNull;
+import org.purpurmc.purpur.network.ClientboundBeehivePayload;
+import org.purpurmc.purpur.network.ServerboundBeehivePayload;
+
+public class BeehiveTask implements PluginMessageListener {
+ public static final ResourceLocation BEEHIVE_C2S = new ResourceLocation("purpur", "beehive_c2s");
+ public static final ResourceLocation BEEHIVE_S2C = new ResourceLocation("purpur", "beehive_s2c");
+
+ private static BeehiveTask instance;
+
@@ -91,58 +149,35 @@ index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409f
+ }
+
+ public void register() {
+ Bukkit.getMessenger().registerOutgoingPluginChannel(this.plugin, BEEHIVE_S2C.toString());
+ Bukkit.getMessenger().registerIncomingPluginChannel(this.plugin, BEEHIVE_C2S.toString(), this);
+ Bukkit.getMessenger().registerOutgoingPluginChannel(this.plugin, ClientboundBeehivePayload.TYPE.id().toString());
+ Bukkit.getMessenger().registerIncomingPluginChannel(this.plugin, ServerboundBeehivePayload.TYPE.id().toString(), this);
+ }
+
+ public void unregister() {
+ Bukkit.getMessenger().unregisterOutgoingPluginChannel(this.plugin, BEEHIVE_S2C.toString());
+ Bukkit.getMessenger().unregisterIncomingPluginChannel(this.plugin, BEEHIVE_C2S.toString());
+ Bukkit.getMessenger().unregisterOutgoingPluginChannel(this.plugin, ClientboundBeehivePayload.TYPE.id().toString());
+ Bukkit.getMessenger().unregisterIncomingPluginChannel(this.plugin, ServerboundBeehivePayload.TYPE.id().toString());
+ }
+
+ @Override
+ public void onPluginMessageReceived(@NotNull String channel, Player player, byte[] bytes) {
+ ByteArrayDataInput in = in(bytes);
+ long packedPos = in.readLong();
+ BlockPos pos = BlockPos.of(packedPos);
+ public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, byte[] bytes) {
+ FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.copiedBuffer(bytes));
+ ServerboundBeehivePayload payload = ServerboundBeehivePayload.STREAM_CODEC.decode(byteBuf);
+
+ ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
+
+ // targeted block info max range specified in client at net.minecraft.client.gui.hud.DebugHud#render
+ if (!pos.getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20
+ if (serverPlayer.level().getChunkIfLoaded(pos) == null) return;
+ if (!payload.pos().getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20
+ if (serverPlayer.level().getChunkIfLoaded(payload.pos()) == null) return;
+
+ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(pos);
+ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(payload.pos());
+ if (!(blockEntity instanceof BeehiveBlockEntity beehive)) {
+ return;
+ }
+
+ ByteArrayDataOutput out = out();
+
+ out.writeInt(beehive.getOccupantCount());
+ out.writeLong(packedPos);
+
+ FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.wrappedBuffer(out.toByteArray()));
+ serverPlayer.connection.send(new ClientboundCustomPayloadPacket(new CustomPacketPayload() {
+ @Override
+ public void write(final FriendlyByteBuf buf) {
+ buf.writeBytes(byteBuf.copy());
+ }
+
+ @Override
+ public ResourceLocation id() {
+ return BEEHIVE_S2C;
+ }
+ }));
+ }
+
+ @SuppressWarnings("UnstableApiUsage")
+ private static ByteArrayDataOutput out() {
+ return ByteStreams.newDataOutput();
+ }
+
+ @SuppressWarnings("UnstableApiUsage")
+ private static ByteArrayDataInput in(byte[] bytes) {
+ return ByteStreams.newDataInput(bytes);
+ ClientboundBeehivePayload customPacketPayload = new ClientboundBeehivePayload(payload.pos(), beehive.getOccupantCount());
+ FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(Unpooled.buffer());
+ ClientboundBeehivePayload.STREAM_CODEC.encode(friendlyByteBuf, customPacketPayload);
+ byte[] byteArray = new byte[friendlyByteBuf.readableBytes()];
+ player.sendPluginMessage(this.plugin, customPacketPayload.type().id().toString(), byteArray);
+ }
+}

View File

@@ -31,10 +31,10 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0
}
// Paper end - Buffer joins to world
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index a34c44ba770ded446b7969a31d3d05016717c13b..f0c3566e6b03c88c0cb53a90d44627d0967d13eb 100644
index e50954e35116ea60b68ae00191771f8d9f78b45d..64fc2ae0b1f086390614f03dc15aff4037d57d68 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -435,8 +435,10 @@ public class PurpurConfig {
@@ -440,8 +440,10 @@ public class PurpurConfig {
}
public static boolean useUPnP = false;

View File

@@ -59,7 +59,7 @@ index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe1
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index f0c3566e6b03c88c0cb53a90d44627d0967d13eb..c5dd0979f5bce259b920c47d974f2bf6b805c045 100644
index 64fc2ae0b1f086390614f03dc15aff4037d57d68..1e28c96f5b142a28be530dfc24d67b99c3803948 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -382,6 +382,7 @@ public class PurpurConfig {

View File

@@ -128,7 +128,7 @@ index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138fac
} else if (source.is(DamageTypes.HOT_FLOOR)) {
cause = DamageCause.HOT_FLOOR;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index c5dd0979f5bce259b920c47d974f2bf6b805c045..4a1d8b2c412a51e4c29e3846ea9c1bde99346010 100644
index 1e28c96f5b142a28be530dfc24d67b99c3803948..cadb07b2ec32baa5f509b9da3bfd9044cee19ba4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -209,8 +209,10 @@ public class PurpurConfig {

View File

@@ -18,10 +18,10 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d
voxelshape1 = (VoxelShape) iterator.next();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 4a1d8b2c412a51e4c29e3846ea9c1bde99346010..f500c3b42a9ba346a0e4305c0169159f847e3457 100644
index cadb07b2ec32baa5f509b9da3bfd9044cee19ba4..801d269a038e68d428b31f12d372fd11ab552d50 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -440,9 +440,11 @@ public class PurpurConfig {
@@ -445,9 +445,11 @@ public class PurpurConfig {
public static boolean useUPnP = false;
public static boolean maxJoinsPerSecond = false;

View File

@@ -56,10 +56,10 @@ index 57e76b53e5e314c3e6b8856010f7a84188121582..8c134a642ccaf3530022f2e675a858d7
} catch (Exception exception) {
if (exception instanceof ReportedException) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99586ddfe2 100644
index 5081a631a94920db0307341261755eac399fea1e..f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1480,7 +1480,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1481,7 +1481,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return;
}
@@ -68,7 +68,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
try {
for (;;) {
boolean moreTasks = this.tickMidTickTasks();
@@ -1507,7 +1507,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1508,7 +1508,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
} finally {
@@ -77,7 +77,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
}
}
// Paper end - execute chunk tasks mid tick
@@ -1582,15 +1582,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1583,15 +1583,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void tickServer(BooleanSupplier shouldKeepTicking) {
@@ -96,7 +96,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
// Paper end
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events
@@ -1627,9 +1627,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1628,9 +1628,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Incremental chunk and player saving
io.papermc.paper.util.CachedLists.reset(); // Paper
// Paper start - move executeAll() into full server tick timing
@@ -108,7 +108,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
// Paper end
// Paper start - Server Tick Events
long endTime = System.nanoTime();
@@ -1652,7 +1652,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1653,7 +1653,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.logTickMethodTime(i);
this.profiler.pop();
org.spigotmc.WatchdogThread.tick(); // Spigot
@@ -117,7 +117,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
}
private void logTickMethodTime(long tickStartTime) {
@@ -1723,9 +1723,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1724,9 +1724,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.getPlayerList().getPlayers().forEach((entityplayer) -> {
entityplayer.connection.suspendFlushing();
});
@@ -129,7 +129,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
@@ -1742,21 +1742,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1743,21 +1743,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
this.profiler.push("commandFunctions");
@@ -156,7 +156,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
// Send time updates to everyone, it will get the right time from the world the player is in.
// Paper start - Perf: Optimize time updates
for (final ServerLevel level : this.getAllLevels()) {
@@ -1776,7 +1776,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1777,7 +1777,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Paper end - Perf: Optimize time updates
@@ -165,7 +165,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; move down
@@ -1804,14 +1804,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1805,14 +1805,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.push("tick");
try {
@@ -182,7 +182,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
@@ -1826,24 +1826,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1827,24 +1827,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
this.profiler.popPush("connection");
@@ -214,10 +214,10 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99
this.profiler.popPush("send chunks");
iterator = this.playerList.getPlayers().iterator();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..aa28e72c12cbb1d15d6bd0c6b01760c12e51497b 100644
index 56c6800ae5696397ffba2dc2e03930195a130112..0d2d254fc2795f0ec844029bd4c05cdf6dc94207 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -540,7 +540,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -541,7 +541,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
public void handleConsoleInputs() {
@@ -226,7 +226,7 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..aa28e72c12cbb1d15d6bd0c6b01760c1
// Paper start - Perf: use proper queue
ConsoleInput servercommand;
while ((servercommand = this.serverCommandQueue.poll()) != null) {
@@ -557,7 +557,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -558,7 +558,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// CraftBukkit end
}

View File

@@ -83,7 +83,7 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807a98a2afb 100644
index f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572..dfeae138e830e95ab823b6349a91160b02622208 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -347,13 +347,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -118,7 +118,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
MinecraftServer.LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
@@ -1240,20 +1240,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1241,20 +1241,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
boolean flag = i == 0L;
@@ -144,7 +144,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + i, this.nextTickTimeNanos);
// Purpur start
@@ -1269,9 +1269,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1270,9 +1270,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickRateManager.endTickWork();
}
@@ -157,7 +157,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
this.isReady = true;
JvmProfiler.INSTANCE.onServerTick(this.smoothedTickTimeMillis);
}
@@ -1535,7 +1535,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1536,7 +1536,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void doRunTask(TickTask ticktask) { // CraftBukkit - decompile error
@@ -166,7 +166,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
super.doRunTask(ticktask);
}
@@ -1608,7 +1608,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1609,7 +1609,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (playerSaveInterval < 0) {
playerSaveInterval = autosavePeriod;
}
@@ -175,7 +175,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
final boolean fullSave = autosavePeriod > 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
@@ -1623,7 +1623,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1624,7 +1624,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} finally {
this.isSaving = false;
}
@@ -184,7 +184,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
// Paper end - Incremental chunk and player saving
io.papermc.paper.util.CachedLists.reset(); // Paper
// Paper start - move executeAll() into full server tick timing
@@ -1636,7 +1636,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1637,7 +1637,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime;
new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.tickCount, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent();
// Paper end - Server Tick Events
@@ -193,7 +193,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
long j = Util.getNanos() - i;
int k = this.tickCount % 100;
@@ -1650,7 +1650,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1651,7 +1651,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickTimes60s.add(this.tickCount, j);
// Paper end - Add tick times API and /mspt command
this.logTickMethodTime(i);
@@ -202,7 +202,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
org.spigotmc.WatchdogThread.tick(); // Spigot
//co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper // Purpur
}
@@ -1741,11 +1741,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1742,11 +1742,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
});
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
@@ -216,7 +216,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
//Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; moved down
// CraftBukkit start
@@ -1788,20 +1788,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1789,20 +1789,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.updateLagCompensationTick(); // Paper - lag compensation
worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur
@@ -242,7 +242,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
try {
//worldserver.timings.doTick.startTiming(); // Spigot // Purpur
@@ -1819,17 +1819,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1820,17 +1820,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
throw new ReportedException(crashreport);
}
@@ -264,7 +264,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
//MinecraftTimings.playerListTimer.startTiming(); // Spigot // Paper // Purpur
this.playerList.tick();
//MinecraftTimings.playerListTimer.stopTiming(); // Spigot // Paper // Purpur
@@ -1837,7 +1837,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1838,7 +1838,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
GameTestTicker.SINGLETON.tick();
}
@@ -273,7 +273,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
//MinecraftTimings.tickablesTimer.startTiming(); // Spigot // Paper // Purpur
for (int i = 0; i < this.tickables.size(); ++i) {
@@ -1845,7 +1845,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1846,7 +1846,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
//MinecraftTimings.tickablesTimer.stopTiming(); // Spigot // Paper // Purpur
@@ -282,7 +282,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
iterator = this.playerList.getPlayers().iterator();
while (iterator.hasNext()) {
@@ -1855,7 +1855,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1856,7 +1856,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
entityplayer.connection.resumeFlushing();
}
@@ -291,7 +291,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
}
private void synchronizeTime(ServerLevel world) {
@@ -1863,7 +1863,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1864,7 +1864,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void forceTimeSynchronization() {
@@ -300,7 +300,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
Iterator iterator = this.getAllLevels().iterator();
while (iterator.hasNext()) {
@@ -1872,7 +1872,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1873,7 +1873,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.synchronizeTime(worldserver);
}
@@ -309,7 +309,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
}
public boolean isNetherEnabled() {
@@ -2575,6 +2575,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2576,6 +2576,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public ProfilerFiller getProfiler() {
@@ -317,7 +317,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
return this.profiler;
}
@@ -2821,7 +2822,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2822,7 +2823,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end
private void startMetricsRecordingTick() {
@@ -326,7 +326,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
this.metricsRecorder = ActiveMetricsRecorder.createStarted(new ServerMetricsSamplersProvider(Util.timeSource, this.isDedicatedServer()), Util.timeSource, Util.ioPool(), new MetricsPersister("server"), this.onMetricsRecordingStopped, (path) -> {
this.executeBlocking(() -> {
this.saveDebugReport(path.resolve("server"));
@@ -2831,40 +2832,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2832,40 +2833,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.willStartRecordingMetrics = false;
}
@@ -379,7 +379,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807
}
public Path getWorldPath(LevelResource worldSavePath) {
@@ -2917,15 +2918,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2918,15 +2919,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public boolean isTimeProfilerRunning() {
@@ -826,7 +826,7 @@ index a84a9218838fb42c49a00c0d5f28e9e486fc7dac..f72af2feb74626abbdfbfd090c153574
while (iterator.hasNext()) {
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 120a42a6057a9639b66be39099715a8bad1e06b5..24009a27151288fd0f37379732d42a3077fe6d66 100644
index e9d9cb47221075447aac66dd30ce6e8f08962cf5..826b7e2bb897609a084555632f691ddb38882058 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1317,7 +1317,7 @@ public class ServerPlayer extends Player {

View File

@@ -60,7 +60,7 @@ index 826b7e2bb897609a084555632f691ddb38882058..42a623254bd2886d09eb0cfeb01dd12d
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index f500c3b42a9ba346a0e4305c0169159f847e3457..8c90ac81fc69c4101c644cf8fe1885b06ba58df6 100644
index 801d269a038e68d428b31f12d372fd11ab552d50..b2e88e4b9b8afbb9ea6d14c6e268ac53b96b41bd 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -182,6 +182,8 @@ public class PurpurConfig {

View File

@@ -18,10 +18,10 @@ index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc18840671
protected final SoundType soundType;
protected final float friction;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 8c90ac81fc69c4101c644cf8fe1885b06ba58df6..bcdebc342d033c0aa32134e6caa34a2d4e641e05 100644
index b2e88e4b9b8afbb9ea6d14c6e268ac53b96b41bd..4400f8f8efc424ad4593b972f5b5f16575cd2a0d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -476,4 +476,19 @@ public class PurpurConfig {
@@ -481,4 +481,19 @@ public class PurpurConfig {
String setPattern = getString("settings.username-valid-characters", defaultPattern);
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
}

View File

@@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index bcdebc342d033c0aa32134e6caa34a2d4e641e05..cf150b979efb7197d92b26cfd842d7023718f2a1 100644
index 4400f8f8efc424ad4593b972f5b5f16575cd2a0d..4efcea9c35e529a25d408412fcb896f3ed47c5d1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -491,4 +491,50 @@ public class PurpurConfig {
@@ -496,4 +496,50 @@ public class PurpurConfig {
block.explosionResistance = blastResistance.floatValue();
});
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index cf150b979efb7197d92b26cfd842d7023718f2a1..1a5133d07b3da44b54e560320d0c7461250cd4d1 100644
index 4efcea9c35e529a25d408412fcb896f3ed47c5d1..2d88364e3e721561aa7e132712f3cb1a85a7dd4e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -449,11 +449,14 @@ public class PurpurConfig {
@@ -454,11 +454,14 @@ public class PurpurConfig {
public static boolean loggerSuppressIgnoredAdvancementWarnings = false;
public static boolean loggerSuppressUnrecognizedRecipeErrors = false;
public static boolean loggerSuppressSetBlockFarChunk = false;

View File

@@ -39,10 +39,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 1a5133d07b3da44b54e560320d0c7461250cd4d1..91bbd0ff7e67fffcfa206fcde3008d6a8e70170f 100644
index 2d88364e3e721561aa7e132712f3cb1a85a7dd4e..9f44620932500f963322f992d9c2621888b70be6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -480,6 +480,16 @@ public class PurpurConfig {
@@ -485,6 +485,16 @@ public class PurpurConfig {
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
}

View File

@@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index aa28e72c12cbb1d15d6bd0c6b01760c12e51497b..6f8fb235345e8d0e24385024465fc3a0b0f8164a 100644
index 0d2d254fc2795f0ec844029bd4c05cdf6dc94207..775c5de4f5094260096cef6723dd50dfe2cb0c81 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -110,6 +110,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface

View File

@@ -31,10 +31,10 @@ index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb900
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 91bbd0ff7e67fffcfa206fcde3008d6a8e70170f..1a7967981e03fc2bb4f278008d0e8ed52b343e95 100644
index 9f44620932500f963322f992d9c2621888b70be6..65de34005a759ff46f9343ada4404b9637c5ac9d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -550,4 +550,9 @@ public class PurpurConfig {
@@ -555,4 +555,9 @@ public class PurpurConfig {
block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue();
});
}

View File

@@ -32,10 +32,10 @@ index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4
io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 1a7967981e03fc2bb4f278008d0e8ed52b343e95..53188a65cf8f360abc83129ddef039ae6af0ce47 100644
index 65de34005a759ff46f9343ada4404b9637c5ac9d..37dd3e8708016811f9617d1b9d1af53894cc5d80 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -555,4 +555,9 @@ public class PurpurConfig {
@@ -560,4 +560,9 @@ public class PurpurConfig {
private static void playerDeathsAlwaysShowItem() {
playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem);
}