From 084c1a492595587f9d90dcda18717bb7f7a0b0ab Mon Sep 17 00:00:00 2001 From: fescen9 Date: Sun, 12 Dec 2010 20:55:16 +0000 Subject: [PATCH] - Map listens for player login and downloads, crops and resizes the players skin (face only) - If the map fails to download a skin for the user, it downloads, crops and resizes the default skin (http://www.minecraft.net/img/char.png) - Images are saved to the tile directory so users aren't forced to map another directory, setup permissions, etc... - Added one more zoom level (thanks godsyn) - Added a map link so you can link people/friends to specific parts of the map (thanks godsyn) --- MapListener.java | 6 +++++ MapManager.java | 46 ++++++++++++++++++++++++++++++++ dist/DynamicMap.rar | Bin 39115 -> 39864 bytes map.java | 1 + web/map.js | 63 ++++++++++++++++++++++++-------------------- web/style.css | 18 ++++++++++--- 6 files changed, 102 insertions(+), 32 deletions(-) diff --git a/MapListener.java b/MapListener.java index 7ecf94c5..6e82e334 100644 --- a/MapListener.java +++ b/MapListener.java @@ -35,6 +35,12 @@ public class MapListener extends PluginListener { return false; } + @Override + public void onLogin(Player player) + { + mgr.getPlayerImage(player); + } + @Override public boolean onCommand(Player player, String[] split) { diff --git a/MapManager.java b/MapManager.java index 7a1acbb6..672f6384 100644 --- a/MapManager.java +++ b/MapManager.java @@ -1,8 +1,11 @@ import java.awt.Color; import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Insets; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.awt.image.WritableRaster; +import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -11,6 +14,8 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Collection; import java.util.Comparator; import java.util.HashMap; @@ -832,4 +837,45 @@ public class MapManager extends Thread { } } } + + protected void getPlayerImage(Player player) + { + String urlString = "http://www.minecraft.net/skin/" + player.getName() + ".png"; + String filename = tilepath + player.getName() + ".png"; + + if (downloadPlayerImage(urlString, filename) == false) { + downloadPlayerImage("http://www.minecraft.net/img/char.png", filename); + } + } + + private Boolean downloadPlayerImage(String urlString, String filename) + { + BufferedImage img = null; + Boolean success = false; + File out = null; + + try + { + img = ImageIO.read(new URL(urlString)); + out = new File(filename); + + BufferedImage imgCropped = img.getSubimage(8, 8, 8, 8); + BufferedImage imgResized = new BufferedImage(24, 24, BufferedImage.TYPE_INT_ARGB); + + Graphics2D g = imgResized.createGraphics(); + g.drawImage(imgCropped, 0, 0, 24, 24, null); + g.dispose(); + + ImageIO.write(imgResized, "png", out); + success = true; + } + catch(IOException e) { + log.log(Level.INFO, "Failed to fetch player image " + filename, e); + } + catch(NullPointerException e) { + log.log(Level.INFO, "Failed to fetch player image " + filename, e); + } + + return success; + } } diff --git a/dist/DynamicMap.rar b/dist/DynamicMap.rar index 6c4f35d7d5ab935a84cf83a4a29fe72e197bf265..2884b78f866df7cd28a660c4a4bd9921c0f5812a 100644 GIT binary patch delta 30096 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 Dbik?) delta 29343 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 eC9pp' + p[1] + ''; - } - + } loggedin[p[0]] = 1; - if (p[1] == 'player') { - if(playerlst != '') playerlst += '
'; - playerlst += ' ' + p[0] + ''; - } - if(p.length == 5) { var image = p[1] + '.png'; + if (p[1] == 'player') { + if(playerlst != '') playerlst += '
'; + playerlst += '' + p[0] + ''; + image = setup.tileUrl + p[0] + '.png'; + } + if (p[1] == 'warp') numwarps++; if (p[1] == 'sign') numsigns++; if (p[1] == 'home') numhomes++; @@ -651,7 +647,6 @@ function makeRequest(url, func, type, fail, post, contenttype) } else if(p.length == 2) { lastSeen['t_' + p[0]] = lasttimestamp; lastSeen['zt_' + p[1]] = lasttimestamp; - imgSubst('t_' + p[0]); imgSubst('zt_' + p[1]); } @@ -661,24 +656,20 @@ function makeRequest(url, func, type, fail, post, contenttype) oldplayerlst = playerlst; lst.innerHTML = playerlst; } - + for(var m in markers) { if(!(m in loggedin)) { markers[m].setMap(null); delete markers[m]; } } - + setTimeout(mapUpdate, config.updateRate); document.getElementById('warpsDiv').style.display = (numwarps == 0)?'none':''; document.getElementById('signsDiv').style.display = (numsigns == 0)?'none':''; document.getElementById('homesDiv').style.display = (numhomes == 0)?'none':''; document.getElementById('spawnsDiv').style.display = (numspawns == 0)?'none':''; - document.getElementById('plist').style.display = (numplayers == 0)?'none':''; - document.getElementById('controls').style.display = ((numwarps + numsigns + numhomes + numspawns) == 0)?'none':''; - - setTimeout(mapUpdate, config.updateRate); }, 'text', function() { alert('failed to get update data'); } ); } @@ -690,7 +681,7 @@ function makeRequest(url, func, type, fail, post, contenttype) center: new google.maps.LatLng(0, 1), navigationControl: true, navigationControlOptions: { - style: google.maps.NavigationControlStyle.SMALL + style: google.maps.NavigationControlStyle.DEFAULT }, scaleControl: false, mapTypeControl: false, @@ -708,6 +699,12 @@ function makeRequest(url, func, type, fail, post, contenttype) google.maps.event.addListener(map, 'dragstart', function(mEvent) { plfollow(''); }); + google.maps.event.addListener(map, 'zoom_changed', function() { + makeLink(); + }); + google.maps.event.addListener(map, 'center_changed', function() { + makeLink(); + }); map.dragstart = plfollow(''); map.mapTypes.set('mcmap', mapType); @@ -732,7 +729,7 @@ function makeRequest(url, func, type, fail, post, contenttype) function plclick(name) { if(name in markers) { if(name != followPlayer) plfollow(''); - map.setCenter(markers[name].getPosition()); + map.panTo(markers[name].getPosition()); } } @@ -759,10 +756,18 @@ function makeRequest(url, func, type, fail, post, contenttype) followPlayer = name; if(name in markers) { - map.setCenter(markers[name].getPosition()); + map.panTo(markers[name].getPosition()); } } + function makeLink() { + var a=location.href.substring(0,location.href.lastIndexOf("/")+1) + + "?lat=" + map.getCenter().lat().toFixed(6) + + "&lng=" + map.getCenter().lng().toFixed(6) + + "&zoom=" + map.getZoom(); + document.getElementById("link").innerHTML = a; + } + //remove item (string or number) from an array function removeItem(originalArray, itemToRemove) { var j = 0; @@ -774,4 +779,4 @@ function makeRequest(url, func, type, fail, post, contenttype) } // assert('hi'); return originalArray; - } + } \ No newline at end of file diff --git a/web/style.css b/web/style.css index 818f3afe..ae63a021 100644 --- a/web/style.css +++ b/web/style.css @@ -18,6 +18,7 @@ body { height: 100%; margin: 0px; padding: 0px ; background-color: #000; } } #plistbtn { float:right; + cursor:pointer; } #link { position: absolute; @@ -32,8 +33,8 @@ body { height: 100%; margin: 0px; padding: 0px ; background-color: #000; } } #controls { position: absolute; - top: 4px; - left: 30px; + top: 12px; + left: 45px; border: 1px solid #808080; background: #000; opacity: 0.6; @@ -56,4 +57,15 @@ a, a:visited { white-space: nowrap; color: white; display:none; -} \ No newline at end of file +} +.gmnoprint{ + margin-top:-75px; + margin-left:-20px +} +.plisthead{ + margin-left:3px; + margin-right:3px; + display:inline-block; + height:14px;width:14px; + background-color:#000; +}