Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.veilmc.hcf.timer;
- import java.util.concurrent.TimeUnit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.Sound;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.Action;
- import org.bukkit.event.entity.EntityDamageEvent;
- import org.bukkit.event.player.PlayerFishEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.util.Vector;
- import net.veilmc.hcf.utils.DurationFormatter;
- public class GrappleTimer extends PlayerTimer implements Listener {
- public GrappleTimer() {
- super("Grapple Hook", TimeUnit.SECONDS.toMillis(5L));
- // TODO Auto-generated constructor stub
- }
- public static String grappleName = "Grapple Hook";
- public static String grappleLore = "This is real.";
- public boolean isGrappleHook(Player player) {
- if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GOLD + grappleName) && player.getItemInHand().getItemMeta().getLore().contains(ChatColor.GRAY + grappleLore)) {
- return true;
- }else{
- return false;
- }
- }
- @EventHandler
- public void onInteract(PlayerInteractEvent event) {
- if ((event.getItem() == null) || ((event.getAction() != Action.RIGHT_CLICK_AIR) && (event.getAction() != Action.RIGHT_CLICK_BLOCK)) || (event.getItem().getType() != Material.FISHING_ROD)) {
- return;
- }
- if(this.getRemaining(event.getPlayer()) > 0L) {
- event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou still have &6&l" + grappleName + " &ccooldown for another &l" + DurationFormatter.getRemaining(this.getRemaining(event.getPlayer()), true) + "&r&cs."));
- event.getPlayer().updateInventory();
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void grapple(PlayerFishEvent event) {
- try {
- Player p = event.getPlayer();
- Location h = event.getHook().getLocation();
- Location h2 = new Location(h.getWorld(), h.getX(), h.getY() + 1.0, h.getZ());
- h.getBlock().getLocation().setY(h.getBlock().getLocation().getY() - 1.0);
- if (p != null && this.isGrappleHook(p) && ((event.getState() == PlayerFishEvent.State.FAILED_ATTEMPT) || event.getState() == PlayerFishEvent.State.IN_GROUND)) {
- Location pl = p.getLocation();
- int x1 = pl.getBlockX();
- int y1 = pl.getBlockZ();
- Location loc = event.getHook().getLocation();
- int x2 = loc.getBlockX();
- int y2 = loc.getBlockZ();
- loc.setY(loc.getY() - 1.0);
- if ((x1 != x2 && y1 != y2 && loc.getBlock().getType() != Material.AIR && loc.getBlock().getType() != Material.STATIONARY_WATER) || h2.getBlock().getType() != Material.AIR || event.getState() == PlayerFishEvent.State.IN_GROUND) {
- double kyori = loc.distance(pl);
- double y3 = loc.getY();
- loc.setY(y3 + 1.0);
- Vector vec = pl.toVector();
- Vector vec2 = loc.toVector();
- p.setVelocity(vec2.subtract(vec).normalize().multiply(kyori / 4.5));
- p.playSound(p.getLocation(), Sound.ZOMBIE_INFECT, 10.0f, 2.0f);
- this.setCooldown(p, p.getUniqueId(), this.defaultCooldown, false);
- }
- else {
- p.sendMessage(ChatColor.RED + "too quickly!");
- if(this.getRemaining(event.getPlayer()) > 0L) {
- this.clearCooldown(p);
- }
- }
- }
- }
- catch (NullPointerException ex) {}
- }
- @EventHandler
- public void onDamage(EntityDamageEvent event) {
- try {
- if (event.getEntity() instanceof Player) {
- Player p = (Player)event.getEntity();
- if (p.getItemInHand().getType() == Material.FISHING_ROD && this.isGrappleHook(p) && event.getCause() == EntityDamageEvent.DamageCause.FALL) {
- event.setDamage(event.getDamage() / 3.5);
- }else{
- return;
- }
- }
- }
- catch (NullPointerException ex) {
- }
- }
- @Override
- public ChatColor getScoreboardPrefix() {
- // TODO Auto-generated method stub
- return ChatColor.GOLD;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement