Несколько строк над мобом

Tkach

Разработчик
Пользователь
Сообщения
25
Нужно над мобом вывести его имя, уровень, редкость, хп, дамаг и там ещё добавится. Сначала всё в его имя вставил, но строка получается уж слишком длинной. Хочу перенести хп и дамаг на другую строку. В голову сразу пришло создать арморстенд и или постоянно его тпшить к мобу, или посадить на моба, но как-то оба варика мне не особо нравятся.
----
В итоге сделал на боссбарах, выглядит чище и правильнее. "Решено"
 
Последнее редактирование:
Java:
///Main.java
package ru.govnokod;


import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

import com.gmail.filoghost.holographicdisplays.api.Hologram;
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI;

public class Main extends JavaPlugin implements Listener,Runnable
{
    Logger log;
    Main plugin;
    Hologram hologram;
    public Main() {
        this.log = Bukkit.getLogger();
    }
 
    public void onEnable() {
        this.log.info("[ASD] By Leymooo включён!");
        plugin = this;
        if (!Bukkit.getPluginManager().isPluginEnabled("HolographicDisplays")) {
            getLogger().severe("*** HolographicDisplays is not installed or not enabled. ***");
            getLogger().severe("*** This plugin will be disabled. ***");
            this.setEnabled(false);
            return;
        }
        Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, plugin, 1L, 1L);
        Bukkit.getPluginManager().registerEvents(this, this);
    }
 
    public void onDisable() {
        this.log.info("[ASD] отключён!");
    }
  
    //Тут спавнишь моба//
  
    @EventHandler
    //Тута делаем голограму
    //Это можно не использовать, если будешь в методе где спавнишь моба, сразу создавать голограму.
    public void Spawn (EntitySpawnEvent e){
        if (e.getEntity().getCustomName() == "TestMob") {
            hologram = HologramsAPI.createHologram(plugin, e.getEntity().getLocation().add(0.0, 2.0, 0.0));
            hologram.appendTextLine("TEST");
        }
    }
    @Override
    //Тута двигаем голограму
    public void run() {
        for (World w : Bukkit.getWorlds()) {
            for (Entity ent : w.getEntities()) {
                if (ent.getCustomName() == "TestMob") {
                    hologram.teleport(ent.getLocation().add(0.0, 2.0, 0.0));
                }
            }
        }
      
    }
    @EventHandler
    public void Death (EntityDeathEvent e){
        if (e.getEntity().getCustomName() == "TestMob") {
            hologram.delete();
        }
    }
}
Авто объединение сообщений:

Исходник
 
Hahatyn, где ООП?) у тебя одна голограмма на сервер
Ну и неуверен, что телепортация в асинхроне будет работать. BukkitAPI не должен вызываться в асинсе

Edit: не увидел, что код не твой. но работать эта шняга с несколькими голограммами не будет
 
Hahatyn, И голограмАпи попробовал, и МультилайнАпи, всё не то и всё не так, как говорится. В голограмах можно ещё привязать её к определённому энтити, так что вызов каждый тик очень неочень
 
Посмотри как это реализовано в TAB от NEZNAMY.
( )
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Назад
Сверху Снизу