Minecraft指令手册

你好MC

首页 >> Minecraft指令手册 >> Minecraft指令手册最新章节(目录)
大家在看半截入土:却给我曹贼系统? 山村桃运傻医 天崩开局,我和系统玩儿命求生 女帝痛哭,她杀死了自己最爱的人 他来时荣光万里 学霸的军工科研系统 间客 谁让你能力这么用的? 最强桃运系统 这个杂役是高手 
Minecraft指令手册 你好MC - Minecraft指令手册全文阅读 - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - 好看的玄幻魔法小说

第九十八章 触发器-简单的注册\/登录系统 上

上一章书 页下一章阅读记录

(本章已于2022年7月31日重写)

现在,我们已经了解了N多条指令,并学会了搭建红石逻辑组,但我们似乎并没有拿所学的知识来做点什么有趣的东西。在此前的章节中,最多最多,我们也就用了几个命令方块来实现诸如生成钻石之类的小功能,谈不上有多厉害。

所以在接下来的内容中,我们将会用指令在minecraft Java1.19版本中尝试做出一个有趣的具有实际功能的东西,那到底这个东西是什么呢?

在『第五十一章 whitelist-白名单』这一个章节,我提到了在minecraft Java的离线服务器中,单纯使用白名单并不保险。而在给出的三个解决方法中,第二条写到:

『不要使用原版的服务端,采用第三方可以装插件的服务端或在原版服务端的基础上装Forge再加上SpongeForge(海绵端),并给服务器装上适宜的登录插件,让玩家进入服务器还需输入一次密码进行二次验证』

现在有很多minecraft Java服务器就是这么干。这些服务器往往会开两个甚至更多的mc服务器——一个主服,另一个是专门用来登录的登录服。当玩家想要进入他们的服务器时,往往并不会直接进入到主服,而是先进入到登录服进行登录,登录成功后玩家才能进入到主服(例子有Easecation服务器,你在服务器退出登录后就会来到它的登录服)。对于某些没钱的服务器来说,虽然开不了登录服,但也会装一些登录插件,让玩家在登录之后才能进行全部的操作。

但是不管怎样,以上的效果都是要在安装第三方服务端,并安装服务器插件(甚至可能还要配置数据库)之后才能做到。那在原版中,我们能否通过指令来实现以上效果呢?

如果仅仅说是做出一个『注册\/登录』的效果来说,在minecraft Java版中当然是可以的,而且也很容易做出来。让我们来试一试。

要做出『注册\/登录』系统,首先我们要清楚:

什么是注册和登录?

oxford Languages词典对『注册』一词的定义如下:

『特指电子计算机某网络的用户向该网络输入用户名、密码等,以取得对该网络的使用许可』

结合我们平常注册账号的常识,不难得出,注册和登录的流程是这样的:

用户向服务器发送注册\/登录请求→服务器让用户填写用户名和密码等信息→用户填写完后,将信息发送至服务器→服务器检查信息→服务器根据检查的结果,判断是否允许用户进行下一步操作

现在,我们要在minecraft中做出『注册\/登录』的效果,本质上其实就是要实现上面的流程。而为了实现上面的流程,我们就要研究一下如何把上面的流程转化到minecraft中。

我们可以做一个房间,设置出生点就在这个房间里面,然后放置一个按钮在墙上,并告诉玩家需要点击这个按钮来注册\/登录。玩家点击这个按钮后,就会激活相应的逻辑组运行指令,此时就可以输入用户名和密码进行注册或登录,命令方块也会获取到玩家填写的内容,并进行一番操作,最后告诉玩家是否成功,如果成功则将他传送到外面。

前半段很简单,我们可以很容易做出来一个里面放着一个按钮的房间(插图98-1)。难点其实在后半段,有两个难点要解决:

1怎么让玩家输入用户名和密码,并将这些信息存储到哪里?

2怎么检测玩家输入的内容是否符合要求?

先来看第一个问题。

让玩家输入用户名和密码,首先就是要有一个能够让玩家输入文字的地方。在minecraft中,哪里可以输入文字呢?

多得去了!聊天框、书与笔、铁砧、命令方块......重点在于,我们是否可以正确获取到玩家输入的文字,并将其储存起来?

先来看看书与笔。我们可以检测书与笔的Nbt,然后将获取到的信息储存在.......

书与笔的内容肯定不只是数字,所以我们不能将信息储存在计分板中,只能将信息储存到某个Nbt标签中。然而,一方面我们还没有正式学习Nbt,另一方面我们也不知道储存在哪里,储存完后又该如何获取如何修改,因此采用书与笔作为输入框的方法对于现在的我们来说,不可取。

既然书与笔不可取,那么铁砧、命令方块等一大堆东西就都不行了。额,所以现在,我们应该怎么获取、从哪获取到玩家的输入内容并将其储存起来呢?

或许我们应该换个角度思考:我们可以将玩家输入的内容存储到哪里?

对于现在的我们来说,计分板是个不错的选择。等等,那么我们是否可以开放一个计分项让玩家自由修改,然后我们再从中获取计分项的值呢?

好主意!但问题来了,要修改计分项的话,玩家就得有2级权限(Java版),但就算是个傻子也不会给刚进服的玩家2级权限吧?况且,\/op和\/deop可不能在命令方块中运行。

那是否有没有一种方法,能够让没有权限的玩家也能够修改特定计分项的值呢?

还真有!那就是:

触发器(trigger)

在『第四十一章 objectives——管理一个计分项』中,我们曾经了解到trigger准则计分项所具有的特性:

『触发器,类似于dummy,但所有玩家均可修改自己的trigger型计分项』

也就是说,我们可以创建一个trigger准则的计分项,然后指示玩家去修改自己在这个计分项上的分数,进而达到『玩家输入,我们也能检测到并储存』的效果。

那我们到底该怎样正确使用触发器呢?

让我们先创建一个trigger准则的计分项:

\/scoreboard objectives add password trigger

这将会创建一个叫做『password』的trigger准则计分项,我们将会使用它来储存玩家的密码。

然后呢,怎么让玩家能够修改?

你应该知道,让玩家使用\/scoreboard players set 去修改自己的trigger类计分项的分数是不现实的,因为scoreboard必须要2级权限才能使用。因此,mojang专门为触发器加入了一条指令:

\/trigger

作用:修改执行者自己的trigger计分项上的分数

存在版本:Java1.8-今

需要权限等级:Java-0

需要作弊:否

格式:

\/trigger <允许的trigger计分项>

\\\\使执行者自己在指定计分项上的分数+1\\\\

\/trigger <允许的trigger计分项>(add|set)<值>

\\\\设置执行者自己在指定计分项上的分数\\\\

举个例子:

\/trigger password set 1

如果password是个已被启用的trigger计分项,那么运行上述指令将会修改执行者自己在password计分项上的分数为1。

等等,『已被启用』是个啥意思?trigger计分项要被修改还得先启用?

没错,mojang虽然给了我们触发器,但是这个触发器并不是随时随地都能让没权限的玩家自由修改的。要让玩家能够使用触发器,首先你需要使用scoreboard players enable命令来为指定玩家启用触发器:

\/scoreboard players enable <目标>

比如:

\/scoreboard players enable @s password

就可以让我们自己能够修改一次password。注意啊!不是无限修改,而是只能修改一次!

就算你为指定玩家启用了触发器,但只要那批玩家使用trigger指令修改了一次,那么触发器就会自动关闭,直到我们再次为他们开启触发器。也就是说,如果你这样运行指令,将会得到如下结果:

\/scoreboard players enable @s password

已为xxx启用了触发器[password]

\/trigger password set 1

已触发[passoword](数值已设为1)

\/trigger password set 1

你尚无法触发这个记分项

总而言之:要让玩家修改触发器,得先打开触发器,然后玩家就能够修改一次,修改完后触发器自动关闭,直到下一次被打开。

懂了吧?现在我们回来看看上面的第一个问题,你是否已经想到了解决办法?

没错,就是:

先创建一个储存密码用的password的触发器计分项(这步我们上面已经完成了)。当玩家按下按钮时,为其打开该触发器,并指示玩家通过\/trigger指令修改该触发器的值,同时不断检测玩家是否已经输入。当检测到玩家输入时,对玩家输入的内容进行检查,如果符合条件则通过检测,否则重新打开触发器,让玩家重新输入。

这已经非常符合最终的注册和登录流程了。但是我们仍然要解决两个问题:

1如何检测玩家是否输入了密码?

2到底密码要符合怎样的条件才可以通过检测?

(唉作者,用户名呢?用户名怎么办?)

(其实不需要用户名,玩家名称完全可以当成用户名来使用)

对于第一个问题,我们有两个解决办法:

1不断检测触发器的值是否改变,也就是通过execute的条件子命令判断

这个方法最简单,但是有些问题:万一玩家输入的是默认值该怎么办?

2不断尝试为指定玩家打开触发器,并将成功次数存储到另一个计分项上

这个方法也很简单,只要计分项的值不等于0,就代表着打开触发器成功,也就代表玩家已经输入过了。这同时也能解决『万一玩家输入的是默认值』的问题。

因此,我们不妨采用第二个解决办法,创建一个专门的计分项来记录触发器是否打开成功:

\/scoreboard objectives add is_typed dummy

然后在等待玩家输入密码的过程中,不断重复执行:

\/execute as 玩家 store success score @s is_typed run scoreboard players enable @s password

随后检测就可以了。

第二个问题就更简单了,因为这个问题没有标准答案,我们也不会在这章讨论这个问题。

现在,我们成功解决了输入的问题,整个『注册\/登录』系统的最大难关已被拔除。在下一章,我们将会尝试搭建一个简陋的beta版本,来检测一下我们的想法是否可行。

上一章目 录下一章存书签
站内强推【快穿】欢迎来到手撕白莲炼狱 穿成假千金,真千金对我嘎嘎狂宠 我跟极品娘把缺德奶奶嫁出去了 仙府:资质平平的我只好苟出长生 废柴光明圣女的异世界求生指南 我,大明长生者,历经十六帝 搬空全球穿七零,科研军嫂有点颠 开局便有念能力 碧蓝航线界限 末世重生后,我获得了无限空间! 被拒亲后,我变强了,也变态了 海洋:赶海是要运气的,刚好我有 养只小人鱼 火影:我带着转生眼穿越了 全民觉醒:你管死灵法师叫骑士? 天脉神主 男欢女爱 异界:开局买下白毛兽耳娘 遍地尤物 绝色神雕 
经典收藏学霸的军工科研系统 代号修罗最新章节 全球高武,提前破局 从阳神开始掠夺 洪荒,不成圣照样逍遥 吞噬古帝 洪荒:有此义子,我鸿钧想当好人 长生:从乞丐开始 半截入土:却给我曹贼系统? 谍战迷雾 领主:我有技能天赋树 民国之谍战先锋 海贼王之血色大剑豪 万古帝劫 石榴花开朵朵香 穿越做皇帝,体验三千嫔妃 啥家庭啊?流放路上带着千亿物资养男人 温州外来媳妇儿 吞天鲲 杂灵根的我,成为女帝鼎炉 
最近更新玄幻:我开挖掘机凿穿神话长河 别叨扰!我要去思量岛搞大事 重生申公豹之逆世封神 破碎天域 穿越之汴京秘恋 意外穿越古代当赘婿 玄幻之吾辈剑修当自立 穿越成了乞丐,但是武力值很高 无敌从掠夺词条开始 洪荒:不给我天庭,我就去地府 灵渊启世录 万界左轮传说 逆世九龙:破魔联盟之路 剑图仙影:灵玉之约 全民领主:SSS级机甲兵团横扫异世界 洪荒,地道本源化形,谁敢杀我! 我的徒弟们都太逆天了! 黑神话悟空穿越篇 血玉玄天 太虚逐星河 
Minecraft指令手册 你好MC - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - Minecraft指令手册全文阅读 - 好看的玄幻魔法小说