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

186 lines
5.9 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.Config;
import eu.univento.core.api.player.CustomPlayer;
import eu.univento.lobby.utils.CustomMapRenderer;
import org.bukkit.Material;
import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockGrowEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockIgniteEvent.IgniteCause;
import org.bukkit.event.entity.*;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.inventory.InventoryCreativeEvent;
import org.bukkit.event.inventory.InventoryMoveItemEvent;
import org.bukkit.event.player.*;
import org.bukkit.event.server.MapInitializeEvent;
import org.bukkit.event.weather.WeatherChangeEvent;
import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.map.MapView;
/**
* some short events
* @author joethei
* @version 1.0
*/
public class Events implements Listener {
@EventHandler
public void onMapInit(MapInitializeEvent e) {
MapView map = e.getMap();
map.getRenderers().forEach(map::removeRenderer);
map.addRenderer(new CustomMapRenderer());
}
@EventHandler
public void onFoodLevelChange(FoodLevelChangeEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onWeatherChange(WeatherChangeEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onConsume(PlayerItemConsumeEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onDeath(PlayerDeathEvent e) {
e.setDeathMessage(null);
e.setKeepInventory(true);
e.setKeepLevel(true);
}
@EventHandler
public void onItemMove(InventoryMoveItemEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onItemSwapHands(PlayerSwapHandItemsEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onRespawn(PlayerRespawnEvent e) {
e.setRespawnLocation(Config.readLocation("Lobby.Locs.Spawn"));
}
@EventHandler
public void onInventoryCreative(InventoryCreativeEvent e) {
e.setCancelled(false);
}
@EventHandler
public void onDrop(PlayerDropItemEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onDamage(EntityDamageEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onExplode(EntityExplodeEvent e) {
e.blockList().clear();
}
@EventHandler
public void onBurn(BlockBurnEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onBlockIgnite(BlockIgniteEvent e) {
if (e.getCause() == IgniteCause.SPREAD)
e.setCancelled(true);
}
@EventHandler
public void onInteract(PlayerInteractEvent e) {
if (e.getAction() == Action.PHYSICAL && e.getClickedBlock().getType() == Material.SOIL)
e.setCancelled(true);
if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName());
if (e.getClickedBlock().getType() == Material.CHEST) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.FURNACE) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.BURNING_FURNACE) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.WORKBENCH) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.BREWING_STAND) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.ARMOR_STAND) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.ACACIA_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.BIRCH_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.DARK_OAK_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.JUNGLE_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.TRAP_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.SPRUCE_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.WOOD_DOOR) e.setCancelled(true);
if (e.getClickedBlock().getType() == Material.WOODEN_DOOR) e.setCancelled(true);
}
}
@EventHandler
public void onHangingBreak(HangingBreakByEntityEvent e) {
if (e.getEntity() instanceof ItemFrame)
e.setCancelled(true);
}
@EventHandler
public void onBlockGrow(BlockGrowEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onStructureGrow(StructureGrowEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onArmorstandManipulate(PlayerArmorStandManipulateEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
for (CustomPlayer players : PlayerHider.getSilentlobby()) e.getRecipients().remove(players);
if (PlayerHider.getSilentlobby().contains(p)) e.setCancelled(true);
}
@EventHandler
public void onEntityBlockChange(EntityChangeBlockEvent e) {
e.setCancelled(true);
}
/*
@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent e) {
if (e.getSpawnReason() != CreatureSpawnEvent.SpawnReason.CUSTOM) {
e.setCancelled(true);
}
}
*/
@EventHandler
public void onEntityInteract(EntityInteractEvent e) {
if (e.getBlock().getType() == Material.CROPS && e.getEntity() instanceof LivingEntity)
e.setCancelled(true);
}
}