package joshie.progression.criteria.rewards;
import joshie.progression.Progression;
import joshie.progression.api.criteria.ProgressionRule;
import joshie.progression.api.special.DisplayMode;
import joshie.progression.api.special.ICustomTooltip;
import joshie.progression.player.PlayerTracker;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.event.entity.living.LivingFallEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.util.List;
@ProgressionRule(name="fallDamage", color=0xFF661A00, meta="fallResistance")
public class RewardFallDamage extends RewardBaseAbility implements ICustomTooltip {
public int absorption = 1;
@Override
public String getDescription() {
return Progression.format(getProvider().getUnlocalisedName() + ".description", absorption);
}
@Override
public int getWidth(DisplayMode mode) {
return mode == DisplayMode.EDIT ? 85 : 75;
}
@Override
public void addAbilityTooltip(List list) {
list.add(TextFormatting.GRAY + getProvider().getLocalisedName() + " " + absorption);
}
@SubscribeEvent
public void onLivingUpdate(LivingFallEvent event) {
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getEntityLiving();
int damage = (int) (event.getDistance() - 3);
int maxAbsorbed = PlayerTracker.getPlayerData(player).getAbilities().getFallDamagePrevention();
if (damage < maxAbsorbed) {
event.setCanceled(true);
} else {
event.setDistance(event.getDistance() - maxAbsorbed);
}
}
}
@Override
public void reward(EntityPlayerMP player) {
PlayerTracker.getServerPlayer(player).addFallDamagePrevention(absorption);
}
}