9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-31 04:46:37 +00:00
This commit is contained in:
XiaoMoMi
2025-04-19 19:11:53 +08:00
14 changed files with 92 additions and 16 deletions

View File

@@ -138,7 +138,8 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
});
}
private void sendResourcePack(Player player) {
@Override
public void sendResourcePack(Player player) {
CompletableFuture<List<ResourcePackDownloadData>> future = resourcePackHost().requestResourcePackDownloadLink(player.uuid());
future.thenAccept(dataList -> {
if (player.isOnline()) {

View File

@@ -50,7 +50,8 @@ public class BukkitCommandManager extends AbstractCommandManager<CommandSender>
new EnableResourceCommand(this, plugin),
new DisableResourceCommand(this, plugin),
new ListResourceCommand(this, plugin),
new UploadPackCommand(this, plugin)
new UploadPackCommand(this, plugin),
new SendResourcePackCommand(this, plugin)
));
final LegacyPaperCommandManager<CommandSender> manager = (LegacyPaperCommandManager<CommandSender>) getCommandManager();
manager.settings().set(ManagerSetting.ALLOW_UNSAFE_REGISTRATION, true);

View File

@@ -0,0 +1,53 @@
package net.momirealms.craftengine.bukkit.plugin.command.feature;
import net.kyori.adventure.text.Component;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
import net.momirealms.craftengine.core.plugin.command.FlagKeys;
import net.momirealms.craftengine.core.plugin.locale.MessageConstants;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.incendo.cloud.Command;
import org.incendo.cloud.CommandManager;
import org.incendo.cloud.bukkit.data.MultiplePlayerSelector;
import org.incendo.cloud.bukkit.parser.selector.MultiplePlayerSelectorParser;
import java.util.Collection;
public class SendResourcePackCommand extends BukkitCommandFeature<CommandSender> {
public SendResourcePackCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
super(commandManager, plugin);
}
@Override
public Command.Builder<? extends CommandSender> assembleCommand(CommandManager<CommandSender> manager, Command.Builder<CommandSender> builder) {
return builder
.flag(FlagKeys.SILENT_FLAG)
.required("player", MultiplePlayerSelectorParser.multiplePlayerSelectorParser(true))
.handler(context -> {
MultiplePlayerSelector selector = context.get("player");
Collection<Player> players = selector.values();
for (Player player : players) {
BukkitServerPlayer bukkitServerPlayer = plugin().adapt(player);
if (bukkitServerPlayer == null) continue;
BukkitCraftEngine.instance().packManager().sendResourcePack(bukkitServerPlayer);
}
int size = players.size();
if (size == 1) {
String name = players.iterator().next().getName();
handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS_SINGLE, Component.text(name));
} else {
handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS_MULTIPLE, Component.text(size));
}
});
}
@Override
public String getFeatureID() {
return "send_resource_pack";
}
}