本帖最后由 HYFan_Meng 于 2020-8-23 17:23 编辑 
在清理实体时候调用了ZombieVillager以及Zombie在游戏内测试时候发现ZombieVillager和Zombie有冲突,在翻阅bukkit代码时候发现ZombieVillager继承Zombie,应该怎么解决[配置文件里这俩只要Zombie为true ZombieVillager的设置就无效了]
在清理实体时候调用了ZombieVillager以及Zombie在游戏内测试时候发现ZombieVillager和Zombie有冲突,在翻阅bukkit代码时候发现ZombieVillager继承Zombie,应该怎么解决[配置文件里这俩只要Zombie为true ZombieVillager的设置就无效了]
 本帖最后由 洞穴夜莺 于 2020-8-23 17:25 编辑 
建议使用实体类型的ID而不是使用类名
其次精准匹配类名的方法
x是个对象 y是类
x.getClass() == y.class
建议使用实体类型的ID而不是使用类名
其次精准匹配类名的方法
x是个对象 y是类
x.getClass() == y.class
洞穴夜莺 发表于 2020-8-23 17:24
建议使用实体类型的ID而不是使用类名
这样子的话应该怎么用呢没怎么接触过关于实体,能举个例子嘛
 本帖最后由 洞穴夜莺 于 2020-8-23 17:41 编辑 
Entity#getType().getKey().equals(NamespacedKey.minecraft("你的实体ID除去minecraft:的部分"))
HYFan_Meng 发表于 2020-8-23 17:26
这样子的话应该怎么用呢没怎么接触过关于实体,能举个例子嘛
Entity#getType().getKey().equals(NamespacedKey.minecraft("你的实体ID除去minecraft:的部分"))
eneity.getType()判断
这个应该不会把ZombieVillager当做Zombie吧
这个应该不会把ZombieVillager当做Zombie吧
HYFan_Meng 发表于 2020-8-23 17:26
这样子的话应该怎么用呢没怎么接触过关于实体,能举个例子嘛
在清理实体时候调用了ZombieVillager以及Zombie在游戏内测试时候发现ZombieVillager和Zombie有冲突,在翻阅bukkit代码时候发现ZombieVillager继承Zombie,应该怎么解决[配置文件里这俩只要Zombie为true ZombieVillager的设置就无效了]
说实话,真的没读懂你在说什么
为什么有继承关系就无效
和配置文件究竟有什么关系
怎么“调用”ZombieVillager的
整个问题都没读懂
William_Shi 发表于 2020-8-23 17:38
说实话,真的没读懂你在说什么
为什么有继承关系就无效
和配置文件究竟有什么关系
- } else if (env instanceof ZombieVillager && Main.ClearZombieVillager) {
 
-                             if (!env.hasMetadata("NPC") && !env.hasMetadata("MyPet")) {
 
-                                 env.remove();
 
-                                 ++count;
 
- }
南柯郡守 发表于 2020-8-23 17:36
eneity.getType()判断
这个应该不会把ZombieVillager当做Zombie吧
应该吧emm[应该是EntityType吧emm看Javadoc里没找到你说的这个]
洞穴夜莺 发表于 2020-8-23 17:36
Entity#getType().getKey().equals(NamespacedKey.minecraft("你的实体ID除去minecraft:的部分")) ...
谢谢啦一会有时间去测试
试试
复制代码
?
- entity instanceof ZombieEntity && !(entity instanceof ZombieVillagerEntity)
?
洞穴夜莺 发表于 2020-8-23 17:36
Entity#getType().getKey().equals(NamespacedKey.minecraft("你的实体ID除去minecraft:的部分")) ...
有一点小问题
为什么无法使用Entity.getType呢(1.12.2 paperspigot)
HYFan_Meng 发表于 2020-8-24 09:54
有一点小问题
为什么无法使用Entity.getType呢(1.12.2 paperspigot)
你最好描述一下现象
1.12.2没有这个方法吗?
洞穴夜莺 发表于 2020-8-24 09:57
你最好描述一下现象
1.12.2没有这个方法吗?
我也不知道Javadoc也没看到有
getType提示无法从静态上下文引用非静态 方法 'getType()'

HYFan_Meng 发表于 2020-8-24 10:04
我也不知道Javadoc也没看到有
getType提示无法从静态上下文引用非静态 方法 'getType()'
你需要把Entity对象的变量名写在.前面,而不是直接把Entity写前面,这是我说Entity#getType()的原因
其次如果你是硬编码僵尸的话不需要这么麻烦,直接
- Entity#getType() == EntityType.ZOMBIE_VILLAGER
注意你这样判断的是僵尸村民而不是僵尸
其次各类ID全部是小写
洞穴夜莺 发表于 2020-8-24 10:09
你需要把Entity对象的变量名写在.前面,而不是直接把Entity写前面,这是我说Entity#getType()的原因
其次 ...
emm无法解析 'ClearEntity' 中的方法 'getType'
洞穴夜莺 发表于 2020-8-24 10:09
你需要把Entity对象的变量名写在.前面,而不是直接把Entity写前面,这是我说Entity#getType()的原因
其次 ...
我把源码私发给你你看看应该怎么改emm