本帖最后由 黑茶RGO 于 2020-1-17 16:34 编辑 
1.【已解决】如何用summon指令召唤绿衣傻子村民
2.【已解决】如何用summon指令召唤特定职业特定等级的不能交易的村民(行为要跟无业游民一样到处走动而不是在某个工作方块附近徘徊)
3.如何使带有“jobless_villager”tag的成年村民一直保持没有职业的状态,无法获得职业,即使附近有空闲的工作方块(同时行为也要跟正常的无业游民一样)
4.如何使有自定义交易的村民无论发生什么也不会涨价和降价,也不会出现缺货或者升级的情况
5.如何使有职业的村民永远不补货(去工作方块处干活并发出对应的声音)
6.【已解决】如何用选择器分别指定可以交易的村民和不能交易的村民(不是有职业的村民和没有职业的村民)
1.【已解决】
2.【已解决】
3.如何使带有“jobless_villager”tag的成年村民一直保持没有职业的状态,无法获得职业,即使附近有空闲的工作方块(同时行为也要跟正常的无业游民一样)
4.如何使有自定义交易的村民无论发生什么也不会涨价和降价,也不会出现缺货或者升级的情况
5.如何使有职业的村民永远不补货(去工作方块处干活并发出对应的声音)
6.【已解决】
1.复制代码
2.复制代码把n改成职业等级,暂未测试是否有效
3.高频指令能接受吗...反正高频这个:复制代码我坦白这个是1.12-entitydata指令升级来的..不知道如何利用nbt目标选择器XD...
后面的等待研究吧...
- /summon minecraft:villager ~ ~1 ~ {VillagerData:{profession:"minecraft:nitwit"},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}}}
2.
- /summon minecraft:villager ~ ~1 ~ {VillagerData:{lvl:n},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}}}
3.
- /execute as @e[tag=jobless_villager,nbt={}] run data merge entity @s {VillagerData:{lvl:1},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}}}
后面的等待研究吧...
我给你推荐一个网站,可以很明白的自定义实体https://www.mcmod.cn/tools/cbcreator/?_wv=1031
 本帖最后由 黑茶RGO 于 2020-1-16 19:59 编辑 
你只解决了我的第一个问题,后面两个我都试了,没用
xiang_xge 发表于 2020-1-16 14:40
1.
2.把n改成职业等级,暂未测试是否有效
3.高频指令能接受吗...反正高频这个:我坦白这个是1.12-entity ...
你只解决了我的第一个问题,后面两个我都试了,没用
3104026189 发表于 2020-1-16 14:55
我给你推荐一个网站,可以很明白的自定义实体https://www.mcmod.cn/tools/cbcreator/?_wv=1031 ...
那个并不适合生成1.14的村民,更不能解决后面几个问题
针对第2个,你可以试试这个东西(第2都满足但是可以交易)
复制代码(此处以制箭师为例,职业nbt为profession,level为等级,n为变量整形)
- /summon minecraft:villager ~ ~ ~ {VillagerData:{level:n,profession:"minecraft:fletcher"}}
我是谁o 发表于 2020-1-16 22:23
针对第2个,你可以试试这个东西(第2都满足但是可以交易)
(此处以制箭师为例,职业nbt为profession,level为等 ...
直接这样没用的,生成出来还是普通村民
 本帖最后由 我是谁o 于 2020-1-16 22:37 编辑 
1.14确实改了很多关于村民的东西,第2个问题确实是特定等级特定职业也可以交易呐,而且也没问题
 
 
1.14确实改了很多关于村民的东西,第2个问题确实是特定等级特定职业也可以交易呐,而且也没问题
 
 本帖最后由 我是谁o 于 2020-1-16 23:26 编辑 
好吧你的好奇心强,我也最多回答第6个问题
1.首先放置2个命令方块(无限循环)
2.设置一个计分榜,叫jiaoyi
复制代码
3.第一个命令方块输入
复制代码意思是给 不是没有职业的村民(即能交易的村民) 的jiaoyi分数设置为1
第二个命令方块输入
复制代码意思是给 没有职业的村民(即不能交易的村民) 的jiaoyi分数设置为0
然后就可以使用@e[type=villager,scores={jiaoyi=1}]替代有交易的村民,反之,@e[type=villager,scores={jiaoyi=0}]替代无交易的村民
其实弄一个数据包(Data pack)载入就直接可以了,我用的是1.15.1,你可以试试行不行,反正我是试过可以用的
自己开了1.14.4看了一下,发现这还是不能用在1.14,1.15正常不过还是希望有所帮助,1.15修了一些村民标签,wiki的内容找不到1.14了
好吧你的好奇心强,我也最多回答第6个问题
1.首先放置2个命令方块(无限循环)
2.设置一个计分榜,叫jiaoyi
- /scoreboard objectives add jiaoyi dummy
3.第一个命令方块输入
- /scoreboard players set @e[type=minecraft:villager,nbt=!{VillagerData:{profession:"minecraft:none"}}] jiaoyi 1
第二个命令方块输入
- /scoreboard players set @e[type=minecraft:villager,nbt={VillagerData:{profession:"minecraft:none"}}] jiaoyi 0
然后就可以使用@e[type=villager,scores={jiaoyi=1}]替代有交易的村民,反之,@e[type=villager,scores={jiaoyi=0}]替代无交易的村民
其实弄一个数据包(Data pack)载入就直接可以了,我用的是1.15.1,你可以试试行不行,反正我是试过可以用的
自己开了1.14.4看了一下,发现这还是不能用在1.14,1.15正常不过还是希望有所帮助,1.15修了一些村民标签,wiki的内容找不到1.14了
我是谁o 发表于 2020-1-16 23:09
好吧你的好奇心强,我也最多回答第6个问题
1.首先放置2个命令方块(无限循环)
2.设置一个计分榜,叫jiaoyi
不能交易和没有职业是两回事,没有职业的村民也可以通过改nbt使其可以交易,有职业的村民也可以通过改nbt使其不能交易
我是谁o 发表于 2020-1-16 22:35
1.14确实改了很多关于村民的东西,第2个问题确实是特定等级特定职业也可以交易呐,而且也没问题
直接加VillagerData确实没用,而且我的第二个问题是不能交易的特定职业特定等级的村民
 本帖最后由 我是谁o 于 2020-1-17 09:05 编辑 
感谢科普,但是有一个细微的差别是1.14与1.15村民的特性,如果使用1.14,以上问题就难以解决
第二个问题(用1.15的)
复制代码经过多次尝试后,其中level不能<2,profession为职业字符串(已知满足:特定职业特定等级的不能交易的村民)
感谢科普,但是有一个细微的差别是1.14与1.15村民的特性,如果使用1.14,以上问题就难以解决
第二个问题(用1.15的)
- /summon minecraft:villager ~ ~ ~ {VillagerData:{level:2,profession:"minecraft:fletcher"},Offers:{Recipes:[]}}
 本帖最后由 我是谁o 于 2020-1-17 08:50 编辑 
第6个问题的话,原理是一样的,就是你说的能否交易是差异,稍微修改即可
1.设置一个叫jiaoyi的虚拟型计分板
复制代码2.放置2个命令方块(无限循环的,高频红石或循环+始终活动)
2-1.第一个输入复制代码检测所有村民且不带有{Offers:{}}交易标签的村民   (即不可以交易的村民)  的jiaoyi分数设置为0
2-2:第二个输入
复制代码检测所有村民且带有{Offers:{}}交易标签的村民   (即可以交易的村民)  的jiaoyi分数设置为1
(会刷屏在聊天栏,建议使用/gamerule commandBlockOutput false)
现在就可以用@e[type=villager,scores={jiaoyi=1}]替代有交易的村民,反之,@e[type=villager,scores={jiaoyi=0}]替代无交易的村民
(1.15.1反正可以,自己开1.14.4试了,可以用,第4个问题用村民的变种流浪商人不就好了,缺货你就把他的可交易次数调高嘛)
第6个问题的话,原理是一样的,就是你说的能否交易是差异,稍微修改即可
1.设置一个叫jiaoyi的虚拟型计分板
- /scoreboard objectives add jiaoyi dummy
2-1.第一个输入
- /scoreboard players set @e[type=minecraft:villager,nbt=!{Offers:{}}] jiaoyi 0
2-2:第二个输入
- /scoreboard players set @e[type=minecraft:villager,nbt={Offers:{}}] jiaoyi 1
(会刷屏在聊天栏,建议使用/gamerule commandBlockOutput false)
现在就可以用@e[type=villager,scores={jiaoyi=1}]替代有交易的村民,反之,@e[type=villager,scores={jiaoyi=0}]替代无交易的村民
(1.15.1反正可以,自己开1.14.4试了,可以用,第4个问题用村民的变种流浪商人不就好了,缺货你就把他的可交易次数调高嘛)
目前只解决了4和5,其实很简单。。。
4、将该村民的那个特定交易中priceMultiplier字段设定为0就可以了。。。
5、将RestocksToday标签数值修改为2
4、将该村民的那个特定交易中priceMultiplier字段设定为0就可以了。。。
5、将RestocksToday标签数值修改为2
chaoren019 发表于 2020-1-17 15:48
目前只解决了4和5,其实很简单。。。
4、将该村民的那个特定交易中priceMultiplier字段设定为0就可以了。。 ...
补充:第5那个每天要改,你可以对RestocksToday为0或1的指定村民修改nbt,或者直接高频。。。
chaoren019 发表于 2020-1-17 15:50
补充:第5那个每天要改,你可以对RestocksToday为0或1的指定村民修改nbt,或者直接高频。。。 ...
我按你说的做了,村民会疯狂补货。。。
。。。好吧,这不太清楚,抱歉
黑茶RGO 发表于 2020-1-17 16:46
我按你说的做了,村民会疯狂补货。。。
(为什么我这里测试没有问题呢。。。)
 本帖最后由 我是谁o 于 2020-1-18 00:09 编辑 
复制代码一个例子(半成品)
以制箭师为例,offers.Recipes里的buy和sell可以随意替换(自定义交易),若需要无法涨价,降价,要删去每一个Recipes里的复合标签中的priceMultiplier(村庄英雄防不了),升级的情况,level调到5或以上即可避免升级(已成为大师),缺货的想象,有2种解决方法 1.maxUses改大一点(这里是1,不推荐) 2.高频红石
复制代码即可把第一条已交易次数归0,若需第二条交易次数归0,把命令中的Offers.Recipes[0].uses改成Offers.Recipes[1].uses,以此类推
一个满足要求的成品例子
复制代码自定义交易中的Offers.Recipes复合标签中的动buy,sell内的复合标签就行了
满足"自定义交易的村民无论发生什么也不会涨价和降价,也不会出现缺货或者升级的情况"
- /summon minecraft:villager ~ ~ ~ {VillagerData:{level:5,profession:"minecraft:fletcher"},Offers:{Recipes:[{maxUses:1,buy:{id:"minecraft:diamond",Count:1b},sell:{id:"minecraft:diamond",Count:1b},priceMultiplier:0.05f}]}}
 
以制箭师为例,offers.Recipes里的buy和sell可以随意替换(自定义交易),若需要无法涨价,降价,要删去每一个Recipes里的复合标签中的priceMultiplier(村庄英雄防不了),升级的情况,level调到5或以上即可避免升级(已成为大师),缺货的想象,有2种解决方法 1.maxUses改大一点(这里是1,不推荐) 2.高频红石
- /data modify entity UUID或目标选择器 Offers.Recipes[0].uses set value 0
 
一个满足要求的成品例子
- /summon minecraft:villager ~ ~ ~ {VillagerData:{level:5,profession:"minecraft:fletcher"},Offers:{Recipes:[{maxUses:1000000,buy:{id:"minecraft:diamond",Count:1b},sell:{id:"minecraft:diamond",Count:1b}},{maxUses:1000000,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:emerald",Count:1b}}]}}
满足"自定义交易的村民无论发生什么也不会涨价和降价,也不会出现缺货或者升级的情况"
我是谁o 发表于 2020-1-18 00:04
一个例子(半成品)
以制箭师为例,offers.Recipes里的buy和sell可以随意替换(自定义交易),若需要无法涨价,降 ...
好了,现在把第三个问题解决我就给最佳了
3、不知道这个行不行
高频:execute as @e[type=minecraft:villager,tag=jobless_villager,limit=1] if data entity @s Brain.memories."minecraft:job_site" run function villager:jobless
然后搞一个function
data remove entity @s Brain.memories."minecraft:job_site"
data modify entity @s VillagerData.profession set value "minecraft.none"
(但这样好像会将该村民原本的工作方块设定为已占据,导致其他村民不能认领此方块)
(1.15.1实验有效)
高频:execute as @e[type=minecraft:villager,tag=jobless_villager,limit=1] if data entity @s Brain.memories."minecraft:job_site" run function villager:jobless
然后搞一个function
data remove entity @s Brain.memories."minecraft:job_site"
data modify entity @s VillagerData.profession set value "minecraft.none"
(但这样好像会将该村民原本的工作方块设定为已占据,导致其他村民不能认领此方块)
(1.15.1实验有效)
3104026189 发表于 2020-1-16 14:55
我给你推荐一个网站,可以很明白的自定义实体https://www.mcmod.cn/tools/cbcreator/?_wv=1031 ...
这个网站有点毛病村民的交易物可能会串