Skip to content

Commit 9912870

Browse files
committedJul 31, 2020
2 parents 9407fe9 + e3cbb59 commit 9912870

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed
 

‎src/main/java/com/github/ucchyocean/lc3/bungee/MessageCommandBungee.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010

1111
import net.md_5.bungee.api.CommandSender;
1212
import net.md_5.bungee.api.plugin.Command;
13+
import net.md_5.bungee.api.plugin.TabExecutor;
1314

1415
/**
1516
* Tellコマンドの処理クラス(Bungee実装)
1617
* @author ucchy
1718
*/
18-
public class MessageCommandBungee extends Command {
19+
public class MessageCommandBungee extends Command implements TabExecutor {
1920

2021
private LunaChatMessageCommand command;
2122

@@ -41,4 +42,15 @@ public void execute(CommandSender sender, String[] args) {
4142
command.execute(ChannelMember.getChannelMember(sender), "m", args);
4243
}
4344

45+
/**
46+
* TABキー補完が実行されたときに呼び出されるメソッド
47+
* @param sender 実行者
48+
* @param args 実行されたコマンドの引数
49+
* @return 補完候補
50+
* @see net.md_5.bungee.api.plugin.TabExecutor#onTabComplete(net.md_5.bungee.api.CommandSender, java.lang.String[])
51+
*/
52+
@Override
53+
public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
54+
return command.onTabComplete(ChannelMember.getChannelMember(sender), "m", args);
55+
}
4456
}

‎src/main/java/com/github/ucchyocean/lc3/command/LunaChatMessageCommand.java

+36
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import com.github.ucchyocean.lc3.channel.Channel;
1212
import com.github.ucchyocean.lc3.member.ChannelMember;
1313

14+
import java.util.ArrayList;
15+
import java.util.List;
16+
1417
/**
1518
* 1:1チャット送信コマンド
1619
* @author ucchy
@@ -112,4 +115,37 @@ protected void sendTellMessage(ChannelMember inviter, String invitedName, String
112115
private void printUsage(ChannelMember sender, String label) {
113116
sender.sendMessage(Messages.usageMessage(label));
114117
}
118+
119+
/**
120+
* TABキー補完が実行されたときに呼び出されるメソッド
121+
* @param sender TABキー補完の実行者
122+
* @param label 実行されたコマンドのラベル
123+
* @param args 実行されたコマンドの引数
124+
* @return 補完候補
125+
*/
126+
public List<String> onTabComplete(ChannelMember sender, String label, String[] args) {
127+
if ( args.length == 1 ) {
128+
// プレイヤー名で補完する
129+
String arg = args[0].toLowerCase();
130+
return getListPlayerNames(arg);
131+
132+
}
133+
return new ArrayList<>();
134+
}
135+
136+
/**
137+
* 送信者以外のオンラインプレイヤーのうち、プレイヤー名が指定された文字列と前方一致するものをリストにして返す
138+
* @param pre 検索キー
139+
* @return プレイヤー名リスト
140+
*/
141+
private List<String> getListPlayerNames(String pre) {
142+
String prefix = pre.toLowerCase();
143+
List<String> items = new ArrayList<String>();
144+
for ( String pname : LunaChat.getPlugin().getOnlinePlayerNames() ) {
145+
if ( pname.toLowerCase().startsWith(prefix) ) {
146+
items.add(pname);
147+
}
148+
}
149+
return items;
150+
}
115151
}

0 commit comments

Comments
 (0)
Please sign in to comment.