MoeCraft 4

非盈利的、旨在为热爱 MC 的玩家创造最优环境的,自由开放的科技向公益 Modded Minecraft 服务器

https://www.moecraft.net

MoeCraft 创立于 2015 年六月,是一个非盈利的、旨在为热爱 MC 的玩家创造最优环境的公益 Minecraft 服务器

高水平 每份入服申请均由多名老玩家及操作员审核,最大限度确保新玩家素质达到要求

自由 MoeCraft 并无严格的规则来限制玩家的行为,MoeCraft 信任每一位玩家的自我约束能力,即,MoeCraft 开放了几乎一切能开放的功能给全部玩家。

平等 MoeCraft 旨在淡化 OP 对游戏的影响,我们认为,OP 亦为玩家。同时,我们坚信,影响玩家的决策应该由玩家决定。

因为服务器有几个大户家里的机器过多,导致他们家区块被加载的时候服务器的TPS经常下降得很大,影响了正常玩家的游戏体验,故群里有人提议加个投票重启mod。

而MC1.12.2并没有能够这样做的mod,于是我拿命令方块撸了一个,用着还可以。

基本原理

由重启提出者按按钮触发投票,创建一个类型为trigger的计分项目,并给玩家修改的权限。
通过/tellraw给玩家创建可以修改这个trigger的clickevent(同意为1,反对为0)。
规定时间后将所有玩家的分数集中到一个虚拟实体上,检查这个虚拟实体的分数,根据分数是多少来决定下一步动作。如需要全体成员都同意(即分数都为1)则将所有人分数相乘,全部同意的情况下积为1,此时的操作就是进行重启准备,只要有人反对(即分数为0)最终的积就会为0,此时不会进行重启。如需要半数成员同意,则将所有人分数相加,将和与0做比较,大于0的重启,小于等于0的不重启。
执行/stop的命令方块,使用活塞短脉冲发生器产生0.5红时刻的脉冲,防止重启后命令方块依旧被激活。
通过漏斗计时器来进行时间限制。

详细命令

注释:

命令方块种类

每段电路的起始命令方块都是【红石控制,不受制约】的脉冲命令方块;所有它们后面的电路都是【保持开启,条件制约】的连锁命令方块。

活塞短脉冲发生器:

漏斗计时器:

漏斗中的物品数量×2÷2.5=计时器的秒数

红石火把的好处

因为使用比较器时,直到下一次命令执行失败之前,比较器会一直保持输出状态,而不是形成脉冲。故采用能被活塞推掉的红石火把,当被放置时延迟触发活塞推掉红石火把。

关于防误触

防误触指的是防止前一个人的重启申请处理完毕前有第二个人按下提出重启的按钮。/setblock未加参数时,会先检查目标处的方块和命令里指定的方块是否一样,如果一样就会跳过,所以只需要在第一个红石火把处接一个时间足够长的延迟启动活塞即可阻止这段延时内命令方块被再次激活,但此延迟不得大于计算电路前的漏斗计时器和重启电路前的漏斗计时器的计时长度之和。