- Баллы
- 76
- Имя в Minecraft
- Blc_Dragon
Жди. (спустя 200 лет появится)Жду код, который даст надпись НАД ником. Или скрины.Фантазёр.
Прост почему то тупанул и воспринимал "над" как "под" (могу, умею, практикую)
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Жди. (спустя 200 лет появится)Жду код, который даст надпись НАД ником. Или скрины.Фантазёр.
Я так и думал.Жди. (спустя 200 лет появится)
Прост почему то тупанул и воспринимал "над" как "под" (могу, умею, практикую)
Подробнее можно?Scoreboard умеет над ником, то там еще будет число, можете заюзать его как количество игроков в клане, или рейтинг клана. А через Factions api можно узнать вражеский игрок или нет.
Скор борд - не может.Не умеет Scoreboard отображать что либо над ником. Товарищи несут хрень.
Не тестил, бейте меня палками...Не умеет Scoreboard отображать что либо над ником. Товарищи несут хрень.
package test;
import java.lang.reflect.Field;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_10_R1.EntityPlayer;
import net.minecraft.server.v1_10_R1.EntityTracker;
import net.minecraft.server.v1_10_R1.WorldServer;
public class Main extends JavaPlugin implements Listener {
@Override
public void onEnable() {
this.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onJoin(PlayerJoinEvent e) {
this.getServer().getScheduler().runTaskLater(
this, () -> {
try {
setPlayerName(e.getPlayer(), "Kek", "Scoreboard magic");
} catch (
NoSuchFieldException | SecurityException | IllegalArgumentException
| IllegalAccessException e1
) {
e1.printStackTrace();
}
}, 60L
);
}
private void setPlayerName(Player player, String newname, String scoreboard)
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
EntityPlayer p = ((CraftPlayer) player).getHandle();
player.setDisplayName(newname);
WorldServer world = (WorldServer) p.world;
EntityTracker tracker = world.tracker;
tracker.untrackEntity(p);
Field f = GameProfile.class.getDeclaredField("name");
f.setAccessible(true);
f.set(p.getProfile(), newname);
tracker.track(p);
ScoreboardManager sbManager = Bukkit.getScoreboardManager();
Scoreboard sb = sbManager.getMainScoreboard();
Objective OBJECTIVE = sb.registerNewObjective("custom", "dummy");
OBJECTIVE.setDisplayName(scoreboard);
OBJECTIVE.setDisplaySlot(DisplaySlot.BELOW_NAME);
this.getServer().getOnlinePlayers().forEach(ps -> ps.setScoreboard(sb));
}
}
Святой.Скор борд - не может.
А вот пакеты - могут.
Не тестил, бейте меня палками...
Java:package test; import java.lang.reflect.Field; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.ScoreboardManager; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.EntityTracker; import net.minecraft.server.v1_10_R1.WorldServer; public class Main extends JavaPlugin implements Listener { @Override public void onEnable() { this.getServer().getPluginManager().registerEvents(this, this); } @EventHandler public void onJoin(PlayerJoinEvent e) { this.getServer().getScheduler().runTaskLater( this, () -> { try { setPlayerName(e.getPlayer(), "Kek", "Scoreboard magic"); } catch ( NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e1 ) { e1.printStackTrace(); } }, 60L ); } private void setPlayerName(Player player, String newname, String scoreboard) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { this.getServer().getPluginManager().callEvent(new PlayerQuitEvent(player, "kek")); EntityPlayer p = ((CraftPlayer) player).getHandle(); player.setDisplayName(newname); WorldServer world = (WorldServer) p.world; EntityTracker tracker = world.tracker; tracker.untrackEntity(p); Field f = GameProfile.class.getDeclaredField("name"); f.setAccessible(true); f.set(p.getProfile(), newname); tracker.track(p); this.getServer().getPluginManager().callEvent(new PlayerJoinEvent(player, "kek")); ScoreboardManager sbManager = Bukkit.getScoreboardManager(); Scoreboard sb = sbManager.getMainScoreboard(); Objective OBJECTIVE = sb.registerNewObjective("custom", "dummy"); OBJECTIVE.setDisplayName(scoreboard); OBJECTIVE.setDisplaySlot(DisplaySlot.BELOW_NAME); this.getServer().getOnlinePlayers().forEach(ps -> ps.setScoreboard(sb)); } }
Это был сарказм...?Святой.
Спасибо тебе огромное.
Из 2 десятков кода я впервые узнал так много новой, полезной инфы. Премного благодарен.
Как видишь, спустя пол года, я всё-таки вернулся.Это был сарказм...?
@CoolBoy и да, вернулся к майну?
PacketPlayOutScoreBoard
Изначально это я сказал, т.к. увидев, что они подключают ненужный плагин, я решил им всё-таки помочьЯ ж говорил, что Scoreboard может. не верующие.
Только я немного дурачек... Уберите вызов PlayerJoinEvent и PlayerQuitEvent, а то зациклитсяСкор борд - не может.
А вот пакеты - могут.
Не тестил, бейте меня палками...
Java:package test; import java.lang.reflect.Field; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.ScoreboardManager; import com.mojang.authlib.GameProfile; import net.minecraft.server.v1_10_R1.EntityPlayer; import net.minecraft.server.v1_10_R1.EntityTracker; import net.minecraft.server.v1_10_R1.WorldServer; public class Main extends JavaPlugin implements Listener { @Override public void onEnable() { this.getServer().getPluginManager().registerEvents(this, this); } @EventHandler public void onJoin(PlayerJoinEvent e) { this.getServer().getScheduler().runTaskLater( this, () -> { try { setPlayerName(e.getPlayer(), "Kek", "Scoreboard magic"); } catch ( NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e1 ) { e1.printStackTrace(); } }, 60L ); } private void setPlayerName(Player player, String newname, String scoreboard) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { this.getServer().getPluginManager().callEvent(new PlayerQuitEvent(player, "kek")); EntityPlayer p = ((CraftPlayer) player).getHandle(); player.setDisplayName(newname); WorldServer world = (WorldServer) p.world; EntityTracker tracker = world.tracker; tracker.untrackEntity(p); Field f = GameProfile.class.getDeclaredField("name"); f.setAccessible(true); f.set(p.getProfile(), newname); tracker.track(p); this.getServer().getPluginManager().callEvent(new PlayerJoinEvent(player, "kek")); ScoreboardManager sbManager = Bukkit.getScoreboardManager(); Scoreboard sb = sbManager.getMainScoreboard(); Objective OBJECTIVE = sb.registerNewObjective("custom", "dummy"); OBJECTIVE.setDisplayName(scoreboard); OBJECTIVE.setDisplaySlot(DisplaySlot.BELOW_NAME); this.getServer().getOnlinePlayers().forEach(ps -> ps.setScoreboard(sb)); } }