Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.baneofsmite.twodonkeysgm;
- import com.google.common.collect.Maps;
- import java.util.Map;
- import java.util.Random;
- import java.util.UUID;
- import org.apache.commons.lang3.tuple.Pair;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.OfflinePlayer;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockFace;
- import org.bukkit.block.Chest;
- import org.bukkit.entity.ArmorStand;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.ExperienceOrb;
- import org.bukkit.entity.Horse;
- import org.bukkit.entity.Item;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.entity.EntityDeathEvent;
- import org.bukkit.event.entity.ItemSpawnEvent;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.event.inventory.CraftItemEvent;
- import org.bukkit.event.inventory.PrepareItemCraftEvent;
- import org.bukkit.event.player.PlayerDropItemEvent;
- import org.bukkit.event.player.PlayerItemConsumeEvent;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.vehicle.VehicleEnterEvent;
- import org.bukkit.inventory.CraftingInventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import org.bukkit.scheduler.BukkitRunnable;
- import org.bukkit.scoreboard.Team;
- public class EventListener implements Listener {
- private final Main plugin;
- public EventListener(Main plugin) {
- this.plugin = plugin;
- }
- private final Map<UUID, Pair<Double, Integer>> scheduledComp = Maps.newHashMap();
- private void handle(Player player, double maxHealthToAdd, int regenTicks) {
- player.setMaxHealth(player.getMaxHealth() + maxHealthToAdd);
- int playerRegenTicks = regenTicks;
- for (PotionEffect effect : player.getActivePotionEffects()) {
- if (effect.getType() == PotionEffectType.REGENERATION) {
- playerRegenTicks += effect.getDuration();
- player.removePotionEffect(PotionEffectType.REGENERATION);
- }
- }
- player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, playerRegenTicks, 0, false, true), true);
- }
- @EventHandler
- public void on(EntityDeathEvent event) {
- Entity ent = event.getEntity();
- if (plugin.getConfig().getBoolean("cutclean")) {
- if (ent.getType() == EntityType.COW) {
- event.getDrops().clear();
- event.getDrops().add(new ItemStack(Material.LEATHER, 1));
- event.getDrops().add(new ItemStack(Material.COOKED_BEEF, 3));
- } else if (ent.getType() == EntityType.RABBIT) {
- event.getDrops().clear();
- Random rand = new Random();
- if (rand.nextInt(100) < 50) {
- event.getDrops().add(new ItemStack(Material.RABBIT_HIDE, 1));
- }
- event.getDrops().add(new ItemStack(Material.COOKED_RABBIT, 1));
- if (rand.nextInt(100) < 30) {
- event.getDrops().add(new ItemStack(Material.RABBIT_FOOT, 1));
- }
- } else if (ent.getType() == EntityType.SHEEP) {
- event.getDrops().clear();
- event.getDrops().add(new ItemStack(Material.COOKED_MUTTON, 3));
- } else if (ent.getType() == EntityType.PIG) {
- event.getDrops().clear();
- event.getDrops().add(new ItemStack(Material.GRILLED_PORK, 3));
- } else if (ent.getType() == EntityType.CHICKEN) {
- event.getDrops().clear();
- event.getDrops().add(new ItemStack(Material.COOKED_CHICKEN, 1));
- event.getDrops().add(new ItemStack(Material.FEATHER, 2));
- } else if (ent.getType() == EntityType.MUSHROOM_COW) {
- event.getDrops().clear();
- event.getDrops().add(new ItemStack(Material.LEATHER, 1));
- event.getDrops().add(new ItemStack(Material.COOKED_BEEF, 3));
- }
- }
- }
- @EventHandler
- public void on(BlockBreakEvent e) {
- Block block = e.getBlock();
- Material blocktypething = block.getType();
- Player p = e.getPlayer();
- if (plugin.getConfig().getBoolean("cutclean")) {
- if ((block.getType() == Material.IRON_ORE) && ((p.getItemInHand().getType() == Material.IRON_PICKAXE)
- || (p.getItemInHand().getType() == Material.DIAMOND_PICKAXE)
- || (p.getItemInHand().getType() == Material.STONE_PICKAXE))) {
- ((ExperienceOrb) e.getBlock().getWorld().spawn(block.getLocation(), ExperienceOrb.class))
- .setExperience(1);
- }
- if ((block.getType() == Material.GOLD_ORE) && ((p.getItemInHand().getType() == Material.IRON_PICKAXE)
- || (p.getItemInHand().getType() == Material.DIAMOND_PICKAXE))) {
- ((ExperienceOrb) e.getBlock().getWorld().spawn(block.getLocation(), ExperienceOrb.class))
- .setExperience(1);
- }
- }
- if (plugin.getConfig().getBoolean("veinminer")) {
- if (p.isSneaking()) {
- if ((block.getType() == Material.IRON_ORE) || (block.getType() == Material.GOLD_ORE)
- || (block.getType() == Material.COAL_ORE) || (block.getType() == Material.DIAMOND_ORE)
- || (block.getType() == Material.EMERALD_ORE) || (block.getType() == Material.LAPIS_ORE)
- || (block.getType() == Material.REDSTONE_ORE)
- || (block.getType() == Material.GLOWING_REDSTONE_ORE)
- || (block.getType() == Material.QUARTZ_ORE)) {
- if (((block.getType() == Material.COAL_ORE) || (block.getType() == Material.QUARTZ_ORE))
- && (p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)
- && (p.getItemInHand().getType() != Material.STONE_PICKAXE)
- && (p.getItemInHand().getType() != Material.WOOD_PICKAXE)
- && (p.getItemInHand().getType() != Material.GOLD_PICKAXE)) {
- return;
- }
- if (((block.getType() == Material.LAPIS_ORE) || (block.getType() == Material.IRON_ORE))
- && (p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)
- && (p.getItemInHand().getType() != Material.STONE_PICKAXE)) {
- return;
- }
- if (((block.getType() == Material.DIAMOND_ORE) || (block.getType() == Material.EMERALD_ORE)
- || (block.getType() == Material.REDSTONE_ORE)
- || (block.getType() == Material.GLOWING_REDSTONE_ORE)
- || (block.getType() == Material.GOLD_ORE))
- && (p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)) {
- return;
- }
- for (int x = -1; x <= 1; x++) {
- for (int y = -1; y <= 1; y++) {
- for (int z = -1; z <= 1; z++) {
- Block vmi = e.getBlock().getWorld().getBlockAt(e.getBlock().getX() + x,
- e.getBlock().getY() + y, e.getBlock().getZ() + z);
- if ((blocktypething == Material.REDSTONE_ORE)
- || (blocktypething == Material.GLOWING_REDSTONE_ORE)) {
- if ((vmi.getType() == Material.REDSTONE_ORE)
- || (vmi.getType() == Material.GLOWING_REDSTONE_ORE)) {
- vmi.breakNaturally();
- ((ExperienceOrb) e.getBlock().getWorld().spawn(vmi.getLocation(),
- ExperienceOrb.class)).setExperience(3);
- }
- } else if (vmi.getType() == Material.COAL_ORE) {
- ((ExperienceOrb) e.getBlock().getWorld().spawn(vmi.getLocation(),
- ExperienceOrb.class)).setExperience(1);
- } else if (((vmi.getType() == Material.IRON_ORE)
- || (vmi.getType() == Material.GOLD_ORE))
- && (plugin.getConfig().getBoolean("cutclean"))) {
- ((ExperienceOrb) e.getBlock().getWorld().spawn(vmi.getLocation(),
- ExperienceOrb.class)).setExperience(1);
- } else if ((vmi.getType() == Material.LAPIS_ORE)
- || (vmi.getType() == Material.QUARTZ_ORE)) {
- ((ExperienceOrb) e.getBlock().getWorld().spawn(vmi.getLocation(),
- ExperienceOrb.class)).setExperience(3);
- } else if ((vmi.getType() == Material.EMERALD_ORE)
- || (vmi.getType() == Material.DIAMOND_ORE)) {
- ((ExperienceOrb) e.getBlock().getWorld().spawn(vmi.getLocation(),
- ExperienceOrb.class)).setExperience(5);
- }
- if (blocktypething == Material.COAL_ORE) {
- if (vmi.getType() == Material.COAL_ORE) {
- vmi.breakNaturally();
- }
- } else if (blocktypething == Material.LAPIS_ORE) {
- if (vmi.getType() == Material.LAPIS_ORE) {
- vmi.breakNaturally();
- }
- } else if (blocktypething == Material.DIAMOND_ORE) {
- if (vmi.getType() == Material.DIAMOND_ORE) {
- if ((plugin.getConfig().getBoolean("blooddiamonds"))
- && (p.getHealth() != 0.0D)) {
- p.setHealth(p.getHealth() - 1.0D);
- }
- vmi.breakNaturally();
- }
- } else if (blocktypething == Material.EMERALD_ORE) {
- if (vmi.getType() == Material.EMERALD_ORE) {
- vmi.breakNaturally();
- }
- } else if (blocktypething == Material.QUARTZ_ORE) {
- if (vmi.getType() == Material.QUARTZ_ORE) {
- vmi.breakNaturally();
- }
- } else if ((blocktypething == Material.IRON_ORE)
- && (vmi.getType() == Material.IRON_ORE)) {
- vmi.breakNaturally();
- } else if ((blocktypething == Material.GOLD_ORE)
- && (vmi.getType() == Material.GOLD_ORE)) {
- vmi.breakNaturally();
- } else if ((blocktypething == Material.IRON_ORE)
- && (vmi.getType() == Material.IRON_ORE)) {
- vmi.breakNaturally();
- }
- }
- }
- }
- }
- } else {
- if ((plugin.getConfig().getBoolean("blooddiamonds")) && (block.getType() == Material.DIAMOND_ORE)) {
- if ((p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)) {
- return;
- }
- if (p.getHealth() != 0.0D) {
- p.setHealth(p.getHealth() - 1.0D);
- }
- }
- if (plugin.getConfig().getBoolean("barebones")) {
- if (block.getType() == Material.DIAMOND_ORE) {
- if ((p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)) {
- return;
- }
- e.setExpToDrop(0);
- ((ExperienceOrb) e.getBlock().getWorld().spawn(block.getLocation(), ExperienceOrb.class))
- .setExperience(1);
- }
- if (block.getType() == Material.GOLD_ORE) {
- if ((p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)) {
- return;
- }
- ((ExperienceOrb) e.getBlock().getWorld().spawn(block.getLocation(), ExperienceOrb.class))
- .setExperience(1);
- }
- }
- }
- } else {
- if ((plugin.getConfig().getBoolean("barebones")) && (block.getType() == Material.DIAMOND_ORE)) {
- if ((p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)) {
- return;
- }
- e.setExpToDrop(0);
- ((ExperienceOrb) e.getBlock().getWorld().spawn(block.getLocation(), ExperienceOrb.class))
- .setExperience(1);
- }
- if ((plugin.getConfig().getBoolean("blooddiamonds")) && (block.getType() == Material.DIAMOND_ORE)) {
- if ((p.getItemInHand().getType() != Material.IRON_PICKAXE)
- && (p.getItemInHand().getType() != Material.DIAMOND_PICKAXE)) {
- return;
- }
- if (p.getHealth() != 0.0D) {
- p.setHealth(p.getHealth() - 1.0D);
- }
- }
- }
- }
- @EventHandler
- public void On(PlayerDropItemEvent e) {
- if ((e.getItemDrop().getItemStack().getType() == Material.DIAMOND)
- && (plugin.getConfig().getBoolean("barebones"))) {
- ItemStack i = e.getItemDrop().getItemStack();
- ItemMeta im = i.getItemMeta();
- im.setDisplayName(ChatColor.RED + "DiamondCode1112");
- i.setItemMeta(im);
- }
- }
- @EventHandler
- public void on(ItemSpawnEvent e) {
- Item ei = e.getEntity();
- Material em = ei.getItemStack().getType();
- if (plugin.getConfig().getBoolean("cutclean")) {
- if (em == Material.IRON_ORE) {
- ei.getItemStack().setType(Material.IRON_INGOT);
- }
- if (plugin.getConfig().getBoolean("barebones")) {
- if (em == Material.GOLD_ORE) {
- ei.getItemStack().setType(Material.IRON_INGOT);
- }
- if (em == Material.DIAMOND) {
- ei.getItemStack().setType(Material.IRON_INGOT);
- }
- } else if (em == Material.GOLD_ORE) {
- ei.getItemStack().setType(Material.GOLD_INGOT);
- }
- } else if (plugin.getConfig().getBoolean("barebones")) {
- if (em == Material.GOLD_ORE) {
- ei.getItemStack().setType(Material.IRON_INGOT);
- }
- if (em == Material.DIAMOND) {
- ei.getItemStack().setType(Material.IRON_INGOT);
- }
- }
- if ((ei.getItemStack().hasItemMeta()) && (ei.getItemStack().getItemMeta().hasDisplayName())
- && (ei.getItemStack().getItemMeta().getDisplayName().equals(ChatColor.RED + "DiamondCode1112"))) {
- ItemStack i = ei.getItemStack();
- ItemMeta im = i.getItemMeta();
- im.setDisplayName(null);
- i.setItemMeta(im);
- ei.getItemStack().setType(Material.DIAMOND);
- }
- }
- @EventHandler
- public void onMount(VehicleEnterEvent e) {
- if (plugin.getConfig().getBoolean("krenzinator")) {
- if (((e.getVehicle() instanceof Horse)) && ((e.getEntered() instanceof Player))) {
- Horse horse = (Horse) e.getVehicle();
- if (horse.getVariant().equals(Horse.Variant.DONKEY)) {
- return;
- }
- ((Player) e.getEntered())
- .sendMessage(Main.getPrefix() + ChatColor.GRAY + " You can't mount horses in this gamemode!");
- e.setCancelled(true);
- }
- }
- }
- @EventHandler(priority = EventPriority.HIGHEST)
- public void on(PlayerDeathEvent e) {
- final Player player = e.getEntity();
- Player killer = player.getKiller();
- double maxHealth = player.getMaxHealth();
- Team team = Bukkit.getScoreboardManager().getMainScoreboard().getEntryTeam(player.getName());
- if (plugin.getConfig().getBoolean("krenzinator")) {
- if ((player.getName().equals("kacperrutka26")) || (player.getName().equals("SergeantGnome"))) {
- ItemStack diamonds = new ItemStack(Material.DIAMOND, 10);
- e.getDrops().add(diamonds);
- }
- }
- if (plugin.getConfig().getBoolean("compensation")) {
- if (team != null) {
- team.removeEntry(player.getName());
- double maxHealthToAdd = maxHealth / team.getSize();
- int regenTicks = (int) (maxHealthToAdd * 50.0D);
- for (String teammate : team.getEntries()) {
- OfflinePlayer playeroffline = Bukkit.getOfflinePlayer(teammate);
- Player p = playeroffline.getPlayer();
- if (p == null) {
- UUID uuid = playeroffline.getUniqueId();
- if (this.scheduledComp.containsKey(uuid)) {
- Pair<Double, Integer> sch = (Pair) this.scheduledComp.get(uuid);
- this.scheduledComp.put(uuid,
- Pair.of(Double.valueOf(maxHealthToAdd + ((Double) sch.getLeft()).doubleValue()),
- Integer.valueOf(regenTicks + ((Integer) sch.getRight()).intValue())));
- } else {
- this.scheduledComp.put(uuid,
- Pair.of(Double.valueOf(maxHealthToAdd), Integer.valueOf(regenTicks)));
- }
- } else {
- handle(p, maxHealthToAdd, regenTicks);
- }
- }
- }
- player.setMaxHealth(20.0D);
- }
- if (plugin.getConfig().getBoolean("barebones")) {
- for (ItemStack i : e.getDrops()) {
- if (i.getType() == Material.DIAMOND) {
- ItemMeta im = i.getItemMeta();
- im.setDisplayName(ChatColor.RED + "DiamondCode1112");
- i.setItemMeta(im);
- }
- }
- ItemStack bbd = new ItemStack(Material.DIAMOND, 1);
- ItemMeta bbm = bbd.getItemMeta();
- bbm.setDisplayName(ChatColor.RED + "DiamondCode1112");
- bbd.setItemMeta(bbm);
- e.getDrops().add(new ItemStack(Material.ARROW, 32));
- e.getDrops().add(new ItemStack(Material.GOLDEN_APPLE));
- e.getDrops().add(bbd);
- e.getDrops().add(new ItemStack(Material.STRING, 2));
- }
- if (plugin.getConfig().getBoolean("timebomb")) {
- final Location loc = player.getLocation().clone();
- if (loc.getWorld().getName().equals("world")) {
- return;
- }
- Block block = loc.getBlock();
- block = block.getRelative(BlockFace.DOWN);
- block.setType(Material.CHEST);
- Chest chest = (Chest) block.getState();
- block = block.getRelative(BlockFace.NORTH);
- block.setType(Material.CHEST);
- for (ItemStack item : e.getDrops()) {
- if (item == null || item.getType() == Material.AIR) {
- continue;
- }
- chest.getInventory().addItem(item);
- }
- if (plugin.getConfig().getBoolean("enchanteddeath")) {
- if (killer != null) {
- if (player != killer) {
- ItemStack enchanteddeath = new ItemStack(Material.ENCHANTMENT_TABLE, 1);
- chest.getInventory().addItem(enchanteddeath);
- }
- }
- }
- e.getDrops().clear();
- final ArmorStand stand = player.getWorld().spawn(chest.getLocation().clone().add(0.5, 1, 0),
- ArmorStand.class);
- stand.setCustomNameVisible(true);
- stand.setSmall(true);
- stand.setGravity(false);
- stand.setVisible(false);
- stand.setMarker(true);
- new BukkitRunnable() {
- private int time = 31; // add one for countdown.
- public void run() {
- time--;
- if (time == 0) {
- Bukkit.getServer().broadcastMessage(Main.getPrefix() + " " + ChatColor.RED + player.getName()
- + ChatColor.GRAY + "'s §fcorpse has exploded!");
- loc.getBlock().setType(Material.AIR);
- loc.getWorld().createExplosion(loc.getBlockX() + 0.5, loc.getBlockY() + 0.5,
- loc.getBlockZ() + 0.5, 10, false, true);
- loc.getWorld().strikeLightning(loc); // Using actual lightning to kill the items.
- stand.remove();
- cancel();
- return;
- } else if (time == 1) {
- stand.setCustomName("§4" + time + "s");
- } else if (time == 2) {
- stand.setCustomName("§c" + time + "s");
- } else if (time == 3) {
- stand.setCustomName("§6" + time + "s");
- } else if (time <= 15) {
- stand.setCustomName("§e" + time + "s");
- } else {
- stand.setCustomName("§a" + time + "s");
- }
- }
- }.runTaskTimer(plugin, 0, 20);
- } else if (plugin.getConfig().getBoolean("enchanteddeath")) {
- if (killer == null) {
- return;
- }
- if (player == killer) {
- return;
- }
- e.getDrops().add(new ItemStack(Material.ENCHANTMENT_TABLE, 1));
- }
- }
- @EventHandler(priority = EventPriority.HIGH)
- public void death(EntityDamageByEntityEvent event) {
- if (plugin.getConfig().getBoolean("krenzinator")) {
- if (event.getDamager().getType().equals(EntityType.EGG)) {
- event.setDamage(1.0D);
- }
- }
- }
- @EventHandler
- public void on(CraftItemEvent event) {
- if (plugin.getConfig().getBoolean("barebones")) {
- Material cannott = event.getRecipe().getResult().getType();
- if ((cannott == Material.ENCHANTMENT_TABLE) || (cannott == Material.GOLDEN_APPLE)
- || (cannott == Material.ANVIL)) {
- event.setCancelled(true);
- event.getRecipe().getResult().setType(Material.AIR);
- }
- }
- if (plugin.getConfig().getBoolean("krenzinator")) {
- if (event.getCurrentItem().getType().equals(Material.DIAMOND_SWORD)) {
- event.getWhoClicked().damage(2.0D);
- }
- }
- }
- @EventHandler
- public void on(PlayerItemConsumeEvent event) {
- Player player = event.getPlayer();
- ItemStack item = event.getItem();
- if ((plugin.getConfig().getBoolean("compensation")) && (item.getType() == Material.GOLDEN_APPLE)) {
- double health = player.getMaxHealth() / 5.0D;
- int hearts = (int) health;
- player.setHealth(player.getHealth() + health - hearts);
- player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, hearts * 25, 1), true);
- }
- }
- @EventHandler
- public void on(PlayerJoinEvent event) {
- Player player = event.getPlayer();
- UUID uuid = player.getUniqueId();
- if (!this.scheduledComp.containsKey(uuid)) {
- return;
- }
- if (plugin.getConfig().getBoolean("compensation")) {
- Pair<Double, Integer> scheduled = (Pair) this.scheduledComp.get(uuid);
- handle(player, ((Double) scheduled.getLeft()).doubleValue(), ((Integer) scheduled.getRight()).intValue());
- }
- this.scheduledComp.remove(uuid);
- }
- @EventHandler
- public void on(PrepareItemCraftEvent event) {
- CraftingInventory inv = event.getInventory();
- ItemStack item = inv.getResult();
- if (plugin.getConfig().getBoolean("compensation")) {
- if (item == null) {
- return;
- }
- if (item.getType() != Material.ARROW) {
- return;
- }
- inv.getResult().setAmount(item.getAmount() * 4);
- }
- if (plugin.getConfig().getBoolean("enchanteddeath")) {
- if (item.getType() == Material.ENCHANTMENT_TABLE) {
- inv.setResult(new ItemStack(Material.AIR));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement