1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-21 04:05:48 +00:00
Slimefun4/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java

105 lines
3.2 KiB
Java
Raw Normal View History

2016-04-14 16:24:03 +00:00
package me.mrCookieSlime.Slimefun.api.energy;
import java.math.BigDecimal;
import java.util.List;
2016-05-14 17:24:40 +00:00
import org.bukkit.Material;
2016-04-14 16:24:03 +00:00
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
2016-05-14 17:24:40 +00:00
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
2016-04-14 16:24:03 +00:00
public class ItemEnergy {
2016-11-23 15:51:57 +00:00
// "&c&o&8\u21E8 &e\u26A1 &70 / 50 J"
2016-04-14 16:24:03 +00:00
public static float getStoredEnergy(ItemStack item) {
if (item == null || item.getType() == null || item.getType().equals(Material.AIR)) return 0F;
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
for (String line: item.getItemMeta().getLore()) {
2016-11-23 15:51:57 +00:00
if (line.startsWith("&c&o&8\u21E8 &e\u26A1 &7") && line.contains(" / ") && line.endsWith(" J")) {
return Float.valueOf(line.split(" / ")[0].replace("&c&o&8\u21E8 &e\u26A1 &7", ""));
2016-04-14 16:24:03 +00:00
}
}
return 0F;
}
public static float getMaxEnergy(ItemStack item) {
if (item == null || item.getType() == null || item.getType().equals(Material.AIR)) return 0F;
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
for (String line: item.getItemMeta().getLore()) {
2016-11-23 15:51:57 +00:00
if (line.startsWith("&c&o&8\u21E8 &e\u26A1 &7") && line.contains(" / ") && line.endsWith(" J")) {
2016-04-14 16:24:03 +00:00
return Float.valueOf(line.split(" / ")[1].replace(" J", ""));
}
}
return 0F;
}
public static float addStoredEnergy(ItemStack item, float energy) {
if (item == null || item.getType() == null || item.getType().equals(Material.AIR)) return 0F;
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
float rest = 0F;
float capacity = getMaxEnergy(item);
if (capacity == 0F) {
return rest;
}
float stored = getStoredEnergy(item);
if (stored + energy > capacity) {
rest = (stored + energy) - capacity;
stored = capacity;
}
else if (stored + energy < 0) {
stored = 0F;
}
else {
stored = stored + energy;
}
List<String> lore = item.getItemMeta().getLore();
int index = -1;
for (int i = 0; i < lore.size(); i++) {
String line = lore.get(i);
2016-11-23 15:51:57 +00:00
if (line.startsWith("&c&o&8\u21E8 &e\u26A1 &7") && line.contains(" / ") && line.endsWith(" J")) {
2016-04-14 16:24:03 +00:00
index = i;
break;
}
}
BigDecimal decimal = new BigDecimal(stored).setScale(2, BigDecimal.ROUND_HALF_UP);
2016-11-23 15:51:57 +00:00
lore.set(index, "&c&o&8\u21E8 &e\u26A1 &7" + decimal.floatValue() + " / " + capacity + " J");
2016-04-14 16:24:03 +00:00
ItemMeta im = item.getItemMeta();
im.setLore(lore);
item.setItemMeta(im);
return rest;
}
public static ItemStack chargeItem(ItemStack item, float energy) {
addStoredEnergy(item, energy);
return item;
}
public static void chargeInventory(Player p, float energy) {
p.getInventory().setItemInMainHand(chargeItem(p.getInventory().getItemInMainHand(), energy));
p.getInventory().setItemInOffHand(chargeItem(p.getInventory().getItemInOffHand(), energy));
p.getInventory().setHelmet(chargeItem(p.getInventory().getHelmet(), energy));
p.getInventory().setChestplate(chargeItem(p.getInventory().getChestplate(), energy));
p.getInventory().setLeggings(chargeItem(p.getInventory().getLeggings(), energy));
p.getInventory().setBoots(chargeItem(p.getInventory().getBoots(), energy));
PlayerInventory.update(p);
}
}