Lobby/src/main/java/eu/univento/lobby/listeners/FunStuff.java

84 lines
3.3 KiB
Java

/*
* Copyright (c) 2018 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
package eu.univento.lobby.listeners;
import eu.univento.core.api.player.CustomPlayer;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityToggleGlideEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;
/**
* @author joethei
* @version 1.0
*/
public class FunStuff implements Listener{
@EventHandler
public void onMove(PlayerMoveEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if ((p.getLocation().getBlock().getType() == Material.STATIONARY_WATER)
&& (p.getLocation().subtract(0.0D, 3.0D, 0.0D).getBlock().getType() == Material.STATIONARY_WATER)
&& (p.getVehicle() == null) && (p.getGameMode() != GameMode.CREATIVE)
&& (!p.isFlying())) {
p.setGliding(true);
}
if ((p.getLocation().getBlock().getType() != Material.STATIONARY_WATER)
&& (p.getLocation().subtract(0.0D, 3.0D, 0.0D).getBlock().getType() != Material.STATIONARY_WATER)
&& (p.getVehicle() == null)) {
p.setGliding(false);
}
//only for debugging purposes
if(p.getLocation().getY() <= 5.0D && p.getLocation().getBlock().getType() == Material.STATIONARY_WATER) {
Vector v = p.getLocation().getDirection().multiply(0D).setY(3D);
p.setVelocity(v);
}
}
@EventHandler
public void onEntityToggleGlideEvent(EntityToggleGlideEvent e) {
if(e.getEntity() instanceof Player) {
final CustomPlayer p = CustomPlayer.getPlayer((Player) e.getEntity());
if(p.getLocation().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() != Material.STATIONARY_WATER) {
p.setVelocity(new Vector(p.getLocation().getDirection().getX() * 1, 1 * -1.0, p.getLocation().getDirection().getZ() * 0.1));
e.setCancelled(true);
}
if(p.isSneaking()) {
e.setCancelled(true);
}
}
}
@EventHandler
public void onToogleSneak(PlayerToggleSneakEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(!p.isSneaking()) {
p.setGliding(true);
}
}
@EventHandler
public void onEntityHit(EntityDamageByEntityEvent e) {
if(e.getDamager() instanceof Player && e.getEntity() instanceof Creature) {
Creature creature = (Creature) e.getEntity();
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getDamager());
creature.setGlowing(true);
creature.setCustomName(p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §8hat mir das angetan");
creature.setCustomNameVisible(true);
creature.addPotionEffect(new PotionEffect(PotionEffectType.LEVITATION, 60, 5, false));
}
}
}