001package fr.aumgn.dac2.commands.worldedit; 002 003import org.bukkit.entity.Player; 004 005import com.sk89q.worldedit.IncompleteRegionException; 006import com.sk89q.worldedit.LocalWorld; 007import com.sk89q.worldedit.bukkit.BukkitUtil; 008import com.sk89q.worldedit.bukkit.WorldEditPlugin; 009import com.sk89q.worldedit.regions.FlatRegion; 010import com.sk89q.worldedit.regions.Region; 011import com.sk89q.worldedit.regions.RegionSelector; 012 013import fr.aumgn.bukkitutils.command.Command; 014import fr.aumgn.bukkitutils.command.NestedCommands; 015import fr.aumgn.bukkitutils.command.args.CommandArgs; 016import fr.aumgn.dac2.DAC; 017import fr.aumgn.dac2.arena.Arena; 018import fr.aumgn.dac2.arena.regions.Pool; 019import fr.aumgn.dac2.arena.regions.StartRegion; 020import fr.aumgn.dac2.arena.regions.SurroundingRegion; 021import fr.aumgn.dac2.exceptions.PoolShapeNotFlat; 022import fr.aumgn.dac2.exceptions.WERegionIncomplete; 023import fr.aumgn.dac2.shape.FlatShape; 024import fr.aumgn.dac2.shape.Shape; 025import fr.aumgn.dac2.shape.worldedit.WEShapeUtils; 026 027@NestedCommands({"dac2", "setwe"}) 028public class SetWECommands extends WorldEditCommands { 029 030 public SetWECommands(DAC dac) { 031 super(dac); 032 } 033 034 @Command(name = "pool", min = 1, max = 1) 035 public void pool(Player sender, CommandArgs args) { 036 Arena arena = args.get(0, Arena).value(); 037 Region region = getRegion(sender); 038 if (!(region instanceof FlatRegion)) { 039 throw new PoolShapeNotFlat(dac, region); 040 } 041 042 FlatShape shape = (FlatShape) WEShapeUtils.getShape(dac, region); 043 Pool pool = new Pool(shape); 044 arena.setPool(pool); 045 dac.getArenas().saveArena(dac, arena); 046 sender.sendMessage(msg("setwe.pool.success")); 047 } 048 049 @Command(name = "start", min = 1, max = 1) 050 public void start(Player sender, CommandArgs args) { 051 Arena arena = args.get(0, Arena).value(); 052 Region region = getRegion(sender); 053 054 Shape shape = WEShapeUtils.getShape(dac, region); 055 StartRegion start = new StartRegion(shape); 056 arena.setStartRegion(start); 057 dac.getArenas().saveArena(dac, arena); 058 sender.sendMessage(msg("setwe.start.success")); 059 } 060 061 @Command(name = "surrounding", min = 1, max = 1) 062 public void surrounding(Player sender, CommandArgs args) { 063 Arena arena = args.get(0, Arena).value(); 064 Region region = getRegion(sender); 065 066 Shape shape = WEShapeUtils.getShape(dac, region); 067 SurroundingRegion surrounding = new SurroundingRegion(shape); 068 arena.setSurroundingRegion(surrounding); 069 dac.getArenas().saveArena(dac, arena); 070 sender.sendMessage(msg("setwe.surrounding.success")); 071 } 072 073 private Region getRegion(Player player) { 074 WorldEditPlugin worldEdit = getWorldEdit(); 075 LocalWorld world = BukkitUtil.getLocalWorld(player.getWorld()); 076 RegionSelector selector = worldEdit.getSession(player) 077 .getRegionSelector(world); 078 try { 079 return selector.getRegion(); 080 } catch (IncompleteRegionException exc) { 081 throw new WERegionIncomplete(dac); 082 } 083 } 084}