!feat: added quest context

This commit is contained in:
Andrey Terentev 2025-08-19 22:18:13 +07:00
parent e50ee8a3d6
commit 071c2b7ed9
4 changed files with 138 additions and 0 deletions

View File

@ -195,6 +195,7 @@ public final class ServerBootstrap {
PlayerContextManager.registerContext(TalksContext.class, TalksContext::new); PlayerContextManager.registerContext(TalksContext.class, TalksContext::new);
PlayerContextManager.registerContext(DebugParamsContext.class, DebugParamsContext::new); PlayerContextManager.registerContext(DebugParamsContext.class, DebugParamsContext::new);
PlayerContextManager.registerContext(PlayerScriptContext.class, PlayerScriptContext::new); PlayerContextManager.registerContext(PlayerScriptContext.class, PlayerScriptContext::new);
PlayerContextManager.registerContext(PlayerQuestContext.class, PlayerQuestContext::new);
} }
private void initDefaultSkins() { private void initDefaultSkins() {

View File

@ -32,6 +32,7 @@ public class DebugCommands {
DebugRendererCommand.register(); DebugRendererCommand.register();
DebugAICommand.register(); DebugAICommand.register();
ScriptCommand.register(); ScriptCommand.register();
DebugQuestCommand.register();
log.info("Registered debug commands"); log.info("Registered debug commands");
} }

View File

@ -0,0 +1,115 @@
package ru.dragonestia.msb3.api.command;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
import net.minestom.server.command.builder.arguments.ArgumentString;
import net.minestom.server.command.builder.arguments.ArgumentType;
import net.minestom.server.entity.Player;
import ru.dragonestia.msb3.api.player.PlayerContext;
import ru.dragonestia.msb3.api.player.defaults.PlayerQuestContext;
public class DebugQuestCommand extends Command {
private final ArgumentString argQuestId = new ArgumentString("Quest ID");
public DebugQuestCommand() {
super("debug_quest");
setDefaultExecutor(this::defaultHandler);
addSyntax(this::listAllReceivedQuests, ArgumentType.Literal("list"));
addSyntax(this::listAllCompletedQuests, ArgumentType.Literal("completed"));
addSyntax(this::viewQuestDetails, ArgumentType.Literal("details"), argQuestId);
addSyntax(this::completeQuest, ArgumentType.Literal("complete"), argQuestId);
addSyntax(this::cancelQuest, ArgumentType.Literal("cancel"), argQuestId);
addSyntax(this::failQuest, ArgumentType.Literal("fail"), argQuestId);
}
public static void register() {
MinecraftServer.getCommandManager().register(new DebugQuestCommand());
}
private void defaultHandler(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
player.sendMessage("Debug Quest commands:");
player.sendMessage("/debug_quest list - List all received quests");
player.sendMessage("/debug_quest completed - List all completed, cancelled and failed quests");
player.sendMessage("/debug_quest details <questId> - View quest details");
player.sendMessage("/debug_quest complete <questId> - Force complete quest");
player.sendMessage("/debug_quest cancel <questId> - Force cancel quest");
player.sendMessage("/debug_quest fail <questId> - Force fail quest");
}
private void listAllReceivedQuests(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
var service = PlayerContext.of(player, PlayerQuestContext.class);
var output = Component.text()
.append(Component.text("Received quests(%s): %s"));
// TODO
player.sendMessage(output.build());
}
private void listAllCompletedQuests(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
var service = PlayerContext.of(player, PlayerQuestContext.class);
var outputCompleted = Component.text()
.append(Component.text("Completed quests(%s): %s"));
// TODO
player.sendMessage(outputCompleted.build());
var outputCancelled = Component.text()
.append(Component.text("Cancelled quests(%s): %s"));
// TODO
player.sendMessage(outputCancelled.build());
var outputFailed = Component.text()
.append(Component.text("Failed quests(%s): %s"));
// TODO
player.sendMessage(outputFailed.build());
}
private void viewQuestDetails(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
var service = PlayerContext.of(player, PlayerQuestContext.class);
var questId = ctx.get(argQuestId);
// TODO
}
private void completeQuest(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
var service = PlayerContext.of(player, PlayerQuestContext.class);
var questId = ctx.get(argQuestId);
// TODO
}
private void cancelQuest(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
var service = PlayerContext.of(player, PlayerQuestContext.class);
var questId = ctx.get(argQuestId);
// TODO
}
private void failQuest(CommandSender sender, CommandContext ctx) {
var player = (Player) sender;
var service = PlayerContext.of(player, PlayerQuestContext.class);
var questId = ctx.get(argQuestId);
// TODO
}
}

View File

@ -0,0 +1,21 @@
package ru.dragonestia.msb3.api.player.defaults;
import ru.dragonestia.msb3.api.player.MsbPlayer;
import ru.dragonestia.msb3.api.player.PlayerContext;
public class PlayerQuestContext extends PlayerContext {
public PlayerQuestContext(MsbPlayer player) {
super(player);
}
@Override
public void init() {
}
@Override
public void dispose() {
}
}