【命令方块教程】基岩版服务器能用上一些小功能
minecraft吧
全部回复
仅看楼主
吧务
level 13
1l6mnj 楼主
服务器命令方块教程NO.3[滑稽]
这贴放些小工程
2021年12月17日 05点12分 1
吧务
level 13
1l6mnj 楼主
二楼目录[滑稽]
2021年12月17日 05点12分 2
【第一条】死亡检测
2021年12月17日 06点12分
【第二条】时钟(ydddmm)
2021年12月17日 06点12分
吧务
level 13
1l6mnj 楼主
三楼备用
2021年12月17日 06点12分 3
2021年12月17日 08点12分
【醒目】强烈建议用电脑阅读
2021年12月17日 09点12分
吧务
level 13
1l6mnj 楼主
放卫星[滑稽]回帖达到100出动态命令方块领地教程
2021年12月17日 06点12分 8
吧务
level 13
1l6mnj 楼主
【第一条】死亡检测
基岩版是没有死亡次数计分项的,所以不能靠那个检测,而是利用@a可以选中死亡玩家,@e不能的特性来实现,做起来也是很容易的。话不多说,贴指令[滑稽](为手机用户考虑,附加一张指令截图)
【图片版指令】
【文字版指令】
1. 检测
a:tag @a add death
b:tag @e[type=player] remove death
2. 复活前执行。在c及之后后进行操作,筛选标签使用 @a[tag=death, tag=!spawn]
c:tell @a[tag=death, tag=!spawn] 你无了
没有需要执行的操作时,c:testfor @a[tag=death, tag=!spawn]
d:tag @a[tag=death] add spawn
3. 复活后执行。在g前后增加操作,筛选标签使用 @e[type=player, tag=spawn]
e:tell @e[type=player, tag=spawn] 你活了
没有需要执行的操作时,e:testfor @e[type=player, tag=spawn]
f:tag @e[type=player] remove spawn
其中,全部方块均为始终活动,a、c、e为重复、无条件;b为连锁、无条件;d、f为连锁、有条
2021年12月17日 07点12分 11
吧务
level 13
1l6mnj 楼主
【第二条】时钟
简单的时钟只需要设置延迟增加计分项就可以了,过于简单不做介绍[滑稽]
这里做一个用单变量显示时间的时钟,且有进位功能:
首先明确需求:mc里一天20分钟,现实的平年有365天,以此为依据,得到 1年=365天, 1天=20分钟;
令y=年、d=日、m=分钟,得到变量格式“ydddmm”。如“2021032117”代表“2021年321天17分”。
接下来是指令部分:
【图片版指令①】
【图】以一个延迟1200的重复、无条件、始终活动命令方块开头,后面接的全是连锁、有条件、始终活
【文字版指令①】
0. 设置积分项和定值,在聊天框进行
playTime_new:/scoreboard objectives add playTime_new dummy playtime(ydddmm)
playTime_temp:/scoreboard objectives add playTime_temp dummy playTime_temp
value_100:scoreboard players set value_100 playTime_temp 100
value_100000:scoreboard players setvalue_100000 playTime_temp 100000
1. 分 | 1200延迟
a:scoreboardplayers add @璐村惂鐢ㄦ埛_00000eP馃惥 playTime_new 1
2. 天进位 | 判断前2位是否大于等于20,是则进位
b:scoreboard players operation @a playTime_temp = * playTime_new
c:scoreboard players operation @a playTime_temp %= value_100playTime_temp
d:scoreboard players add @a[scores={playTime_temp=20..}] playTime_new 80
(注:d中,+80等效于+100,-20,作用是进位并清零分钟位)
3. 年进位 | 判断前5位是否大于等于36500,是则进位
e:scoreboard players operation @a playTime_temp = * playTime_new
f:scoreboard players operation @a playTime_temp %= value_100000 playTime_temp
g:scoreboard players add @a[scores={playTime_temp=36500..}] playTime_new 63500
(注:g中,+63500等效于+100000,-36500,作用是进位并清零天位
======分割线======
还可以在此基础上做一个世界计时,把@a改成一串字符,并调整一些细节即可。
世界时间的流动条件是至少一名玩家在线。(上图最长的那个的就是世界计时)
【图片版指令②】
【图】以“world“显示的世界时间
【文字版指令】
1. 分 | 1200延迟
a:testfor @a
b:scoreboard players add world playTime_new 1
2. 天进位 | 判断前2位是否大于等于20,是则进位
c:scoreboard players operation world playTime_temp = worldplayTime_new
d:scoreboard players operation world playTime_temp %= value_100playTime_temp
e:scoreboard players test world playTime_temp 20 *
f:scoreboard players add world playTime_new 80
(注:f中,+80等效于+100,-20,作用是进位并清零分钟位)
3. 年进位 | 判断前5位是否大于等于36500,是则进位
g:scoreboard players operation world playTime_temp = worldplayTime_new
h:scoreboard players operation world playTime_temp %= value_100000playTime_temp
i:scoreboard players test world playTime_temp 36500 *
j:scoreboard players add world playTime_new 63500
(注:j中,+63500等效于+100000,-36500,作用是进位并清零天位)
和玩家时钟一样,以一个延迟1200的重复、无条件、始终活动命令方块开头,
后面接的全是连锁、有条件、始终活动
2021年12月17日 07点12分 12
2021后面多打了个0
2021年12月17日 09点12分
吧务
level 13
1l6mnj 楼主
[滑稽]明年继续
2021年12月24日 15点12分 14
一年后前来拜访
2022年12月28日 10点12分
1