Buggy code:
} boolean complete = false ; int maxTimes = getChallengeConfig ( ) . getInt ( ( ( "challenges.challengeList." + challenge ) + ".maxtimes" ) , 0 ) ; int doneTimes = plugin . getPlayers ( ) . checkChallengeTimes ( player . getUniqueId ( ) , challenge ) ; if ( plugin . getPlayers ( ) . checkChallenge ( player . getUniqueId ( ) , challenge ) ) { complete = true ; } boolean repeatable = false ; if ( getChallengeConfig ( ) . getBoolean ( ( ( "challenges.challengeList." + challenge ) + ".repeatable" ) , false ) ) { repeatable = true ; } if ( repeatable ) { if ( maxTimes == 0 ) { if ( complete ) { result . add ( ( ( ChatColor . AQUA ) + ( plugin . myLocale ( player . getUniqueId ( ) ) . challengescomplete ) ) ) ; } } else { if ( doneTimes < maxTimes ) { result . add ( plugin . myLocale ( player . getUniqueId ( ) ) . challengescompletedtimes . replace ( "[donetimes]" , String . valueOf ( doneTimes ) ) . replace ( "[maxtimes]" , String . valueOf ( maxTimes ) ) ) ; } else { repeatable = false ; result . add ( plugin . myLocale ( player . getUniqueId ( ) ) . challengesmaxreached . replace ( "[donetimes]" , String . valueOf ( doneTimes ) ) . replace ( "[maxtimes]" , String . valueOf ( maxTimes ) ) ) ; } } } else if ( complete ) { result . add ( ( ( ChatColor . AQUA ) + ( plugin . myLocale ( player . getUniqueId ( ) ) . challengescomplete ) ) ) ; } final String type = getChallengeConfig ( ) . getString ( ( ( "challenges.challengeList." + challenge ) + ".type" ) , "" ) . toLowerCase ( ) ; if ( ( ! complete ) || ( complete && repeatable ) ) { result . addAll ( Util . chop ( GOLD , getChallengeConfig ( ) . getString ( ( ( "challenges.challengeList." + challenge ) + ".description" ) , "" ) , length ) ) ; if ( type . equals ( "inventory" ) ) { if ( getChallengeConfig ( ) . getBoolean ( ( ( "challenges.challengeList." + ( challenge . toLowerCase ( ) ) ) + ".takeItems" ) ) ) { result . addAll ( Util . chop ( RED , plugin . myLocale ( player . getUniqueId ( ) ) . challengesitemTakeWarning , length ) ) ; } } else if ( type . equals ( "island" ) ) { result . addAll ( Util . chop ( RED , plugin . myLocale ( player . getUniqueId ( ) ) . challengeserrorItemsNotThere , length ) ) ; } } if ( complete && ( ( ! ( type . equals ( "inventory" ) ) ) || ( ! repeatable ) ) ) { result . addAll ( Util . chop ( RED , plugin . myLocale ( player . getUniqueId ( ) ) . challengesnotRepeatable , length ) ) ; return result ; } double moneyReward = 0 ; int expReward = 0 ; String rewardText = "" ; if ( ! ( plugin . getPlayers ( ) . checkChallenge ( player . getUniqueId ( ) , challenge ) ) ) { moneyReward = getChallengeConfig ( ) . getDouble ( ( ( "challenges.challengeList." + ( challenge . toLowerCase ( ) ) ) + ".moneyReward" ) , 0 ) ; rewardText = ChatColor . translateAlternateColorCodes ( '&' , getChallengeConfig ( ) . getString ( ( ( "challenges.challengeList." + ( challenge . toLowerCase ( ) ) ) + ".rewardText" ) , "Goodies!" ) ) ; <START_BUG> expReward = getChallengeConfig ( ) . getInt ( ( ( "challenges.challengeList." + challenge ) + ".xpReward" ) , 0 ) ; <END_BUG> result . addAll ( Util . chop ( GOLD , plugin . myLocale ( player . getUniqueId ( ) ) . challengesfirstTimeRewards , length ) ) ; } else { moneyReward = getChallengeConfig ( ) . getDouble ( ( ( "challenges.challengeList." + ( challenge . toLowerCase ( ) ) ) + ".repeatMoneyReward" ) , 0 ) ; rewardText = ChatColor . translateAlternateColorCodes ( '&' , getChallengeConfig ( ) . getString ( ( ( "challenges.challengeList." + ( challenge . toLowerCase ( ) ) ) + ".repeatRewardText" ) , "Goodies!" ) ) ; expReward = getChallengeConfig ( ) . getInt ( ( ( "challenges.challengeList." + challenge ) + ".repeatExpReward" ) , 0 ) ; result . addAll ( Util . chop ( GOLD , plugin . myLocale ( player . getUniqueId ( ) ) . challengesrepeatRewards , length ) ) ; } result . addAll ( Util . chop ( WHITE , rewardText , length ) ) ; if ( expReward > 0 ) { result . addAll ( Util . chop ( GOLD , ( ( ( ( plugin . myLocale ( player . getUniqueId ( ) ) . challengesexpReward ) + ":<seq2seq4repair_space>" ) + ( ChatColor . WHITE ) ) + expReward ) , length ) ) ; } if ( ( Settings . useEconomy ) && ( moneyReward > 0 ) ) { result . addAll ( Util . chop ( GOLD , ( ( ( ( plugin . myLocale ( player . getUniqueId ( ) ) . challengesmoneyReward ) + ":<seq2seq4repair_space>" ) + ( ChatColor . WHITE ) ) + ( econ . format ( moneyReward ) ) ) , length ) ) ; } return result ; } public void saveDefaultChallengeConfig ( ) { } public void reloadChallengeConfig ( ) { } public FileConfiguration getChallengeConfig ( ) { } public void saveChallengeConfig ( ) { } @ SuppressWarnings ( "deprecation" ) public static Potion fromDamage ( int damage ) { }

Fix:
expReward = getChallengeConfig ( ) . getInt ( ( ( "challenges.challengeList." + challenge ) + ".expReward" ) , 0 ) ;