1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package com.gmail.nossr50.config.hocon;
- import com.gmail.nossr50.api.exceptions.InvalidSkillException;
- import com.gmail.nossr50.datatypes.experience.CustomXPPerk;
- import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
- import com.gmail.nossr50.mcMMO;
- import com.google.common.reflect.TypeResolver;
- import com.google.common.reflect.TypeToken;
- import ninja.leaping.configurate.ConfigurationNode;
- import ninja.leaping.configurate.objectmapping.ObjectMappingException;
- import ninja.leaping.configurate.objectmapping.serialize.TypeSerializer;
- import org.checkerframework.checker.nullness.qual.NonNull;
- import org.checkerframework.checker.nullness.qual.Nullable;
- public class CustomXPPerkSerializer implements TypeSerializer<CustomXPPerk> {
- @Nullable
- @Override
- public CustomXPPerk deserialize(@NonNull TypeToken<?> type, @NonNull ConfigurationNode value) throws ObjectMappingException {
- String perkName = value.getNode("name").getValue(TypeToken.of(String.class));
- CustomXPPerk customXPPerk = new CustomXPPerk(perkName);
- //See if any children nodes match skills by name
- for(ConfigurationNode configurationNode : value.getChildrenList())
- {
- try {
- PrimarySkillType primarySkillType = matchIgnoreCase(configurationNode.getValue(TypeToken.of(String.class)));
- float boostValue = configurationNode.getNode("XP-Multiplier").getValue(TypeToken.of(Float.class));
- customXPPerk.setCustomXPValue(primarySkillType, boostValue);
- } catch (InvalidSkillException e) {
- mcMMO.p.getLogger().info("Custom XP perk has a skill defined that was not found, did you misspell it?");
- e.printStackTrace();
- } catch (ObjectMappingException e) {
- e.printStackTrace();
- }
- }
- return customXPPerk;
- }
- @Override
- public void serialize(@NonNull TypeToken<?> type, @Nullable CustomXPPerk obj, @NonNull ConfigurationNode value) throws ObjectMappingException {
- }
- private PrimarySkillType matchIgnoreCase(String string) throws InvalidSkillException
- {
- for(PrimarySkillType primarySkillType : PrimarySkillType.values())
- {
- if(string.equalsIgnoreCase(primarySkillType.toString()))
- return primarySkillType;
- }
- throw new InvalidSkillException();
- }
- /*
- CustomXPPerk customXPPerk = new CustomXPPerk("examplecustomxpperk");
- customXPPerk.setCustomXPValue(PrimarySkillType.MINING, 13.37f);
- customXPPerk.setCustomXPValue(PrimarySkillType.WOODCUTTING, 4.0f);
- */
- }
|