Skip to content

Commit

Permalink
feat: /ftbranks list_all_ranks output now clickable
Browse files Browse the repository at this point in the history
Clicking a rank name runs '/ftbranks show_rank <rank>'
Also added hover text showing the rank condition, if any
  • Loading branch information
desht committed May 10, 2024
1 parent 2506022 commit 17eecee
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions common/src/main/java/dev/ftb/mods/ftbranks/FTBRanksCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.GameProfileArgument;
import net.minecraft.nbt.StringTag;
import net.minecraft.network.chat.ClickEvent;
import net.minecraft.network.chat.ClickEvent.Action;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.HoverEvent;
import net.minecraft.network.chat.Style;
import net.minecraft.server.level.ServerPlayer;

import java.io.IOException;
Expand Down Expand Up @@ -176,11 +180,24 @@ private static int refreshReadme(CommandSourceStack source) {
return 1;
}

private static Component makeRankNameClicky(Rank rank) {
boolean isDef = rank.getCondition().isDefaultCondition();
return Component.literal(rank.getName())
.withStyle(isDef ? ChatFormatting.AQUA : ChatFormatting.YELLOW)
.withStyle(Style.EMPTY
.withClickEvent(new ClickEvent(Action.RUN_COMMAND, "/ftbranks show_rank " + rank.getId()))
.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, isDef ?
Component.literal("Players must be explicitly added to this rank\nwith '/ftbranks add <player> <rank>'").withStyle(ChatFormatting.GRAY, ChatFormatting.ITALIC) :
Component.literal("Rank condition: " + rank.getCondition().asString()).withStyle(ChatFormatting.GRAY, ChatFormatting.ITALIC))
)
);
}

private static int listAllRanks(CommandSourceStack source) {
source.sendSuccess(() -> Component.literal("Ranks:"), false);

for (Rank rank : FTBRanksAPIImpl.manager.getAllRanks()) {
source.sendSuccess(() -> Component.literal("- " + rank.getName()).withStyle(rank.getCondition().isDefaultCondition() ? ChatFormatting.AQUA : ChatFormatting.YELLOW), false);
source.sendSuccess(() -> Component.literal("- ").append(makeRankNameClicky(rank)), false);
}

return 1;
Expand Down Expand Up @@ -234,7 +251,7 @@ private static int listRanksOf(CommandSourceStack source, ServerPlayer player) {

for (Rank rank : FTBRanksAPIImpl.manager.getAllRanks()) {
if (rank.isActive(player)) {
source.sendSuccess(() -> Component.literal("- " + rank.getName()).withStyle(rank.getCondition().isDefaultCondition() ? ChatFormatting.AQUA : ChatFormatting.YELLOW), false);
source.sendSuccess(() -> Component.literal("- ").append(makeRankNameClicky(rank)), false);
}
}

Expand Down

0 comments on commit 17eecee

Please sign in to comment.