Skip to content

Commit

Permalink
Prevent loading faraway chunks (#4370)
Browse files Browse the repository at this point in the history
* Prevent loading faraway chunks

* docs
  • Loading branch information
SirYwell committed Mar 7, 2024
1 parent 25e9861 commit 2321831
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 1 deletion.
Expand Up @@ -32,6 +32,7 @@
import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.WorldUtil;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.world.item.ItemType;
Expand Down Expand Up @@ -120,6 +121,9 @@ public long getLastPlayed() {

@Override
public boolean canTeleport(final @NonNull Location location) {
if (!WorldUtil.isValidLocation(location)) {
return false;
}
final org.bukkit.Location to = BukkitUtil.adapt(location);
final org.bukkit.Location from = player.getLocation();
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
Expand Down Expand Up @@ -221,7 +225,7 @@ public int hasPermissionRange(

@Override
public void teleport(final @NonNull Location location, final @NonNull TeleportCause cause) {
if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) {
if (!WorldUtil.isValidLocation(location)) {
return;
}
final org.bukkit.Location bukkitLocation =
Expand Down
Expand Up @@ -268,6 +268,7 @@ public CompletableFuture<Boolean> execute(
tp = true;
} else {
player.sendMessage(TranslatableCaption.of("border.denied"));
return CompletableFuture.completedFuture(false);
}
// Trim command
args = Arrays.copyOfRange(args, 1, args.length);
Expand Down
6 changes: 6 additions & 0 deletions Core/src/main/java/com/plotsquared/core/plot/Plot.java
Expand Up @@ -2574,6 +2574,12 @@ public void teleportPlayer(final PlotPlayer<?> player, Consumer<Boolean> result)
*/
public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
Plot plot = this.getBasePlot(false);
if (!WorldUtil.isValidLocation(plot.getBottomAbs())) {
// prevent from teleporting into unsafe regions
player.sendMessage(TranslatableCaption.of("border.denied"));
resultConsumer.accept(false);
return;
}

PlayerTeleportToPlotEvent event = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause);
if (event.getEventResult() == Result.DENY) {
Expand Down
9 changes: 9 additions & 0 deletions Core/src/main/java/com/plotsquared/core/util/WorldUtil.java
Expand Up @@ -62,6 +62,15 @@

public abstract class WorldUtil {

/**
* {@return whether the given location is valid in the world}
* @param location the location to check
* @since TODO
*/
public static boolean isValidLocation(Location location) {
return Math.abs(location.getX()) < 30000000 && Math.abs(location.getZ()) < 30000000;
}

/**
* Set the biome in a region
*
Expand Down

0 comments on commit 2321831

Please sign in to comment.