Войти или зарегистрироваться

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

  • Автор темы Автор темы 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
 
Обращайся в поддержку Mohist.
 
java или asm старой версии.
Ок, если я пойду по второму пути. Буду делать плагин на ядре mohist сразу подгружать его библиотеку. Вписываю код и вылетает ошибка ещё в эклипсе
Код:
The type net.md_5.bungee.api.chat.BaseComponent cannot be resolved. It is indirectly referenced from required .class files
 
Ок, если я пойду по второму пути. Буду делать плагин на ядре mohist сразу подгружать его библиотеку. Вписываю код и вылетает ошибка ещё в эклипсе
Код:
The type net.md_5.bungee.api.chat.BaseComponent cannot be resolved. It is indirectly referenced from required .class files
Не все зависимости подключил. Тебе нужен bungeecord-chat jar
 
Не все зависимости подключил. Тебе нужен bungeecord-chat jar
ОК, Я ЗДАЮСЬ, не понимаю просто почему не работает. Вот код в 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 нет, зато другие плагины скаченные с инета работают и там и там. ЧТО СО МНОЙ НЕ ТАК?)
 
Старая библиотека asm в мохисте и при попытке отремапить плагин обсирается.
Он предоставляет простой API для декомпозиции, изменения и повторной компоновки бинарных классов Java.(Взял с википедии). Мг, поэтому не видело библиотеку банжи?
 
Назад
Верх