Skip to content

Commit

Permalink
GH-187 Use LiteCommands 3x
Browse files Browse the repository at this point in the history
  • Loading branch information
vLuckyyy committed Sep 27, 2024
1 parent 534e2cf commit 30948ac
Show file tree
Hide file tree
Showing 10 changed files with 146 additions and 116 deletions.
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ object Versions {
const val ADVENTURE_PLATFORM_BUKKIT = "4.3.4"
const val ADVENTURE_TEXT_MINIMESSAGE = "4.17.0"

const val LITE_COMMANDS = "2.8.9"
const val LITE_COMMANDS = "3.5.0"
const val OKAERI_CONFIGS_YAML_BUKKIT = "5.0.3"
const val OKAERI_CONFIGS_SERDES_COMMONS = "5.0.3"
const val OKAERI_CONFIGS_SERDES_BUKKIT = "5.0.3"
Expand Down
2 changes: 1 addition & 1 deletion eternalcombat-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ dependencies {
api("net.kyori:adventure-text-minimessage:${Versions.ADVENTURE_TEXT_MINIMESSAGE}")

// litecommands
api("dev.rollczi.litecommands:bukkit-adventure:${Versions.LITE_COMMANDS}")
api("dev.rollczi:litecommands-bukkit:${Versions.LITE_COMMANDS}")

// Okaeri configs
api("eu.okaeri:okaeri-configs-yaml-bukkit:${Versions.OKAERI_CONFIGS_YAML_BUKKIT}")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,43 +1,40 @@
package com.eternalcode.combat;
package com.eternalcode.combat.command;

import com.eternalcode.combat.config.ConfigService;
import com.eternalcode.combat.config.implementation.PluginConfig;
import com.eternalcode.combat.fight.FightManager;
import com.eternalcode.combat.fight.event.CauseOfTag;
import com.eternalcode.combat.fight.event.CauseOfUnTag;
import com.eternalcode.combat.fight.event.FightTagEvent;
import com.eternalcode.combat.fight.event.FightUntagEvent;
import com.eternalcode.combat.notification.NotificationAnnouncer;
import dev.rollczi.litecommands.argument.Arg;
import dev.rollczi.litecommands.command.async.Async;
import dev.rollczi.litecommands.command.execute.Execute;
import dev.rollczi.litecommands.command.permission.Permission;
import dev.rollczi.litecommands.command.route.Route;
import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Context;
import dev.rollczi.litecommands.annotations.execute.Execute;
import dev.rollczi.litecommands.annotations.permission.Permission;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import panda.utilities.text.Formatter;

import java.time.Duration;
import java.util.UUID;

@Route(name = "combatlog", aliases = "combat")
@Command(name = "combatlog", aliases = "combat")
public class CombatCommand {

private final FightManager fightManager;
private final ConfigService configService;
private final NotificationAnnouncer announcer;
private final PluginConfig config;

public CombatCommand(FightManager fightManager, ConfigService configService, NotificationAnnouncer announcer, PluginConfig config) {
public CombatCommand(FightManager fightManager, NotificationAnnouncer announcer, PluginConfig config) {
this.fightManager = fightManager;
this.configService = configService;
this.announcer = announcer;
this.config = config;
}

@Execute(route = "status", required = 1)
@Execute(name = "status")
@Permission("eternalcombat.status")
void status(CommandSender sender, @Arg Player target) {
void status(@Context CommandSender sender, @Arg Player target) {
UUID targetUniqueId = target.getUniqueId();
PluginConfig.Messages messages = this.config.messages;

Expand All @@ -49,9 +46,9 @@ void status(CommandSender sender, @Arg Player target) {
: formatter.format(messages.admin.playerNotInCombat));
}

@Execute(route = "tag", required = 1)
@Execute(name = "tag")
@Permission("eternalcombat.tag")
void tag(CommandSender sender, @Arg Player target) {
void tag(@Context CommandSender sender, @Arg Player target) {
UUID targetUniqueId = target.getUniqueId();
Duration time = this.config.settings.combatDuration;

Expand All @@ -69,9 +66,9 @@ void tag(CommandSender sender, @Arg Player target) {
this.announcer.sendMessage(sender, format);
}

@Execute(route = "tag", required = 2)
@Execute(name = "tag")
@Permission("eternalcombat.tag")
void tagMultiple(CommandSender sender, @Arg Player firstTarget, @Arg Player secondTarget) {
void tagMultiple(@Context CommandSender sender, @Arg Player firstTarget, @Arg Player secondTarget) {
Duration combatTime = this.config.settings.combatDuration;
PluginConfig.Messages messages = this.config.messages;

Expand Down Expand Up @@ -104,17 +101,9 @@ void tagMultiple(CommandSender sender, @Arg Player firstTarget, @Arg Player seco
this.announcer.sendMessage(sender, format);
}

@Async
@Execute(route = "reload")
@Permission("eternalcombat.reload")
void execute(CommandSender player) {
this.configService.reload();
this.announcer.sendMessage(player, this.config.messages.admin.reload);
}

@Execute(route = "untag", required = 1)
@Execute(name = "untag")
@Permission("eternalcombat.untag")
void untag(Player sender, @Arg Player target) {
void untag(@Context Player sender, @Arg Player target) {
UUID targetUniqueId = target.getUniqueId();

if (!this.fightManager.isInCombat(targetUniqueId)) {
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.eternalcode.combat.command;

import com.eternalcode.combat.config.ConfigService;
import com.eternalcode.combat.notification.NotificationAnnouncer;
import com.google.common.base.Stopwatch;
import dev.rollczi.litecommands.annotations.async.Async;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Context;
import dev.rollczi.litecommands.annotations.execute.Execute;
import dev.rollczi.litecommands.annotations.permission.Permission;
import java.time.Duration;
import org.bukkit.command.CommandSender;
import panda.utilities.text.Formatter;

@Command(name = "combatlog", aliases = "combat")
@Permission("eternalcombat.reload")
public class ReloadCommand {

private static final String RELOAD_MESSAGE = "<b><gradient:#8a1212:#fc6b03>EternalCombat:</gradient></b> Reloaded EternalCombat in <color:#fce303>{TIME}ms!</color>";

private final ConfigService configService;
private final NotificationAnnouncer announcer;

public ReloadCommand(ConfigService configService, NotificationAnnouncer announcer) {
this.configService = configService;
this.announcer = announcer;
}

@Async
@Execute(name = "reload")
void execute(@Context CommandSender sender) {
Stopwatch stopwatch = Stopwatch.createStarted();
this.configService.reload();

Duration elapsed = stopwatch.elapsed();
Formatter format = new Formatter().register("{TIME}", elapsed.toMillis());
this.announcer.sendMessage(sender, format.format(RELOAD_MESSAGE));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.eternalcode.combat.command.handler;

import com.eternalcode.combat.config.implementation.PluginConfig;
import com.eternalcode.combat.notification.NotificationAnnouncer;
import dev.rollczi.litecommands.handler.result.ResultHandlerChain;
import dev.rollczi.litecommands.invalidusage.InvalidUsage;
import dev.rollczi.litecommands.invalidusage.InvalidUsageHandler;
import dev.rollczi.litecommands.invocation.Invocation;
import dev.rollczi.litecommands.schematic.Schematic;
import org.bukkit.command.CommandSender;
import panda.utilities.text.Formatter;

public class InvalidUsageHandlerImpl implements InvalidUsageHandler<CommandSender> {

private final PluginConfig config;
private final NotificationAnnouncer announcer;

public InvalidUsageHandlerImpl(PluginConfig config, NotificationAnnouncer announcer) {
this.config = config;
this.announcer = announcer;
}

@Override
public void handle(
Invocation<CommandSender> invocation,
InvalidUsage<CommandSender> commandSenderInvalidUsage,
ResultHandlerChain<CommandSender> resultHandlerChain
) {
Schematic schematic = commandSenderInvalidUsage.getSchematic();

for (String usage : schematic.all()) {
Formatter formatter = new Formatter()
.register("{USAGE}", usage);

this.announcer.sendMessage(invocation.sender(), formatter.format(this.config.messages.invalidCommandUsage));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.eternalcode.combat.command.handler;

import com.eternalcode.combat.config.implementation.PluginConfig;
import com.eternalcode.combat.notification.NotificationAnnouncer;
import dev.rollczi.litecommands.handler.result.ResultHandlerChain;
import dev.rollczi.litecommands.invocation.Invocation;
import dev.rollczi.litecommands.permission.MissingPermissions;
import dev.rollczi.litecommands.permission.MissingPermissionsHandler;
import org.bukkit.command.CommandSender;
import panda.utilities.text.Formatter;

public class MissingPermissionHandlerImpl implements MissingPermissionsHandler<CommandSender> {

private final PluginConfig config;
private final NotificationAnnouncer announcer;

public MissingPermissionHandlerImpl(PluginConfig config, NotificationAnnouncer announcer) {
this.config = config;
this.announcer = announcer;
}

@Override
public void handle(
Invocation<CommandSender> invocation,
MissingPermissions missingPermissions,
ResultHandlerChain<CommandSender> resultHandlerChain
) {
String joinedText = missingPermissions.asJoinedText();

Formatter formatter = new Formatter()
.register("{PERMISSION}", joinedText);

this.announcer.sendMessage(invocation.sender(), formatter.format(this.config.messages.noPermission));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,6 @@ public static class Messages extends OkaeriConfig {
public String cantEnterOnRegion = "&cYou can't enter this region during combat!";

public static class AdminMessages extends OkaeriConfig {
@Comment("# Message sent when the configuration is reloaded")
public String reload = "&aConfiguration has been successfully reloaded!";

@Comment("# Message sent when console tries to use a command that is only for players")
public String onlyForPlayers = "&cThis command is only available to players!";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.eternalcode.combat;

import com.eternalcode.combat.bridge.BridgeService;
import com.eternalcode.combat.command.InvalidUsage;
import com.eternalcode.combat.command.PermissionMessage;
import com.eternalcode.combat.command.CombatCommand;
import com.eternalcode.combat.command.handler.InvalidUsageHandlerImpl;
import com.eternalcode.combat.command.handler.MissingPermissionHandlerImpl;
import com.eternalcode.combat.config.ConfigService;
import com.eternalcode.combat.config.implementation.PluginConfig;
import com.eternalcode.combat.drop.DropController;
Expand Down Expand Up @@ -36,16 +37,14 @@
import com.eternalcode.commons.adventure.AdventureLegacyColorPreProcessor;
import com.google.common.base.Stopwatch;
import dev.rollczi.litecommands.LiteCommands;
import dev.rollczi.litecommands.bukkit.adventure.platform.LiteBukkitAdventurePlatformFactory;
import dev.rollczi.litecommands.bukkit.tools.BukkitOnlyPlayerContextual;
import dev.rollczi.litecommands.bukkit.tools.BukkitPlayerArgument;
import dev.rollczi.litecommands.bukkit.LiteBukkitFactory;
import dev.rollczi.litecommands.bukkit.LiteBukkitMessages;
import net.kyori.adventure.platform.AudienceProvider;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bstats.bukkit.Metrics;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
Expand Down Expand Up @@ -111,17 +110,19 @@ public void onEnable() {

NotificationAnnouncer notificationAnnouncer = new NotificationAnnouncer(this.audienceProvider, miniMessage);

this.liteCommands = LiteBukkitAdventurePlatformFactory.builder(server, FALLBACK_PREFIX, this.audienceProvider)
.argument(Player.class, new BukkitPlayerArgument<>(this.getServer(), this.pluginConfig.messages.playerNotFound))
.contextualBind(Player.class, new BukkitOnlyPlayerContextual<>(this.pluginConfig.messages.admin.onlyForPlayers))
this.liteCommands = LiteBukkitFactory.builder(FALLBACK_PREFIX, this, server)
.message(LiteBukkitMessages.PLAYER_NOT_FOUND, this.pluginConfig.messages.playerNotFound)
.message(LiteBukkitMessages.PLAYER_ONLY, this.pluginConfig.messages.admin.onlyForPlayers)

.invalidUsageHandler(new InvalidUsage(this.pluginConfig, notificationAnnouncer))
.permissionHandler(new PermissionMessage(this.pluginConfig, notificationAnnouncer))
.invalidUsage(new InvalidUsageHandlerImpl(this.pluginConfig, notificationAnnouncer))
.missingPermission(new MissingPermissionHandlerImpl(this.pluginConfig, notificationAnnouncer))

.commandInstance(new CombatCommand(this.fightManager, configService, notificationAnnouncer, this.pluginConfig))
.commandInstance(new TagOutCommand(this.fightTagOutService, notificationAnnouncer, this.pluginConfig))
.commands(
new CombatCommand(this.fightManager, notificationAnnouncer, this.pluginConfig),
new TagOutCommand(this.fightTagOutService, notificationAnnouncer, this.pluginConfig)
)

.register();
.build();

FightTask fightTask = new FightTask(server, this.pluginConfig, this.fightManager, fightBossBarService, notificationAnnouncer);
this.getServer().getScheduler().runTaskTimer(this, fightTask, 20L, 20L);
Expand Down Expand Up @@ -159,7 +160,7 @@ public void onDisable() {
EternalCombatProvider.deinitialize();

if (this.liteCommands != null) {
this.liteCommands.getPlatform().unregisterAll();
this.liteCommands.unregister();
}

if (this.audienceProvider != null) {
Expand Down

0 comments on commit 30948ac

Please sign in to comment.