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

Помогите Minimessage

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

Метки:
  1. Автор темы
    NotCopter

    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 byjava.lang.NoClassDefFoundErrornet/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 senderString labelString[] args) {
            List<
    GameSessionsessions 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)",
                        ++
    countersession.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>
    
     
  2. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    Не работает даже так:
    upload_2023-9-14_16-52-57.png
     
  3. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    Так я посмотрел ВОТ ЭТО и продвинулся чуть дальше:
    upload_2023-9-14_17-13-38.png
    PHP:
    [17:10:03 WARN]: Unexpected exception while parsing console command "free"
    org.bukkit.command.CommandExceptionUnhandled 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 byjava.lang.NoClassDefFoundErrornet/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.ClassNotFoundExceptionnet.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
     
  4. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    А ещё меня не устраивает вот эта надпись сверху года я захожу в исходный код MiniMessage upload_2023-9-14_17-16-11.png
     
  5. MrAlexeiMK

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

    Баллы:
    66
    Имя в Minecraft:
    MrAlexeiMK
    В jar'нике есть эти пути?
    - net/kyori/adventure/text/minimessage/MiniMessage
    - net/kyori/adventure/builder/AbstractBuilder

    Попробуй забилдить jar'ник через package, перезапустить IDEA (Invalidate Caches)
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Судя по этому скрину, проект ты собираешь средствами IDEA при помощи артефакта. Если уж используешь мавен, то и собирай им же:
    maven package
    Целевой джарник будет в папке target в проекте. После сборки открой джарник архиватором и убедись, что внутри присутствует классы net.kyori.adventure.text.minimessage.MiniMessage и net.kyori.adventure.builder.AbstractBuilder. Если их нет - проверяй параметры шейдинга
     
  7. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    Вот что в jar'нике:

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    MrAlexeiMK
    upload_2023-9-14_19-53-30.png

    jar'ник не должен лежать в jar'нике плагина, его классы должны быть внедрены в jar'ник плагина напрямую
     
  9. MrAlexeiMK

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

    Баллы:
    66
    Имя в Minecraft:
    MrAlexeiMK
    Если все совсем плохо, то открой jar'ник minimessage в архиве и перетащи все файлы из него в jar'ник плагина (тоже открытый в архиве), но тогда тебе придется такое каждый раз проделывать
     
  10. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    Ну у меня вот так:
    upload_2023-9-15_16-5-41.png
     
  11. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
  12. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    Короче, я забил и сделал всё через компонент
     
  13. Автор темы
    NotCopter

    NotCopter Участник Пользователь

    Баллы:
    31
    Если кому-то надо, то вот:

    PHP:
    static TextColor getGradient(TextColor fromTextColor todouble percent) {

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

            return 
    TextColor.color(rgb);
        }
     
  14. xflyiwnl

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

    Баллы:
    66
    Имя в Minecraft:
    xflyiwnl
    Вроде на 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>
     
    Последнее редактирование: 17 сен 2023

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