|
第二卷 常用基础指令 这些指令都是必懂的,想不知道都难。 第八章 /give的用法 2020年1月4日 15:04 1532字 现在我们来学习第一个指令:/give /give 指令可以说是极其基础的指令,很多 Minecraft 玩家都用过它,因为通过 /give 指令可以获取到一些创造模式中无法获取的方块物品,比如大名鼎鼎的命令方块。 下面来介绍一下: /give 作用:可以给予一名或多名玩家物品。 需要权限等级:Java-2,基岩-1 需要作弊:是 格式: Java1.13 以下
JAVA1.13 及1.13 以上
基岩版
好的,现在来逐一介绍一下。 玩家——也就是一个选择玩家作为目标的目标选择器。 物品id——什么是物品ID呢?ID(Identity document),中文翻译“身份标识号”,相当于物品的“身份证”(专业说法是“命名空间ID”)。每个物品都有自己独一无二的ID。 ID 有数字形式(数字ID)和字符串形式(英文ID)。在 Java1.8 版本以前,Minecraft 中的大多数事物都采用数字 id,其中就包括物品和方块。Java1.8 版本更新后,虽然数字 ID 仍然存在,但很多地方都被更加先进也更好记的英文 ID 替换掉。比如钻石在 Java 版的数字 ID 是 264,很不好记,更新后的英文 ID 是 “minecraft:diamond”,其中的 “diamond” 就是钻石的英文,对于会英文的玩家来说就极其方便了(特别是由于添加了命名空间前缀,大大降低了模组物品 ID 重名的可能性)。 在基岩版,数字 ID 和英文 ID 两者在大多数指令中都是通用的。比如后面会讲到 /effect(状态效果),其中的状态效果ID就可以使用数字 ID 或和英文 ID。但需注意,物品 ID 和方块 ID 仍然只认英文 ID。也就是说,这里的 “物品ID” 参数,除非你在使用 Java1.8 之前的版本,你就必须得填入物品的英文 ID。 Java1.13 更新后的 Java 版本,完全抛弃了“数字 ID”,全面使用英文 ID。因此,你现在在 Minecraft Wiki 上只能找到基岩版的数字 ID,而不能找到 Java 版的。要找到 Java 版的,就需要打开页面历史记录,找到 1.13 版本尚未更新时的页面,才能找到 Java 版的数字 ID。 物品数量——这个不用说了吧,哪个中国人不会看中文的? 物品数据值——这个就有意思了,MOJANG 为了“偷懒”,将同类物品集合到数据值中,比如说羊毛,不输入或输入 -1 默认是白色,即相当于输入 0,如果要获得其他颜色就需要输入其他值。 数据值为 -1 相当于数据值为 0,因为数据值默认就是 0,而 -1 的意思是“不考虑数据值”,所以数据值填 -1 同等于不填。注:这段话表述有误,在某些情况下,数据值 -1 和 0 是有差别的,前者代表“不考虑数据值”,后者代表“数据值为 0 的物品/方块”。但在这里的确相当于填 0,因为你不可能获取到一个数据值为 -1 的物品。后面就会遇到作用有差异的情况。 在 Java 版 1.13 版本更新中,数据值被删除(但没有完全被删除,讲 NBT 时会讲到),每个物品也就有了自己对应的英文 ID。比如红色羊毛在 1.13 版本之前其ID是:wool 14。之后就变成了 red_wool。 附加标签——这东西类似于 NBT 标签(实际上是 JSON),以后会讲到。 OK,说了这么多,来举个栗子:
这个的指令意思是给予所有玩家一个钻石块(diamond_block)。 现在来献上一些不能在创造模式的背包中获取的物品吧!
/give的历史 Java版(Alpha)
Java版
携带版(Alpha)
|
11#
2025-11-30 14:59:02
回复
收起回复
|
第九章 tp-传送指令 2020年1月4日 17:15 2073字 (此章最后一次大修改于2022年7月9日) 我相信在看这本书的你一定去玩过私人服务器,里面最经常使用的指令就是 tp(传送)。 Minecraft固有的传送指令是 /tp,其全称实际上是 teleport。由于这条指令深究起来很复杂,加上目前还是学习初期,我们就先了解个皮毛就好。 /tp 作用:将一个实体传送到另一个实体或者是坐标。 需要权限等级:Java-2,基岩-1 需要作弊:是 格式:
这可以将选定的目标传送到另一个实体的位置,比如把张三传送到李四的位置。注意,目的地实体不能为多个,即你并不能将张三传送到李四和王五的位置(就算张三不止一个也不能这样干)。如果将传送目标省略,那么将会传送执行者自己(一般是你自己)。
这可以将选定的目标传送到一个指定的地点。 那什么是水平旋转角度和垂直旋转角度呢? 水平旋转角度(yRot),又叫做 Y 轴旋转角度,指的是实体以 Y 轴为中心,俯视时顺时针的角度。听不懂?没关系,你只需要打开你手机,然后找到一个应用叫做指南针(一般手机有自带)。没有?也没关系,百度地图高德地图之类的总该有吧?或者你现场下一个指南针,甚至自己用磁铁做一个,只要有标上角度就行。 打开指南针,你就会发现在这个指南针的外侧有一圈度数,以正北(0°)开始,顺时针绕一圈 360° 再回到正北。 这个度数叫做什么呢?叫做真北方位角。相应的,以正南(0°)开始,也是顺时针绕一圈 360° 再回到正南的,就是真南方位角。 由于我们位于北半球,所以常见的是以正北为 0°,也就是采用真北方位角的指南针。但这又和我们水平旋转角度有何关系? 其实,我们的水平旋转角度就是 Minecraft 版的真南方位角——以实体为中心,以正南(z 轴正方向)为 0°,顺时针下来,实体朝向和正南方向的夹角(也或者说实体在真南方位角体系中朝向的角度),就是该实体的水平旋转角度。 比如你看向正北,你的朝向按照真南方位角来看,就是朝向 180°,你的水平旋转角度就是 180°;朝向东北,就是朝向 225°,你的水平旋转角度就是 225°;朝向西南,就是朝向 45°,你的水平旋转角度就是 45°....... 懂了吧?如果还没懂......网上随便去找一个以正南为 0° 的指南针的图片,把 Minecraft 的坐标怼上去就清楚了(以后再考虑为这个教程弄点图片)。 另外的垂直旋转角度(xRot),又叫做 X 轴旋转角度,指的是实体与水平面之间的倾斜角。这个可比水平旋转角度好理解多了,相信你应该能够看懂上面的这句话。只不过需要注意一点,对于有头或有眼睛的实体来说(比如玩家),这东西指的是头的朝向(也就是目光的朝向)与水平面之间的夹角,而不是整个身体(这就是为什么你能够看到一个头倾斜着的玩家,但你绝不可能看到一个身子倾斜着的玩家) (有没有一种可能,其实 Minecraft 中的玩家朝正下方或正上方看的时候,实际上是平行与地面的,只是 Mojang 懒得做出这样的效果而已) (唉,这样子就能解释为什么在游戏中,第一人称的玩家看不到自己的下半身了!) 需要注意的是,这个垂直旋转角度虽然以水平面朝向为 0°,但和上面的水平旋转角度不一样的是,这东西引入了负值:朝上为负,朝下为正。比如你头朝上 45° 看天空,那么你的垂直旋转角度就是 -45°;你头朝下 45° 看地板,那么你的垂直旋转角度就是 45°。而且,垂直旋转角度肯定不能超过 +90° 或低于 -90°。 懂了吧?在 tp 中引入垂直旋转角度和水平旋转角度,就可以指定传送目标在传送完成后的朝向(如果未指定,将会不改变朝向,虽然可能没多大作用,但在一些 RPG 地图或服务器,能够让玩家一传过来就看到重要的告示牌或其他的一些东西,那岂不美哉?) 比如下面的指令:
这将会使最近的玩家朝向正西而不改变其位置。 很简单吧?对了,既然坐标有『绝对坐标』和『相对坐标』,那么旋转角度有没有『绝对旋转角度』和『相对旋转角度』呢? 答案是肯定的。 和相对坐标一样,相对旋转角度也是使用符号~代表传送实体本身的朝向,以正数和负数代表角度的增加和减少。比如下面这条指令:
假设这 @p 选中的还是上面那位被迫朝向正西的玩家,那么这条指令将会使他朝向南偏西 60°,头微微朝下 1°。 简单吧?本章也就到这里了,对于初学者来说这些内容就已经足够了。 上面所述的 tp 指令适用于基岩版和 Java 版。在 Java 版 1.13 版本更新之前,tp 的指令用法就这么多。而关于 1.13 版本到底对 tp 进行了怎样的更新,这些内容以及一些更加复杂的东西会在第六十四章具体讲到。 /tp历史 Java版 Classic Server
Indev
Alpha
正式版
携带版(Alpha)
|
12#
2025-12-1 22:40:43
回复
收起回复
|
第十章 kill-熊孩子最喜欢的指令 2020年1月4日 17:45 670字 我的世界网易服务器,最不缺的是什么?是石头?是泥土?是空气?答案是熊孩子! 一进入网易的生存私人服务器,宛如进入了中国版 2B2T 一样,地图遍地狼藉,房子七零八落,偶尔还能看到流淌的岩浆。 幸亏熊孩子们还只会用 TNT,如果它们知道了指令,那么或许这将会是它们最喜欢的指令: /kill (额,其实就算知道了也没权限) 相信大家对这个指令都不陌生。就算你不知道,这种死亡信息你总见过吧: XXX 掉出了这个世界(基岩版为 XXX 失败了) 今天,我们就来看看这个指令,也就是/kill。 /kill 作用:清除一个或多个实体。 权限等级:Java-2,基岩-1 格式:
好的,现在来解读一下。 如果你不写要 kill 的实体,就执行 /kill,会发生啥? 很明显,你死了。 执行 /kill 不填目标选择器 = 自杀,也就是默认选择执行者自己作为指令执行的目标。很多指令都有这样的特征,不写目标相当于选取执行者自己作为执行目标。 什么?你并没有死? 哦,那你一定玩的是基岩版的新版本,因为基岩版中处于创造模式的玩家被 /kill 是死不了的。 但是加上目标选择器就不一样了,你想杀谁就杀谁。 但事实上在 Minecraft 中,/kill 本意是“清除某个实体”,所以使用 /kill 后,你会发现其消息栏中有一个“已清除 XXX”,并不是死亡。 /kill历史 Java 版(Alpha)
Java 版
携带版(Alpha)
|
13#
2025-12-2 22:38:31
回复
收起回复
|
第十一章 gamemode-更改游戏模式 2020年1月4日 18:17 1004字 我相信玩过 Minecraft 的 Java 版的玩家,一定很熟悉这个指令,它就是 /gamemode。 /gamemode,单词是 gamemode,由 game 和 mode 两个单词组成。game 意思是“游戏”,mode 意思是“模式”,拼起来就是游戏模式(gamemode)。 /gamemode 作用:更改单个或多个玩家的游戏模式 需要权限等级:Java-2,基岩-1 需要作弊:是 格式: 高于 Java1.12.2 版本
低于 Java1.13 版本和基岩版
要注意的一点是,Java 版从 1.13 版本快照 17w45a 开始就不支持英文缩写以及数字 id 了。 游戏模式大致分为四种,其中一种为 Java 版独有。这四种分别是生存(survival)、创造(creative)、冒险(adventure)以及旁观者(spectator)注:基岩版 1.19.50.20 更新后,正式加入了旁观者模式。
在新版本的基岩版中,还有一个特殊的模式:
旁观者模式——它不等于基岩版的游客类型玩家,这种模式的玩家可以穿过障碍,不受伤害,没有实体,可以像创造一样飞,并且可以附身于各种生物身上。但处于这种模式玩家是无法进行交互的。 生存模式——不用讲了吧。 创造模式——也不用讲了吧。 冒险模式——在 Java 版中,需要使用特定的工具才能破坏方块(如剪刀剪树叶)。而在基岩版中,什么都无法破坏,这点也被用于基岩版的“服务器保护”中。 如果写的时候不填目标选择器时,会发生啥? 答案是你修改了自己的游戏模式。 没错,就是这么简单。 下面举个栗子:
什么意思呢?意思是将所有玩家的游戏模式都切换成冒险模式。 /gamemode 历史 Java版(Beta)
Java版
携带版(Alpha)
携带版/基岩版
|
14#
2025-12-4 22:48:08
回复
收起回复
|
第十二章 gamerule-自定游戏规则 2020年1月5日 12:19 2391字 搬运注:根据中文 Minecraft Wiki ,在即将到来(本章搬运至 苦力怕论坛 时间为 2025年12月5日)的 Java 1.21.11 群骑纷争正式版中,所有游戏规则的命名均从驼峰式(tuoFengShi)改为下划线式(xia_hua_xian_shi),例如 keepInventory 变成了 keep_inventory,并且部分规则已被进一步重命名。 Mojang:我们进行了一项大更新!重命名了所有游戏规则! 玩家:??! 开发者:%$!*@^%@*%!% 每个游戏都有游戏规则,Minecraft 也不例外。 在基岩版,管理员可以在“设置”界面更改游戏规则,但那些游戏规则显然是不够的。 所以,如果真的要更改游戏规则,那还得用一条专门的指令。 这条指令就是:/gamerule。 /gamerule,和上一章讲过的 /gamemode 是差不多的,都是由两个英文单词组成的指令。game 是游戏的意思,rule 是规则的意思,合并就是游戏规则(gamerule)。 /gamerule 作用:更改游戏规则 需要权限等级:Java-2,基岩-1 格式:
游戏规则有很多个,在章尾我会列出来所有游戏规则以及默认是开启还是关闭。 布尔值知道吧?不知道的话我在这里科普一下。布尔值指的是“真”、“假”,常用于代码中。在 Minecraft 中有的地方使用的是英文,即是 true(真)和 false(假),也可以使用二进制的 1(真)和 0(假)。在 /gamerule 和大多数指令中,使用的都是英文。 大部分游戏规则都是布尔值类型的,即 true 开启,false 关闭。但也有些游戏规则是一个数值。 布尔值和数值参数省略的话,即只填游戏规则,就可以获取该游戏规则当前的状态,比如:
返回就是:游戏规则 commandBlockOutput 目前为:true 现在我列出一些常用的游戏规则: (布尔值游戏规则)
(数字游戏规则)
还有一点,我说一下一个小知识,Minecraft Java 版对于大小写的要求十分严格,而基岩版较为宽松。 /gamerule历史 Java版
携带版
基岩版
|
15#
2025-12-5 22:53:14
回复
收起回复
|
第十三章 clear-清除物品的指令 2020年1月5日 13:09 1917字 (该章节最后大修于2025年11月22日) 我们第一个学习的指令是 /give,作用是给予玩家一样物品。有正必有负,Minecraft 还有一条指令,和 /give完全相反,这条指令就是 /clear。 clear 在英文中有三种意思,分别是:
显然,在上面的意思中,只有“清除”是“获取”的反义词。所以,/clear 的作用是:清除玩家的物品。 /clear 作用:清除玩家的单个或所有物品。 需要权限等级:Java-2,基岩-1 格式: Java1.12.2 之后
基岩版和 Java1.13 之前
目标选择器——这个必须填玩家。不填默认为命令执行者,即清除命令执行者(自己)的所有物品。 物品名——可以填需要清除的指定物品其 ID,不填默认清除指定玩家的所有物品。 要清除物品的数据值——这个如果不填,即同时不填数量(接下来这个参数)和这个参数,或只填写-1,将会只清除所有指定玩家具有指定物品ID的物品,而不会检查其数据值。 清除的最大数量——默认是全部清除(相当于填 -1),填的话可以指定一次清除最大清除多少物品。注意是最大!也就是说,就算背包里的指定物品没有达到最大数量,还是一样会被清除。 在之前的 /give,我们遇到的数据值参数填 -1 和 0 并没有区别。但在这里,若数据值填写 -1 和 0 就有区别了! 例如(以下故事和人物纯属虚构,如有雷同,可能不是巧合),玩基岩版或 Java1.12.2 的你,此时假设你现在在背包中拥有一些橡木和云杉木。你花了整整 1 个小时的时间采集了这些木头,以扩张你的农庄。但是,此时一位邪恶的腐竹盯上了你,由于你砍伐了大量的树木而没有践行可持续发展的理念,这位腐竹决定给你一点教训。 跨过山和大海,穿过人山人海,你终于到达了你的农庄。而此时,这位腐竹已经通过插件看透了你的背包,并准备了以下指令:
激动万分的时刻到了!你颤抖地打开了工作台,开启农庄扩建的第一步。但就在你正要将橡木放进工作台的时候,突然之间,全部橡木消失了! <[生存 1 区]lbwnb>? <[生存 1 区]lbwnb>为啥我一大堆橡木突然不见了?( <[生存 2 区]YYT>??? <[生存 1 区]lbwnb>但云杉木还在啊? 也许是这个土豆服务器刚好吃掉了你的橡木。运气问题?这么想着,你又花了亿点时间收集了足够多的橡木。以防万一,过程中每过几分钟你都会检查一遍背包里,然而一切正常。但是在暗处,有一个隐形的人一直在背后跟踪着你,ta 已经准备好了第二条指令:
<[生存 1 区]lbwnb>xdm我要打开工作台了,祝天下再无土豆服务器! <[生存 2 区]YYT>awa <[生存 1 区]lbwnb>??? <[生存 1 区]lbwnb>好了,这下所有原木都不见了( 你刚想抨击一下这个土豆服务器,突然之间,一道金光闪瞎了你的 24K 钛合金狗眼! <工作台之神>年轻的 lbwnb 哟!刚才服务器吞掉的是这些金块还是这些钻石块? 你一脸懵逼,回答说:“不是,是一堆木头(” <工作台之神>诚实的好孩子,这是你的木头。为了奖励你的诚实,既然你这么需要木头,那么老夫再送你一些树苗~ 你还来不及感到失望,然后就见到了混杂在一堆树苗中的点券...... 注意到了吗?第一个指令中,腐竹使用了 0 作为数据值,清除了你的全部橡木。而第二条指令使用了 -1 作为数据值,却清除了你的全部原木!这是为什么? 如果你在 Minecraft Wiki 上做一番调查,就会发现橡木和云杉木其实共用了同一个物品(方块) ID,也就是 minecraft:log。为了区分这两种木头,橡木使用了 0 作为数据值,而云杉木和其他木头使用了更大的值作为数据值。因此,当指定数据值为 0 时,其实就相当于指定了需要清除的木头种类,即橡木原木。但数据值一定是一个非负整数,而 -1 是一个负数,这意味着 -1 不可能代表一个特定的木头种类。那么 -1 代表什么呢? 匹配当前物品 ID 下的所有物品种类! 下面举个栗子:
这个是以基岩版的格式为基础的,Java 版 1.12.2 之后版本需去掉那个 0。意思是清除所有玩家物品栏里的数据值是 0 的钻石,并且只清除 1 颗。 需要注意,clear这条指令及其特殊,它的数据值参数是在数量参数前面的,而不是填完数量参数再填数据值参数! 清除的最大数量可以填0。但是填0又有什么用呢,这又不会清除任何物品? 实际上,这个操作及其有用,因为我们可以通过填0来探测一个玩家背包里是否有指定物品!比如:
就可以在 Java1.13 以下版本中检测该玩家是否持有一把叫做“天空之脊”的钻石剑。若要在Java1.13及以上版本使用,则需要改为:
(没错,后面那串就是 NBT,这串自定义名字的具体操作会在第一百零四章:物品的显示属性讲到) 如果该玩家并没有持有天空之脊,那么将会返回: 无法清除 XXX 的物品栏,没有可清除的物品 如果该玩家持有一把,那么将会返回: XXX 有1个符合条件的物品 可惜的是,到底有多少物品只会显示,却不会通过红石比较器转换为红石信号。 |
16#
2025-12-6 22:06:44
回复
收起回复
|
本帖最后由 QiguaiAAAA 于 2025-12-8 10:29 编辑 第十四章 fill-填充指令 2020年1月5日 16:38 1449字 相信用过电脑画图的都知道,画图软件都有一个功能,它就是:颜色填充。 Minecraft 也有填充功能,但是它要用到一个指令,就是 /fill。 /fill,在英文里意为“填满;充满;装满;注满......”反正都是满。所以,/fill 的用处是:填满指定范围的空间。 /fill 用处:用特定的方块填充或替换一个区域内的方块。 需要权限等级:Java-2,基岩-1 是否可使用命令方块执行:是 格式: Java1.12.2之后
\\使用replace填充模式时\\
Java1.13之前和基岩版
\\使用replace填充模式时\\
由于 /fill 这个指令比较复杂,导致我们必须要用比较长的篇幅介绍完。 首先,/fill 的填充范围是一个长方体,起点方块坐标和终点方块坐标是两个点,从这两个点衍伸出来的 X、Y、Z 轴会形成一个长方体,这个长方体就是填充的范围。填充的范围包括的方块量不能超过 32767 块,不然无法执行。 需要指定填充的方块,填充模式默认是 replace。比如一个最基本的:
这将会在命令执行者(一般是你自己)脚下生成一个3×3×3的钻石块平台。 填充模式一共有五种——destroy、hollow、keep、outline、replace。 一、destroy destroy 中文意思是“破坏”。所以它的作用跟破坏比较相似,是什么破坏呢? 你玩过生存模式吧,在这个模式,你每破坏一个方块,一般都会获得一些东西。比如破坏木头获得木头;破坏树叶有几率获得树苗;破坏石头会获得圆石...... 没错,destroy 的作用是用指定方块替换填充区域内的所有方块,而被替换的所有方块都被视为被无魔咒的钻石锹或镐采掘而掉落成对应的实体形式,但是只能被剪刀采集的方块,如藤蔓就不会掉落,流体方块更不可能掉落,你见过拿着水方块的玩家吗?如果你玩过1.8之前的版本,可以无视上一句话。 二、hollow hollow 的中文意思是“中空的;空心的;凹陷的”,其作用是仅替换填充区域外层的方块,内部方块被替换为空气。所以用这个可以快速的建造出一个中空的地方,非常适合用于建筑党和创作地图党。 三、keep keep,中文意思是“保持”。所以它的作用也是类似于“保持”的。但它保持的是什么? 填充区域内的所有非空气方块。 keep 的作用是仅用指定方块替换填充区域内的空气方块,如果全都是空气方块当然是全都替换啦。这个非常适合于坑坑洼洼的地方填充东西而不破坏地形。 四、outline outline 的中文意思是“概述;略述;显示…的轮廓;勾勒…的外形”。这么多意思,到底是啥呢?很明显,肯定不是“概述”,所以前面两个,去掉。 所以,这里的 outline 的意思是“显示…的轮廓;勾勒…的外形”。有轮廓、勾勒两个词,你想到什么? 这说明它的效果跟 hollow 是很像的,但是有一点不一样,就是——它不是中空的。 outline 的作用是仅用指定方块替换填充区域外层的方块,内部方块不受影响。这个非常适用于将地图的一部分包起来而不破坏地形。 五、replace replace 是默认的填充方式,中文意思是“代替”。 replace 有更多的参数,所以上面特别列出了一个“使用replace填充模式时”的格式。 replace 多余出来的参数可以指定要替换的方块,保证其他方块不受影响。这个功能很好用,特别是配上 execute 指令,但那也是后话了。 下面来举个例子,当然是 replace 的栗子:
什么意思呢?这条指令的意思是: 将在 (0,45,0) 到 (55,70,55) 的所有石头(stone)替换成数据值为 0 的钻石矿(diamond_ore)。 /fill历史 Java
携带版Alpha
|
17#
2025-12-8 09:34:22
回复
收起回复
|
第十五章 发送消息 2020年1月5日 19:54 1032字 在 Minecraft,如何与玩家交流,那肯定是在聊天框打字了。 但是如果得像服务器里“自动化”,那么命令方块肯定就派上用场了。 之前说过命令方块有三种文本输出形式。第一种是聊天栏显示运行结果;第二种是命令方块界面显示运行结果;第三种是给命令方块取名。 但前两种都是只能管理员查看,第三种又太短,且不美观。这时候我们就需要可以发送消息的指令。在 Minecraft 中,可以发送消息的指令有很多种,但功能都差不多,接下来就来一一讲一下,这里先全部列出来:
首先第一个是 /say。say 可以发送广播消息。发送消息的格式长这样:
我们再来拿用聊天栏发出的信息的话来对比一下:
可以发现,除了名字的显示形式是不一样之外,其他都一样。 /say 作用:广播 需要权限等级:Java-2,基岩-1 格式:
显示信息格式:
/say 这个指令很简单,但又有些那么不简单。 /say 的消息内容不止可以写消息,还可以包括目标选择器和玩家名! 比如:
就可以广播最靠近命令执行地点的玩家。 这功能的适用性非常广,你可以在你的 RPG 地图里使用 /say 目标选择器来让 NPC 说出玩家名,也可以在服务器中检测持有违禁品的玩家并将其用户名广播。 普通玩家无法使用 /say,但这些玩家干嘛要用 /say,好好的在聊天栏内发送消息不好吗? 但 Mojang 就这么神奇,也向普通玩家添加了一条广播指令,它就是 /me。 /me 作用:广播(实际上 Mojang 官方本意是显示一条关于自己正在做什么的信息) 需要权限等级:0 格式:
显示信息格式:
和 say 一样,me 也可以在消息中参杂目标选择器和玩家名,只不过这功能暂且只有基岩版有,Java 版还未添加。me 如果不填消息只会限速玩家昵称。 广播的指令暂且只有这么多。但一个游戏只有世界聊天室那肯定是不行的,所以 Mojang 还添加了一堆用于私信的指令:
作用:告诉一个或多个玩家消息。 需要权限等级:0(目标选择器只能使用 @s 和玩家名,其他类型选择器需要 2 级 [Java] 或 1 级[基岩]权限) 格式:
这些指令都很简单,也没有什么好讲的,只是需要注意权限等级不够目标选择器不能使用除 @s 以外选择器。 /msg 有个变种,这个变种是在 Java1.14 版本加入的,仅 Java 版有:/teammsg /teammsg 即在队伍频道发送消息,可以简写为/tm(?)、 /teammsg、/tm 作用:队伍频道发送消息 需要权限等级:0 格式:
显示信息格式:
关于队伍是个什么东西,讲记分板时会讲到。 |
18#
2025-12-9 16:52:56
回复
收起回复
|
第十六章 title-屏幕标题 2020年1月6日 17:35 1661字 /title 指令正如标题所言。可以在屏幕上显示标题,就像是 PPT 的那个大字一样。这个命令相对于之前我们学过的命令比较复杂。 /title 用处:在单个或多个玩家的游戏屏幕上显示标题 需要权限等级:Java-2,基岩-1 格式:
\\可以清除指定玩家正在显示的标题\\
\\可以复原对指定玩家屏幕标题的渐入、保持、淡出时间的设置\\
\\在指定玩家屏幕正中心显示主标题,如果此时已有主标题正在显示将会覆盖该标题\\
\\在指定玩家屏幕正中心显示主标题时显示副标题,如果此时已有副标题将会覆盖该标题。如果执行指令时并没有主标题正在显示,将会在下次主标题显示时配套出现\\
\\在指定玩家物品栏上方显示一些文字,如果此时已有文字正在显示将会覆盖这些文字\\
\\可以对指定玩家屏幕标题文本显示时的渐入、保持、淡出时长进行设置,单位是游戏刻\\ 相信大多数人看了上面六种格式的说明,已经大致会用这条指令了。不难发现,使用 /title 指令可以在屏幕上的三个地方显示文本,一个是屏幕正中心的“主标题”,一个是主标题下方的“副标题”,一个是物品栏上方的“附加文字”。这就有点像什么?没错,PPT。 让我们打开 PowerPoint 或 WPS Office,新建一个文档,什么排版格式都不要选,然后就是: 单击此处添加标题 单击此处添加副标题 没错,在 Minecraft 使用 /title 指令时显示的主标题和副标题就是这个样。 而物品栏上方的附加文字,我们只需要插入一个横排文本框,将其拖到 PPT 页面的“单击此处添加副标题”正下方,注意要对齐中间,然后输入一点文字,再将文字大小改到差不多 12 左右。没错,就是这么个感觉。 我们也可以在 Minecraft 中使用 /title 做出 PPT 的感觉,只需要这样子摆好命令方块: A→B→C→ 在 Java 版中这样设置:
在基岩版中这样设置:
然后...... 然后你就会看到屏幕上出现了不断闪烁的主标题和副标题,只有物品栏上方的“单击此处添加文本”没有闪。 这是怎么回事? 因为标题有渐入、保持和淡出的时长。 默认这三者的时长是 10 游戏刻(0.5s)、70 游戏刻(3.5s)和 20 游戏刻(1s),可以通过 times 来改变。因为我们要让它一直显示,我们就可以:
这样子我们也就不需要循环并保持开启了,直接改为脉冲、红石控制就可以了。 但是这显示的时间也太长了。如果要清除,我们此时就可以使用clear来清除标题:
同时建议使用 reset 复原刚才对 times 三个值的更改:
现在,我们算是把 /title 六个格式都用了一遍,基本上掌握了 /title 的使用方法。但我们仍然要注意一些东西。 首先副标题不会单独显示,而是需要和主标题配套显示。如果在主标题还未显示时指定了副标题,这个副标题将会在下一次主标题显示时配套出现(注意,主标题淡出后也会清除副标题)。 其次,物品栏上方的文本并不会受到 times、reset 和 clear 的影响,就像刚才作者更改了渐入、保持、淡出三者的时间,只是标题受到了影响,物品栏上方的文本仍然还是按照默认值来。而且,物品栏上方的文本重复显示时并不会闪,而是好端端的正常显示。这两点需要注意。 最后需要注意的是,Java 版的 title 其文本使用的是 JSON 文本,所以刚才的指令中,Java 版和基岩版的指令不太一样。基岩版也有使用 JSON 文本的 title 指令,它是 /titleraw。上一章讲过的 /tell 指令也有一个 JSON 变种:/tellraw。关于 /tellraw 和 /titleraw 会在下一章以及之后的内容提到。 历史 Java
携带版和基岩版
|
19#
2025-12-9 17:05:56
回复
收起回复
|
第十七章 Java版JSON文本初识 2020年1月6日 17:57 3920字 在上一章提到了 JSON 文本。JSON 文本在学习指令前期估计只有 /title 和 /tellraw 会用到,所以我们这边也就先认识一下如何使用 JSON 文本显示文本内容。 JSON /ˈdʒeɪsən/,全称 JavaScript Object Notation,是一种轻量级资料交换格式。而我们今天所要了解的,叫做 JSON 文本(JSON Text)。更确切的来说,是原始 JSON 文本(Raw JSON Text)。 需要注意,JSON ≠ JSON 文本 ≠ 原始 JSON 文本。JSON 有很多用途,不仅仅是拿来给你发消息用的。JSON 文本严格来说指的是原始 JSON 文本经过识别所转化成我们人能够看得懂的文本,没有带 JSON 语法的那种,也就是最终的输出形式。原始 JSON 文本既然带有『原始』二字,那就是指还未经过识别的 JSON 文本,也就是还处于原始形态并带有 JSON 语法的 JSON 文本。 在 Minecraft 中,Java 版和基岩版的 JSON 文本略有差别,但大体都相同。本章主要讲的是 Java 版的原始 JSON 文本的使用,因为在基岩版,原始 JSON 文本在指令中使用程度并不高。我们会在第六十章讲到基岩版的 JSON 文本。 如果你还没搞懂,也没关系,看下去就完事了。 原始 JSON 文本听起来很高级,让人望而生畏,给人一种『作者似乎想要尝试教会你们』的样子,但其实它并不高级,相反还很简单。 简单到什么程度呢?看:
这是一串没有任何内容的简写 JSON 文本,如果将其识别,转化为正式的输出文本格式,那将会是一串空空如也的文本。 我们可以尝试向里面加入一些东西,比如:
这串 JSON 文本被识别后,也就是运行『/tellraw @a "Hello Minecraft"』,将会输出如下内容: Hello Minecraft (注意,JSON 文本的所有括号均为英文半角括号,但阅文平台会自动将英文半角括号改为中文全角括号,所以会有些奇怪) 是不是很简单?但你有没有注意到,上面我提到『这是一串没有任何内容的简写 JSON 文本』,注意『简写』两字。 所以它的真正形态是什么呢?如下:
别害怕,这仍然很简单。 上面这就是刚才那个『"Hello Minecraft"』的真正形态。我们对这个完全体进行解剖,可以得到如下内容:
然后游戏根据以上信息,确认这个原始 JSON 文本的意思是:显示出一串文本(text),内容为『Hello Minecraft』 我们也可以根据以上信息,了解了这个 JSON 文本:
(注:上面提到的什么『组件』之类的,是本书内才有的叫法,仅为了方便大家理解,官方并无此叫法。『组件』的正式叫法是『键-值对』,又叫做『属性-值对』、『栏位-值对』、『名称-值对』。其中,『键-值对』的英文是『key-value pairs』) 这就是 JSON 的基础语法,如果你能看懂上面的内容,那就恭喜你,接下来的内容对你来说将会相当简单。 现在我们已经知道名称叫做 text 的组件,是纯文本内容组件。这个组件所输出的内容是一串平平无奇的文字,没有颜色,也没有什么特效。 如果我们想要给这串文字添加更多的特效,就要了解更多的组件及其使用方法。 在 Minecraft Java 的 JSON 文本中,可用的组件可以分为两类:内容组件和修饰组件。内容组件用于规定每个 JSON 文本对象能够表现出什么样的内容,一个 JSON 文本对象最多只能有一个内容组件;修饰组件用于修饰内容组件,一个 JSON 文本对象可以拥有多个修饰组件来对输出的内容进行修饰。 内容组件最基础的是『text』,即上面接触过的纯文本内容组件。 使用纯文本内容组件,可以显示一串最简单的 JSON 文本,就像上面的那个 JSON 文本:
需要注意,JSON 文本是对大小写敏感的,因此你不能写成如下的样子:
那样子会报错。 上面显示出来的 Hello Minecraft 是最基础的白色。如果要更改文字颜色,那么就需要使用 color 组件(在 Java 版,JSON 文本很难使用分节符)。 color 的值是字符串,也就是说需要被引号包裹着。值支持 17 种颜色 ID: black(黑)、dark_blue(深蓝色)、dark_green(深绿色)、dark_aqua(深湖蓝色)、dark_red(深红)、dark_purple(深紫)、gold(金色)、gray(灰色)、dark_gray(深灰色)、blue(蓝色)、green(绿色)、aqua(湖蓝色)、red(红色)、light_purple(亮紫色)、yellow(黄色)、white(白色)和 reset(取消颜色效果使用默认颜色,一般使用于子 JSON 对象中) 比如: {"text":"Hello Minecraft","color":"light_purple"} 就可以显示一个浅紫色的“Hello Minecraft”。其中,color 颜色组件修饰了 text 纯文本内容组件的颜色为浅紫色。不难发现,如果有多个组件,就得使用英文半角逗号将它们分开。 如果你认为这些颜色还不够,你甚至可以使用 HTML 的十六进制颜色格式来搞到更多的颜色。比如红色的十六位颜色编码就是:#ff0000,用到 JSON 文本里就是: {"text":"Hello Minecraft","color":"#ff0000"} 关于 HTML 十六位颜色编码的具体内容自己上百度或谷歌搜,这儿就不多讲了。 我们知道分节符 § 不仅可以更改文本颜色,还可以为文本添加更多的格式。那么在 JSON 中,我们该如何为一串 JSON 文本添加格式呢? § 能添加五种文本格式,对应到 JSON 中即是:
上面的五个组件其值类型均为布尔值,也就是 true(开启)和 false(关闭)。 在 JSON 文本中,布尔值和 gamerule 一样,是使用 true 和 false,并且并不需要添加括号,因为不是字符串。 比如要为 Hallo Minecraft 添加斜体,你就需要这样子: {"text":"Hello Minecraft","italic":true} 其中,italic 斜体修饰组件修饰了 text 内容组件为斜体。你可以尝试将 italic 改为其他组件,比如 underlined、bold 之类的。 现在我们已经了解了 Java 版 JSON 文本的基本使用方法,基本上日常使用是没有什么问题了。 不对,还有一个问题!如果要在一串 JSON 文本里前面使用一种颜色或文本格式,后面使用另一种颜色或文本格式,那该怎么办? 确实,使用花括号包裹的 JSON 文本,也就是 JSON 文本对象,就算修饰组件能够含有多个,具体下来其实每个组件也只能包含一个,还没有什么先后顺序。 那怎么办呢?能不能一次性就使用多个 JSON 文本对象呢? 答案是可以的。 我们可以将多个 JSON 文本对象排成一个阵列,组成一个 JSON 文本对象列表。 什么是列表?顾名思义,就是将各种东西列在一起的表格。在 JSON 中,列表内的内容一般都是相同类型,比如都是小数,都是整数,都是字符串,内容与内容之间用英文半角逗号分开,外侧用中括号包裹起来,这样子就形成了一个 JSON 列表。 比如下面就是一个全都是整数的 JSON 列表:
那既然列表内可以放数字,那能不能放字符串、布尔值,甚至是 JSON 对象呢? 答案也是可以的。 比如下面这样子: [{"text":"Hello","color":"blue"},{"text":"Minecraft","color":"black"},"Launcher"] JSON 文本在解析的时候,会按照我们正常人所认为的顺序,即从左到右解析。这样子就可以实现 Hello 是蓝色,Minecraft 是黑色,Launcher 是蓝色。 等等,为什么 Launcher 是蓝色而不是白色? 因为在一个 JSON 列表中,列表前面的 JSON 对象定义了文本颜色,这个颜色就会传递下去,就算中途有其他对象使用了 color 改变了其他颜色,也只是作用在这个对象内,下一个对象还是使用这个颜色。文本格式也是一样的道理。 现在就没什么问题了吧? 需要注意一下,Java1.9 版本之前的 JSON,组件名不需要额外加括号,也就是说在 Minecraft Java1.8 版本,你可以直接这样子:
Java JSON历史
|
20#
2025-12-9 17:36:03
回复
收起回复
观察者