Skip to content

Commit

Permalink
GH-187 Separate commands to a different classes
Browse files Browse the repository at this point in the history
  • Loading branch information
vLuckyyy committed Sep 27, 2024
1 parent 30948ac commit 22c5401
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 37 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.eternalcode.combat.command;

import com.eternalcode.combat.config.implementation.PluginConfig;
import com.eternalcode.combat.fight.FightManager;
import com.eternalcode.combat.notification.NotificationAnnouncer;
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 java.util.UUID;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import panda.utilities.text.Formatter;

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

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

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

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

Formatter formatter = new Formatter()
.register("{PLAYER}", target.getName());

this.announcer.sendMessage(sender, this.fightManager.isInCombat(targetUniqueId)
? formatter.format(messages.admin.playerInCombat)
: formatter.format(messages.admin.playerNotInCombat));
}
}
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
package com.eternalcode.combat.fight.tagout;
package com.eternalcode.combat.command;

import com.eternalcode.combat.config.implementation.PluginConfig;
import com.eternalcode.combat.fight.tagout.FightTagOutService;
import com.eternalcode.combat.notification.NotificationAnnouncer;
import com.eternalcode.combat.util.DurationUtil;
import dev.rollczi.litecommands.argument.Arg;
import dev.rollczi.litecommands.command.execute.Execute;
import dev.rollczi.litecommands.command.permission.Permission;
import dev.rollczi.litecommands.command.route.Route;
import org.bukkit.entity.Player;
import panda.utilities.text.Formatter;

import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.execute.Execute;
import dev.rollczi.litecommands.annotations.permission.Permission;
import java.time.Duration;
import java.time.Instant;
import java.util.UUID;
import org.bukkit.entity.Player;
import panda.utilities.text.Formatter;

@Route(name = "tagout", aliases = "tagimmunity")
public class TagOutCommand {
@Command(name = "tagout", aliases = "tagimmunity")
public class CombatTagImmunityCommand {

private final FightTagOutService fightTagOutService;
private final NotificationAnnouncer announcer;
private final PluginConfig config;

public TagOutCommand(FightTagOutService fightTagOutService, NotificationAnnouncer announcer, PluginConfig config) {
public CombatTagImmunityCommand(
FightTagOutService fightTagOutService,
NotificationAnnouncer announcer,
PluginConfig config
) {
this.fightTagOutService = fightTagOutService;
this.announcer = announcer;
this.config = config;
}

@Execute(required = 1)
@Execute
@Permission("eternalcombat.tagout")
void tagout(Player sender, @Arg Duration time) {
UUID targetUniqueId = sender.getUniqueId();
Expand All @@ -42,7 +46,7 @@ void tagout(Player sender, @Arg Duration time) {
this.announcer.sendMessage(sender, format);
}

@Execute(required = 2)
@Execute
@Permission("eternalcombat.tagout")
void tagout(Player sender, @Arg Player target, @Arg Duration time) {
UUID targetUniqueId = target.getUniqueId();
Expand All @@ -63,7 +67,7 @@ void tagout(Player sender, @Arg Player target, @Arg Duration time) {
this.announcer.sendMessage(target, playerTagOutFormat);
}

@Execute(route = "remove", required = 1)
@Execute(name = "remove")
@Permission("eternalcombat.tagout")
void untagout(Player sender, @Arg Player target) {
UUID targetUniqueId = target.getUniqueId();
Expand All @@ -81,7 +85,7 @@ void untagout(Player sender, @Arg Player target) {
this.announcer.sendMessage(target, this.config.messages.admin.playerTagOutOff);
}

@Execute(route = "remove", required = 0)
@Execute(name = "remove")
@Permission("eternalcombat.tagout")
void untagout(Player sender) {
UUID senderUniqueId = sender.getUniqueId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,32 +20,18 @@
import java.util.UUID;

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

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

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

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

Formatter formatter = new Formatter()
.register("{PLAYER}", target.getName());

this.announcer.sendMessage(sender, this.fightManager.isInCombat(targetUniqueId)
? formatter.format(messages.admin.playerInCombat)
: formatter.format(messages.admin.playerNotInCombat));
}

@Execute(name = "tag")
@Permission("eternalcombat.tag")
void tag(@Context CommandSender sender, @Arg Player target) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@

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

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) {
public CommandReloadCommand(ConfigService configService, NotificationAnnouncer announcer) {
this.configService = configService;
this.announcer = announcer;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.eternalcode.combat;

import com.eternalcode.combat.bridge.BridgeService;
import com.eternalcode.combat.command.CombatCommand;
import com.eternalcode.combat.command.CombatTagUntagCommand;
import com.eternalcode.combat.command.handler.InvalidUsageHandlerImpl;
import com.eternalcode.combat.command.handler.MissingPermissionHandlerImpl;
import com.eternalcode.combat.config.ConfigService;
Expand All @@ -27,7 +27,7 @@
import com.eternalcode.combat.fight.pearl.FightPearlManager;
import com.eternalcode.combat.fight.tagout.FightTagOutController;
import com.eternalcode.combat.fight.tagout.FightTagOutService;
import com.eternalcode.combat.fight.tagout.TagOutCommand;
import com.eternalcode.combat.command.CombatTagImmunityCommand;
import com.eternalcode.combat.notification.NotificationAnnouncer;
import com.eternalcode.combat.region.RegionController;
import com.eternalcode.combat.region.RegionProvider;
Expand Down Expand Up @@ -118,8 +118,8 @@ public void onEnable() {
.missingPermission(new MissingPermissionHandlerImpl(this.pluginConfig, notificationAnnouncer))

.commands(
new CombatCommand(this.fightManager, notificationAnnouncer, this.pluginConfig),
new TagOutCommand(this.fightTagOutService, notificationAnnouncer, this.pluginConfig)
new CombatTagUntagCommand(this.fightManager, notificationAnnouncer, this.pluginConfig),
new CombatTagImmunityCommand(this.fightTagOutService, notificationAnnouncer, this.pluginConfig)
)

.build();
Expand Down

0 comments on commit 22c5401

Please sign in to comment.