Skip to content

Commit b61ddff

Browse files
BillyGalbreathgranny
authored andcommitted
Implement TPSBar
1 parent 07ca45c commit b61ddff

14 files changed

Lines changed: 402 additions & 486 deletions

patches/server/0112-Implement-TPSBar.patch

Lines changed: 0 additions & 467 deletions
This file was deleted.

purpur-server/minecraft-patches/features/0001-Ridables.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ index 29d402620d2e1cbed94f941f933ae8eb5d786e7f..ec0998369158286fccb38c8e10c3cfa2
1818
public boolean isLocalPlayer() {
1919
return true;
2020
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
21-
index d68d453a668a7767e5c115095df114b2dbb87d68..13c3d5377581bb82970aa99ca4a4f647f17f78e8 100644
21+
index dbd5629ff0bc97177e872630bc39c608d009297f..5cba0608e24d2f5a687921e0c6b68827925590cd 100644
2222
--- a/net/minecraft/server/MinecraftServer.java
2323
+++ b/net/minecraft/server/MinecraftServer.java
24-
@@ -1721,6 +1721,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
24+
@@ -1722,6 +1722,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2525
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
2626
serverLevel.updateLagCompensationTick(); // Paper - lag compensation
2727
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
@@ -42,10 +42,10 @@ index 7f136e044a243814372beef1400d3b6a148d2cbf..5e730cdde960603d5fa0fa7d1b70ec56
4242
public LevelChunk getChunkIfLoaded(int x, int z) {
4343
return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately
4444
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
45-
index bd2f6c1ec45cf043549f49b80d4567d7493ea0ec..d6e17c816e7dc2260d95490145a1e571cdffb912 100644
45+
index 5b50bc97ccab73dcafa29e3a8c5d04b3c4e8c1d4..c03639557e498f44a53fbf223928f68e515638eb 100644
4646
--- a/net/minecraft/server/level/ServerPlayer.java
4747
+++ b/net/minecraft/server/level/ServerPlayer.java
48-
@@ -838,6 +838,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
48+
@@ -842,6 +842,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
4949
this.trackEnteredOrExitedLavaOnVehicle();
5050
this.updatePlayerAttributes();
5151
this.advancements.flushDirty(this);

purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
55

66

77
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
8-
index e693c5ef414dd77b684d0a393444a5d28b975bfd..d12896bb6f23bfdb1d22e1ecadd23c01b71a07fc 100644
8+
index ec0c9f6d1bcf00606b0a6af114264d1ea6650d51..513daca2246f07bbb7b11e75f972f1fffbda2fd8 100644
99
--- a/net/minecraft/server/players/PlayerList.java
1010
+++ b/net/minecraft/server/players/PlayerList.java
11-
@@ -1025,6 +1025,27 @@ public abstract class PlayerList {
11+
@@ -1027,6 +1027,27 @@ public abstract class PlayerList {
1212
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
1313
this.server.getCommands().sendCommands(player);
1414
} // Paper - Add sendOpLevel API
@@ -37,7 +37,7 @@ index e693c5ef414dd77b684d0a393444a5d28b975bfd..d12896bb6f23bfdb1d22e1ecadd23c01
3737

3838
public boolean isWhiteListed(GameProfile profile) {
3939
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
40-
index 27a0cb04dd50974a96ed420ef811d9c9f3182e52..9b762d48c63ddc532c86e2982006eed42375ac1e 100644
40+
index 27a0cb04dd50974a96ed420ef811d9c9f3182e52..575dd9b9e31ac5bf29ca6abc6ce76bcf16e3e89c 100644
4141
--- a/net/minecraft/world/entity/player/Player.java
4242
+++ b/net/minecraft/world/entity/player/Player.java
4343
@@ -200,6 +200,7 @@ public abstract class Player extends LivingEntity {
@@ -49,7 +49,7 @@ index 27a0cb04dd50974a96ed420ef811d9c9f3182e52..9b762d48c63ddc532c86e2982006eed4
4949
// CraftBukkit start
5050
public boolean fauxSleeping;
5151
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
52-
index cf5b99c1337a7eafa9f5e8b2062c32ab4ff78968..0582698825544267e65a427351e27101c320bc0a 100644
52+
index cf5b99c1337a7eafa9f5e8b2062c32ab4ff78968..e046d070e24c892743b241136f18c14c10f1efd9 100644
5353
--- a/net/minecraft/world/inventory/ChestMenu.java
5454
+++ b/net/minecraft/world/inventory/ChestMenu.java
5555
@@ -61,10 +61,30 @@ public class ChestMenu extends AbstractContainerMenu {
@@ -84,7 +84,7 @@ index cf5b99c1337a7eafa9f5e8b2062c32ab4ff78968..0582698825544267e65a427351e27101
8484
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6);
8585
}
8686
diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
87-
index a6a359bab2a727f4631b633a8bb370dd40decc75..4c48bdc2a4596b7b192e76974fa385c323ddabb2 100644
87+
index a6a359bab2a727f4631b633a8bb370dd40decc75..d2d75e5c34c97300ce5da8c7ea70958aba31fa4a 100644
8888
--- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java
8989
+++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
9090
@@ -25,11 +25,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
@@ -108,7 +108,7 @@ index a6a359bab2a727f4631b633a8bb370dd40decc75..4c48bdc2a4596b7b192e76974fa385c3
108108
this.activeChest = enderChestBlockEntity;
109109
}
110110
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
111-
index 2f60681c50e3656400e84fe9a7670e0412743853..79dbafcfde314058bdf95f887fa7a1032433032c 100644
111+
index 2f60681c50e3656400e84fe9a7670e0412743853..6e3d28aa6206d969815889ed327a5e343b8658d9 100644
112112
--- a/net/minecraft/world/level/block/EnderChestBlock.java
113113
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
114114
@@ -84,7 +84,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
@@ -157,7 +157,7 @@ index 2f60681c50e3656400e84fe9a7670e0412743853..79dbafcfde314058bdf95f887fa7a103
157157
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
158158
return new EnderChestBlockEntity(pos, state);
159159
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
160-
index 0f808855f58281578c2758513787f0f7330c9291..7ea7032eae78726e6d4dcfda49b01a10e0f26de8 100644
160+
index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe39379123ab2f47 100644
161161
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
162162
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
163163
@@ -55,7 +55,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {

purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls
55

66

77
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
8-
index d6e17c816e7dc2260d95490145a1e571cdffb912..69dfdfca73206dd93b660efcb41a63dca5b7842d 100644
8+
index c03639557e498f44a53fbf223928f68e515638eb..bc0a19d7ce8a080f2e75efa8bd9ab497038a3ac1 100644
99
--- a/net/minecraft/server/level/ServerPlayer.java
1010
+++ b/net/minecraft/server/level/ServerPlayer.java
11-
@@ -1229,6 +1229,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
11+
@@ -1233,6 +1233,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
1212
} else {
1313
// Purpur start - Add boat fall damage config
1414
if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {

purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ temporarily migrate to paper's config
77
drop patch on the next minecraft release
88

99
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
10-
index b5011af774484b6ed35ee83b4a562ddd4425c22f..88c90e0ffca024c2867a7ed70d53d12aff7201c6 100644
10+
index 5cba0608e24d2f5a687921e0c6b68827925590cd..90cdcb8934e28dcc51272c9b40a6d89ac5dec75e 100644
1111
--- a/net/minecraft/server/MinecraftServer.java
1212
+++ b/net/minecraft/server/MinecraftServer.java
13-
@@ -1198,7 +1198,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
13+
@@ -1199,7 +1199,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
1414
LOGGER.info("*************************************************************************************");
1515
}
1616
// Paper end - Add onboarding message for initial server start
@@ -28,7 +28,7 @@ index b5011af774484b6ed35ee83b4a562ddd4425c22f..88c90e0ffca024c2867a7ed70d53d12a
2828
long l;
2929
if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) {
3030
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
31-
index aa896acd15916df24e646d10a7a3c5157044b4bd..92948d75c928368f3d1999b45951648a6be3fdc7 100644
31+
index d685bbaed0afe5be40ce18ad92fd8d9f351bd90e..c02a7375d356ccdb23c24c784584029eab51fae1 100644
3232
--- a/net/minecraft/server/dedicated/DedicatedServer.java
3333
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
3434
@@ -208,6 +208,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface

purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
import org.slf4j.Logger;
99

1010
public class Commands {
11-
@@ -245,6 +_,9 @@
11+
@@ -245,6 +_,10 @@
1212
StopCommand.register(this.dispatcher);
1313
TransferCommand.register(this.dispatcher);
1414
WhitelistCommand.register(this.dispatcher);
1515
+ org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur - Add credits command
1616
+ org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo command
1717
+ org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur - Add ping command
18+
+ org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur - Implement TPSBar
1819
}
1920

2021
if (selection.includeIntegrated) {

purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
1818

1919
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
20+
@@ -1093,6 +_,7 @@
21+
this.safeShutdown(waitForServer, false);
22+
}
23+
public void safeShutdown(boolean waitForServer, boolean isRestarting) {
24+
+ org.purpurmc.purpur.task.BossBarTask.stopAll(); // Purpur - Implement TPSBar
25+
this.isRestarting = isRestarting;
26+
this.hasLoggedStop = true; // Paper - Debugging
27+
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
2028
@@ -1112,6 +_,7 @@
2129
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
2230
private long lastTick = 0;

purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,11 @@
1616
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
1717

1818
this.setPvpAllowed(properties.pvp);
19+
@@ -350,6 +_,7 @@
20+
LOGGER.info("JMX monitoring enabled");
21+
}
22+
23+
+ org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur - Implement TPSBar
24+
return true;
25+
}
26+
}

purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
--- a/net/minecraft/server/level/ServerPlayer.java
22
+++ b/net/minecraft/server/level/ServerPlayer.java
3-
@@ -393,6 +_,7 @@
3+
@@ -393,6 +_,8 @@
44
public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
55
public @Nullable String clientBrandName = null; // Paper - Brand support
66
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event
77
+ public boolean purpurClient = false; // Purpur - Purpur client support
8+
+ private boolean tpsBar = false; // Purpur - Implement TPSBar
89

910
// Paper start - rewrite chunk system
1011
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
12+
@@ -561,6 +_,8 @@
13+
if (tag != null) {
14+
BlockPos.CODEC.parse(NbtOps.INSTANCE, tag).resultOrPartial(LOGGER::error).ifPresent(pos -> this.raidOmenPosition = pos);
15+
}
16+
+
17+
+ if (compound.contains("Purpur.TPSBar")) { this.tpsBar = compound.getBoolean("Purpur.TPSBar"); } // Purpur - Implement TPSBar
18+
}
19+
20+
@Override
21+
@@ -605,6 +_,7 @@
22+
}
23+
24+
this.saveEnderPearls(compound);
25+
+ compound.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur - Implement TPSBar
26+
}
27+
28+
private void saveParentVehicle(CompoundTag tag) {
1129
@@ -1217,6 +_,13 @@
1230
if (this.isInvulnerableTo(level, damageSource)) {
1331
return false;
@@ -139,7 +157,7 @@
139157

140158
public ServerStatsCounter getStats() {
141159
return this.stats;
142-
@@ -3077,4 +_,26 @@
160+
@@ -3077,4 +_,36 @@
143161
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
144162
}
145163
// CraftBukkit end
@@ -165,4 +183,14 @@
165183
+ }
166184
+ }
167185
+ // Purpur end - Add option to teleport to spawn if outside world border
186+
+
187+
+ // Purpur start - Implement TPSBar
188+
+ public boolean tpsBar() {
189+
+ return this.tpsBar;
190+
+ }
191+
+
192+
+ public void tpsBar(boolean tpsBar) {
193+
+ this.tpsBar = tpsBar;
194+
+ }
195+
+ // Purpur end - Implement TPSBar
168196
}

purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
--- a/net/minecraft/server/players/PlayerList.java
22
+++ b/net/minecraft/server/players/PlayerList.java
3+
@@ -396,6 +_,7 @@
4+
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
5+
}
6+
// Paper end - Configurable player collision
7+
+ org.purpurmc.purpur.task.BossBarTask.addToAll(player); // Purpur - Implement TPSBar
8+
PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
9+
// Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead
10+
if (player.isDeadOrDying()) {
11+
@@ -501,6 +_,7 @@
12+
}
13+
public net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) {
14+
// Paper end - Fix kick event leave message not being sent
15+
+ org.purpurmc.purpur.task.BossBarTask.removeFromAll(player.getBukkitEntity()); // Purpur - Implement TPSBar
16+
ServerLevel serverLevel = player.serverLevel();
17+
player.awardStat(Stats.LEAVE_GAME);
18+
// CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
319
@@ -919,6 +_,20 @@
420
}
521
}

0 commit comments

Comments
 (0)