Interactionを右クリックした時、Interactionのタグに設定したコマンドを実行するプラグイン
public class interaction_clicked implements Listener {
@EventHandler
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
Player player = event.getPlayer();
Entity clickedEntity = event.getRightClicked();
if (clickedEntity instanceof Interaction) {
Interaction interaction = (Interaction) clickedEntity;
for (String tag : interaction.getScoreboardTags()) {
if (tag.startsWith("+2F")) {
String command = tag.replace("+2F", "")
.replace("+20", " ")
.replace("+21", "!")
.replace("+22", "\"")
.replace("+23", "#")
.replace("+27", "'")
.replace("+2B", "+")
.replace("+2C", ",")
.replace("+2D", "-")
.replace("+2E", ".")
.replace("+3A", ":")
.replace("+3D", "=")
.replace("+40", "@")
.replace("+5B", "[")
.replace("+5D", "]")
.replace("+5F", "_")
.replace("+7B", "{")
.replace("+7D", "}");
Bukkit.dispatchCommand(player, command);
//player.sendMessage(command);
break;
}
}
}
}
}
/give @s diamond 1
上記、Interactionにコマンドを登録する場合、
タグに「+2Fgive+20+40s+20diamond+201」を追加すると
Interactionを右クリックした時にダイヤモンドが1つ手に入る。
基本的に、+2F=「/」から始まるTagsをコマンドとして処理する。
forをbreakしているのはコマンドの順番を制御できていないので
コマンド1つ分を処理してループを抜けるようにしている。
「+〇〇」は、UTF-8のコード