[Guide] Создание плагинов под бетку, часть 5(ВорлдГуард)

[Guide] Создание плагинов под бетку, часть 5(ВорлдГуард)
В прошлом гайде я показывал накатывание прав на плагин. Думаю многим было бы неплохо узнать, как можно накатить в плагин еще поддержку WorldGuard. Это не очень и трудно.

Я вот недавно делал плагин на то, чтобы стекло и лед выпадали при их ломании. Но без ВорлдГуарда можно было стекло и лед ломать прямо в привате, даже когда тебя в самом привате нет. Поэтому Я и делаю этот гайд.

Итак, так как я делал поддержку именно для блоков, я напишу про это в Листенере блоков, но это можно сделать и в других листенерах. Итак, вот мой код:

package ru.hpp.comp;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;


public class bListener extends BlockListener{
    //Эвенты и прочее
    @Override
    public void onBlockBreak(BlockBreakEvent e) {
     Player player = e.getPlayer();
     Block Block = e.getBlock();

      if (e.getBlock().getType() == Material.ICE) {
          Block.setType(Material.AIR);
          Block.getWorld().dropItemNaturally(Block.getLocation(), new ItemStack(Material.ICE, 1));
          e.setCancelled(true);
      }
      if (e.getBlock().getType() == Material.GLASS) {
        Block.setType(Material.AIR);
        Block.getWorld().dropItemNaturally(Block.getLocation(), new ItemStack(Material.GLASS, 1));
        e.setCancelled(true);
      }
    }
}


Так, сейчас нужно добавить WorldGuard в библиотеку. Повторяем действие из предыдущего гайда, но вместо Permissions.jar добавляем WorldGuard.jar. Плагин будет внизу!

Так, добавили библиотеку. Давайте сначала посмотрим, есть ли сам плагин. Добавляем после extends BlockListener{ вот это:
WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getServer().getPluginManager(). getPlugin("WorldGuard"); //Получаем плагин


Теперь переходим к эвентам. Лично мне нужно было проверить, может ли человек строить в привате. Если нет, то ему высвечивается сообщение о том, что у него нет прав в этом регионе. Это легко осуществить. После public void ИмяЭвента(Эвент базар) { добавляем вот это:
Player player = e.getPlayer(); // Получаем игрока
     Block Block = e.getBlock(); // Получаем блок

     if (wg.canBuild(player, Block)) { // Если игрок может строить(player и Block можете изменить, но должно совпадать, иначе не будет работать)


Вот и все! Поддержка ВорлдГуард сделана. Вот как сейчас выглядит мой код:

package ru.hpp.comp;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.inventory.ItemStack;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;


public class bListener extends BlockListener{

WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getServer().getPluginManager(). getPlugin("WorldGuard");

    
    @Override
    public void onBlockBreak(BlockBreakEvent e) {
     Player player = e.getPlayer();
     Block Block = e.getBlock();

     if (wg.canBuild(player, Block)) {
      if (e.getBlock().getType() == Material.ICE) {
          Block.setType(Material.AIR);
          Block.getWorld().dropItemNaturally(Block.getLocation(), new ItemStack(Material.ICE, 1));
          e.setCancelled(true);
      }
      if (e.getBlock().getType() == Material.GLASS) {
        Block.setType(Material.AIR);
        Block.getWorld().dropItemNaturally(Block.getLocation(), new ItemStack(Material.GLASS, 1));
        e.setCancelled(true);
      }
    }
  }
}


Плагин: worldguard.jar [214,8 Kb] (cкачиваний: 1)
Всем удачи!

Реклама:




Голосуй за новость:
(0.0000.00)
  • Просмотров: 243
  • Комментариев: 1
Рекомендуемое для Вас:

  1. Журналисты-олдфаги
    Зарегистрирован: 25.04.2015
    Репутация
    (+75.675,4-0.2)
    WooDOfficial | Пользователь offline | (31 августа 2018 21:37) | Комментариев: 353 | Новостей: 22 |
    • 0

    Отец, как и всегда, шикарен
    -----------------------------------------------------------------------------


Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Последние сообщения с форума

Название темы Автор Статистика Последнее сообщение
[Minecraft Beta 1.7.3] RuBeta - Олдскульный сервер!

Тема в разделе: Частные, домашние, Hamachi сервера

Father

Просмотров: 160497

Ответов: 584

Автор: Father

Сегодня, 12:17

ECHO - Terra Incognita

Тема в разделе: Карта "в разработке"

MrDanklark

Просмотров: 4938

Ответов: 151

Автор: Crazy_Disay

Сегодня, 12:10

Форумный чат

Тема в разделе: Чат флудилка

3JIou_Kpunep

Просмотров: 7785115

Ответов: 135817

Автор: MrFrostbool

Сегодня, 10:54

Нуждаюсь в помощи строителя!

Тема в разделе: Собственные карты, модерация

GaZzZiRoVKa

Просмотров: 44

Ответов: 2

Автор: GaZzZiRoVKa

Сегодня, 10:42

ошибка

Тема в разделе: Ваши вопросы по Minecraft

doomoff

Просмотров: 40

Ответов: 2

Автор: doomoff

Сегодня, 05:50