Minecraft(我的世界)中文论坛
标题: Sponge插件命令系统简介[InfStudio]
作者: 土球球 时间: 2016-12-7 18:10
标题: Sponge插件命令系统简介[InfStudio]
本帖最后由 ustc_zzzz 于 2017-1-19 13:33 编辑
引言:
这篇文章为本人Blog中的一篇Post,因排版原因,就不贴全部内容了,只贴出概述部分。
Q:为什么访问速度这么慢?
A:因为访问速度就是慢=_=||洛杉矶的机房呢=_=||
Q:为什么URL是汉语拼音?
A:Blog系统自动生成的=_=||本人看着这个URL还可以就没改=_=||现在URL被我改成英文的了→_→
概述:
我们假设需要做一个传送命令(这里就姑且叫做TryTeleport吧),我们想要什么呢?
- 输入/tryteleport notch 64 128 64
将把玩家notch传送到坐标为(64,128,64)的位置 - 输入/tryteleport 64 128 64
将把自己传送到坐标为(64,128,64)的位置 - 输入/tryteleport DIM-1 64 128 64
将把自己传送到坐标为(64,128,64)的下界位置 - 输入/tryteleport notch 64 128 64 0 0
将把玩家notch传送到坐标为(64,128,64)的位置,
同时后两个参数决定了传送时的姿态坐标(Yaw和Pitch) - 输入/tryteleport notch ~ ~ ~
将把玩家notch传送到自己所在的位置 - 输入/tryteleport @a ~ ~ ~
将把所有玩家传送到自己所在的位置
需求其实挺复杂,但是还不止这些:
- 如果试图传送自己的是服务端控制台,那么将出错
- 如果试图在位置坐标处输入一些不合法的字符串,那么也会出错
- 如果试图传送的玩家不在线,那么将出错
还有呢:
- 输入/tryteleport后,按下Tab键会自动轮流弹出世界中所有玩家的名字
还有一项需求:
- 输入/help tryteleport后,会得到相关的参数信息,这里我希望它是:
Usage: /tryteleport [<source>] <location> [<yaw> <pitch>]
所以说,定义一个命令,主要定义的就是这四部分:功能、错误处理、自动补全、以及帮助信息。
实际上我们可以注意到,很多情况下处理命令的行为都类似,比方说输入玩家:
- 处理一个字符串作为玩家名称
- 若字符串对应的玩家不在线则出错
- 在按下Tab时自动从世界寻找已有玩家并轮流返回其名称
- 输出的帮助信息中,玩家参数的相应位置应输出<player>
在软件工程中,遇到重复的代码就需要想想如何合并,开发Sponge插件亦是如此。而(至少据我所知)Bukkit插件没有提供行之有效的手段,所以开发者就需要一遍一遍地写重复的处理命令的代码,如果涉及到选择器等情况问题还会变得更加复杂。Sponge(至少目前看来)很好地解决了这一问题。
本篇Post的内容就是简要介绍Sponge插件的命令系统。
正文内容:
http://blog.ustc-zzzz.net/sponge-plugin-command-system-brief-introduction/
[groupid=534]InfinityStudio[/groupid]
作者: 0x3B800001 时间: 2016-12-17 13:01
既然没人回复我就来占个沙发
给我们和蔼可亲的4z点个赞
然后我想问一下能不能把右边的目录调到左边,强迫症受不了啊。。
作者: lrf8643 时间: 2016-12-19 03:11
这。。。。秒开的呀。你说洛杉矶机房,吓得我赶紧挂上VPN。结果比不挂还要慢那么点。
然后那目录实在受不了。习惯了word的目录。
作者: 顶个热水袋 时间: 2016-12-29 18:07
这站点优化的好快啊 我那个新加坡的机房 速度慢的可怜
作者: Wander_X 时间: 2017-1-2 14:12
666太厉害了帮助巨大,收藏点赞
作者: 血腥搅拌机 时间: 2017-1-7 00:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 545822830 时间: 2017-1-22 13:38
很强的插件,就是等待换机房,很大帮助,收藏支持
作者: 土球球 时间: 2017-1-29 14:15
机房一时半会是不会换了= =国内备案太麻烦
(可能有一天我会换成新加坡的?)
作者: Tollainmear 时间: 2017-8-12 00:35
可以分享一下源代码吗?没有完整源代码的话,对于门外汉来说,学习很吃想象力耶。。。。
作者: Tollainmear 时间: 2017-8-12 00:41
另外,我有点儿想不出来那个CommandCallable command = //your command等号后面写啥。。。。。
还有 CommandCallable和CommandSpec是什么关系。。。。。
作者: 1814338222 时间: 2018-7-17 19:51
大佬感谢
作者: 明月妹子233 时间: 2018-7-18 13:52
大佬 我用了之后解不开物品啊