私は、CloudSystemをコーディネートし、すべてのデータをクラウドに保存しています。私の問題:プレイヤーが参加し、イベントAsyncPlayerPreLoginが起動し、クラウドにパケットを送信します。 playerdataが必要です。データが到着するまで、イベントスレッドをスリープ状態にするにはどうしたらいいですか?データは別のクラスに到着するので、私はpostData(PlayerData)のようなメソッドを呼び出すことができる必要があります。私はその私の希望Javaスレッドを待機させる
public class SpigotHandler extends SimpleChannelInboundHandler<Object> {
@Override
protected void channelRead0(final ChannelHandlerContext channelHandlerContext, final Object o) throws Exception {
final PacketHolder initPacket = (PacketHolder) o;
if (initPacket.getType().equals(PacketType.PLAYER_MESSAGE)) {
final PlayerSendMessagePacket packet = (PlayerSendMessagePacket) initPacket.getValue();
Bukkit.getPlayer(packet.getTarget()).sendRawMessage(packet.getMessage());
} else if (initPacket.getType().equals(PacketType.PLAYER_INVENTORY)) {
final PlayerOpenInventoryPacket packet2 = (PlayerOpenInventoryPacket) initPacket.getValue();
final Inventory inventory = Bukkit.createInventory((InventoryHolder) null, packet2.getInventorySize(),
packet2.getTitle());
for (final int slot : packet2.getItems().keySet()) {
final CloudInventoryBuildItemEvent event = new CloudInventoryBuildItemEvent(inventory,
packet2.getItems().get(slot));
Bukkit.getPluginManager().callEvent((Event) event);
if (event.getResult() != null) {
inventory.setItem(slot, event.getResult());
}
}
Bukkit.getPlayer(packet2.getTarget()).openInventory(inventory);
} else if (initPacket.getType().equals(PacketType.STOP_SERVER)) {
Bukkit.shutdown();
} else if (initPacket.getType().equals(PacketType.PLUGIN_PAYLOAD)) {
final PluginPacket packet = (PluginPacket) initPacket.getValue();
SpigotConnector.getInstance().getPluginPacketManager().callrecivers(packet.getChannel(),
channelHandlerContext, packet);
} else if (initPacket.getType().equals(PacketType.PLAYER_LOGIN_RESPONSE)) {
}
}
}
:
public class PlayerPreLoginListener implements Listener{
@EventHandler
public void onPreLogin(AsyncPlayerPreLoginEvent e) {
}
}
Packethandler(PlayerDataが到着する):イベントはこれが呼ばれるまで待ってから、 は、他のハンドラに
のEventListenerをdispachting継続することがあります問題は理解できます。
イベントはNettyのものではありません。bukkit https://github.com/Bukkit/Bukkitのイベントですので、スケジュールはできません。私はこのイベントをスケジュールしています。 – Starmixcraft