Minecraft指令手册

你好MC

首页 >> Minecraft指令手册 >> Minecraft指令手册最新章节(目录)
大家在看神墓 都市之破案之王 万古不死,葬天,葬地,葬众生 从明玉功开始:武道长生 高武27世纪 洪荒降临之最强玩家 北马秘闻 神级卡徒 美利坚:我的时代 遮天之身化战仙 
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版本,来检测一下我们的想法是否可行。

上一章目 录下一章存书签
站内强推一胎三宝:妈咪你别跑 绿龙博士 钓鱼万倍返还,开局钓起国民女神 混沌天行 靠属性变强,我在镇守司吃软饭 修仙小书生 没有异能的我却能靠卡片变身 我就是好莱坞 从现在开始当男神 同桌凶猛 穿越七九,我要娶祖孙三代的女神 鬼族修仙传 盘龙之圆满之上 悠悠,此心 近战狂兵 性转贤者,从灵气复苏开始 女修穿年代捡到一条龙脉 五年内必死?我选择速通修仙界! 黜龙 749局:神秘档案 
经典收藏踏天境 开局被逐出圣地,觉醒满级悟性 木叶:从被纲手领养开始 打不过?那等我换个号! 儒道至上?我在异界背唐诗! 幽冥仙途 武侠之神级剑仙 叛出师门:我平步青云 玄幻之神级修炼系统 西游:贫僧不想取西经 镇守禁地的我,原来早就无敌了 凡人修仙传之真灵空间 逼我重生是吧 武神邪帝 本是剑术庸才,那想我的剑会说话 我靠系统斩妖除魔 开局金风细雨楼主,一刀惊天下 长生:一曲唢呐,送葬诸天仙帝 猎魔人之从超凡开始 永不解密 
最近更新从种田养蜂开始长生修仙 九霄道主! 西游:我成大圣胞弟! 港综:五万块起家,打造最强财阀 综武:我的抽奖能召唤历史 巡狩万界 戏精徒儿与清冷师尊 召唤系?不,我的能力是召唤玩家 飞刀破劫:我在修真界当老六 蛇啸洪荒:吞噬成龙 以噬为尊 峥荣记 凡人之大道争锋 云阙仙域 元婴期?异界重开了解一下! 合欢宗当卧底?好在我阳气无极限 九狱逆天 人魔之子成了神 从一穷二白到散修大能 我的熟练度系统专点冷门 
Minecraft指令手册 你好MC - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - Minecraft指令手册全文阅读 - 好看的玄幻魔法小说