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

Помогите Minimessage

Метки:
Теги Теги
1.16.5 minimessage paper

NotCopter

Участник
Пользователь
Баллы
31
У меня Paper 1.16.5, и у меня это уже 2 недели не получается сделать.
PHP:
Component parsed = MiniMessage.miniMessage().deserialize("Hello <rainbow>world</rainbow>, isn't <underlined>MiniMessage</underlined> fun?");
sender.sendMessage(parsed);
PHP:
Caused by: java.lang.NoClassDefFoundError: net/kyori/adventure/text/minimessage/MiniMessage
PHP:
package com.notcopter.notbedwars_1_16_5.commands;

import com.notcopter.notbedwars_1_16_5.NotBedwars;
import com.notcopter.notbedwars_1_16_5.commands.handlers.AbstractCommand;
import com.notcopter.notbedwars_1_16_5.game.GameSession;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.CommandSender;

import java.util.List;

public class FreeGameSessions extends AbstractCommand {
    public FreeGameSessions(String command_name) { super(command_name); }

    @Override
    public boolean execute(CommandSender sender, String label, String[] args) {
        List<GameSession> sessions = NotBedwars.lobbyHandler.getSessions();
        Component parsed = MiniMessage.miniMessage().deserialize("Hello <rainbow>world</rainbow>, isn't <underlined>MiniMessage</underlined> fun?");
        sender.sendMessage(parsed);
        int counter = 0;
        for (GameSession session : sessions) {
            sender.sendMessage(String.format("§8%d. §fАрена: \"%s\" §7(%d/%d) %s§8 (Слот #%d)",
                    ++counter, session.getMapName(), session.getPlayersCount(), session.getMaxPlayers(),
                    session.isFree() ? "§aСВОБОДНО" : "§cЗАНЯТО", session.getSlot()));
        }
        return true;
    }
}
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.notcopter</groupId>
    <artifactId>NotBedwars_1_16_5</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>NotBedwars_1_16_5</name>

    <description>IDK</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

    <repositories>
        <repository>
            <id>papermc-repo</id>
            <url>https://repo.papermc.io/repository/maven-public/</url>
        </repository>
        <repository>
            <id>sonatype</id>
            <url>https://oss.sonatype.org/content/groups/public/</url>
        </repository>
        <repository>
            <id>minecraft-libraries</id>
            <url>https://libraries.minecraft.net</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.destroystokyo.paper</groupId>
            <artifactId>paper-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>com.mojang</groupId>
            <artifactId>authlib</artifactId>
            <version>1.5.25</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.kyori</groupId>
            <artifactId>adventure-text-minimessage</artifactId>
            <version>4.14.0</version>
        </dependency>
    </dependencies>
</project>
 
Так я посмотрел ВОТ ЭТО и продвинулся чуть дальше:
upload_2023-9-14_17-13-38.png
PHP:
[17:10:03 WARN]: Unexpected exception while parsing console command "free"
org.bukkit.command.CommandException: Unhandled exception executing command 'free' in plugin NotBedwars_1_16_5 v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:826) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchServerCommand(CraftServer.java:788) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.DedicatedServer.handleCommandQueue(DedicatedServer.java:470) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:437) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1347) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1135) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.Thread.run(Thread.java:831) [?:?]
Caused by: java.lang.NoClassDefFoundError: net/kyori/adventure/builder/AbstractBuilder
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[?:?]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:201) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:586) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:119) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.FreeGameSessions.execute(FreeGameSessions.java:18) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.handlers.AbstractCommand.onCommand(AbstractCommand.java:32) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-794]
        ... 9 more
Caused by: java.lang.ClassNotFoundException: net.kyori.adventure.builder.AbstractBuilder
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:155) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[?:?]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:201) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:586) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:119) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.FreeGameSessions.execute(FreeGameSessions.java:18) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.handlers.AbstractCommand.onCommand(AbstractCommand.java:32) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-794]
        ... 9 more
 
А ещё меня не устраивает вот эта надпись сверху года я захожу в исходный код MiniMessageupload_2023-9-14_17-16-11.png
 
В jar'нике есть эти пути?
- net/kyori/adventure/text/minimessage/MiniMessage
- net/kyori/adventure/builder/AbstractBuilder

Попробуй забилдить jar'ник через package, перезапустить IDEA (Invalidate Caches)
 
Так я посмотрел ВОТ ЭТО и продвинулся чуть дальше:
PHP:
[17:10:03 WARN]: Unexpected exception while parsing console command "free"
org.bukkit.command.CommandException: Unhandled exception executing command 'free' in plugin NotBedwars_1_16_5 v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:826) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchServerCommand(CraftServer.java:788) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.DedicatedServer.handleCommandQueue(DedicatedServer.java:470) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:437) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1347) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1135) ~[patched_1.16.5.jar:git-Paper-794]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.Thread.run(Thread.java:831) [?:?]
Caused by: java.lang.NoClassDefFoundError: net/kyori/adventure/builder/AbstractBuilder
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[?:?]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:201) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:586) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:119) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.FreeGameSessions.execute(FreeGameSessions.java:18) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.handlers.AbstractCommand.onCommand(AbstractCommand.java:32) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-794]
        ... 9 more
Caused by: java.lang.ClassNotFoundException: net.kyori.adventure.builder.AbstractBuilder
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:155) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[?:?]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:201) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:586) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:119) ~[patched_1.16.5.jar:git-Paper-794]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.FreeGameSessions.execute(FreeGameSessions.java:18) ~[?:?]
        at com.notcopter.notbedwars_1_16_5.commands.handlers.AbstractCommand.onCommand(AbstractCommand.java:32) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-794]
        ... 9 more
Судя по этому скрину, проект ты собираешь средствами IDEA при помощи артефакта. Если уж используешь мавен, то и собирай им же:
maven package
Целевой джарник будет в папке target в проекте. После сборки открой джарник архиватором и убедись, что внутри присутствует классы net.kyori.adventure.text.minimessage.MiniMessage и net.kyori.adventure.builder.AbstractBuilder. Если их нет - проверяй параметры шейдинга
 
Вот что в jar'нике:

upload_2023-9-14_19-48-58.png

А где достать net.kyori.adventure.builder.AbstractBuilder я не знаю.
Я вообще на джаву меньше месяца перешёл, я не знаю кто ваш мавен такой и чё ему надо
 
Вот что в jar'нике:

Посмотреть вложение 65885

А где достать net.kyori.adventure.builder.AbstractBuilder я не знаю.
Я вообще на джаву меньше месяца перешёл, я не знаю кто ваш мавен такой и чё ему надо
upload_2023-9-14_19-53-30.png

jar'ник не должен лежать в jar'нике плагина, его классы должны быть внедрены в jar'ник плагина напрямую
 
Если все совсем плохо, то открой jar'ник minimessage в архиве и перетащи все файлы из него в jar'ник плагина (тоже открытый в архиве), но тогда тебе придется такое каждый раз проделывать
 
Если кому-то надо, то вот:

PHP:
static TextColor getGradient(TextColor from, TextColor to, double percent) {

        int r =(int) (from.red()   * (1 - percent) + to.red()   * percent);
        int g =(int) (from.green() * (1 - percent) + to.green() * percent);
        int b =(int) (from.blue()  * (1 - percent) + to.blue()  * percent);

        return TextColor.color(r, g, b);
    }
 
Вроде на 1,16,5 надо сделать релокейт всего андвенчур, чтобы он заработал. Попробуй:

Копируй все respository, depencies, buld к себе. Меняешь package me.xflyiwnl.adventure на свой

Код:
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <relocations> // сделай так же как у себя здесь
                                <relocation>
                                    <pattern>net.kyori.adventure</pattern>
                                    <shadedPattern>me.xflyiwnl.adventure</shadedPattern>
                                </relocation>
                            </relocations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

    <repositories>
        <repository>
            <id>sonatype-oss-snapshots1</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency> // и всё это
            <groupId>net.kyori</groupId>
            <artifactId>adventure-api</artifactId>
            <version>4.14.0</version>
        </dependency>
        <dependency>
            <groupId>net.kyori</groupId>
            <artifactId>adventure-platform-bukkit</artifactId>
            <version>4.3.0</version>
        </dependency>
        <dependency>
            <groupId>net.kyori</groupId>
            <artifactId>adventure-text-minimessage</artifactId>
            <version>4.14.0</version>
        </dependency>
    </dependencies>
</project>
 
Последнее редактирование:

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

Назад
Верх