Unlimited custom XP perks part 2

This commit is contained in:
nossr50 2019-05-08 09:50:19 -07:00
parent 40598a0e96
commit ca7cf5cc58
3 changed files with 24 additions and 13 deletions

View File

@ -4,6 +4,7 @@ import com.gmail.nossr50.api.exceptions.InvalidSkillException;
import com.gmail.nossr50.datatypes.experience.CustomXPPerk; import com.gmail.nossr50.datatypes.experience.CustomXPPerk;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils;
import com.google.common.reflect.TypeResolver; import com.google.common.reflect.TypeResolver;
import com.google.common.reflect.TypeToken; import com.google.common.reflect.TypeToken;
import ninja.leaping.configurate.ConfigurationNode; import ninja.leaping.configurate.ConfigurationNode;
@ -25,6 +26,9 @@ public class CustomXPPerkSerializer implements TypeSerializer<CustomXPPerk> {
{ {
try { try {
PrimarySkillType primarySkillType = matchIgnoreCase(configurationNode.getValue(TypeToken.of(String.class))); PrimarySkillType primarySkillType = matchIgnoreCase(configurationNode.getValue(TypeToken.of(String.class)));
if(primarySkillType.isChildSkill())
continue; //Child skills gross
float boostValue = configurationNode.getNode("XP-Multiplier").getValue(TypeToken.of(Float.class)); float boostValue = configurationNode.getNode("XP-Multiplier").getValue(TypeToken.of(Float.class));
customXPPerk.setCustomXPValue(primarySkillType, boostValue); customXPPerk.setCustomXPValue(primarySkillType, boostValue);
} catch (InvalidSkillException e) { } catch (InvalidSkillException e) {
@ -40,7 +44,21 @@ public class CustomXPPerkSerializer implements TypeSerializer<CustomXPPerk> {
@Override @Override
public void serialize(@NonNull TypeToken<?> type, @Nullable CustomXPPerk obj, @NonNull ConfigurationNode value) throws ObjectMappingException { public void serialize(@NonNull TypeToken<?> type, @Nullable CustomXPPerk obj, @NonNull ConfigurationNode value) throws ObjectMappingException {
String name = obj.getPerkName();
value.getNode("name").setValue(name);
for(PrimarySkillType primarySkillType : PrimarySkillType.values())
{
float xpMultValue = obj.getXPMultiplierValue(primarySkillType);
//Ignore default values
if(xpMultValue == 1.0F)
continue;
//Set value
value.getNode("name").getNode(StringUtils.getCapitalized(primarySkillType.toString())).setValue(xpMultValue);
}
} }
private PrimarySkillType matchIgnoreCase(String string) throws InvalidSkillException private PrimarySkillType matchIgnoreCase(String string) throws InvalidSkillException

View File

@ -777,15 +777,8 @@ public class McMMOPlayer {
xp = (float) (xp / primarySkillType.getXpModifier() * mcMMO.getConfigManager().getExperienceMapManager().getGlobalXpMult()); xp = (float) (xp / primarySkillType.getXpModifier() * mcMMO.getConfigManager().getExperienceMapManager().getGlobalXpMult());
/*if (MainConfig.getInstance().getToolModsEnabled()) { //Multiply by the players personal XP rate
CustomTool tool = mcMMO.getModManager().getTool(player.getInventory().getItemInMainHand()); return xp * personalXPModifiers.get(primarySkillType);
if (tool != null) {
xp *= tool.getXpMultiplier();
}
}*/
return xp * mcMMO.getPlayerLevelUtils().getPlayersPersonalXPRate(this, primarySkillType);
} }
public void checkGodMode() { public void checkGodMode() {

View File

@ -86,10 +86,10 @@ public final class Motd {
*/ */
public static void displayXpPerks(Player player) { public static void displayXpPerks(Player player) {
for (PrimarySkillType skill : PrimarySkillType.values()) { for (PrimarySkillType skill : PrimarySkillType.values()) {
if (PerksUtils.handleXpPerks(player, 1, skill) > 1) { // if (PerksUtils.handleXpPerks(player, 1, skill) > 1) {
player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.XP.Name"), LocaleLoader.getString("Perks.XP.Desc"))); // player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.XP.Name"), LocaleLoader.getString("Perks.XP.Desc")));
return; // return;
} // }
} }
} }