Minecraft(我的世界)中文论坛

标题: 一些简单的技术性(可能的)常识 (10/1更新)

作者: Jokey_钥匙    时间: 2019-9-13 00:34
标题: 一些简单的技术性(可能的)常识 (10/1更新)
本帖最后由 Jokey_钥匙 于 2020-5-30 21:39 编辑
1.如果你玩原版模组的话,建筑物不要造太高,尤其是第255格

2.MC的违规检测是和命令执行是错开的(例如同一刻潜影箱中可以放置潜影箱)

3.和玩家不同,生物和盔甲架不存在违规穿戴,穿戴错了顶多不显示

4.由于MC命令由服务端计算,画面由客户端计算,所以实体移动时,坐标是瞬间移动,但是客户端会将移动进行补间(这也是为什么小黑瞬移和短距离tp都有移动动画)

5.如果在召唤盔甲架的同一刻尝试令其转向,尽管数据已改变,但是客户端并不会显示改变后的样子(至少重进存档前不会)。解决方案:在很高的位置召唤然后在tp下来即可

6.dx,dy,dz虽然可以检测实体碰撞箱,但是最小也需要1*1*1,所以如果想检测实体是否碰到某一点的话,函数可以改成这样(感谢@SPGoding的修改):
  1. execute as @e[dx=0,dy=0,dz=0] positioned ~-1 ~-1 ~-1 if entity @s[dx=0,dy=0,dz=0] run……
复制代码
同时这也是视线追踪实体最简单的方法

7.尽管实体不能自定义储存nbt,但是物品可以


8.如果想检测两个非int32的变量(long,List,String,UUID等)可以利用execute store success+data modify set,具体方法如下(假设比较UUIDLeast,两个实体分别为e1和e2,记分板变量为x):
  1. summon minecraft:armor_stant ~ 255 ~ {Tags:["test"],ArmorItems:[{id:"minecraft:stone",Count:1b}]}
  2. data modify entity @e[tag=test,limit=1] ArmorItems[0].tag.Temp set from entity e1 UUIDLeast
  3. execute store success score # x run data modify entity @e[tag=test,limit=1] ArmorItems[0].tag.Temp set from entity e2 UUIDLeast
  4. execute if score # x matched 0 run say 相同
  5. kill @e[tag=test,type=armor_stand]
复制代码

原理:7.的技巧,datamodify的变量若前后相同则返回0


9.投掷物击退的方向和投掷物的运动方向无关,只和投掷的玩家有关,同时仇恨记在该玩家身上

10.修改生物生命值导致其死亡将不会掉落战利品,但如果之前一定时间内有玩家伤害过实体,却会掉落经验

11.data modify和execute store可以修改玩家物品栏和末影箱中的物品数据该特性在19w37a修复(我Jokey就算死,死外边,也不会玩1.15的!)

12.32等级(31倍率)的瞬间治疗和瞬间伤害对玩家以外的生物,只会造成伤害判定,但不会扣血

13.一个生物踏入药水云6刻才会获得第一次效果

14.利用9. 12. 13.可以制作仇恨+击退发生器——利用data modify制作由玩家扔出、含有瞬间治疗伤害31级的药水云,然后tp到目标生物身上6刻(不能将生物tp至药水云)

15.物品模型最大3*3*3,但是选择中心不受此限制——你可以制作无比巨大的模型

16.当scoreboard enable一个实体时的trigger时(假设该实体的trigger从未赋值过),该实体trigger将自动赋值为0

17.如果你想加载多个带资源包的原版模组的话,你需要将这些资源包中的assets/minecraft/models及其子集中的所有json中的overrides的内容全部手动合并

18.如果你想要召唤的尖牙拥有者为玩家,请在召唤时输入以下nbt{OwnerUUIDLeast:0L,OwnerUUIDMost:0L},然后再用data modify


19.恼鬼(似乎?)是唯一一个是不会产生碰撞判定的生物,无论对生物还是方块

20.Passengers只能用于summon,已创造的实体无法更改Passengers

21.如果你一次可能交互两个实体(例如两个村民完全重叠),必定交互最先加载的那个实体

作者: SPGoding    时间: 2019-9-13 00:44
6.
execute as @e[dx=0,dy=0,dz=0] positioned ~-1 ~-1 ~-1 if entity @s[dx=0,dy=0,dz=0] run……

这样写只需遍历一次实体列表
作者: wshycaa    时间: 2019-9-13 01:19
如果造到了255格会怎么样呢…?
作者: ruhuasiyu    时间: 2019-9-13 07:41
wshycaa 发表于 2019-9-13 01:19
如果造到了255格会怎么样呢…?

会被我顶掉
作者: mu_bei    时间: 2019-10-6 11:34
如果在255格上会不会上天
作者: Jokey_钥匙    时间: 2019-10-6 12:22
本帖最后由 Jokey_钥匙 于 2019-10-6 13:00 编辑
mu_bei 发表于 2019-10-6 11:34
如果在255格上会不会上天

不会 但是因为所有要动态修改玩家物品的模组都会用到 rua的潜影盒
(又时也在254用落沙科技)
然后潜影盒通常设置在出生点原点255高的位置
因此 如果建筑在255(254)格时有概率出现一个大洞
↓都一米了还不大?


作者: 924317164    时间: 2019-10-7 19:28
感谢楼主,很有道理,一句话,牛逼。
作者: 541572010q    时间: 2019-10-9 04:29
谢谢分享谢谢楼主
作者: 2781212775    时间: 2020-2-22 13:16
18太有用了咩!我怎么也找不到怎么修改evoker_fangs的Owner,其它的很多也不知道,但是感觉很有用。我想问下1.14版本怎么修改玩家物品栏,我用data modify的时候一直提示错误。
作者: Jokey_钥匙    时间: 2020-2-22 13:47
2781212775 发表于 2020-2-22 13:16
18太有用了咩!我怎么也找不到怎么修改evoker_fangs的Owner,其它的很多也不知道,但是感觉很有用。我想问 ...

data不能直接改
https://www.mcbbs.net/thread-860954-1-1.html
作者: Ruainbow_    时间: 2020-2-27 20:43
execute as @e[dx=0,dy=0,dz=0] positioned ~-1 ~-1 ~-1 if entity @s[dx=0,dy=0,dz=0] run……

这条不能使用。
需要将positioned改成大于-1,但是十分接近-1的数字。比如-0.9999。

作者: 信仰139.    时间: 2020-2-27 20:48
一脸懵逼..
作者: Milky_iLive    时间: 2020-3-14 10:15
非常有用的技巧~
(我就说为什么之前改尖牙的OwnerUUID没效果,应该是需要设定一个初始值才行)
(回头研究骚操作.jpg)