Added necromance ring
This commit is contained in:
@@ -19,6 +19,7 @@ import com.willfp.talismans.talismans.talismans.FluxTalisman;
|
||||
import com.willfp.talismans.talismans.talismans.GravityTalisman;
|
||||
import com.willfp.talismans.talismans.talismans.HealingTalisman;
|
||||
import com.willfp.talismans.talismans.talismans.ImmunityTalisman;
|
||||
import com.willfp.talismans.talismans.talismans.NecromanceRing;
|
||||
import com.willfp.talismans.talismans.talismans.NetherTalisman;
|
||||
import com.willfp.talismans.talismans.talismans.NightCrystal;
|
||||
import com.willfp.talismans.talismans.talismans.PoseidonTalisman;
|
||||
@@ -78,6 +79,7 @@ public class Talismans {
|
||||
public static final Talisman ATTACK_SPEED_TALISMAN = new AttackSpeedTalisman();
|
||||
public static final Talisman DAY_CRYSTAL = new DayCrystal();
|
||||
public static final Talisman NIGHT_CRYSTAL = new NightCrystal();
|
||||
public static final Talisman NECROMANCE_RING = new NecromanceRing();
|
||||
|
||||
/**
|
||||
* Get all registered {@link Talisman}s.
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.willfp.talismans.talismans.talismans;
|
||||
|
||||
import com.willfp.talismans.talismans.Talisman;
|
||||
import com.willfp.talismans.talismans.TalismanLevel;
|
||||
import com.willfp.talismans.talismans.Talismans;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Skeleton;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.entity.Zombie;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class NecromanceRing extends Talisman {
|
||||
public NecromanceRing() {
|
||||
super("necromance");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMeleeAttack(@NotNull final TalismanLevel level,
|
||||
@NotNull final Player attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
int count = 0;
|
||||
double distance = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "distance");
|
||||
for (Entity nearbyEntity : attacker.getNearbyEntities(distance, distance, distance)) {
|
||||
if (!(nearbyEntity instanceof Zombie || nearbyEntity instanceof Skeleton)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if (count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
double multiplier = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "multiplier-per-mob");
|
||||
multiplier *= count;
|
||||
multiplier += 1;
|
||||
|
||||
event.setDamage(event.getDamage() * multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArrowDamage(@NotNull final TalismanLevel level,
|
||||
@NotNull final Player attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Arrow arrow,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
int count = 0;
|
||||
double distance = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "distance");
|
||||
for (Entity nearbyEntity : attacker.getNearbyEntities(distance, distance, distance)) {
|
||||
if (!(nearbyEntity instanceof Zombie || nearbyEntity instanceof Skeleton)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if (count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
double multiplier = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "multiplier-per-mob");
|
||||
multiplier *= count;
|
||||
multiplier += 1;
|
||||
|
||||
event.setDamage(event.getDamage() * multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTridentDamage(@NotNull final TalismanLevel level,
|
||||
@NotNull final Player attacker,
|
||||
@NotNull final LivingEntity victim,
|
||||
@NotNull final Trident trident,
|
||||
@NotNull final EntityDamageByEntityEvent event) {
|
||||
int count = 0;
|
||||
double distance = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "distance");
|
||||
for (Entity nearbyEntity : attacker.getNearbyEntities(distance, distance, distance)) {
|
||||
if (!(nearbyEntity instanceof Zombie || nearbyEntity instanceof Skeleton)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if (count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
double multiplier = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "multiplier-per-mob");
|
||||
multiplier *= count;
|
||||
multiplier += 1;
|
||||
|
||||
event.setDamage(event.getDamage() * multiplier);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
enabled: true
|
||||
disabled-in-worlds: [ ]
|
||||
|
||||
levels:
|
||||
1:
|
||||
name: "&aNecromance Ring I"
|
||||
description: Deal more damage to enemies for each undead mob near you.
|
||||
|
||||
obtaining:
|
||||
craftable: true
|
||||
recipe:
|
||||
- rotten_flesh
|
||||
- bone
|
||||
- rotten_flesh
|
||||
|
||||
- bone
|
||||
- ender_eye
|
||||
- bone
|
||||
|
||||
- rotten_flesh
|
||||
- bone
|
||||
- rotten_flesh
|
||||
|
||||
general-config:
|
||||
material: player_head
|
||||
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E3MGM1ZDA3Yjc5YzViZTQzZDBiMjFjNmQ0ZTM3NDcyZGIyYWIzZmE2MzRhNWYxM2NmODlmYjk4N2IyZTUifX19
|
||||
|
||||
config:
|
||||
distance: 5
|
||||
multiplier-per-mob: 0.02
|
||||
2:
|
||||
name: "&eNecromance Ring II"
|
||||
description: Deal more damage to enemies for each undead mob near you.
|
||||
|
||||
obtaining:
|
||||
craftable: true
|
||||
recipe:
|
||||
- talismans:necromance_1
|
||||
- talismans:necromance_1
|
||||
- talismans:necromance_1
|
||||
|
||||
- talismans:necromance_1
|
||||
- heart_of_the_sea
|
||||
- talismans:necromance_1
|
||||
|
||||
- talismans:necromance_1
|
||||
- talismans:necromance_1
|
||||
- talismans:necromance_1
|
||||
|
||||
general-config:
|
||||
material: player_head
|
||||
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDk2YmM4ZWJkNGUxM2Y0OTZkOGQ3NGM1NjVkZDU2ZTk5YTRhZjJlMmVhN2EyN2E5NmMxYWJkMjg0MTg0YiJ9fX0=
|
||||
|
||||
config:
|
||||
distance: 7
|
||||
multiplier-per-mob: 0.04
|
||||
Reference in New Issue
Block a user