- Баллы
- 66
- Имя в Minecraft
- _TheKrealisYT_
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
public void registerHandler(Player player) {
ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
@Override
public void channelRead(ChannelHandlerContext context, Object packet) throws Exception {
if (packet instanceof PacketPlayInSteerVehicle) {
if(player.getVehicle().getType() == EntityType.ARMOR_STAND) { //Тут проверки на то нужно ли управлять существом
PacketPlayInSteerVehicle info = (PacketPlayInSteerVehicle) packet;
boolean shift = info.d();
boolean space = info.c();
float forward = info.b();
float side = info.a();
Location playerloc = player.getLocation();
float pitch = playerloc.getPitch();
float yaw = playerloc.getYaw();
//Тут подсчёт движений и применение к сущности
return; //удалить пакет
}
}
super.channelRead(context, packet);
}
};
ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel.pipeline();
pipeline.addBefore("packet_handler", "armorstandsmover", channelDuplexHandler);
}
public void unregisterHandler(Player player) {
Channel channel = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel;
channel.eventLoop().submit(() -> {
channel.pipeline().remove("armorstandsmover");
return null;
});
}
@EventHandler
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
Bukkit.getOnlinePlayers().forEach(player -> {
registerHandler(player);
});
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
registerHandler(player);
}
@EventHandler
public void onDisable () {
Bukkit.getOnlinePlayers().forEach(player -> {
unregisterHandler(player);
});
}
@EventHandler
public void onQuit(PlayerQuitEvent event) {
Player player = event.getPlayer();
unregisterHandler(player);
}