1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

[СТАТЬЯ] Как сделать мини-игру?

Тема в разделе "Разработка плагинов для новичков", создана пользователем HunterGaming, 3 сен 2017.

  1. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Я об этом и говорил:
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Поливание каловыми массами не есть конструктивная критика. Единственные, кто хоть как-то подсказал ТС - @Rider3217 и @DonDays.

    Да и в принципе - лучше уж такая статья по этим ё..*кхм*.. по мини-играм, нежели никакой
     
  3. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    @Rider3217, вот ты красавчек, поддерживаешь меня, не то что эти довны, только бы посраться в интернете, на улице наверное слабо
     
  4. TheZefirrkka

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

    Баллы:
    76
    Просто не вижу смысла создавать темы такие по несколько раз, сделал бы что-то новое, я бы помог и поддержал тебя, но таких тем уже было много...
     
  5. KonondenOF

    KonondenOF Активный участник

    Баллы:
    61
    Имя в Minecraft:
    KonondenOF
    Можно ссылку на твой ВК?
     
  6. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    На счет выйдем проверим, если же ты конечно приедешь в мою страну, то я не против.
     
  7. DzinLer

    DzinLer Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    PashkaNy6ashka
    Вы ещё на батл по кодингу вызывайте друг друга:lol::lol:
     
  8. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ты победил(
    upload_2017-9-6_17-24-42.png
     
  9. thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
  10. CatCoder

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

    Баллы:
    76
    Имя в Minecraft:
    CatCoder
    что здесь происходит
     
  11. TheZefirrkka

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

    Баллы:
    76
    Сообщения набиваем? Ай-ай-ай...
     
  12. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Давай
     
  13. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Не юзаю дискорд))
     
  14. _XATuKO_

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

    Баллы:
    66
    Имя в Minecraft:
    _XATuKO_
    Продолжай!
     
  15. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Продолжение... Сегодня мы напишем класс ArenaManager и ArenaState

    Код:
    package me.hunterplay.spleef.arena;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.entity.Player;
    
    import me.hunterplay.spleef.config.MessageConfig;
    
    public class ArenaManager {
      
        private static ArenaManager arenaManager = new ArenaManager(); //Экземпляр класса ArenaManager
        private List<Arena> arenas = new ArrayList<Arena>(); //Лист арен
      
        private Location mainLobby; //Самое главное лобби, туда куда будет тпшать игроков по окончанию игры
      
        public void registerArena(String arenaName) { //Метод регистрации арены
            Arena arena = new Arena(arenaName); //Создаем экземпляр класса арены, проще говоря, создаем новую арену
          
            arenas.add(arena); //Добавляем ее в лист, чтобы к ней можно было обращаться даже при перезагрузке сервера
        }  
      
        public void removePlayer(String pName, boolean death) {
            Player p = Bukkit.getPlayer(pName);
          
            if (!playerInArena(pName)) {
                p.sendMessage("Вы не играете на арене!"); //Отправляем сообщение, о том что игрок не может покинуть арену, т.к. не находится на ней
            }
          
            for (Arena arena : arenas) { //Проходимся по списку арен
                if (arena.getArenaPlayers().contains(p.getName())) { //Проверяем есть ли игрок на арене
                    if (p != null) { //Если игрок не равняется null
                        p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard()); //Устанавливаем стандартный скорборд
                        p.teleport(mainLobby); //Телепортируем в главное лобби
                        p.setHealth(p.getMaxHealth()); //Лечим
                        p.setFireTicks(0); //Еще лечим...
                        p.getInventory().clear(); //Очищаем инвентарь
                    }
    
                    arena.getArenaPlayers().remove(p.getName()); //Удаляем игрока из листа арены
                    if (death) {
                        arena.sendMessageToArena(p.getName() + " умер.");
                    } else {
                    arena.sendMessageToArena(p.getName() + " покинул игру.");
                    }
                  
                    if (arena.getArenaPlayers().size() <= 1 && arena.getArenaState() == ArenaState.GAME) { //Если длина листа игроков равняет или меньше 1 и статус арены == ИГРА идет, то
                        arena.endArena(); //Заканчиваем игру
                    }
                }
            }
        }
      
        public Arena getArena(String arenaName) { //Получаем арену по ее имени
            for (Arena arena : arenas)
                if (arena.getArenaName().equalsIgnoreCase(arenaName))
                    return arena;
            return null;
        }
      
        public Arena getPlayingArena(String pName) { //Получаем арену где играет игрок
            for (Arena arena : arenas)
                if (arena.getArenaPlayers().contains(pName))
                    return arena;
            return null;
        }
      
        public boolean playerInArena(String pName) { //Проверяем есть ли игрок на какой-либо арене, если есть, то возвращаем true, нет - false
            for (Arena arena : arenas)
                if (arena.getArenaPlayers().contains(pName))
                    return true;
            return false;
        }
      
        public static ArenaManager getArenaManager() { //Геттер arenaManager
            return arenaManager;
        }
      
        public List<Arena> getArenas() { //Геттер arenas
            return arenas;
        }
    
        public Location getMainLobby() { //Геттер main
            return mainLobby;
        }
    
        public void setMainLobby(Location mainLobby) {
            this.mainLobby = mainLobby;
        }
    
    Следующий класс ArenaState
     
  16. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Enum ArenaState

    Код:
    package me.hunterplay.spleef.arena;
    
    public enum ArenaState {
        LOBBY, //Статус: Лобби
        GAME; //Статус: Игра
       
        private ArenaState() {
           
        }
    }
    
     
  17. Kostya256

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

    Баллы:
    61
    Имя в Minecraft:
    _Cherep_
    Статья интересная, жду продолжение :D
     
  18. dan_speeday

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

    Баллы:
    76
    Имя в Minecraft:
    _Speeday_
    Познавательно...
    Продолжай
     
  19. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    А зачем ты тут объявил приватный конструктор если он по дефолту приватный?
     
  20. Автор темы
    HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Привычка, я знаю что он дефолтом идет
     

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