91 lines
3.4 KiB
Java
91 lines
3.4 KiB
Java
/*
|
|
* Copyright (c) 2017 univento.eu - All rights reserved
|
|
* You are not allowed to use, distribute or modify this code
|
|
*/
|
|
|
|
package eu.univento.core.antihack.modules;
|
|
|
|
import eu.univento.core.api.events.MoveEventFilter;
|
|
import eu.univento.core.api.player.CustomPlayer;
|
|
import org.bukkit.GameMode;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.BlockFace;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.entity.EntityShootBowEvent;
|
|
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
|
import org.bukkit.event.player.PlayerMoveEvent;
|
|
|
|
public class Movement implements Listener{
|
|
|
|
@EventHandler
|
|
public void onMove(PlayerMoveEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
if(p.getGameMode() == GameMode.CREATIVE) return;
|
|
if(p.getVehicle() != null) return;
|
|
if(p.getAllowFlight()) return;
|
|
double distance = e.getTo().distance(e.getFrom());
|
|
if(p.getFallDistance() == 0.0F && p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.AIR) {
|
|
if(distance > 0.6D && !p.isOnGround()) {
|
|
e.setCancelled(true);
|
|
p.teleport(e.getFrom());
|
|
p.sendMessage("Du hast Fly an");
|
|
}
|
|
}
|
|
if(distance > 0.2D && distance < 0.29D) {
|
|
if(p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.WATER) return;
|
|
if(p.getLocation().getBlock().getRelative(BlockFace.DOWN).isLiquid()) {
|
|
e.setCancelled(true);
|
|
p.teleport(e.getFrom());
|
|
p.sendMessage("Du hast Jesus an");
|
|
}
|
|
}
|
|
if(p.getFallDistance() == 0.0F && distance > 0.79D && p.isOnGround()) {
|
|
e.setCancelled(true);
|
|
p.setHealth(0.0D);
|
|
p.sendMessage("Du hast NoFall an");
|
|
}
|
|
if(e.getTo().getY() - e.getFrom().getY() == -0.125 && e.getTo().clone().subtract(0.0, 1.0, 0.0).getBlock().getType().equals(Material.AIR)) {
|
|
e.setCancelled(true);
|
|
p.teleport(e.getFrom());
|
|
p.sendMessage("Du hast Glide an");
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onShootBow(EntityShootBowEvent e) {
|
|
if(e.getEntity() instanceof Player) {
|
|
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getEntity());
|
|
if(p.isSprinting()) {
|
|
e.setCancelled(true);
|
|
p.damage(2.0D);
|
|
p.setArrowsInBody(p.getArrowsInBody() + 50);
|
|
p.sendMessage("Du hast NoSlowDown an");
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onFoodChange(FoodLevelChangeEvent e) {
|
|
if(e.getEntity() instanceof Player) {
|
|
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getEntity());
|
|
if(e.getFoodLevel() > p.getFoodLevel() && p.isSprinting()) {
|
|
e.setCancelled(true);
|
|
e.setFoodLevel(0);
|
|
p.sendMessage("Du hast NoSlowDown an");
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onMoveByBlock(MoveEventFilter.PlayerBlockMoveEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
double distance = e.getTo().getY() - e.getFrom().getY();
|
|
if(distance >= 0.9D) {
|
|
e.setCancelled(true);
|
|
p.teleport(e.getFrom());
|
|
p.sendMessage("Du hast Step an");
|
|
}
|
|
}
|
|
} |