我是redstone
本帖最后由 我是redstone 于 2021-3-28 20:04 编辑




2021.12 数据,可能有更多内容


指令和命令块


要了解指令,要先了解指令的执行形式和方法要在聊天框中使用指令,要先打“ / ”在命令块中只用指令,无需/,直接输入即可命令块分为3种,分别为脉冲、连锁、循环,执行方式分为2种,分别是无条件、有条件
重复命令块(左图),连命令块(中图),脉冲命令块(右图) 无条件命令块(上图),有条件命令块(下图)
命令块界面
脉冲命令块脉冲命令块必须有红石信号才可以执行连锁命令块在前面的命令块执行之后才可以执行循环命令块在有符合条件的时间里不停的执行命令


是否条件的有条件的是指在前面一个命令块执行成功之后才可以执行的命令块,无条件的则反之是否需要红石需要红石是指在有红石信号才可以执行的命令块,无需红石则反之


如何获得命令块输入指令"/give @s command_block"即可
指令界面
图片command_block是脉冲命令块,command_block_minecart是命令块矿车,chain_command_block是连锁命令块,repeating_command_block是循环命令块

实体与坐标


实体是一个十分抽象的概念,但是简单的说,一切在MC中可以动的物品都是实体,一切生物都是实体
实体一般一定使用/summon指令来生成,也就是说只要可以用/summon指令生成的一定是实体。一般的实体都可以用刷怪蛋来生成
各式各样的刷怪蛋


如果把我的世界看成一个立体坐标系,xyz就是它的三个坐标轴,那么就很好理解我的世界中的坐标了
绝对坐标与相对坐标
假设我在1,1,1的位置,我的~1~1~1坐标就是2,2,2(绝对坐标用"~"表示),像这样,就非常容易理解其他的绝对坐标了
相对坐标是指以你为坐标原点,以你的视线方向为x轴的坐标(相对坐标用"^"表示)

/testfor与/tp 指令
/testfor指令/testfor指令的用法是/testfor+玩家一般这样用:/testfor @a [x=1,y=1,z=1,r=2],意思是检测在以1,1,1坐标为圆心,半径为2的空间里是否有玩家(如果将@a换成@e,就是检测在这个空间里是否有实体)
/testfor指令一般在循环,无条件,保持开启的命令块中,后面接着一个连锁,有条件,保持开启的命令块。就是如果testfor执行成功(探测到符合条件的实体),就执行连锁命令块中的命令,当然,连锁命令块也可以多加几个,但是一定要保证逻辑的畅通
特别强调!不要出现下面这种指令“/testfor @a [m=1,m=0]”,因为这个指令的意思是指要选择即在创造模式也在生存模式下的玩家,而不是在创造模式和生存模式下的玩家
作者在这里建议各位读者自行积累一定量的目标选择器,这会对指令的学习有很大的帮助


如何用/testfor指令发出红石信号
指令以及命令块状态如上图
红石比较器这样放这个可以探测盔甲架的数量
这是使用后的效果

指令/tp/tp是在Minecraft中用法比较多的指令
/tp指令用法
用法1:/tp <x y z> [checkFor:Boolean]前面的x y z就是要传送到的坐标,后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法2:/tp <x y z> [FaceTo:y value] [FaceTo:x value] [checkFor:Boolean]前面的x y z就是要传送到的坐标,后面的y值是抬头值(-90~90),-90是绝对低头,90是绝对抬头,后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法3:/tp <x y z> facing [facingPos:x y z] [checkFor:Boolean]/tp <x y z> facing [lookAtEntity:target] [checkFor:Boolen]前面的x y z就是要传送到的坐标,如想使用本命令,必须在坐标后加facing单词,后面坐标就是被传送这看向的坐标或者看向的实体。后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法4:/tp <entity:entity> <x y z> [FaceTo:y value] [FaceTo:x value] [checkFor:Boolean]前面的entity是指被传送的实体,接着的的x y z就是要传送到的坐标,后面的y值是抬头值(-90~90),-90是绝对低头,90是绝对抬头,后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法5:/tp <entity:entity> <x y z> [checkFor:Boolean]前面的entity是指被传送的实体接着的x y z就是要传送到的坐标,后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法6:/tp <entity:entity> <x y z> facing [facingPos:x y z] [checkFor:Boolean]/tp <entity:entity> <x y z> facing [lookAtEntity:target] [checkFor:Boolen]前面的entity是被传送的实体接着的x y z就是要传送到的坐标,如想使用本命令,必须在坐标后加facing单词,后面坐标就是被传送这看向的坐标或者看向的实体。后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法7:/tp <pos:entity> [checkFor:Boolean]前面的是要传送到的实体(即传送的目标位置),后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全用法8:/tp <entity:entity> <pos:entity>前面的是要被传送的实体,接着的是要传送到的实体(即传送的目标位置),后面输入的布尔值(true/false)是检测要传送到的区域是否对生存模式安全

控制世界
/title指令语法:/title 玩家 模式<title/subtitle/actionbar> 语句例如:/title @a title 123执行效果展示:
特别注意!subtitle只有玩家有title是才会执行


/say指令语法/say <消息>使用效果相当于在聊天框中输入内容,特别的,在悬浮文本中输入内容(即注释)会在执行中体现如果注释是 a ,输入指令是say b,执行的效果是 [a]:b


/tell (/msg,/w)语法:/tell 玩家 内容这些命令和/say唯一的区别是say指令是在公屏上体现,而/tell只在指定的玩家的屏幕上显示如果悬停文本是 a 指令是 tell @p b,在离这个命令块最近的玩家的屏幕上显示:"a悄悄的对你说:b"


/gamemode语法:/gamemode 模式 玩家模式代号:0=survival(生存模式),1=creative(创造模式),2=adventure(冒险模式)
-->应用:放作弊系统使用指令:testfor,title,gamemode命令块1:循环,无条件,保持开启,testfor @a[m!=2]命令块2:连锁,有条件,保持开启,title@p[m!=2] title 为了保证游戏的公平,请不要作弊(这个命令块是为了更好的体验,可以省略)命令块3:连锁,有条件,保持开启,gamemode 2 @a[m!=2]


/gamerule语法:/gamerule 游戏规则字符串 布尔值(true/false)一般的游戏规则都可以再设置里面调,但下面着一些不可以1、commandblockoutput,设置命令块执行命令是否播报2、disableRaids,是否禁用袭击[JAVA ONLY]3、doInsomnia,控制幻翼生成4、drowningdamage,玩家是否承受窒息伤害5、sendCommandFeedback,玩家执行命令的返回信息是否在聊天框中显示。同时影响命令方块是否保存命令输出文本以上部分内容摘自MinecraftWiki

/time指令/time 指令用于控制时间,用法如下
/time add + 一个整数(时间)意思是把我的世界中从原来的时间增加你输入的整数,你输入的整数的单位是刻(1刻=1/20秒,我的世界中一天为现实世界的20分钟,即24000刻)/time set + 一个整数意思是把我的世界中从原来的时间更改为你输入的时间-->应用时间加倍在命令块中输入指令:/time add 1命令块性质为循环,无条件,保持开启,重复刻度调整为1即可如果要快n(n>2)倍,就把命令中的1改为n-1即可如果要加快1/n(n>1),就把命令块中的重复刻度改为n即可
/time set + 时间段意思是将我的世界中的时间段调整为改时间段时间段有一下几个:
day-白天midnight-午夜noon-正午sunrise-日出sunset-日落


/toggledownfall和/weather用法:
区别:toggledownfall只可以随机切换天气,而weather可以切换到指定天气或者查询天气weather数值:clear:晴天rain:下雨thunder:雷暴


/difficulty用法:
数值:0=p=peaceful(和平)1=e=easy(简单)2=n=normal(普通)3=h=hard(困难)


我上面讲了这些指令,如果想用没讲过的/不会的怎么办?用/help用法:/help 需要查的命令系统就会告诉你指令的基本使用方法,当然系统的内容十分不详细/difficulty语法:/difficulty 难度值难度值:0=p=peaceful1=e=easy2=n=normal3=h=hard





改变自己
/effect


用法:
/effect 目标实体 效果名 持续时间 级数 是否隐藏粒子效果(用来添加/覆盖效果)------或者-----/effect 目标实体 clear(用于清除所有效果)速度 speed 1
缓慢 slowness 2
急迫 haste 3
挖掘疲劳 mining_fatigue 4
力量 strength 5
瞬间治疗 instant_health 6
瞬间伤害 instant_damage 7
跳跃提升 jump_boost 8
反胃 nausea 9
生命恢复 regeneration 10
抗性提升 resistance 11
防火 fire_resistance 12
水下呼吸 water_breathing 13
隐身 invisibility 14
失明 blindness 15
夜视 night_vision 16
饥饿 hunger 17
虚弱 weakness 18
中毒 poison 19
凋零 wither 20
生命提升 health_boost 21
伤害吸收 absorption 22
饱和 saturation 23
飘浮 levitation 24
中毒(致命) fatal_poison 25
潮涌能量 conduit_power 26
缓降 slow_falling 27
不祥之兆 bad_omen 28
村庄英雄 village_hero 29
——转载自MinecraftWiki以上是/effect指令的全部数值和字符串
-->应用:起床战争加成器制作指令模块1(请使用/tickingarea设置成常加载区块,用法:/tickingarea x y z x y z,这个指令会在以后详细讲)/execute @a ~~~ detect ~~-1~ gold_block 0 summon zombie kill ~~~循环,无条件,保持开启/execute @e[type=zombie,name=kill] ~~~ effect @p[r=2] health_boost 3 3 true连锁,有条件的,保持开启kill @e[type=zombie]连锁,有条件的,保持开启中国版:kill @e[type = item,name = 腐肉]国际版:kill @e[type = item , name = rotten_flash]连锁,有条件的,保持开启
/execute @a ~~~ detect ~~-1~ emerald_block 0 summon zombie fast ~~~循环,无条件,保持开启/execute @e[type=zombie,name=fast] ~~~ effect @p[r=2] speed 3 3 true连锁,有条件的,保持开启kill @e[type=zombie]连锁,有条件的,保持开启中国版:kill @e[type = item , name = 腐肉]国际版:kill @e[type = item , name = rotten_flash]连锁,有条件的,保持开启
意思是如果在金块上就可以回血,在绿宝石上就可以加速






/particle指令
语法:/particle 粒子 坐标


/tag用法
用法1:/tag 实体 add/remove 标签名称add是添加,remove是移除tag可以作为目标选择器的标签使用例如:/testfor @a[tag=Minecraft_Lover]探测是否有Minecraft_Lover标签的玩家
用法2:/tag 实体 list列出所有被提及的实体的标签
-->指令答题(判断题/选择题)以后再讲/scoreboard是会有更简单的方法
如果自己会一点/scoreboard的话建议自己先看一看可不可以用scoreboard做出更简单的指令答题在正确选项后加命令块:/tag @p add <标签>此处标签使用的是 r+题号在错误选项后加命令块:/tag @p remove <标签>在判题区:/tag @p add pt/testfor @p [tag=pt,tag=r1,tag=r2,.....]/tp @p <x y z>这个是只有全对才可以通过


/function调用资源包中的命令由于资源包的命令不同,语法也不同一般用法是/function+调用块名称

口袋魔法
指令用法
指令/give用法:/give 玩家 物品 数量 数据值 JSON命令常用物品:command_block 命令块
light_block 光明方块
structure_block 结构方块
dye 数据值:4 青金石
barrier 屏障
JSON用法将在命令教程11中详细讲


指令/clear用法:/clear 玩家 物品 数据值 最大数量特别注意!(1) 搞清楚/give语句和/clear语句数据值和物品数量位置的差别!(2)/clear指令执行成功的条件是玩家又要被清除的物品,无论多少


-->应用系统商店(初级)5个圆石购买1个铁矿命令块1:/clear @p cobblestone 0 4脉冲,无条件,保持开启命令块2:/clear @p cobblestone 0 1连锁,有条件的,保持开启命令块3:/give @p iron_ore 1连锁,有条件的,保持开启

面向玩家
execute指令是在我的世界所有指令中可以说是最关键的一条,他是在我的世界地图中使用最多的指令(没有之一)
execute的语法非常的简单,学好这条指令的关键在于逻辑与应用,所以泵篇文章侧重于应用。execute指令的下一种用法将与/fill,/clone,/setblock指令一起讲
/execute 用法1:/execute 玩家 执行坐标 执行命令指令从结构上来说并不是很难,但是这个指令几乎是在我的世界中使用的最多的指令了


-->应用1:填充虚空地形(使用仅限超平坦)/tickingarea ~-1~-1~-1~1~1~1 command/summon command_block_minecart以上两条指令是要在聊天框中打出来的/execute @e[type=command_block_minecart] ~~~ execute @p ~~~ fill ~30 0 ~30 ~-30 3 ~-30 air循环,无条件的,保持开启,循环延迟10-100,根据自己的配置决定
-->应用2:服务器在线时长奖励(会用到/scoreboard代码块,这个代码块将在以后详细讲)/tickingarea ~-1~-1~-1~1~1~1 commad/scoreboard objectives add time dummy 在线时长/scoreboard objectives add time_total dummy 总在线时长(秒)以上三条指令是要在聊天框中打出来的/execute @a ~~~ execute @s ~~~ scoreboard players add @p time 1循环,无条件,保持开启,循环延迟20/execute @a ~~~ execute @s ~~~ scoreboard players add @p time_all 1循环,无条件的,保持开启,循环延迟20/execute @a [scores={time=300}] ~~~ give @s iron_ingot循环,无条件的,保持开启,循环延迟20/tell @a [scores={time=300}] 你的在线时间已经达到奖励标准,奖励铁锭*1连锁,有条件的,保持开启/execute @a [scores={time=300}] ~~~ scoreboard players reset @s time连锁,有条件的,保持开启/scoreboard players add @a time_total 1循环,无条件的,保持开启,循环延迟20

JSON
/give 实体 物品 数量 DATA JSON

在指令教程(9)中,讲了/give 的基本用法,在这里不在重复













高级内容:JSON
1、什么是JSON?

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量的数据交换格式。Minecraft使用它来储存以下数据:在成书、告示牌、自定义名称以及/tellraw、/title命令里的文本。描述基岩版附加包的manifest.json。在资源包里定义模型、声音事件和UI的文件。在行为包中定义实体行为的文件。关于已下载的版本的信息(例如.minecraft/versions/<VERSION>/<VERSION>.json)——Minecraft Wiki












2、/give如何使用JSON?

give 使用JSON是调整变量:can_place_on 和 can_destroy




JSON使用示例(不用换行)


用法:{"can_destroy/can_place_on":{"blocks":["方块ID","方块ID"]}}\

给予自己一个可以破坏金块的铁镐:

/give @s iron_pickaxe 0 1 {"can_destroy":{"blocks":["gold_block"]}}

给予自己一个可以放在金块上的铁块

/give @s iron_block 0 1 {"can_place_on":{"blocks":["gold_block"]}}









3、总结JSON语句的特点

(1)用一个大括号包裹住所有的短语

(2)用引号包裹住单个短语

4、书写JSON语句是常犯错误

(1)括号前后不对称

(2)引号前后不对称

(3)单词拼写错误

(4)大、中括号打错



(5)打了中文标点




/summon 与 /kill 指令
/kill指令指令用法:/kill 实体 目标选择器
-->应用1:小游戏(步步惊心)/execute @a ~~~ detect ~~-1~ wood 0 kill @p如果玩家踩到木块,就会被杀死


/summon指令用法:summon 生物ID 坐标 NBT标签 名称summon 生物ID 名称 坐标请注意!一下实体在MINECRAFT无法用指令生成item 掉落的物品
falling_block 掉落的方块
npc NPC(仅中国版)
-->应用2:小游戏:步步惊心/execute @a ~~~ detect ~~-1~ wood 0 summon tnt如果玩家踩到木块,就会生成爆炸的TNT

/scoreboard 命令(上)
/scoreboard命令的用法,图片截自Minecraft Wiki建/删除计分板的命令格式:scoreboard objectives add/remove <内部名:字符串> dummy [显示名:字符串]如果第三个参数设置为add,则为添加计分板;设置为remove则反之举例:创建一个显示名为"积分",内部名为"xp"的计分板/scoreboard objectives add xp dummy 积分
内部名就是在用指令是要调用这个计分板是输入的名字,而且创建计分板是不可以创建有相同内部名的计分板显示名就是使用显示命令是显示在分数之上的字符串。显示名可以重复


使计分板显示的命令:scoreboard objectives setdisplay <list/sidebar> [内部名:字符串] [ascending/descending]scoreboard objectives setdisplay belowname [内部名:字符串]
解释:/scoreboard objectives 调用模块:setdisplay 显示位置 显示计分板内部名显示位置:
list:玩家列表(就是暂停菜单的旁边)
sidebar:游戏侧边
belowname:仅在多人模式有效,显示在玩家名下方


增加/减去/设置计分板分数命令:scoreboard players (set/add/remove) <玩家:目标> <内部名:字符串> <数量:整数>第三个参数如果设置为set,就是设置玩家分数;如果设置为add,则为增加分数:设置为remove,则为减去分数


将玩家的分数随机设置命令:/scoreboard players random <目标:目标> <内部名:字符串> <最大值:整数> <最小值:整数>例如将玩家:我是redstone的分数 xp 随机设置到1-100 之间/scoreboard players random 我是redstone xp 1 100一、测试、列出玩家的计分板分数1、测试玩家计分板分数格式:/scoreboard players test [玩家] [记分板项目] [MAX] [MIN]例如测试玩家Steve的c记分板的分数是否高于10,低于100 : /scoreboard players test Steve c 100 10这个可以用于系统商店这是一个系统商店的命令方块:
命令块1
命令块2
命令块3
结构
2、显示玩家积分显示玩家积分格式:/scoreboard players list [玩家名]注意1:如果在命令块中执行该命令,需要先将 commandblockoutput 设置为 true 才可以显示在屏幕上注意2:这个命令无法选择指定记分板


二、玩家记分板的加减命令格式:/scoreboard players operation [玩家名(输入这个位置的玩家记分板分数不会改变,除非是交换)] [记分板] [操作符] [玩家名(输入在这个位置的玩家记分板分数会改变)] [记分板]例如在xp记分板中,将 Steve 与 Alex 的分数转换:/scoreboard players opinion Steve xp >< Alex xp


/scoreboard players operation 指令的用法:/scoreboard players operation [操作目标] [操作目标积分项] [操作] [被操作目标] [被操作目标积分项]操作符号以及它们所代表的的含义:
/scoreboard players operation命令操作符用法,图片来自Minecraft Wiki使用指令/scoreboard players operation a 计分板1 += b 计分板2
之后,a在计分板1中的分数等于a原来在计分板1的分数加上b在计分板2中的分数之和,b在计分板2中的分数不变
-->应用:自动解一元二次方程建立计分板a在一元二次方程一般式中,ax^2+bx+c=0,a,b,c在计分板a中分别以a,b,c表示在使用前,请使用/scoreboard objectives add a dummy 运算/scoreboard objectives add output dummy 方程的根/scoreboard players set a a 数字/scoreboard players set a b 数字/scoreboard players set a c 数字
来设置a,b,c的数值主代码块1:/scoreboard players set i4 a 4/scoreboard players set i2 a 2/scoreboard players set i-1 a -1/scoreboard players set root a 0/scoreboard players set square_root -1/scoreboard players operation b' a = b a/scoreboard players operation b' a *= b a /scoreboard players operation a' a = a a/scoreboard players operation a' a *= c a/scoreboard players operation a' a *= i4 a/scoreboard players operation delta a = b' a/scoreboard players operation delta a -= a' a/scoreboard players operation a2 a = a a/scoreboard players operation a2 a *= i2 a/scoreboard players operation b a /= a2 a/scoreboard players operation b a *= i-1 a/scoreboard players test delta a 0/scoreboard players set root 1 (有条件的)[激活主代码块2] (激活方式是在主代码块2前放置红石块,下同)
主代码块2(算出根号delta)/scoreboard players add square_root a 1/scoreboard players operation square_root a = square_root' a/scoreboard players operation square_root a = square_root'' a/scoreboard players operation square_root' a *= square_root'' a/scoreboard players operation delta' a = delta a[激活主代码块3](同上)
主代码块3(算出根号delta)/scoreboard players remove square_root a 1/scoreboard players test square_root a 0 0[激活主代码块2](有条件的)/scoreboard players remove delta' a 1/scoreboard players test delta' 0 0[激活output1代码块](有条件的)/scoreboard players test delta' 1[激活主代码块3](有条件的)/scoreboard players test root a 0[激活output代码块](有条件的)
output1代码块/scoreboard players operation b a = b' a/scoreboard players operation b a += square_root'' a/scoreboard players operation b' a -= square_root'' a/scoreboard players operation b a = b' a/scoreboard players operation x1 output = b a/scoreboard players operation x2 output = b' a/scoreboard players test root a 0/say 方程无实根/scoreboard players test root a 1/scoreboard objectives setdisplay output sidebar










whatfilmae
这都是基本指令吧,没有提升版的吗

我是redstone
whatfilmae 发表于 2021-3-19 21:16
这都是基本指令吧,没有提升版的吗

下周五更新

kevinss
感谢分享,支持一下

我是redstone
whatfilmae 发表于 2021-3-19 21:16
这都是基本指令吧,没有提升版的吗

更新了哦

我是redstone
已经更新告诫内容,之后会更新红石内容

rd_kaoya
面向玩家/tickingarea那里commad打成command了,不过问题不大(