Repair Config pt 5

This commit is contained in:
nossr50 2019-03-21 23:54:55 -07:00
parent 68b32e0b9e
commit 7aea4e1d92
16 changed files with 381 additions and 141 deletions

View File

@ -48,6 +48,7 @@ import com.gmail.nossr50.datatypes.party.PartyFeature;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.skills.repair.repairables.Repairable; 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.repair.repairables.SimpleRepairableManager;
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable; import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager; import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager;
@ -155,7 +156,7 @@ public final class ConfigManager {
private CoreSkillsConfig coreSkillsConfig; private CoreSkillsConfig coreSkillsConfig;
private SoundConfig soundConfig; private SoundConfig soundConfig;
private RankConfig rankConfig; private RankConfig rankConfig;
private RepairConfig repairConfig; // private RepairConfig repairConfig;
private SalvageConfig salvageConfig; private SalvageConfig salvageConfig;
private HashMap<Material, Integer> partyItemWeights; private HashMap<Material, Integer> partyItemWeights;
@ -283,7 +284,7 @@ public final class ConfigManager {
rankConfig = new RankConfig(); rankConfig = new RankConfig();
repairConfig = new RepairConfig(); // repairConfig = new RepairConfig();
salvageConfig = new SalvageConfig(); salvageConfig = new SalvageConfig();
@ -336,9 +337,9 @@ public final class ConfigManager {
* Get all loaded repairables (loaded from all repairable configs) * Get all loaded repairables (loaded from all repairable configs)
* @return the currently loaded repairables * @return the currently loaded repairables
*/ */
public ArrayList<Repairable> getRepairables() public ArrayList<SimpleRepairable> getRepairables()
{ {
return (ArrayList<Repairable>) repairConfig.genericCollection; return getConfigRepair().getConfigRepairablesList();
} }
/** /**

View File

@ -377,7 +377,7 @@ public class MainConfig extends ConfigValidated {
reason.add(SKILLS + "." + MINING + "." + DETONATOR + "Item is invalid!"); reason.add(SKILLS + "." + MINING + "." + DETONATOR + "Item is invalid!");
} }
if (getRepairAnvilMaterial() == null) { /*if (getRepairAnvilMaterial() == null) {
reason.add(SKILLS + "." + REPAIR + "." + ANVIL + "Type is invalid!!"); reason.add(SKILLS + "." + REPAIR + "." + ANVIL + "Type is invalid!!");
} }
@ -387,7 +387,7 @@ public class MainConfig extends ConfigValidated {
if (getRepairAnvilMaterial() == getSalvageAnvilMaterial()) { if (getRepairAnvilMaterial() == getSalvageAnvilMaterial()) {
reason.add("Cannot use the same item for " + REPAIR + " and " + SALVAGE + " anvils!"); reason.add("Cannot use the same item for " + REPAIR + " and " + SALVAGE + " anvils!");
} }*/
if (getTamingCOTWMaterial(EntityType.WOLF) == null) { if (getTamingCOTWMaterial(EntityType.WOLF) == null) {
reason.add(SKILLS + "." + TAMING + "." + CALL_OF_THE_WILD1 + ".Wolf." + ITEM + "Material is invalid!!"); reason.add(SKILLS + "." + TAMING + "." + CALL_OF_THE_WILD1 + ".Wolf." + ITEM + "Material is invalid!!");
@ -620,50 +620,6 @@ public class MainConfig extends ConfigValidated {
return Material.matchMaterial(getStringValue(SKILLS, MINING, DETONATOR + NAME)); return Material.matchMaterial(getStringValue(SKILLS, MINING, DETONATOR + NAME));
} }
/* Repair */
public boolean getRepairAnvilMessagesEnabled() {
return getBooleanValue(SKILLS, REPAIR, ANVIL + MESSAGES);
}
public boolean getRepairAnvilPlaceSoundsEnabled() {
return getBooleanValue(SKILLS, REPAIR, ANVIL_PLACED + SOUNDS);
}
public boolean getRepairAnvilUseSoundsEnabled() {
return getBooleanValue(SKILLS, REPAIR, ANVIL_USE + SOUNDS);
}
public Material getRepairAnvilMaterial() {
//Iron block
return Material.matchMaterial(getStringValue(SKILLS, REPAIR, ANVIL_MATERIAL));
}
public boolean getRepairConfirmRequired() {
return getBooleanValue(SKILLS, REPAIR, CONFIRM_REQUIRED);
}
/* Salvage */
public boolean getSalvageAnvilMessagesEnabled() {
return getBooleanValue(SKILLS, SALVAGE, ANVIL + MESSAGES);
}
public boolean getSalvageAnvilPlaceSoundsEnabled() {
return getBooleanValue(SKILLS, SALVAGE, ANVIL_PLACED + SOUNDS);
}
public boolean getSalvageAnvilUseSoundsEnabled() {
return getBooleanValue(SKILLS, SALVAGE, ANVIL_USE + SOUNDS);
}
public Material getSalvageAnvilMaterial() {
//Gold Block
return Material.matchMaterial(getStringValue(SKILLS, SALVAGE, ANVIL_MATERIAL));
}
public boolean getSalvageConfirmRequired() {
return getBooleanValue(SKILLS, SALVAGE, CONFIRM_REQUIRED);
}
/* Unarmed */ /* Unarmed */
public boolean getUnarmedBlockCrackerSmoothbrickToCracked() { public boolean getUnarmedBlockCrackerSmoothbrickToCracked() {
return getBooleanValue(SKILLS, UNARMED, BLOCK_CRACKER, SMOOTH_BRICK_TO_CRACKED_BRICK); return getBooleanValue(SKILLS, UNARMED, BLOCK_CRACKER, SMOOTH_BRICK_TO_CRACKED_BRICK);

View File

@ -1,3 +1,4 @@
/*
package com.gmail.nossr50.config.collectionconfigs; package com.gmail.nossr50.config.collectionconfigs;
import com.gmail.nossr50.config.ConfigCollection; import com.gmail.nossr50.config.ConfigCollection;
@ -17,9 +18,11 @@ import org.bukkit.inventory.ItemStack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
*/
/** /**
* This config * This config
*/ *//*
@ConfigSerializable @ConfigSerializable
public class RepairConfig extends ConfigCollection { public class RepairConfig extends ConfigCollection {
@ -40,11 +43,13 @@ public class RepairConfig extends ConfigCollection {
register(); register();
} }
/** */
/**
* The version of this config * The version of this config
* *
* @return * @return
*/ *//*
@Override @Override
public double getConfigVersion() { public double getConfigVersion() {
return 1; return 1;
@ -65,9 +70,11 @@ public class RepairConfig extends ConfigCollection {
// Validate all the things! // Validate all the things!
List<String> errorMessages = new ArrayList<String>(); List<String> errorMessages = new ArrayList<String>();
/*
* Match the name of the key to a Material constant definition
*/ */
/*
* Match the name of the key to a Material constant definition
*//*
String repairChildNodeName = repairNode.getString(); String repairChildNodeName = repairNode.getString();
Material itemMaterial = Material.matchMaterial(repairChildNodeName); Material itemMaterial = Material.matchMaterial(repairChildNodeName);
@ -76,9 +83,11 @@ public class RepairConfig extends ConfigCollection {
continue; continue;
} }
/*
* Determine Repair Material Type
*/ */
/*
* Determine Repair Material Type
*//*
MaterialType repairMaterialType = MaterialType.OTHER; MaterialType repairMaterialType = MaterialType.OTHER;
String repairMaterialTypeString = getRepairMaterialTypeString(repairChildNodeName); String repairMaterialTypeString = getRepairMaterialTypeString(repairChildNodeName);
@ -178,9 +187,6 @@ public class RepairConfig extends ConfigCollection {
if(hasNode(REPAIRABLES, repairChildNodeName, XP_MULTIPLIER)) if(hasNode(REPAIRABLES, repairChildNodeName, XP_MULTIPLIER))
xpMultiplier = getDoubleValue(REPAIRABLES, repairChildNodeName, XP_MULTIPLIER); xpMultiplier = getDoubleValue(REPAIRABLES, repairChildNodeName, XP_MULTIPLIER);
// Minimum Quantity // Minimum Quantity
int minimumQuantity = SkillUtils.getRepairAndSalvageQuantities(new ItemStack(itemMaterial), repairMaterial, repairMetadata); int minimumQuantity = SkillUtils.getRepairAndSalvageQuantities(new ItemStack(itemMaterial), repairMaterial, repairMetadata);
@ -188,10 +194,12 @@ public class RepairConfig extends ConfigCollection {
minimumQuantity = getIntValue(REPAIRABLES, repairChildNodeName, MINIMUM_QUANTITY); minimumQuantity = getIntValue(REPAIRABLES, repairChildNodeName, MINIMUM_QUANTITY);
} }
/* */
/*
* VALIDATE * VALIDATE
* Just make sure the values we may have just grabbed from the config aren't below 0 * Just make sure the values we may have just grabbed from the config aren't below 0
*/ *//*
//Validate min level //Validate min level
if(minimumLevel < 0) if(minimumLevel < 0)
@ -225,12 +233,15 @@ public class RepairConfig extends ConfigCollection {
return getShortValue(REPAIRABLES, key, MAXIMUM_DURABILITY); return getShortValue(REPAIRABLES, key, MAXIMUM_DURABILITY);
} }
/** */
/**
* Gets the Repair Material String Name defined in the config * Gets the Repair Material String Name defined in the config
* @param key the key name of the repairable child node under the Repairables parent node * @param key the key name of the repairable child node under the Repairables parent node
* @return the Repair Material String Name defined in the config * @return the Repair Material String Name defined in the config
*/ *//*
private String getRepairMaterialStringName(String key) { private String getRepairMaterialStringName(String key) {
return getStringValue(REPAIRABLES, key, REPAIR_MATERIAL); return getStringValue(REPAIRABLES, key, REPAIR_MATERIAL);
} }
} }
*/

View File

@ -2,12 +2,203 @@ package com.gmail.nossr50.config.hocon.skills.repair;
import com.gmail.nossr50.config.hocon.skills.repair.general.ConfigRepairGeneral; import com.gmail.nossr50.config.hocon.skills.repair.general.ConfigRepairGeneral;
import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairMastery; import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairMastery;
import com.gmail.nossr50.skills.repair.repairables.SimpleRepairable;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
import java.util.ArrayList;
import static org.bukkit.Material.*;
@ConfigSerializable @ConfigSerializable
public class ConfigRepair { public class ConfigRepair {
public static final ArrayList<SimpleRepairable> CONFIG_REPAIRABLES_DEFAULTS;
static {
CONFIG_REPAIRABLES_DEFAULTS = new ArrayList<>();
CONFIG_REPAIRABLES_DEFAULTS.add(new SimpleRepairable(WOODEN_SWORD, OAK_PLANKS, 1, 0, .25D));
CONFIG_REPAIRABLES_DEFAULTS.add(new SimpleRepairable(WOODEN_SHOVEL, OAK_PLANKS, 1, 0, .15D));
CONFIG_REPAIRABLES_DEFAULTS.add(new SimpleRepairable(WOODEN_PICKAXE, OAK_PLANKS, 1, 0, .5D));
CONFIG_REPAIRABLES_DEFAULTS.add(new SimpleRepairable(WOODEN_AXE, OAK_PLANKS, 1, 0, .5D));
CONFIG_REPAIRABLES_DEFAULTS.add(new SimpleRepairable(WOODEN_HOE, OAK_PLANKS, 1, 0, .25D));
/*
Repairables:
#
# Wooden repairables
###
# Tools
WOODEN_SWORD:
MinimumLevel: 0
XpMultiplier: .25
WOODEN_SHOVEL:
MinimumLevel: 0
XpMultiplier: .16
WOODEN_PICKAXE:
MinimumLevel: 0
XpMultiplier: .5
WOODEN_AXE:
MinimumLevel: 0
XpMultiplier: .5
WOODEN_HOE:
MinimumLevel: 0
XpMultiplier: .25
#
# Stone repairables
###
# Tools
STONE_SWORD:
MinimumLevel: 0
XpMultiplier: .25
STONE_SHOVEL:
MinimumLevel: 0
XpMultiplier: .16
STONE_PICKAXE:
MinimumLevel: 0
XpMultiplier: .5
STONE_AXE:
MinimumLevel: 0
XpMultiplier: .5
STONE_HOE:
MinimumLevel: 0
XpMultiplier: .25
#
# Iron repairables
###
# Tools
IRON_SWORD:
MinimumLevel: 0
XpMultiplier: .5
IRON_SHOVEL:
MinimumLevel: 0
XpMultiplier: .3
IRON_PICKAXE:
MinimumLevel: 0
XpMultiplier: 1
IRON_AXE:
MinimumLevel: 0
XpMultiplier: 1
IRON_HOE:
MinimumLevel: 0
XpMultiplier: .5
SHEARS:
MinimumLevel: 0
XpMultiplier: .5
FLINT_AND_STEEL:
MinimumLevel: 0
XpMultiplier: .3
# Armor
IRON_HELMET:
MinimumLevel: 0
XpMultiplier: 2
IRON_CHESTPLATE:
MinimumLevel: 0
XpMultiplier: 2
IRON_LEGGINGS:
MinimumLevel: 0
XpMultiplier: 2
IRON_BOOTS:
MinimumLevel: 0
XpMultiplier: 2
#
# Gold repairables
###
# Tools
GOLDEN_SWORD:
MinimumLevel: 0
XpMultiplier: 4
GOLDEN_SHOVEL:
MinimumLevel: 0
XpMultiplier: 2.6
GOLDEN_PICKAXE:
MinimumLevel: 0
XpMultiplier: 8
GOLDEN_AXE:
MinimumLevel: 0
XpMultiplier: 8
GOLDEN_HOE:
MinimumLevel: 0
XpMultiplier: 4
# Armor
GOLDEN_HELMET:
MinimumLevel: 0
XpMultiplier: 4
GOLDEN_CHESTPLATE:
MinimumLevel: 0
XpMultiplier: 4
GOLDEN_LEGGINGS:
MinimumLevel: 0
XpMultiplier: 4
GOLDEN_BOOTS:
MinimumLevel: 0
XpMultiplier: 4
#
# Diamond repairables
###
# Tools
DIAMOND_SWORD:
MinimumLevel: 50
XpMultiplier: .5
DIAMOND_SHOVEL:
MinimumLevel: 50
XpMultiplier: .3
DIAMOND_PICKAXE:
MinimumLevel: 50
XpMultiplier: 1
DIAMOND_AXE:
MinimumLevel: 50
XpMultiplier: 1
DIAMOND_HOE:
MinimumLevel: 50
XpMultiplier: .5
# Armor
DIAMOND_HELMET:
MinimumLevel: 50
XpMultiplier: 6
DIAMOND_CHESTPLATE:
MinimumLevel: 50
XpMultiplier: 6
DIAMOND_LEGGINGS:
MinimumLevel: 50
XpMultiplier: 6
DIAMOND_BOOTS:
MinimumLevel: 50
XpMultiplier: 6
#
# Leather repairables
###
# Armor
LEATHER_HELMET:
MinimumLevel: 0
XpMultiplier: 1
LEATHER_CHESTPLATE:
MinimumLevel: 0
XpMultiplier: 1
LEATHER_LEGGINGS:
MinimumLevel: 0
XpMultiplier: 1
LEATHER_BOOTS:
MinimumLevel: 0
XpMultiplier: 1
#
# String repairables
###
# Tools
FISHING_ROD:
MinimumLevel: 0
XpMultiplier: .5
BOW:
MinimumLevel: 0
XpMultiplier: .5
CARROT_ON_A_STICK:
MinimumLevel: 0
XpMultiplier: .5
*/
}
@Setting(value = "Repair-Mastery", comment = "Settings related to the repair mastery subskill") @Setting(value = "Repair-Mastery", comment = "Settings related to the repair mastery subskill")
private ConfigRepairMastery repairMastery = new ConfigRepairMastery(); private ConfigRepairMastery repairMastery = new ConfigRepairMastery();
@ -20,6 +211,9 @@ public class ConfigRepair {
@Setting(value = "General") @Setting(value = "General")
private ConfigRepairGeneral repairGeneral = new ConfigRepairGeneral(); private ConfigRepairGeneral repairGeneral = new ConfigRepairGeneral();
@Setting(value = "Repairables")
private ArrayList<SimpleRepairable> configRepairablesList = CONFIG_REPAIRABLES_DEFAULTS;
public ConfigRepairGeneral getRepairGeneral() { public ConfigRepairGeneral getRepairGeneral() {
return repairGeneral; return repairGeneral;
} }
@ -35,4 +229,8 @@ public class ConfigRepair {
public ConfigRepairArcaneForging getArcaneForging() { public ConfigRepairArcaneForging getArcaneForging() {
return arcaneForging; return arcaneForging;
} }
public ArrayList<SimpleRepairable> getConfigRepairablesList() {
return configRepairablesList;
}
} }

View File

@ -8,6 +8,9 @@ import java.util.HashMap;
@ConfigSerializable @ConfigSerializable
public class ConfigRepairArcaneForging { public class ConfigRepairArcaneForging {
public static final boolean LOSE_ENCHANTS_DEFAULT = true;
public static final boolean DOWNGRADES_ENABLED_DEFAULT = true;
public static final HashMap<Integer, Double> KEEP_ENCHANT_MAP; public static final HashMap<Integer, Double> KEEP_ENCHANT_MAP;
public static final HashMap<Integer, Double> DOWNGRADE_MAP_DEFAULT; public static final HashMap<Integer, Double> DOWNGRADE_MAP_DEFAULT;
@ -33,9 +36,6 @@ public class ConfigRepairArcaneForging {
DOWNGRADE_MAP_DEFAULT.put(8, 10.0D); DOWNGRADE_MAP_DEFAULT.put(8, 10.0D);
} }
public static final boolean LOSE_ENCHANTS_DEFAULT = true;
public static final boolean DOWNGRADES_ENABLED_DEFAULT = true;
@Setting(value = "May-Lose-Enchants", comment = "With this on, players have a chance to have enchantments stripped from" + @Setting(value = "May-Lose-Enchants", comment = "With this on, players have a chance to have enchantments stripped from" +
"\n their item when repairing." + "\n their item when repairing." +
"\nThe odds to lose your enchants decrease with higher levels of skill." + "\nThe odds to lose your enchants decrease with higher levels of skill." +

View File

@ -11,22 +11,6 @@ public class ConfigRepairGeneral {
public static final boolean ANVIL_PLACED_SOUNDS_DEFAULT = true; public static final boolean ANVIL_PLACED_SOUNDS_DEFAULT = true;
public static final boolean ENCHANTED_ITEMS_REQUIRE_CONFIRM = true; public static final boolean ENCHANTED_ITEMS_REQUIRE_CONFIRM = true;
/*
public Material getRepairAnvilMaterial() {
//Iron block
return Material.matchMaterial(getStringValue(SKILLS, REPAIR, ANVIL_MATERIAL));
}
public boolean getRepairConfirmRequired() {
return getBooleanValue(SKILLS, REPAIR, CONFIRM_REQUIRED);
}
public boolean getRepairAnvilMessagesEnabled() {
return getBooleanValue(SKILLS, REPAIR, ANVIL + MESSAGES);
}
*/
@Setting(value = "Anvil-Block-Material", comment = "The block used for mcMMO repairs." + @Setting(value = "Anvil-Block-Material", comment = "The block used for mcMMO repairs." +
"Default value: "+"IRON_BLOCK") "Default value: "+"IRON_BLOCK")
private Material repairAnvilMaterial = Material.IRON_BLOCK; private Material repairAnvilMaterial = Material.IRON_BLOCK;

View File

@ -0,0 +1,30 @@
/*
package com.gmail.nossr50.config.hocon.skills.repair.repairables;
import com.gmail.nossr50.datatypes.skills.ItemType;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
import org.bukkit.Material;
@ConfigSerializable
public class ConfigRepairables {
@Setting(value = "Item-Material")
private Material itemMaterial;
@Setting(value = "Item-Used-To-Repair")
private Material repairMaterial;
@Setting(value = "Minimum-Quantity-Required-For-Repair")
private int minimumQuantity;
@Setting(value = "Minimum-Level-Required-For-Repair")
private int minimumLevel;
@Setting(value = "Repair-Item-Category")
private ItemType repairItemType;
@Setting(value = "XP-Multiplier")
private double xpMultiplier;
}*/

View File

@ -7,6 +7,9 @@ import java.util.HashMap;
@ConfigSerializable @ConfigSerializable
public class ConfigArcaneSalvage { public class ConfigArcaneSalvage {
public static final boolean LOSE_ENCHANTS_DEFAULT = true;
public static final boolean DOWNGRADES_ENABLED_DEFAULT = true;
public static final HashMap<Integer, Double> FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT; public static final HashMap<Integer, Double> FULL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
public static final HashMap<Integer, Double> PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT; public static final HashMap<Integer, Double> PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
@ -41,6 +44,24 @@ public class ConfigArcaneSalvage {
"\nThis check happens if you fail to extract the full enchant from the item.") "\nThis check happens if you fail to extract the full enchant from the item.")
private HashMap<Integer, Double> extractPartialEnchantChance = PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT; private HashMap<Integer, Double> extractPartialEnchantChance = PARTIAL_ENCHANT_INTEGER_DOUBLE_HASH_MAP_DEFAULT;
@Setting(value = "May-Lose-Enchants", comment = "With this on, players have a chance to not receive the enchantments from the item they are salvaging." +
"\nThe odds to lose your enchants decrease with higher levels of skill." +
"\nDefault value: "+LOSE_ENCHANTS_DEFAULT)
private boolean mayLoseEnchants = LOSE_ENCHANTS_DEFAULT;
@Setting(value = "Chance-To-Downgrade-Enchants", comment = "With this on, players have a chance to have salvaged enchantments downgrade when salvaging." +
"\nThe chance to downgrade decreases with higher levels of skill." +
"\nDefault value: "+DOWNGRADES_ENABLED_DEFAULT)
private boolean downgradesEnabled = DOWNGRADES_ENABLED_DEFAULT;
public boolean isMayLoseEnchants() {
return mayLoseEnchants;
}
public boolean isDowngradesEnabled() {
return downgradesEnabled;
}
public HashMap<Integer, Double> getExtractFullEnchantChance() { public HashMap<Integer, Double> getExtractFullEnchantChance() {
return extractFullEnchantChance; return extractFullEnchantChance;

View File

@ -1,11 +1,17 @@
package com.gmail.nossr50.skills.repair; package com.gmail.nossr50.skills.repair;
import com.gmail.nossr50.config.MainConfig; import com.gmail.nossr50.mcMMO;
import org.bukkit.Material; import org.bukkit.Material;
public class Repair { public class Repair {
//public static int repairMasteryMaxBonusLevel = AdvancedConfig.getInstance().getRepairMasteryMaxLevel(); public static Material anvilMaterial;
//public static double repairMasteryMaxBonus = AdvancedConfig.getInstance().getRepairMasteryMaxBonus();
//public static Material anvilMaterial = MainConfig.getInstance().getRepairAnvilMaterial(); public Repair() {
anvilMaterial = mcMMO.getConfigManager().getConfigRepair().getRepairGeneral().getRepairAnvilMaterial();
}
public static Material getRepairAnvilMaterial()
{
return anvilMaterial;
}
} }

View File

@ -1,7 +1,6 @@
package com.gmail.nossr50.skills.repair; package com.gmail.nossr50.skills.repair;
import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.MainConfig;
import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.experience.XPGainReason;
import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.interactions.NotificationType;
@ -51,11 +50,11 @@ public class RepairManager extends SkillManager {
return; return;
} }
if (MainConfig.getInstance().getRepairAnvilMessagesEnabled()) { if (mcMMO.getConfigManager().getConfigRepair().getRepairGeneral().isAnvilMessages()) {
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Repair.Listener.Anvil"); NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Repair.Listener.Anvil");
} }
if (MainConfig.getInstance().getRepairAnvilPlaceSoundsEnabled()) { if (mcMMO.getConfigManager().getConfigRepair().getRepairGeneral().isAnvilPlacedSounds()) {
SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL); SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL);
} }
@ -94,7 +93,7 @@ public class RepairManager extends SkillManager {
PlayerInventory inventory = player.getInventory(); PlayerInventory inventory = player.getInventory();
Material repairMaterial = repairable.getRepairMaterial(); Material repairMaterial = repairable.getRepairMaterial();
byte repairMaterialMetadata = repairable.getRepairMaterialMetadata(); //byte repairMaterialMetadata = repairable.getRepairMaterialMetadata();
ItemStack toRemove = new ItemStack(repairMaterial); ItemStack toRemove = new ItemStack(repairMaterial);
short startDurability = item.getDurability(); short startDurability = item.getDurability();
@ -106,7 +105,7 @@ public class RepairManager extends SkillManager {
} }
// Check if they have the proper material to repair with // Check if they have the proper material to repair with
if (!inventory.contains(repairMaterial)) { /*if (!inventory.contains(repairMaterial)) {
String prettyName = repairable.getRepairMaterialPrettyName() == null ? StringUtils.getPrettyItemString(repairMaterial) : repairable.getRepairMaterialPrettyName(); String prettyName = repairable.getRepairMaterialPrettyName() == null ? StringUtils.getPrettyItemString(repairMaterial) : repairable.getRepairMaterialPrettyName();
String materialsNeeded = ""; String materialsNeeded = "";
@ -117,7 +116,7 @@ public class RepairManager extends SkillManager {
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Skills.NeedMore.Extra", prettyName, materialsNeeded); NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Skills.NeedMore.Extra", prettyName, materialsNeeded);
return; return;
} }*/
// Do not repair stacked items // Do not repair stacked items
if (item.getAmount() != 1) { if (item.getAmount() != 1) {
@ -144,10 +143,10 @@ public class RepairManager extends SkillManager {
} }
// Remove the item // Remove the item
if (repairMaterialMetadata == -1) { /*if (repairMaterialMetadata == -1) {
toRemove = inventory.getItem(inventory.first(repairMaterial)).clone(); toRemove = inventory.getItem(inventory.first(repairMaterial)).clone();
toRemove.setAmount(1); toRemove.setAmount(1);
} }*/
inventory.removeItem(toRemove); inventory.removeItem(toRemove);
@ -155,7 +154,7 @@ public class RepairManager extends SkillManager {
applyXpGain((float) ((getPercentageRepaired(startDurability, newDurability, repairable.getMaximumDurability()) * repairable.getXpMultiplier()) * ExperienceConfig.getInstance().getRepairXPBase() * ExperienceConfig.getInstance().getRepairXP(repairable.getRepairMaterialType())), XPGainReason.PVE); applyXpGain((float) ((getPercentageRepaired(startDurability, newDurability, repairable.getMaximumDurability()) * repairable.getXpMultiplier()) * ExperienceConfig.getInstance().getRepairXPBase() * ExperienceConfig.getInstance().getRepairXP(repairable.getRepairMaterialType())), XPGainReason.PVE);
// BWONG BWONG BWONG // BWONG BWONG BWONG
if (MainConfig.getInstance().getRepairAnvilUseSoundsEnabled()) { if (mcMMO.getConfigManager().getConfigRepair().getRepairGeneral().isAnvilUseSounds()) {
SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL); SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL);
SoundManager.sendSound(player, player.getLocation(), SoundType.ITEM_BREAK); SoundManager.sendSound(player, player.getLocation(), SoundType.ITEM_BREAK);
} }
@ -177,7 +176,7 @@ public class RepairManager extends SkillManager {
Player player = getPlayer(); Player player = getPlayer();
long lastUse = getLastAnvilUse(); long lastUse = getLastAnvilUse();
if (!SkillUtils.cooldownExpired(lastUse, 3) || !MainConfig.getInstance().getRepairConfirmRequired()) { if (!SkillUtils.cooldownExpired(lastUse, 3) || !mcMMO.getConfigManager().getConfigRepair().getRepairGeneral().isEnchantedItemsRequireConfirm()) {
return true; return true;
} }

View File

@ -20,20 +20,6 @@ public interface Repairable {
*/ */
public Material getRepairMaterial(); public Material getRepairMaterial();
/**
* Gets the metadata byte value of the material used to repair this item
*
* @return the byte metadata of the repair material
*/
public byte getRepairMaterialMetadata();
/**
* Gets the pretty name of the material used to repair this item
*
* @return the pretty name of the repair material
*/
public String getRepairMaterialPrettyName();
/** /**
* Gets the RepairItemType value for this repairable item * Gets the RepairItemType value for this repairable item
* *

View File

@ -1,3 +1,4 @@
/*
package com.gmail.nossr50.skills.repair.repairables; package com.gmail.nossr50.skills.repair.repairables;
import com.gmail.nossr50.datatypes.skills.ItemType; import com.gmail.nossr50.datatypes.skills.ItemType;
@ -19,3 +20,4 @@ public class RepairableFactory {
return new SimpleRepairable(itemMaterial, repairMaterial, repairMetadata, repairMaterialPrettyName, minimumLevel, minimumQuantity, maximumDurability, repairItemType, repairMaterialType, xpMultiplier); return new SimpleRepairable(itemMaterial, repairMaterial, repairMetadata, repairMaterialPrettyName, minimumLevel, minimumQuantity, maximumDurability, repairItemType, repairMaterialType, xpMultiplier);
} }
} }
*/

View File

@ -2,23 +2,23 @@ package com.gmail.nossr50.skills.repair.repairables;
import com.gmail.nossr50.datatypes.skills.ItemType; import com.gmail.nossr50.datatypes.skills.ItemType;
import com.gmail.nossr50.datatypes.skills.MaterialType; import com.gmail.nossr50.datatypes.skills.MaterialType;
import com.gmail.nossr50.util.ItemUtils;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class SimpleRepairable implements Repairable { public class SimpleRepairable implements Repairable {
private final Material itemMaterial, repairMaterial; private final Material itemMaterial, repairMaterial;
private final int minimumQuantity, minimumLevel; private final int minimumQuantity, minimumLevel;
private final short maximumDurability, baseRepairDurability; private final short maximumDurability, baseRepairDurability;
private final byte repairMetadata; /*private String repairMaterialPrettyName;*/
private String repairMaterialPrettyName;
private final ItemType repairItemType; private final ItemType repairItemType;
private final MaterialType repairMaterialType; private final MaterialType repairMaterialType;
private final double xpMultiplier; private final double xpMultiplier;
protected SimpleRepairable(Material type, Material repairMaterial, byte repairMetadata, String repairMaterialPrettyName, int minimumLevel, int minimumQuantity, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) { /* protected SimpleRepairable(Material type, Material repairMaterial, String repairMaterialPrettyName, int minimumLevel, int minimumQuantity, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) {
this.itemMaterial = type; this.itemMaterial = type;
this.repairMaterial = repairMaterial; this.repairMaterial = repairMaterial;
this.repairMetadata = repairMetadata;
this.repairMaterialPrettyName = repairMaterialPrettyName; this.repairMaterialPrettyName = repairMaterialPrettyName;
this.repairItemType = repairItemType; this.repairItemType = repairItemType;
this.repairMaterialType = repairMaterialType; this.repairMaterialType = repairMaterialType;
@ -27,6 +27,65 @@ public class SimpleRepairable implements Repairable {
this.maximumDurability = maximumDurability; this.maximumDurability = maximumDurability;
this.baseRepairDurability = (short) (maximumDurability / minimumQuantity); this.baseRepairDurability = (short) (maximumDurability / minimumQuantity);
this.xpMultiplier = xpMultiplier; this.xpMultiplier = xpMultiplier;
}*/
public SimpleRepairable(Material itemMaterial, Material repairMaterial, int minimumQuantity, int minimumLevel, double xpMultiplier) {
this.itemMaterial = itemMaterial;
this.repairMaterial = repairMaterial;
this.minimumQuantity = minimumQuantity;
this.minimumLevel = minimumLevel;
this.xpMultiplier = xpMultiplier;
this.maximumDurability = itemMaterial.getMaxDurability();
this.baseRepairDurability = (short) (maximumDurability / minimumQuantity);
this.repairItemType = determineItemType(itemMaterial);
this.repairMaterialType = determineMaterialType(repairMaterial);
}
public MaterialType determineMaterialType(Material material) {
switch (material) {
case STRING:
return MaterialType.STRING;
case LEATHER:
return MaterialType.LEATHER;
case ACACIA_PLANKS:
case BIRCH_PLANKS:
case DARK_OAK_PLANKS:
case JUNGLE_PLANKS:
case OAK_PLANKS:
case SPRUCE_PLANKS:
return MaterialType.WOOD;
case STONE:
return MaterialType.STONE;
case IRON_INGOT:
return MaterialType.IRON;
case GOLD_INGOT:
return MaterialType.GOLD;
case DIAMOND:
return MaterialType.DIAMOND;
default:
return MaterialType.OTHER;
}
}
private ItemType determineItemType(Material material)
{
if (ItemUtils.isMinecraftTool(new ItemStack(material))) {
return ItemType.TOOL;
}
else if (ItemUtils.isArmor(new ItemStack((material)))) {
return ItemType.ARMOR;
} else {
return ItemType.OTHER;
}
} }
@Override @Override
@ -39,16 +98,6 @@ public class SimpleRepairable implements Repairable {
return repairMaterial; return repairMaterial;
} }
@Override
public byte getRepairMaterialMetadata() {
return repairMetadata;
}
@Override
public String getRepairMaterialPrettyName() {
return repairMaterialPrettyName;
}
@Override @Override
public ItemType getRepairItemType() { public ItemType getRepairItemType() {
return repairItemType; return repairItemType;

View File

@ -1,19 +1,18 @@
package com.gmail.nossr50.skills.salvage; package com.gmail.nossr50.skills.salvage;
import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.MainConfig;
import org.bukkit.Material; import org.bukkit.Material;
public class Salvage { public class Salvage {
public static Material anvilMaterial = MainConfig.getInstance().getSalvageAnvilMaterial();
/*public static int salvageMaxPercentageLevel = AdvancedConfig.getInstance().getSalvageMaxPercentageLevel(); public Salvage() {
public static double salvageMaxPercentage = AdvancedConfig.getInstance().getSalvageMaxPercentage(); anvilMaterial = mcMMO.getConfigManager().getConfigSalvage().getGeneral().getSalvageAnvilMaterial();
arcaneSalvageDowngrades = mcMMO.getConfigManager().getConfigSalvage().getConfigArcaneSalvage().isDowngradesEnabled();
public static int advancedSalvageUnlockLevel = RankUtils.getRankUnlockLevel(SubSkillType.SALVAGE_ADVANCED_SALVAGE, 1);*/ arcaneSalvageEnchantLoss = mcMMO.getConfigManager().getConfigSalvage().getConfigArcaneSalvage().isMayLoseEnchants();
}
public static boolean arcaneSalvageDowngrades = AdvancedConfig.getInstance().getArcaneSalvageEnchantDowngradeEnabled(); public static Material anvilMaterial;
public static boolean arcaneSalvageEnchantLoss = AdvancedConfig.getInstance().getArcaneSalvageEnchantLossEnabled(); public static boolean arcaneSalvageDowngrades;
public static boolean arcaneSalvageEnchantLoss;
protected static int calculateSalvageableAmount(short currentDurability, short maxDurability, int baseAmount) { protected static int calculateSalvageableAmount(short currentDurability, short maxDurability, int baseAmount) {
double percentDamaged = (maxDurability <= 0) ? 1D : (double) (maxDurability - currentDurability) / maxDurability; double percentDamaged = (maxDurability <= 0) ? 1D : (double) (maxDurability - currentDurability) / maxDurability;

View File

@ -1,7 +1,6 @@
package com.gmail.nossr50.skills.salvage; package com.gmail.nossr50.skills.salvage;
import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.MainConfig;
import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.interactions.NotificationType;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
@ -49,11 +48,11 @@ public class SalvageManager extends SkillManager {
return; return;
} }
if (MainConfig.getInstance().getSalvageAnvilMessagesEnabled()) { if (mcMMO.getConfigManager().getConfigSalvage().getGeneral().isAnvilMessages()) {
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Salvage.Listener.Anvil"); NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Salvage.Listener.Anvil");
} }
if (MainConfig.getInstance().getSalvageAnvilPlaceSoundsEnabled()) { if (mcMMO.getConfigManager().getConfigSalvage().getGeneral().isAnvilPlacedSounds()) {
SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL); SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL);
} }
@ -130,7 +129,7 @@ public class SalvageManager extends SkillManager {
Misc.dropItems(location, salvageResults, 1); Misc.dropItems(location, salvageResults, 1);
// BWONG BWONG BWONG - CLUNK! // BWONG BWONG BWONG - CLUNK!
if (MainConfig.getInstance().getSalvageAnvilUseSoundsEnabled()) { if (mcMMO.getConfigManager().getConfigSalvage().getGeneral().isAnvilUseSounds()) {
SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL); SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL);
SoundManager.sendSound(player, player.getLocation(), SoundType.ITEM_BREAK); SoundManager.sendSound(player, player.getLocation(), SoundType.ITEM_BREAK);
@ -253,7 +252,7 @@ public class SalvageManager extends SkillManager {
Player player = getPlayer(); Player player = getPlayer();
long lastUse = getLastAnvilUse(); long lastUse = getLastAnvilUse();
if (!SkillUtils.cooldownExpired(lastUse, 3) || !MainConfig.getInstance().getSalvageConfirmRequired()) { if (!SkillUtils.cooldownExpired(lastUse, 3) || !mcMMO.getConfigManager().getConfigSalvage().getGeneral().isEnchantedItemsRequireConfirm()) {
return true; return true;
} }

View File

@ -1,6 +1,5 @@
package com.gmail.nossr50.util.random; package com.gmail.nossr50.util.random;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;