Minecraft(我的世界)中文论坛

 找回密码
 注册(register)
查看: 1038|回复: 0

[插件开发教程] [翻译][UD]编辑,获取并使用木牌

[复制链接]
byxiaobai 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1789
钻石
性别
保密
注册时间
2014-7-1
查看详细资料
发表于 2017-6-10 19:04:33 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 byxiaobai 于 2017-6-10 19:38 编辑
这是一个教插件初学者如何编辑,获取和使用木牌的一个教程。

木牌改变事件(SignChangeEvent):
当一个木牌发生改变时,这个事件就会被调用。关于这个事件的详细信息可以自行查阅相关资料。
接下来,让我们开始制作一个简单的木牌颜色插件吧。

首先,让我们从一个事件监听器开始。
  1. @EventHandler
复制代码
上面这段代码实现了一个简单的权限检查功能。
我们都知道,一个木牌中只有四行空间存放字符串。
所以,我们可以增加几行代码。
这里之所以循环四次,是因为一个木牌只有四行字符串。
  1. for (int i = 0; i < 4; i++) {
复制代码
接下来,我们的代码会读取这一行的字符,并确定这些字符不是空的。
  1. String line = e.getLine(i);
  2. if (line != null && !line.equals("")) {
复制代码
检查完毕之后,我们就可以从事件里改变这个牌子上的字符串了。(在这个示例中,我们需要把"&"字符替换成正确的颜色字符)
  1. e.setLine(i, ChatColor.translateAlternateColorCodes('&', line));
复制代码


如何得到一个牌子方块的实例
首先,用下面的代码可以得到一个方块的对象。
  1. Block b = p.getLocation().getBlock();
复制代码
因为这个方块有可能并不是牌子,所以我们需要先进行一个判断:
  1. if (b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST)
复制代码
之所以是双重判断,是因为在墙上的牌子有两种material类型。
接下来,我们需要对这个方块进行一个类型转换:
一个警告:
现在我们拥有牌子方块的对象了,那么接下来我们就可以做很多事,比如:
  1. sign.getLine(int line); // 从牌子中的任意一行(范围是1到3)读取字符串
  2. sign.setLine(int line, String text); // 在牌子中的任意一行设置字符串
  3. sign.getLines(); // 得到每一行的字符串(返回一个String的数组)
复制代码

那么,接下来我们要实现一个右键有指定内容的牌子传送的功能。(就是牌子上第一行[WARP],第二行warp的地点。然后右键可以传送到那个地点)
  1. if (ChatColor.stripColor(sign.getLine(0)).equalsIgnoreCase("[WARP]")) {

  2.     String warp = sign.getLine(2);
  3.     Bukkit.dispatchCommand(p, "warp " + warp);

  4. }
复制代码
判断条件中的ChatColor.stripColor是用来去掉字符串中的颜色字符的。
去掉颜色字符后,我们确认了一下第一行里的内容是不是[WARP]。如果是的话,就从牌子的第三行获取要传送的地址,然后让玩家使用这个指令(如/warp shop)。
当然,如果你想的话,也可以自己在玩家没有权限时发送一个提示。
作者的一些话:

来自群组: Unknown Domain
您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2019-8-21 09:45 , Processed in 0.032094 second(s), Total 8, Slave 7 queries , Gzip On, MemCached On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2019 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表