本帖最后由 笺墨墨 于 2022-2-1 14:33 编辑
RT
比如我player.getWorld().spawnEntity(location,EntityType.VILLAGER)生成一个村民
如何让该村民无法移动?setAI为false的话村民无法转向,我想让他像正常一样看向附近的玩家,同时无法移动(包括被玩家挤着走)
同时如何让右键该村民时候,不打开对应职业交易界面
RT
比如我player.getWorld().spawnEntity(location,EntityType.VILLAGER)生成一个村民
如何让该村民无法移动?setAI为false的话村民无法转向,我想让他像正常一样看向附近的玩家,同时无法移动(包括被玩家挤着走)
同时如何让右键该村民时候,不打开对应职业交易界面
setGravity(true);但是这种情况村民可能会浮在空中 至于你说的右键该村民时候,不打开对应职业交易界面 你要写再写个事件监听然后setCancelled(true);事件应该是用这个PlayerInteractEntityEvent
无法移动可以用对应的代码给予缓慢255的buff。
被玩家挤着走的话,那可以在村民生成时,保存此村民的坐标,然后用一个循环让这个村民不停地移动到这个位置。(那就不需要第一条了)
至于不打开交易界面,可以给其它生物换个壳,伪装成村民。
当然,这些都是建议。
被玩家挤着走的话,那可以在村民生成时,保存此村民的坐标,然后用一个循环让这个村民不停地移动到这个位置。(那就不需要第一条了)
至于不打开交易界面,可以给其它生物换个壳,伪装成村民。
当然,这些都是建议。
tom666111111 发表于 2022-2-1 14:41
setGravity(true);但是这种情况村民可能会浮在空中 至于你说的右键该村民时候,不打开对应职业交易界面 你 ...
大佬们,你们这些都是自学的吗,有推荐的书嘛
本帖最后由 vvvbbbcz 于 2022-2-1 14:59 编辑
我记得entity有个方法叫e.......WithEntity(具体名字忘了),设成false就可以防止玩家推动。
去掉村民原有的AI后再加个LookAtPlayer的AI就可以看向玩家了
(主要适用于1.16,不同版本可能有差异)
我记得entity有个方法叫e.......WithEntity(具体名字忘了),设成false就可以防止玩家推动。
去掉村民原有的AI后再加个LookAtPlayer的AI就可以看向玩家了
(主要适用于1.16,不同版本可能有差异)
指令或者命令方块
柚子滑稽 发表于 2022-2-1 14:44
无法移动可以用对应的代码给予缓慢255的buff。
被玩家挤着走的话,那可以在村民生成时,保存此村民的坐标, ...
- https://bukkit.windit.net/javadoc/org/bukkit/entity/LivingEntity.html#setCollidable(boolean)
挤着走可以考虑使用这个方法
William_Shi 发表于 2022-2-1 15:07
挤着走可以考虑使用这个方法
怎么实现让某个村民不可交易啊
看了遍文档没找到对应方法
不然的话监听PlayerInteractEntityEvent时候,右键村民会打开生成的村民自带的交易gui,而shift右键才能打开自定义的容器
1006438726 发表于 2022-2-1 14:51
大佬们,你们这些都是自学的吗,有推荐的书嘛
是的自学的
笺墨墨 发表于 2022-2-1 16:58
怎么实现让某个村民不可交易啊
看了遍文档没找到对应方法
你的意思是你写的事件监听会影响到打开箱子?
tom666111111 发表于 2022-2-1 14:41
setGravity(true);但是这种情况村民可能会浮在空中 至于你说的右键该村民时候,不打开对应职业交易界面 你 ...
写错了是setGravity (false)
笺墨墨 发表于 2022-2-1 16:58
怎么实现让某个村民不可交易啊
看了遍文档没找到对应方法
不可交易这个说法略显笼统。比如说 去除这个村民所有的交易项。也可以是不让打开交易界面GUI。请重新界定你的需求。
建议还是加npc插件 去除繁琐的杂事
William_Shi 发表于 2022-2-1 21:56
不可交易这个说法略显笼统。比如说 去除这个村民所有的交易项。也可以是不让打开交易界面GUI。请重新界定 ...
需求差不多就是右键时候打开的是我自定义的一个容器,而不是村民自身的交易界面gui
通过监听PlayerInteractEntityEvent,判断右键指定类型村民(比如图书管理员时)
但这样的话右键打开的是村民交易gui,而shift右键才能打开我自定义的那个容器
我想让他直接右键就能打开
設置Attritube內的MOVEMENTSPEED為0