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.LivingEvent.LivingUpdateEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.List; @ProgressionRule(name="stepAssist", color=0xFF661A00, meta="stepAssist") public class RewardStepAssist extends RewardBaseAbility implements ICustomTooltip { public float steps = 0.5F; @Override public String getDescription() { return Progression.format("reward.stepAssist.description", steps); } @Override public int getWidth(DisplayMode mode) { return mode == DisplayMode.EDIT ? 100 : 65; } @Override public void addAbilityTooltip(List list) { list.add(TextFormatting.GRAY + getProvider().getLocalisedName() + ": " + steps); } @SubscribeEvent public void onLivingUpdate(LivingUpdateEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); float step = PlayerTracker.getPlayerData(player).getAbilities().getStepAssist(); float steps = 0.5F * (step + 1); if (steps > player.stepHeight) { player.stepHeight = steps; player.getEntityData().setBoolean("HasRewardStepAssist", true); } if (step == 0.5F && player.getEntityData().hasKey("HasRewardStepAssist")) { player.getEntityData().removeTag("HasRewardStepAssist"); player.stepHeight = 0.5F; } } } @Override public void reward(EntityPlayerMP player) { PlayerTracker.getServerPlayer(player).addStepAssist(steps); } }