簡體   English   中英

在 bukkit 插件中找不到主類

[英]Cannot find main class in bukkit plugin

我的插件有問題。 錯誤是“找不到主類'turtdle.abilities.Main'”(我知道我拼錯了turtle,但這是我的用戶名。)

這個插件適用於我的服務器。 我已經嘗試完成 plugin.yml 文件(包括作者、版本等)我也嘗試將插件名稱更改為“Main”。 我也試過移動 yml 沒有成功。

package turtdle.abilities;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

    public Permission playerPermission1 = new Permission("turtdle.abilities.get");
    public Permission playerPermission2 = new Permission("turtdle.place.bedrock");
    @Override
    public void onEnable() {
        getLogger().info("onEnable Has been enabled for abilities plugin! BOOP!");
        new PlayerListener(this);
        new BlockRestricter(this);
        PluginManager pm = getServer().getPluginManager();
        pm.addPermission(playerPermission1);
        pm.addPermission(playerPermission2);
    }

    @Override
    public void onDisable() {
        getLogger().info("onDisable Has been triggered for abilities plugin");
    }

    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("Hewwooo, " + player.getName());
            return true;
        }
        return false;

    }
}

package turtdle.abilities;

import org.bukkit.ChatColor;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;

public class PlayerListener implements Listener{
    public PlayerListener(Main plugin) {
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }
    @EventHandler
    public void onDeath (PlayerDeathEvent e) {
        Player player = e.getEntity();
        if (!player.hasPermission("turtdle.abilities.get")) {
            player.sendMessage(ChatColor.AQUA + "OOF");
        }
        else {
            {
                player.sendMessage(ChatColor.AQUA + "you should've abused...");
            }
        }
    }
}

package turtdle.abilities;

import org.bukkit.ChatColor;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;

public class BlockRestricter implements Listener{
    public BlockRestricter(Main plugin) {
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }
    @EventHandler
    public void onBlockPlace (BlockPlaceEvent e) {
        Player player = e.getPlayer();
        Block block = e.getBlock();
        if (!player.hasPermission("turtdle.place.bedrock") &&  block.getType().getId() == 7) {
            player.sendMessage(ChatColor.RED + "You CAN'T PLACE THIS " + ChatColor.BOLD + "BLOCK! " + ChatColor.RESET  + ChatColor.RED +  " it is ILLEGAL");
            e.setCancelled(true);

        }
    }
}

plugin.yml: 
main: turtdle.abilities.Main
name: TurtdleAbilitiesCore
version: 0.2.9
author: CakeyTheTurtdle
description: ExclusiveWolfHuntplugin
commands:
   hello:
      description: When you're lonely
      usage: /hello

嘿,這是我的全部錯誤

https://pastebin.com/FAieE0Lr

不幸的是,另一個答案是不正確的。

在您鏈接的 Pastebin 中,我們可以看到錯誤如下:

Caused by: java.lang.ClassNotFoundException: turtdle.Main

當 Bukkit 試圖加載你的主類時,它正在尋找類turtdle.Main 這很奇怪的原因是您的 plugin.yml 告訴它尋找turtdle.abilities.Main ,它沒有這樣做。

我對問題原因的猜測是,有時在編譯項目時,您的 IDE 可能實際上並未獲取編輯過的 plugin.yml 文件以放入最終的 jar。 要解決此問題,請完成以下步驟:

  1. 打開您的項目文件夾並刪除以下任何/所有文件/文件夾(如果存在):
    • 倉/
    • 目標/
    • 你的插件名.jar
  2. 轉到您服務器的文件夾並在那里刪除 YourPluginName.jar
  3. 重新編譯您的項目並將新的 jar 文件添加到您的插件文件夾中。

希望這應該可以解決問題。 你的 plugin.yml 文件和代碼看起來都很好,理論上應該可以工作。 這是我能想到的唯一會導致問題的事情。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM