Помогите Failed to remap class plugin.plugin

Статус
Закрыто для дальнейших ответов.

_MCMaster_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
DragOn4ik
Здравствуйте 🙂
Столкнулся я с такой проблемой:
Я разработал свой первый плагин, в компиляции ошибок не было, plugin.yml составлен правильно.
Но при загрузке плагина получаю ошибку:
Код:
2018-07-25 18:21:54 [SEVERE] Could not load 'plugins/dragoncraft.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.ClassNotFoundException: Failed to remap class plugin.plugin     at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:176)     at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:307)    
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:231)    
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.loadPlugins(CraftServer.java:265)   
 at org.bukkit.craftbukkit.v1_5_R3.CraftServer.<init>(CraftServer.java:243)    
at net.minecraft.server.management.ServerConfigurationManager.<init>(ServerConfigurationManager.java:128)    
at net.minecraft.server.dedicated.DedicatedPlayerList.<init>(SourceFile:11)    
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:158)    
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:579)    
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573) Caused by: java.lang.ClassNotFoundException: Failed to remap class plugin.plugin    
at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:442)    
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:356)    
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:332)    
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    
at java.lang.Class.forName0(Native Method)    
at java.lang.Class.forName(Class.java:348)    
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:165)    
... 9 more
Caused by: java.lang.IllegalArgumentException    
at org.objectweb.asm.ClassReader.<init>(Unknown Source)     at org.objectweb.asm.ClassReader.<init>(Unknown Source)     at org.objectweb.asm.ClassReader.<init>(Unknown Source)    
at net.md_5.specialsource.RemapperPreprocessor.preprocess(RemapperPreprocessor.java:83)   
at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:398)    
... 16 more
Как исправить эту ошибку?
P.S. Проблема решена.
Скачать плагин
package com.dragon4ik.plugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class Plugin extends JavaPlugin implements Listener, CommandExecutor{
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this); //Регистрация эвента
getCommand("explokill").setExecutor(this); //Регистрация команды
Bukkit.getConsoleSender().sendMessage("<DragOn4ik> My plugin is enabled! 🙂");
}
public void onDisable() {
Bukkit.getConsoleSender().sendMessage("<DragOn4ik> My plugin is disabled! Good bye.");
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e)
{
if(e.getPlayer().hasPermission("dragon4ik.hidejoin"))
return;
String name = e.getPlayer().getName();
for(Player p:Bukkit.getServer().getOnlinePlayers())
if(!p.getName().equals(name))
p.sendMessage("Игрок "+name+" вошёл на сервер!");
}
@EventHandler
public void onDeath(PlayerDeathEvent e) {
Player player = e.getEntity();
Player killer = player.getKiller();
String killername = killer.getName();
player.sendMessage(ChatColor.DARK_PURPLE + "Вас убил игрок " + ChatColor.RED + killername);
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().equalsIgnoreCase("vk")){
Player player = (Player)sender;
if(player.hasPermission("dragon4ik.command.vk")) {
player.sendMessage(ChatColor.GREEN + "Наша группа ВКонтакте: " + ChatColor.BLUE + "<замени этот текст в Plugin.java>");
return true;
} else {
player.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
}
if(command.getName().equalsIgnoreCase("explokill")) {
float explosionPower = 4F;
Player player = (Player)sender;
if(args.length == 0) {
player.sendMessage(ChatColor.RED + "А кого взрывать-то? (/explokill [игрок])");
return true;
}
if(player.getServer().getPlayerExact(args[0]) == null) {
player.sendMessage(ChatColor.RED + "Игрока нет на сервере!");
return true;
}
if(player.hasPermission("dragon4ik.command.explokill")) {

Player target = player.getServer().getPlayerExact(args[0]);
target.getWorld().createExplosion(target.getLocation(), explosionPower);
target.setHealth(0);
player.sendMessage(ChatColor.AQUA + "Вы взорвали игрока " + ChatColor.RED + target.getName());
String killer = player.getPlayer().getName();
String etarget = target.getName();
Bukkit.getConsoleSender().sendMessage("Игрок " + killer + " взорвал игрока " + etarget);
return true;
} else {
player.sendMessage(ChatColor.DARK_RED + "Недостаточно прав!");
}
}
return false;
}
}
name: DragOn4ikPlugin
author: DragOn4ik
version: 0.1
main: com.dragon4ik.plugin.Plugin
commands:
vk:
description: VK Group
permission: dragon4ik.command.vk
usage: /vk
explokill:
description: Explode Player
permission: dragon4ik.command.explokill
usage: /explokill [player]

За говнокод простите, первый раз плагин пишу 😉
 
Последнее редактирование:
В какую часть кода это вставить?
Вставил в начало класса - получаю ошибки компилятора
P.S. Java ещё учу, если что
Вставил в onEnable()
При загрузке плагина получаю ошибку
Код:
2018-07-26 12:13:39 [SEVERE] Error occurred while enabling DragonCraft v1.0 (Is it up to date?) java.lang.NullPointerException     at com.dragon4ik.plugin.Plugin.onEnable(Plugin.java:25)     
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)     
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)     
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.loadPlugin(CraftServer.java:282)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.enablePlugins(CraftServer.java:264)     
at net.minecraft.server.v1_5_R3.MinecraftServer.j(MinecraftServer.java:304)     
at net.minecraft.server.v1_5_R3.MinecraftServer.e(MinecraftServer.java:283)     
at net.minecraft.server.v1_5_R3.MinecraftServer.a(MinecraftServer.java:243)     
at net.minecraft.server.v1_5_R3.DedicatedServer.init(DedicatedServer.java:151)     
at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:382)     
at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
На 25 строке у меня: getCommand("explokill").setExecutor(this);
 
Вставил в onEnable()
При загрузке плагина получаю ошибку
Код:
2018-07-26 12:13:39 [SEVERE] Error occurred while enabling DragonCraft v1.0 (Is it up to date?) java.lang.NullPointerException     at com.dragon4ik.plugin.Plugin.onEnable(Plugin.java:25)     
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)   
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)   
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)   
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.loadPlugin(CraftServer.java:282)   
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.enablePlugins(CraftServer.java:264)   
at net.minecraft.server.v1_5_R3.MinecraftServer.j(MinecraftServer.java:304)   
at net.minecraft.server.v1_5_R3.MinecraftServer.e(MinecraftServer.java:283)   
at net.minecraft.server.v1_5_R3.MinecraftServer.a(MinecraftServer.java:243)   
at net.minecraft.server.v1_5_R3.DedicatedServer.init(DedicatedServer.java:151)   
at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:382)   
at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
На 25 строке у меня: getCommand("explokill").setExecutor(this);
Крч, просто сделай так: убери из implements CommandExecutor, getCommand... из onEnable, и аннотацию @Override которая над методом onCommand
 
Крч, просто сделай так: убери из implements CommandExecutor, getCommand... из onEnable, и аннотацию @Override которая над методом onCommand
Всё, я уже с ошибкой сам разобрался. Она вообще из-за не из за регистрации комаманды и эвента. Это почему-то console.info("Plugin successfully enabled!") ошибку давал. Сделал логирование в консоль по-другому: Bukkit.getConsoleSender().sendMessage("Plugin successfully enabled!");
Теперь всё заработало) Спасибо за помощь 🙂
 
Всё, я уже с ошибкой сам разобрался. Она вообще из-за не из за регистрации комаманды и эвента. Это почему-то console.info("Plugin successfully enabled!") ошибку давал. Сделал логирование в консоль по-другому: Bukkit.getConsoleSender().sendMessage("Plugin successfully enabled!");
Теперь всё заработало) Спасибо за помощь 🙂
Кстати, теперь An internal error occurred.... не вылазит при каждом выполнении команды /explokill, но если не передать команде имя игрока, то тогда уже An internal error occurred... А в коде я сделал проверку:
PHP:
if(args == null) {
player.sendMessage("Ошибка: игрок не определен!");
return true;
}
Проверка неправильная? Или после return код всё-таки выполняется?
(((P.S. на то что код "PHP" не обращайте внимания, сделал для подсветки кода)))
 
Кстати, теперь An internal error occurred.... не вылазит при каждом выполнении команды /explokill, но если не передать команде имя игрока, то тогда уже An internal error occurred... А в коде я сделал проверку:
PHP:
if(args == null) {
player.sendMessage("Ошибка: игрок не определен!");
return true;
}
Проверка неправильная? Или после return код всё-таки выполняется?
(((P.S. на то что код "PHP" не обращайте внимания, сделал для подсветки кода)))
Учи java. Может допрет.
 
Говорил же учи java. Массив может быть просто пустым.
Я сейчас тем и занимаюсь, что учу Java (уже как 3 недели 😁)
Но всё-таки, как решить ту проблему с пустым аргументом?
 
Я сейчас тем и занимаюсь, что учу Java (уже как 3 недели 😁)
Но всё-таки, как решить ту проблему с пустым аргументом?
Вот так?
PHP:
if(args.length == 0)  {
player.sendMessage("Укажите ник игрока!");
return true;
}
 
И ещё один вопрос:
Как проверить, онлайн ли игрок
 
Из-за того, что проблема решена, я Закрываю тему.
Плагин вы сможете скачать, кликнув по этой ссылке
Спасибо всем участникам темы за помощь.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх