我正在做一个传送插件。 有没有解决这个问题?
在我的服务器上加载时,我收到此错误:
[15:46:39错误]:无法加载'插件\ RTeleport.jar'在文件夹'插件' org.bukkit.plugin.InvalidPluginException:找不到主类`me.roofer.RTel 扩展端口' 在org.bukkit.plugin.java.PluginClassLoader。(PluginClassLoader.jav) a:42)〜[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j) ava:127)〜[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager。 java:328)〜[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager) .java:251)[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.ja) va:364)[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在org.bukkit.craftbukkit.v1_7_R4.CraftServer。(CraftServer.java:32 6)[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PlayerList。(PlayerList.java:68)[c raftbukkit.jar:GIT-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在net.minecraft.server.v1_7_R4.DedicatedPlayerList。(SourceFile:14 )[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.jav) a:133)[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java :436)[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6 28)[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 引起:java.lang.ClassNotFoundException:me.roofer.RTeleport 在java.net.URLClassLoader $ 1.run(未知来源)〜[?:1.8.0_25] 在java.net.URLClassLoader $ 1.run(未知来源)〜[?:1.8.0_25] at java.security.AccessController.doPrivileged(Native Method)〜[?:1.8.0_ 25] 在java.net.URLClassLoader.findClass(未知来源)〜[?:1.8.0_25] 在org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader。 java:77)〜[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader。 java:62)〜[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] 在java.lang.ClassLoader.loadClass(未知来源)〜[?:1.8.0_25] 在java.lang.ClassLoader.loadClass(未知来源)〜[?:1.8.0_25] at java.lang.Class.forName0(Native Method)〜[?:1.8.0_25] 在java.lang.Class.forName(未知来源)〜[?:1.8.0_25] 在org.bukkit.plugin.java.PluginClassLoader。(PluginClassLoader.jav) a:40)〜[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] ......还有10个
这是代码。
没有警告,config.yml
文件没问题。
package me.roofer.RTeleport;
import java.util.UUID;
import java.util.logging.Logger;
import me.roofer.RTeleport.RTeleport;
import org.bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
public class RTelport extends JavaPlugin {
public Logger logger = Logger.getLogger("rtp");
public RTeleport plugin;
@Override
public void onDisable() {
PluginDescriptionFile pdfFile = this.getDescription();
getLogger().info(pdfFile.getName() + " has been disabled!");
}
@Override
public void onEnable() {
PluginDescriptionFile pdfFile = this.getDescription();
getLogger().info(pdfFile.getName() + " has been Enabled!");
}
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
Player player = (Player) sender;
if(player.hasPermission("rteleport.*")){
if(commandLabel.equalsIgnoreCase("rtp")){
player.sendMessage(ChatColor.RED + "NOT ENOUGH ARGUMENTS!");
}else if(args.length == 1){
Player targetPlayer = player.getServer().getPlayer(UUID.fromString(args[0]));
Location location = targetPlayer.getLocation();
player.teleport(location);
player.sendMessage(ChatColor.DARK_AQUA + "Teleportation commensing... ");
}
}
return false;
}
}
答案 0 :(得分:1)
将main:
文件中的plugin.yml
键设置为主类的全名,包括包。
main: me.roofer.RTeleport.RTeleport
我建议您遵循命名约定并将软件包放在小写中。
答案 1 :(得分:0)
在您的plugin.yml
文件中,您说主要包是me.roofer.RTeleport.RTeleport
,但您提供的类名为RTelport
。尝试将plugin.yml
中的包名称更改为me.roofer.RTeleport.RTelport
或将您的班级名称更改为RTeleport
。
此外,建议不要使用public Logger logger = Logger.getLogger("rtp");
,因为这可能会导致问题。相反,请尝试使用public Logger logger = Bukkit.getLogger();
此外,您假设发件人是玩家。要避免任何错误,请尝试将onCommand方法更改为:
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
if(!(sender instanceof Player)){
sender.sendMessage(ChatColor.RED + "You must be a player to do that!");
return true;
}
Player player = (Player) sender;
if(player.hasPermission("rteleport.*")){
if(commandLabel.equalsIgnoreCase("rtp")){
if(args.length != 1){
player.sendMessage(ChatColor.RED + "Incorrect arguments!");
return true;
}
else{
Player targetPlayer = player.getServer().getPlayer(UUID.fromString(args[0]));
if(targetPlayer == null){
player.sendMessage(ChatColor.RED + "Could not find player!");
return true;
}
player.teleport(targetPlayer);
player.sendMessage(ChatColor.DARK_AQUA + "Teleportation commencing... ");
return true;
}
}
}
return false;
}
通过添加return true;
语句,可以阻止代码进展并防止可能发生的一些错误。
此外,您应该在传送之前检查播放器是否存在。如果玩家不在线,则会出错。
以上代码修复了所有内容。