From b2dbe9de51d6b03cb0badd79e97e9d9e26b25b36 Mon Sep 17 00:00:00 2001 From: sciwhiz12 Date: Sun, 19 Sep 2021 05:58:27 +0800 Subject: [PATCH] Fix inverted hooks for PermissionsChangedEvent (#8089) Because IEventBus#post returns true on cancellation and the patched-in hooks inverts the return of the ForgeHooks method, if the player whose permission level is being changed is online and the event is not cancelled, the permission change _is_ cancelled. The fix is inverting the patched-in hooks and the default return value of the ForgeHooks method, so that the permission change is cancelled only if the player is online, the event is fired, and the event is cancelled. Fixes #8088 --- .../net/minecraft/server/players/PlayerList.java.patch | 4 ++-- src/main/java/net/minecraftforge/event/ForgeEventFactory.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch b/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch index 9c714b8b9a..3afecde553 100644 --- a/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch +++ b/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch @@ -82,7 +82,7 @@ } public void m_5749_(GameProfile p_11254_) { -+ if (!net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11254_, this.f_11195_.m_7022_(), this)) return; ++ if (net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11254_, this.f_11195_.m_7022_(), this)) return; this.f_11200_.m_11381_(new ServerOpListEntry(p_11254_, this.f_11195_.m_7022_(), this.f_11200_.m_11351_(p_11254_))); ServerPlayer serverplayer = this.m_11259_(p_11254_.getId()); if (serverplayer != null) { @@ -90,7 +90,7 @@ } public void m_5750_(GameProfile p_11281_) { -+ if (!net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11281_, 0, this)) return; ++ if (net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11281_, 0, this)) return; this.f_11200_.m_11393_(p_11281_); ServerPlayer serverplayer = this.m_11259_(p_11281_.getId()); if (serverplayer != null) { diff --git a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java index acc742bca5..a115e495b0 100644 --- a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java +++ b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java @@ -794,6 +794,6 @@ public class ForgeEventFactory { return MinecraftForge.EVENT_BUS.post(new PermissionsChangedEvent(player, newLevel, oldLevel)); } - return true; + return false; } }