проблема с attributemodifire

Версия Minecraft
1.7.10
19
0
Как сделать предмет, который ещё при крафте будет иметь такой атрибут (к примеру броня которая при любых обстоятельствах, когда надета даю тебе хп?)
 
929
30
66
Ну в армортике брони player.heal(1F);
Если нужно допустим каждые 5 секунд то(т,к без времени оно будет тебе за секунд 20 раз выдавать допустим пол единицы здоровья)
if(player.ticksExisted % 100 == 0) {//20 тиков 1 секунда,тут 100 тиков 5 секунд
player.heal(1F);//как я понял это 600 хп т.е 1 половинка здоровья , а 1200 это 1 единица здоровья
 
929
30
66
В класс своей брони засунь
Java:
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
       if(!world.isRemote) {
           if(player.ticksExisted % 40 == 0) {// 20 тиков - 1 секунда, думаю понял , тут 40 тиков каждые 2 секунды
               player.heal(1F);//у игрока в общем 12000 хп, половина сердечка это 1F , если нужно по сердцу хилл то ставь 2F и т.д
           }
         }
    }
 
19
0
В класс своей брони засунь
Java:
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
       if(!world.isRemote) {
           if(player.ticksExisted % 40 == 0) {// 20 тиков - 1 секунда, думаю понял , тут 40 тиков каждые 2 секунды
               player.heal(1F);//у игрока в общем 12000 хп, половина сердечка это 1F , если нужно по сердцу хилл то ставь 2F и т.д
           }
         }
    }

аяяй, мой косяк, неправильно объснил, это не плюс к регенерации(но в коде я разобрался, это не совсем плюс, заскриптованный хил на n единиц, не обращайте внимание, просто мысли вслух) нужно в общем не востановление, а увеличение, к примеру - есть броня - 30 хп, нет брони - 20 хп., на командных блоках, просто добавлялся тег attributeModifire? а тут не знаю как.
 

timaxa007

Модератор
5,831
409
672
увеличение, к примеру - есть броня - 30 хп, нет брони - 20 хп.
Java:
IAttributeInstance iai = player.getEntityAttribute(SharedMonsterAttributes.maxHealth);

iai.setBaseValue(iai.getBaseValue() + 10D);//Надел

iai.setBaseValue(iai.getBaseValue() - 10D);//Снял
 
929
30
66
У тебя же бывает ты получил урон , но сердечки на месте , у тебя допустим половина 1 хп ост и тебя ударят и ты не умрешь , т.к 1 единица 600 хп там может ещё 200 хп осталось или сколько угодно.
 

timaxa007

Модератор
5,831
409
672
19
0
Java:
IAttributeInstance iai = player.getEntityAttribute(SharedMonsterAttributes.maxHealth);

iai.setBaseValue(iai.getBaseValue() + 10D);//Надел

iai.setBaseValue(iai.getBaseValue() - 10D);//Снял

либо я максимально кривой, либо кривая у меня среда, но факт остаётся фактом eclipse ругается, что getEntityAttribute неприменим к player
 
19
0
Ох, сейчас стыдно будет

public void onArmorTick(Player player){
iai = player.getEntityAttribute(SharedMonsterAttributes.maxHealth);
if(player.inventory.armorItemInSlot(0).getItem() == Main.WoodenBoots){
iai.setBaseValue(iai.getBaseValue() + 10D);
}
if(player.inventory.armorItemInSlot(0).getItem() != Main.WoodenBoots){
iai.setBaseValue(iai.getBaseValue() - 10D);
}
}
 
929
30
66
Но я бы такое дело не делал в тиках,как я понимаю у тебя каждый тик будет прибавлятьcя по 10 единиц хп(т.е в секунду 200 единиц хп будет прибавлять)
 
Последнее редактирование:
Сверху