mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-09-27 14:13:11 +02:00
[BREAKING] Don't use TelelportCause.PLUGIN to avoid confusion (p+v).
Players and vehicles: Instead always use UNKNOWN, as that is what results from PlayerMoveEvent.setTo(newTo), as we use it for setting back players. This should break functionality that relies on TeleportCause.PLUGIN being used, possibly more likely with vehicles.
This commit is contained in:
parent
e3d5b70db8
commit
6aeef95fb7
@ -27,7 +27,6 @@ import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
|
||||
import fr.neatmonster.nocheatplus.NCPAPIProvider;
|
||||
import fr.neatmonster.nocheatplus.checks.CheckListener;
|
||||
@ -35,6 +34,7 @@ import fr.neatmonster.nocheatplus.checks.CheckType;
|
||||
import fr.neatmonster.nocheatplus.checks.moving.MovingConfig;
|
||||
import fr.neatmonster.nocheatplus.checks.moving.util.MovingUtil;
|
||||
import fr.neatmonster.nocheatplus.command.CommandUtil;
|
||||
import fr.neatmonster.nocheatplus.compat.BridgeMisc;
|
||||
import fr.neatmonster.nocheatplus.components.registry.feature.INotifyReload;
|
||||
import fr.neatmonster.nocheatplus.components.registry.feature.JoinLeaveListener;
|
||||
import fr.neatmonster.nocheatplus.config.ConfPaths;
|
||||
@ -221,7 +221,8 @@ public class ChatListener extends CheckListener implements INotifyReload, JoinLe
|
||||
if (MovingUtil.shouldCheckUntrackedLocation(player, loc)) {
|
||||
final Location newTo = MovingUtil.checkUntrackedLocation(loc);
|
||||
if (newTo != null) {
|
||||
if (mcc.passableUntrackedCommandTryTeleport && player.teleport(newTo, TeleportCause.PLUGIN)) {
|
||||
if (mcc.passableUntrackedCommandTryTeleport
|
||||
&& player.teleport(newTo, BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION)) {
|
||||
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().info(Streams.TRACE_FILE, player.getName() + " runs the command '" + message + "' at an untracked location: " + loc + " , teleport to: " + newTo);
|
||||
} else {
|
||||
// TODO: Allow disabling cancel?
|
||||
|
@ -322,7 +322,8 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
useLoc.setWorld(null);
|
||||
// Teleport.
|
||||
data.prepareSetBack(target); // Should be enough. | new Location(target.getWorld(), target.getX(), target.getY(), target.getZ(), target.getYaw(), target.getPitch());
|
||||
player.teleport(target, TeleportCause.PLUGIN);// TODO: schedule / other measures ?
|
||||
// TODO: schedule / other measures ?
|
||||
player.teleport(target, BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
|
||||
}
|
||||
else {
|
||||
// Reset bed ...
|
||||
@ -2111,7 +2112,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
final Location newTo = enforceLocation(player, player.getLocation(useLoc), data);
|
||||
if (newTo != null) {
|
||||
data.prepareSetBack(newTo);
|
||||
player.teleport(newTo, TeleportCause.PLUGIN);
|
||||
player.teleport(newTo, BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
|
||||
}
|
||||
}
|
||||
if (!rem.isEmpty()) {
|
||||
|
@ -21,7 +21,6 @@ import java.util.Set;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import fr.neatmonster.nocheatplus.NCPAPIProvider;
|
||||
@ -43,6 +42,7 @@ import fr.neatmonster.nocheatplus.checks.moving.velocity.VelocityFlags;
|
||||
import fr.neatmonster.nocheatplus.checks.workaround.WRPT;
|
||||
import fr.neatmonster.nocheatplus.compat.Bridge1_9;
|
||||
import fr.neatmonster.nocheatplus.compat.BridgeEnchant;
|
||||
import fr.neatmonster.nocheatplus.compat.BridgeMisc;
|
||||
import fr.neatmonster.nocheatplus.compat.blocks.changetracker.BlockChangeTracker;
|
||||
import fr.neatmonster.nocheatplus.compat.blocks.changetracker.BlockChangeTracker.Direction;
|
||||
import fr.neatmonster.nocheatplus.components.modifier.IAttributeAccess;
|
||||
@ -1995,7 +1995,7 @@ public class SurvivalFly extends Check {
|
||||
if (data.hasSetBack()) {
|
||||
final Location newTo = data.getSetBack(loc);
|
||||
data.prepareSetBack(newTo);
|
||||
player.teleport(newTo, TeleportCause.PLUGIN);
|
||||
player.teleport(newTo, BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
|
||||
}
|
||||
else {
|
||||
// Solve by extra actions ? Special case (probably never happens)?
|
||||
|
@ -24,6 +24,7 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.FireworkMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
@ -51,6 +52,13 @@ public class BridgeMisc {
|
||||
|
||||
public static final Material FIREWORK = Material.getMaterial("FIREWORK");
|
||||
|
||||
/**
|
||||
* Correction of position: Used for ordinary setting back. <br>
|
||||
* NOTE: Currently it's not distinguished, if we do it as a proactive
|
||||
* measure, or due to an actual check violation.
|
||||
*/
|
||||
public static final TeleportCause TELEPORT_CAUSE_CORRECTION_OF_POSITION = TeleportCause.UNKNOWN;
|
||||
|
||||
/**
|
||||
* Return a shooter of a projectile if we get an entity, null otherwise.
|
||||
*/
|
||||
|
@ -17,7 +17,6 @@ package fr.neatmonster.nocheatplus.utilities;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
|
||||
import fr.neatmonster.nocheatplus.NCPAPIProvider;
|
||||
import fr.neatmonster.nocheatplus.checks.CheckType;
|
||||
@ -26,6 +25,7 @@ import fr.neatmonster.nocheatplus.checks.moving.MovingData;
|
||||
import fr.neatmonster.nocheatplus.checks.moving.model.VehicleMoveData;
|
||||
import fr.neatmonster.nocheatplus.checks.moving.util.AuxMoving;
|
||||
import fr.neatmonster.nocheatplus.checks.workaround.WRPT;
|
||||
import fr.neatmonster.nocheatplus.compat.BridgeMisc;
|
||||
import fr.neatmonster.nocheatplus.utilities.location.LocUtil;
|
||||
import fr.neatmonster.nocheatplus.utilities.location.TrigUtil;
|
||||
|
||||
@ -69,7 +69,8 @@ public class TeleportUtil {
|
||||
else if (playerIsPassenger) { // && vehicle.equals(player.getVehicle).
|
||||
// Attempt to only teleport the entity first. On failure use eject.
|
||||
// TODO: Probably needs a guard depending on version.
|
||||
// if (vehicle.teleport(location, TeleportCause.PLUGIN)) {
|
||||
// if (vehicle.teleport(location,
|
||||
// BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION)) {
|
||||
// // Check success.
|
||||
// if (vehicle.getLocation(useLoc).equals(location) && player.equals(vehicle.getPassenger())) {
|
||||
// vehicleTeleported = true;
|
||||
@ -82,11 +83,13 @@ public class TeleportUtil {
|
||||
if (!playerTeleported){
|
||||
vehicle.eject(); // NOTE: VehicleExit fires, unknown TP fires.
|
||||
// TODO: Confirm eject worked, handle if not.
|
||||
vehicleTeleported = vehicle.teleport(LocUtil.clone(location), TeleportCause.PLUGIN);
|
||||
vehicleTeleported = vehicle.teleport(LocUtil.clone(location),
|
||||
BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
|
||||
}
|
||||
}
|
||||
else if (passenger == null) {
|
||||
vehicleTeleported = vehicle.teleport(location, TeleportCause.PLUGIN);
|
||||
vehicleTeleported = vehicle.teleport(location,
|
||||
BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
|
||||
}
|
||||
if (!playerTeleported && player.isOnline() && !player.isDead()) {
|
||||
// Mask player teleport as a set-back.
|
||||
|
Loading…
Reference in New Issue
Block a user