You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.3 KiB
78 lines
3.3 KiB
1 year ago
|
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();
|
||
|
}
|
||
|
}
|