Skip to content

Commit

Permalink
duel accept & deny
Browse files Browse the repository at this point in the history
  • Loading branch information
Rattlyy committed Mar 9, 2022
1 parent b38cf76 commit 1812ed9
Show file tree
Hide file tree
Showing 7 changed files with 212 additions and 6 deletions.
8 changes: 8 additions & 0 deletions src/main/java/it/rattly/duels/Duels.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package it.rattly.duels;

import it.rattly.duels.commands.CommandManager;
import it.rattly.duels.database.DatabaseProvider;
import it.rattly.duels.listeners.ListenerRegistrator;
import it.rattly.duels.player.PlayerManager;
import it.rattly.duels.plugin.DuelsPlugin;
import it.rattly.duels.utils.Scheduler;
Expand All @@ -21,6 +23,8 @@ public class Duels implements Toggleable {
// Toggleables
private final DatabaseProvider databaseProvider;
private final PlayerManager playerManager;
private final CommandManager commandManager;
private final ListenerRegistrator listenerRegistrator;

// Latch
private final CountDownLatch enableLatch = new CountDownLatch(1);
Expand All @@ -29,14 +33,18 @@ public Duels(DuelsPlugin plugin) throws IllegalStateException {
this.plugin = plugin;
this.scheduler = new Scheduler(plugin);

this.commandManager = new CommandManager(this);
this.databaseProvider = new DatabaseProvider(this, plugin.getConfig());
this.playerManager = new PlayerManager(this);
this.listenerRegistrator = new ListenerRegistrator(this);
}

@Override
public void enable() throws Exception {
databaseProvider.enable();
playerManager.enable();
commandManager.enable();
listenerRegistrator.enable();

enableLatch.countDown();
}
Expand Down
26 changes: 26 additions & 0 deletions src/main/java/it/rattly/duels/commands/CommandManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package it.rattly.duels.commands;

import it.rattly.duels.Duels;
import it.rattly.duels.Toggleable;
import it.rattly.duels.commands.impl.DuelAcceptCommand;
import it.rattly.duels.commands.impl.DuelCommand;
import it.rattly.duels.commands.impl.DuelDenyCommand;

public record CommandManager(Duels duels) implements Toggleable {
@Override
public void enable() {
duels.getLogger().info("Registering commands...");

int commands = registerCommands(
new DuelCommand(duels),
new DuelAcceptCommand(duels),
new DuelDenyCommand(duels)
);

duels.getLogger().info(() -> commands + " listeners registered!");
}

private int registerCommands(AbstractCommand... commands) {
return commands.length;
}
}
76 changes: 76 additions & 0 deletions src/main/java/it/rattly/duels/commands/impl/DuelAcceptCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package it.rattly.duels.commands.impl;

import it.rattly.duels.Duels;
import it.rattly.duels.commands.AbstractCommand;
import it.rattly.duels.player.DuelsPlayer;
import it.rattly.duels.utils.Palette;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

import static net.kyori.adventure.text.Component.text;

public class DuelAcceptCommand extends AbstractCommand {
public DuelAcceptCommand(Duels duels) {
super(duels, "duelaccept");
}

@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!(sender instanceof Player player)) {
sender.sendMessage(
text().append(
text("You can't use this command from console.")
).color(Palette.ERROR)
);

return true;
}

if (args.length < 1) {
sender.sendMessage(
text().append(
text("Usage: /duelaccept <name>")
).color(Palette.ERROR)
);

return true;
}

Player target = Bukkit.getPlayer(args[0]);
if (target == null) {
sender.sendMessage(
text().append(
text("The person you mentioned is offline or non-existant.")
).color(Palette.ERROR)
);

return true;
}

DuelsPlayer duelsPlayer = duels.getPlayerManager().getPlayer(player);
if (duelsPlayer.isInvitedBy(target.getUniqueId())) {
duelsPlayer.acceptInvite(duelsPlayer.getInviteBy(target.getUniqueId()).get());
} else {
sender.sendMessage(
text().append(
text("You aren't invited by that player.")
).color(Palette.ERROR)
);

return true;
}

return false;
}

@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
return null; //TODO
}
}
4 changes: 2 additions & 2 deletions src/main/java/it/rattly/duels/commands/impl/DuelCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import static net.kyori.adventure.text.Component.text;

public class DuelCommand extends AbstractCommand {
protected DuelCommand(Duels duels) {
public DuelCommand(Duels duels) {
super(duels, "duel");
}

Expand Down Expand Up @@ -58,7 +58,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
if (duelsTarget.isInvitedBy(player.getUniqueId())) {
sender.sendMessage(
text().append(
text("You already invited this person.")
text("You have already invited this person.")
).color(Palette.ERROR)
);

Expand Down
76 changes: 76 additions & 0 deletions src/main/java/it/rattly/duels/commands/impl/DuelDenyCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package it.rattly.duels.commands.impl;

import it.rattly.duels.Duels;
import it.rattly.duels.commands.AbstractCommand;
import it.rattly.duels.player.DuelsPlayer;
import it.rattly.duels.utils.Palette;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

import static net.kyori.adventure.text.Component.text;

public class DuelDenyCommand extends AbstractCommand {
public DuelDenyCommand(Duels duels) {
super(duels, "dueldeny");
}

@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!(sender instanceof Player player)) {
sender.sendMessage(
text().append(
text("You can't use this command from console.")
).color(Palette.ERROR)
);

return true;
}

if (args.length < 1) {
sender.sendMessage(
text().append(
text("Usage: /duelaccept <name>")
).color(Palette.ERROR)
);

return true;
}

Player target = Bukkit.getPlayer(args[0]);
if (target == null) {
sender.sendMessage(
text().append(
text("The person you mentioned is offline or non-existant.")
).color(Palette.ERROR)
);

return true;
}

DuelsPlayer duelsPlayer = duels.getPlayerManager().getPlayer(player);
if (duelsPlayer.isInvitedBy(target.getUniqueId())) {
duelsPlayer.denyInvite(duelsPlayer.getInviteBy(target.getUniqueId()).get());
} else {
sender.sendMessage(
text().append(
text("You aren't invited by that player.")
).color(Palette.ERROR)
);

return true;
}

return false;
}

@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
return null; //TODO
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@

import it.rattly.duels.Duels;
import it.rattly.duels.Toggleable;
import it.rattly.duels.listeners.impl.AccessListener;
import org.bukkit.event.Listener;

public record ListenerRegistrator(Duels plugin) implements Toggleable {

@Override
public void enable() throws IllegalStateException {
plugin.getLogger().info("Adding and registering listeners...");
plugin.getLogger().info("Registering listeners...");

int listeners = registerListeners(

new AccessListener(plugin)
);

plugin.getLogger().info(() -> listeners + " listeners registered!");
Expand Down
23 changes: 21 additions & 2 deletions src/main/java/it/rattly/duels/player/DuelsPlayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;

import java.sql.Connection;
import java.sql.PreparedStatement;
Expand Down Expand Up @@ -43,7 +43,7 @@ public Optional<Invite> getInviteBy(UUID sender) {
}

public boolean isInvitedBy(UUID uuid) {
return invites.containsKey(uuid);
return getInviteBy(uuid).isPresent();
}

public void invite(Player sender) {
Expand Down Expand Up @@ -83,6 +83,25 @@ public void invite(Player sender) {
}, 20 * 30));
}

public void denyInvite(Invite invite) {
invite.getCancelTask().cancel();
Player sender = Bukkit.getPlayer(invite.getSender());

if (sender != null && sender.isOnline()) {
sender.sendMessage(text().append(
text("Your invite to "),
text(player.getName()).decorate(TextDecoration.BOLD),
text(" has been rejected.")
).color(Palette.ERROR));
}

invites.remove(invite.getSender());
}

public void acceptInvite(Invite invite) {
//TODO fight magic
}

public void setWins(int wins) {
data.setWins(wins);

Expand Down

0 comments on commit 1812ed9

Please sign in to comment.