fix up metalclips

This commit is contained in:
PhanaticD 2019-01-20 01:04:25 -05:00
parent ac2c8b8be3
commit d6c9717d25
2 changed files with 23 additions and 29 deletions

View file

@ -1693,6 +1693,14 @@ public class PKListener implements Listener {
Smokescreen.getSnowballs().remove(id);
}
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onPickupItem(final EntityPickupItemEvent event) {
for (MetalClips metalClips : CoreAbility.getAbilities(MetalClips.class)) {
if (metalClips.getTrackedIngots().contains(event.getItem())) {
event.setCancelled(true);
}
}
}
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBlockPistonExtendEvent(final BlockPistonExtendEvent event){

View file

@ -1,28 +1,19 @@
package com.projectkorra.projectkorra.earthbending.metal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Zombie;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import com.projectkorra.projectkorra.GeneralMethods;
import com.projectkorra.projectkorra.ability.CoreAbility;
import com.projectkorra.projectkorra.ability.MetalAbility;
import com.projectkorra.projectkorra.attribute.Attribute;
import com.projectkorra.projectkorra.util.DamageHandler;
import com.projectkorra.projectkorra.util.TempArmor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.*;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class MetalClips extends MetalAbility {
@ -232,7 +223,7 @@ public class MetalClips extends MetalAbility {
dz = target.getZ() - location.getZ();
final Vector vector = new Vector(dx, dy, dz);
vector.normalize();
this.targetEntity.setVelocity(vector.multiply(this.metalClipsCount / 2).normalize());
this.targetEntity.setVelocity(vector.multiply(this.metalClipsCount / 2D));
this.remove();
}
@ -270,7 +261,7 @@ public class MetalClips extends MetalAbility {
}
this.isControlling = false;
this.isMagnetized = false;
if (this.metalClipsCount < 4 && this.hasSnuck && this.abilityType == 0) {
if (this.metalClipsCount > 0 && this.hasSnuck && this.abilityType == 0) {
this.launch();
}
}
@ -413,11 +404,11 @@ public class MetalClips extends MetalAbility {
this.targetEntity.setFallDistance(0);
}
}
for (int i = this.trackedIngots.size() - 1; i >= 0; i--) {
final Item ii = this.trackedIngots.get(i);
Iterator<Item> it = this.trackedIngots.iterator();
while (it.hasNext()) {
final Item ii = it.next();
if (ii.isOnGround()) {
this.trackedIngots.remove(i);
it.remove();
continue;
}
@ -466,12 +457,7 @@ public class MetalClips extends MetalAbility {
}
public void removeDeadIngots() {
for (int i = 0; i < this.trackedIngots.size(); i++) {
final Item ii = this.trackedIngots.get(i);
if (ii.isDead()) {
this.trackedIngots.remove(ii);
}
}
this.trackedIngots.removeIf((Item item) -> item.isDead());
}
@Override