From 3fd511a8d1f4a4165c792bd8e7cd8191dd0af38b Mon Sep 17 00:00:00 2001 From: zeeZ Date: Sun, 22 May 2011 16:09:50 +0200 Subject: [PATCH] Added armor (merged from zeeZ). --- src/main/java/org/dynmap/Armor.java | 30 ++++++++++++++ .../org/dynmap/ClientUpdateComponent.java | 1 + web/css/dynmap_style.css | 38 ++++++++++++++--- web/images/armor.png | Bin 0 -> 213 bytes web/images/armor_depleted.png | Bin 0 -> 192 bytes web/images/heart.png | Bin 180 -> 198 bytes web/images/heart_depleted.png | Bin 0 -> 183 bytes web/js/map.js | 4 +- web/js/playermarkers.js | 39 ++++++++++++++---- 9 files changed, 99 insertions(+), 13 deletions(-) create mode 100644 src/main/java/org/dynmap/Armor.java create mode 100644 web/images/armor.png create mode 100644 web/images/armor_depleted.png create mode 100644 web/images/heart_depleted.png diff --git a/src/main/java/org/dynmap/Armor.java b/src/main/java/org/dynmap/Armor.java new file mode 100644 index 00000000..1e5a26e3 --- /dev/null +++ b/src/main/java/org/dynmap/Armor.java @@ -0,0 +1,30 @@ +package org.dynmap; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public class Armor { + /** + * http://www.minecraftwiki.net/wiki/Item_Durability#Armor_durability + * We rely on getArmorContents() to return 4 armor pieces in the order + * of: boots, pants, chest, helmet + */ + private static final double armorPoints[] = {1.5, 3.0, 4.0, 1.5}; + + public static final int getArmorPoints(Player player) { + int currentDurability = 0; + int baseDurability = 0; + double baseArmorPoints = 0; + ItemStack inventory[] = player.getInventory().getArmorContents(); + for(int i=0;iBs+xNg4kc7#W%R*KgSU|J(Qf|JSYG^`DuUxu5C(|9>w&fBwYq z?)?{rFJC@0{Qdj)1tZ8T4NdJe{QLp}A3uKhaO3*b5GEc5wg`*PS;tmt0Hql`UHx3v IIVCg!0Gu~fRR910 literal 0 HcmV?d00001 diff --git a/web/images/armor_depleted.png b/web/images/armor_depleted.png new file mode 100644 index 0000000000000000000000000000000000000000..c9bdc24eb8746fba845fe8737815131313725f12 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GNuDl_Ar-fh1Ox>w6%`c=CpR`8WN~T!p|fVqnnhMtR$fd@ zOv_VKQzh5M>@4d4d3w73{MOdizf-49m5ke4b+q8~v$IKR3(P|O{QTI`($d%jcpn)% moUK~0V8I7QpfL=LYz)~w|6Yq+E&{0(QRT7lV`u_wxCmw-%Vcf_`KZp e$xCXOco-HxmYp+m<$gDyB@CXfelF{r5}E)@A41ar literal 0 HcmV?d00001 diff --git a/web/js/map.js b/web/js/map.js index af0890cd..4114f525 100644 --- a/web/js/map.js +++ b/web/js/map.js @@ -454,7 +454,8 @@ DynMap.prototype = { name: update.name, location: new Location(me.worlds[update.world], parseFloat(update.x), parseFloat(update.y), parseFloat(update.z)), health: update.health, - account: update.account + armor: update.armor, + account: update.account }; $(me).trigger('playeradded', [ player ]); @@ -497,6 +498,7 @@ DynMap.prototype = { var me = this; var location = player.location = new Location(me.worlds[update.world], parseFloat(update.x), parseFloat(update.y), parseFloat(update.z)); player.health = update.health; + player.armor = update.armor; $(me).trigger('playerupdated', [ player ]); diff --git a/web/js/playermarkers.js b/web/js/playermarkers.js index f0a48bff..1c8d749f 100644 --- a/web/js/playermarkers.js +++ b/web/js/playermarkers.js @@ -15,7 +15,7 @@ componentconstructors['playermarkers'] = function(dynmap, configuration) { .text(player.name)); if (configuration.showplayerfaces) { - getMinecraftHead(player.account, 32, function(head) { + getMinecraftHead(player.name, 32, function(head) { $(head) .addClass('playericon') .prependTo(div); @@ -23,10 +23,28 @@ componentconstructors['playermarkers'] = function(dynmap, configuration) { }); } if (configuration.showplayerhealth) { - player.healthBar = $('
') - .addClass('playerHealth') - .css('width', (player.health/2*9) + 'px') + player.healthContainer = $('
') + .addClass('healthContainer') .appendTo(div); + if (player.health !== undefined && player.armor !== undefined) { + player.healthBar = $('
') + .addClass('playerHealth') + .css('width', (player.health/2*5) + 'px'); + player.armorBar = $('
') + .addClass('playerArmor') + .css('width', (player.armor/2*5) + 'px'); + + $('
') + .addClass('playerHealthBackground') + .append(player.healthBar) + .appendTo(player.healthContainer); + $('
') + .addClass('playerArmorBackground') + .append(player.armorBar) + .appendTo(player.healthContainer); + } else { + player.healthContainer.css('display','none'); + } } }); }); @@ -40,7 +58,14 @@ componentconstructors['playermarkers'] = function(dynmap, configuration) { player.marker.toggle(dynmap.world === player.location.world); player.marker.setPosition(markerPosition); // Update health - if (configuration.showplayerhealth) - player.healthBar.css('width', (player.health/2*9) + 'px'); + if (configuration.showplayerhealth) { + if (player.health !== undefined && player.armor !== undefined) { + player.healthContainer.css('display','block'); + player.healthBar.css('width', (player.health/2*5) + 'px'); + player.armorBar.css('width', (player.armor/2*5) + 'px'); + } else { + player.healthContainer.css('display','none'); + } + } }); -}; \ No newline at end of file +};