Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

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)));
 
С 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.
 
- Забить на Spigot и использовать Paper API (рекомендую) - тогда не придется использовать платформу вообще.
У меня уже есть Paper-API в зависимостях, но разве с его помощью можно сделать Click и Hover ивенты для текста чата? Если да, то мне интересно какими методами? Я знаю только про TextComponent net.md_5.bungee.api, но он на 1.19.4 депрекатед, так что не знаю, не лучше ли использовать Adventure?

И да, касаемо Velocity, можешь ли исходя из представленного мною кода подсказать, что я делаю не так, или он выглядит исправным и должен работать?
 
У меня уже есть Paper-API в зависимостях, но разве с его помощью можно сделать Click и Hover ивенты для текста чата? Если да, то мне интересно какими методами? Я знаю только про TextComponent net.md_5.bungee.api, но он на 1.19.4 депрекатед, так что не знаю, не лучше ли использовать Adventure?
В Paper вшит Adventure - добавлять платформу не требуется. TextComponent от md_5 задепрекейтили как раз Paper у себя, чтобы люди переходили на Adventure.
И да, касаемо Velocity, можешь ли исходя из представленного мною кода подсказать, что я делаю не так, или он выглядит исправным и должен работать?
Сложно сказать так сразу, но на первый взгляд, должно работать. Однако я бы рекомендовал все же канал "bungeecord:main" использовать - Velocity его понимает.
 
Касаемо Adventure вопросов больше не имею, а касаемо Velocity мне посоветовали в дискорде Paper добавить задержку, т.к. я тестировал это на PlayerJoin ивенте, и всё сработало, но не с каналом "bungeecord:main", а с "BungeeCord".
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх