mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-10-19 02:23:38 +02:00
701822c69f
renamed a few more. Changed Green Terra to handle blocks based on perms rather than the config file. For more details, read the diff.
165 lines
7.3 KiB
Java
165 lines
7.3 KiB
Java
package com.gmail.nossr50.skills.repair;
|
|
|
|
import org.bukkit.Material;
|
|
|
|
import com.gmail.nossr50.mcMMO;
|
|
import com.gmail.nossr50.locale.LocaleLoader;
|
|
import com.gmail.nossr50.skills.SkillCommand;
|
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
|
import com.gmail.nossr50.util.Permissions;
|
|
|
|
public class RepairCommand extends SkillCommand {
|
|
private int arcaneForgingRank;
|
|
private String repairMasteryBonus;
|
|
private String superRepairChance;
|
|
private String superRepairChanceLucky;
|
|
|
|
private boolean canSuperRepair;
|
|
private boolean canMasterRepair;
|
|
private boolean canArcaneForge;
|
|
private boolean canSalvage;
|
|
private boolean canRepairStone;
|
|
private boolean canRepairIron;
|
|
private boolean canRepairGold;
|
|
private boolean canRepairDiamond;
|
|
private boolean canRepairString;
|
|
private boolean canRepairLeather;
|
|
private boolean canRepairWood;
|
|
private boolean arcaneBypass;
|
|
|
|
private int diamondLevel;
|
|
private int goldLevel;
|
|
private int ironLevel;
|
|
private int stoneLevel;
|
|
|
|
public RepairCommand() {
|
|
super(SkillType.REPAIR);
|
|
}
|
|
|
|
@Override
|
|
protected void dataCalculations() {
|
|
// We're using pickaxes here, not the best but it works
|
|
Repairable diamondRepairable = mcMMO.repairManager.getRepairable(Material.DIAMOND_PICKAXE.getId());
|
|
Repairable goldRepairable = mcMMO.repairManager.getRepairable(Material.GOLD_PICKAXE.getId());
|
|
Repairable ironRepairable = mcMMO.repairManager.getRepairable(Material.IRON_PICKAXE.getId());
|
|
Repairable stoneRepairable = mcMMO.repairManager.getRepairable(Material.STONE_PICKAXE.getId());
|
|
|
|
//TODO: This isn't really accurate - if they don't have pickaxes loaded it doesn't always mean the repair level is 0
|
|
diamondLevel = (diamondRepairable == null) ? 0 : diamondRepairable.getMinimumLevel();
|
|
goldLevel = (goldRepairable == null) ? 0 : goldRepairable.getMinimumLevel();
|
|
ironLevel = (ironRepairable == null) ? 0 : ironRepairable.getMinimumLevel();
|
|
stoneLevel = (stoneRepairable == null) ? 0 : stoneRepairable.getMinimumLevel();
|
|
|
|
//REPAIR MASTERY
|
|
if (skillValue >= Repair.REPAIR_MASTERY_MAX_BONUS_LEVEL) {
|
|
repairMasteryBonus = percent.format(Repair.REPAIR_MASTERY_CHANCE_MAX / 100D);
|
|
}
|
|
else {
|
|
repairMasteryBonus = percent.format((( Repair.REPAIR_MASTERY_CHANCE_MAX / Repair.REPAIR_MASTERY_MAX_BONUS_LEVEL) * skillValue) / 100D);
|
|
}
|
|
|
|
//SUPER REPAIR
|
|
String[] superRepairStrings = calculateAbilityDisplayValues(Repair.SUPER_REPAIR_MAX_BONUS_LEVEL, Repair.SUPER_REPAIR_CHANCE_MAX);
|
|
superRepairChance = superRepairStrings[0];
|
|
superRepairChanceLucky = superRepairStrings[1];
|
|
|
|
//ARCANE FORGING
|
|
arcaneForgingRank = Repair.getArcaneForgingRank(profile);
|
|
}
|
|
|
|
@Override
|
|
protected void permissionsCheck() {
|
|
canSuperRepair = Permissions.superRepair(player);
|
|
canMasterRepair = Permissions.repairMastery(player);
|
|
canArcaneForge = Permissions.arcaneForging(player);
|
|
canSalvage = Permissions.salvage(player);
|
|
canRepairDiamond = Permissions.repairDiamond(player);
|
|
canRepairGold = Permissions.repairGold(player);
|
|
canRepairIron = Permissions.repairIron(player);
|
|
canRepairStone = Permissions.repairStone(player);
|
|
canRepairString = Permissions.repairString(player);
|
|
canRepairLeather = Permissions.repairLeather(player);
|
|
canRepairWood = Permissions.repairWood(player);
|
|
arcaneBypass = Permissions.arcaneBypass(player);
|
|
}
|
|
|
|
@Override
|
|
protected boolean effectsHeaderPermissions() {
|
|
return canArcaneForge || canSalvage || canRepairDiamond || canRepairGold || canRepairIron || canMasterRepair || canRepairStone || canSuperRepair || canRepairString || canRepairWood || canRepairLeather;
|
|
}
|
|
|
|
@Override
|
|
protected void effectsDisplay() {
|
|
luckyEffectsDisplay();
|
|
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.0"), LocaleLoader.getString("Repair.Effect.1")));
|
|
|
|
if (canMasterRepair) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.2"), LocaleLoader.getString("Repair.Effect.3")));
|
|
}
|
|
|
|
if (canSuperRepair) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.4"), LocaleLoader.getString("Repair.Effect.5")));
|
|
}
|
|
|
|
/* Repair Level Requirements */
|
|
|
|
if (canRepairStone && stoneLevel > 0) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.14", stoneLevel), LocaleLoader.getString("Repair.Effect.15")));
|
|
}
|
|
|
|
if (canRepairIron && ironLevel > 0) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.12", ironLevel), LocaleLoader.getString("Repair.Effect.13")));
|
|
}
|
|
|
|
if (canRepairGold && goldLevel > 0) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.10", goldLevel), LocaleLoader.getString("Repair.Effect.11")));
|
|
}
|
|
|
|
if (canRepairDiamond && diamondLevel > 0) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.6", diamondLevel), LocaleLoader.getString("Repair.Effect.7")));
|
|
}
|
|
|
|
if (canSalvage && Salvage.salvageUnlockLevel > 0) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.16", Salvage.salvageUnlockLevel), LocaleLoader.getString("Repair.Effect.17")));
|
|
}
|
|
|
|
if (canArcaneForge) {
|
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Repair.Effect.8"), LocaleLoader.getString("Repair.Effect.9")));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected boolean statsHeaderPermissions() {
|
|
return canArcaneForge || canMasterRepair || canSuperRepair;
|
|
}
|
|
|
|
@Override
|
|
protected void statsDisplay() {
|
|
if (canMasterRepair) {
|
|
player.sendMessage(LocaleLoader.getString("Repair.Skills.Mastery", repairMasteryBonus));
|
|
}
|
|
|
|
if (canSuperRepair) {
|
|
if (isLucky) {
|
|
player.sendMessage(LocaleLoader.getString("Repair.Skills.Super.Chance", superRepairChance) + LocaleLoader.getString("Perks.lucky.bonus", superRepairChanceLucky));
|
|
}
|
|
else {
|
|
player.sendMessage(LocaleLoader.getString("Repair.Skills.Super.Chance", superRepairChance));
|
|
}
|
|
}
|
|
|
|
if (canArcaneForge) {
|
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Rank", arcaneForgingRank));
|
|
|
|
if (Repair.arcaneForgingEnchantLoss) {
|
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Success", (arcaneBypass ? 100 : Repair.getEnchantChance(arcaneForgingRank))));
|
|
}
|
|
|
|
if (Repair.arcaneForgingDowngrades) {
|
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Downgrade", (arcaneBypass ? 0 : Repair.getDowngradeChance(arcaneForgingRank))));
|
|
}
|
|
}
|
|
}
|
|
}
|