Rework armor.yml to take item names instead of IDs in advance of 1.7 changes.

** YOU WILL NEED TO REDO YOUR armor.yml FILE **
This commit is contained in:
GJ
2013-09-20 10:03:02 -04:00
committed by TfT_02
parent 933b6f278b
commit 792ecd6aad
12 changed files with 114 additions and 165 deletions

View File

@ -5,6 +5,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.ShapelessRecipe;
import org.bukkit.material.MaterialData;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
@ -112,25 +113,29 @@ public class Repair {
}
}
Recipe recipe = mcMMO.p.getServer().getRecipesFor(inHand).get(0);
int salvageAmount = 0;
Material salvageMaterial = getSalvagedItem(inHand);
return getRepairAndSalvageQuantities(inHand, getSalvagedItem(inHand), (byte) -1);
}
public static int getRepairAndSalvageQuantities(ItemStack item, Material repairMaterial, byte repairMetadata) {
int quantity = 0;
MaterialData repairData = new MaterialData(repairMaterial, repairMetadata);
Recipe recipe = mcMMO.p.getServer().getRecipesFor(item).get(0);
if (recipe instanceof ShapelessRecipe) {
for (ItemStack ingredient : ((ShapelessRecipe) recipe).getIngredientList()) {
if (ingredient != null && ingredient.getType() == salvageMaterial) {
salvageAmount += ingredient.getAmount();
if (ingredient != null && ingredient.getType() == repairMaterial && (repairMetadata == -1 || ingredient.getData() == repairData)) {
quantity += ingredient.getAmount();
}
}
}
else if (recipe instanceof ShapedRecipe) {
for (ItemStack ingredient : ((ShapedRecipe) recipe).getIngredientMap().values()) {
if (ingredient != null && ingredient.getType() == salvageMaterial) {
salvageAmount += ingredient.getAmount();
if (ingredient != null && ingredient.getType() == repairMaterial && (repairMetadata == -1 || ingredient.getData() == repairData)) {
quantity += ingredient.getAmount();
}
}
}
return salvageAmount;
return quantity;
}
}

View File

@ -7,13 +7,9 @@ import java.util.Set;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.ShapelessRecipe;
import org.bukkit.material.MaterialData;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.ConfigLoader;
import com.gmail.nossr50.skills.repair.Repair;
import com.gmail.nossr50.skills.repair.RepairItemType;
import com.gmail.nossr50.skills.repair.RepairMaterialType;
import com.gmail.nossr50.skills.repair.Repairable;
@ -100,7 +96,7 @@ public class RepairConfig extends ConfigLoader {
}
// Maximum Durability
short maximumDurability = (config.contains("Repairables." + key + ".MaximumDurability") ? (short) config.getInt("Repairables." + key + ".MaximumDurability") : (itemMaterial != null ? itemMaterial.getMaxDurability() : 0));
short maximumDurability = (itemMaterial != null ? itemMaterial.getMaxDurability() : (short) config.getInt("Repairables." + key + ".MaximumDurability"));
if (maximumDurability <= 0) {
reason.add("Maximum durability of " + key + " must be greater than 0!");
@ -129,7 +125,7 @@ public class RepairConfig extends ConfigLoader {
}
}
int repairMetadata = config.getInt("Repairables." + key + ".RepairMaterialMetadata", -1);
byte repairMetadata = (byte) config.getInt("Repairables." + key + ".RepairMaterialMetadata", -1);
int minimumLevel = config.getInt("Repairables." + key + ".MinimumLevel");
double xpMultiplier = config.getDouble("Repairables." + key + ".XpMultiplier", 1);
@ -138,38 +134,14 @@ public class RepairConfig extends ConfigLoader {
}
// Minimum Quantity
int minimumQuantity = 0;
if (config.contains("Repairables." + key + ".MinimumQuantity")) {
minimumQuantity = config.getInt("Repairables." + key + ".MinimumQuantity");
}
else if (itemMaterial != null) {
ItemStack item = new ItemStack(itemMaterial);
MaterialData repairData = new MaterialData(repairMaterial, (byte) repairMetadata);
Recipe recipe = mcMMO.p.getServer().getRecipesFor(item).get(0);
if (recipe instanceof ShapelessRecipe) {
for (ItemStack ingredient : ((ShapelessRecipe) recipe).getIngredientList()) {
if (ingredient != null && ingredient.getType() == repairMaterial && (repairMetadata == -1 || ingredient.getData() == repairData)) {
minimumQuantity += ingredient.getAmount();
}
}
}
else if (recipe instanceof ShapedRecipe) {
for (ItemStack ingredient : ((ShapedRecipe) recipe).getIngredientMap().values()) {
if (ingredient != null && ingredient.getType() == repairMaterial && (repairMetadata == -1 || ingredient.getData() == repairData)) {
minimumQuantity += ingredient.getAmount();
}
}
}
}
int minimumQuantity = (itemMaterial != null ? Repair.getRepairAndSalvageQuantities(new ItemStack(itemMaterial), repairMaterial, repairMetadata) : config.getInt("Repairables." + key + ".MinimumQuantity"));
if (minimumQuantity <= 0) {
reason.add("Minimum quantity of " + key + " must be greater than 0!");
}
if (noErrorsInRepairable(reason)) {
Repairable repairable = RepairableFactory.getRepairable(itemMaterial, repairMaterial, (byte) repairMetadata, minimumLevel, minimumQuantity, maximumDurability, repairItemType, repairMaterialType, xpMultiplier);
Repairable repairable = RepairableFactory.getRepairable(itemMaterial, repairMaterial, repairMetadata, minimumLevel, minimumQuantity, maximumDurability, repairItemType, repairMaterialType, xpMultiplier);
repairables.add(repairable);
}
}