Skip to content

Commit

Permalink
Melhorias diversas de comandos (#15)
Browse files Browse the repository at this point in the history
- Resolvido problema com mensagem de erro ao usar /chaves de forma errada.
- Resolvido problema ao tentar transferir chaves com valor total das chaves.
- Resolvido problema com placeholders de vários comandos
  • Loading branch information
SrBedrock authored Mar 6, 2024
1 parent a35f040 commit fa0d52b
Showing 10 changed files with 116 additions and 86 deletions.
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import net.kyori.adventure.audience.Audience;
import us.crazycrew.crazycrates.api.enums.types.KeyType;

import java.util.UUID;

/**
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
import com.badbones69.crazycrates.common.config.ConfigManager;
import us.crazycrew.crazycrates.api.CrazyCratesService;
import us.crazycrew.crazycrates.api.ICrazyCrates;

import java.io.File;

public abstract class CrazyCratesPlugin implements ICrazyCrates {
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
import ch.jalu.configme.resource.YamlFileResourceOptions;
import com.badbones69.crazycrates.common.config.types.ConfigKeys;
import com.badbones69.crazycrates.common.config.types.MessageKeys;

import java.io.File;

public class ConfigManager {
Original file line number Diff line number Diff line change
@@ -4,7 +4,9 @@
import ch.jalu.configme.SettingsHolder;
import ch.jalu.configme.configurationdata.CommentsConfiguration;
import ch.jalu.configme.properties.Property;

import java.util.List;

import static ch.jalu.configme.properties.PropertyInitializer.newListProperty;
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;

Original file line number Diff line number Diff line change
@@ -4,7 +4,9 @@
import ch.jalu.configme.SettingsHolder;
import ch.jalu.configme.configurationdata.CommentsConfiguration;
import ch.jalu.configme.properties.Property;

import java.util.List;

import static ch.jalu.configme.properties.PropertyInitializer.newListProperty;
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;

@@ -181,4 +183,7 @@ public void registerComments(CommentsConfiguration conf) {
"",
"&7You can find a list of permissions @ &ehttps://docs.crazycrew.us/crazycrates/info/commands/permissions"
));

public static final Property<String> cleared_player_keys = newProperty("Messages.Cleared-Player-Keys", "%prefix%&cYou have cleared &e%amount%x %key% &cfrom &6%player%&c.");

}
Original file line number Diff line number Diff line change
@@ -75,7 +75,8 @@ public enum Messages {
other_player_no_keys_header(MessageKeys.other_player_header, true),
per_crate(MessageKeys.per_crate),
help(MessageKeys.help, true),
admin_help(MessageKeys.admin_help, true);
admin_help(MessageKeys.admin_help, true),
cleared_player_keys(MessageKeys.cleared_player_keys);

private Property<String> property;

Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@
import com.badbones69.crazycrates.tasks.crates.effects.SoundEffect;
import com.badbones69.crazycrates.tasks.crates.other.AbstractCrateManager;
import com.badbones69.crazycrates.tasks.crates.other.CosmicCrateManager;
import de.tr7zw.changeme.nbtapi.NBTItem;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.SoundCategory;
Original file line number Diff line number Diff line change
@@ -3,7 +3,9 @@
import com.badbones69.crazycrates.api.enums.Messages;
import com.badbones69.crazycrates.api.utils.MsgUtils;
import com.badbones69.crazycrates.commands.MessageManager;
import dev.triumphteam.cmd.core.message.ContextualKey;
import dev.triumphteam.cmd.core.message.MessageKey;
import dev.triumphteam.cmd.core.message.context.MessageContext;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
@@ -14,7 +16,6 @@ private String getContext(String subCommand, String commandOrder) {
String correctUsage = null;

switch (subCommand) {
case "transfer" -> correctUsage = commandOrder + "<crate-name> <player-name> <amount>";
case "debug", "open", "set" -> correctUsage = commandOrder + "<crate-name>";
case "tp" -> correctUsage = commandOrder + "<id>";
case "additem" -> correctUsage = commandOrder + "<crate-name> <prize-number> <chance> [tier]";
@@ -31,68 +32,48 @@ private String getContext(String subCommand, String commandOrder) {

@Override
public void build() {
getBukkitCommandManager().registerMessage(MessageKey.TOO_MANY_ARGUMENTS, (sender, context) -> {
String command = context.getCommand();
String subCommand = context.getSubCommand();

String commandOrder = "/" + command + " " + subCommand + " ";

String correctUsage = getCorrectUsage(command, subCommand, commandOrder);

if (!correctUsage.isEmpty()) {
send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage).toString());
}

if (correctUsage != null) {
if (sender instanceof Player player) {
send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage, player));
} else {
send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage));
}
}
});

getBukkitCommandManager().registerMessage(MessageKey.NOT_ENOUGH_ARGUMENTS, (sender, context) -> {
String command = context.getCommand();
String subCommand = context.getSubCommand();
for (var messageKey : ContextualKey.getRegisteredKeys()) {
getBukkitCommandManager().registerMessage(messageKey, this::sendCorrectUsage);
}
getBukkitCommandManager().registerMessage(MessageKey.UNKNOWN_COMMAND, (sender, context) -> sendUnknownCommand(sender));
}

String commandOrder = "/" + command + " " + subCommand + " ";
private void sendCorrectUsage(CommandSender sender, MessageContext context) {
String command = context.getCommand();
String subCommand = context.getSubCommand();

String correctUsage = getCorrectUsage(command, subCommand, commandOrder);
String commandOrder = "/" + command + " " + subCommand + " ";

if (!correctUsage.isEmpty()) {
send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage).toString());
}
String correctUsage = getCorrectUsage(command, subCommand, commandOrder);

if (correctUsage != null) {
if (sender instanceof Player player) {
send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage, player));
} else {
send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage));
}
}
});
if (sender instanceof Player player) {
this.send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage, player));
} else {
this.send(sender, Messages.correct_usage.getMessage("%usage%", correctUsage));
}
}

getBukkitCommandManager().registerMessage(MessageKey.UNKNOWN_COMMAND, (sender, context) -> {
if (sender instanceof Player player) {
send(sender, Messages.unknown_command.getMessage(player));
} else {
send(sender, Messages.unknown_command.getMessage());
}
});
private void sendUnknownCommand(@NotNull CommandSender sender) {
if (sender instanceof Player player) {
this.send(sender, Messages.unknown_command.getMessage(player));
} else {
this.send(sender, Messages.unknown_command.getMessage());
}
}

private String getCorrectUsage(@NotNull String command, String subCommand, String commandOrder) {
String correctUsage = "";

switch (command) {
case "crates" -> correctUsage = getContext(subCommand, commandOrder);
case "crates" -> {
return getContext(subCommand, commandOrder);
}
case "chave" -> {
if (subCommand.equals("ver")) {
correctUsage = commandOrder + " [jogador]";
return commandOrder + "[jogador]";
}
if (subCommand.equals("transferir")) {
correctUsage = commandOrder + " <caixa> <jogador> <quantidade>";
return commandOrder + "<chave> <jogador> <quantidade>";
}
}
}
Original file line number Diff line number Diff line change
@@ -15,10 +15,10 @@
import dev.triumphteam.cmd.core.annotation.Command;
import dev.triumphteam.cmd.core.annotation.Default;
import dev.triumphteam.cmd.core.annotation.Description;
import dev.triumphteam.cmd.core.annotation.Optional;
import dev.triumphteam.cmd.core.annotation.SubCommand;
import dev.triumphteam.cmd.core.annotation.Suggestion;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
@@ -58,9 +58,14 @@ public void viewPersonal(@NotNull Player player) {

@SubCommand("ver")
@Permission("crazycrates.command.player.key.others")
public void viewOthers(CommandSender sender, @Suggestion("online-players") Player target) {
if (target == sender) {
viewPersonal(target);
public void viewOthers(CommandSender sender, @Optional @Suggestion("online-players") Player target) {
if (target == sender || target == null) {
if (!(sender instanceof Player player)) {
sender.sendMessage(Messages.must_be_a_player.getMessage());
return;
}

viewPersonal(player);
return;
}

@@ -69,9 +74,9 @@ public void viewOthers(CommandSender sender, @Suggestion("online-players") Playe
placeholders.put("%player%", target.getName());
placeholders.put("%crates_opened%", String.valueOf(this.userManager.getTotalCratesOpened(target.getUniqueId())));

String header = Messages.other_player_no_keys_header.getMessage(placeholders, sender instanceof Player ? (Player) sender : null);
String header = Messages.other_player_no_keys_header.getMessage(placeholders, sender instanceof Player player ? player : null);

String otherPlayer = Messages.other_player_no_keys.getMessage("%player%", target.getName(), sender instanceof Player ? (Player) sender : null);
String otherPlayer = Messages.other_player_no_keys.getMessage("%player%", target.getName(), sender instanceof Player player ? player : null);

getKeys(target, sender, header, otherPlayer);
}
@@ -84,21 +89,25 @@ public void onPlayerTransferKeys(Player sender, @Suggestion("crates") String cra
// If the crate is menu or null. we return
if (crate == null || crate.getCrateType() == CrateType.menu) {
sender.sendMessage(Messages.not_a_crate.getMessage("%crate%", crateName, sender));

return;
}

// If it's the same player, we return.
if (player.getUniqueId().toString().equalsIgnoreCase(sender.getUniqueId().toString())) {
sender.sendMessage(Messages.same_player.getMessage(sender));

return;
}

// If they don't have enough keys, we return.
if (this.userManager.getVirtualKeys(sender.getUniqueId(), crate.getName()) <= amount) {
sender.sendMessage(Messages.transfer_not_enough_keys.getMessage("%crate%", crate.getName(), sender));
Map<String, String> placeholders = new HashMap<>();

placeholders.put("%crate%", crate.getName());
placeholders.put("%key%", crate.getKeyName());
placeholders.put("%amount%", String.valueOf(amount));
placeholders.put("%player%", player.getName());

// If they don't have enough keys, we return.
if (this.userManager.getVirtualKeys(sender.getUniqueId(), crate.getName()) < amount) {
sender.sendMessage(Messages.transfer_not_enough_keys.getMessage(placeholders, sender));
return;
}

@@ -111,18 +120,11 @@ public void onPlayerTransferKeys(Player sender, @Suggestion("crates") String cra
this.userManager.takeKeys(amount, sender.getUniqueId(), crate.getName(), KeyType.virtual_key, false);
this.userManager.addKeys(amount, player.getUniqueId(), crate.getName(), KeyType.virtual_key);

Map<String, String> placeholders = new HashMap<>();

placeholders.put("%crate%", crate.getName());
placeholders.put("%key%", crate.getKeyName());
placeholders.put("%amount%", String.valueOf(amount));
placeholders.put("%player%", player.getName());

sender.sendMessage(Messages.transfer_sent_keys.getMessage(placeholders, sender));

placeholders.put("%player%", sender.getName());

player.sendMessage(Messages.transfer_received_keys.getMessage("%player%", sender.getName(), player));
player.sendMessage(Messages.transfer_received_keys.getMessage(placeholders, player));

EventManager.logKeyEvent(player, sender, crate, KeyType.virtual_key, EventManager.KeyEventType.KEY_EVENT_RECEIVED, this.config.getProperty(ConfigKeys.log_to_file), this.config.getProperty(ConfigKeys.log_to_console));
}
Loading

0 comments on commit fa0d52b

Please sign in to comment.