繁体   English   中英

Minecraft插件前缀(Java)

[英]Minecraft Plugin Prefix (Java)

我只想为Minecraft服务器创建一个简单的前缀插件,该插件显示了聊天框中的每个玩家点。

我使用的API =带阴影的PlayerPointsSpigot 1.9.4 关于PlayerPoints API单击此处

作为控制台,Show问题在PlayerListener.java

package points.prefix;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.black_ixx.playerpoints.PlayerPoints;


public class PlayerListener implements Listener {

Main plugin;
public PlayerListener(Main instance){
     this.plugin = instance;
}  

public PlayerPoints getPlayerPoints() {
    return getPlayerPoints();
}

//OnPlayer Join
@EventHandler
public void playerjoin(PlayerJoinEvent e){
    Player p = e.getPlayer();
    String pname = p.getName();
    int points = getPlayerPoints().getAPI().look("Player");

    //Begin
    if (p.hasPermission("prefix.point")){
        String member = "" + ChatColor.WHITE + "[" + ChatColor.GREEN + points + ChatColor.WHITE + "]" + ChatColor.RESET + ChatColor.WHITE + pname + ChatColor.RESET + "";
        p.setDisplayName(member);
    }
} }

来自spigot控制台的错误日志:

points.prefix.PlayerListener.getPlayerPoints(PlayerListener.java:19)〜[?:?] [20:57:40]

来自eclipse的错误日志:

不建议使用PlayerPointsAPI类型的look(String)方法

这里有另一条注释:在PlayerpointsAPI页面中提到要使用:

int balance = playerPoints.getAPI().look("Player");

显示平衡! 但它不起作用!

有人知道怎么了吗?

感谢你。

将来,请让人们知道您的错误以及错误所在。 在这种情况下,您会出现堆栈溢出错误,因为您的getPlayerPoints方法会递归地调用自身,而实际上没有做任何事情来摆脱无限循环!

您链接的页面会告诉您确切的内容。 它说:“启用时,您需要获取PlayerPoints插件实例,并将该引用保存在某个地方,因为您将通过该实例使用API​​。”

因此,请使用它们提供的示例代码(为简单起见,复制到此处):将这两种方法复制到您的插件类中(在您的情况下,大概是Main.java)并将侦听器中的getPlayerPoints()方法更改为plugin.getPlayerPoints() 另外,如果在侦听器中的其他地方未使用任何插件,则可以仅在构造函数中引用playerPoints实例,而不必对插件进行引用。

private PlayerPoints playerPoints;

/**
 * Validate that we have access to PlayerPoints
 *
 * @return True if we have PlayerPoints, else false.
 */
private boolean hookPlayerPoints() {
    final Plugin plugin = this.getServer().getPluginManager().getPlugin("PlayerPoints");
    playerPoints = PlayerPoints.class.cast(plugin);
    return playerPoints != null; 
}

/**
 * Accessor for other parts of your plugin to retrieve PlayerPoints.
 *
 * @return PlayerPoints plugin instance
 */
public PlayerPoints getPlayerPoints() {
    return playerPoints;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM