Browse Source

Merge branch 'master' of github.com:mcMMO-Dev/mcMMO into tridentsxbows

nossr50 5 years ago
parent
commit
515d58f04f

+ 2 - 0
Changelog.txt

@@ -48,6 +48,8 @@ Version 2.2.000
 
 
     Notes:
     Notes:
     These are the first new skills that I've written for mcMMO in about 9 years, I'll be listening closely to feedback and tweaking them often.
     These are the first new skills that I've written for mcMMO in about 9 years, I'll be listening closely to feedback and tweaking them often.
+Version 2.1.136
+    Furnace ownership was made more reliable
 
 
 Version 2.1.135
 Version 2.1.135
     Furnaces no longer simulate block break checks when assigning ownership as it caused some unwanted plugin conflicts
     Furnaces no longer simulate block break checks when assigning ownership as it caused some unwanted plugin conflicts

+ 2 - 1
src/main/java/com/gmail/nossr50/runnables/skills/FurnaceCleanupTask.java

@@ -14,7 +14,8 @@ public class FurnaceCleanupTask extends BukkitRunnable {
 
 
     @Override
     @Override
     public void run() {
     public void run() {
-        if(furnace != null && furnace.getInventory().getResult() == null) {
+        if(furnace != null
+                && furnace.getInventory().getSmelting() == null) {
             //Furnace is empty so stop tracking it
             //Furnace is empty so stop tracking it
             mcMMO.getSmeltingTracker().untrackFurnace(furnace);
             mcMMO.getSmeltingTracker().untrackFurnace(furnace);
         }
         }

+ 2 - 2
src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java

@@ -432,8 +432,8 @@ public final class CommandRegistrationManager {
     private static void registerXPBarCommand() {
     private static void registerXPBarCommand() {
         PluginCommand command = mcMMO.p.getCommand("mmoxpbar"); //TODO: Localize
         PluginCommand command = mcMMO.p.getCommand("mmoxpbar"); //TODO: Localize
         command.setDescription(LocaleLoader.getString("Commands.Description.mmoxpbar"));
         command.setDescription(LocaleLoader.getString("Commands.Description.mmoxpbar"));
-        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mmoxpbar", "<reset>"));
-        command.setUsage(command.getUsage() +"\n" + LocaleLoader.getString("Commands.Usage.2", "mmoxpbar", "<skillname>", "<show | hide>"));
+        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mmoxpbar", "<reset | disable>"));
+        command.setUsage(command.getUsage() +"\n" + LocaleLoader.getString("Commands.Usage.2", "mmoxpbar", "<show | hide | disable>", "<skillname>"));
         command.setExecutor(new XPBarCommand());
         command.setExecutor(new XPBarCommand());
     }
     }
 
 

+ 44 - 5
src/main/java/com/gmail/nossr50/util/skills/SmeltingTracker.java

@@ -1,11 +1,14 @@
 package com.gmail.nossr50.util.skills;
 package com.gmail.nossr50.util.skills;
 
 
+import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.smelting.Smelting;
 import com.gmail.nossr50.skills.smelting.Smelting;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Permissions;
+import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.Bukkit;
 import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.block.Furnace;
 import org.bukkit.block.Furnace;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
@@ -17,16 +20,55 @@ import java.util.HashMap;
 
 
 public class SmeltingTracker {
 public class SmeltingTracker {
 
 
-    private HashMap<Furnace, OfflinePlayer> furnaceOwners;
+    private final HashMap<Furnace, OfflinePlayer> furnaceOwners;
 
 
     public SmeltingTracker() {
     public SmeltingTracker() {
         furnaceOwners = new HashMap<>();
         furnaceOwners = new HashMap<>();
     }
     }
 
 
     private void changeFurnaceOwnership(Furnace furnace, Player player) {
     private void changeFurnaceOwnership(Furnace furnace, Player player) {
+
+        McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
+
+        /*
+            Debug output
+         */
+        printOwnershipGainDebug(furnace, mcMMOPlayer);
+
+        printOwnershipLossDebug(furnace);
+
         furnaceOwners.put(furnace, player);
         furnaceOwners.put(furnace, player);
     }
     }
 
 
+    private void printOwnershipGainDebug(Furnace furnace, McMMOPlayer mcMMOPlayer) {
+        if(mcMMOPlayer != null) {
+            if(mcMMOPlayer.isDebugMode()) {
+                mcMMOPlayer.getPlayer().sendMessage("Furnace ownership " +
+                        ChatColor.GREEN +"gained " + ChatColor.RESET +
+                        "at location: " + furnace.getLocation().toString());
+            }
+
+        }
+    }
+
+    private void printOwnershipLossDebug(Furnace furnace) {
+        if(furnaceOwners.get(furnace) != null) {
+            OfflinePlayer furnaceOwner = furnaceOwners.get(furnace);
+
+            if(furnaceOwner.isOnline()) {
+                McMMOPlayer furnaceOwnerProfile = UserManager.getPlayer(furnaceOwner.getPlayer());
+
+                if(furnaceOwnerProfile != null) {
+                    if(furnaceOwnerProfile.isDebugMode()) {
+                        furnaceOwnerProfile.getPlayer().sendMessage("Furnace ownership " +
+                                ChatColor.RED + "lost " + ChatColor.RESET +
+                                "at location: " + furnace.getLocation().toString());
+                    }
+                }
+            }
+        }
+    }
+
     @Nullable
     @Nullable
     public Furnace getFurnaceFromInventory(Inventory inventory) {
     public Furnace getFurnaceFromInventory(Inventory inventory) {
         if (!(inventory instanceof FurnaceInventory)) {
         if (!(inventory instanceof FurnaceInventory)) {
@@ -45,10 +87,6 @@ public class SmeltingTracker {
         return furnaceOwners.get(furnace) != null;
         return furnaceOwners.get(furnace) != null;
     }
     }
 
 
-    public void removeFurnaceOwner(Furnace furnace) {
-        furnaceOwners.remove(furnace);
-    }
-
     public void processFurnaceOwnership(Furnace furnace, Player player) {
     public void processFurnaceOwnership(Furnace furnace, Player player) {
         if(!Permissions.skillEnabled(player, PrimarySkillType.SMELTING))
         if(!Permissions.skillEnabled(player, PrimarySkillType.SMELTING))
             return;
             return;
@@ -57,6 +95,7 @@ public class SmeltingTracker {
     }
     }
 
 
     public void untrackFurnace(Furnace furnace) {
     public void untrackFurnace(Furnace furnace) {
+        printOwnershipLossDebug(furnace);
         furnaceOwners.remove(furnace);
         furnaceOwners.remove(furnace);
     }
     }
 }
 }