More work on Xbows/Tridents

This commit is contained in:
nossr50
2023-04-11 03:16:24 -07:00
parent 0db1d846bc
commit 534b22233d
10 changed files with 210 additions and 80 deletions

View File

@ -34,6 +34,7 @@ public class CrossbowsCommand extends SkillCommand {
List<String> messages = new ArrayList<>();
if (canSSG) {
messages.add("Super Shotgun");
//TODO: Implement SSG
}

View File

@ -0,0 +1,53 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.skills.RankUtils;
import com.gmail.nossr50.util.text.TextComponentFactory;
import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class TridentsCommand extends SkillCommand {
private boolean canTridentsSuper;
public TridentsCommand() {
super(PrimarySkillType.TRIDENTS);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// TODO: Implement data calculations
}
@Override
protected void permissionsCheck(Player player) {
canTridentsSuper = RankUtils.hasUnlockedSubskill(player, SubSkillType.TRIDENTS_TRIDENTS_SUPER_ABILITY)
&& Permissions.superShotgun(player);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
if (canTridentsSuper) {
messages.add("Tridents Super Ability");
//TODO: Implement SSG
}
return messages;
}
@Override
protected List<Component> getTextComponents(Player player) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.TRIDENTS);
return textComponents;
}
}

View File

@ -1255,7 +1255,7 @@ public final class FlatFileDatabaseManager implements DatabaseManager {
// Acrobatics - Unused
tryLoadSkillCooldownFromRawData(skillsDATS, character, SuperAbilityType.BLAST_MINING, COOLDOWN_BLAST_MINING, username);
tryLoadSkillCooldownFromRawData(skillsDATS, character, SuperAbilityType.SUPER_SHOTGUN, COOLDOWN_SUPER_SHOTGUN, username);
tryLoadSkillCooldownFromRawData(skillsDATS, character, SuperAbilityType.TRIDENT_ABILITY, COOLDOWN_TRIDENTS, username);
tryLoadSkillCooldownFromRawData(skillsDATS, character, SuperAbilityType.TRIDENTS_SUPER_ABILITY, COOLDOWN_TRIDENTS, username);
UUID uuid;
try {

View File

@ -96,6 +96,9 @@ public enum SubSkillType {
TAMING_SHOCK_PROOF(1),
TAMING_THICK_FUR(1),
/* Tridents */
TRIDENTS_TRIDENTS_SUPER_ABILITY(1),
/* Unarmed */
UNARMED_ARROW_DEFLECT(1),
UNARMED_BERSERK(1),

View File

@ -72,7 +72,7 @@ public enum SuperAbilityType {
"Crossbows.Skills.SSG.Refresh",
null,
"Crossbows.SubSkill.SuperShotgun.Name"),
TRIDENT_ABILITY(
TRIDENTS_SUPER_ABILITY(
"Tridents.Skills.TA.On",
"Tridents.Skills.TA.Off",
"Tridents.Skills.TA.Other.On",
@ -188,34 +188,20 @@ public enum SuperAbilityType {
* @return true if the player has permissions, false otherwise
*/
public boolean getPermissions(Player player) {
switch (this) {
case BERSERK:
return Permissions.berserk(player);
case BLAST_MINING:
return Permissions.remoteDetonation(player);
case GIGA_DRILL_BREAKER:
return Permissions.gigaDrillBreaker(player);
case GREEN_TERRA:
return Permissions.greenTerra(player);
case SERRATED_STRIKES:
return Permissions.serratedStrikes(player);
case SKULL_SPLITTER:
return Permissions.skullSplitter(player);
case SUPER_BREAKER:
return Permissions.superBreaker(player);
case TREE_FELLER:
return Permissions.treeFeller(player);
default:
return false;
}
return switch (this) {
case BERSERK -> Permissions.berserk(player);
case BLAST_MINING -> Permissions.remoteDetonation(player);
case GIGA_DRILL_BREAKER -> Permissions.gigaDrillBreaker(player);
case GREEN_TERRA -> Permissions.greenTerra(player);
case SERRATED_STRIKES -> Permissions.serratedStrikes(player);
case SKULL_SPLITTER -> Permissions.skullSplitter(player);
case SUPER_BREAKER -> Permissions.superBreaker(player);
case SUPER_SHOTGUN -> Permissions.superShotgun(player);
case TREE_FELLER -> Permissions.treeFeller(player);
case TRIDENTS_SUPER_ABILITY -> Permissions.tridentsSuper(player);
default ->
throw new RuntimeException("Unhandled SuperAbilityType in getPermissions(), devs need to add definition for " + this + "!");
};
}
/**

View File

@ -227,6 +227,7 @@ public final class Permissions {
public static boolean treeFeller(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.woodcutting.treefeller"); }
/* CROSSBOWS */
public static boolean superShotgun(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.crossbows.supershotgun"); }
public static boolean tridentsSuper(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.tridents.superability"); }
/*
* PARTY

View File

@ -180,7 +180,7 @@ public class SkillTools {
case SERRATED_STRIKES -> PrimarySkillType.SWORDS;
case GIGA_DRILL_BREAKER -> PrimarySkillType.EXCAVATION;
case SUPER_SHOTGUN -> PrimarySkillType.CROSSBOWS;
case TRIDENT_ABILITY -> PrimarySkillType.TRIDENTS;
case TRIDENTS_SUPER_ABILITY -> PrimarySkillType.TRIDENTS;
default ->
throw new InvalidSkillException("No parent defined for super ability! " + superAbilityType.toString());
};