mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
fix: the server compiles
Signed-off-by: Mariell Hoversholm <proximyst@proximyst.com>
This commit is contained in:
parent
041a42e0e4
commit
ceecde4a32
4 changed files with 186 additions and 10 deletions
|
@ -10,14 +10,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
||||||
@@ -0,0 +0,0 @@ public class PaperCommand extends Command {
|
@@ -0,0 +0,0 @@ public class PaperCommand extends Command {
|
||||||
|
ServerChunkCache chunkProviderServer = world.getChunkSource();
|
||||||
|
|
||||||
Collection<Entity> entities = world.entitiesById.values();
|
world.getAllEntities().forEach(e -> {
|
||||||
entities.forEach(e -> {
|
|
||||||
- ResourceLocation key = new ResourceLocation(""); // TODO: update in next patch
|
- ResourceLocation key = new ResourceLocation(""); // TODO: update in next patch
|
||||||
+ ResourceLocation key = e.getMinecraftKey();
|
+ ResourceLocation key = e.getMinecraftKey();
|
||||||
|
|
||||||
MutablePair<Integer, Map<ChunkPos, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
|
MutablePair<Integer, Map<ChunkPos, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
|
||||||
ChunkPos chunk = new ChunkPos(e.xChunk, e.zChunk);
|
ChunkPos chunk = e.chunkPosition();
|
||||||
diff --git a/src/main/java/net/minecraft/server/KeyedObject.java b/src/main/java/net/minecraft/server/KeyedObject.java
|
diff --git a/src/main/java/net/minecraft/server/KeyedObject.java b/src/main/java/net/minecraft/server/KeyedObject.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
|
|
@ -618,7 +618,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }));
|
+ }));
|
||||||
+
|
+
|
||||||
+ metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
|
+ metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
|
||||||
+ metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() || PaperConfig.isProxyOnlineMode() ? "online" : "offline"));
|
+ metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : "offline"));
|
||||||
+ metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown"));
|
+ metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown"));
|
||||||
+
|
+
|
||||||
+ metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
+ metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
||||||
|
|
|
@ -65,7 +65,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
+ private static boolean testPermission(CommandSender commandSender, String permission) {
|
+ private static boolean testPermission(CommandSender commandSender, String permission) {
|
||||||
+ if (commandSender.hasPermission(BASE_PERM + permission) || commandSender.hasPermission("bukkit.command.paper")) return true;
|
+ if (commandSender.hasPermission(BASE_PERM + permission) || commandSender.hasPermission("bukkit.command.paper")) return true;
|
||||||
+ commandSender.sendMessage(Bukkit.getPermissionMessage());
|
+ commandSender.sendMessage(ChatColor.RED + "I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error."); // Sorry, kashike
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -151,7 +151,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ case "ver":
|
+ case "ver":
|
||||||
+ if (!testPermission(sender, "version")) break; // "ver" needs a special check because it's an alias. All other commands are checked up before the switch statement (because they are present in the SUBCOMMANDS set)
|
+ if (!testPermission(sender, "version")) break; // "ver" needs a special check because it's an alias. All other commands are checked up before the switch statement (because they are present in the SUBCOMMANDS set)
|
||||||
+ case "version":
|
+ case "version":
|
||||||
+ Command ver = org.bukkit.Bukkit.getServer().getCommandMap().getCommand("version");
|
+ Command ver = MinecraftServer.getServer().server.getCommandMap().getCommand("version");
|
||||||
+ if (ver != null) {
|
+ if (ver != null) {
|
||||||
+ ver.execute(sender, commandLabel, new String[0]);
|
+ ver.execute(sender, commandLabel, new String[0]);
|
||||||
+ break;
|
+ break;
|
||||||
|
@ -219,12 +219,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ Map<ResourceLocation, Integer> nonEntityTicking = Maps.newHashMap();
|
+ Map<ResourceLocation, Integer> nonEntityTicking = Maps.newHashMap();
|
||||||
+ ServerChunkCache chunkProviderServer = world.getChunkSource();
|
+ ServerChunkCache chunkProviderServer = world.getChunkSource();
|
||||||
+
|
+
|
||||||
+ Collection<Entity> entities = world.entitiesById.values();
|
+ world.getAllEntities().forEach(e -> {
|
||||||
+ entities.forEach(e -> {
|
|
||||||
+ ResourceLocation key = new ResourceLocation(""); // TODO: update in next patch
|
+ ResourceLocation key = new ResourceLocation(""); // TODO: update in next patch
|
||||||
+
|
+
|
||||||
+ MutablePair<Integer, Map<ChunkPos, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
|
+ MutablePair<Integer, Map<ChunkPos, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
|
||||||
+ ChunkPos chunk = new ChunkPos(e.xChunk, e.zChunk);
|
+ ChunkPos chunk = e.chunkPosition();
|
||||||
+ info.left++;
|
+ info.left++;
|
||||||
+ info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1);
|
+ info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1);
|
||||||
+ if (!chunkProviderServer.isPositionTicking(e)) {
|
+ if (!chunkProviderServer.isPositionTicking(e)) {
|
||||||
|
|
|
@ -1645,6 +1645,14 @@ diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||||
|
@@ -0,0 +0,0 @@ import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
|
import org.bukkit.craftbukkit.CraftWorld;
|
||||||
|
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
||||||
|
import org.bukkit.craftbukkit.block.CapturedBlockState;
|
||||||
|
import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||||
|
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||||
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||||
|
|
||||||
public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper
|
public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper
|
||||||
|
@ -1779,7 +1787,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration));
|
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration));
|
||||||
|
|
||||||
if (this.needsDecoration) {
|
if (this.needsDecoration) {
|
||||||
+ try (co.aikar.timings.Timing ignored = this.world.timings.chunkLoadPopulate.startTiming()) { // Paper
|
+ try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper
|
||||||
this.needsDecoration = false;
|
this.needsDecoration = false;
|
||||||
java.util.Random random = new java.util.Random();
|
java.util.Random random = new java.util.Random();
|
||||||
random.setSeed(this.level.getSeed());
|
random.setSeed(this.level.getSeed());
|
||||||
|
@ -1865,6 +1873,175 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@Override
|
@Override
|
||||||
public void restart() {
|
public void restart() {
|
||||||
org.spigotmc.RestartCommand.restart();
|
org.spigotmc.RestartCommand.restart();
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
|
||||||
|
deleted file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
-package org.bukkit.craftbukkit;
|
||||||
|
-
|
||||||
|
-import java.util.HashMap;
|
||||||
|
-import net.minecraft.world.entity.Entity;
|
||||||
|
-import net.minecraft.world.level.Level;
|
||||||
|
-import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
-import net.minecraft.world.level.storage.PrimaryLevelData;
|
||||||
|
-import org.bukkit.craftbukkit.scheduler.CraftTask;
|
||||||
|
-import org.bukkit.plugin.java.JavaPluginLoader;
|
||||||
|
-import org.bukkit.scheduler.BukkitTask;
|
||||||
|
-import org.spigotmc.CustomTimingsHandler;
|
||||||
|
-
|
||||||
|
-public class SpigotTimings {
|
||||||
|
-
|
||||||
|
- public static final CustomTimingsHandler serverTickTimer = new CustomTimingsHandler("** Full Server Tick");
|
||||||
|
- public static final CustomTimingsHandler playerListTimer = new CustomTimingsHandler("Player List");
|
||||||
|
- public static final CustomTimingsHandler commandFunctionsTimer = new CustomTimingsHandler("Command Functions");
|
||||||
|
- public static final CustomTimingsHandler connectionTimer = new CustomTimingsHandler("Connection Handler");
|
||||||
|
- public static final CustomTimingsHandler playerConnectionTimer = new CustomTimingsHandler("** PlayerConnection");
|
||||||
|
- public static final CustomTimingsHandler tickablesTimer = new CustomTimingsHandler("Tickables");
|
||||||
|
- public static final CustomTimingsHandler schedulerTimer = new CustomTimingsHandler("Scheduler");
|
||||||
|
- public static final CustomTimingsHandler timeUpdateTimer = new CustomTimingsHandler("Time Update");
|
||||||
|
- public static final CustomTimingsHandler serverCommandTimer = new CustomTimingsHandler("Server Command");
|
||||||
|
- public static final CustomTimingsHandler worldSaveTimer = new CustomTimingsHandler("World Save");
|
||||||
|
-
|
||||||
|
- public static final CustomTimingsHandler entityMoveTimer = new CustomTimingsHandler("** entityMove");
|
||||||
|
- public static final CustomTimingsHandler tickEntityTimer = new CustomTimingsHandler("** tickEntity");
|
||||||
|
- public static final CustomTimingsHandler activatedEntityTimer = new CustomTimingsHandler("** activatedTickEntity");
|
||||||
|
- public static final CustomTimingsHandler tickTileEntityTimer = new CustomTimingsHandler("** tickTileEntity");
|
||||||
|
-
|
||||||
|
- public static final CustomTimingsHandler timerEntityBaseTick = new CustomTimingsHandler("** livingEntityBaseTick");
|
||||||
|
- public static final CustomTimingsHandler timerEntityAI = new CustomTimingsHandler("** livingEntityAI");
|
||||||
|
- public static final CustomTimingsHandler timerEntityAICollision = new CustomTimingsHandler("** livingEntityAICollision");
|
||||||
|
- public static final CustomTimingsHandler timerEntityAIMove = new CustomTimingsHandler("** livingEntityAIMove");
|
||||||
|
- public static final CustomTimingsHandler timerEntityTickRest = new CustomTimingsHandler("** livingEntityTickRest");
|
||||||
|
-
|
||||||
|
- public static final CustomTimingsHandler processQueueTimer = new CustomTimingsHandler("processQueue");
|
||||||
|
- public static final CustomTimingsHandler schedulerSyncTimer = new CustomTimingsHandler("** Scheduler - Sync Tasks", JavaPluginLoader.pluginParentTimer);
|
||||||
|
-
|
||||||
|
- public static final CustomTimingsHandler playerCommandTimer = new CustomTimingsHandler("** playerCommand");
|
||||||
|
-
|
||||||
|
- public static final CustomTimingsHandler entityActivationCheckTimer = new CustomTimingsHandler("entityActivationCheck");
|
||||||
|
- public static final CustomTimingsHandler checkIfActiveTimer = new CustomTimingsHandler("** checkIfActive");
|
||||||
|
-
|
||||||
|
- public static final HashMap<String, CustomTimingsHandler> entityTypeTimingMap = new HashMap<String, CustomTimingsHandler>();
|
||||||
|
- public static final HashMap<String, CustomTimingsHandler> tileEntityTypeTimingMap = new HashMap<String, CustomTimingsHandler>();
|
||||||
|
- public static final HashMap<String, CustomTimingsHandler> pluginTaskTimingMap = new HashMap<String, CustomTimingsHandler>();
|
||||||
|
-
|
||||||
|
- /**
|
||||||
|
- * Gets a timer associated with a plugins tasks.
|
||||||
|
- * @param task
|
||||||
|
- * @param period
|
||||||
|
- * @return
|
||||||
|
- */
|
||||||
|
- public static CustomTimingsHandler getPluginTaskTimings(BukkitTask task, long period) {
|
||||||
|
- if (!task.isSync()) {
|
||||||
|
- return null;
|
||||||
|
- }
|
||||||
|
- String plugin;
|
||||||
|
- final CraftTask ctask = (CraftTask) task;
|
||||||
|
-
|
||||||
|
- if (task.getOwner() != null) {
|
||||||
|
- plugin = task.getOwner().getDescription().getFullName();
|
||||||
|
- } else {
|
||||||
|
- plugin = "Unknown";
|
||||||
|
- }
|
||||||
|
- String taskname = ctask.getTaskName();
|
||||||
|
-
|
||||||
|
- String name = "Task: " + plugin + " Runnable: " + taskname;
|
||||||
|
- if (period > 0) {
|
||||||
|
- name += "(interval:" + period + ")";
|
||||||
|
- } else {
|
||||||
|
- name += "(Single)";
|
||||||
|
- }
|
||||||
|
- CustomTimingsHandler result = SpigotTimings.pluginTaskTimingMap.get(name);
|
||||||
|
- if (result == null) {
|
||||||
|
- result = new CustomTimingsHandler(name, SpigotTimings.schedulerSyncTimer);
|
||||||
|
- SpigotTimings.pluginTaskTimingMap.put(name, result);
|
||||||
|
- }
|
||||||
|
- return result;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /**
|
||||||
|
- * Get a named timer for the specified entity type to track type specific timings.
|
||||||
|
- * @param entity
|
||||||
|
- * @return
|
||||||
|
- */
|
||||||
|
- public static CustomTimingsHandler getEntityTimings(Entity entity) {
|
||||||
|
- String entityType = entity.getClass().getName();
|
||||||
|
- CustomTimingsHandler result = SpigotTimings.entityTypeTimingMap.get(entityType);
|
||||||
|
- if (result == null) {
|
||||||
|
- result = new CustomTimingsHandler("** tickEntity - " + entity.getClass().getSimpleName(), SpigotTimings.activatedEntityTimer);
|
||||||
|
- SpigotTimings.entityTypeTimingMap.put(entityType, result);
|
||||||
|
- }
|
||||||
|
- return result;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /**
|
||||||
|
- * Get a named timer for the specified tile entity type to track type specific timings.
|
||||||
|
- * @param entity
|
||||||
|
- * @return
|
||||||
|
- */
|
||||||
|
- public static CustomTimingsHandler getTileEntityTimings(BlockEntity entity) {
|
||||||
|
- String entityType = entity.getClass().getName();
|
||||||
|
- CustomTimingsHandler result = SpigotTimings.tileEntityTypeTimingMap.get(entityType);
|
||||||
|
- if (result == null) {
|
||||||
|
- result = new CustomTimingsHandler("** tickTileEntity - " + entity.getClass().getSimpleName(), SpigotTimings.tickTileEntityTimer);
|
||||||
|
- SpigotTimings.tileEntityTypeTimingMap.put(entityType, result);
|
||||||
|
- }
|
||||||
|
- return result;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /**
|
||||||
|
- * Set of timers per world, to track world specific timings.
|
||||||
|
- */
|
||||||
|
- public static class WorldTimingsHandler {
|
||||||
|
- public final CustomTimingsHandler mobSpawn;
|
||||||
|
- public final CustomTimingsHandler doChunkUnload;
|
||||||
|
- public final CustomTimingsHandler doTickPending;
|
||||||
|
- public final CustomTimingsHandler doTickTiles;
|
||||||
|
- public final CustomTimingsHandler doChunkMap;
|
||||||
|
- public final CustomTimingsHandler doSounds;
|
||||||
|
- public final CustomTimingsHandler entityTick;
|
||||||
|
- public final CustomTimingsHandler tileEntityTick;
|
||||||
|
- public final CustomTimingsHandler tileEntityPending;
|
||||||
|
- public final CustomTimingsHandler tracker;
|
||||||
|
- public final CustomTimingsHandler doTick;
|
||||||
|
- public final CustomTimingsHandler tickEntities;
|
||||||
|
-
|
||||||
|
- public final CustomTimingsHandler syncChunkLoadTimer;
|
||||||
|
- public final CustomTimingsHandler syncChunkLoadStructuresTimer;
|
||||||
|
- public final CustomTimingsHandler syncChunkLoadEntitiesTimer;
|
||||||
|
- public final CustomTimingsHandler syncChunkLoadTileEntitiesTimer;
|
||||||
|
- public final CustomTimingsHandler syncChunkLoadTileTicksTimer;
|
||||||
|
- public final CustomTimingsHandler syncChunkLoadPostTimer;
|
||||||
|
-
|
||||||
|
- public WorldTimingsHandler(Level server) {
|
||||||
|
- String name = ((PrimaryLevelData) server.levelData).getLevelName() + " - ";
|
||||||
|
-
|
||||||
|
- this.mobSpawn = new CustomTimingsHandler("** " + name + "mobSpawn");
|
||||||
|
- this.doChunkUnload = new CustomTimingsHandler("** " + name + "doChunkUnload");
|
||||||
|
- this.doTickPending = new CustomTimingsHandler("** " + name + "doTickPending");
|
||||||
|
- this.doTickTiles = new CustomTimingsHandler("** " + name + "doTickTiles");
|
||||||
|
- this.doChunkMap = new CustomTimingsHandler("** " + name + "doChunkMap");
|
||||||
|
- this.doSounds = new CustomTimingsHandler("** " + name + "doSounds");
|
||||||
|
- this.entityTick = new CustomTimingsHandler("** " + name + "entityTick");
|
||||||
|
- this.tileEntityTick = new CustomTimingsHandler("** " + name + "tileEntityTick");
|
||||||
|
- this.tileEntityPending = new CustomTimingsHandler("** " + name + "tileEntityPending");
|
||||||
|
-
|
||||||
|
- this.syncChunkLoadTimer = new CustomTimingsHandler("** " + name + "syncChunkLoad");
|
||||||
|
- this.syncChunkLoadStructuresTimer = new CustomTimingsHandler("** " + name + "chunkLoad - Structures");
|
||||||
|
- this.syncChunkLoadEntitiesTimer = new CustomTimingsHandler("** " + name + "chunkLoad - Entities");
|
||||||
|
- this.syncChunkLoadTileEntitiesTimer = new CustomTimingsHandler("** " + name + "chunkLoad - TileEntities");
|
||||||
|
- this.syncChunkLoadTileTicksTimer = new CustomTimingsHandler("** " + name + "chunkLoad - TileTicks");
|
||||||
|
- this.syncChunkLoadPostTimer = new CustomTimingsHandler("** " + name + "chunkLoad - Post");
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- this.tracker = new CustomTimingsHandler(name + "tracker");
|
||||||
|
- this.doTick = new CustomTimingsHandler(name + "doTick");
|
||||||
|
- this.tickEntities = new CustomTimingsHandler(name + "tickEntities");
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
|
Loading…
Reference in a new issue