Skip to content

Commit

Permalink
fix(rebirth): add a list of ignored damage causes
Browse files Browse the repository at this point in the history
fix #15
  • Loading branch information
Silthus committed Jan 17, 2021
1 parent 2fdec01 commit d8aaac6
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 6 deletions.
3 changes: 2 additions & 1 deletion modules/rebirth/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ Der Skill hat eine Chance tödlichen Schaden zu verhindern und dann den Spieler
| `chance` | `0.1` | Die Chance in % die der Spieler hat tödlichen Schaden zu verhindern und den Skill auszulösen. |
| `heal` | `20` | Die Leben oder der Prozentsatz an Leben die der Spieler zurück bekommt. |
| `heal_in_percent` | `false` | Wenn auf `true` zählt der Wert von `heal` als Prozentsatz, z.B. `heal: 0.1` ist 10%. |
| `message` | `Dein Skill {skill} hat tödlichen Schaden verhindert und du wurdest um {heal} Leben geheilt. Cooldown: {cooldown}` | Nachricht die kommt wenn der Skill ausgelöst wird. Platzhalter: `{skill}`, `{heal}`, `{cooldown}`, `{alias}` |
| `message` | `Dein Skill {skill} hat tödlichen Schaden verhindert und du wurdest um {heal} Leben geheilt. Cooldown: {cooldown}` | Nachricht die kommt wenn der Skill ausgelöst wird. Platzhalter: `{skill}`, `{heal}`, `{cooldown}`, `{alias}` |
| `ignored-causes` | `[VOID, SUFFOCATION, SUICIDE, CUSTOM]` | A list of ignored [damage causes](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html) that do not trigger the rebirth. |
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
package de.raidcraft.skillsandeffects.skills;

import com.google.common.base.Strings;
import de.raidcraft.skills.AbstractSkill;
import de.raidcraft.skills.Messages;
import de.raidcraft.skills.SkillContext;
import de.raidcraft.skills.SkillFactory;
import de.raidcraft.skills.SkillInfo;
import de.raidcraft.skills.*;
import de.raidcraft.skills.configmapper.ConfigOption;
import de.raidcraft.skills.text.text.format.NamedTextColor;
import de.raidcraft.skills.util.PseudoRandomGenerator;
Expand All @@ -22,6 +18,9 @@
import org.bukkit.event.entity.EntityDamageEvent;

import java.time.Instant;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import static de.raidcraft.skills.text.text.Component.text;

Expand Down Expand Up @@ -49,6 +48,7 @@ public Class<Rebirth> getSkillClass() {
double heal = 20;
@ConfigOption
boolean healInPercent = false;
private Set<EntityDamageEvent.DamageCause> ignoredCauses = new HashSet<>();

private PseudoRandomGenerator random;

Expand All @@ -60,12 +60,28 @@ protected Rebirth(SkillContext context) {
public void load(ConfigurationSection config) {

this.random = PseudoRandomGenerator.create((float) config.getDouble("chance", 0.1));
List<String> stringList = config.getStringList("ignored-causes");
if (stringList.isEmpty()) {
ignoredCauses.add(EntityDamageEvent.DamageCause.VOID);
ignoredCauses.add(EntityDamageEvent.DamageCause.SUFFOCATION);
ignoredCauses.add(EntityDamageEvent.DamageCause.SUICIDE);
ignoredCauses.add(EntityDamageEvent.DamageCause.CUSTOM);
} else {
for (String cause : stringList) {
try {
ignoredCauses.add(EntityDamageEvent.DamageCause.valueOf(cause.toUpperCase()));
} catch (IllegalArgumentException e) {
log.severe("invalid ignored damage cause " + cause + " in config of " + alias() + " (" + id() + ")");
}
}
}
}

@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onDamage(EntityDamageEvent event) {

if (!(event.getEntity() instanceof Player)) return;
if (ignoredCauses.contains(event.getCause())) return;
if (notApplicable((OfflinePlayer) event.getEntity())) return;

Player player = (Player) event.getEntity();
Expand Down

0 comments on commit d8aaac6

Please sign in to comment.