ProjectAres/PGM/src/main/java/tc/oc/pgm/mutation/types/kit/NoFallMutation.java

45 lines
1.2 KiB
Java

package tc.oc.pgm.mutation.types.kit;
import org.bukkit.event.entity.EntityDamageEvent;
import tc.oc.pgm.damage.DisableDamageMatchModule;
import tc.oc.pgm.kits.Kit;
import tc.oc.pgm.match.Match;
import tc.oc.pgm.match.PlayerRelation;
import tc.oc.pgm.mutation.types.KitMutation;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public abstract class NoFallMutation extends KitMutation {
final static EntityDamageEvent.DamageCause FALL = EntityDamageEvent.DamageCause.FALL;
final static Iterable<PlayerRelation> RELATIONS = Stream.of(PlayerRelation.values()).collect(Collectors.toList());
Iterable<PlayerRelation> previous;
public NoFallMutation(Match match, boolean force, Kit... kits) {
super(match, force, kits);
}
public DisableDamageMatchModule damage() {
return match().module(DisableDamageMatchModule.class).get();
}
@Override
public void enable() {
super.enable();
previous = damage().causes().get(FALL);
damage().causes().putAll(FALL, RELATIONS);
}
@Override
public void disable() {
damage().causes().removeAll(FALL);
if(previous != null) {
damage().causes().putAll(FALL, previous);
}
super.disable();
}
}