失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [Minecraft教程]我的世界插件制作-计分板[Bukkit][Scoreboard]

[Minecraft教程]我的世界插件制作-计分板[Bukkit][Scoreboard]

时间:2022-07-18 10:56:57

相关推荐

[Minecraft教程]我的世界插件制作-计分板[Bukkit][Scoreboard]

前言:

关于本篇知识需要了解Bukkit API中对Scoreboard的包装

1.13+版本API 1.12.2版本API

这里以1.12.2版本为例,通过javadoc[API 帮助文档]中我们可以知道,在Bukkit中,关于Scoreboard计分板的操作都被放置在org.bukkit.scoreboard包中了,接下来我们可以尝试一下

注意:本篇文章依赖于Spiot核心,请在idea添加此核心在进行剩下的操作,需要添加Minecraft Development

首次打开idea创建一个package包,关于不能创建package包可以查看这篇文章,此package包名字我将设置为org.bukkit.scoreboard,接着创建一个类

我们创建对象,使用Scoreboard进行展示数据给玩家

创建一个类,类中创建player变量

package org.bukkit.scoreboard;import org.bukkit.entity.Player;public class djxtext {public static void Text(Player player){}}

导入org.bukkit.Bukkit;

导入org.bukkit.entity.Player;

导入org.bukkit.scoreboard.ScoreboardManager;

注意,我们需要的ScoreboardManager[计分板管理]这个接口的对象

ScoreboardManager manager = Bukkit.getScoreboardManager();//获取计分板管理赋值到manager变量

在Bukkit中这个静态中,我们可以直接使用Scoreboard接口的对象,我们可以通过manager里的方法来进行获取,接下来我们创建一个计分板

Scoreboard scoreboard = manager.getNewScoreboard();

第一个Scoreboard是接口 第二个scoreboard是变量赋值manager变量中的调用接口 ScoreboardManager一个getNewScoreboard方法

现在我们计分板已经创建完成接下来我们可以在里面添加内容

Objective objective = scoreboard.registerNewObjective(String name,String criteria,String displayName);//String name内部名称 没有很多标准 只要没有与其他的名称重复就是//String criteria 准则//String displayName 显示名称例如:Objective objective = scoreboard.registerNewObjective("MGL","dummy","§e欢迎来到梦故里")//§e是我的世界颜色代码注意:使用setDisplayName函数也是同样的效果

关于准则 我建议去中文MinecraftWiki

一般我们常用虚拟型dummy和trigger触发型

dummy 型的准则同时也更适合于插件开发, 并且它不会被玩家死亡或击杀变动

接着我们给Objective设置显示的位置接着看Objective接口方法

objective.setDisplaySlot(DisplaySlot.SIDEBAR);设置计分板位置在侧边栏

接着给记分项增加 内容与对应的分数 调用Score

这里我放出翻译过后的接口介绍

Score djx1 = objective.getScore("§a§l欢迎来到梦故里 尊贵的:"+player.getDisplayName());djx1.setScore(1);Score djx2 = objective.getScore("/n");djx1.setScore(2);Score djx3 = objective.getScore("§b§l玩家生命值:"+player.getHealth());djx1.setScore(3);Score djx4 = objective.getScore("/n");djx1.setScore(4);Score djx5 = objective.getScore("§b§l玩家经验值值:"+player.getExp());djx1.setScore(5);Score djx6 = objective.getScore("§e§l祝你游戏愉快");djx1.setScore(6);

将计分板显示到玩家客户端上

player.setScoreboard(scoreboard);

整体代码如下

package org.bukkit.scoreboard;import org.bukkit.Bukkit;import org.bukkit.entity.Player;import org.bukkit.scoreboard.Objective;import org.bukkit.scoreboard.Scoreboard;import org.bukkit.scoreboard.ScoreboardManager;public class djxtext {public static void Text(Player player){ScoreboardManager manager = Bukkit.getScoreboardManager();Scoreboard scoreboard = manager.getNewScoreboard();Objective objective = scoreboard.registerNewObjective("MGL","dummy","§e§l欢迎来到梦故里");objective.setDisplaySlot(DisplaySlot.SIDEBAR);Score djx1 = objective.getScore("§a§l欢迎来到梦故里 尊贵的:"+player.getDisplayName());djx1.setScore(1);Score djx2 = objective.getScore("/n");djx1.setScore(2);Score djx3 = objective.getScore("§b§l玩家生命值:"+player.getHealth());djx1.setScore(3);Score djx4 = objective.getScore("/n");djx1.setScore(4);Score djx5 = objective.getScore("§b§l玩家经验值值:"+player.getExp());djx1.setScore(5);Score djx6 = objective.getScore("§e§l祝你游戏愉快");djx1.setScore(6);player.setScoreboard(scoreboard);}}

如果觉得《[Minecraft教程]我的世界插件制作-计分板[Bukkit][Scoreboard]》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。