Minecraft开发:如何让Entity的is方法兼容自定义实体标签?
解决Entity.is()无法传入实体标签的报错问题
你遇到的问题核心是用错了方法:Entity.is()是用来判断两个实体是否为同一个实例的,参数必须是Entity对象,而你传入的ModEntityTags.HUMANS是实体类型标签(TagKey<EntityType<?>>),类型完全不匹配,强制转换自然没用。
正确的做法是先获取实体的类型,再用类型去匹配标签,代码改成这样:
public static boolean isHuman(Entity pEntity) { return pEntity.getType().is(ModEntityTags.HUMANS); }
为啥要这么做?因为你定义的实体标签是给实体类型打标记的,不是给单个实体实例用的,所以得先拿到实体对应的EntityType,再调用它的is()方法来判断是否属于目标标签。
内容的提问来源于stack exchange,提问作者among us
相关产品推荐
相关产品推荐

