( +1.20 0,8 -0.40 )

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

Автор: Father
[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]
Всем удачи!
  1. Посетители

    31 августа 2018 21:37

    0

    Отец, как и всегда, шикарен
Для написания комментария зарегистрируйся на сайте, это займет всего пару минут, голосуй за новости, зарабатывай репутацию.

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

Название темы
Статистика
Последнее сообщение

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

Ответов: 163

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

Ответов: 0

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

Ответов: 693

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

Ответов: 14