From 0f98d9babe95ff6bf12a4da3325def9742ef6942 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Fri, 22 Mar 2019 14:13:36 -0700 Subject: [PATCH] Add Serializer for Repairable --- .../gmail/nossr50/config/ConfigManager.java | 3 + .../config/hocon/RepairableSerializer.java | 59 ++++++++++++++++++ src/main/java/com/gmail/nossr50/mcMMO.java | 4 +- .../repair/repairables/RepairableFactory.java | 23 ------- .../repair/repairables/RepairableManager.java | 62 ------------------- 5 files changed, 64 insertions(+), 87 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/config/hocon/RepairableSerializer.java delete mode 100644 src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java delete mode 100644 src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableManager.java diff --git a/src/main/java/com/gmail/nossr50/config/ConfigManager.java b/src/main/java/com/gmail/nossr50/config/ConfigManager.java index 26db88fa0..5381b3067 100644 --- a/src/main/java/com/gmail/nossr50/config/ConfigManager.java +++ b/src/main/java/com/gmail/nossr50/config/ConfigManager.java @@ -3,6 +3,7 @@ package com.gmail.nossr50.config; import com.gmail.nossr50.config.collectionconfigs.SalvageConfig; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.hocon.CustomEnumValueSerializer; +import com.gmail.nossr50.config.hocon.RepairableSerializer; import com.gmail.nossr50.config.hocon.SerializedConfigLoader; import com.gmail.nossr50.config.hocon.admin.ConfigAdmin; import com.gmail.nossr50.config.hocon.antiexploit.ConfigExploitPrevention; @@ -46,6 +47,7 @@ import com.gmail.nossr50.config.treasure.HerbalismTreasureConfig; import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.skills.repair.repairables.Repairable; import com.gmail.nossr50.skills.repair.repairables.SimpleRepairable; import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager; import com.gmail.nossr50.skills.salvage.salvageables.Salvageable; @@ -213,6 +215,7 @@ public final class ConfigManager { TypeSerializers.getDefaultSerializers().registerType(new TypeToken() {}, new CustomEnumValueSerializer()); TypeSerializers.getDefaultSerializers().registerType(new TypeToken() {}, new CustomEnumValueSerializer()); + TypeSerializers.getDefaultSerializers().registerType(TypeToken.of(SimpleRepairable.class), new RepairableSerializer()); mcMMO.p.getLogger().info("Deserializing configs..."); //TODO: Not sure about the order of MainConfig diff --git a/src/main/java/com/gmail/nossr50/config/hocon/RepairableSerializer.java b/src/main/java/com/gmail/nossr50/config/hocon/RepairableSerializer.java new file mode 100644 index 000000000..29b6b4a5b --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/hocon/RepairableSerializer.java @@ -0,0 +1,59 @@ +package com.gmail.nossr50.config.hocon; + +import com.gmail.nossr50.skills.repair.repairables.SimpleRepairable; +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.bukkit.Material; + +public class RepairableSerializer implements TypeSerializer { + + /* + TypeTokens are obtained in two ways + + For Raw basic classes: + + TypeToken stringTok = TypeToken.of(String.class); + TypeToken intTok = TypeToken.of(Integer.class); + + For Generics: + + TypeToken> stringListTok = new TypeToken>() {}; + + Wildcard example: + + TypeToken> wildMapTok = new TypeToken>() {}; + + */ + + + @Override + public SimpleRepairable deserialize(TypeToken type, ConfigurationNode value) throws ObjectMappingException { + + /* + CONFIG_REPAIRABLES_DEFAULTS.add(new SimpleRepairable(WOODEN_SWORD, OAK_PLANKS, 1, 0, .25D)); + */ + + /* SimpleRepairable(Material itemMaterial, Material repairMaterial, int minimumQuantity, int minimumLevel, double xpMultiplier) */ + + Material item = value.getNode("Item").getValue(TypeToken.of(Material.class)); + Material repairItem = value.getNode("Item-Used-To-Repair").getValue(TypeToken.of(Material.class)); + int minimumQuantity = value.getNode("Minimum-Quantity-Used-To-Repair").getValue(TypeToken.of(Integer.class)); + int minimumLevel = value.getNode("Skill-Level-Required-To-Repair").getValue(TypeToken.of(Integer.class)); + double xpMultiplier = value.getNode("XP-Multiplier").getValue(TypeToken.of(Double.class)); + + return new SimpleRepairable(item, repairItem, minimumQuantity, minimumLevel, xpMultiplier); + } + + @Override + public void serialize(TypeToken type, SimpleRepairable obj, ConfigurationNode value) throws ObjectMappingException { + + value.getNode("Item").setValue(obj.getItemMaterial()); + value.getNode("Item-Used-To-Repair").setValue(obj.getRepairMaterial()); + value.getNode("Minimum-Quantity-Used-To-Repair").setValue(obj.getMinimumQuantity()); + value.getNode("Skill-Level-Required-To-Repair").setValue(obj.getMinimumLevel()); + value.getNode("XP-Multiplier").setValue(obj.getXpMultiplier()); + + } +} diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index a1587591f..8fa3cebdf 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -26,7 +26,7 @@ import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask; import com.gmail.nossr50.runnables.player.PowerLevelUpdatingTask; import com.gmail.nossr50.runnables.skills.BleedTimerTask; import com.gmail.nossr50.skills.alchemy.Alchemy; -import com.gmail.nossr50.skills.repair.repairables.RepairableManager; +import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager; import com.gmail.nossr50.skills.salvage.salvageables.SalvageableManager; import com.gmail.nossr50.util.*; import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager; @@ -354,7 +354,7 @@ public class mcMMO extends JavaPlugin { return placeStore; } - public static RepairableManager getRepairableManager() { + public static SimpleRepairableManager getRepairableManager() { return configManager.getSimpleRepairableManager(); } diff --git a/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java b/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java deleted file mode 100644 index 7cfa2e0bc..000000000 --- a/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -/* -package com.gmail.nossr50.skills.repair.repairables; - -import com.gmail.nossr50.datatypes.skills.ItemType; -import com.gmail.nossr50.datatypes.skills.MaterialType; -import org.bukkit.Material; - - -public class RepairableFactory { - public static Repairable getRepairable(Material itemMaterial, Material repairMaterial, byte repairMetadata, int minimumQuantity, short maximumDurability) { - return getRepairable(itemMaterial, repairMaterial, repairMetadata, null, 0, minimumQuantity, maximumDurability, ItemType.OTHER, MaterialType.OTHER, 1); - } - - public static Repairable getRepairable(Material itemMaterial, Material repairMaterial, byte repairMetadata, int minimumLevel, int minimumQuantity, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) { - return getRepairable(itemMaterial, repairMaterial, repairMetadata, null, minimumLevel, minimumQuantity, maximumDurability, repairItemType, repairMaterialType, xpMultiplier); - } - - public static Repairable getRepairable(Material itemMaterial, Material repairMaterial, byte repairMetadata, String repairMaterialPrettyName, int minimumLevel, int minimumQuantity, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) { - // TODO: Add in loading from config what type of repairable we want. - return new SimpleRepairable(itemMaterial, repairMaterial, repairMetadata, repairMaterialPrettyName, minimumLevel, minimumQuantity, maximumDurability, repairItemType, repairMaterialType, xpMultiplier); - } -} -*/ diff --git a/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableManager.java b/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableManager.java deleted file mode 100644 index 6cdf45bbb..000000000 --- a/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableManager.java +++ /dev/null @@ -1,62 +0,0 @@ -/* -package com.gmail.nossr50.skills.repair.repairables; - -import com.gmail.nossr50.config.Unload; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -import java.util.List; - -public interface RepairableManager extends Unload { - */ -/** - * Register a repairable with the RepairManager - * - * @param repairable Repairable to register - *//* - - public void registerRepairable(Repairable repairable); - - */ -/** - * Register a list of repairables with the RepairManager - * - * @param repairables List to register - *//* - - public void registerRepairables(List repairables); - - */ -/** - * Checks if an item is repairable - * - * @param type Material to check if repairable - * - * @return true if repairable, false if not - *//* - - public boolean isRepairable(Material type); - - */ -/** - * Checks if an item is repairable - * - * @param itemStack Item to check if repairable - * - * @return true if repairable, false if not - *//* - - public boolean isRepairable(ItemStack itemStack); - - */ -/** - * Gets the repairable with this type - * - * @param type Material of the repairable to look for - * - * @return the repairable, can be null - *//* - - public Repairable getRepairable(Material type); -} -*/