Jelajahi Sumber

Custom Serializer for DamageProperty

nossr50 6 tahun lalu
induk
melakukan
8c1c17fa17

+ 1 - 1
Changelog.txt

@@ -3,7 +3,7 @@ Version 2.2.0
     !!!!!!!!!!!!!!!!!!!!!!!!
     This changelog is not complete, I'll be going over it and cleaning it up once 2.2 is close to release
     !!!!!!!!!!!!!!!!!!!!!!!!
-    !!!!!!!!!!!!!!!!!!!!!!!!
+    !!!!!!!!!!!!!!!!!!!!!!!!mvn clea
     mcMMO's config system has been rewritten
     Nearly every config setting has been renamed and most have brand new comments
     You can now add an unlimited number of custom XP perks with custom defined XP boosts

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceCommand.java

@@ -5,9 +5,9 @@ import com.gmail.nossr50.datatypes.party.PartyFeature;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.party.PartyManager;
+import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.google.common.collect.ImmutableList;
-import com.gmail.nossr50.util.commands.CommandUtils;
 import org.bukkit.ChatColor;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;

+ 2 - 0
src/main/java/com/gmail/nossr50/config/ConfigManager.java

@@ -48,6 +48,7 @@ import com.gmail.nossr50.datatypes.experience.CustomXPPerk;
 import com.gmail.nossr50.datatypes.experience.FormulaType;
 import com.gmail.nossr50.datatypes.party.PartyFeature;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+import com.gmail.nossr50.datatypes.skills.properties.DamageProperty;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.repair.repairables.Repairable;
 import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
@@ -260,6 +261,7 @@ public final class ConfigManager {
         customSerializers.registerType(TypeToken.of(Salvageable.class), new SalvageableSerializer());
         customSerializers.registerType(TypeToken.of(MinecraftMaterialWrapper.class), new MinecraftMaterialWrapperSerializer());
         customSerializers.registerType(TypeToken.of(CustomXPPerk.class), new CustomXPPerkSerializer());
+        customSerializers.registerType(TypeToken.of(DamageProperty.class), new DamagePropertySerializer());
     }
 
     /**

+ 31 - 0
src/main/java/com/gmail/nossr50/config/hocon/DamagePropertySerializer.java

@@ -0,0 +1,31 @@
+package com.gmail.nossr50.config.hocon;
+
+import com.gmail.nossr50.datatypes.skills.properties.AbstractDamageProperty;
+import com.gmail.nossr50.datatypes.skills.properties.DamageProperty;
+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 DamagePropertySerializer implements TypeSerializer<DamageProperty> {
+
+    public static final String PVP_NODE = "PVP";
+    public static final String PVE_NODE = "PVE";
+
+    @Nullable
+    @Override
+    public DamageProperty deserialize(@NonNull TypeToken<?> type, @NonNull ConfigurationNode value) throws ObjectMappingException {
+        Float pvp = value.getNode(PVP_NODE).getValue(TypeToken.of(Float.class));
+        Float pve = value.getNode(PVE_NODE).getValue(TypeToken.of(Float.class));
+        DamageProperty damageProperty = new AbstractDamageProperty(pve, pvp);
+        return damageProperty;
+    }
+
+    @Override
+    public void serialize(@NonNull TypeToken<?> type, @Nullable DamageProperty obj, @NonNull ConfigurationNode value) throws ObjectMappingException {
+        value.getNode(PVP_NODE).setValue(obj.getPVPModifier());
+        value.getNode(PVE_NODE).setValue(obj.getPVEModifier());
+    }
+}

+ 0 - 1
src/main/java/com/gmail/nossr50/config/hocon/skills/axes/ConfigAxesCriticalStrikes.java

@@ -1,6 +1,5 @@
 package com.gmail.nossr50.config.hocon.skills.axes;
 
-import com.gmail.nossr50.datatypes.skills.SubSkillType;
 import com.gmail.nossr50.datatypes.skills.properties.AbstractDamageProperty;
 import com.gmail.nossr50.datatypes.skills.properties.AbstractMaximumProgressionLevel;
 import com.gmail.nossr50.datatypes.skills.properties.DamageProperty;