Setup Fishing XP Methods

This commit is contained in:
nossr50 2019-04-10 03:32:49 -07:00
parent e156d6d5ef
commit 2170c6de24
6 changed files with 86 additions and 19 deletions

View File

@ -160,11 +160,6 @@ public class ExperienceConfig extends ConfigValidated {
/* /*
* XP SETTINGS * XP SETTINGS
*/ */
/* Archery */
if (getArcheryDistanceMultiplier() < 0) {
reason.add(EXPERIENCE + "." + ARCHERY + "." + DISTANCE + MULTIPLIER + " should be at least 0!");
}
/* Combat XP Multipliers */ /* Combat XP Multipliers */
if (getAnimalsXP() < 0) { if (getAnimalsXP() < 0) {
reason.add(EXPERIENCE + "." + COMBAT + "." + MULTIPLIER + "." + ANIMALS + " should be at least 0!"); reason.add(EXPERIENCE + "." + COMBAT + "." + MULTIPLIER + "." + ANIMALS + " should be at least 0!");
@ -379,11 +374,6 @@ public class ExperienceConfig extends ConfigValidated {
return BarStyle.SOLID; return BarStyle.SOLID;
} }
/* Archery */
public double getArcheryDistanceMultiplier() {
return getDoubleValue(EXPERIENCE, ARCHERY, DISTANCE + MULTIPLIER);
}
public int getFishingShakeXP() { public int getFishingShakeXP() {
return getIntValue(EXPERIENCE, FISHING, SHAKE); return getIntValue(EXPERIENCE, FISHING, SHAKE);
} }

View File

@ -143,4 +143,16 @@ public class ConfigExperience {
public boolean isPvpXPEnabled() { public boolean isPvpXPEnabled() {
return experienceCombat.isPvpXPEnabled(); return experienceCombat.isPvpXPEnabled();
} }
public double getDistanceMultiplier() {
return experienceArchery.getDistanceMultiplier();
}
public HashMap<String, Integer> getFishingXPMap() {
return experienceFishing.getFishingXPMap();
}
public int getShakeXP() {
return experienceFishing.getShakeXP();
}
} }

View File

@ -1,10 +1,22 @@
package com.gmail.nossr50.config.hocon.experience; package com.gmail.nossr50.config.hocon.experience;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable @ConfigSerializable
public class ConfigExperienceArchery { public class ConfigExperienceArchery {
public static final double DISTANCE_MULTIPLIER_DEFAULT = 0.025D;
@Setting(value = "Distance-Multiplier", comment = "The distance multiplier is multiplied against the distance an " +
"arrow travels before hitting its target to determine final XP values awarded." +
"\nThe maximum distance bonus is 50, so expect this multiplier to peak at being multiplied against 50." +
"\nDistance is in blocks traveled." +
"\nThis value is added on to normal XP gains from damage for Archery." +
"\nDefault value: "+DISTANCE_MULTIPLIER_DEFAULT)
private double distanceMultiplier = DISTANCE_MULTIPLIER_DEFAULT;
public double getDistanceMultiplier() {
return distanceMultiplier;
}
} }

View File

@ -1,8 +1,36 @@
package com.gmail.nossr50.config.hocon.experience; package com.gmail.nossr50.config.hocon.experience;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
import org.bukkit.Material;
import java.util.HashMap;
@ConfigSerializable @ConfigSerializable
public class ConfigExperienceFishing { public class ConfigExperienceFishing {
private final static HashMap<String, Integer> FISHING_DEFAULT_XP_MAP;
public static final int SHAKE_XP_DEFAULT = 50;
static {
FISHING_DEFAULT_XP_MAP = new HashMap<>();
FISHING_DEFAULT_XP_MAP.put(Material.COD.getKey().toString(), 100);
FISHING_DEFAULT_XP_MAP.put(Material.SALMON.getKey().toString(), 600);
FISHING_DEFAULT_XP_MAP.put(Material.TROPICAL_FISH.getKey().toString(), 10000);
FISHING_DEFAULT_XP_MAP.put(Material.PUFFERFISH.getKey().toString(), 2400);
}
@Setting(value = "Fishing-Experience-Values", comment = "Experience values for Fishing.")
HashMap<String, Integer> fishingXPMap = FISHING_DEFAULT_XP_MAP;
@Setting(value = "Shake", comment = "XP Granted when shaking a mob")
private int shakeXP = SHAKE_XP_DEFAULT;
public HashMap<String, Integer> getFishingXPMap() {
return fishingXPMap;
}
public int getShakeXP() {
return shakeXP;
}
} }

View File

@ -1,8 +1,8 @@
package com.gmail.nossr50.skills.archery; package com.gmail.nossr50.skills.archery;
import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.skills.RankUtils; import com.gmail.nossr50.util.skills.RankUtils;
import org.bukkit.Material; import org.bukkit.Material;
@ -17,21 +17,30 @@ import java.util.List;
public class Archery { public class Archery {
private static List<TrackedEntity> trackedEntities; private static List<TrackedEntity> trackedEntities;
public static double skillShotMaxBonusDamage; private static double skillShotDamageCap;
public static double dazeBonusDamage; private static double dazeBonusDamage;
public static double DISTANCE_XP_MULTIPLIER; private static double distanceXpMultiplier;
private static Archery archery;
public static Archery getInstance() {
if(archery == null)
archery = new Archery();
return archery;
}
public Archery() public Archery()
{ {
List<TrackedEntity> trackedEntities = new ArrayList<>(); List<TrackedEntity> trackedEntities = new ArrayList<>();
skillShotMaxBonusDamage = AdvancedConfig.getInstance().getSkillShotDamageMax(); skillShotDamageCap = AdvancedConfig.getInstance().getSkillShotDamageMax();
dazeBonusDamage = AdvancedConfig.getInstance().getDazeBonusDamage(); dazeBonusDamage = AdvancedConfig.getInstance().getDazeBonusDamage();
DISTANCE_XP_MULTIPLIER = ExperienceConfig.getInstance().getArcheryDistanceMultiplier(); distanceXpMultiplier = mcMMO.getConfigManager().getConfigExperience().getDistanceMultiplier();
} }
protected static void incrementTrackerValue(LivingEntity livingEntity) { protected static void incrementTrackerValue(LivingEntity livingEntity) {
@ -77,10 +86,26 @@ public class Archery {
{ {
double damageBonusPercent = getDamageBonusPercent(player); double damageBonusPercent = getDamageBonusPercent(player);
double newDamage = oldDamage + (oldDamage * damageBonusPercent); double newDamage = oldDamage + (oldDamage * damageBonusPercent);
return Math.min(newDamage, Archery.skillShotMaxBonusDamage); return Math.min(newDamage, Archery.skillShotDamageCap);
} }
public static double getDamageBonusPercent(Player player) { public static double getDamageBonusPercent(Player player) {
return ((RankUtils.getRank(player, SubSkillType.ARCHERY_SKILL_SHOT)) * AdvancedConfig.getInstance().getSkillShotRankDamageMultiplier()) / 100.0D; return ((RankUtils.getRank(player, SubSkillType.ARCHERY_SKILL_SHOT)) * AdvancedConfig.getInstance().getSkillShotRankDamageMultiplier()) / 100.0D;
} }
public List<TrackedEntity> getTrackedEntities() {
return trackedEntities;
}
public double getSkillShotDamageCap() {
return skillShotDamageCap;
}
public double getDazeBonusDamage() {
return dazeBonusDamage;
}
public double getDistanceXpMultiplier() {
return distanceXpMultiplier;
}
} }

View File

@ -60,7 +60,7 @@ public class ArcheryManager extends SkillManager {
return 1; return 1;
} }
return 1 + Math.min(firedLocation.distance(targetLocation), 50) * Archery.DISTANCE_XP_MULTIPLIER; return 1 + Math.min(firedLocation.distance(targetLocation), 50) * Archery.getInstance().getDistanceXpMultiplier();
} }
/** /**
@ -98,7 +98,7 @@ public class ArcheryManager extends SkillManager {
NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.SUBSKILL_MESSAGE, "Combat.TargetDazed"); NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.SUBSKILL_MESSAGE, "Combat.TargetDazed");
} }
return Archery.dazeBonusDamage; return Archery.getInstance().getDazeBonusDamage();
} }
/** /**