mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-10-19 10:33:38 +02:00
198 lines
6.2 KiB
Java
198 lines
6.2 KiB
Java
package com.gmail.nossr50.datatypes;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import com.gmail.nossr50.config.Config;
|
|
import com.gmail.nossr50.locale.LocaleLoader;
|
|
import com.gmail.nossr50.util.BlockChecks;
|
|
import com.gmail.nossr50.util.Permissions;
|
|
|
|
public enum AbilityType {
|
|
BERSERK(
|
|
Config.getInstance().getAbilityCooldownBerserk(),
|
|
"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(),
|
|
"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(),
|
|
"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(),
|
|
"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(),
|
|
"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(),
|
|
"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(),
|
|
"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(),
|
|
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() {
|
|
return LocaleLoader.getString(this.abilityOn);
|
|
}
|
|
|
|
public String getAbilityOff() {
|
|
return LocaleLoader.getString(this.abilityOff);
|
|
}
|
|
|
|
public String getAbilityPlayer(Player player) {
|
|
return LocaleLoader.getString(this.abilityPlayer, new Object[] {player.getName()});
|
|
}
|
|
|
|
public String getAbilityPlayerOff(Player player) {
|
|
return LocaleLoader.getString(this.abilityPlayerOff, new Object[] {player.getName()});
|
|
}
|
|
|
|
public String getAbilityRefresh() {
|
|
return LocaleLoader.getString(this.abilityRefresh);
|
|
}
|
|
|
|
/**
|
|
* 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();
|
|
|
|
switch (this) {
|
|
case BERSERK:
|
|
return permInstance.berserk(player);
|
|
|
|
case BLAST_MINING:
|
|
return permInstance.blastMining(player);
|
|
|
|
case GIGA_DRILL_BREAKER:
|
|
return permInstance.gigaDrillBreaker(player);
|
|
|
|
case GREEN_TERRA:
|
|
return permInstance.greenTerra(player);
|
|
|
|
case LEAF_BLOWER:
|
|
return permInstance.leafBlower(player);
|
|
|
|
case SERRATED_STRIKES:
|
|
return permInstance.serratedStrikes(player);
|
|
|
|
case SKULL_SPLIITER:
|
|
return permInstance.skullSplitter(player);
|
|
|
|
case SUPER_BREAKER:
|
|
return permInstance.superBreaker(player);
|
|
|
|
case TREE_FELLER:
|
|
return permInstance.treeFeller(player);
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if a block is affected by this ability.
|
|
*
|
|
* @param Block the block to check
|
|
* @return true if the block is affected by this ability, false otherwise
|
|
*/
|
|
public boolean blockCheck(Block block) {
|
|
switch (this) {
|
|
case BERSERK:
|
|
return (BlockChecks.canBeGigaDrillBroken(block) || block.getType() == Material.SNOW);
|
|
|
|
case GIGA_DRILL_BREAKER:
|
|
return BlockChecks.canBeGigaDrillBroken(block);
|
|
|
|
case GREEN_TERRA:
|
|
return BlockChecks.makeMossy(block);
|
|
|
|
case LEAF_BLOWER:
|
|
return block.getType() == Material.LEAVES;
|
|
|
|
case SUPER_BREAKER:
|
|
return BlockChecks.canBeSuperBroken(block);
|
|
|
|
case TREE_FELLER:
|
|
return block.getType() == Material.LOG;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|