SmeltingCommand.java 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  3. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  4. import com.gmail.nossr50.locale.LocaleLoader;
  5. import com.gmail.nossr50.skills.smelting.Smelting;
  6. import com.gmail.nossr50.util.Permissions;
  7. import com.gmail.nossr50.util.TextComponentFactory;
  8. import com.gmail.nossr50.util.player.UserManager;
  9. import com.gmail.nossr50.util.skills.RankUtils;
  10. import net.md_5.bungee.api.chat.TextComponent;
  11. import org.bukkit.entity.Player;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. public class SmeltingCommand extends SkillCommand {
  15. private String burnTimeModifier;
  16. private String secondSmeltChance;
  17. private String secondSmeltChanceLucky;
  18. private String fluxMiningChance;
  19. private String fluxMiningChanceLucky;
  20. private boolean canFuelEfficiency;
  21. private boolean canSecondSmelt;
  22. private boolean canFluxMine;
  23. private boolean canVanillaXPBoost;
  24. public SmeltingCommand() {
  25. super(PrimarySkillType.SMELTING);
  26. }
  27. @Override
  28. protected void dataCalculations(Player player, float skillValue, boolean isLucky) {
  29. // FUEL EFFICIENCY
  30. if (canFuelEfficiency) {
  31. burnTimeModifier = decimal.format(1 + ((skillValue / Smelting.burnModifierMaxLevel) * Smelting.burnTimeMultiplier));
  32. }
  33. // SECOND SMELT
  34. if (canSecondSmelt) {
  35. String[] secondSmeltStrings = calculateAbilityDisplayValues(skillValue, SubSkillType.SMELTING_SECOND_SMELT, isLucky);
  36. secondSmeltChance = secondSmeltStrings[0];
  37. secondSmeltChanceLucky = secondSmeltStrings[1];
  38. }
  39. // FLUX MINING
  40. if (canFluxMine) {
  41. String[] fluxMiningStrings = calculateAbilityDisplayValues(Smelting.fluxMiningChance, isLucky);
  42. fluxMiningChance = fluxMiningStrings[0];
  43. fluxMiningChanceLucky = fluxMiningStrings[1];
  44. }
  45. }
  46. @Override
  47. protected void permissionsCheck(Player player) {
  48. canFuelEfficiency = canUseSubskill(player, SubSkillType.SMELTING_FUEL_EFFICIENCY);
  49. canSecondSmelt = canUseSubskill(player, SubSkillType.SMELTING_SECOND_SMELT);
  50. canFluxMine = canUseSubskill(player, SubSkillType.SMELTING_FLUX_MINING);
  51. canVanillaXPBoost = Permissions.vanillaXpBoost(player, skill) && RankUtils.hasUnlockedSubskill(player, SubSkillType.SMELTING_UNDERSTANDING_THE_ART);
  52. }
  53. @Override
  54. protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
  55. List<String> messages = new ArrayList<String>();
  56. if (canFuelEfficiency) {
  57. messages.add(LocaleLoader.getString("Smelting.Ability.FuelEfficiency", burnTimeModifier));
  58. }
  59. if (canSecondSmelt) {
  60. messages.add(LocaleLoader.getString("Smelting.Ability.SecondSmelt", secondSmeltChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", secondSmeltChanceLucky) : ""));
  61. }
  62. if (canVanillaXPBoost) {
  63. messages.add(LocaleLoader.getString("Smelting.Ability.VanillaXPBoost", UserManager.getPlayer(player).getSmeltingManager().getVanillaXpMultiplier()));
  64. }
  65. if (canFluxMine) {
  66. messages.add(LocaleLoader.getString("Smelting.Ability.FluxMining", fluxMiningChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", fluxMiningChanceLucky) : ""));
  67. }
  68. return messages;
  69. }
  70. @Override
  71. protected List<TextComponent> getTextComponents(Player player) {
  72. List<TextComponent> textComponents = new ArrayList<>();
  73. TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.SMELTING);
  74. return textComponents;
  75. }
  76. }