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

Помогите Как запихнуть плагин, который писался на ядре spigot на сервер с ядром mohist?

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

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

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    Как запихнуть плагин, который писался на ядре spigot на сервер с ядром mohist? Пытался установить какие-то плагины с инета так получалось. Но когда свой плагин устанавливаю то не выходит. Что нужно добавлять или менять что бы плагин который написал на spigote работал на сервере с ядром mohist?
    вот к примеру текст ошибки, но на ядре spigot запускается и работает нормально
    Код:
    [00:38:45 ERROR]: Could not load plugins\Near.jar in folder plugins because plugin invalid
     org.bukkit.plugin.InvalidPluginException: Cannot find main class `near.main.Main'
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:74) ~[PluginClassLoader.class:?]
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:126) ~[JavaPluginLoader.class:?]
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:323) ~[SimplePluginManager.class:?]
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:245) [SimplePluginManager.class:?]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.java:392) [CraftServer.class:?]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:872) [CraftServer.class:?]
            at org.bukkit.Bukkit.reload(Bukkit.java:545) [Bukkit.class:?]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) [ReloadCommand.class:?]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:156) [SimpleCommandMap.class:?]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:752) [CraftServer.class:?]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:738) [CraftServer.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71333_ah(DedicatedServer.java:504) [nz.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:462) [nz.class:?]
            at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:778) [MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:624) [MinecraftServer.class:?]
            at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
    Caused by: java.lang.ClassNotFoundException: Failed to remap class near.main.Main
            at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:229) ~[PluginClassLoader.class:?]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:137) ~[PluginClassLoader.class:?]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:110) ~[PluginClassLoader.class:?]
            at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_252]
            at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
            at java.lang.Class.forName0(Native Method) ~[?:1.8.0_252]
            at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_252]
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:72) ~[PluginClassLoader.class:?]
            ... 15 more
    Caused by: java.lang.IllegalArgumentException
            at org.objectweb.asm.ClassReader.<init>(ClassReader.java:185) ~[asm-debug-all-5.2.jar:5.2]
            at org.objectweb.asm.ClassReader.<init>(ClassReader.java:168) ~[asm-debug-all-5.2.jar:5.2]
            at org.objectweb.asm.ClassReader.<init>(ClassReader.java:439) ~[asm-debug-all-5.2.jar:5.2]
            at com.mohistmc.bukkit.nms.remappers.MohistJarRemapper.remapClassFile(MohistJarRemapper.java:156) ~[MohistJarRemapper.class:?]
            at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:193) ~[PluginClassLoader.class:?]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:137) ~[PluginClassLoader.class:?]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:110) ~[PluginClassLoader.class:?]
            at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_252]
            at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
            at java.lang.Class.forName0(Native Method) ~[?:1.8.0_252]
            at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_252]
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:72) ~[PluginClassLoader.class:?]
            ... 15 more
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Обращайся в поддержку Mohist.
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    java или asm старой версии.
     
  4. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    можно поподробней?
     
  5. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    Ок, если я пойду по второму пути. Буду делать плагин на ядре mohist сразу подгружать его библиотеку. Вписываю код и вылетает ошибка ещё в эклипсе
    Код:
    The type net.md_5.bungee.api.chat.BaseComponent cannot be resolved. It is indirectly referenced from required .class files
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Не все зависимости подключил. Тебе нужен bungeecord-chat jar
     
  7. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    скачать библиотеку bungeecord-chat jar и установить её так же как и подключал ядро mohist?
     
  8. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    ОК, Я ЗДАЮСЬ, не понимаю просто почему не работает. Вот код в Main:
    Код:
    package near.main;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import net.md_5.bungee.api.ChatColor;
    
    
    public class Main extends JavaPlugin implements Listener{
        
        static Plugin plugin;
        
        
        
        @EventHandler
        public void Near(PlayerJoinEvent event) {
            Player p = event.getPlayer();
            Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    
                @Override
                public void run() {
                    int size = 0;
                    for(@SuppressWarnings("unused") Player player : Bukkit.getServer().getOnlinePlayers()) {
                        size++;
                    }
                    if(size == 1) {
                        p.sendMessage(ChatColor.RED + "Вы одни на сервере");
                    
                        
                    }else {
                        List<String> online = new ArrayList<>(size);
                        for(Player player : Bukkit.getServer().getOnlinePlayers()) {
                            online.add(ChatColor.GREEN + player.getName() + ChatColor.YELLOW + " " + player.getLocation().getWorld().getName()
                                    + " " + player.getLocation().getBlockX() + " " +
                            player.getLocation().getY() + " " + player.getLocation().getBlockZ());
                        }
                        for(int i = 0; i < online.size(); i++) {
                            String str = online.get(i);
                            p.sendMessage(str);
                        }
                    }
                    
                }
                
            }, 0, 6000);
            Command.timer.put(p.getUniqueId(), 0);
        }
        
        public void onEnable() {
            plugin = this;
            getServer().getLogger().info(ChatColor.DARK_RED + "Plugin will started!");
            getServer().getPluginManager().registerEvents(this, this);
            getServer().getPluginCommand("radar").setExecutor(new Command());
            getServer().getPluginCommand("sethome").setExecutor(new Command());
            getServer().getPluginCommand("home").setExecutor(new Command());
    
        }
        
        public void onDisable() {
            
        }
    
        public static Plugin getPlugin() {
            return plugin;
        }
    }
    
    вот код в классе Command
    Код:
    package near.main;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.UUID;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    import net.md_5.bungee.api.ChatColor;
    
    public class Command implements CommandExecutor{
        static HashMap<UUID, Integer> timer = new HashMap<UUID, Integer>();
        private int id;
        @Override
        public boolean onCommand(CommandSender sender, org.bukkit.command.Command command, String str2, String[] str3) {
            
            if(!(sender instanceof Player)) return false;
            Player p = (Player) sender;
            if(str3.length == 0) {
            if(command.getName().equalsIgnoreCase("radar")) {
                
                int size = 0;
                for(@SuppressWarnings("unused") Player player : Bukkit.getServer().getOnlinePlayers()) {
                    size++;
                }
                if(size == 1) {
                    p.sendMessage(ChatColor.RED + "Вы одни на сервере");
                
                    
                }else {
                    List<String> online = new ArrayList<>(size);
                    for(Player player : Bukkit.getServer().getOnlinePlayers()) {
                        online.add(ChatColor.GREEN + player.getName() + ChatColor.YELLOW + " " + player.getLocation().getWorld().getName()
                                + " " + player.getLocation().getBlockX() + " " +
                        player.getLocation().getY() + " " + player.getLocation().getBlockZ());
                    }
                    for(int i = 0; i < online.size(); i++) {
                        String str = online.get(i);
                        p.sendMessage(str);
                    }
                }
                return true;
            }
            if(command.getName().equalsIgnoreCase("sethome")) {
                Location loc = p.getLocation();
                
                SaveHome(p, Main.getPlugin(), loc);
                
                p.sendMessage(ChatColor.AQUA + "Точка дома успешно установлена ");
                return true;
            }
            if(command.getName().equalsIgnoreCase("home")) {
                String uuid = p.getUniqueId().toString();
                String path = String.join(".", "homes", uuid);
                FileConfiguration configuration = Main.getPlugin().getConfig();
                if(!configuration.contains(path)){
                    p.sendMessage(ChatColor.RED + "У вас нету дома... Жаль");
                }else {
                    
                    p.teleport((Location) configuration.get(path));
                    p.sendMessage(ChatColor.AQUA + "Вы успешно телепортировались домой");
                    return true;
                }
            }
            }
            if(str3.length == 1 && command.getName().equalsIgnoreCase("home")) {
                String str= str3[0];
                Player target = Bukkit.getPlayerExact(str);
                
                if(target==null) {
                    p.sendMessage(ChatColor.RED + "Данный игрок не на сервере или его не существует");
                    return false;
                }
                if(timer.get(p.getUniqueId()) > 0) {
                    p.sendMessage(ChatColor.RED + "Вы можете телепортироваться в следующий раз через: " +
                ChatColor.GREEN + timer.get(p.getUniqueId()) / 20);
                    return false;
                }
                String path = String.join(".", "homes", target.getUniqueId().toString());
                FileConfiguration configuration = Main.getPlugin().getConfig();
                if(!configuration.contains(path)){
                    p.sendMessage(ChatColor.RED + "У Данного человека нету точки дома");
                }else {
                    startTimer(p);
                    p.teleport((Location) configuration.get(path));
                    p.sendMessage(ChatColor.AQUA + "Вы успешно телепортировались к " + ChatColor.GREEN + target.getName());
                }
            }
            return true;
        }
    
        public void startTimer(Player player) {
            timer.put(player.getUniqueId(), 6000);
            id = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, new Runnable() {
    
                @Override
                public void run() {
                    if(timer.get(player.getUniqueId()) > 0) {
                        timer.put(player.getUniqueId(), timer.get(player.getUniqueId()) - 20);
                    }else {
                        Bukkit.getScheduler().cancelTask(id);
                    }
                }
                
            }, 0, 20);
        }
        
        public void SaveHome(Player player, Plugin plugin, Location loc) {
                String uuid = player.getUniqueId().toString();
                String path = String.join(".", "homes", uuid);
                plugin.getConfig().set(path, loc);
                plugin.saveConfig();
        }
        
    }
    
    вот код в plugin.yml
    Код:
    name: Near
    main: near.main.Main
    version: 0.0.1
    api-version: 1.12.2
    commands:
      radar:
        description: this command present to sender players coordinates
        aliases:
          - rd
      sethome:
        description: remembers your home
      home:
        description: teleports the player to his home
    
    на спиготе работает на mohist нет, зато другие плагины скаченные с инета работают и там и там. ЧТО СО МНОЙ НЕ ТАК?)
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Попробуй выбрать в еклипсе компилятор 8 java и пересобрать с ним.
     
  10. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    ЕММММААААААА. Помогло, спасибо. А теперь можешь обьяснить почему так работает?
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Старая библиотека asm в мохисте и при попытке отремапить плагин обсирается.
     
  12. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    Он предоставляет простой API для декомпозиции, изменения и повторной компоновки бинарных классов Java.(Взял с википедии). Мг, поэтому не видело библиотеку банжи?
     

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