Update several perks to support vanilla damage system and kit progression
This commit is contained in:
parent
7b70695e12
commit
ac98213d28
@ -1,6 +1,16 @@
|
|||||||
package nautilus.game.arcade.kit.perks;
|
package nautilus.game.arcade.kit.perks;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
@ -13,20 +23,18 @@ import mineplex.core.updater.UpdateType;
|
|||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import nautilus.game.arcade.kit.Perk;
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
|
||||||
|
|
||||||
public class PerkBomberHG extends Perk
|
public class PerkBomberHG extends Perk
|
||||||
{
|
{
|
||||||
private int _spawnRate;
|
private int _spawnRate;
|
||||||
private int _max;
|
private int _max;
|
||||||
|
private boolean _onlyRestrictNamed;
|
||||||
|
|
||||||
public PerkBomberHG(int spawnRate, int max)
|
public PerkBomberHG(int spawnRate, int max)
|
||||||
|
{
|
||||||
|
this(spawnRate, max, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PerkBomberHG(int spawnRate, int max, boolean onlyRestrictNamed)
|
||||||
{
|
{
|
||||||
super("Explosives", new String[]
|
super("Explosives", new String[]
|
||||||
{
|
{
|
||||||
@ -35,6 +43,7 @@ public class PerkBomberHG extends Perk
|
|||||||
|
|
||||||
_spawnRate = spawnRate;
|
_spawnRate = spawnRate;
|
||||||
_max = max;
|
_max = max;
|
||||||
|
_onlyRestrictNamed = onlyRestrictNamed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Apply(Player player)
|
public void Apply(Player player)
|
||||||
@ -53,13 +62,19 @@ public class PerkBomberHG extends Perk
|
|||||||
if (!Kit.HasKit(cur))
|
if (!Kit.HasKit(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (!hasPerk(cur))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!Manager.GetGame().IsAlive(cur))
|
if (!Manager.GetGame().IsAlive(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!Recharge.Instance.use(cur, GetName(), _spawnRate*1000, false, false))
|
if (!Recharge.Instance.use(cur, GetName(), _spawnRate*1000, false, false))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (UtilInv.contains(cur, Material.TNT, (byte)0, _max))
|
if (_onlyRestrictNamed ? UtilInv.contains(cur, F.item("Throwing TNT"), Material.TNT, (byte)0, _max) : UtilInv.contains(cur, Material.TNT, (byte)0, _max))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (UtilPlayer.isSpectator(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Add
|
//Add
|
||||||
@ -75,7 +90,13 @@ public class PerkBomberHG extends Perk
|
|||||||
if (event.isCancelled())
|
if (event.isCancelled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!UtilInv.IsItem(event.getItemDrop().getItemStack(), Material.TNT, (byte)0))
|
if (_onlyRestrictNamed ? !UtilInv.IsItem(event.getItemDrop().getItemStack(), F.item("Throwing TNT"), Material.TNT, (byte)0) : !UtilInv.IsItem(event.getItemDrop().getItemStack(), Material.TNT, (byte)0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Kit.HasKit(event.getPlayer()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!hasPerk(event.getPlayer()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Cancel
|
//Cancel
|
||||||
@ -91,23 +112,33 @@ public class PerkBomberHG extends Perk
|
|||||||
//boolean containerOpen = !(event.getView().getTopInventory().getHolder() instanceof Player);
|
//boolean containerOpen = !(event.getView().getTopInventory().getHolder() instanceof Player);
|
||||||
boolean clickInContainer = event.getClickedInventory() != null && !(event.getClickedInventory().getHolder() instanceof Player);
|
boolean clickInContainer = event.getClickedInventory() != null && !(event.getClickedInventory().getHolder() instanceof Player);
|
||||||
|
|
||||||
if(clickInContainer)
|
if (clickInContainer)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(event.getWhoClicked() instanceof Player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Kit.HasKit((Player)event.getWhoClicked()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!hasPerk((Player)event.getWhoClicked()))
|
||||||
|
return;
|
||||||
|
|
||||||
UtilInv.DisallowMovementOf(event, "Throwing TNT", Material.TNT, (byte) 0, true);
|
UtilInv.DisallowMovementOf(event, "Throwing TNT", Material.TNT, (byte) 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void TNTDeathRemove(PlayerDeathEvent event)
|
public void TNTDeathRemove(PlayerDeathEvent event)
|
||||||
{
|
{
|
||||||
HashSet<org.bukkit.inventory.ItemStack> remove = new HashSet<org.bukkit.inventory.ItemStack>();
|
Set<ItemStack> remove = new HashSet<>();
|
||||||
|
|
||||||
for (org.bukkit.inventory.ItemStack item : event.getDrops())
|
for (ItemStack item : event.getDrops())
|
||||||
if (UtilInv.IsItem(item, Material.TNT, (byte)0))
|
if (_onlyRestrictNamed ? UtilInv.IsItem(item, "Throwing TNT", Material.TNT, (byte)0) : UtilInv.IsItem(item, Material.TNT, (byte)0))
|
||||||
remove.add(item);
|
remove.add(item);
|
||||||
|
|
||||||
for (org.bukkit.inventory.ItemStack item : remove)
|
for (ItemStack item : remove)
|
||||||
event.getDrops().remove(item);
|
event.getDrops().remove(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
package nautilus.game.arcade.kit.perks;
|
package nautilus.game.arcade.kit.perks;
|
||||||
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import nautilus.game.arcade.kit.Perk;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
|
||||||
|
import mineplex.core.Managers;
|
||||||
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import mineplex.minecraft.game.core.damage.DamageManager;
|
||||||
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
public class PerkFallModifier extends Perk
|
public class PerkFallModifier extends Perk
|
||||||
{
|
{
|
||||||
private double _fall;
|
private double _fall;
|
||||||
@ -41,4 +44,28 @@ public class PerkFallModifier extends Perk
|
|||||||
|
|
||||||
event.AddMod("Fall Modifier", "Reduce damage", _fall, false);
|
event.AddMod("Fall Modifier", "Reduce damage", _fall, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void handle(EntityDamageEvent event)
|
||||||
|
{
|
||||||
|
if (Managers.get(DamageManager.class).IsEnabled())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.getCause() != DamageCause.FALL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(event.getEntity() instanceof Player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player player = (Player) event.getEntity();
|
||||||
|
|
||||||
|
if (!Kit.HasKit(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Manager.IsAlive(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setDamage(event.getDamage() * _fall);
|
||||||
|
}
|
||||||
}
|
}
|
@ -184,6 +184,9 @@ public class PerkFletcher extends Perk
|
|||||||
if (!isFletchedArrow(event.getItemDrop().getItemStack()))
|
if (!isFletchedArrow(event.getItemDrop().getItemStack()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!hasPerk(event.getPlayer()))
|
||||||
|
return;
|
||||||
|
|
||||||
//Cancel
|
//Cancel
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
@ -207,6 +210,15 @@ public class PerkFletcher extends Perk
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void FletchInvClick(InventoryClickEvent event)
|
public void FletchInvClick(InventoryClickEvent event)
|
||||||
{
|
{
|
||||||
|
if (!(event.getWhoClicked() instanceof Player))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasPerk((Player)event.getWhoClicked()))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
UtilInv.DisallowMovementOf(event, _name, Material.ARROW, (byte)0, true);
|
UtilInv.DisallowMovementOf(event, _name, Material.ARROW, (byte)0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,23 +3,33 @@ package nautilus.game.arcade.kit.perks;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
|
||||||
|
import mineplex.core.Managers;
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import mineplex.minecraft.game.core.damage.DamageManager;
|
||||||
import nautilus.game.arcade.kit.Perk;
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
public class PerkIronSkin extends Perk
|
public class PerkIronSkin extends Perk
|
||||||
{
|
{
|
||||||
private double _reduction;
|
private double _reduction;
|
||||||
|
private boolean _percentage;
|
||||||
|
|
||||||
public PerkIronSkin(double d)
|
public PerkIronSkin(double d)
|
||||||
|
{
|
||||||
|
this(d, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PerkIronSkin(double d, boolean percentage)
|
||||||
{
|
{
|
||||||
super("Iron Skin", new String[]
|
super("Iron Skin", new String[]
|
||||||
{
|
{
|
||||||
"You take " + d + " less damage from attacks",
|
"You take " + (d * (percentage ? 100 : 1)) + (percentage ? "%" : "") + " less damage from attacks",
|
||||||
});
|
});
|
||||||
|
|
||||||
_reduction = d;
|
_reduction = d;
|
||||||
|
_percentage = percentage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
@ -40,6 +50,54 @@ public class PerkIronSkin extends Perk
|
|||||||
if (!Kit.HasKit(damagee))
|
if (!Kit.HasKit(damagee))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
event.AddMod(damagee.getName(), GetName(), -_reduction, false);
|
if (!hasPerk(damagee))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_percentage)
|
||||||
|
{
|
||||||
|
event.AddMult(damagee.getName(), GetName(), _reduction, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
event.AddMod(damagee.getName(), GetName(), -_reduction, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||||
|
public void damageDecrease(EntityDamageEvent event)
|
||||||
|
{
|
||||||
|
if (Managers.get(DamageManager.class).IsEnabled())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getCause() == DamageCause.FIRE_TICK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getDamage() <= 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(event.getEntity() instanceof Player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player damagee = (Player) event.getEntity();
|
||||||
|
|
||||||
|
if (!Kit.HasKit(damagee))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!hasPerk(damagee))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Manager.IsAlive(damagee))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_percentage)
|
||||||
|
{
|
||||||
|
event.setDamage(event.getDamage() * _reduction);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
event.setDamage(event.getDamage() - _reduction);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user