Added a simple membar
This commit is contained in:
331
patches/server/0010-Add-a-simple-membar.patch
Normal file
331
patches/server/0010-Add-a-simple-membar.patch
Normal file
@@ -0,0 +1,331 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Sun, 2 Jun 2024 12:18:05 +0000
|
||||||
|
Subject: [PATCH] Add a simple membar
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/commands/MembarCommand.java b/src/main/java/me/earthme/luminol/commands/MembarCommand.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..a5cbad6b947b1c3e1499bc6d311e17a5eb570c2f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/commands/MembarCommand.java
|
||||||
|
@@ -0,0 +1,47 @@
|
||||||
|
+package me.earthme.luminol.commands;
|
||||||
|
+
|
||||||
|
+import me.earthme.luminol.config.modules.misc.MembarConfig;
|
||||||
|
+import me.earthme.luminol.functions.GlobalServerMemoryBar;
|
||||||
|
+import net.kyori.adventure.text.Component;
|
||||||
|
+import net.kyori.adventure.text.format.TextColor;
|
||||||
|
+import org.bukkit.command.Command;
|
||||||
|
+import org.bukkit.command.CommandSender;
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+public class MembarCommand extends Command {
|
||||||
|
+ public MembarCommand(@NotNull String name) {
|
||||||
|
+ super(name);
|
||||||
|
+ this.setPermission("luminol.commands.membar");
|
||||||
|
+ this.setDescription("Show the memory usage through a bossbar");
|
||||||
|
+ this.setUsage("/membar");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
|
||||||
|
+ if (!testPermission(sender)){
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!MembarConfig.memoryBarEnabled){
|
||||||
|
+ sender.sendMessage(Component.text("Membar was already disabled!").color(TextColor.color(255,0,0)));
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!(sender instanceof Player player)){
|
||||||
|
+ sender.sendMessage(Component.text("Only player can use this command!").color(TextColor.color(255,0,0)));
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (GlobalServerMemoryBar.isPlayerVisible(player)) {
|
||||||
|
+ player.sendMessage(Component.text("Disabled mem bar").color(TextColor.color(0,255,0)));
|
||||||
|
+ GlobalServerMemoryBar.setVisibilityForPlayer(player,false);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ player.sendMessage(Component.text("Enabled mem bar").color(TextColor.color(0,255,0)));
|
||||||
|
+ GlobalServerMemoryBar.setVisibilityForPlayer(player,true);
|
||||||
|
+
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/MembarConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/MembarConfig.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..b632c4a636974535bf001f010de1dcb6b25868c0
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/MembarConfig.java
|
||||||
|
@@ -0,0 +1,50 @@
|
||||||
|
+package me.earthme.luminol.config.modules.misc;
|
||||||
|
+
|
||||||
|
+import com.electronwill.nightconfig.core.file.CommentedFileConfig;
|
||||||
|
+import me.earthme.luminol.commands.MembarCommand;
|
||||||
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
|
+import me.earthme.luminol.config.DoNotLoad;
|
||||||
|
+import me.earthme.luminol.config.EnumConfigCategory;
|
||||||
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
|
+import me.earthme.luminol.functions.GlobalServerMemoryBar;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+
|
||||||
|
+import java.util.List;
|
||||||
|
+
|
||||||
|
+public class MembarConfig implements IConfigModule {
|
||||||
|
+ @ConfigInfo(baseName = "enabled")
|
||||||
|
+ public static boolean memoryBarEnabled = false;
|
||||||
|
+ @ConfigInfo(baseName = "format")
|
||||||
|
+ public static String memBarFormat = "<gray>Memory usage <yellow>:</yellow> <used>MB<yellow>/</yellow><available>MB";
|
||||||
|
+ @ConfigInfo(baseName = "memory_color_list")
|
||||||
|
+ public static List<String> memColors = List.of("GREEN","YELLOW","RED","PURPLE");
|
||||||
|
+ @ConfigInfo(baseName = "update_interval_ticks")
|
||||||
|
+ public static int updateInterval = 15;
|
||||||
|
+
|
||||||
|
+ @DoNotLoad
|
||||||
|
+ private static boolean inited = false;
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public EnumConfigCategory getCategory() {
|
||||||
|
+ return EnumConfigCategory.MISC;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public String getBaseName() {
|
||||||
|
+ return "membar";
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void onLoaded(CommentedFileConfig configInstance){
|
||||||
|
+ if (memoryBarEnabled){
|
||||||
|
+ GlobalServerMemoryBar.init();
|
||||||
|
+ }else{
|
||||||
|
+ GlobalServerMemoryBar.cancelBarUpdateTask();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!inited){
|
||||||
|
+ Bukkit.getCommandMap().register("membar","luminol",new MembarCommand("membar"));
|
||||||
|
+ inited = true;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java b/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..a33a45194273cc1b4e4157a5449c7994968a3480
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
@@ -0,0 +1,186 @@
|
||||||
|
+package me.earthme.luminol.functions;
|
||||||
|
+
|
||||||
|
+import io.papermc.paper.threadedregions.ThreadedRegionizer;
|
||||||
|
+import io.papermc.paper.threadedregions.TickRegions;
|
||||||
|
+import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||||
|
+import me.earthme.luminol.config.modules.misc.MembarConfig;
|
||||||
|
+import net.kyori.adventure.bossbar.BossBar;
|
||||||
|
+import net.kyori.adventure.text.Component;
|
||||||
|
+import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
+import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
+import net.minecraft.server.level.ServerLevel;
|
||||||
|
+import net.minecraft.server.level.ServerPlayer;
|
||||||
|
+import org.apache.logging.log4j.LogManager;
|
||||||
|
+import org.apache.logging.log4j.Logger;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
|
+import org.bukkit.craftbukkit.scheduler.MinecraftInternalPlugin;
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+import java.lang.management.ManagementFactory;
|
||||||
|
+import java.lang.management.MemoryUsage;
|
||||||
|
+import java.util.*;
|
||||||
|
+
|
||||||
|
+public class GlobalServerMemoryBar {
|
||||||
|
+ protected static final MinecraftInternalPlugin NULL_PLUGIN = new MinecraftInternalPlugin();
|
||||||
|
+ protected static final Map<UUID, BossBar> uuid2Bossbars = new HashMap<>();
|
||||||
|
+ protected static volatile ScheduledTask membarTask = null;
|
||||||
|
+ private static final Logger logger = LogManager.getLogger();
|
||||||
|
+
|
||||||
|
+ public static void init(){
|
||||||
|
+ cancelBarUpdateTask();
|
||||||
|
+
|
||||||
|
+ Bukkit.getGlobalRegionScheduler().runAtFixedRate(NULL_PLUGIN, c -> {
|
||||||
|
+ membarTask = c;
|
||||||
|
+ try {
|
||||||
|
+ update();
|
||||||
|
+ }catch (Exception e){
|
||||||
|
+ logger.error(e);
|
||||||
|
+ }
|
||||||
|
+ },1, MembarConfig.updateInterval);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void removeAllBars(){
|
||||||
|
+ for (Map.Entry<UUID,BossBar> barEntry : uuid2Bossbars.entrySet()){
|
||||||
|
+ final UUID playerUUID = barEntry.getKey();
|
||||||
|
+ final BossBar memBar = barEntry.getValue();
|
||||||
|
+
|
||||||
|
+ final Player targetPlayer = Bukkit.getPlayer(playerUUID);{
|
||||||
|
+ if (targetPlayer != null){
|
||||||
|
+ targetPlayer.hideBossBar(memBar);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ uuid2Bossbars.clear();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void cancelBarUpdateTask(){
|
||||||
|
+ removeAllBars();
|
||||||
|
+
|
||||||
|
+ if (membarTask == null || membarTask.isCancelled()){
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ membarTask.cancel();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static boolean isPlayerVisible(Player player){
|
||||||
|
+ return ((CraftPlayer) player).getHandle().isMemBarVisible;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void setVisibilityForPlayer(Player target,boolean canSee){
|
||||||
|
+ ((CraftPlayer) target).getHandle().isMemBarVisible = canSee;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void update(){
|
||||||
|
+ updateBarValues();
|
||||||
|
+ cleanUpPlayers();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void cleanUpPlayers(){
|
||||||
|
+ final List<UUID> toRemove = new ArrayList<>();
|
||||||
|
+
|
||||||
|
+ for (Map.Entry<UUID,BossBar> bossBarEntry : uuid2Bossbars.entrySet()){
|
||||||
|
+ final UUID uuid = bossBarEntry.getKey();
|
||||||
|
+ boolean shouldRemove = true;
|
||||||
|
+
|
||||||
|
+ final Player target = Bukkit.getPlayer(uuid);
|
||||||
|
+ if (target != null){
|
||||||
|
+ shouldRemove = !isPlayerVisible(target);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shouldRemove){
|
||||||
|
+ toRemove.add(uuid);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (UUID uuid : toRemove){
|
||||||
|
+ final BossBar removed = uuid2Bossbars.remove(uuid);
|
||||||
|
+ if (removed != null){
|
||||||
|
+ final Player targetPlayer = Bukkit.getPlayer(uuid);
|
||||||
|
+ if (targetPlayer != null){
|
||||||
|
+ targetPlayer.hideBossBar(removed);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void updateBarValues(){
|
||||||
|
+ MemoryUsage heap = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
|
||||||
|
+
|
||||||
|
+ long used = heap.getUsed();
|
||||||
|
+ long xmx = heap.getMax();
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ for (Player apiPlayer : Bukkit.getOnlinePlayers()){
|
||||||
|
+ final ServerPlayer nmsPlayer = ((CraftPlayer) apiPlayer).getHandle();
|
||||||
|
+ final ThreadedRegionizer.ThreadedRegion<TickRegions.TickRegionData, TickRegions.TickRegionSectionData> region = ((ServerLevel) nmsPlayer.level()).regioniser.getRegionAtUnsynchronised(nmsPlayer.sectionX,nmsPlayer.sectionZ);
|
||||||
|
+
|
||||||
|
+ if (region == null){
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ BossBar targetBossbar = uuid2Bossbars.get(nmsPlayer.getUUID());
|
||||||
|
+
|
||||||
|
+ if (targetBossbar == null && isPlayerVisible(apiPlayer)){
|
||||||
|
+ targetBossbar = BossBar.bossBar(Component.text(""),0.0F, BossBar.Color.valueOf(MembarConfig.memColors.get(3)), BossBar.Overlay.NOTCHED_20);
|
||||||
|
+ uuid2Bossbars.put(nmsPlayer.getUUID(),targetBossbar);
|
||||||
|
+ apiPlayer.showBossBar(targetBossbar);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (targetBossbar != null){
|
||||||
|
+ updateMembar(targetBossbar,used,xmx);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void updateMembar(@NotNull BossBar bar, long used, long xmx){
|
||||||
|
+ double percent = Math.max(Math.min((float) used / xmx, 1.0F), 0.0F);
|
||||||
|
+ bar.name(MiniMessage.miniMessage().deserialize(
|
||||||
|
+ MembarConfig.memBarFormat,
|
||||||
|
+ Placeholder.component("used", getMemoryComponent(used,xmx)),
|
||||||
|
+ Placeholder.component("available",getMaxMemComponent(xmx))
|
||||||
|
+ ));
|
||||||
|
+ bar.color(barColorFromMemory(percent));
|
||||||
|
+ bar.progress((float) percent);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static @NotNull Component getMaxMemComponent(double max){
|
||||||
|
+ final BossBar.Color colorBukkit = BossBar.Color.GREEN;
|
||||||
|
+ final String colorString = colorBukkit.name();
|
||||||
|
+
|
||||||
|
+ final String content = "<%s><text></%s>";
|
||||||
|
+ final String replaced = String.format(content,colorString,colorString);
|
||||||
|
+
|
||||||
|
+ return MiniMessage.miniMessage().deserialize(replaced,Placeholder.parsed("text", String.format("%.2f", (double)max / (1024 * 1024))));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static @NotNull Component getMemoryComponent(long used,long max){
|
||||||
|
+ final BossBar.Color colorBukkit = barColorFromMemory(Math.max(Math.min((float) used / max, 1.0F), 0.0F));
|
||||||
|
+ final String colorString = colorBukkit.name();
|
||||||
|
+
|
||||||
|
+ final String content = "<%s><text></%s>";
|
||||||
|
+ final String replaced = String.format(content,colorString,colorString);
|
||||||
|
+
|
||||||
|
+ return MiniMessage.miniMessage().deserialize(replaced,Placeholder.parsed("text", String.format("%.2f", (double)used / (1024 * 1024))));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static BossBar.Color barColorFromMemory(double memPercent){
|
||||||
|
+ if (memPercent == -1){
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(3));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (memPercent <= 50){
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.getFirst());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (memPercent <= 70){
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(1));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(2));
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
index c626018d786fe231cd74a28c83515715d896f214..49647526d81e269aaf7a375992e3b42765ef5f8a 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
@@ -831,6 +831,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
@Override
|
||||||
|
public void stopServer() {
|
||||||
|
me.earthme.luminol.functions.GlobalServerTpsBar.cancelBarUpdateTask(); //Luminol - Tpsbar
|
||||||
|
+ me.earthme.luminol.functions.GlobalServerMemoryBar.cancelBarUpdateTask(); //Luminol - Memory bar
|
||||||
|
super.stopServer();
|
||||||
|
//Util.shutdownExecutors(); // Paper - moved into super
|
||||||
|
SkullBlockEntity.clear();
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
index c8701a2a0a3cbd60e263fe5c069b5993b36842a6..4e500aea07278535467ab6a9eba5b4269e1bd6ac 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -286,6 +286,7 @@ public class ServerPlayer extends Player {
|
||||||
|
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
|
||||||
|
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
||||||
|
public volatile boolean isTpsBarVisible = false; //Luminol - Tps bar
|
||||||
|
+ public volatile boolean isMemBarVisible = false; //Luminol - Memory bar
|
||||||
|
|
||||||
|
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
|
||||||
|
return this.viewDistances.get();
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..502b93c7bda9e8577a1901a8777b7cf9
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index c626018d786fe231cd74a28c83515715d896f214..49555381641e9cf9a5c3f00db1e193c9d992637b 100644
|
index 49647526d81e269aaf7a375992e3b42765ef5f8a..b0c67dd56f6916ebf12d27850da5a99f4ee86010 100644
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
@@ -243,7 +243,7 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
|
|||||||
+}
|
+}
|
||||||
\ No newline at end of file
|
\ No newline at end of file
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 0d756dd5181a2444175184227bef648d07c17236..59b1da130e519cbe06ed5eedf9e4dc881e45ba36 100644
|
index cb3ae17634dfc753dec75c7e2385a4ccdcba40d3..08b0d3b970a7c86f577d20487d5fe3930b8eae6e 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1222,6 +1222,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1222,6 +1222,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -36,10 +36,10 @@ index 0000000000000000000000000000000000000000..01f8c6ff3662569be5a4ff998bcd4fbb
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index c8701a2a0a3cbd60e263fe5c069b5993b36842a6..46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355 100644
|
index 4e500aea07278535467ab6a9eba5b4269e1bd6ac..25978b9c25096f252acd60a0924bac400d6026e7 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -842,6 +842,11 @@ public class ServerPlayer extends Player {
|
@@ -843,6 +843,11 @@ public class ServerPlayer extends Player {
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity entity = this.getCamera();
|
Entity entity = this.getCamera();
|
||||||
@@ -35,10 +35,10 @@ index 0000000000000000000000000000000000000000..8f1449545d6d217b46a9ffae705123da
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355..0086a1a4611b983eefd0cb7bf8e9cff677246d0f 100644
|
index 25978b9c25096f252acd60a0924bac400d6026e7..922ce7627bd0d546802ec6b013056f7aa6acbf33 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -330,6 +330,10 @@ public class ServerPlayer extends Player {
|
@@ -331,6 +331,10 @@ public class ServerPlayer extends Player {
|
||||||
public double lastEntitySpawnRadiusSquared = -1.0;
|
public double lastEntitySpawnRadiusSquared = -1.0;
|
||||||
// Paper end - optimise chunk tick iteration
|
// Paper end - optimise chunk tick iteration
|
||||||
|
|
||||||
@@ -210,7 +210,7 @@ index e7b444a10b244828827b3c66c53465206ea8e0ec..030601fdfde2232a933b2ad7022e9909
|
|||||||
.filter(player -> !playerList.isOp(player.getGameProfile()))
|
.filter(player -> !playerList.isOp(player.getGameProfile()))
|
||||||
.map(player -> player.getGameProfile().getName()),
|
.map(player -> player.getGameProfile().getName()),
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 0086a1a4611b983eefd0cb7bf8e9cff677246d0f..dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a 100644
|
index 922ce7627bd0d546802ec6b013056f7aa6acbf33..6357440e89ffddfc61de767e4a1bfdbbb9d854b3 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -197,7 +197,7 @@ public class ServerPlayer extends Player {
|
@@ -197,7 +197,7 @@ public class ServerPlayer extends Player {
|
||||||
@@ -182,10 +182,10 @@ index 3f394934e64df09e65b86d61a1dcabd3c6031a38..ba33c107cfbe9920fc33375daf8e6b62
|
|||||||
} else {
|
} else {
|
||||||
passenger.stopRiding();
|
passenger.stopRiding();
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a..c40ec90543bf51c9b16a7b63d8339020e7333b90 100644
|
index 6357440e89ffddfc61de767e4a1bfdbbb9d854b3..c25261e2c5313aedeae813b5f439a5b29a0ffcbb 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -334,6 +334,25 @@ public class ServerPlayer extends Player {
|
@@ -335,6 +335,25 @@ public class ServerPlayer extends Player {
|
||||||
public boolean handlingMoveEvent = false;
|
public boolean handlingMoveEvent = false;
|
||||||
//Luminol end
|
//Luminol end
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ index dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a..c40ec90543bf51c9b16a7b63d8339020
|
|||||||
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) {
|
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) {
|
||||||
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
||||||
this.chatVisibility = ChatVisiblity.FULL;
|
this.chatVisibility = ChatVisiblity.FULL;
|
||||||
@@ -872,6 +891,12 @@ public class ServerPlayer extends Player {
|
@@ -873,6 +892,12 @@ public class ServerPlayer extends Player {
|
||||||
this.trackStartFallingPosition();
|
this.trackStartFallingPosition();
|
||||||
this.trackEnteredOrExitedLavaOnVehicle();
|
this.trackEnteredOrExitedLavaOnVehicle();
|
||||||
this.advancements.flushDirty(this);
|
this.advancements.flushDirty(this);
|
||||||
Reference in New Issue
Block a user