package me.gtacraft.plugins.melondrop.listener; import me.gtacraft.plugins.melondrop.GTAMelondrop; import me.gtacraft.plugins.melondrop.task.MelonDropTask; import me.gtacraft.plugins.safezone.ParticleEffects; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.entity.FallingBlock; 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.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.util.Vector; import java.util.Arrays; /** * Created by Connor on 7/12/14. Designed for the GTA-Melondrop project. */ public class GTAMelonListener implements Listener { public GTAMelonListener() { Bukkit.getPluginManager().registerEvents(this, GTAMelondrop.get()); } @EventHandler public void onEntityChangeBlock(EntityChangeBlockEvent event) { if (MelonDropTask.remove_instantly.contains(event.getEntity())) { event.setCancelled(true); MelonDropTask.remove_instantly.remove(event.getEntity()); } } public static ItemStack melonSpew; static { melonSpew = new ItemStack(Material.MELON); ItemMeta spew = melonSpew.getItemMeta(); spew.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&a&l&nMagic Melon Slice")); spew.setLore(Arrays.asList(ChatColor.translateAlternateColorCodes('&', "&aThe blood of the &lGiant Magical Melon&r&a!"))); melonSpew.setItemMeta(spew); } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { Block hit = event.getBlock(); if (MelonDropTask.wrapped != null) { if (!(MelonDropTask.wrapped.equals(hit))) return; Player player = event.getPlayer(); player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&a&l&nDAMAGED&r&f: "+(49-MelonDropTask.breakAttempts)+" hits left!")); player.getWorld().playSound(hit.getLocation(), Sound.STEP_LADDER, 1, 2); if (Math.random()*100 >= 85) { Item yayMelon = hit.getWorld().dropItem(hit.getLocation().clone().add(0.5, 0.6, 0.5), melonSpew); yayMelon.setPickupDelay(15); yayMelon.setVelocity(new Vector((Math.random()*.5)-.25, (Math.random()*1.1), (Math.random()*.5)-.25)); } hit.setType(Material.MELON_BLOCK); ParticleEffects.sendCrackToPlayer(true, Material.MELON.getId(), (byte) 0x0, player, hit.getLocation().clone().add(0.5, 0.5, 0.5), .3f, .3f, .3f, 50); MelonDropTask.breakAttempts++; MelonDropTask.tick(); event.setCancelled(true); } } }