Skip to content

Commit

Permalink
Add /bm view command
Browse files Browse the repository at this point in the history
  • Loading branch information
jyhsu2000 committed Feb 19, 2024
1 parent dad1914 commit 673d421
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public BannerMakerCommand(BannerMaker bm) {
registerSubCommand("help", new HelpCommand(bm));
registerSubCommand("see", new SeeCommand(bm));
registerSubCommand("hand", new HandCommand(bm));
registerSubCommand("view", new ViewCommand(bm));
registerSubCommand("reload", new ReloadCommand(bm));
}

Expand Down
48 changes: 48 additions & 0 deletions src/main/java/club/kid7/bannermaker/command/ViewCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package club.kid7.bannermaker.command;

import club.kid7.bannermaker.BannerMaker;
import club.kid7.bannermaker.util.BannerUtil;
import club.kid7.bannermaker.util.InventoryMenuUtil;
import club.kid7.bannermaker.util.MessageUtil;
import club.kid7.pluginutilities.command.CommandComponent;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

public class ViewCommand extends CommandComponent {
//名稱
private static final String name = "View";
//介紹
private static final String description = "View banner info of the banner command";
//權限
private static final String permission = "BannerMaker.view";
//使用方法
private static final String usage = "/bm view <bannerString>";
//僅能由玩家執行
private static final boolean onlyFromPlayer = true;

public ViewCommand(BannerMaker bm) {
super(bm, name, description, permission, usage, onlyFromPlayer);
}

@Override
public boolean executeCommand(CommandSender sender, Command command, String label, String[] args) {
// TODO: 將訊息新增至語系檔
Player player = (Player) sender;
if (args.length != 1) {
player.sendMessage(MessageUtil.format(true, "&cUsage: " + usage));
return true;
}
String bannerString = args[0];
try {
ItemStack banner = BannerUtil.deserialize(bannerString);
//顯示旗幟
InventoryMenuUtil.showBannerInfo(player, banner);
} catch (Exception e) {
player.sendMessage(MessageUtil.format(true, "&cInvalid banner string"));
return true;
}
return true;
}
}
18 changes: 18 additions & 0 deletions src/main/java/club/kid7/bannermaker/customMenu/BannerInfoMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@
import club.kid7.pluginutilities.gui.CustomGUIManager;
import club.kid7.pluginutilities.gui.CustomGUIMenu;
import club.kid7.pluginutilities.kitemstack.KItemStack;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.chat.hover.content.Text;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
Expand Down Expand Up @@ -194,6 +198,20 @@ public CustomGUIInventory build(final Player player) {
CustomGUIManager.open(player, CreateBannerMenu.class);
}));

// 生成指令
if (player.hasPermission("BannerMaker.view")) {
// TODO: 新增至語系檔
KItemStack btnGenerateCommand = new KItemStack(Material.COMMAND_BLOCK).name(MessageUtil.format("&9Get share command"));
menu.setItem(53, btnGenerateCommand, new ClickAction(ClickType.LEFT, event -> {
String bannerString = BannerUtil.serialize(banner);
TextComponent msg = new TextComponent("[Click here to get command in chat for copy]");
msg.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("Get command for copy")));
msg.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bm view " + bannerString));
player.spigot().sendMessage(msg);
player.closeInventory();
}));
}

//返回
KItemStack btnBackToMenu = new KItemStack(Material.RED_WOOL).name(MessageUtil.format("&c" + tl("gui.back")));
menu.setItem(45, btnBackToMenu, new ClickAction(ClickType.LEFT, event -> {
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ permissions:
BannerMaker.getBanner: true
BannerMaker.hand: true
BannerMaker.see: true
BannerMaker.view: true
BannerMaker.reload: true
BannerMaker.use:
description: Permission of using BannerMaker
Expand All @@ -36,6 +37,9 @@ permissions:
BannerMaker.see:
description: Show banner info of the banner you're looking at
default: op
BannerMaker.view:
description: View banner info of the banner command
default: op
BannerMaker.reload:
description: Permission to reload all config
default: op

0 comments on commit 673d421

Please sign in to comment.