Paper/patches/server/0600-Add-sendOpLevel-API.patch
Nassim Jahnke 17f71ac87b
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#5904)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
70d24eb8 SPIGOT-6587: Update documentation/error of drop chance API

CraftBukkit Changes:
470050ad SPIGOT-6587: Update documentation/error of drop chance API
1c39efa3 Fix Inventory#getViewers on the player inventory not returning the player first time their inventory is opened
d161627d Fix PrepareItemCraftEvent#isRepair
aa1fae73 SPIGOT-6586: EntityChangeBlockEvent for falling block does not cancel properly
8a04072e SPIGOT-6583: Throwing eggs doesn't make sounds

Spigot Changes:
f773da84 Remove redundant patch
cd367234 Rebuild patches
2021-06-20 21:25:59 +02:00

66 lines
2.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mariell Hoversholm <proximyst@proximyst.com>
Date: Tue, 29 Dec 2020 15:03:03 +0100
Subject: [PATCH] Add sendOpLevel API
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index d4de245b36e299c87b2c62d8e341c0fd027e6fc0..db4d33bdb00fd1eb40cae10ce4dedc31b57bfc41 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1121,22 +1121,29 @@ public abstract class PlayerList {
}
private void sendPlayerPermissionLevel(ServerPlayer player, int permissionLevel) {
- if (player.connection != null) {
+ // Paper start - add recalculatePermissions parameter
+ this.sendPlayerOperatorStatus(player, permissionLevel, true);
+ }
+ public void sendPlayerOperatorStatus(ServerPlayer entityplayer, int i, boolean recalculatePermissions) {
+ // Paper end
+ if (entityplayer.connection != null) {
byte b0;
- if (permissionLevel <= 0) {
+ if (i <= 0) {
b0 = 24;
- } else if (permissionLevel >= 4) {
+ } else if (i >= 4) {
b0 = 28;
} else {
- b0 = (byte) (24 + permissionLevel);
+ b0 = (byte) (24 + i);
}
- player.connection.send(new ClientboundEntityEventPacket(player, b0));
+ entityplayer.connection.send(new ClientboundEntityEventPacket(entityplayer, b0));
}
- player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
- this.server.getCommands().sendCommands(player);
+ if (recalculatePermissions) { // Paper
+ entityplayer.getBukkitEntity().recalculatePermissions(); // CraftBukkit
+ this.server.getCommands().sendCommands(entityplayer);
+ } // Paper
}
// Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index f0ea99248db07e3b992fed5d950014bcbc951370..85187e7b0d965b7930e6b2ab8d321d6d27211a35 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -552,6 +552,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
? (org.bukkit.entity.Firework) entity.getBukkitEntity()
: null;
}
+
+ @Override
+ public void sendOpLevel(byte level) {
+ Preconditions.checkArgument(level >= 0 && level <= 4, "Level must be within [0, 4]");
+
+ this.getHandle().getServer().getPlayerList().sendPlayerOperatorStatus(this.getHandle(), level, false);
+ }
// Paper end
@Override