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

Помогите Как правильно подключить API другого плагина

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

  1. Автор темы
    ILEZOV

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

    Баллы:
    66
    Здравстуйте, столкнулся с проблемой. Я использую SkinChangerAPI в своем проекте. В среде разработке все методы пингуются и ошибок не выдает. После компиляции плагина, в консоль выдает ошибку, что class, который находится в API не найден. Что делать?
     
  2. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    depend в plugin.yml добавь
     
  3. Автор темы
    ILEZOV

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

    Баллы:
    66
    В том то и дело, что это не плагин. Новая ошибка
    Код:
     Could not load 'plugins\CoalIncognito.jar' in folder 'plugins'
    org.bukkit.plugin.UnknownDependencyException: Unknown/missing dependency plugins: [SkinChangerAPI]. Please download and install these plugins to run 'CoalIncognito'.
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:291) ~[patched_1.16.5.jar:git-Paper-794]
            at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:393) ~[patched_1.16.5.jar:git-Paper-794]
            at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:269) ~[patched_1.16.5.jar:git-Paper-794]
            at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[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:833) [?:?]
     
  4. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Так это ж не плагин.
    Тебе надо собрать плагин вместе с этой библиотекой и всё.
     
  5. Автор темы
    ILEZOV

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

    Баллы:
    66
    В среде разработке все методы пингуются и ошибок не выдает. После компиляции плагина, в консоль выдает ошибку, что class, который находится в API не найден. Что делать?

    Ну я компилирую и в консоль выводит ошибку.
     
  6. Автор темы
    ILEZOV

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

    Баллы:
    66
    [00:16:13 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'secret' in plugin CoalIncognito 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 net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2185) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:2000) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1953) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:49) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:7) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:35) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1271) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1264) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1225) ~[patched_1.16.5.jar:git-Paper-794]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1139) ~[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:833) [?:?]
    Caused by: java.lang.NoClassDefFoundError: fr/gabrielmercier/skinchangerapi/SkinChangerAPI
    at coalstudio.coalincognito.commands.SecretCommand.onCommand(SecretCommand.java:46) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-794]
    ... 19 more
    Caused by: java.lang.ClassNotFoundException: fr.gabrielmercier.skinchangerapi.SkinChangerAPI
    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:520) ~[?:?]
    at coalstudio.coalincognito.commands.SecretCommand.onCommand(SecretCommand.java:46) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-794]
    ... 19 more
     
  7. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Ну значит неправильно плагин собираешь.
     
  8. Автор темы
    ILEZOV

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

    Баллы:
    66
    И как же правильно
     
  9. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Так ты для начала покажи свой pom файл и команду, при помощи которой собираешь, а я уже укажу тебе на твои ошибки.
     
  10. Автор темы
    ILEZOV

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

    Баллы:
    66
    Код:
    package coalstudio.coalincognito.commands;
    
    import coalstudio.coalincognito.CoalIncognito;
    import com.mojang.authlib.properties.Property;
    import fr.gabrielmercier.skinchangerapi.SkinChangerAPI;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.Team;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.UUID;
    
    public class SecretCommand implements CommandExecutor {
        private final CoalIncognito instance = CoalIncognito.getInstance();
    
        public List<UUID> secret_skin = new ArrayList<>();
        public List<UUID> secret_name = new ArrayList<>();
    
        String value = "ewogICJ0aW1lc3RhbXAiIDogMTY4MDExNzY0OTE2NywKICAicHJvZmlsZUlkIiA6ICIyNTBmMGE0ZjM0MzI0NTQ2OTk1ZmNhNzA3YTE5ZDcxYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJsb29rZXkxMjM0NSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82YTc5NjY5NTNlOTU4OWY5OWE4YTlkNGEwNTMyN2E3MmVlNzA2YjlkN2M4YzI0YjA2YTY3ZjAxYTM1YmM4YzQ2IgogICAgfQogIH0KfQ==";
        String signa = "yMEVdmGJWKYrebW79Xyazv27qiCgmnYvP2jxo5+/Sj+9vHb9wGehfB5smY1j9t2hPMBJN6fZVBZLeZYmcyDw1sWfr1jgjLlZMSpcDWiRlLumnxUKMbRvGnHD/N9cpe+cME7Hp9O8XmAjzgEdtYyXsdmGONsL44m1Mn4qMHo9N/ELP5o13MyYGoPVYHKx1d3XhblmSWLVy4j1VwZ0MHkIr8klcvS1hnUscLswkeHsOsPaNv1HGPJdmyKW8v3Y2ybRG++I00qKF+lt7Y6FXEc6N6Tm35LioBZiCx+zZfIFI5ZjzkJkENa/JAEg/MPBGNDQNvZXqKXYYIh7YgTOJGfJcWylOo92tJK9zuXL4RGNZonteixNUG1iIM7tnFyYE3unBRFw2lrL1A9CZLwC0AjbT6as+sGcsY0/a8Z23fJC+3dnPEqkUmmsTULpE3FYtb1FjStGihQG3mwj2t6J1kh7z0gccLtsOBHV4rq0QaIrRcZ/HwXckthKevENYsCf1xOt+F6NikMf7U+aIrVJuIN8H1vOK4N3JVeF2xMMjN/wBLDTwv5idyKEuDqga4Tc/6ubuBK90p2PPUgBu/r4ZKWCFPLJj0RAMk4KzUpXJBxAi59ermMeQ3MP6pDi0/80No78CyWSb51ZgUZgkIVnGgWbcaBuLP60acNG+fdLCXRVaXk=";
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            FileConfiguration config = instance.getConfig();
            if(command.getName().equalsIgnoreCase("secret")) {
                if(args.length > 0) {
                    if(sender instanceof Player) {
                        if(args[0].equalsIgnoreCase("skin")) {
                            if(sender.hasPermission("coalincognito.secret_skin")) {
                                Player player = ((Player) sender).getPlayer();
                                if(secret_skin.contains(player.getUniqueId())) {
                                    secret_skin.remove(player.getUniqueId());
                                    sender.sendMessage(instance.prefix() + instance.ChatColor(config.getString("skin_message_disable")));
                                    String uid = player.getUniqueId().toString();
                                    SkinChangerAPI.change(player, new Property("textures", value, signa));
                                    return true;
                                }else{
                                    secret_skin.add(player.getUniqueId());
                                    sender.sendMessage(instance.prefix() + instance.ChatColor(config.getString("skin_message_enable")));
                                    SkinChangerAPI.change(player, new Property("textures", value, signa));
                                    return true;
                                }
                            }else{
                                instance.no_perms(sender);
                                return true;
                            }
                        }else if(args[0].equalsIgnoreCase("name")) {
                            if(sender.hasPermission("coalincognito.secret_name")) {
                                Player player = ((Player) sender).getPlayer();
                                Scoreboard scoreboard = player.getScoreboard();
                                Team team = scoreboard.getTeam("SecretName");
                                if(team == null) {
                                    team = scoreboard.registerNewTeam("SecretName");
                                    team.setPrefix("§k");
                                }
                                if(secret_name.contains(player.getUniqueId())) {
                                    secret_name.remove(player.getUniqueId());
                                    sender.sendMessage(instance.prefix() + instance.ChatColor(config.getString("name_message_disable")));
                                    team.removeEntry(player.getName());
                                    String name = player.getPlayerListName();
                                    name.replace("§k", "");
                                    player.setPlayerListName(name);
                                    player.setDisplayName(name);
                                    return true;
                                }else {
                                    secret_name.add(player.getUniqueId());
                                    sender.sendMessage(instance.prefix() + instance.ChatColor(config.getString("name_message_enable")));
                                    player.setPlayerListName("§k" + player.getName());
                                    player.setDisplayName("§k" + player.getName());
                                    team.addEntry(player.getName());
                                    return true;
                                }
                            }else{
                                instance.no_perms(sender);
                                return true;
                            }
                        }
                    }else{
                        instance.no_console(sender);
                        return true;
                    }
                }
            }return false;
        }
    
    }
    
    
    Код:
    <?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>CoalStudio</groupId>
        <artifactId>CoalIncognito</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>CoalIncognito</name>
    
        <description>Скрой свою личность для всех игроков</description>
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <url>vk.com/coalstudios</url>
    
        <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>
                            </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-repo</id>
                <url>https://libraries.minecraft.net/</url>
            </repository>
            <repository>
                <id>codemc-releases</id>
                <url>https://repo.codemc.org/repository/maven-releases/</url>
            </repository>
        </repositories>
    
        <dependencies>
            <dependency>
                <groupId>com.destroystokyo.paper</groupId>
                <artifactId>paper-api</artifactId>
                <version>1.13-R0.1-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.mojang</groupId>
                <artifactId>authlib</artifactId>
                <version>1.5.21</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>net.skinsrestorer</groupId>
                <artifactId>skinsrestorer-api</artifactId>
                <version>14.2.3</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </project>
    

    Я не знаю, как добавить в Maven
     
  11. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    <scope>compile</scope> в зависимости скин ченджера
     
  12. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    SkinChangerAPI это не SkinsRestorer-API. Судя по всему, у SkinChangerAPI нет Maven репозитория, да и не выглядит оно как то, что будет работать на последних версиях. А для работы SkinsRestorer-API тебе нужен установленный на сервере SkinsRestorer, и указать его в depend в pluign.yml (или soft-depend, если для работы плагина он необязателен).
     
  13. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Установи библиотеку в локальный репозиторий Maven.
    Код:
    mvn install:install-file -Dfile=S:\skinchangerapi-1.1.jar -DgroupId=fr.mecperspicace -DartifactId=skinchangerapi -Dversion=1.0 -Dpackaging=jar
    Далее подключаешь следующим образом:
    Код:
            <dependency>
                <groupId>fr.mecperspicace</groupId>
                <artifactId>skinchangerapi</artifactId>
                <version>1.0</version>
                <scope>compile</scope>
            </dependency>
    Ну и ещё можешь сделать релокацию в конфигурации maven-shade-plugin:
    Код:
                             <relocations>
                                    <relocation>
                                        <pattern>fr.gabrielmercier.skinchangerapi</pattern>
                                        <shadedPattern>net.quazar.rbplugin.utils</shadedPattern>
                                    </relocation>
                                </relocations>
     

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