package org.poopki.duckdns.user_db.WorldGuard; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.managers.storage.StorageException; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.protection.regions.RegionContainer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; public class WG implements CommandExecutor { public WorldGuardPlugin worldGuardPlugin; private RegionManager rm; private ProtectedRegion pr; RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); public WG(Plugin plugin){ worldGuardPlugin =getWorldGuard(plugin); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player p = (Player) sender; LocalPlayer pl= WorldGuardPlugin.inst().wrapPlayer(p); this.rm = container.get(pl.getWorld()); if (args.length != 0) { switch (args[0]) { case "지상":{ // [1]: radius, [2]-[4]: center point axys(x, y, z) Integer radius = Integer.parseInt(args[1]); BlockVector3 min = BlockVector3.at(Integer.parseInt(args[2])-radius/2, Integer.parseInt(args[3])-10, Integer.parseInt(args[4])+radius/2); BlockVector3 max = BlockVector3.at(Integer.parseInt(args[2])+radius/2, Integer.parseInt(args[3])+50, Integer.parseInt(args[4])-radius/2); ProtectedRegion region = new ProtectedCuboidRegion(args[5], min, max); this.rm.addRegion(region); break; } case "지하":{ Integer radius = Integer.parseInt(args[1]); BlockVector3 min = BlockVector3.at(Integer.parseInt(args[2])-radius/2, Integer.parseInt(args[3])-11, Integer.parseInt(args[4])+radius/2); BlockVector3 max = BlockVector3.at(Integer.parseInt(args[2])+radius/2, Integer.parseInt(args[3])-100, Integer.parseInt(args[4])-radius/2); ProtectedRegion region = new ProtectedCuboidRegion(args[5], min, max); this.rm.addRegion(region); break; } } } try { this.rm.save(); } catch (StorageException e) { e.printStackTrace(); p.sendMessage("region-save-error"); return false; } return true; } public WorldGuardPlugin getWorldGuard(Plugin plugin){ Plugin WGPlugin = plugin.getServer().getPluginManager().getPlugin("WorldGuard"); if(WGPlugin == null || !(WGPlugin instanceof WorldGuardPlugin)){ return null; } return (WorldGuardPlugin) WGPlugin; } public void save() throws StorageException { this.rm.addRegion(pr); this.rm.save(); } }