Помогите 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]

За говнокод простите, первый раз плагин пишу 😉
 
Последнее редактирование:
name: DragonCraft
author: DragOn4ik
version: 1.0
main: com.dragon4ik.plugin.Plugin
commands:
vk:
description: VK Group
permission: dragoncraft.command.vk
usage: /vk
explokill:
description: Explode Player
permission: dragoncrat.troll.explokill
usage: /explokill [player]
package com.dragon4ik.plugin;

import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block;
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.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Plugin extends JavaPlugin implements Listener, CommandExecutor{
Logger console = getLogger();

public void onEnable() {
console.info("Plugin successfully enabled!");
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e)
{
if(e.getPlayer().hasPermission("dragoncraft.join.message.hide"))
return;
String name = e.getPlayer().getName();
for(Player p:Bukkit.getServer().getOnlinePlayers())
if(!p.getName().equals(name))
p.sendMessage("Игрок "+name+" вошёл на сервер!");
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().equalsIgnoreCase("vk")){
Player player = (Player)sender;
if(player.hasPermission("dragoncraft.command.vk")) {
player.sendMessage(ChatColor.GREEN + "Наша группа ВКонтакте: " + ChatColor.BLUE + "vk.com/game_dc");
return true;
} else {
player.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
}
if(command.getName().equalsIgnoreCase("explokill")) {
float explosionPower = 4F;
Player player = (Player)sender;
if(player.hasPermission("dragoncraft.troll.explokill")) {
Player target = player.getServer().getPlayerExact(args[0]);
target.getWorld().createExplosion(target.getLocation(), explosionPower);
target.setHealth(0);
player.sendMessage(ChatColor.DARK_PURPLE + "[DragonCraft Troll] " + ChatColor.AQUA + "Вы взорвали игрока " + ChatColor.RED + target.getName());
String killer = player.getPlayer().getName();
String etarget = target.getName();
console.info("Игрок " + killer + "взорвал игрока" + etarget);
return true;
} else {
player.sendMessage(ChatColor.DARK_RED + "Недостаточно прав!");
}
}
return false;
}
}
 
Компилировалось под более новую версию джавы (сервер запущен на старой, или же ASM не умеет в эту версию)
 
Компилировалось под более новую версию джавы (сервер запущен на старой, или же ASM не умеет в эту версию)
Компилировалось под Java 8. Сервер запущен на Java 8.
 
Так. Проблема была в том что MCPC+ почему-то не захотел запускать мой плагин, обычный bukkit запустил без вопросов.
Но теперь другая проблема. Не пишется ничего в консоль(не работает логирование), и при выполнении команды /explokill появляется ошибка в консоли(команда выполняется, все работает как надо, но появляется ошибка).
Ошибка:
Код:
2018-07-26 09:41:32 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'explokill' in plugin DragonCraft v1.0     
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)    
 at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)     
at net.minecraft.server.v1_5_R3.PlayerConnection.handleCommand(PlayerConnection.java:971)     
at net.minecraft.server.v1_5_R3.PlayerConnection.chat(PlayerConnection.java:889)     
at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:846)     
at net.minecraft.server.v1_5_R3.Packet3Chat.handle(Packet3Chat.java:44)     
at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)     
at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:115)     
at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)     
at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)     
at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)     
at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)     
at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)     
at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)     
at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573) 
Caused by: java.lang.NullPointerException     
at plugin.plugin.onCommand(plugin.java:54)     
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)     
... 15 more
Обновленные сорцы плагина:
Код:
package com.dragon4ik.plugin;

import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block;
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.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Plugin extends JavaPlugin implements Listener, CommandExecutor{
Logger console = getLogger();

public void onEnable() {
console.info("Plugin successfully enabled!");
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e)
{
if(e.getPlayer().hasPermission("dragoncraft.join.message.hide"))
return;
String name = e.getPlayer().getName();
for(Player p:Bukkit.getServer().getOnlinePlayers())
if(!p.getName().equals(name))
p.sendMessage("Игрок "+name+" вошёл на сервер!");
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().equalsIgnoreCase("vk")){
Player player = (Player)sender;
if(player.hasPermission("dragoncraft.command.vk")) {
player.sendMessage(ChatColor.GREEN + "Наша группа ВКонтакте: " + ChatColor.BLUE + "vk.com/game_dc");
return true;
} else {
player.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
}
if(command.getName().equalsIgnoreCase("explokill")) {
float explosionPower = 4F;
Player player = (Player)sender;
if(player.hasPermission("dragoncraft.troll.explokill")) {
Player target = player.getServer().getPlayerExact(args[0]);
target.getWorld().createExplosion(target.getLocation(), explosionPower);
target.setHealth(0);
player.sendMessage(ChatColor.DARK_PURPLE + "[DragonCraft Troll] " + ChatColor.AQUA + "Вы взорвали игрока " + ChatColor.RED + target.getName());
String killer = player.getPlayer().getName();
String etarget = target.getName();
console.info("Игрок " + killer + "взорвал игрока" + etarget);
return true;
} else {
player.sendMessage(ChatColor.DARK_RED + "Недостаточно прав!");
}
}
return false;
}
}
Код:
name: DragonCraft
author: DragOn4ik
version: 1.0
main: com.dragon4ik.plugin.Plugin
commands:
vk:
description: VK Group
permission: dragoncraft.command.vk
usage: /vk
explokill:
description: Explode Player
permission: dragoncrat.troll.explokill
usage: /explokill [player]
 
Проблема была в том что MCPC+ почему-то не захотел запускать мой плагин, обычный bukkit запустил без вопросов.
И тут я ахренел, с какого перепуга, плагин, который был написал на Bukkit/Spigot ядре должен запускаться на MCPC+???!!! Это совсем разные ядра, хочешь под MCPC+ писать, импортируй библиотеку MCPC+, а не Bukkit/Spigot
 
И тут я ахренел, с какого перепуга, плагин, который был написал на Bukkit/Spigot ядре должен запускаться на MCPC+???!!! Это совсем разные ядра, хочешь под MCPC+ писать, импортируй библиотеку MCPC+, а не Bukkit/Spigot
Я первы раз плагин пишу, не знал что это уж совсем разные ядра) Ну а как насчет ошибки в команде, про которую я написал выше? Это происходит уже на bukkit
 
А по коду вот что, во-первых ты не зарегистрировал Listener при загрузке, во-вторых не зарегистрировал команду, т.к. имплементишь CommandExecutor, а значит нужно регистрировать ее в главном классе

Bukkit.getPluginManager().registerEvents(this, this); //Регистрация эвента
getCommand("explokill").setExecutor(this); //Регистрация команды

Следующее на счет ошибки в кнс.

Ты получаешь игрока target = Bukkit.getPlayer(args[0]); таким способом, но нужно ведь заранее проверить args[0] на null, либо просто проверить длину массива args, а потом уже получать игрока, а также там нужна будет проверка на target == null => return true;
 
И тут я ахренел, с какого перепуга, плагин, который был написал на Bukkit/Spigot ядре должен запускаться на MCPC+???!!! Это совсем разные ядра, хочешь под MCPC+ писать, импортируй библиотеку MCPC+, а не Bukkit/Spigot
Капец ты сложный. Проблема там куда проще. MCPC не умеет в class version 52.
 
А по коду вот что, во-первых ты не зарегистрировал Listener при загрузке, во-вторых не зарегистрировал команду, т.к. имплементишь CommandExecutor, а значит нужно регистрировать ее в главном классе

Bukkit.getPluginManager().registerEvents(this, this); //Регистрация эвента
getCommand("explokill").setExecutor(this); //Регистрация команды

Следующее на счет ошибки в кнс.

Ты получаешь игрока target = Bukkit.getPlayer(args[0]); таким способом, но нужно ведь заранее проверить args[0] на null, либо просто проверить длину массива args, а потом уже получать игрока, а также там нужна будет проверка на target == null => return true;
Спасибо, сейчас поправлю код.
 
Bukkit.getPluginManager().registerEvents(this, this); //Регистрация эвента
getCommand("explokill").setExecutor(this); //Регистрация команды
В какую часть кода это вставить?
Вставил в начало класса - получаю ошибки компилятора
P.S. Java ещё учу, если что
 
А по коду вот что, во-первых ты не зарегистрировал Listener при загрузке, во-вторых не зарегистрировал команду, т.к. имплементишь CommandExecutor, а значит нужно регистрировать ее в главном классе

Bukkit.getPluginManager().registerEvents(this, this); //Регистрация эвента
getCommand("explokill").setExecutor(this); //Регистрация команды

Следующее на счет ошибки в кнс.

Ты получаешь игрока target = Bukkit.getPlayer(args[0]); таким способом, но нужно ведь заранее проверить args[0] на null, либо просто проверить длину массива args, а потом уже получать игрока, а также там нужна будет проверка на target == null => return true;
И ещё один вопрос: какая ошибка относится к тому, что в консоль ничего не пишет?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх