--- a/net/minecraft/server/players/UserWhiteList.java
+++ b/net/minecraft/server/players/UserWhiteList.java
@@ -21,6 +_,11 @@
 
     @Override
     public boolean add(UserWhiteListEntry entry) {
+        // Paper start - Add whitelist events
+        if (!new io.papermc.paper.event.server.WhitelistStateUpdateEvent(com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitCopy(entry.getUser().toUncompletedGameProfile()), io.papermc.paper.event.server.WhitelistStateUpdateEvent.WhitelistStatus.ADDED).callEvent()) {
+            return false;
+        }
+        // Paper end - Add whitelist events
         if (super.add(entry)) {
             if (entry.getUser() != null) {
                 this.notificationService.playerAddedToAllowlist(entry.getUser());
@@ -34,6 +_,11 @@
 
     @Override
     public boolean remove(NameAndId key) {
+        // Paper start - Add whitelist events
+        if (!new io.papermc.paper.event.server.WhitelistStateUpdateEvent(com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitCopy(key.toUncompletedGameProfile()), io.papermc.paper.event.server.WhitelistStateUpdateEvent.WhitelistStatus.REMOVED).callEvent()) {
+            return false;
+        }
+        // Paper end - Add whitelist events
         if (super.remove(key)) {
             this.notificationService.playerRemovedFromAllowlist(key);
             return true;
