Added necromance ring

This commit is contained in:
Auxilor
2021-06-14 14:07:25 +01:00
parent 5ba00c778e
commit 833ad0d5b3
3 changed files with 159 additions and 0 deletions

View File

@@ -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.

View File

@@ -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);
}
}

View File

@@ -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