private static final double ZOMBIE_MAX_HEALTH = 1000.0;
@SubscribeEvent
public void onEntityJoinWorld(EntityJoinWorldEvent e) {
if (e.entity instanceof EntityZombie) {
EntityZombie zombie = (EntityZombie) e.entity;
IAttributeInstance attribute = zombie.getEntityAttribute(SharedMonsterAttributes.maxHealth);
// Так как обычно значение скорей целое, чем с плавающей запятой, можно обойтись такой...
Ты когда масималку меняешь, не забывай ещё сетить здоровье при спавне на максимальное.Спасибо.
Не знаю, я вот проверил, у меня всё работает) Кинь кусочек с регистрацией события и покажи где ты его регаешь.когда перезахожу, мобу опять сетается здоровье
@SubscribeEvent
public void onSpawnEntity(EntityJoinWorldEvent e) {
if (e.entity instanceof EntityZombie){
((EntityZombie) e.entity).getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1000.0D);
((EntityZombie) e.entity).setHealth(1000);
}
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
MinecraftForge.EVENT_BUS.register(new EventsForge());
MinecraftForge.EVENT_BUS.register(new EventsForgeClient());
OTCreativeTabs.initialiseTabs();
proxy.preInit();
RegisterMessage.init(network);
network.registerMessage(SPacketPlayerUpdate.class, SPacketPlayerUpdate.class, 0, Side.CLIENT);
Entites.init();
proxy.registerRenderers();
proxy.registerTileEntities();
}
private static final double ZOMBIE_MAX_HEALTH = 1000.0;
@SubscribeEvent
public void onEntityJoinWorld(EntityJoinWorldEvent e) {
if (e.entity instanceof EntityZombie) {
EntityZombie zombie = (EntityZombie) e.entity;
IAttributeInstance attribute = zombie.getEntityAttribute(SharedMonsterAttributes.maxHealth);
// Так как обычно значение скорей целое, чем с плавающей запятой, можно обойтись такой проверкой
if (attribute.getBaseValue() != ZOMBIE_MAX_HEALTH) {
attribute.setBaseValue(ZOMBIE_MAX_HEALTH);
zombie.setHealth(ZOMBIE_MAX_HEALTH);
}
}
}