Add metadata value to bypass last location setting on teleport (#4597)

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
This commit is contained in:
pop4959 2021-10-31 14:25:18 -07:00 committed by GitHub
parent 6994005a5f
commit c466c9c370
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -535,21 +535,16 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerTeleport(final PlayerTeleportEvent event) { public void onPlayerTeleport(final PlayerTeleportEvent event) {
final boolean backListener = ess.getSettings().registerBackInListener(); final Player player = event.getPlayer();
final boolean teleportInvulnerability = ess.getSettings().isTeleportInvulnerability(); if (player.hasMetadata("NPC") || !(event.getCause() == TeleportCause.PLUGIN || event.getCause() == TeleportCause.COMMAND)) {
if (backListener || teleportInvulnerability) { return;
final Player player = event.getPlayer(); }
if (player.hasMetadata("NPC")) { final User user = ess.getUser(player);
return; if (ess.getSettings().registerBackInListener() && user.isAuthorized("essentials.back.onteleport") && !player.hasMetadata("ess_ignore_teleport")) {
} user.setLastLocation();
final User user = ess.getUser(player); }
//There is TeleportCause.COMMMAND but plugins have to actively pass the cause in on their teleports. if (ess.getSettings().isTeleportInvulnerability()) {
if (user.isAuthorized("essentials.back.onteleport") && backListener && (event.getCause() == TeleportCause.PLUGIN || event.getCause() == TeleportCause.COMMAND)) { user.enableInvulnerabilityAfterTeleport();
user.setLastLocation();
}
if (teleportInvulnerability && (event.getCause() == TeleportCause.PLUGIN || event.getCause() == TeleportCause.COMMAND)) {
user.enableInvulnerabilityAfterTeleport();
}
} }
} }