1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Настройка хп игрока

Тема в разделе "Разработка плагинов для новичков", создана пользователем RuVimer, 19 июн 2020.

  1. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    Всем привет!
    Нужна ваша помощь,
    В Minecraft есть такая проблема как, много сердец которые закрывают пол экрана,
    хочу сделать систему хп как на Hypixel, через %player_health% показывает полное хп, а сердца остались не тронутыми, уже 3 дня думаю как это сделать, есть идеи ?
     
  2. CriticaMobslps

    CriticaMobslps Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CriticaMobs
    Я не играл на Hypixel можно видео либо по подробнее объяснить
     
  3. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    Да, могу объяснить, у меня есть плагин который дает много жизней когда одеваешь определённую броню, примерно 500хп, когда у игрока 500хп то сердечки (хп) закрывают пол экрана, я бы хотел сократить количество сердец до 20, но при этом у игрока было 500хп, через API %player_health% можно увидеть хп игрока в виде double.
     
  4. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
  5. CriticaMobslps

    CriticaMobslps Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CriticaMobs
    Думаю сделать именно так как ты это представляешь нельзя, смотри ты можешь сделать "искусственные" сердца, у игрока будет максимум 20 сердец(всегда), когда одеваешь то сердца добавляются в Map и при каждом получении урона(до 20 сердец) нечего не будет меняться, т.е игрок как бы будет получать урон но будут отниматься "искусственные" сердца
     
  6. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    Вот именно так я и хотел :) а теперь скажи как это сделать :D
     
  7. CriticaMobslps

    CriticaMobslps Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CriticaMobs
    Как я и сказал ты делаешь Map, надевая эту броню ты делаешь не setMaxHealth, а map.put(name, map.get(name) + newHeart);
     
  8. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    Получается, нужно сделать event где игрок будет одевать броню потом создать import java.util.Map; и всё туда запихать ? только не понял что такое name?
     
  9. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
  10. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Map<K,V> : Это как банк с сейфами, Есть ячейка V(Value), но чтобы ее вытащить нужен ключ K(Key). Но чтобы было что вытаскивать ты должен сначала туда что-то поместить. У каждого игрока есть свой уникальный id(UUID),
    это будет нашим ключем, а значением будет то сколько хп ты хочешь добавить
    Код:
            Map<UUID, Double> PlayerHealth = new HashMap<UUID, Double>();
            PlayerHealth.put(Player.getUniqueId(), 500);
    Дальше ты должен обрабатывать EntityDamageEvent, если в мапе есть игрок с хп то вычитаешь урон из хп в мапе, а сам урон сетаешь в 0. Еще тебе надо будет как-то от абуза этих сердец избавится, и возможно кастомный реген сердец в мапе сделать
     
  11. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
  12. WhileInside

    WhileInside Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Прям сейчас попытался сделать плагин, попробуй (вроде протестил, должен работать :D)

    https://github.com/WhileInside/PublicPlugins/tree/master/HealthApi

    Использование:
    Код:
      HealthApi.setHealth(player, health)
      HealthApi.getHealth(player)
      HealthApi.getMaximumHealth(player)
    Не забудь при выходе: (Это уже есть в HealthListener)
    Код:
    HealthApi.removeHealth(player);
    В HealthListener при входе игрока ставится 40 хп, можешь убрать и сделать по своему.

    P.S Можешь ещё попробывать setHealthScale (Если честно, мне ни разу не требовалось поменять максимальное хп игрока, так что как юзать setHealthScale я хз)

    P.S.S не бейте за статики пж, делал по фасту, так что просто было лень делать без статиков :D
     
  13. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    @EventHandler
    public void PlayerHealthFun(Player e)
    {
    Map<UUID, Double> PlayerHealth = new HashMap<UUID, Double>();
    PlayerHealth.put(e.getUniqueId(), 500.0);
    }

    Вот так надо было ?
     
  14. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Совсем нет, тебе нужно посмотреть пару гайдов перед тем как начинать писать
     
  15. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    вот что бывает когда я использую setHealthScale в event PlayerJoinEvent
     

    Вложения:

    • 6666.PNG
      6666.PNG
      Размер файла:
      57,9 КБ
      Просмотров:
      21
    • 555.PNG
      555.PNG
      Размер файла:
      130,6 КБ
      Просмотров:
      20
  16. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    Где можно найти гайды ?) весь ютуб пересмотрел, та и в Java я новенький, хотя я знаю Си С++ С#
     
  17. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa

     
  18. Автор темы
    RuVimer

    RuVimer Ньюби

    Баллы:
    1
    Имя в Minecraft:
    RuVimer
    Спасибо :)
     
  19. CriticaMobslps

    CriticaMobslps Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    CriticaMobs
    Если не ошибаюсь то NBT тэги остаются даже после перезагрузки сервера, так что можешь попробовать сделать с помощью их, гараздо проще и приятнее работать(в зависимости от версии)
     
  20. AgentJhonny

    AgentJhonny Активный участник Пользователь

    Баллы:
    66

Поделиться этой страницей