package com.taiter.ce.CItems;
/*
* This file is part of Custom Enchantments
* Copyright (C) Taiterio 2015
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.scheduler.BukkitRunnable;
public class Powergloves extends CItem {
int ThrowSpeedMultiplier;
int ThrowDelayAfterGrab;
int MaxGrabtime;
public Powergloves(String originalName, ChatColor color, String lDescription, long lCooldown, Material mat) {
super(originalName, color, lDescription, lCooldown, mat);
this.configEntries.put("ThrowSpeedMultiplier", 60);
this.configEntries.put("ThrowDelayAfterGrab", 20);
this.configEntries.put("MaxGrabtime", 10);
triggers.add(Trigger.INTERACT_RIGHT);
triggers.add(Trigger.INTERACT_ENTITY);
}
@Override
public boolean effect(Event event, final Player player) {
if(event instanceof PlayerInteractEntityEvent) {
PlayerInteractEntityEvent e = (PlayerInteractEntityEvent) event;
e.setCancelled(true);
final Entity clicked = e.getRightClicked();
if(!player.hasMetadata("ce." + getOriginalName()))
if(!clicked.getType().equals(EntityType.PAINTING) && !clicked.getType().equals(EntityType.ITEM_FRAME) && clicked.getPassenger() != player && player.getPassenger() == null) {
player.setMetadata("ce." + getOriginalName(), new FixedMetadataValue(main, false));
player.setPassenger(clicked);
player.getWorld().playEffect(player.getLocation(), Effect.ZOMBIE_CHEW_IRON_DOOR, 10);
new BukkitRunnable() {
@Override
public void run() {
player.getWorld().playEffect(player.getLocation(), Effect.CLICK2, 10);
player.setMetadata("ce." + getOriginalName(), new FixedMetadataValue(main, true));
this.cancel();
}
}.runTaskLater(main, ThrowDelayAfterGrab);
new BukkitRunnable() {
int GrabTime = MaxGrabtime;
ItemStack current = player.getItemInHand();
@Override
public void run() {
if(current.equals(player.getItemInHand())) {
current = player.getItemInHand();
if(GrabTime > 0) {
if(!player.hasMetadata("ce." + getOriginalName())) {
this.cancel();
}
GrabTime--;
} else if(GrabTime <= 0) {
if(player.hasMetadata("ce." + getOriginalName())) {
player.getWorld().playEffect(player.getLocation(), Effect.CLICK1, 10);
player.removeMetadata("ce." + getOriginalName(), main);
generateCooldown(player, getCooldown());
}
clicked.leaveVehicle();
this.cancel();
}
} else {
player.removeMetadata("ce." + getOriginalName(), main);
generateCooldown(player, getCooldown());
this.cancel();
}
}
}.runTaskTimer(main, 0l, 10l);
}
} else if(event instanceof PlayerInteractEvent) {
if(player.hasMetadata("ce." + getOriginalName()) && player.getMetadata("ce." + getOriginalName()).get(0).asBoolean())
if(player.getPassenger() != null) {
Entity passenger = player.getPassenger();
player.getPassenger().leaveVehicle();
passenger.setVelocity(player.getLocation().getDirection().multiply(ThrowSpeedMultiplier));
player.getWorld().playEffect(player.getLocation(), Effect.ZOMBIE_DESTROY_DOOR, 10);
player.removeMetadata("ce." + getOriginalName(), main);
return true;
}
}
return false;
}
@Override
public void initConfigEntries() {
ThrowDelayAfterGrab = Integer.parseInt(getConfig().getString("Items." + getOriginalName() + ".ThrowDelayAfterGrab"));
MaxGrabtime = Integer.parseInt(getConfig().getString("Items." + getOriginalName() + ".MaxGrabtime"));
ThrowSpeedMultiplier = Integer.parseInt(getConfig().getString("Items." + getOriginalName() + ".ThrowSpeedMultiplier"));
}
}