Java 如何将MaxHealth设置为自定义EntitySkeleton?
我想创建一个自定义骨架,它有一个名称、更多的健康状况并包含其他自定义项。 我可以添加一个名称和Java 如何将MaxHealth设置为自定义EntitySkeleton?,java,entity,minecraft,bukkit,Java,Entity,Minecraft,Bukkit,我想创建一个自定义骨架,它有一个名称、更多的健康状况并包含其他自定义项。 我可以添加一个名称和setHealth(),但我不能setMaxHealth(),而且设置道具和护甲也不起作用 感谢您的帮助,以下是我的代码: Player p = (Player) sender; WorldServer world = ((CraftWorld)p.getWorld()).getHandle(); Location loc = p.getLocation(); if (args.length >
setHealth()
,但我不能setMaxHealth()
,而且设置道具和护甲也不起作用
感谢您的帮助,以下是我的代码:
Player p = (Player) sender;
WorldServer world = ((CraftWorld)p.getWorld()).getHandle();
Location loc = p.getLocation();
if (args.length > 0) {
if (args[0].equalsIgnoreCase("define")) {
//get worldedit selection
if (getWorldEdit().getSelection(p) == null) {
p.sendMessage(title + "Please select a region with WorldEdit");
return false;
}
s = getWorldEdit().getSelection(p);
Location min = s.getMinimumPoint();
Location max = s.getMaximumPoint();
//boss mob creation
EntitySkeleton boss = new EntitySkeleton(world);
boss.setHealth(400);
boss.setCustomName("§4§lDAFT BOSS");
boss.setCustomNameVisible(true);
ItemStack weapon = new ItemStack(Material.DIAMOND_SWORD);
weapon.setDurability((short) 0);
weapon.addEnchantment(Enchantment.DAMAGE_ALL, 5);
weapon.addUnsafeEnchantment(Enchantment.KNOCKBACK, 2);
boss.setLocation(max);
world.addEntity(boss);
}
这可以使用可归属的接口获得,如来自插口的线程中所述
例如: 对于1.9及以上版本:
Entity boss;
Attributable bossAttributable = (Attributable) boss;
AttributeInstance ai = bossAttributable.getAttribute(Attribute.GENERIC_MAX_HEALTH);
ai.setValue(400.0);
对于1.8.8及以下版本,必须采用另一种方式:
Entity boss;
Damageable bossDamageable = (Damageable) boss;
bossDamageable.setMaxHealth(400.0);
1.8.8版本中不存在可归因。我也不知道什么是可损坏的:(你可能需要相应地设置实体的健康状况,否则你会得到一个20健康度的骨架,最大健康度为400,但没有治愈它给了我这个“内部错误”在服务器控制台中:由以下原因引起:java.lang.ClassCastException:net.minecraft.server.v1_8_R1.EntitySkeleton无法在me.sensonic.dcboss.Main.onCommand处转换为org.bukkit.entity.Damageable at me.sensonic.dcboss.Main.onCommand(Main.java:77)~[?:?]在org.bukkit.command.command.PluginCommand.execute(PluginCommand.java:44)~[spiget.jar:git-spiget-c767f-33d5de3]Bukkit中没有EntitySkeleton这样的东西。你可能正在使用CraftBukkit作为你的主库,你不应该这样做!使用带有
EntityType.Skeleton的普通实体,而不是普通的Bukkit实现如果可能的话,你不应该使用NMS(我认为这里就是这种情况)。