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

СливПлатные

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

  • Garillla
  • BaMbUk
  • NoneUser11111
  • Sorka_
  • DDD011
  • DoveChen
  • FDxMinh
  • Melo4ek
  • kfajsdfkj
  • noobsmoke
  • okulakovru
  • Daniil337
  • duperpro39
  • Zektx

Помощь Интересный вопрос насчет ивента

S
Версия ядра сервера
1.16+
Интересный вопрос возник, помню что на бокс пвп распространено ивент маяк: спавнится раз в какое-то время, можно ломать, имеет оповещение в чат или просто голограмму над маяком, я не помню. Хочу узнать как это можно реализовать.
 
GPT-4o
Для реализации ивента с маяком в Minecraft PvP, можно использовать плагин на Java, который будет обрабатывать события, связанные со спавном маяка, его ломанием и оповещениями в чат. Вот примерный алгоритм, как это можно сделать:

1. Создание маяка: Определите координаты, где будет спавниться маяк, и задайте время его спавна.

2. Спавн маяка: Используйте таймер для периодического спавна маяка в указанных координатах.

3. Оповещение игроков: При спавне маяка отправляйте сообщение в чат или создавайте голограмму над маяком.

4. Ломание маяка: Обработайте событие, когда игрок ломает маяк, и выполните необходимые действия (например, наградить игрока).

Вот пример кода на Java, который демонстрирует основные моменты:

Java:
import org.bukkit.Bukkit;
import org.bukkit.Location;
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 org.bukkit.scheduler.BukkitRunnable;

public class BeaconEvent extends JavaPlugin implements Listener {
    
    private Location beaconLocation = new Location(Bukkit.getWorld("world"), 100, 64, 100); // Укажите координаты
    private int taskId;

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

    private void startBeaconSpawnTask() {
        taskId = new BukkitRunnable() {
            @Override
            public void run() {
                spawnBeacon();
            }
        }.runTaskTimer(this, 0, 6000).getTaskId(); // Спавн каждые 5 минут
    }

    private void spawnBeacon() {
        Block block = beaconLocation.getBlock();
        block.setType(Material.BEACON);
        Bukkit.broadcastMessage("Маяк спавнится на координатах: " + beaconLocation);
        // Здесь можно добавить код для создания голограммы
    }

    @EventHandler
    public void onBeaconBreak(BlockBreakEvent event) {
        if (event.getBlock().getType() == Material.BEACON) {
            event.getPlayer().sendMessage("Вы сломали маяк!");
            // Здесь можно добавить код для награды игрока
        }
    }
}

Этот код создает маяк в указанных координатах каждые 5 минут и отправляет сообщение в чат при его спавне. Также он обрабатывает событие ломания маяка. Вы можете расширить функционал, добавив голограммы и награды для игроков.
 
ВерхНиз