95 lines
5.8 KiB
Diff
95 lines
5.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Helvetica Volubi <suisuroru@blue-millennium.fun>
|
|
Date: Wed, 2 Jul 2025 23:36:25 +0800
|
|
Subject: [PATCH] Fix datapack command save function
|
|
|
|
|
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
|
index 504f21c5f1e3101e7164b97059aecce630d18cee..d5b680fc6e13ec26d0db2448009e4cbe59933e22 100644
|
|
--- a/net/minecraft/server/MinecraftServer.java
|
|
+++ b/net/minecraft/server/MinecraftServer.java
|
|
@@ -2437,6 +2437,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
return this.reloadResources(selectedIds, io.papermc.paper.event.server.ServerResourcesReloadedEvent.Cause.PLUGIN);
|
|
}
|
|
|
|
+ // Lophine start - region thread skip reload // TODO - add reload support
|
|
+ public void saveDatapacks(Collection<String> selectedIds) {
|
|
+ this.packRepository.setSelected(selectedIds, false); // Paper - add pendingReload flag to determine required pack loading - false as this is *after* a reload (see above)
|
|
+ WorldDataConfiguration worldDataConfiguration = new WorldDataConfiguration(
|
|
+ getSelectedPacks(this.packRepository, true), this.worldData.enabledFeatures()
|
|
+ );
|
|
+ this.worldData.setDataConfiguration(worldDataConfiguration);
|
|
+ }
|
|
+ // Lophine end - region thread skip reload // TODO - add reload support
|
|
+
|
|
public CompletableFuture<Void> reloadResources(Collection<String> selectedIds, io.papermc.paper.event.server.ServerResourcesReloadedEvent.Cause cause) {
|
|
// Paper end - Add ServerResourcesReloadedEvent
|
|
CompletableFuture<Void> completableFuture = CompletableFuture.<ImmutableList>supplyAsync(
|
|
diff --git a/net/minecraft/server/commands/DataPackCommand.java b/net/minecraft/server/commands/DataPackCommand.java
|
|
index bb36fa4559cdfe82079af1c39516239119ff06f4..8c530eef0e416d8b96f190ada358d77d34dbc8ac 100644
|
|
--- a/net/minecraft/server/commands/DataPackCommand.java
|
|
+++ b/net/minecraft/server/commands/DataPackCommand.java
|
|
@@ -98,7 +98,7 @@ public class DataPackCommand {
|
|
dispatcher.register(
|
|
Commands.literal("datapack")
|
|
.requires(Commands.hasPermission(Commands.LEVEL_GAMEMASTERS))
|
|
- /*.then( // Luminol - Add back read-only datapack command
|
|
+ .then(
|
|
Commands.literal("enable")
|
|
.then(
|
|
Commands.argument("name", StringArgumentType.string())
|
|
@@ -160,11 +160,11 @@ public class DataPackCommand {
|
|
.suggests(SELECTED_PACKS)
|
|
.executes(commandContext -> disablePack(commandContext.getSource(), getPack(commandContext, "name", false)))
|
|
)
|
|
- )*/ // Luminol - Add back read-only datapack command
|
|
+ )
|
|
.then(
|
|
Commands.literal("list")
|
|
.executes(commandContext -> listPacks(commandContext.getSource()))
|
|
- // .then(Commands.literal("available").executes(commandContext -> listAvailablePacks(commandContext.getSource()))) // Luminol - Add back read-only datapack command
|
|
+ .then(Commands.literal("available").executes(commandContext -> listAvailablePacks(commandContext.getSource())))
|
|
.then(Commands.literal("enabled").executes(commandContext -> listEnabledPacks(commandContext.getSource())))
|
|
)
|
|
.then(
|
|
@@ -252,7 +252,7 @@ public class DataPackCommand {
|
|
}
|
|
|
|
private static int listPacks(CommandSourceStack source) {
|
|
- return listEnabledPacks(source) ;// + listAvailablePacks(source); // Luminol - Add back read-only datapack command
|
|
+ return listEnabledPacks(source) + listAvailablePacks(source);
|
|
}
|
|
|
|
private static int listAvailablePacks(CommandSourceStack source) {
|
|
@@ -280,7 +280,7 @@ public class DataPackCommand {
|
|
|
|
private static int listEnabledPacks(CommandSourceStack source) {
|
|
PackRepository packRepository = source.getServer().getPackRepository();
|
|
- // packRepository.reload(); // Luminol - Add back read-only datapack command
|
|
+ packRepository.reload();
|
|
Collection<? extends Pack> selectedPacks = packRepository.getSelectedPacks();
|
|
if (selectedPacks.isEmpty()) {
|
|
source.sendSuccess(() -> Component.translatable("commands.datapack.list.enabled.none"), false);
|
|
diff --git a/net/minecraft/server/commands/ReloadCommand.java b/net/minecraft/server/commands/ReloadCommand.java
|
|
index fcca0babb4e7929cc168fc8b9ad47619e6feb1a5..bac5f4e023f8b73eebea0f31fd253e04c8809918 100644
|
|
--- a/net/minecraft/server/commands/ReloadCommand.java
|
|
+++ b/net/minecraft/server/commands/ReloadCommand.java
|
|
@@ -16,11 +16,17 @@ public class ReloadCommand {
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
|
|
public static void reloadPacks(Collection<String> selectedIds, CommandSourceStack source) {
|
|
+ // Lophine start - region thread skip reload // TODO - add reload support
|
|
+ source.getServer().saveDatapacks(selectedIds);
|
|
+ source.getSender().sendMessage("You need to restart server to load datapacks update.");
|
|
+ if (false) {
|
|
source.getServer().reloadResources(selectedIds, io.papermc.paper.event.server.ServerResourcesReloadedEvent.Cause.COMMAND).exceptionally(throwable -> { // Paper - Add ServerResourcesReloadedEvent
|
|
LOGGER.warn("Failed to execute reload", throwable);
|
|
source.sendFailure(Component.translatable("commands.reload.failure"));
|
|
return null;
|
|
});
|
|
+ }
|
|
+ // Lophine end - region thread skip reload // TODO - add reload support
|
|
}
|
|
|
|
private static Collection<String> discoverNewPacks(PackRepository packRepository, WorldData worldData, Collection<String> selectedIds) {
|