Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Собственный класс игрока

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ragnok123, 4 фев 2018.

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

    Ragnok123 Участник

    Баллы:
    31
    Имя в Minecraft:
    Ragnok123
    Привет всем.

    Недавно я встретился с очень не удобной проблемой.

    Дело в том, что я храню все статы игрока (базовые) в одном классе. Для того, чтобы получать методы из класса, нужно кидать это в хашмап, при этом делая его статическим.

    Мне это показалось неудобным, и поэтому я на МСРЕ сервере сделал собственный класс игрока.

    То же самой хотел сделать на спайготе, но не очень то у меня и получилось.

    Вопрос, возможно ли сделать собственный класс игрока, импортирующий все методы из org.bukkit.entities.Player, при этом являясь имплементацией самого Player класса?

    P.s.: смотрел вопросы на эту тему в гугле, но ничего не нашел
     
  2. Mr Hosting
  3. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Патчингом ядра, а это значит, что он запустится только на твоем ядре
     
  4. alexandrage

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

    Баллы:
    173
  5. alexandrage

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

    Баллы:
    173
  6. Dexel

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

    Баллы:
    76
    Мой вариант:
    Суть в том, что ты создаёшь класс-"обёртку" игрока. В конструкторе ты просишь непосредственно сам объект игрока и хранишь его. Потом переносишь все методы игрока (или необходимые лично тебе), передавая его хранимому игроку. В IntelliJ IDEA все методы наследовать легко - Alt + Insert -> "Delegate Methods..."
    Код:
    public class CustomPlayer {
        private Player player;
    
        public CustomPlayer(Player player) {
            this.player = player;
        }
    
        public String getDisplayName() {
            return player.getDisplayName();
        }
    
        public void kickPlayer(String s) {
            player.kickPlayer(s);
        }
    
        public void chat(String s) {
            player.chat(s);
        }
    
        public boolean performCommand(String s) {
            return player.performCommand(s);
        }
    
        // ...
    
        public void customMethod(/*custom agrs*/) {
            // Тело метода
        }
    
        public static class Test {
            public static void test(Player p) {
                new CustomPlayer(p).customMethod();
            }
        }
    }
     

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