失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 我的世界Bukkit服务器插件开发教程(七)计分板

我的世界Bukkit服务器插件开发教程(七)计分板

时间:2019-05-10 08:07:40

相关推荐

我的世界Bukkit服务器插件开发教程(七)计分板

七、计分板

写在前面

对于计分板,相信大部分人会认为这是一个计分的玩意。但不然,它的用处远远不止计分那样简单,计分板在服务器中起着重要的作用,在大部分插件中都有着它的身影。

另注:本章节有大量干货,请细细咀嚼。

获取计分板

获取原版的计分板

首先我们需要一个对象。

Scoreboard scoreboard;

然后,再去获得服务器的计分板。

//获取服务器中对主计分板的管理scoreboard = getServer().getScoreboardManager().getMainScoreboard();

新建计分板

新建一个不受原版指令控制的计分板

Scoreboard scoreboard = manager.getNewScoreboard();

教程改进

由于§是一个特殊的字符,而在键盘上并没有§这个键,为了打代码更加的方便,我们将颜色标识§转换为&

//将§转为&,这样我们打代码会更加方便public String parse(String s) {return s.replace("&","§").replace("§§","&");}

在获取计分板之后,我们来看看计分板的作用。

1.计分项

计分板可以计分……当然,也不止计分。

我相信当初计分板的用途是用来显示玩家的分数及排名,但却被开发者们玩成了可以创建队伍又可以计分又可以写字的一块板子

1.1.计分项

计分项为Objective

首先新建一个计分项:

Objective obj;

对于一个计分板,我们需要有标题、准则、内部名。

obj = scoreboard.registerNewObjective("内部名","dummy","我是标题~");

内部名和标题很好理解,而准测是什么?

使用dummy准则,使得玩家无法通过指令修改计分板,大大提高了插件的地位,加强插件集权。

之后,我们还需设置计分板显示位置:

//设置显示位置为侧边栏obj.setDisplaySlot(DisplaySlot.SIDEBAR);

之后,我们就可以加入分数了。

分数为Score类

想要设置分数,首先需要找到Objective

Score score = obj.getScore("Java全科分数:");

之后就可以设置分数了:

score.setScore(760);

然后,向玩家推送计分板:

Player player = (Player) sender;player.setScoreboard(scoreboard);

总结:先设置项,再为该项添加分数,最后推送给指定玩家(不推送玩家无法看见)

2.队伍

Team可以帮助我们快速分队、设置选项。

2.1.基操

创建队伍。

Team team = scoreboard.registerNewTeam("红队");

在上面的代码中,我们在计分板中注册了“红队”这一队伍,并赋给team

而为了区别其他队伍,我们为这个team中的所有玩家设置类似于称号一样的前缀(prefix)

设置前缀

//设置红队所有玩家的前缀team.setPrefix(parse("&[红队]"));

同样的,有前缀也就有后缀(Suffix)

设置后缀

team.setSuffix(parse("&a至高无上"));

但是,我们的队伍却是空的,我们需要向其加入玩家(实体):

加入实体

//加入实体team.addEntry("Java");

如果我们想要移除一个实体,可以removeEntry来实现。

移除实体

//移除实体team.removeEntry("Java");

同样的,如果我们想要移除一个队伍,可以通过本身取消注册。

移除队伍

//移除队伍team.unregister();

展示名

向其他队伍展示己队的名字,可以使用setDisplayName

team.setDisplayName(parse("&4至高无上的Java"));

效果图:

2.2.选项

Team中有着许多选项供用。

既然Team是自带的,也是自家产的,多好的东西,干嘛自己写一个Team呢?

如:我要设置队伍中的玩家名字可见,而在其他队伍中队友名字不可见。

team.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.FOR_OTHER_TEAMS);

上面代码中的FOR_OTHER_TEAMS意思为对其他队伍关闭这个选项,如果是FOR_OWN_TEAM则是对我所在的队伍关闭这个选项

此外,还有一些其他选项,不过不是通过setOption来实现。

至于更多方法实现,请参阅BukkitAPI文档。

上一篇:我的世界Bukkit服务器插件开发教程(六)定时器

下一篇:我的世界Bukkit服务器插件开发教程(八)进度、进度条与自定义合成表

如果觉得《我的世界Bukkit服务器插件开发教程(七)计分板》对你有帮助,请点赞、收藏,并留下你的观点哦!

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