forked from Upstream/mmocore
Fixed issue with item damage application
This commit is contained in:
parent
f98d78959f
commit
7767e51534
@ -62,7 +62,6 @@ public class MMOCoreUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param value an integer you want to convert
|
* @param value an integer you want to convert
|
||||||
* @return the string representing the integer but with roman letters
|
* @return the string representing the integer but with roman letters
|
||||||
*/
|
*/
|
||||||
@ -82,23 +81,25 @@ public class MMOCoreUtils {
|
|||||||
roman_numerals.put("IV", 4);
|
roman_numerals.put("IV", 4);
|
||||||
roman_numerals.put("I", 1);
|
roman_numerals.put("I", 1);
|
||||||
String res = "";
|
String res = "";
|
||||||
for(Map.Entry<String, Integer> entry : roman_numerals.entrySet()){
|
for (Map.Entry<String, Integer> entry : roman_numerals.entrySet()) {
|
||||||
int matches = value/entry.getValue();
|
int matches = value / entry.getValue();
|
||||||
res += repeat(entry.getKey(), matches);
|
res += repeat(entry.getKey(), matches);
|
||||||
value = value % entry.getValue();
|
value = value % entry.getValue();
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String repeat(String s, int n) {
|
private static String repeat(String s, int n) {
|
||||||
if(s == null) {
|
if (s == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
for(int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
sb.append(s);
|
sb.append(s);
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays an in game indicator using a hologram. This uses
|
* Displays an in game indicator using a hologram. This uses
|
||||||
* LumineUtils hologramFactory to summon holograms
|
* LumineUtils hologramFactory to summon holograms
|
||||||
@ -260,8 +261,9 @@ public class MMOCoreUtils {
|
|||||||
* @param damage Damage that needs to be applied
|
* @param damage Damage that needs to be applied
|
||||||
*/
|
*/
|
||||||
public static void decreaseDurability(Player player, EquipmentSlot slot, int damage) {
|
public static void decreaseDurability(Player player, EquipmentSlot slot, int damage) {
|
||||||
|
|
||||||
ItemStack item = player.getInventory().getItem(slot);
|
ItemStack item = player.getInventory().getItem(slot);
|
||||||
if (item == null || item.getType().getMaxDurability() == 0 || !item.hasItemMeta() || !(item.getItemMeta() instanceof Damageable) || item.getItemMeta().isUnbreakable())
|
if (item == null || item.getType().getMaxDurability() == 0 || item.getItemMeta().isUnbreakable())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PlayerItemDamageEvent event = new PlayerItemDamageEvent(player, item, damage);
|
PlayerItemDamageEvent event = new PlayerItemDamageEvent(player, item, damage);
|
||||||
@ -270,11 +272,12 @@ public class MMOCoreUtils {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
if (event.getDamage() + ((Damageable) meta).getDamage() >= item.getType().getMaxDurability()) {
|
final int newDamage = event.getDamage() + ((Damageable) meta).getDamage();
|
||||||
|
if (newDamage >= item.getType().getMaxDurability()) {
|
||||||
player.playSound(player.getLocation(), Sound.ENTITY_ITEM_BREAK, 1F, 1F);
|
player.playSound(player.getLocation(), Sound.ENTITY_ITEM_BREAK, 1F, 1F);
|
||||||
player.getInventory().setItem(slot, null);
|
player.getInventory().setItem(slot, null);
|
||||||
} else {
|
} else {
|
||||||
((Damageable) meta).setDamage(((Damageable) meta).getDamage() + event.getDamage());
|
((Damageable) meta).setDamage(newDamage);
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user