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);
}
}
Aggregations