Проверка блоков

Версия Minecraft
1.7.10
Добрый вечер и снова я с вопросом. Скажите пожалуйста, как сделать проверку блоков в привате? К примеру: у меня есть кирка, которая копаете 3x3, в самом привате, конечно, сломать не получится, но если я вскопаю блок у привата, то сломается и в самом привате?

Мне кажется, что нужно сделать будет плагин, работающий с WorldGuard, который будет проверять и отправлять пакеты моду, который в свою очередь будет проверять блоки. Но как это сделать? Подскажите, пожалуйста)
 
Решение
Java:
        //Если игрок не может ломать/строить
        //или не может использовать ItemStack в аргументе метода canPlayerEdit,
        //то идёт возвращение и код дальше не будет выполняться.
        if (!player.canPlayerEdit(x, y, z, side, itemStack)) return false;

        Block block = world.getBlock(x, y, z);//Берём блок по координатам
        int metadata = world.getBlockMetadata(x, y, z);//Берём метадату блока по координатам

        //Узнаём твёрдость блока по координатам и если она равно -1F,
        //то идёт возвращение и код дальше не будет выполняться.
        if (block.getBlockHardness(world, x, y, z) == -1F) return false;

        BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x, y, z...
269
8
19
Как ты сказал это довольно сложно, Можно просто сделать чтобы блок нельзя было вскапывать киркой на расстоянии 3 блока от привата.Гораздо легче. Но как сделать проверку на регион я хз,не работал с плагинами.


Мне кажется, что нужно сделать будет плагин, работающий с WorldGuard, который будет проверять и отправлять пакеты моду, который в свою очередь будет проверять блоки. Но как это сделать? Подскажите, пожалуйста)
 
Последнее редактирование:
А как вы блок ломаете? Может нужно ломать иначе?
В смысле? Как иначе? Вот возьмем наш приват квадратный. Человек подходит к блоку крайнему, который не имеет привата, ломает блок и ломается блок, который в привате, а в самом привате он сломать не сможет, WG не даст этого сделать
 
Как ты сказал это довольно сложно, Можно просто сделать чтобы блок нельзя было вскапывать киркой на расстоянии 3 блока от привата.Гораздо легче. Но как сделать проверку на регион я хз,не работал с плагинами.
Проверку на регион я попробую сделать, там у WG апи есть, что облегчает все это, а вот не подскажешь, как сделать это, что ты написал? Просто в голове даже представление об этом нет, если честно
 

timaxa007

Модератор
5,831
409
672
Java:
        //Если игрок не может ломать/строить
        //или не может использовать ItemStack в аргументе метода canPlayerEdit,
        //то идёт возвращение и код дальше не будет выполняться.
        if (!player.canPlayerEdit(x, y, z, side, itemStack)) return false;

        Block block = world.getBlock(x, y, z);//Берём блок по координатам
        int metadata = world.getBlockMetadata(x, y, z);//Берём метадату блока по координатам

        //Узнаём твёрдость блока по координатам и если она равно -1F,
        //то идёт возвращение и код дальше не будет выполняться.
        if (block.getBlockHardness(world, x, y, z) == -1F) return false;

        BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x, y, z, world, block, metadata, player);
        MinecraftForge.EVENT_BUS.post(event);
        //Если в эвенте будет setCanceled(true),
        //то идёт возвращение и код дальше не будет выполняться.
        if (event.isCanceled()) return false;

        //Выпадения опыта из блока.
        block.dropXpOnBlockBreak(world, x, y, z, block.getExpDrop(world, metadata, 0));
        //Выпадения дропа из блока от имени игрока.
        block.harvestBlock(world, player, x, y, z, metadata);
        //Разрушаем блок с партиклами разрушения и со звуком разрушения,
        //а так-же блок замениться на воздух.
        //Аргумент false не даст выпасть (стандартный) дроп блока (он выпадает не от имени игрока).
        world.func_147480_a(x, y, z, false);
И это типа этот код под цикл 3x3 меняя "x, y, z" на нужные значения.
---
А return false; на continue.
 
Сверху