SmeltingTracker.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.gmail.nossr50.util.skills;
  2. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  3. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  4. import com.gmail.nossr50.mcMMO;
  5. import com.gmail.nossr50.util.player.UserManager;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.OfflinePlayer;
  9. import org.bukkit.block.Furnace;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.inventory.FurnaceInventory;
  12. import org.bukkit.inventory.Inventory;
  13. import org.jetbrains.annotations.Nullable;
  14. import java.util.UUID;
  15. public class SmeltingTracker {
  16. // private final HashMap<Furnace, OfflinePlayer> furnaceOwners;
  17. private void changeFurnaceOwnership(Furnace furnace, Player player) {
  18. McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
  19. /*
  20. Debug output
  21. */
  22. printOwnershipGainDebug(furnace, mcMMOPlayer);
  23. printOwnershipLossDebug(furnace);
  24. setFurnaceOwner(furnace, player);
  25. }
  26. private void setFurnaceOwner(Furnace furnace, Player player) {
  27. mcMMO.getMetadataService().getBlockMetadataService().setFurnaceOwner(furnace, player.getUniqueId());
  28. }
  29. private void printOwnershipGainDebug(Furnace furnace, McMMOPlayer mcMMOPlayer) {
  30. if(mcMMOPlayer != null) {
  31. if(mcMMOPlayer.isDebugMode()) {
  32. mcMMOPlayer.getPlayer().sendMessage("Furnace ownership " +
  33. ChatColor.GREEN +"gained " + ChatColor.RESET +
  34. "at location: " + furnace.getLocation().toString());
  35. }
  36. }
  37. }
  38. private void printOwnershipLossDebug(Furnace furnace) {
  39. OfflinePlayer furnaceOwner = getFurnaceOwner(furnace);
  40. if(furnaceOwner != null && furnaceOwner.isOnline()) {
  41. McMMOPlayer furnaceOwnerProfile = UserManager.getPlayer(furnaceOwner.getPlayer());
  42. if(furnaceOwnerProfile != null) {
  43. if(furnaceOwnerProfile.isDebugMode()) {
  44. furnaceOwnerProfile.getPlayer().sendMessage("Furnace ownership " +
  45. ChatColor.RED + "lost " + ChatColor.RESET +
  46. "at location: " + furnace.getLocation().toString());
  47. }
  48. }
  49. }
  50. }
  51. public @Nullable OfflinePlayer getFurnaceOwner(Furnace furnace) {
  52. UUID uuid = mcMMO.getMetadataService().getBlockMetadataService().getFurnaceOwner(furnace);
  53. if(uuid != null) {
  54. return Bukkit.getOfflinePlayer(uuid);
  55. } else {
  56. return null;
  57. }
  58. }
  59. @Nullable
  60. public Furnace getFurnaceFromInventory(Inventory inventory) {
  61. if (!(inventory instanceof FurnaceInventory)) {
  62. return null;
  63. }
  64. return (Furnace) inventory.getHolder();
  65. }
  66. public boolean isFurnaceOwned(Furnace furnace) {
  67. return getFurnaceOwner(furnace) != null;
  68. }
  69. public void processFurnaceOwnership(Furnace furnace, Player player) {
  70. if(!mcMMO.p.getSkillTools().doesPlayerHaveSkillPermission(player, PrimarySkillType.SMELTING))
  71. return;
  72. //Don't swap ownership if its the same player
  73. if(getFurnaceOwner(furnace) != null) {
  74. if(getFurnaceOwner(furnace).getUniqueId().equals(player.getUniqueId()))
  75. return;
  76. }
  77. changeFurnaceOwnership(furnace, player);
  78. }
  79. }