1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Перемещение игрока в Velocity и проблема ClassNotFoundException в Adventure

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ken12345, 20 май 2023.

Статус темы:
Закрыта.
  1. Автор темы
    Ken12345

    Ken12345 Активный участник Пользователь

    Баллы:
    61
    1) Наткнулся на тему годовалой давности и постарался сделать всё как там, но почему-то игрока не перемещает на другой сервер. При этом в консоли ошибок не возникает.
    Вместо "BungeeCord" пробовал также "bungeecord:main" и "velocity:main".
    Код:
    public OnJoin (Prime manager) {
            this.plugin = manager;
            Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
        }
    
        @EventHandler
        public void OnPlayerJoin (PlayerJoinEvent e) throws SQLException {
            e.setJoinMessage("");
    
            Player player = e.getPlayer();
            String playerName = player.getName();
            World world;
    
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF("hubsandlobbies");
            player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray());
    В конфиге Velocity данный сервер зарегистрирован.
    Screenshot_5.png
    Может ли быть проблема в том, что сервер локальный?

    2) При использовании Adventure в своем плагине при запуске сервера вылезает ошибка
    java.lang.NoClassDefFoundError: net/kyori/adventure/platform/bukkit/BukkitAudiences ...
    Caused by: java.lang.ClassNotFoundException: net.kyori.adventure.platform.bukkit.BukkitAudiences, хотя в главном классе всё вроде не сильно отличается от официального "Usage".
    Код:
    import com.mysql.jdbc.Driver;
    import net.kyori.adventure.platform.bukkit.BukkitAudiences;
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    import java.io.File;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Collection;
    import java.util.Objects;
    
    public final class Prime extends JavaPlugin {
    
        private static JavaPlugin plugin;
        private static BukkitAudiences adventure;
        public static BukkitAudiences adventure() {
            if(adventure == null) {
                throw new IllegalStateException("abc!");
            }
            return adventure;
        }
    
        @Override
        public void onEnable() {
            plugin = this;
            adventure = BukkitAudiences.create(this);
    Ну и собственно само использование в другом классе:
    Код:
    Prime.adventure().player(player).sendMessage(Component.text("123", TextColor.color(100, 200, 25),
                    Set.of(TextDecoration.BOLD)));
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    С Velocity не связано. Скорее всего отсутствует BukkitAdventure в пути.
    Вариантов у тебя немало:
    - Собственно, зашейдить. Добавить это в <build><plugins> в pom.xml, если пользуешься Maven:
    HTML:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.4.1</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <artifactSet>
                        <includes>
                            <include>net.kyori:adventure-api</include>
                            <include>net.kyori:adventure-platform-bukkit</include>
                        </includes>
                    </artifactSet>
                </configuration>
            </execution>
        </executions>
    </plugin>
    - Указать библиотеки в plugin.yml
    Код:
    libraries:
       - net.kyori:adventure-api:4.13.1
       - net.kyori:adventure-platform-bukkit:4.3.0
    - Забить на Spigot и использовать Paper API (рекомендую) - тогда не придется использовать платформу вообще.
    - Забить на Adventure и просто использовать ChatColor.
     
  3. Автор темы
    Ken12345

    Ken12345 Активный участник Пользователь

    Баллы:
    61
    У меня уже есть Paper-API в зависимостях, но разве с его помощью можно сделать Click и Hover ивенты для текста чата? Если да, то мне интересно какими методами? Я знаю только про TextComponent net.md_5.bungee.api, но он на 1.19.4 депрекатед, так что не знаю, не лучше ли использовать Adventure?

    И да, касаемо Velocity, можешь ли исходя из представленного мною кода подсказать, что я делаю не так, или он выглядит исправным и должен работать?
     
  4. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    В Paper вшит Adventure - добавлять платформу не требуется. TextComponent от md_5 задепрекейтили как раз Paper у себя, чтобы люди переходили на Adventure.
    Сложно сказать так сразу, но на первый взгляд, должно работать. Однако я бы рекомендовал все же канал "bungeecord:main" использовать - Velocity его понимает.
     
  5. Автор темы
    Ken12345

    Ken12345 Активный участник Пользователь

    Баллы:
    61
    Касаемо Adventure вопросов больше не имею, а касаемо Velocity мне посоветовали в дискорде Paper добавить задержку, т.к. я тестировал это на PlayerJoin ивенте, и всё сработало, но не с каналом "bungeecord:main", а с "BungeeCord".
     
Статус темы:
Закрыта.

Поделиться этой страницей