我想写一个Minecraft mod,它增加了一种新型的暴徒.那可能吗?我看到,在Bukkit中,它EntityType是一个预定义的枚举,这使我相信可能没有办法添加新类型的实体.我希望这是错的.
Xye*_*ene 10
是的你可以!
我将指导您阅读Bukkit论坛的一些教程.特别:
免责声明:第一个是我写的.
你不能真正增加一个完全只是通过Bukkit新的暴徒.你必须使用Spout给它一个不同的皮肤.但是,如果你只是想要一个暴徒,并且满足于分享另一个实体的皮肤,那么它就可以完成.
我们的想法是通过Java的Reflection API注入EntityType值.它看起来像这样:
public static void load() {
try {
Method a = EntityTypes.class.getDeclaredMethod("a", Class.class, String.class, int.class);
a.setAccessible(true);
a.invoke(a, YourEntityClass.class, "Your identifier, can be anything", id_map);
} catch (Exception e) {
//Insert handling code here
}
}
Run Code Online (Sandbox Code Playgroud)
我认为上述内容相当简单.我们获取私有方法的句柄,使其公开,并调用其注册方法.id_map包含要将实体映射到的实体ID.12是火球.映射可以在中找到EntityType.class.请注意,这些ID应该不与他们混淆包名称.两者完全不同.
最后,您实际上需要生成您的实体.MC将继续生成默认实体,因为我们尚未将其从地图中删除.但它只是一个呼唤的问题net.minecraft.server.spawnEntity(your_entity, SpawnReason.CUSTOM).
如果你需要皮肤,我建议你看看Spout插件.它确实需要运行Spout客户端来加入这样的服务器,但是那时的可能性实际上是无限的.