Reconnect active command output to player after restart, logoff/logon
This commit is contained in:
parent
61becfcdee
commit
31c277d993
2 changed files with 23 additions and 2 deletions
|
|
@ -328,6 +328,9 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
||||||
}
|
}
|
||||||
ids.addFirst(pid); /* Put us first on list */
|
ids.addFirst(pid); /* Put us first on list */
|
||||||
}
|
}
|
||||||
|
/* And re-attach to active jobs */
|
||||||
|
if(mapManager != null)
|
||||||
|
mapManager.connectTasksToPlayer(p);
|
||||||
}
|
}
|
||||||
public void onPlayerQuit(PlayerQuitEvent evt) {
|
public void onPlayerQuit(PlayerQuitEvent evt) {
|
||||||
playerList.updateOnlinePlayers(evt.getPlayer());
|
playerList.updateOnlinePlayers(evt.getPlayer());
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.dynmap.DynmapPlugin.CompassMode;
|
import org.dynmap.DynmapPlugin.CompassMode;
|
||||||
import org.dynmap.DynmapWorld.AutoGenerateOption;
|
import org.dynmap.DynmapWorld.AutoGenerateOption;
|
||||||
import org.dynmap.debug.Debug;
|
import org.dynmap.debug.Debug;
|
||||||
|
|
@ -193,6 +194,7 @@ public class MapManager {
|
||||||
MapTile tile0 = null;
|
MapTile tile0 = null;
|
||||||
int rendercnt = 0;
|
int rendercnt = 0;
|
||||||
CommandSender sender;
|
CommandSender sender;
|
||||||
|
String player;
|
||||||
long timeaccum;
|
long timeaccum;
|
||||||
HashSet<MapType> renderedmaps = new HashSet<MapType>();
|
HashSet<MapType> renderedmaps = new HashSet<MapType>();
|
||||||
String activemaps;
|
String activemaps;
|
||||||
|
|
@ -225,6 +227,10 @@ public class MapManager {
|
||||||
rendered = new TileFlags();
|
rendered = new TileFlags();
|
||||||
renderQueue = new LinkedList<MapTile>();
|
renderQueue = new LinkedList<MapTile>();
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
|
if(sender instanceof Player)
|
||||||
|
this.player = ((Player)sender).getName();
|
||||||
|
else
|
||||||
|
this.player = "";
|
||||||
if(radius < 0) {
|
if(radius < 0) {
|
||||||
cxmin = czmin = Integer.MIN_VALUE;
|
cxmin = czmin = Integer.MIN_VALUE;
|
||||||
cxmax = czmax = Integer.MAX_VALUE;
|
cxmax = czmax = Integer.MAX_VALUE;
|
||||||
|
|
@ -301,8 +307,12 @@ public class MapManager {
|
||||||
czmax = n.getInteger("czmax", 0);
|
czmax = n.getInteger("czmax", 0);
|
||||||
rendertype = n.getString("rendertype", "");
|
rendertype = n.getString("rendertype", "");
|
||||||
mapname = n.getString("mapname", null);
|
mapname = n.getString("mapname", null);
|
||||||
|
player = n.getString("player", "");
|
||||||
updaterender = rendertype.equals(RENDERTYPE_UPDATERENDER);
|
updaterender = rendertype.equals(RENDERTYPE_UPDATERENDER);
|
||||||
sender = null;
|
sender = null;
|
||||||
|
if(player.length() > 0) {
|
||||||
|
sender = plug_in.getServer().getPlayerExact(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String,Object> saveState() {
|
public HashMap<String,Object> saveState() {
|
||||||
|
|
@ -339,7 +349,7 @@ public class MapManager {
|
||||||
v.put("rendertype", rendertype);
|
v.put("rendertype", rendertype);
|
||||||
if(mapname != null)
|
if(mapname != null)
|
||||||
v.put("mapname", mapname);
|
v.put("mapname", mapname);
|
||||||
|
v.put("player", player);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1378,5 +1388,13 @@ public class MapManager {
|
||||||
public void incExtraTickList() {
|
public void incExtraTickList() {
|
||||||
ticklistcalls.incrementAndGet();
|
ticklistcalls.incrementAndGet();
|
||||||
}
|
}
|
||||||
|
/* Connect any jobs tied to this player back to the player (resumes output to player) */
|
||||||
|
void connectTasksToPlayer(Player p) {
|
||||||
|
String pn = p.getName();
|
||||||
|
for(FullWorldRenderState job : active_renders.values()) {
|
||||||
|
if(pn.equals(job.player)) {
|
||||||
|
job.sender = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue