diff --git a/build.gradle.kts b/build.gradle.kts index f30820c..0cc31ce 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,7 +28,7 @@ dependencies { annotationProcessor("com.velocitypowered:velocity-api:3.2.0-SNAPSHOT") implementation("net.kyori:adventure-text-minimessage:4.14.0") - implementation("dev.emortal.api:common-proto-sdk:1797f88") + implementation("dev.emortal.api:common-proto-sdk:15284aa") implementation("dev.emortal.api:agones-sdk:1.0.7") implementation("dev.emortal.api:live-config-parser:8f566b9") implementation("dev.emortal.api:module-system:1.0.0") diff --git a/src/main/java/dev/emortal/velocity/lang/ChatMessages.java b/src/main/java/dev/emortal/velocity/lang/ChatMessages.java index 13b0a60..46f3ec3 100644 --- a/src/main/java/dev/emortal/velocity/lang/ChatMessages.java +++ b/src/main/java/dev/emortal/velocity/lang/ChatMessages.java @@ -157,6 +157,10 @@ public interface ChatMessages { }; Args1 EVENT_CREATED = event -> green("Event created:").appendNewline().append(EVENT_VALUE.get(event)); Args1 ERROR_EVENT_ALREADY_EXISTS = id -> red("And event with the ID '" + id + "' already exists"); + Args1 EVENT_DELETED = id -> green("Event '" + id + "' deleted"); + Args0 CURRENT_EVENT_DELETED = () -> green("Ongoing event deleted"); + Args0 ERROR_NO_CURRENT_EVENT_DELETE = () -> green("There is no ongoing event to delete. Use /event delete to delete by ID."); + Args1 ERROR_EVENT_NOT_FOUND = id -> red("Event not found with id '" + id + "'"); Args1 ROLE_CREATED = role -> green("Role " + role + " created"); Args4 ROLE_DESCRIPTION = (id, priority, permissions, displayName) -> diff --git a/src/main/java/dev/emortal/velocity/party/commands/event/EventCommand.java b/src/main/java/dev/emortal/velocity/party/commands/event/EventCommand.java index ceaf5e5..992b0ae 100644 --- a/src/main/java/dev/emortal/velocity/party/commands/event/EventCommand.java +++ b/src/main/java/dev/emortal/velocity/party/commands/event/EventCommand.java @@ -7,6 +7,7 @@ import dev.emortal.velocity.command.EmortalCommand; import dev.emortal.velocity.lang.ChatMessages; import dev.emortal.velocity.party.commands.event.subs.CreateSub; +import dev.emortal.velocity.party.commands.event.subs.DeleteSub; import dev.emortal.velocity.party.commands.event.subs.ListSub; public class EventCommand extends EmortalCommand { @@ -26,6 +27,11 @@ public EventCommand(PartyService partyService) { super.addSyntax(this::createUsage, literal("create"), literal("help")); super.addSyntax(new CreateSub(partyService), literal("create"), argument("id", StringArgumentType.word()), argument("showTime", StringArgumentType.word()), argument("startTime", StringArgumentType.word())); + + // Delete + DeleteSub deleteSub = new DeleteSub(partyService); + super.addSyntax(deleteSub, literal("delete")); + super.addSyntax(deleteSub, literal("delete"), argument("id", StringArgumentType.word())); } private void createUsage(CommandContext context) { diff --git a/src/main/java/dev/emortal/velocity/party/commands/event/subs/DeleteSub.java b/src/main/java/dev/emortal/velocity/party/commands/event/subs/DeleteSub.java new file mode 100644 index 0000000..1ec662c --- /dev/null +++ b/src/main/java/dev/emortal/velocity/party/commands/event/subs/DeleteSub.java @@ -0,0 +1,35 @@ +package dev.emortal.velocity.party.commands.event.subs; + +import com.velocitypowered.api.command.CommandSource; +import dev.emortal.api.service.party.DeleteEventResult; +import dev.emortal.api.service.party.PartyService; +import dev.emortal.velocity.command.ArgumentProvider; +import dev.emortal.velocity.command.EmortalCommandExecutor; +import dev.emortal.velocity.lang.ChatMessages; +import org.jetbrains.annotations.NotNull; + +public class DeleteSub implements EmortalCommandExecutor { + + private final @NotNull PartyService partyService; + + public DeleteSub(@NotNull PartyService partyService) { + this.partyService = partyService; + } + + @Override + public void execute(@NotNull CommandSource source, @NotNull ArgumentProvider arguments) { + String id; + if (arguments.hasArgument("id")) id = arguments.getArgument("id", String.class); + else id = null; + + DeleteEventResult result = this.partyService.deleteEvent(id); + switch (result) { + case SUCCESS -> { + if (id == null) ChatMessages.CURRENT_EVENT_DELETED.send(source); + else ChatMessages.EVENT_DELETED.send(source, id); + } + case NO_CURRENT_EVENT -> ChatMessages.ERROR_NO_CURRENT_EVENT_DELETE.send(source); + case NOT_FOUND -> ChatMessages.ERROR_EVENT_NOT_FOUND.send(source, id); + } + } +}