From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Wed, 2 Dec 2020 20:04:01 -0800
Subject: [PATCH] Added ServerResourcesReloadedEvent


diff --git a/src/main/java/net/minecraft/server/CommandReload.java b/src/main/java/net/minecraft/server/CommandReload.java
index 08e472b71cf85b854eaa831881577ce2c3c03b11..4558147a51be6713c11bda6a60fd5ca3a953c096 100644
--- a/src/main/java/net/minecraft/server/CommandReload.java
+++ b/src/main/java/net/minecraft/server/CommandReload.java
@@ -6,13 +6,14 @@ import java.util.Collection;
 import java.util.Iterator;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import io.papermc.paper.event.server.ServerResourcesReloadedEvent; // Paper
 
 public class CommandReload {
 
     private static final Logger LOGGER = LogManager.getLogger();
 
     public static void a(Collection<String> collection, CommandListenerWrapper commandlistenerwrapper) {
-        commandlistenerwrapper.getServer().a(collection).exceptionally((throwable) -> {
+        commandlistenerwrapper.getServer().reloadServerResources(collection, ServerResourcesReloadedEvent.Cause.COMMAND).exceptionally((throwable) -> { // Paper
             CommandReload.LOGGER.warn("Failed to execute reload", throwable);
             commandlistenerwrapper.sendFailureMessage(new ChatMessage("commands.reload.failure"));
             return null;
@@ -42,7 +43,7 @@ public class CommandReload {
         SaveData savedata = minecraftserver.getSaveData();
         Collection<String> collection = resourcepackrepository.d();
         Collection<String> collection1 = a(resourcepackrepository, savedata, collection);
-        minecraftserver.a(collection1);
+        minecraftserver.reloadServerResources(collection1, ServerResourcesReloadedEvent.Cause.PLUGIN); // Paper
     }
     // CraftBukkit end
 
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 4d7e8e8eed7786c602e54786cb142972f75ca65d..c3fb69b18bf66ac8532196d953d9729ffb394721 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2,9 +2,6 @@ package net.minecraft.server;
 
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
-import co.aikar.timings.Timings;
-import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
-import com.google.common.base.Stopwatch;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -63,13 +60,11 @@ import org.apache.logging.log4j.Logger;
 import com.google.common.collect.ImmutableSet;
 // import jline.console.ConsoleReader; // Paper
 import joptsimple.OptionSet;
-import org.bukkit.Bukkit;
-import org.bukkit.craftbukkit.CraftServer;
-import org.bukkit.craftbukkit.Main;
 import org.bukkit.event.server.ServerLoadEvent;
 // CraftBukkit end
 import co.aikar.timings.MinecraftTimings; // Paper
 import io.papermc.paper.util.PaperJvmChecker; // Paper
+import io.papermc.paper.event.server.ServerResourcesReloadedEvent; // Paper
 import org.spigotmc.SlackActivityAccountant; // Spigot
 
 public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTask> implements IMojangStatistics, ICommandListener, AutoCloseable {
@@ -1812,7 +1807,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
         return this.customFunctionData;
     }
 
+    // Paper start - add cause
+    @Deprecated
     public CompletableFuture<Void> a(Collection<String> collection) {
+        return this.reloadServerResources(collection, ServerResourcesReloadedEvent.Cause.PLUGIN);
+    }
+    public CompletableFuture<Void> reloadServerResources(Collection<String> collection, ServerResourcesReloadedEvent.Cause cause) {
+        // Paper end
         CompletableFuture<Void> completablefuture = CompletableFuture.supplyAsync(() -> {
             Stream<String> stream = collection.stream(); // CraftBukkit - decompile error
             ResourcePackRepository resourcepackrepository = this.resourcePackRepository;
@@ -1828,6 +1829,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
             this.resourcePackRepository.a(collection);
             this.saveData.a(a(this.resourcePackRepository));
             datapackresources.i();
+            new ServerResourcesReloadedEvent(cause).callEvent(); // Paper
             if (Thread.currentThread() != this.serverThread) return; // Paper
             //this.getPlayerList().savePlayers(); // Paper - we don't need to do this
             this.getPlayerList().reload();