Search in sources :

Example 1 with RegionErrorStatus

use of com.skelril.skree.service.internal.region.RegionErrorStatus in project Skree by Skelril.

the class RegionMarker method onBlockPlace.

@Listener
public void onBlockPlace(ChangeBlockEvent.Place event, @First Player player) {
    Optional<RegionService> optService = Sponge.getServiceManager().provide(RegionService.class);
    if (!optService.isPresent()) {
        return;
    }
    RegionService service = optService.get();
    for (Transaction<BlockSnapshot> block : event.getTransactions()) {
        if (!block.isValid()) {
            continue;
        }
        if (block.getFinal().getState().getType() != this) {
            continue;
        }
        Optional<Location<World>> optLoc = block.getFinal().getLocation();
        if (optLoc.isPresent()) {
            Optional<Region> optRef = service.getSelectedRegion(player);
            if (optRef.isPresent()) {
                Location<World> loc = optLoc.get();
                Region ref = optRef.get();
                if (ref.getWorldName().equals(loc.getExtent().getName())) {
                    if (ref.isMember(player)) {
                        RegionErrorStatus status = ref.addPoint(new RegionPoint(loc.getPosition()));
                        if (status == RegionErrorStatus.NONE) {
                            player.sendMessage(Text.of(TextColors.YELLOW, "Region marker added!"));
                            continue;
                        } else if (status == RegionErrorStatus.INTERSECT) {
                            player.sendMessage(Text.of(TextColors.RED, "No two regions can occupy the same space!"));
                        } else if (status == RegionErrorStatus.REGION_TOO_LARGE) {
                            player.sendMessage(Text.of(TextColors.RED, "You do not have enough power to expand your region!"));
                        }
                    }
                }
            }
        }
        block.setValid(false);
    }
}
Also used : RegionErrorStatus(com.skelril.skree.service.internal.region.RegionErrorStatus) BlockSnapshot(org.spongepowered.api.block.BlockSnapshot) Region(com.skelril.skree.service.internal.region.Region) RegionService(com.skelril.skree.service.RegionService) World(org.spongepowered.api.world.World) Location(org.spongepowered.api.world.Location) RegionPoint(com.skelril.skree.service.internal.region.RegionPoint) Listener(org.spongepowered.api.event.Listener)

Aggregations

RegionService (com.skelril.skree.service.RegionService)1 Region (com.skelril.skree.service.internal.region.Region)1 RegionErrorStatus (com.skelril.skree.service.internal.region.RegionErrorStatus)1 RegionPoint (com.skelril.skree.service.internal.region.RegionPoint)1 BlockSnapshot (org.spongepowered.api.block.BlockSnapshot)1 Listener (org.spongepowered.api.event.Listener)1 Location (org.spongepowered.api.world.Location)1 World (org.spongepowered.api.world.World)1