Skip to content

Commit

Permalink
Teleports player home if they glitch out of the
Browse files Browse the repository at this point in the history
border via a vehicle dismount.

#29

This won't work if the player glitches into another adjacent island.
  • Loading branch information
tastybento committed Jun 4, 2020
1 parent ebc939a commit 390ac17
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/main/java/world/bentobox/border/listeners/PlayerListener.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package world.bentobox.border.listeners;

import java.util.Optional;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand All @@ -9,11 +11,14 @@
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.vehicle.VehicleExitEvent;

import world.bentobox.bentobox.api.events.island.IslandEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandEnterEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandExitEvent;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.util.Util;
import world.bentobox.border.Border;

/**
Expand Down Expand Up @@ -93,4 +98,24 @@ public void onIslandRangeChange(IslandEvent.IslandProtectionRangeChangeEvent e)

this.addon.updateBorder(player, e.getLocation());
}

/**
* Teleports a player back home if they use a vehicle to glitch out of the world border
* @param event - event
*/
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onDismount(VehicleExitEvent event) {
if (event.getExited() instanceof Player) {
Player p = (Player) event.getExited();
Optional<Island> is = addon.getIslands().getProtectedIslandAt(p.getLocation());
if (is.isPresent()) {
Bukkit.getScheduler().runTask(addon.getPlugin(), () -> {
if (!addon.getIslands().getProtectedIslandAt(p.getLocation()).isPresent()
&& addon.getIslands().getIslandAt(p.getLocation()).equals(is)) {
addon.getIslands().homeTeleport(Util.getWorld(p.getWorld()), p);
}
});
}
}
}
}

0 comments on commit 390ac17

Please sign in to comment.