Bungee -> Bungee에서 플러그인 메시지를 보내서 정보를 요청하면 BungeeCord/Bukkit 플러그인 메시지 채널을 사용하여 플레이어에 대한 데이터 (특히 어떤 채팅 채널이 있는지)를 확인하려고합니다. 여기 내 문제가 있습니다. (플러그인 메시지의 형태로) BungeeCord 서버의 응답에 대해을 기다린 다음 수신되면 사용하십시오. Bukkit Plugin Messaging
나는 튜토리얼 here을 사용하지만, 플러그인 메시지가 번지 서버에서 받았습니다 때onPluginMessageReceived
그렇게
notifyAll
가 발생하지 않습니다, 발생하지 않기 때문에 서버는 충돌합니다. 여기
는 정보 요청에 대한 코드를입니다 :
public synchronized Object get(Player p, String... data) {
sendToBungeeCord(p,"get",data);
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
return obj.get(p);
}
을 그리고 여기에 플러그인 메시지에 대한 코드를 받았습니다되고있다 :
@Override
public synchronized void onPluginMessageReceived(String channel, Player player, byte[] message) {
player.sendMessage("return");
if (channel.equals("BungeeCord")) {
ByteArrayDataInput in = ByteStreams.newDataInput(message);
String action = in.readUTF();
if (action.equals("get")) {
String dataType = in.readUTF();
String id = in.readUTF();
if (dataType.equals("channel")) {
obj.put(player,id);
this.notifyAll();
}
} else if (action.equals("test")) {
player.sendMessage(in.readUTF());
}
}
}
할 수있는 방법이 있다면 wait
없이 휴식을 보내고 (응답을 기다리는 동안 플러그인의 나머지 부분을 실행할 수 있습니다.) 제가 어떻게 그것에 대해 이해할 수있게 도와주세요.