mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-10-06 10:27:26 +02:00
Implement JoinLeaveListener with MovingListener and ChatListener.
This commit is contained in:
parent
5dd09d4476
commit
926556a358
@ -7,7 +7,6 @@ import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||
|
||||
@ -15,6 +14,7 @@ import fr.neatmonster.nocheatplus.checks.CheckListener;
|
||||
import fr.neatmonster.nocheatplus.checks.CheckType;
|
||||
import fr.neatmonster.nocheatplus.command.CommandUtil;
|
||||
import fr.neatmonster.nocheatplus.command.INotifyReload;
|
||||
import fr.neatmonster.nocheatplus.components.JoinLeaveListener;
|
||||
import fr.neatmonster.nocheatplus.config.ConfPaths;
|
||||
import fr.neatmonster.nocheatplus.config.ConfigFile;
|
||||
import fr.neatmonster.nocheatplus.config.ConfigManager;
|
||||
@ -36,7 +36,7 @@ import fr.neatmonster.nocheatplus.utilities.ds.prefixtree.SimpleCharPrefixTree;
|
||||
*
|
||||
* @see ChatEvent
|
||||
*/
|
||||
public class ChatListener extends CheckListener implements INotifyReload {
|
||||
public class ChatListener extends CheckListener implements INotifyReload, JoinLeaveListener {
|
||||
|
||||
// Checks.
|
||||
|
||||
@ -220,22 +220,6 @@ public class ChatListener extends CheckListener implements INotifyReload {
|
||||
event.disallow(Result.KICK_OTHER, cc.loginsKickMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(
|
||||
priority = EventPriority.MONITOR)
|
||||
public void onPlayerJoin(final PlayerJoinEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final ChatConfig cc = ChatConfig.getConfig(player);
|
||||
final ChatData data = ChatData.getData(player);
|
||||
synchronized (data) {
|
||||
if (captcha.isEnabled(player) && captcha.shouldCheckCaptcha(cc, data)){
|
||||
// shouldCheckCaptcha: only if really enabled.
|
||||
// TODO: Later: add check for cc.captchaOnLogin or so (before shouldCheckCaptcha).
|
||||
// TODO: maybe schedule this to come after other plugins messages.
|
||||
captcha.sendNewCaptcha(player, cc, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReload() {
|
||||
@ -246,4 +230,22 @@ public class ChatListener extends CheckListener implements INotifyReload {
|
||||
logins.onReload();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playerJoins(final Player player) {
|
||||
final ChatConfig cc = ChatConfig.getConfig(player);
|
||||
final ChatData data = ChatData.getData(player);
|
||||
synchronized (data) {
|
||||
if (captcha.isEnabled(player) && captcha.shouldCheckCaptcha(cc, data)){
|
||||
// shouldCheckCaptcha: only if really enabled.
|
||||
// TODO: Later: add check for cc.captchaOnLogin or so (before shouldCheckCaptcha).
|
||||
// TODO: maybe schedule this to come after other plugins messages.
|
||||
captcha.sendNewCaptcha(player, cc, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playerLeaves(final Player player) {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,17 +25,15 @@ import org.bukkit.event.player.PlayerBedEnterEvent;
|
||||
import org.bukkit.event.player.PlayerBedLeaveEvent;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||
import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
||||
import org.bukkit.event.vehicle.VehicleEnterEvent;
|
||||
import org.bukkit.event.vehicle.VehicleExitEvent;
|
||||
import org.bukkit.event.vehicle.VehicleMoveEvent;
|
||||
import org.bukkit.util.Vector;
|
||||
@ -52,6 +50,7 @@ import fr.neatmonster.nocheatplus.components.IData;
|
||||
import fr.neatmonster.nocheatplus.components.IHaveCheckType;
|
||||
import fr.neatmonster.nocheatplus.components.INeedConfig;
|
||||
import fr.neatmonster.nocheatplus.components.IRemoveData;
|
||||
import fr.neatmonster.nocheatplus.components.JoinLeaveListener;
|
||||
import fr.neatmonster.nocheatplus.components.TickListener;
|
||||
import fr.neatmonster.nocheatplus.config.ConfPaths;
|
||||
import fr.neatmonster.nocheatplus.config.ConfigManager;
|
||||
@ -89,7 +88,7 @@ import fr.neatmonster.nocheatplus.utilities.StringUtil;
|
||||
*
|
||||
* @see MovingEvent
|
||||
*/
|
||||
public class MovingListener extends CheckListener implements TickListener, IRemoveData, IHaveCheckType, INotifyReload, INeedConfig{
|
||||
public class MovingListener extends CheckListener implements TickListener, IRemoveData, IHaveCheckType, INotifyReload, INeedConfig, JoinLeaveListener{
|
||||
|
||||
/**
|
||||
* Coupling from and to PlayerLocation objects with a block cache for easy storage and reuse.
|
||||
@ -948,14 +947,19 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
*/
|
||||
final Player player = event.getPlayer();
|
||||
final MovingData data = MovingData.getData(player);
|
||||
// Ignore velocity if inside of vehicles.
|
||||
if (player.isInsideVehicle()){
|
||||
data.removeAllVelocity();
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeInvalidVelocity();
|
||||
final MovingConfig cc = MovingConfig.getConfig(player);
|
||||
|
||||
final Vector velocity = event.getVelocity();
|
||||
|
||||
if (cc.debug) System.out.println(event.getPlayer().getName() + " new velocity: " + velocity);
|
||||
|
||||
// TODO: Check for vehicles ?
|
||||
|
||||
double newVal = velocity.getY();
|
||||
if (newVal >= 0D) {
|
||||
if (data.verticalFreedom <= 0.001 && data.verticalVelocityCounter >= 0){
|
||||
@ -970,7 +974,6 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
newVal = Math.sqrt(velocity.getX() * velocity.getX() + velocity.getZ() * velocity.getZ());
|
||||
if (newVal > 0D) {
|
||||
final Velocity vel = new Velocity(newVal, cc.velocityActivationCounter, 1 + (int) Math.round(newVal * 10.0));
|
||||
data.removeInvalidVelocity();
|
||||
data.addHorizontalVelocity(vel);
|
||||
// data.horizontalFreedom += newVal;
|
||||
// data.horizontalVelocityCounter = Math.min(100, Math.max(data.horizontalVelocityCounter, cc.velocityGraceTicks ) + 1 + (int) Math.round(newVal * 10.0)); // 30;
|
||||
@ -1123,9 +1126,8 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
// Entity fall-distance should be reset elsewhere.
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerJoin(final PlayerJoinEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
@Override
|
||||
public void playerJoins(final Player player) {
|
||||
final MovingData data = MovingData.getData(player);
|
||||
// TODO: on existing set back: detect world changes and loss of world on join (+ set up some paradigm).
|
||||
data.clearMorePacketsData();
|
||||
@ -1165,18 +1167,15 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
data.sfHoverLoginTicks = 0;
|
||||
data.sfHoverTicks = -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerQuit(final PlayerQuitEvent event){
|
||||
onLeave(event.getPlayer());
|
||||
|
||||
}
|
||||
|
||||
private void onLeave(final Player player) {
|
||||
|
||||
@Override
|
||||
public void playerLeaves(final Player player) {
|
||||
survivalFly.setReallySneaking(player, false);
|
||||
noFall.onLeave(player);
|
||||
final MovingData data = MovingData.getData(player);
|
||||
// TODO: Add a method for ordinary presence-change resetting (use in join + leave).
|
||||
data.removeAllVelocity();
|
||||
}
|
||||
|
||||
@ -1194,6 +1193,18 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
onPlayerVehicleLeave((Player) entity);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public final void onPlayerVehicleEnter(final VehicleEnterEvent event){
|
||||
final Entity entity = event.getEntered();
|
||||
if (!(entity instanceof Player)){
|
||||
return;
|
||||
}
|
||||
final Player player = (Player) entity;
|
||||
final MovingData data = MovingData.getData(player);
|
||||
data.removeAllVelocity();
|
||||
// TODO: more resetting, visible check ?
|
||||
}
|
||||
|
||||
private final void onPlayerVehicleLeave(final Player player){
|
||||
final MovingData data = MovingData.getData(player);
|
||||
// if (data.morePacketsVehicleTaskId != -1){
|
||||
@ -1219,11 +1230,6 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
data.verticalVelocity = 0.15;
|
||||
data.verticalVelocityUsed = 0;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onPlayerKick(final PlayerKickEvent event){
|
||||
onLeave(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onPlayerToggleSneak(final PlayerToggleSneakEvent event){
|
||||
@ -1362,4 +1368,5 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
|
||||
parkedInfo.clear();
|
||||
hoverTicksStep = Math.max(1, ConfigManager.getConfigFile().getInt(ConfPaths.MOVING_SURVIVALFLY_HOVER_STEP));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user