mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-03 10:43:45 +01:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			7.3.0
			...
			feat/mutab
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					23b371f794 | ||
| 
						 | 
					9d2c632ca8 | ||
| 
						 | 
					d4ba0f414e | 
@@ -21,21 +21,26 @@ package com.plotsquared.core.events;
 | 
				
			|||||||
import com.plotsquared.core.location.Location;
 | 
					import com.plotsquared.core.location.Location;
 | 
				
			||||||
import com.plotsquared.core.player.PlotPlayer;
 | 
					import com.plotsquared.core.player.PlotPlayer;
 | 
				
			||||||
import com.plotsquared.core.plot.Plot;
 | 
					import com.plotsquared.core.plot.Plot;
 | 
				
			||||||
 | 
					import org.checkerframework.checker.nullness.qual.Nullable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.function.UnaryOperator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Called when a player teleports to a plot
 | 
					 * Called when a player teleports to a plot
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent {
 | 
					public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final Location from;
 | 
					 | 
				
			||||||
    private final TeleportCause cause;
 | 
					    private final TeleportCause cause;
 | 
				
			||||||
    private Result eventResult;
 | 
					    private Result eventResult;
 | 
				
			||||||
 | 
					    private final Location from;
 | 
				
			||||||
 | 
					    private UnaryOperator<Location> locationTransformer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * PlayerTeleportToPlotEvent: Called when a player teleports to a plot
 | 
					     * PlayerTeleportToPlotEvent: Called when a player teleports to a plot
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param player That was teleported
 | 
					     * @param player That was teleported
 | 
				
			||||||
     * @param from   Start location
 | 
					     * @param from   The origin location, from where the teleport was triggered (players location most likely)
 | 
				
			||||||
     * @param plot   Plot to which the player was teleported
 | 
					     * @param plot   Plot to which the player was teleported
 | 
				
			||||||
     * @param cause  Why the teleport is being completed
 | 
					     * @param cause  Why the teleport is being completed
 | 
				
			||||||
     * @since 6.1.0
 | 
					     * @since 6.1.0
 | 
				
			||||||
@@ -57,7 +62,8 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get the from location
 | 
					     * Get the location, from where the teleport was triggered
 | 
				
			||||||
 | 
					     * (the players current location when executing the home command for example)
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return Location
 | 
					     * @return Location
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -65,6 +71,27 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
 | 
				
			|||||||
        return this.from;
 | 
					        return this.from;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets the currently applied {@link UnaryOperator<Location> transformer} or null, if none was set
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return LocationTransformer
 | 
				
			||||||
 | 
					     * @since TODO
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public @Nullable UnaryOperator<Location> getLocationTransformer() {
 | 
				
			||||||
 | 
					        return this.locationTransformer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sets the {@link UnaryOperator<Location> transformer} to mutate the location where the player will be teleported to.
 | 
				
			||||||
 | 
					     * May be {@code null}, if any previous set transformations should be discarded.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param locationTransformer The new transformer
 | 
				
			||||||
 | 
					     * @since TODO
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void setLocationTransformer(@Nullable UnaryOperator<Location> locationTransformer) {
 | 
				
			||||||
 | 
					        this.locationTransformer = locationTransformer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public Result getEventResult() {
 | 
					    public Result getEventResult() {
 | 
				
			||||||
        return eventResult;
 | 
					        return eventResult;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ import com.plotsquared.core.configuration.caption.CaptionUtility;
 | 
				
			|||||||
import com.plotsquared.core.configuration.caption.StaticCaption;
 | 
					import com.plotsquared.core.configuration.caption.StaticCaption;
 | 
				
			||||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
 | 
					import com.plotsquared.core.configuration.caption.TranslatableCaption;
 | 
				
			||||||
import com.plotsquared.core.database.DBFunc;
 | 
					import com.plotsquared.core.database.DBFunc;
 | 
				
			||||||
 | 
					import com.plotsquared.core.events.PlayerTeleportToPlotEvent;
 | 
				
			||||||
import com.plotsquared.core.events.Result;
 | 
					import com.plotsquared.core.events.Result;
 | 
				
			||||||
import com.plotsquared.core.events.TeleportCause;
 | 
					import com.plotsquared.core.events.TeleportCause;
 | 
				
			||||||
import com.plotsquared.core.generator.ClassicPlotWorld;
 | 
					import com.plotsquared.core.generator.ClassicPlotWorld;
 | 
				
			||||||
@@ -2614,8 +2615,9 @@ public class Plot {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
 | 
					    public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
 | 
				
			||||||
        Plot plot = this.getBasePlot(false);
 | 
					        Plot plot = this.getBasePlot(false);
 | 
				
			||||||
        Result result = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause).getEventResult();
 | 
					
 | 
				
			||||||
        if (result == Result.DENY) {
 | 
					        PlayerTeleportToPlotEvent event = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause);
 | 
				
			||||||
 | 
					        if (event.getEventResult() == Result.DENY) {
 | 
				
			||||||
            player.sendMessage(
 | 
					            player.sendMessage(
 | 
				
			||||||
                    TranslatableCaption.of("events.event_denied"),
 | 
					                    TranslatableCaption.of("events.event_denied"),
 | 
				
			||||||
                    TagResolver.resolver("value", Tag.inserting(Component.text("Teleport")))
 | 
					                    TagResolver.resolver("value", Tag.inserting(Component.text("Teleport")))
 | 
				
			||||||
@@ -2623,7 +2625,10 @@ public class Plot {
 | 
				
			|||||||
            resultConsumer.accept(false);
 | 
					            resultConsumer.accept(false);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        final Consumer<Location> locationConsumer = location -> {
 | 
					
 | 
				
			||||||
 | 
					        final Consumer<Location> locationConsumer = calculatedLocation -> {
 | 
				
			||||||
 | 
					            Location location = event.getLocationTransformer() == null ? calculatedLocation :
 | 
				
			||||||
 | 
					                    Objects.requireNonNullElse(event.getLocationTransformer().apply(calculatedLocation), calculatedLocation);
 | 
				
			||||||
            if (Settings.Teleport.DELAY == 0 || player.hasPermission("plots.teleport.delay.bypass")) {
 | 
					            if (Settings.Teleport.DELAY == 0 || player.hasPermission("plots.teleport.delay.bypass")) {
 | 
				
			||||||
                player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot"));
 | 
					                player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot"));
 | 
				
			||||||
                player.teleport(location, cause);
 | 
					                player.teleport(location, cause);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user