SmeltingManager.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.gmail.nossr50.skills.smelting;
  2. import com.gmail.nossr50.datatypes.experience.XPGainReason;
  3. import com.gmail.nossr50.datatypes.experience.XPGainSource;
  4. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  5. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  6. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  7. import com.gmail.nossr50.mcMMO;
  8. import com.gmail.nossr50.skills.SkillManager;
  9. import com.gmail.nossr50.util.Permissions;
  10. import com.gmail.nossr50.util.skills.SkillActivationType;
  11. import org.bukkit.event.inventory.FurnaceBurnEvent;
  12. import org.bukkit.inventory.ItemStack;
  13. public class SmeltingManager extends SkillManager {
  14. public SmeltingManager(mcMMO pluginRef, McMMOPlayer mcMMOPlayer) {
  15. super(pluginRef, mcMMOPlayer, PrimarySkillType.SMELTING);
  16. }
  17. public boolean isSecondSmeltSuccessful() {
  18. return Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.SMELTING_SECOND_SMELT)
  19. && pluginRef.getRandomChanceTools().isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.SMELTING_SECOND_SMELT, getPlayer());
  20. }
  21. /**
  22. * Increases burn time for furnace fuel.
  23. *
  24. * @param burnTime The initial burn time from the {@link FurnaceBurnEvent}
  25. */
  26. public int fuelEfficiency(int burnTime) {
  27. return burnTime * getFuelEfficiencyMultiplier();
  28. }
  29. public int getFuelEfficiencyMultiplier() {
  30. switch (pluginRef.getRankTools().getRank(getPlayer(), SubSkillType.SMELTING_FUEL_EFFICIENCY)) {
  31. case 1:
  32. return 2;
  33. case 2:
  34. return 3;
  35. case 3:
  36. return 4;
  37. default:
  38. return 1;
  39. }
  40. }
  41. public ItemStack smeltProcessing(ItemStack smelting, ItemStack result) {
  42. applyXpGain(getResourceXp(smelting), XPGainReason.PVE, XPGainSource.PASSIVE);
  43. if (isSecondSmeltSuccessful()) {
  44. ItemStack newResult = result.clone();
  45. newResult.setAmount(result.getAmount() + 1);
  46. return newResult;
  47. }
  48. return result;
  49. }
  50. public int getResourceXp(ItemStack smelting) {
  51. return pluginRef.getDynamicSettingsManager().getExperienceManager().getFurnaceItemXP(smelting.getType());
  52. }
  53. public int vanillaXPBoost(int experience) {
  54. return experience * getVanillaXpMultiplier();
  55. }
  56. /**
  57. * Gets the vanilla XP multiplier
  58. *
  59. * @return the vanilla XP multiplier
  60. */
  61. public int getVanillaXpMultiplier() {
  62. return Math.max(1, pluginRef.getRankTools().getRank(getPlayer(), SubSkillType.SMELTING_UNDERSTANDING_THE_ART));
  63. }
  64. }