mcMMO/src/main/java/com/gmail/nossr50/datatypes/AbilityType.java

198 lines
6.2 KiB
Java
Raw Normal View History

2012-04-24 15:21:21 +02:00
package com.gmail.nossr50.datatypes;
import org.bukkit.Material;
import org.bukkit.block.Block;
2012-04-24 15:21:21 +02:00
import org.bukkit.entity.Player;
2012-04-26 16:27:57 +02:00
import com.gmail.nossr50.config.Config;
2012-04-27 11:47:11 +02:00
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.BlockChecks;
2012-04-27 11:47:11 +02:00
import com.gmail.nossr50.util.Permissions;
2012-04-24 15:21:21 +02:00
public enum AbilityType {
BERSERK(
Config.getInstance().getAbilityCooldownBerserk(),
2012-04-24 15:21:21 +02:00
"Unarmed.Skills.Berserk.On",
"Unarmed.Skills.Berserk.Off",
"Unarmed.Skills.Berserk.Other.On",
"Unarmed.Skills.Berserk.Refresh",
"Unarmed.Skills.Berserk.Other.Off"),
SUPER_BREAKER(
Config.getInstance().getAbilityCooldownSuperBreaker(),
2012-04-24 15:21:21 +02:00
"Mining.Skills.SuperBreaker.On",
"Mining.Skills.SuperBreaker.Off",
"Mining.Skills.SuperBreaker.Other.On",
"Mining.Skills.SuperBreaker.Refresh",
"Mining.Skills.SuperBreaker.Other.Off"),
GIGA_DRILL_BREAKER(
Config.getInstance().getAbilityCooldownGigaDrillBreaker(),
2012-04-24 15:21:21 +02:00
"Excavation.Skills.GigaDrillBreaker.On",
"Excavation.Skills.GigaDrillBreaker.Off",
"Excavation.Skills.GigaDrillBreaker.Other.On",
"Excavation.Skills.GigaDrillBreaker.Refresh",
"Excavation.Skills.GigaDrillBreaker.Other.Off"),
GREEN_TERRA(
Config.getInstance().getAbilityCooldownGreenTerra(),
2012-04-24 15:21:21 +02:00
"Herbalism.Skills.GTe.On",
"Herbalism.Skills.GTe.Off",
"Herbalism.Skills.GTe.Other.On",
"Herbalism.Skills.GTe.Refresh",
"Herbalism.Skills.GTe.Other.Off"),
SKULL_SPLIITER(
Config.getInstance().getAbilityCooldownSkullSplitter(),
2012-04-24 15:21:21 +02:00
"Axes.Skills.SS.On",
"Axes.Skills.SS.Off",
"Axes.Skills.SS.Other.On",
"Axes.Skills.SS.Refresh",
"Axes.Skills.SS.Other.Off"),
TREE_FELLER(
Config.getInstance().getAbilityCooldownTreeFeller(),
2012-04-24 15:21:21 +02:00
"Woodcutting.Skills.TreeFeller.On",
"Woodcutting.Skills.TreeFeller.Off",
"Woodcutting.Skills.TreeFeller.Other.On",
"Woodcutting.Skills.TreeFeller.Refresh",
"Woodcutting.Skills.TreeFeller.Other.Off"),
SERRATED_STRIKES(
Config.getInstance().getAbilityCooldownSerratedStrikes(),
2012-04-24 15:21:21 +02:00
"Swords.Skills.SS.On",
"Swords.Skills.SS.Off",
"Swords.Skills.SS.Other.On",
"Swords.Skills.SS.Refresh",
"Swords.Skills.SS.Other.Off"),
BLAST_MINING(
Config.getInstance().getAbilityCooldownBlastMining(),
2012-04-24 15:21:21 +02:00
null,
null,
"Mining.Blast.Other.On",
"Mining.Blast.Refresh",
null),
LEAF_BLOWER(
0,
null,
null,
null,
null,
null);
private int cooldown;
private String abilityOn;
private String abilityOff;
private String abilityPlayer;
private String abilityRefresh;
private String abilityPlayerOff;
private AbilityType(int cooldown, String abilityOn, String abilityOff, String abilityPlayer, String abilityRefresh, String abilityPlayerOff) {
this.cooldown = cooldown;
this.abilityOn = abilityOn;
this.abilityOff = abilityOff;
this.abilityPlayer = abilityPlayer;
this.abilityRefresh = abilityRefresh;
this.abilityPlayerOff = abilityPlayerOff;
}
public int getCooldown() {
return this.cooldown;
}
public String getAbilityOn() {
2012-04-27 11:47:11 +02:00
return LocaleLoader.getString(this.abilityOn);
2012-04-24 15:21:21 +02:00
}
public String getAbilityOff() {
2012-04-27 11:47:11 +02:00
return LocaleLoader.getString(this.abilityOff);
2012-04-24 15:21:21 +02:00
}
public String getAbilityPlayer(Player player) {
2012-04-27 11:47:11 +02:00
return LocaleLoader.getString(this.abilityPlayer, new Object[] {player.getName()});
2012-04-24 15:21:21 +02:00
}
public String getAbilityPlayerOff(Player player) {
2012-04-27 11:47:11 +02:00
return LocaleLoader.getString(this.abilityPlayerOff, new Object[] {player.getName()});
2012-04-24 15:21:21 +02:00
}
public String getAbilityRefresh() {
2012-04-27 11:47:11 +02:00
return LocaleLoader.getString(this.abilityRefresh);
2012-04-24 15:21:21 +02:00
}
/**
* Get the permissions for this ability.
*
* @param player Player to check permissions for
* @return true if the player has permissions, false otherwise
*/
public boolean getPermissions(Player player) {
Permissions permInstance = Permissions.getInstance();
2012-04-24 15:21:21 +02:00
switch (this) {
case BERSERK:
return permInstance.berserk(player);
2012-04-24 15:21:21 +02:00
case BLAST_MINING:
return permInstance.blastMining(player);
2012-04-24 15:21:21 +02:00
case GIGA_DRILL_BREAKER:
return permInstance.gigaDrillBreaker(player);
2012-04-24 15:21:21 +02:00
case GREEN_TERRA:
return permInstance.greenTerra(player);
2012-04-24 15:21:21 +02:00
case LEAF_BLOWER:
return permInstance.leafBlower(player);
2012-04-24 15:21:21 +02:00
case SERRATED_STRIKES:
return permInstance.serratedStrikes(player);
2012-04-24 15:21:21 +02:00
case SKULL_SPLIITER:
return permInstance.skullSplitter(player);
2012-04-24 15:21:21 +02:00
case SUPER_BREAKER:
return permInstance.superBreaker(player);
2012-04-24 15:21:21 +02:00
case TREE_FELLER:
return permInstance.treeFeller(player);
2012-04-24 15:21:21 +02:00
default:
return false;
}
}
/**
* Check if a block is affected by this ability.
*
* @param Block the block to check
2012-04-24 15:21:21 +02:00
* @return true if the block is affected by this ability, false otherwise
*/
public boolean blockCheck(Block block) {
2012-04-24 15:21:21 +02:00
switch (this) {
case BERSERK:
return (BlockChecks.canBeGigaDrillBroken(block) || block.getType() == Material.SNOW);
2012-04-24 15:21:21 +02:00
case GIGA_DRILL_BREAKER:
return BlockChecks.canBeGigaDrillBroken(block);
2012-04-24 15:21:21 +02:00
case GREEN_TERRA:
return BlockChecks.makeMossy(block);
2012-04-24 15:21:21 +02:00
case LEAF_BLOWER:
return block.getType() == Material.LEAVES;
2012-04-24 15:21:21 +02:00
case SUPER_BREAKER:
return BlockChecks.canBeSuperBroken(block);
2012-04-24 15:21:21 +02:00
case TREE_FELLER:
return block.getType() == Material.LOG;
2012-04-24 15:21:21 +02:00
default:
return false;
}
}
}