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

Помогите ивент зоны

Тема в разделе "Разработка плагинов для новичков", создана пользователем strifeslider, 24 июл 2019.

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

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

    Баллы:
    61
    Имя в Minecraft:
    greenelte
    мне надо что бы при заходе н-ого количества людей(пусть будет 10) пускался алерт о том что скоро в этой зоне будет пвп(10 секунд до пвп) и как ни странно включалось пвп
     
  2. Energy warrior

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

    Баллы:
    76
    Посмотри туторы по WorldEdit там есть видео про то, как человек делает зоны, и когда он туда заходит, пишется привет, а когда выходит, пока!
     
  3. Автор темы
    strifeslider

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

    Баллы:
    61
    Имя в Minecraft:
    greenelte
    ты имеешь в виду изменить ивент sendmessage на те которые мне нужны?
    P.S. можешь скинуть ссылку?
     
  4. Energy warrior

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

    Баллы:
    76
  5. alexandrage

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

    Баллы:
    173
    Код:
    public class CuboidTask extends BukkitRunnable {
        public Cuboid cuboid;
    
        public CuboidTask(Cuboid cuboid) {
            this.cuboid = cuboid;
        }
    
        @Override
        public void run() {
            if(this.cuboid.getPlayerCount()>9) {
                //TODO
            }
        }
    }
    Код:
    package Blank.rg;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.entity.Player;
    
    public class Cuboid {
        private long xMin;
        private long xMax;
        private long yMin;
        private long yMax;
        private long zMin;
        private long zMax;
    
        public Cuboid(Location loc1, Location loc2) {
            normalize(loc1.getBlockX(), loc1.getBlockY(), loc1.getBlockZ(), loc2.getBlockX(), loc2.getBlockY(),
                    loc2.getBlockZ());
        }
    
        public Cuboid(long x1, long y1, long z1, long x2, long y2, long z2) {
            normalize(x1, y1, z1, x2, y2, z2);
        }
    
        private void normalize(long x1, long y1, long z1, long x2, long y2, long z2) {
            this.xMin = Math.min(x1, x2);
            this.xMax = Math.max(x1, x2);
            this.yMin = Math.min(y1, y2);
            this.yMax = Math.max(y1, y2);
            this.zMin = Math.min(z1, z2);
            this.zMax = Math.max(z1, z2);
        }
    
        public boolean intersects(Cuboid cuboid) {
            return cuboid.xMin <= xMax && cuboid.xMax >= xMin && cuboid.yMin <= yMax && cuboid.yMax >= yMin
                    && cuboid.zMin <= zMax && cuboid.zMax >= zMin;
        }
    
        public boolean contains(Location loc) {
            return contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
        }
    
        public boolean contains(long x, long y, long z) {
            return x >= xMin && x <= xMax && y >= yMin && y <= yMax && z >= zMin && z <= zMax;
        }
    
        public long getVolume() {
            return getWidth() * getHeight() * getDepth();
        }
    
        public long getWidth() {
            return xMax - xMin + 1;
        }
    
        public long getHeight() {
            return yMax - yMin + 1;
        }
    
        public long getDepth() {
            return zMax - zMin + 1;
        }
    
        @Override
        public String toString() {
            return "Cuboid: " + xMin + "," + yMin + "," + zMin + "=>" + xMax + "," + yMax + "," + zMax;
        }
       
        public int getPlayerCount() {
            int count = 0;
            for(Player player : Bukkit.getOnlinePlayers()) {
                if(this.contains(player.getLocation())) {
                    count++;
                }
            }
            return count;
        }
    }
     

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