Search in sources :

Example 16 with Player

use of com.sk89q.worldedit.entity.Player in project FastAsyncWorldEdit by IntellectualSites.

the class PlotSquaredFeature method getMask.

@Override
public FaweMask getMask(Player player, MaskType type, boolean isWhitelist) {
    final PlotPlayer<org.bukkit.entity.Player> pp = PlotPlayer.from(BukkitAdapter.adapt(player));
    if (pp == null) {
        return null;
    }
    final Set<CuboidRegion> regions;
    Plot plot = pp.getCurrentPlot();
    if (isAllowed(player, plot, type)) {
        regions = plot.getRegions();
    } else {
        plot = null;
        regions = WEManager.getMask(pp);
        if (regions.size() == 1) {
            CuboidRegion region = regions.iterator().next();
            if (region.getMinimumPoint().getX() == Integer.MIN_VALUE && region.getMaximumPoint().getX() == Integer.MAX_VALUE) {
                regions.clear();
            }
        }
    }
    if (regions.isEmpty()) {
        return null;
    }
    PlotArea area = pp.getApplicablePlotArea();
    final Plot finalPlot = plot;
    if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(finalPlot) || regions.isEmpty()) {
        return null;
    }
    Region maskedRegion;
    if (regions.size() == 1) {
        int min = area != null ? area.getMinBuildHeight() : player.getWorld().getMinY();
        int max = area != null ? Math.min(player.getWorld().getMaxY(), area.getMaxBuildHeight()) : player.getWorld().getMaxY();
        final CuboidRegion region = regions.iterator().next();
        final BlockVector3 pos1 = BlockVector3.at(region.getMinimumX(), min, region.getMinimumZ());
        final BlockVector3 pos2 = BlockVector3.at(region.getMaximumX(), max, region.getMaximumZ());
        maskedRegion = new CuboidRegion(pos1, pos2);
    } else {
        World world = FaweAPI.getWorld(area.getWorldName());
        List<Region> weRegions = regions.stream().map(r -> new CuboidRegion(world, BlockVector3.at(r.getMinimumX(), r.getMinimumY(), r.getMinimumZ()), BlockVector3.at(r.getMaximumX(), r.getMaximumY(), r.getMaximumZ()))).collect(Collectors.toList());
        maskedRegion = new RegionIntersection(world, weRegions);
    }
    return new FaweMask(maskedRegion) {

        @Override
        public boolean isValid(Player player, MaskType type) {
            if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(finalPlot)) {
                return false;
            }
            return isAllowed(player, finalPlot, type);
        }
    };
}
Also used : BlockVector3(com.sk89q.worldedit.math.BlockVector3) Player(com.sk89q.worldedit.entity.Player) CuboidRegion(com.sk89q.worldedit.regions.CuboidRegion) World(com.sk89q.worldedit.world.World) Caption(com.fastasyncworldedit.core.configuration.Caption) DoneFlag(com.plotsquared.core.plot.flag.implementations.DoneFlag) FaweMask(com.fastasyncworldedit.core.regions.FaweMask) WEManager(com.plotsquared.core.util.WEManager) Locale(java.util.Locale) Region(com.sk89q.worldedit.regions.Region) Bukkit(org.bukkit.Bukkit) DBFunc(com.plotsquared.core.database.DBFunc) RegionIntersection(com.sk89q.worldedit.regions.RegionIntersection) Plot(com.plotsquared.core.plot.Plot) LogManagerCompat(com.sk89q.worldedit.internal.util.LogManagerCompat) Set(java.util.Set) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) NoWorldeditFlag(com.plotsquared.core.plot.flag.implementations.NoWorldeditFlag) List(java.util.List) Logger(org.apache.logging.log4j.Logger) PlotPlayer(com.plotsquared.core.player.PlotPlayer) BukkitAdapter(com.sk89q.worldedit.bukkit.BukkitAdapter) FaweMaskManager(com.fastasyncworldedit.core.regions.FaweMaskManager) FaweAPI(com.fastasyncworldedit.core.FaweAPI) Settings(com.plotsquared.core.configuration.Settings) PlotArea(com.plotsquared.core.plot.PlotArea) Player(com.sk89q.worldedit.entity.Player) PlotPlayer(com.plotsquared.core.player.PlotPlayer) PlotArea(com.plotsquared.core.plot.PlotArea) FaweMask(com.fastasyncworldedit.core.regions.FaweMask) Plot(com.plotsquared.core.plot.Plot) CuboidRegion(com.sk89q.worldedit.regions.CuboidRegion) BlockVector3(com.sk89q.worldedit.math.BlockVector3) World(com.sk89q.worldedit.world.World) RegionIntersection(com.sk89q.worldedit.regions.RegionIntersection) CuboidRegion(com.sk89q.worldedit.regions.CuboidRegion) Region(com.sk89q.worldedit.regions.Region)

Example 17 with Player

use of com.sk89q.worldedit.entity.Player in project FastAsyncWorldEdit by IntellectualSites.

the class BiomeCommands method biomeInfo.

@Command(name = "biomeinfo", desc = "Get the biome of the targeted block.", descFooter = "By default, uses all blocks in your selection.")
@CommandPermissions("worldedit.biome.info")
public void biomeInfo(Actor actor, World world, LocalSession session, @Switch(name = 't', desc = "Use the block you are looking at.") boolean useLineOfSight, @Switch(name = 'p', desc = "Use the block you are currently in.") boolean usePosition) throws WorldEditException {
    BiomeRegistry biomeRegistry = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS).getRegistries().getBiomeRegistry();
    Set<BiomeType> biomes = new HashSet<>();
    String messageKey;
    if (useLineOfSight) {
        if (actor instanceof Player) {
            Location blockPosition = ((Player) actor).getBlockTrace(300);
            if (blockPosition == null) {
                actor.print(Caption.of("worldedit.raytrace.noblock"));
                return;
            }
            BiomeType biome = world.getBiome(blockPosition.toVector().toBlockPoint());
            biomes.add(biome);
            messageKey = "worldedit.biomeinfo.lineofsight";
        } else {
            actor.print(Caption.of("worldedit.raytrace.require-player"));
            return;
        }
    } else if (usePosition) {
        if (actor instanceof Locatable) {
            BiomeType biome = world.getBiome(((Locatable) actor).getLocation().toVector().toBlockPoint());
            biomes.add(biome);
            messageKey = "worldedit.biomeinfo.position";
        } else {
            actor.print(Caption.of("worldedit.biomeinfo.not-locatable"));
            return;
        }
    } else {
        Region region = session.getSelection(world);
        for (BlockVector3 pt : region) {
            biomes.add(world.getBiome(pt));
        }
        messageKey = "worldedit.biomeinfo.selection";
    }
    List<Component> components = biomes.stream().map(biome -> biomeRegistry.getRichName(biome).hoverEvent(HoverEvent.showText(TextComponent.of(biome.getId())))).collect(Collectors.toList());
    actor.print(Caption.of(messageKey, TextUtils.join(components, TextComponent.of(", "))));
}
Also used : EditSession(com.sk89q.worldedit.EditSession) WorldEditAsyncCommandBuilder(com.sk89q.worldedit.command.util.WorldEditAsyncCommandBuilder) RegionFunction(com.sk89q.worldedit.function.RegionFunction) BlockVector3(com.sk89q.worldedit.math.BlockVector3) Player(com.sk89q.worldedit.entity.Player) CuboidRegion(com.sk89q.worldedit.regions.CuboidRegion) World(com.sk89q.worldedit.world.World) Switch(org.enginehub.piston.annotation.param.Switch) Caption(com.fastasyncworldedit.core.configuration.Caption) Logging(com.sk89q.worldedit.command.util.Logging) RegionMaskingFilter(com.sk89q.worldedit.function.RegionMaskingFilter) Arg(org.enginehub.piston.annotation.param.Arg) HoverEvent(com.sk89q.worldedit.util.formatting.text.event.HoverEvent) Component(com.sk89q.worldedit.util.formatting.text.Component) HashSet(java.util.HashSet) Preload(com.sk89q.worldedit.command.util.annotation.Preload) WorldEditException(com.sk89q.worldedit.WorldEditException) CommandContainer(org.enginehub.piston.annotation.CommandContainer) TextUtils(com.sk89q.worldedit.util.formatting.component.TextUtils) Operations(com.sk89q.worldedit.function.operation.Operations) Location(com.sk89q.worldedit.util.Location) WorldEdit(com.sk89q.worldedit.WorldEdit) Region(com.sk89q.worldedit.regions.Region) BiomeRegistry(com.sk89q.worldedit.world.registry.BiomeRegistry) CommandPermissions(com.sk89q.worldedit.command.util.CommandPermissions) Locatable(com.sk89q.worldedit.extension.platform.Locatable) TextComponent(com.sk89q.worldedit.util.formatting.text.TextComponent) Set(java.util.Set) REGION(com.sk89q.worldedit.command.util.Logging.LogMode.REGION) RegionVisitor(com.sk89q.worldedit.function.visitor.RegionVisitor) Confirm(com.sk89q.worldedit.command.util.annotation.Confirm) Collectors(java.util.stream.Collectors) ArgFlag(org.enginehub.piston.annotation.param.ArgFlag) Actor(com.sk89q.worldedit.extension.platform.Actor) List(java.util.List) Command(org.enginehub.piston.annotation.Command) CommandPermissionsConditionGenerator(com.sk89q.worldedit.command.util.CommandPermissionsConditionGenerator) Capability(com.sk89q.worldedit.extension.platform.Capability) PaginationBox(com.sk89q.worldedit.util.formatting.component.PaginationBox) LocalSession(com.sk89q.worldedit.LocalSession) Mask(com.sk89q.worldedit.function.mask.Mask) BiomeReplace(com.sk89q.worldedit.function.biome.BiomeReplace) BiomeType(com.sk89q.worldedit.world.biome.BiomeType) Player(com.sk89q.worldedit.entity.Player) BlockVector3(com.sk89q.worldedit.math.BlockVector3) BiomeType(com.sk89q.worldedit.world.biome.BiomeType) BiomeRegistry(com.sk89q.worldedit.world.registry.BiomeRegistry) CuboidRegion(com.sk89q.worldedit.regions.CuboidRegion) Region(com.sk89q.worldedit.regions.Region) Component(com.sk89q.worldedit.util.formatting.text.Component) TextComponent(com.sk89q.worldedit.util.formatting.text.TextComponent) HashSet(java.util.HashSet) Location(com.sk89q.worldedit.util.Location) Locatable(com.sk89q.worldedit.extension.platform.Locatable) Command(org.enginehub.piston.annotation.Command) CommandPermissions(com.sk89q.worldedit.command.util.CommandPermissions)

Example 18 with Player

use of com.sk89q.worldedit.entity.Player in project FastAsyncWorldEdit by IntellectualSites.

the class BrushCommands method set.

public BrushSettings set(InjectedValueAccess context, Brush brush, String permission) throws InvalidToolBindException {
    Player player = context.injectedValue(Key.of(Player.class)).orElseThrow(() -> new IllegalStateException("No player"));
    LocalSession session = player.getSession();
    BrushSettings bs = new BrushSettings();
    BrushTool tool = session.getBrushTool(player, false);
    if (tool != null) {
        BrushSettings currentContext = tool.getContext();
        if (currentContext != null) {
            Brush currentBrush = currentContext.getBrush();
            if (currentBrush != null && currentBrush.getClass() == brush.getClass()) {
                bs = currentContext;
            }
        }
    }
    Arguments arguments = context.injectedValue(Key.of(Arguments.class)).orElse(null);
    if (arguments != null) {
        String args = arguments.get();
        bs.addSetting(BrushSettings.SettingType.BRUSH, args.substring(args.indexOf(' ') + 1));
    }
    bs.addPermission(permission);
    bs.setBrush(brush);
    return process(player, arguments, bs);
}
Also used : BrushTool(com.sk89q.worldedit.command.tool.BrushTool) Player(com.sk89q.worldedit.entity.Player) LocalSession(com.sk89q.worldedit.LocalSession) Arguments(com.sk89q.worldedit.command.argument.Arguments) BrushSettings(com.fastasyncworldedit.core.command.tool.brush.BrushSettings) HollowSphereBrush(com.sk89q.worldedit.command.tool.brush.HollowSphereBrush) HeightBrush(com.fastasyncworldedit.core.command.tool.brush.HeightBrush) SphereBrush(com.sk89q.worldedit.command.tool.brush.SphereBrush) ScatterBrush(com.fastasyncworldedit.core.command.tool.brush.ScatterBrush) CopyPastaBrush(com.fastasyncworldedit.core.command.tool.brush.CopyPastaBrush) RaiseBrush(com.fastasyncworldedit.core.command.tool.brush.RaiseBrush) SnowSmoothBrush(com.sk89q.worldedit.command.tool.brush.SnowSmoothBrush) ClipboardBrush(com.sk89q.worldedit.command.tool.brush.ClipboardBrush) GravityBrush(com.sk89q.worldedit.command.tool.brush.GravityBrush) FlattenBrush(com.fastasyncworldedit.core.command.tool.brush.FlattenBrush) BlobBrush(com.fastasyncworldedit.core.command.tool.brush.BlobBrush) SweepBrush(com.fastasyncworldedit.core.command.tool.sweep.SweepBrush) CircleBrush(com.fastasyncworldedit.core.command.tool.brush.CircleBrush) SplatterBrush(com.fastasyncworldedit.core.command.tool.brush.SplatterBrush) CatenaryBrush(com.fastasyncworldedit.core.command.tool.brush.CatenaryBrush) RecurseBrush(com.fastasyncworldedit.core.command.tool.brush.RecurseBrush) CylinderBrush(com.sk89q.worldedit.command.tool.brush.CylinderBrush) ScatterOverlayBrush(com.fastasyncworldedit.core.command.tool.brush.ScatterOverlayBrush) StencilBrush(com.fastasyncworldedit.core.command.tool.brush.StencilBrush) LineBrush(com.fastasyncworldedit.core.command.tool.brush.LineBrush) Brush(com.sk89q.worldedit.command.tool.brush.Brush) ButcherBrush(com.sk89q.worldedit.command.tool.brush.ButcherBrush) ErodeBrush(com.fastasyncworldedit.core.command.tool.brush.ErodeBrush) SurfaceSphereBrush(com.fastasyncworldedit.core.command.tool.brush.SurfaceSphereBrush) SplineBrush(com.fastasyncworldedit.core.command.tool.brush.SplineBrush) HollowCylinderBrush(com.sk89q.worldedit.command.tool.brush.HollowCylinderBrush) SmoothBrush(com.sk89q.worldedit.command.tool.brush.SmoothBrush) LayerBrush(com.fastasyncworldedit.core.command.tool.brush.LayerBrush) CommandBrush(com.fastasyncworldedit.core.command.tool.brush.CommandBrush) ImageBrush(com.fastasyncworldedit.core.command.tool.brush.ImageBrush) ShatterBrush(com.fastasyncworldedit.core.command.tool.brush.ShatterBrush) OperationFactoryBrush(com.sk89q.worldedit.command.tool.brush.OperationFactoryBrush)

Example 19 with Player

use of com.sk89q.worldedit.entity.Player in project FastAsyncWorldEdit by IntellectualSites.

the class GenerationCommands method sphere.

@Command(name = "/sphere", desc = "Generates a filled sphere.")
@CommandPermissions("worldedit.generation.sphere")
@Logging(PLACEMENT)
public int sphere(Actor actor, LocalSession session, EditSession editSession, @Arg(desc = "The pattern of blocks to generate") Pattern pattern, @Arg(desc = "The radii of the sphere. Order is N/S, U/D, E/W") @Radii(3) List<Double> radii, @Switch(name = 'r', desc = "Raise the bottom of the sphere to the placement position") boolean raised, @Switch(name = 'h', desc = "Make a hollow sphere") boolean hollow) throws WorldEditException {
    final double radiusX;
    final double radiusY;
    final double radiusZ;
    switch(radii.size()) {
        case 1:
            radiusX = radiusY = radiusZ = Math.max(0, radii.get(0));
            break;
        case 3:
            radiusX = Math.max(0, radii.get(0));
            radiusY = Math.max(0, radii.get(1));
            radiusZ = Math.max(0, radii.get(2));
            break;
        default:
            actor.print(Caption.of("worldedit.sphere.invalid-radius"));
            return 0;
    }
    worldEdit.checkMaxRadius(radiusX);
    worldEdit.checkMaxRadius(radiusY);
    worldEdit.checkMaxRadius(radiusZ);
    BlockVector3 pos = session.getPlacementPosition(actor);
    if (raised) {
        pos = pos.add(0, (int) radiusY, 0);
    }
    int affected = editSession.makeSphere(pos, pattern, radiusX, radiusY, radiusZ, !hollow);
    if (actor instanceof Player) {
        ((Player) actor).findFreePosition();
    }
    actor.print(Caption.of("worldedit.sphere.created", TextComponent.of(affected)));
    return affected;
}
Also used : Player(com.sk89q.worldedit.entity.Player) BlockVector3(com.sk89q.worldedit.math.BlockVector3) Logging(com.sk89q.worldedit.command.util.Logging) Command(org.enginehub.piston.annotation.Command) CommandPermissions(com.sk89q.worldedit.command.util.CommandPermissions)

Example 20 with Player

use of com.sk89q.worldedit.entity.Player in project FastAsyncWorldEdit by IntellectualSites.

the class GenerationCommands method pyramid.

@Command(name = "/pyramid", desc = "Generate a filled pyramid")
@CommandPermissions("worldedit.generation.pyramid")
@Logging(PLACEMENT)
public int pyramid(Actor actor, LocalSession session, EditSession editSession, @Arg(desc = "The pattern of blocks to set") Pattern pattern, @Confirm(Confirm.Processor.RADIUS) @Arg(desc = "The size of the pyramid") int size, @Switch(name = 'h', desc = "Make a hollow pyramid") boolean hollow) throws WorldEditException {
    worldEdit.checkMaxRadius(size);
    BlockVector3 pos = session.getPlacementPosition(actor);
    int affected = editSession.makePyramid(pos, pattern, size, !hollow);
    if (actor instanceof Player) {
        ((Player) actor).findFreePosition();
    }
    actor.print(Caption.of("worldedit.pyramid.created", TextComponent.of(affected)));
    return affected;
}
Also used : Player(com.sk89q.worldedit.entity.Player) BlockVector3(com.sk89q.worldedit.math.BlockVector3) Logging(com.sk89q.worldedit.command.util.Logging) Command(org.enginehub.piston.annotation.Command) CommandPermissions(com.sk89q.worldedit.command.util.CommandPermissions)

Aggregations

Player (com.sk89q.worldedit.entity.Player)26 LocalSession (com.sk89q.worldedit.LocalSession)13 BlockVector3 (com.sk89q.worldedit.math.BlockVector3)10 CommandPermissions (com.sk89q.worldedit.command.util.CommandPermissions)9 World (com.sk89q.worldedit.world.World)9 Command (org.enginehub.piston.annotation.Command)9 Logging (com.sk89q.worldedit.command.util.Logging)7 Location (com.sk89q.worldedit.util.Location)6 Confirm (com.sk89q.worldedit.command.util.annotation.Confirm)4 Actor (com.sk89q.worldedit.extension.platform.Actor)4 Region (com.sk89q.worldedit.regions.Region)4 Caption (com.fastasyncworldedit.core.configuration.Caption)3 EditSession (com.sk89q.worldedit.EditSession)3 BlockBag (com.sk89q.worldedit.extent.inventory.BlockBag)3 FaweAPI (com.fastasyncworldedit.core.FaweAPI)2 RollbackOptimizedHistory (com.fastasyncworldedit.core.history.RollbackOptimizedHistory)2 IncompleteRegionException (com.sk89q.worldedit.IncompleteRegionException)2 WorldEdit (com.sk89q.worldedit.WorldEdit)2 Arguments (com.sk89q.worldedit.command.argument.Arguments)2 BlockTool (com.sk89q.worldedit.command.tool.BlockTool)2