Сборки серверов

СливПлатные

Сейчас онлайн

  • Itz_Koniko
  • Kenny McCormik
  • Sh1pu4kass
  • dead_key
  • SergeyLord
  • Herixis
  • Thanatos
  • TheFriken
  • UN1CORN
  • sedfimedfi
  • Bratka
  • Arth
  • CIKI33
  • Floll4ikYT
  • tjkgeg
  • Kont
  • Fomka_V
  • qeasqurra
  • Icecicerv
  • Mrvimor
  • melinfer
  • fcPlugins
  • Marlowww531
  • mudachie
  • navsha08
  • fergon228
  • Skai
  • 121121312312313
  • solothx
  • krut74891
  • Stormik
  • MrNoobkin
  • TEMJIU
  • Quv
  • WarBanPe
  • defes
  • kinomat

Помощь HP блока

  • Автор темыVINRED5
  • Дата начала
VINRED5
Всем привет, хотел бы узнать есть ли у кого-то идеи, как реализовать HP блока.
Условно, если блок N ломают деревянной киркой, то чтобы его сломать нужно 2 удара, но если этот же блок ломать железной киркой, то нужно только 1 удар.
Примечание: Если ИГРОК1 сломает деревянной киркой 1 раз, а потом этот же блок деревянной киркой сломает ИГРОК2 так же 1 раз, то блок окончательно сломается
 
GPT-4o
Для реализации механики HP блока в Minecraft, можно воспользоваться системой отслеживания состояния блока и взаимодействия с ним. Вот пример, как это можно сделать на Java:

Java:
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.HashMap;
import java.util.Map;

public class HPBlockPlugin extends JavaPlugin implements Listener {
    private final Map<Block, Integer> blockHP = new HashMap<>();

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        Block block = event.getBlock();
        int damage = getDamage(event.getPlayer().getItemInHand().getType());

        if (!blockHP.containsKey(block)) {
            blockHP.put(block, 0);
        }

        int currentHP = blockHP.get(block);
        currentHP += damage;

        if (currentHP >= 2) {
            block.breakNaturally();
            blockHP.remove(block);
        } else {
            blockHP.put(block, currentHP);
            event.setCancelled(true); // Отменяем разрушение блока
        }
    }

    private int getDamage(Material material) {
        switch (material) {
            case WOODEN_PICKAXE:
                return 1;
            case IRON_PICKAXE:
                return 2; // Можно изменить на 1, если хотите, чтобы железная кирка ломала за 1 удар
            default:
                return 0;
        }
    }
}

Этот код создает плагин, который отслеживает, сколько раз блок был поврежден, и в зависимости от типа кирки определяет, сколько урона блок получает.
 
_Dead_
  • _Dead_
  • Жiнка з ароматом пива, шкiра снiжного кальвiна.
  • 156
Всем привет, хотел бы узнать есть ли у кого-то идеи, как реализовать HP блока.
Условно, если блок N ломают деревянной киркой, то чтобы его сломать нужно 2 удара, но если этот же блок ломать железной киркой, то нужно только 1 удар.
Примечание: Если ИГРОК1 сломает деревянной киркой 1 раз, а потом этот же блок деревянной киркой сломает ИГРОК2 так же 1 раз, то блок окончательно сломается
У блока нет HP, у него есть атрибут hardness который отвечает за его твердость
В самой игре механика устроена так что если игрок перестает добывать блок он не учитывается как поломанный, в принцииипе это можно реализовать в моде.
 
ВерхНиз