Minecraft(我的世界)中文论坛
标题: 修改玩家背包物品信息(免穷举)
作者: ruhuasiyu 时间: 2019-4-28 13:21
标题: 修改玩家背包物品信息(免穷举)
本帖最后由 ruhuasiyu 于 2020-4-26 06:28 编辑
起因是我在做物品处理机,处理任意64个物品压缩成1个带64× Lore的物品时,发现输出到箱子内时,如果要用loot insert的话,必须要解决动态物品id的问题。然后我发现似乎用"type": "minecraft:dynamic"类型配合挖掘潜影箱的战利品表,可以做到这一点。
例如玩家手持64个物品,我们想把其数量修改为32。
execute as @a[nbt={SelectedItem:{Count:64b}}] run function test:modify
test:modify
- setblock ~ 255 ~ shulker_box{Items:[{Slot:0b,id:"minecraft:stone",Count:32b}]}
- data modify block ~ 255 ~ Items[0].id set from entity @s SelectedItem.id
- data modify block ~ 255 ~ Items[0].tag set from entity @s SelectedItem.tag
- replaceitem entity @s weapon.mainhand air
- loot replace entity @s weapon.mainhand 1 mine ~ 255 ~ minecraft:diamond_pickaxe{isShulkerMarker:1b}
- setblock ~ 255 ~ air
复制代码
修改minecraft/loot_tables/blocks/shulker_box.json为使用特定nbt的镐挖掘时,掉落内含物而且不掉落潜影盒。
- {
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:alternatives",
- "children": [
- {
- "type": "minecraft:dynamic",
- "name": "minecraft:contents",
- "conditions": [
- {
- "condition": "minecraft:match_tool",
- "predicate": {
- "nbt":"{isShulkerMarker:1b}"
- }
- }
- ]
- },
- {
- "type": "minecraft:item",
- "functions": [
- {
- "function": "minecraft:copy_name",
- "source": "block_entity"
- },
- {
- "function": "minecraft:copy_nbt",
- "source": "block_entity",
- "ops": [
- {
- "source": "Lock",
- "target": "BlockEntityTag.Lock",
- "op": "replace"
- },
- {
- "source": "LootTable",
- "target": "BlockEntityTag.LootTable",
- "op": "replace"
- },
- {
- "source": "LootTableSeed",
- "target": "BlockEntityTag.LootTableSeed",
- "op": "replace"
- }
- ]
- },
- {
- "function": "minecraft:set_contents",
- "entries": [
- {
- "type": "minecraft:dynamic",
- "name": "minecraft:contents"
- }
- ]
- }
- ],
- "name": "minecraft:shulker_box"
- }
- ]
- }
- ]
- }
- ]
- }
复制代码
具体想修改物品信息的情形,可以通过直接修改潜影盒内物品实现,这里不做赘述。
唯一的缺点就是,需要在255高度引入额外的方块潜影盒,这会导致原有的位于255高度的方块消失。
作者: ⊙v⊙ 时间: 2019-4-28 16:18
本帖最后由 ⊙v⊙ 于 2019-4-27 22:28 编辑
这方法有一段时间了
不过想说的是...修改玩家背包这东西十分,十分有用,且使用频率很高,建议找个地方长期存放盒子。
↓ ↓ ↓ 最重要的id得不到就有点菜,且没什么意义了...
作者: ruhuasiyu 时间: 2019-4-28 16:20
不用盒子的方法,chyx在 http://www.mcbbs.net/thread-837334-1-1.html 中发过,但是要穷举物品id
作者: w186429780 时间: 2019-4-28 16:49
我感觉说的对牛逼6666
作者: ruhuasiyu 时间: 2019-4-28 17:24
穷举指的是在loot_table中穷举,function中用的时候是不需要穷举的
作者: ⊙v⊙ 时间: 2019-4-28 17:29
本帖最后由 ⊙v⊙ 于 2019-4-27 23:30 编辑
lt中穷举也是很不好(且十分不建议的)啊...
作者: Ruainbow_ 时间: 2019-4-28 22:44
高度0是基岩来着,替换基岩似乎比有可能替换玩家建筑要赚一点?
作者: ruhuasiyu 时间: 2019-4-29 06:51
不是所有地图高度0都是基岩的……
作者: buhuichongfu 时间: 2019-4-29 07:50
一涉及到指令,看着就有点吃力。
指令一般是用来做RPG地图吗?这类指令,感觉建筑和生存都不会用到。
作者: 1042102543 时间: 2019-4-29 12:49
大佬啊我去,什么鬼代码
作者: Ruainbow_ 时间: 2019-4-29 13:02
彳亍口巴23333
那么在世界边界或者非常遥远的地方加载区块然后使用呢?
作者: ruhuasiyu 时间: 2019-4-29 17:04
加载是问题。你要是想手动强制加载,然后固定坐标或许可以。一般谁会把建筑放在255啊……
作者: ruhuasiyu 时间: 2019-4-29 17:05
做原版模组和rpg都可能会用到,不过rpg基本固定物品所以可能不需要这样的技巧也可以实现。
作者: (=°ω°)丿 时间: 2019-5-1 08:45
本帖最后由 Teenager_Yang 于 2019-5-1 18:15 编辑
data modify 是个好东西。
就是不知道用驴的箱子可不可以……
赶紧去试一下……
跑#
- summon minecraft:donkey ~ ~ ~ {Tags:["test"],ChestedHorse:1b,Items:[{Slot:2b,id:"minecraft:stone",Count:32b}]}
- data modify entity @e[tag=test,limit=1] Items[0].id set from entity @s SelectedItem.id
- data modify entity @e[tag=test,limit=1] Items[0].id set from entity @s SelectedItem.tag
- replaceitem entity @s weapon.mainhand air
- kill @e[tag=test]
复制代码 貌似是可以的。
唯一的缺点就是,需要在255高度引入额外的方块潜影盒,这会导致原有的位于255高度的方块消失。
就是不知道用驴的箱子有什么有什么缺点,反正不用引入额外的方块潜影盒就对了。
写的稍微有点简陋,dalao 稍微改一下就好了。对 loot table 一窍不通。
帖子没看完,谢罪谢罪
不对,是帖子没仔细看
(总感觉自己最近这几天好像有哪不大对劲)
作者: chyx 时间: 2019-5-1 12:00
你写的是什么。。。。
根本没体现出楼主的作用啊。。。
作者: ruhuasiyu 时间: 2019-5-1 12:31
我无语了……我要的是把这个物品送到玩家手上或者背包指定的槽位,你给我生成一个掉落物干嘛……
修改掉落物的nbt有什么可讨论的……
作者: Jokey_钥匙 时间: 2019-5-2 18:54
终于,存读档玩家背包的功能实现了(大雾)
作者: Jokey_钥匙 时间: 2019-5-12 08:18
本帖最后由 467440721 于 2019-5-12 08:24 编辑
没用啊?(指战利品表)
到手一个潜影盒
路径block改成blocks又什么都不掉了
楼主路径的确有问题【
是blocks不是block
战利品表用不了是论坛的锅(直接复制有空格导致游戏无法识别)
作者: 无情王少 时间: 2019-5-15 14:15
我看不懂,什么意思哦
作者: cf6513272991 时间: 2019-5-25 13:04
指令一般是用来做RPG地图吗?
作者: chyx 时间: 2019-10-18 00:56
本帖最后由 chyx 于 2019-10-18 00:58 编辑
因为mojang不让直接修改实体的NBT。
我听说这样做是因为在内存里,一个运行中的实体对象并不是一棵NBTCompound。
只有在存档里,它才是。
所以,我们修改实体NBT,其实是把这个实体保存了,保存成一棵NBT,把命令里要改的NBTmerge进去,再加载merge了的那棵NBT。
而玩家不好这样做。
之前可以改物品的tag里面的原因也是这个。因为tag还真是时时刻刻都是一棵NBT
作者: guo143042 时间: 2019-10-18 09:20
受教了,还能这么搞
作者: 阡喏 时间: 2019-10-19 23:07
牛逼就完事了
作者: Ph-苯 时间: 2020-3-12 21:13
本帖最后由 七刀月复 于 2020-3-13 08:57 编辑
反馈bug
版本:20w10a/11a(不排除之前的版本也有)
当替换主手物品时,潜影盒Slot:1b的物品会替换掉副手位,2b会替换掉靴子,3b会替换掉护腿,4b会替换掉胸甲,5b会替换掉头盔。如果上述潜影盒槽位为空,那么玩家对应槽位物品会被清除。
-----------------------------------------------------------------
基本命令都忘了,太丢人了
作者: ruhuasiyu 时间: 2020-3-12 21:26
你少写了个1吧? https://www.mcbbs.net/thread-874755-1-1.html
作者: Ph-苯 时间: 2020-3-12 21:38
本帖最后由 七刀月复 于 2020-3-13 09:07 编辑
可能是我被命令提示给迷惑了,我有时间看看。————————————————————————————————
我真的被命令提示迷惑了,以为只有这一种格式……
作者: 秋亦风云 时间: 2020-3-17 17:31
大佬,这个代码真的看不懂,虽然只是针对于服主,但是一涉及到指令就睁眼瞎了
作者: 麦克吊 时间: 2020-3-17 20:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: 麦克吊 时间: 2020-3-17 21:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: DJSouth 时间: 2020-3-18 11:26
很多地方都需要。。。。
作者: 黑黑大 时间: 2020-4-13 09:42
额,那个玩家的末影箱有办法吗
作者: 三十晴天 时间: 2020-4-13 16:07
厉害厉害(py人气√)
作者: ruhuasiyu 时间: 2020-4-13 22:16
类似操作,末影箱也属于玩家的slot,将玩家末影箱内容复制到潜影盒后,用特定镐子挖掘并replace 玩家的末影箱栏位的第0格,而且指定覆盖栏位数量为27即可
作者: 12tianxun 时间: 2020-4-14 13:55
讲详细点,都啥意思,
(一脸闷逼不懂数据包的我)
作者: 2629761830 时间: 2020-5-3 23:05
是否可以把玩家的手持数据转移到潜影盒当中,然后再执行后面的loot呢
(我要做副手物品自动转主手)
作者: ruhuasiyu 时间: 2020-5-4 09:51
当然可以,loot到副手并指定只输出1个栏位
作者: Chara404 时间: 2020-5-30 15:03
这条指令我放1.15测试好像无效啊

作者: Chara404 时间: 2020-5-30 15:09
本帖最后由 Chara404 于 2020-5-30 16:46 编辑
是我忘了改json了抱歉(但是改了还是没用啊???)
我测试的结果是改了战利品表后仍不会对NBT起反应,但是生成的潜影盒里会带另一个潜影盒(迷惑)
作者: lianqiuchen 时间: 2020-5-30 19:16
完全没看懂大佬说的什么意思~
作者: 理智反迷你 时间: 2020-7-12 13:08
我觉得直接用clear加give不就可以了....
作者: 名字没有? 时间: 2020-7-15 22:36
谢谢分享!!!
作者: 1539776978 时间: 2020-7-16 10:48
哇,厉害,之前总有人偷东西,不知道可不可以查到别人背包东西
作者: mchengxiaozi 时间: 2020-7-18 21:20
本帖最后由 mchengxiaozi 于 2020-7-18 21:22 编辑
潜影盒如果在高度0的地方可以吗???(如果有人问过了请无视QAQ)
作者: tingting9554132 时间: 2020-7-26 07:00
老老实实 玩生存 看着就花
作者: 毁灭解说 时间: 2020-7-26 10:48
谢谢楼主的分享
作者: jjuyalp 时间: 2020-7-26 12:07
mcbbs有你更精彩
作者: Eternally_yali 时间: 2020-7-26 12:09
代码我看不懂咋办
作者: AppleCarrot 时间: 2020-7-28 20:44
来考考古
其实1.16有了自定义维度,也就没必要把0,255,0的方块替换掉了
完全可以建立一个维度,替换那个维度0,255,0的方块
作者: JunYun 时间: 2020-7-28 22:25
总有一天,我会肉体将会归于尘埃,我的意志亦会随着落英飞散,而你,我的孩子,你终将继承大统!
DND测出是守序善良怎么破?这也太偏了吧
小黑屋随身带
语句可点
来看看我的草稿纸吧
我记忆中最完美的水帖,可惜了,BGM崩了。
目前在Steam方面决定实行改革开放。
作者: 625062218 时间: 2020-7-29 08:11
大佬牛逼 感谢感谢
作者: wansn 时间: 2020-8-16 19:23
炒鸡好用的原版模组,我不仅自己用,还推荐给我的朋友用,大家都说好,强烈推荐!!!(五毛一条,记得删括号)
作者: 永爱不忘 时间: 2020-8-20 11:28
代码 复制好了 人在哪里领
作者: 胖虎123 时间: 2020-8-22 00:28
新萌看了表示无奈看不懂qaq
作者: 430843842 时间: 2020-8-22 01:15
大佬,完全看不明白
作者: lxt123qwe 时间: 2020-8-22 11:37
新萌看不懂hhh
作者: 806の蜗牛 时间: 2020-8-27 10:46
谢谢楼主分享
作者: Dearq 时间: 2020-8-27 11:44
我记得不是有个叫背包编辑器的东西吗。。。
作者: hahaha936 时间: 2020-8-27 14:45
sssssssssssssssssssssss
作者: 执笔抚琴弦 时间: 2020-8-29 10:33
这数据看的脑壳子疼
作者: Jokey_钥匙 时间: 2020-11-12 08:58
RIP rua影盒
1.14-20w46a
作者: Rechard_xu 时间: 2020-12-3 18:04
感觉一涉及到代码我就头大,不愧是大佬,就是感觉穷举ID的话无论是手动还是自动哪个工作量都很大啊