(本章已于2022年7月31日重写)
现在,我们已经了解了N多条指令,并学会了搭建红石逻辑组,但我们似乎并没有拿所学的知识来做点什么有趣的东西。在此前的章节中,最多最多,我们也就用了几个命令方块来实现诸如生成钻石之类的小功能,谈不上有多厉害。
所以在接下来的内容中,我们将会用指令在Minecraft Java1.19版本中尝试做出一个有趣的具有实际功能的东西,那到底这个东西是什么呢?
在『第五十一章 whitelist-白名单』这一个章节,我提到了在Minecraft Java的离线服务器中,单纯使用白名单并不保险。而在给出的三个解决方法中,第二条写到:
『不要使用原版的服务端,采用第三方可以装插件的服务端或在原版服务端的基础上装Forge再加上SpongeForge(海绵端),并给服务器装上适宜的登录插件,让玩家进入服务器还需输入一次密码进行二次验证』
现在有很多Minecraft Java服务器就是这么干。这些服务器往往会开两个甚至更多的MC服务器——一个主服,另一个是专门用来登录的登录服。当玩家想要进入他们的服务器时,往往并不会直接进入到主服,而是先进入到登录服进行登录,登录成功后玩家才能进入到主服(例子有EaseCation服务器,你在服务器退出登录后就会来到它的登录服)。对于某些没钱的服务器来说,虽然开不了登录服,但也会装一些登录插件,让玩家在登录之后才能进行全部的操作。
但是不管怎样,以上的效果都是要在安装第三方服务端,并安装服务器插件(甚至可能还要配置数据库)之后才能做到。那在原版中,我们能否通过指令来实现以上效果呢?
如果仅仅说是做出一个『注册/登录』的效果来说,在Minecraft Java版中当然是可以的,而且也很容易做出来。让我们来试一试。
要做出『注册/登录』系统,首先我们要清楚:
什么是注册和登录?
Oxford Languages词典对『注册』一词的定义如下:
『特指电子计算机某网络的用户向该网络输入用户名、密码等,以取得对该网络的使用许可』
结合我们平常注册账号的常识,不难得出,注册和登录的流程是这样的:
用户向服务器发送注册/登录请求→服务器让用户填写用户名和密码等信息→用户填写完后,将信息发送至服务器→服务器检查信息→服务器根据检查的结果,判断是否允许用户进行下一步操作
现在,我们要在Minecraft中做出『注册/登录』的效果,本质上其实就是要实现上面的流程。而为了实现上面的流程,我们就要研究一下如何把上面的流程转化到Minecraft中。
我们可以做一个房间,设置出生点就在这个房间里面,然后放置一个按钮在墙上,并告诉玩家需要点击这个按钮来注册/登录。玩家点击这个按钮后,就会激活相应的逻辑组运行指令,此时就可以输入用户名和密码进行注册或登录,命令方块也会获取到玩家填写的内容,并进行一番操作,最后告诉玩家是否成功,如果成功则将他传送到外面。
前半段很简单,我们可以很容易做出来一个里面放着一个按钮的房间(插图98-1)。难点其实在后半段,有两个难点要解决:
①怎么让玩家输入用户名和密码,并将这些信息存储到哪里?
②怎么检测玩家输入的内容是否符合要求?
先来看第一个问题。
让玩家输入用户名和密码,首先就是要有一个能够让玩家输入文字的地方。在Minecraft中,哪里可以输入文字呢?
多得去了!聊天框、书与笔、铁砧、命令方块......重点在于,我们是否可以正确获取到玩家输入的文字,并将其储存起来?
先来看看书与笔。我们可以检测书与笔的NBT,然后将获取到的信息储存在.......
书与笔的内容肯定不只是数字,所以我们不能将信息储存在计分板中,只能将信息储存到某个NBT标签中。然而,一方面我们还没有正式学习NBT,另一方面我们也不知道储存在哪里,储存完后又该如何获取如何修改,因此采用书与笔作为输入框的方法对于现在的我们来说,不可取。
既然书与笔不可取,那么铁砧、命令方块等一大堆东西就都不行了。额,所以现在,我们应该怎么获取、从哪获取到玩家的输入内容并将其储存起来呢?
或许我们应该换个角度思考:我们可以将玩家输入的内容存储到哪里?
对于现在的我们来说,计分板是个不错的选择。等等,那么我们是否可以开放一个计分项让玩家自由修改,然后我们再从中获取计分项的值呢?
这章没有结束,请点击下一页继续阅读!
好主意!但问题来了,要修改计分项的话,玩家就得有2级权限(Java版),但就算是个傻子也不会给刚进服的玩家2级权限吧?况且,/op和/deop可不能在命令方块中运行。
那是否有没有一种方法,能够让没有权限的玩家也能够修改特定计分项的值呢?