Compare commits

...

4 Commits

Author SHA1 Message Date
FrozenCow 6419469be3 Added ability to hide players (/map hide, /map hide playername(s) and /map show). 2011-01-20 22:56:39 +01:00
FrozenCow 68412ae27d Changed '/map_render' to '/map render'. 2011-01-20 20:50:18 +01:00
FrozenCow bcb25468db Added aspx for proxying on IIS. 2011-01-20 20:48:00 +01:00
FrozenCow 78b243371d Fixed red and yellow colors for flowers. 2011-01-19 19:29:37 +01:00
8 changed files with 142 additions and 17 deletions
@@ -6,18 +6,36 @@ import org.bukkit.event.player.PlayerListener;
public class DynmapPlayerListener extends PlayerListener {
private MapManager mgr;
private PlayerList playerList;
public DynmapPlayerListener(MapManager mgr) {
public DynmapPlayerListener(MapManager mgr, PlayerList playerList) {
this.mgr = mgr;
this.playerList = playerList;
}
@Override
public void onPlayerCommand(PlayerChatEvent event) {
String[] split = event.getMessage().split(" ");
Player player = event.getPlayer();
if (split[0].equalsIgnoreCase("/map_render")) {
mgr.touch(player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ());
event.setCancelled(true);
if (split[0].equalsIgnoreCase("/map")) {
if (split.length > 1) {
if (split[1].equals("render")) {
Player player = event.getPlayer();
mgr.touch(player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ());
event.setCancelled(true);
} else if (split[1].equals("hide")) {
if (split.length == 2) {
playerList.hide(event.getPlayer().getName());
} else for (int i=2;i<split.length;i++)
playerList.hide(split[i]);
event.setCancelled(true);
} else if (split[1].equals("show")) {
if (split.length == 2) {
playerList.show(event.getPlayer().getName());
} else for (int i=2;i<split.length;i++)
playerList.show(split[i]);
event.setCancelled(true);
}
}
}
}
}
+10 -6
View File
@@ -17,8 +17,9 @@ public class DynmapPlugin extends JavaPlugin {
protected static final Logger log = Logger.getLogger("Minecraft");
private WebServer server = null;
private WebServer webserver = null;
private MapManager mgr = null;
private PlayerList playerList;
private BukkitPlayerDebugger debugger = new BukkitPlayerDebugger(this);
@@ -38,11 +39,14 @@ public class DynmapPlugin extends JavaPlugin {
configuration.load();
debugger.enable();
playerList = new PlayerList(getServer());
playerList.load();
mgr = new MapManager(getWorld(), debugger, configuration);
mgr.startManager();
try {
server = new WebServer(mgr, getServer(), debugger, configuration);
webserver = new WebServer(mgr, getServer(), playerList, debugger, configuration);
} catch(IOException e) {
log.info("position failed to start WebServer (IOException)");
}
@@ -53,9 +57,9 @@ public class DynmapPlugin extends JavaPlugin {
public void onDisable() {
mgr.stopManager();
if(server != null) {
server.shutdown();
server = null;
if(webserver != null) {
webserver.shutdown();
webserver = null;
}
debugger.disable();
}
@@ -65,7 +69,7 @@ public class DynmapPlugin extends JavaPlugin {
getServer().getPluginManager().registerEvent(Event.Type.BLOCK_PLACED, blockListener, Priority.Normal, this);
getServer().getPluginManager().registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.Normal, this);
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_COMMAND, new DynmapPlayerListener(mgr), Priority.Normal, this);
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_COMMAND, new DynmapPlayerListener(mgr, playerList), Priority.Normal, this);
//getServer().getPluginManager().registerEvent(Event.Type.BLOCK_DESTROYED, listener, Priority.Normal, this);
/* etc.getLoader().addListener(PluginLoader.Hook.COMMAND, listener, this, PluginListener.Priority.MEDIUM);
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_CREATED, listener, this, PluginListener.Priority.MEDIUM);
+2
View File
@@ -16,6 +16,7 @@ public class MapManager extends Thread {
private Debugger debugger;
private MapType map;
public StaleQueue staleQueue;
public PlayerList playerList;
/* lock for our data structures */
public static final Object lock = new Object();
@@ -55,6 +56,7 @@ public class MapManager extends Thread {
if (!tileDirectory.isDirectory())
tileDirectory.mkdirs();
map = new KzedMap(this, world, debugger, configuration);
}
+81
View File
@@ -0,0 +1,81 @@
package org.dynmap;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import org.bukkit.Server;
import org.bukkit.entity.Player;
public class PlayerList {
private Server server;
private HashSet<String> hiddenPlayerNames = new HashSet<String>();
private File hiddenPlayersFile = new File(DynmapPlugin.dataRoot, "hiddenplayers.txt");
public PlayerList(Server server) {
this.server = server;
}
public void save() {
OutputStream stream;
try {
stream = new FileOutputStream(hiddenPlayersFile);
OutputStreamWriter writer = new OutputStreamWriter(stream);
for(String player : hiddenPlayerNames) {
writer.write(player);
writer.write("\n");
}
writer.close();
stream.close();
} catch(IOException e) {
e.printStackTrace();
}
}
public void load() {
try {
Scanner scanner = new Scanner(hiddenPlayersFile);
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
hiddenPlayerNames.add(line);
}
scanner.close();
} catch (FileNotFoundException e) {
return;
}
}
public void hide(String playerName) {
hiddenPlayerNames.add(playerName);
save();
}
public void show(String playerName) {
hiddenPlayerNames.remove(playerName);
save();
}
public void setVisible(String playerName, boolean visible) {
if (visible) show(playerName); else hide(playerName);
}
public Player[] getVisiblePlayers() {
ArrayList<Player> visiblePlayers = new ArrayList<Player>();
Player[] onlinePlayers = server.getOnlinePlayers();
for(int i=0;i<onlinePlayers.length;i++){
Player p = onlinePlayers[i];
if (!hiddenPlayerNames.contains(p.getName())) {
visiblePlayers.add(p);
}
}
Player[] result = new Player[visiblePlayers.size()];
visiblePlayers.toArray(result);
return result;
}
}
+4 -2
View File
@@ -22,11 +22,13 @@ public class WebServer extends Thread {
private MapManager mgr;
private Server server;
private PlayerList playerList;
public WebServer(MapManager mgr, Server server, Debugger debugger, ConfigurationNode configuration) throws IOException
public WebServer(MapManager mgr, Server server, PlayerList playerList, Debugger debugger, ConfigurationNode configuration) throws IOException
{
this.mgr = mgr;
this.server = server;
this.playerList = playerList;
this.debugger = debugger;
String bindAddress = configuration.getString("webserver-bindaddress", "0.0.0.0");
@@ -44,7 +46,7 @@ public class WebServer extends Thread {
while (running) {
try {
Socket socket = sock.accept();
WebServerRequest requestThread = new WebServerRequest(socket, mgr, server, debugger);
WebServerRequest requestThread = new WebServerRequest(socket, mgr, server, playerList, debugger);
requestThread.start();
}
catch (IOException e) {
@@ -24,13 +24,15 @@ public class WebServerRequest extends Thread {
private Socket socket;
private MapManager mgr;
private Server server;
private PlayerList playerList;
public WebServerRequest(Socket socket, MapManager mgr, Server server, Debugger debugger)
public WebServerRequest(Socket socket, MapManager mgr, Server server, PlayerList playerList, Debugger debugger)
{
this.debugger = debugger;
this.socket = socket;
this.mgr = mgr;
this.server = server;
this.playerList = playerList;
}
private static void writeHttpHeader(BufferedOutputStream out, int statusCode, String statusText) throws IOException {
@@ -112,7 +114,7 @@ public class WebServerRequest extends Thread {
long relativeTime = server.getTime() % 24000;
sb.append(current + " " + relativeTime + "\n");
Player[] players = server.getOnlinePlayers();
Player[] players = playerList.getVisiblePlayers();
for(Player player : players) {
sb.append("player " + player.getName() + " " + player.getLocation().getX() + " " + player.getLocation().getY() + " " + player.getLocation().getZ() + "\n");
}
+2 -2
View File
@@ -50,8 +50,8 @@ Wool
35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
Gray Cloth
36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
37 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
38 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
+16
View File
@@ -0,0 +1,16 @@
<%@ Page Language="C#" %>
<script runat="server" language="C#">
public void Page_Load(object sender, EventArgs e)
{
string path = Request.Params["path"];
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://localhost:8123/" + path);
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream);
Response.ContentType = response.ContentType;
Response.Write(reader.ReadToEnd());
reader.Close();
responseStream.Close();
response.Close();
}
</script>