2015-06-11 4 views
-1

Я относительно новичок в создании плагинов bukkit, и у меня есть базовое понимание java. Мой плагин не будет работать. Из того, что я вижу на других форумах, это распространенная ошибка, но ни одно из решений не сработало.Мой плагин bukkit не загружается

Вот моя ошибка:

 
[16:18:19 ERROR]: Could not load 'plugins/MtgCraft.jar' in folder 'plugins' 
org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.sporech.MagictgCraft' 

Мой plugin.yml:

name: MtgCraft 
main: me.sporech.MagictgCraft 
version: 1.8 
author: Sporech 
description: A basic plugin 

Мой код:

package me.sporech; 

import java.util.Set; 

import org.bukkit.Material; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.player.PlayerInteractEvent; 
import org.bukkit.plugin.java.JavaPlugin; 

public class MagictgCraft extends JavaPlugin { 
    public static MagictgCraft plugin; 

    @Override 
    public void onEnable(){ 
     getLogger().info("this is the plugin doing it"); 
    } 
    @Override 
    public void onDisable(){ 

    } 

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
     if (cmd.getName().equalsIgnoreCase("hello") && sender instanceof Player) { 
      Player player = (Player) sender; 
      player.sendMessage("Hello, " + player.getName() + "!"); 
      return true; 
     } 
     return false; 
    } 
    @EventHandler 
    public void onPlayerInteractBlock(PlayerInteractEvent event) { 
     Player player = event.getPlayer(); 
     if (player.getItemInHand().getType() == Material.STICK) { 
      player.getWorld().strikeLightning(player.getTargetBlock((Set<Material>) null, 200).getLocation()); 
     } 
    } 
} 
+0

Вы, вероятно, должны пометить это с помощью [bukkit]. – PJTraill

+0

Можете ли вы найти файл 'last.log' в папке' logs' для этой ошибки? Журналы должны иметь больше информации. – Variadicism

+1

@JarrodRobertson Этот вопрос не является дубликатом вопроса. В вопросе, который вы утверждаете, является дубликатом, были две ошибки, которые при разрешении привели к разрешению вопроса: метод 'onCommand()', который они использовали, использовал неверные параметры, а ключ 'description'' plugin.yml' был капитализируются. Ни в одной из этих вещей не верно в этом вопросе; поэтому он не дублируется. – Variadicism

ответ

2

Ошибка с plugin.yml, а не код. Убедитесь, что plugin.yml включен в пакет по умолчанию и находится внутри вашей банки после экспорта/замены.

В нем указано, что ваше описание недействительно («InvalidDescriptionException»); он может быть слишком коротким, но это всего лишь предположение. Если удлинение вашего описания не работает, попробуйте выполнить описание с помощью «>» и разрыва строки, а затем напишите описание на следующей строке, которому предшествует как минимум 8 пробелов, как показано в следующем примере из одного из моих плагинов:

description: > 
      This super simple plugin has so many features your head may just implode. 

Вышеупомянутые работы в моих плагинах, хотя, честно говоря, это не обязательно. Тем не менее, стоит попробовать.

EDIT:

Для будущих читателей, которые не хотят, чтобы просеять через комментарии, проблема здесь в том, что plugin.yml не была включена в папке «SRC» или в пакете по умолчанию экспортируемой банки. Всегда убедитесь, что ваш plugin.yml находится в экспортированной банке в пакете по умолчанию!

+0

Я попробую. Все, что работает, хорошо для меня. Я бы не подумал, что длина описания будет иметь большой эффект, но это стоит того. Мой plugin.yml находится в папке проекта; не в исходной папке src. – Sporech

+0

Я попытался изменить описание к вашему предложению; это не сработало. По какой-то причине, когда я загрузил свой сервер (перед изменением описания), у него возникла другая ошибка. Вместо этого я редактировал свой вопрос, чтобы использовать эту ошибку. – Sporech

+0

My plugin.yml был не в том месте! Учебник, за которым я следовал, должен быть устаревшим или чем-то еще. Прошу прощения за мой предыдущий комментарий, где я сказал, что он должен находиться в папке проекта. На других форумах люди всегда говорят, что это не должно быть в пакете, и я принял это, поскольку он вообще не должен находиться в папке src. Хорошо, мой плагин показывает, когда я делаю/pl, и мой onEnable() работает. Однако он ничего не делает. Он должен отвечать, когда игрок делает «/ hello» и делает палки ударными молниями>: D. Кто-нибудь поможет? – Sporech