[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]
Всем удачи!