[1.7.10] Не ломаемая броня

1,239
2
24
всем привет,как сделать что бы броня не получала дамага? как не пробовал,постоянно возникает какая то ошибка с рендером. (очертания в слотах брони исчезают,и флудит в консоль ошибкой)
 
1,976
68
220
Ой костыльщики, мама-миа! А setMaxDamage(0); никому в голову не пришёл?
 
608
5
15
AlexSocol написал(а):
Ой костыльщики, мама-миа! А setMaxDamage(0); никому в голову не пришёл?
В последних версиях (~1.2+) добавили фишку, чем меньше хп у брони, тем хреновее она защищает.
Мной проверено, что при setMaxDamage(0) она не защищает вообще.

Я в LivingHurtEvent ставлю броне setDamage(0)
 
1,239
2
24
Код:
private void repairArmor(LivingHurtEvent e)
 {
  EntityPlayer victim = (EntityPlayer) e.entityLiving;

  for(int i = 0; i < 4; i++)
  {
   ItemStack armor = victim.inventory.armorInventory[i];

   if(armor != null)
   {
    armor.setItemDamage( 0 );
   }
  }
 }

я пробовал так,возникает баг с рендером
 
212
0
А в чем баг заключается?
[merge_posts_bbcode]Добавлено: 17.07.2016 18:31:05[/merge_posts_bbcode]

В любом случае, сделай ему maxDamage очень большим (что бы игрок не успевал увидеть зеленой полоски на предмете) и в методе Тика предмета восполняй прочность. Я в своем моде делал тож самое, ток с проверкой на солнце (но суть не в этом) - все работает.
 
1,239
2
24
onUpdate .. мне кажется из за него лагает. может это параноя,но мне так кажется. направьте меня на путь истинный,если это не так. потому что я иногда замечаю упадок фпс,если в предмете делаю что то с onpdate
 
212
0
XuPuPG написал(а):
onUpdate .. мне кажется из за него лагает. может это параноя,но мне так кажется. направьте меня на путь истинный,если это не так. потому что я иногда замечаю упадок фпс,если в предмете делаю что то с onpdate
У меня не лагало, хотя я делал множество проверок в мире, менял прочности и т.п.
 
1,976
68
220
XuPuPG написал(а):
Код:
private void repairArmor(LivingHurtEvent e)
 {
  EntityPlayer victim = (EntityPlayer) e.entityLiving;

  for(int i = 0; i < 4; i++)
  {
   ItemStack armor = victim.inventory.armorInventory;

   if(armor != null)
   {
    armor.setItemDamage( 0 );
   }
  }
 }
У тебя что, ВСЯ броня неломаемой должна быть?! Потому что я не вижу проверки на твою броню.
На счёт онапдейта - лаги явно не из-за него. Каждый entity имеет в себе онапдейт и у тебя же не лагает при обычной игре, а ты думаешь, что причина редких лагов сто процентов в одном-единственном предмете
 
608
5
15
Зачем делать это в он апдейт? Броня ломается только когда игрока бьют, после чего вызывается LivingHurtEvent и вы её чините.
 
1,976
68
220
Ну, например, сделать как в тауме воид-броня - получила урон и регенится. Но не сразу.
А вообще нужно посмотреть что не так в коде брони (какого она не защищает на нуле) [более того, при, скажем, -1000 мелкий зомбик просто ваншотит] и либо переопределить этот метод у себя, либо переписать броню, но это уже для тех, кто лёгких путей не ищет.
А тем, кто ищет, эвенты в помощь :D
 
608
5
15
AlexSocol написал(а):
Ну, например, сделать как в тауме воид-броня - получила урон и регенится. Но не сразу.
А вообще нужно посмотреть что не так в коде брони (какого она не защищает на нуле) [более того, при, скажем, -1000 мелкий зомбик просто ваншотит] и либо переопределить этот метод у себя, либо переписать броню, но это уже для тех, кто лёгких путей не ищет.
А тем, кто ищет, эвенты в помощь :D
Я же сказал, это сделано для эффекта, меньше хп - меньше защита.
 
216
6
19
Отрывок из моего перевода:

10. LivingHurtEvent
Параметры: EntityLivingBase entity, DamageSource source, float ammount
Вызывается, когда сущность ранят.
Применение: Супер-полезное событие, если вам нужно сделать броню которая будет оборонять от огненного урона, увеличивать  урон от магии и т.д.

Думаю в этом отрывке содержится ответ на вопрос.

P.S. svk2140 дело говорит
 
212
0
При всем разнообразии модов, неужели не найдется других способов поломать броню? Если сделать через онапдейт, то не один их этих способов не будет работать на твою броню. Эвент же будет работать только в одном случае.
 
212
0
СТОП. Почему мне раньше это в голову не пришло?)
Код:
@Override
public void setDamage(ItemStack stack, int damage)
    {
     //NOPE!
    }
Это писать в класс брони. Ничто и никогда его не сломает.
 
Сверху