1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00
This commit is contained in:
TheBusyBiscuit 2020-01-28 21:05:45 +01:00
parent d37b1504ba
commit 1f672905d2
14 changed files with 275 additions and 231 deletions

View File

@ -34,6 +34,7 @@
* Added a config setting to limit how many Nodes a Network can have
* Added support for Furnaces and Brewing Stands to Cargo Networks
* Added Organic Food/Fertilizer for Dried Kelp
* Added many more strings to the messages.yml
### Changes
* Removed Solar Array
@ -54,6 +55,8 @@
* Fixed #1212
* Fixed #114
* Fixed #1385
* Fixed #1390
* Fixed #1394
## Release Candidate 4 (06 Jan 2020)
https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#4

View File

@ -19,116 +19,116 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
public class ItemUseEvent extends Event {
private static final HandlerList handlers = new HandlerList();
private final PlayerInteractEvent event;
private final Player player;
private final Optional<ItemStack> itemStack;
private final Optional<Block> clickedBlock;
private final EquipmentSlot hand;
private final BlockFace face;
private ComputedOptional<SlimefunItem> slimefunItem = ComputedOptional.createNew();
private ComputedOptional<SlimefunItem> slimefunBlock = ComputedOptional.createNew();
private Result itemResult = Result.DEFAULT;
private Result blockResult = Result.DEFAULT;
public ItemUseEvent(PlayerInteractEvent e) {
event = e;
player = e.getPlayer();
clickedBlock = Optional.ofNullable(e.getClickedBlock());
face = e.getBlockFace();
hand = e.getHand();
if (e.getItem() == null || e.getItem().getType() == Material.AIR || e.getItem().getAmount() == 0) {
itemStack = Optional.empty();
}
else {
itemStack = Optional.of(e.getItem());
}
public ItemUseEvent(PlayerInteractEvent e) {
event = e;
player = e.getPlayer();
clickedBlock = Optional.ofNullable(e.getClickedBlock());
face = e.getBlockFace();
hand = e.getHand();
if (e.getItem() == null || e.getItem().getType() == Material.AIR || e.getItem().getAmount() == 0) {
itemStack = Optional.empty();
}
else {
itemStack = Optional.of(e.getItem());
}
}
public static HandlerList getHandlerList() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
public HandlerList getHandlers() {
return handlers;
}
public PlayerInteractEvent getInteractEvent() {
return event;
}
public Player getPlayer() {
return player;
}
public ItemStack getItem() {
return itemStack.orElse(new ItemStack(Material.AIR));
}
public EquipmentSlot getHand() {
return hand;
}
public Optional<Block> getClickedBlock() {
return clickedBlock;
}
public BlockFace getClickedFace() {
return face;
}
public Optional<SlimefunItem> getSlimefunItem() {
if (!slimefunItem.isComputed()) {
if (itemStack.isPresent()) {
slimefunItem.compute(SlimefunItem.getByItem(itemStack.get()));
}
else {
slimefunItem = ComputedOptional.empty();
}
}
return slimefunItem.getAsOptional();
}
public Optional<SlimefunItem> getSlimefunBlock() {
if (!slimefunBlock.isComputed()) {
if (clickedBlock.isPresent()) {
slimefunBlock.compute(BlockStorage.check(clickedBlock.get()));
}
else {
slimefunBlock = ComputedOptional.empty();
}
}
return slimefunBlock.getAsOptional();
}
public void cancel() {
itemResult = Result.DENY;
blockResult = Result.DENY;
}
public Result useItem() {
return itemResult;
}
public Result useBlock() {
return blockResult;
}
public void setUseItem(Result result) {
itemResult = result;
}
public void setUseBlock(Result result) {
blockResult = result;
}
public HandlerList getHandlers() {
return handlers;
}
public PlayerInteractEvent getInteractEvent() {
return event;
}
public Player getPlayer() {
return player;
}
public ItemStack getItem() {
return itemStack.orElse(new ItemStack(Material.AIR));
}
public EquipmentSlot getHand() {
return hand;
}
public Optional<Block> getClickedBlock() {
return clickedBlock;
}
public BlockFace getClickedFace() {
return face;
}
public Optional<SlimefunItem> getSlimefunItem() {
if (!slimefunItem.isComputed()) {
if (itemStack.isPresent()) {
slimefunItem.compute(SlimefunItem.getByItem(itemStack.get()));
}
else {
slimefunItem = ComputedOptional.empty();
}
}
return slimefunItem.getAsOptional();
}
public Optional<SlimefunItem> getSlimefunBlock() {
if (!slimefunBlock.isComputed()) {
if (clickedBlock.isPresent()) {
slimefunBlock.compute(BlockStorage.check(clickedBlock.get()));
}
else {
slimefunBlock = ComputedOptional.empty();
}
}
return slimefunBlock.getAsOptional();
}
public void cancel() {
itemResult = Result.DENY;
blockResult = Result.DENY;
}
public Result useItem() {
return itemResult;
}
public Result useBlock() {
return blockResult;
}
public void setUseItem(Result result) {
itemResult = result;
}
public void setUseBlock(Result result) {
blockResult = result;
}
}

View File

@ -65,7 +65,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
profile.getGuideHistory().clear();
}
ChestMenu menu = create();
ChestMenu menu = create(p);
List<Category> categories = SlimefunPlugin.getUtilities().enabledCategories;
List<GuideHandler> handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList());
@ -173,7 +173,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
profile.getGuideHistory().add(category);
}
ChestMenu menu = create();
ChestMenu menu = create(p);
fillInv(p, profile, menu, survival);
menu.addItem(1, new CustomItem(ChestMenuUtils.getBackButton(), meta -> meta.setLore(Arrays.asList("", ChatColors.color("&rLeft Click: &7Go back to Main Menu")))));
@ -400,7 +400,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
recipeItems = new ItemStack[] {null, null, null, null, new CustomItem(Material.BARRIER, "&4We are somehow unable to show you this Recipe :/"), null, null, null, null};
}
ChestMenu menu = create();
ChestMenu menu = create(p);
displayItem(menu, profile, p, item, result, recipeType, recipeItems, addToHistory);
if (recipes.length > 1) {
@ -441,7 +441,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
RecipeType recipeType = item.getRecipeType();
ItemStack[] recipe = item.getRecipe();
ChestMenu menu = create();
ChestMenu menu = create(p);
if (item.hasWiki()) {
menu.addItem(8, new CustomItem(Material.KNOWLEDGE_BOOK, "&rView this Item on our Wiki &7(Slimefun Wiki)", "", "&7\u21E8 Click to open"));
@ -496,16 +496,6 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
return false;
});
/*
// Stats
menu.addItem(4, new CustomItem(SkullItem.fromPlayer(p), "&7Player Stats: &e" + p.getName(), "", "&7Progress: &a" + Math.round(((profile.getResearches().size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F + "% &e(" + profile.getResearches().size() + " / " + Research.list().size() + ")", "", "&7\u21E8 Click for a full summary"));
menu.addMenuClickHandler(4, (player, i, itemStack, clickAction) -> {
player.closeInventory();
profile.sendStats(player);
return false;
});
*/
// Search feature!
menu.addItem(7, new CustomItem(ChestMenuUtils.getSearchButton(), SlimefunPlugin.getLocal().getMessage(p, "guide.search.name"), SlimefunPlugin.getLocal().getMessages(p, "guide.search.lore").toArray(new String[0])));
menu.addMenuClickHandler(7, (pl, slot, item, action) -> {
@ -630,8 +620,8 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
}
}
private static ChestMenu create() {
ChestMenu menu = new ChestMenu("Slimefun Guide");
private static ChestMenu create(Player p) {
ChestMenu menu = new ChestMenu(SlimefunPlugin.getLocal().getMessage(p, "guide.title.main"));
menu.setEmptySlotsClickable(false);
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 1));

View File

@ -39,7 +39,7 @@ public final class GuideSettings {
private GuideSettings() {}
public static void openSettings(Player p, ItemStack guide) {
ChestMenu menu = new ChestMenu("Settings / Info");
ChestMenu menu = new ChestMenu(SlimefunPlugin.getLocal().getMessage(p, "guide.title.settings"));
menu.setEmptySlotsClickable(false);
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F));
@ -252,7 +252,7 @@ public final class GuideSettings {
}
private static void openLanguages(Player p) {
ChestMenu menu = new ChestMenu("Slimefun4 Language Selector");
ChestMenu menu = new ChestMenu(SlimefunPlugin.getLocal().getMessage(p, "guide.title.languages"));
menu.setEmptySlotsClickable(false);
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F));
@ -309,7 +309,7 @@ public final class GuideSettings {
}
private static void openCredits(Player p, int page) {
ChestMenu menu = new ChestMenu("Slimefun4's contributors");
ChestMenu menu = new ChestMenu(SlimefunPlugin.getLocal().getMessage(p, "guide.title.credits"));
menu.setEmptySlotsClickable(false);
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F));
@ -355,8 +355,14 @@ public final class GuideSettings {
for (Map.Entry<String, Integer> entry : contributor.getContributions()) {
String info = entry.getKey();
if (!info.startsWith("&")) {
info = SlimefunPlugin.getLocal().getMessage(p, "guide.credits.roles." + info);
}
if (entry.getValue() > 0) {
info += " &7(" + entry.getValue() + " Commit" + (entry.getValue() > 1 ? "s": "") + ")";
String commits = SlimefunPlugin.getLocal().getMessage(p, "guide.credits." + (entry.getValue() > 1 ? "commits": "commit"));
info += " &7(" + entry.getValue() + " " + commits + ")";
}
lore.add(ChatColors.color(info));

View File

@ -58,9 +58,9 @@ public class GitHubService {
this.logging = logging;
addDefaultContributors();
connectors.add(new ContributionsConnector(this, "code", repository, "&6Developer"));
connectors.add(new ContributionsConnector(this, "wiki", "TheBusyBiscuit/Slimefun4-wiki", "&3Wiki Editor"));
connectors.add(new ContributionsConnector(this, "resourcepack", "TheBusyBiscuit/Slimefun4-Resourcepack", "&cResourcepack Artist"));
connectors.add(new ContributionsConnector(this, "code", repository, "developer"));
connectors.add(new ContributionsConnector(this, "wiki", "TheBusyBiscuit/Slimefun4-wiki", "wiki"));
connectors.add(new ContributionsConnector(this, "resourcepack", "TheBusyBiscuit/Slimefun4-Resourcepack", "resourcepack"));
connectors.add(new GitHubConnector(this) {

View File

@ -29,8 +29,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MultiTool;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemDropHandler;
@ -107,33 +107,6 @@ public class SlimefunItemListener implements Listener {
slimefunItem.callItemHandler(ItemInteractionHandler.class, handler ->
handler.onRightClick(e, p, item)
);
if (slimefunItem instanceof MultiTool) {
e.setCancelled(true);
List<Integer> modes = ((MultiTool) slimefunItem).getModes();
int index = utilities.mode.getOrDefault(p.getUniqueId(), 0);
if (!p.isSneaking()) {
float charge = ItemEnergy.getStoredEnergy(item);
float cost = 0.3F;
if (charge >= cost) {
p.getEquipment().setItemInMainHand(ItemEnergy.chargeItem(item, -cost));
Bukkit.getPluginManager().callEvent(new ItemUseEvent(e.getParentEvent(), SlimefunItem.getByID((String) Slimefun.getItemValue(slimefunItem.getID(), "mode." + modes.get(index) + ".item")).getItem().clone(), e.getClickedBlock()));
}
}
else {
index++;
if (index == modes.size()) index = 0;
SlimefunItem selectedItem = SlimefunItem.getByID((String) Slimefun.getItemValue(slimefunItem.getID(), "mode." + modes.get(index) + ".item"));
String itemName = selectedItem != null ? selectedItem.getItemName(): "Unknown";
SlimefunPlugin.getLocal().sendMessage(p, "messages.mode-change", true, msg -> msg.replace("%device%", "Multi Tool").replace("%mode%", ChatColor.stripColor(itemName)));
utilities.mode.put(p.getUniqueId(), index);
}
}
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.HEAVY_CREAM, true)) e.setCancelled(true);
}
else {
e.setCancelled(true);

View File

@ -1,21 +1,22 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class ChargableItem extends SlimefunItem {
private String chargeType;
public ChargableItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String chargeType) {
super(category, item, id, recipeType, recipe);
public ChargableItem(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String chargeType) {
super(category, item, recipeType, recipe);
this.chargeType = chargeType;
}
public ChargableItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String chargeType, String[] keys, Object[] values) {
super(category, item, id, recipeType, recipe, keys, values);
public ChargableItem(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String chargeType, String[] keys, Object[] values) {
super(category, item, recipeType, recipe, keys, values);
this.chargeType = chargeType;
}

View File

@ -1,65 +0,0 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class MultiTool extends DamagableChargableItem {
private static final String PREFIX = "mode.";
private List<Integer> modes;
public MultiTool(SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String... items) {
super(Categories.TECH, item, recipeType, recipe, "Multi Tool", getKeys(items), getValues(items));
}
private static String[] getKeys(String... items) {
String[] keys = new String[items.length * 2];
for (int i = 0; i < items.length; i++) {
keys[i * 2] = PREFIX + i + ".enabled";
keys[i * 2 + 1] = PREFIX + i + ".item";
}
return keys;
}
private static Object[] getValues(String... items) {
Object[] values = new Object[items.length * 2];
for (int i = 0; i < items.length; i++) {
values[i * 2] = true;
values[i * 2 + 1] = items[i];
}
return values;
}
@Override
public void postRegister() {
List<Integer> list = new ArrayList<>();
int i = 0;
while (Slimefun.getItemValue(this.getID(), PREFIX + i + ".enabled") != null) {
if ((boolean) Slimefun.getItemValue(this.getID(), PREFIX + i + ".enabled")) {
list.add(i);
}
i++;
}
this.modes = list;
}
public List<Integer> getModes() {
return this.modes;
}
}

View File

@ -0,0 +1,117 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ChargableItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
public class MultiTool extends ChargableItem {
private static final String PREFIX = "mode.";
private static final float COST = 0.3F;
private Map<UUID, Integer> selectedMode = new HashMap<>();
private List<Integer> modes;
public MultiTool(SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String... items) {
super(Categories.TECH, item, recipeType, recipe, "Multi Tool", getKeys(items), getValues(items));
}
private static String[] getKeys(String... items) {
String[] keys = new String[items.length * 2];
for (int i = 0; i < items.length; i++) {
keys[i * 2] = PREFIX + i + ".enabled";
keys[i * 2 + 1] = PREFIX + i + ".item";
}
return keys;
}
private static Object[] getValues(String... items) {
Object[] values = new Object[items.length * 2];
for (int i = 0; i < items.length; i++) {
values[i * 2] = true;
values[i * 2 + 1] = items[i];
}
return values;
}
protected ItemUseHandler getItemUseHandler() {
return e -> {
Player p = e.getPlayer();
ItemStack item = e.getItem();
e.cancel();
int index = selectedMode.getOrDefault(p.getUniqueId(), 0);
if (!p.isSneaking()) {
float charge = ItemEnergy.getStoredEnergy(item);
if (charge >= COST) {
ItemEnergy.chargeItem(item, -COST);
String itemID = (String) Slimefun.getItemValue(getID(), "mode." + modes.get(index) + ".item");
SlimefunItem sfItem = SlimefunItem.getByID(itemID);
if (sfItem != null) {
sfItem.callItemHandler(ItemUseHandler.class, handler -> handler.onRightClick(e));
}
}
}
else {
index++;
if (index == modes.size()) index = 0;
SlimefunItem selectedItem = SlimefunItem.getByID((String) Slimefun.getItemValue(getID(), "mode." + modes.get(index) + ".item"));
String itemName = selectedItem != null ? selectedItem.getItemName(): "Unknown";
SlimefunPlugin.getLocal().sendMessage(p, "messages.mode-change", true, msg -> msg.replace("%device%", "Multi Tool").replace("%mode%", ChatColor.stripColor(itemName)));
selectedMode.put(p.getUniqueId(), index);
}
};
}
@Override
public void preRegister() {
super.preRegister();
addItemHandler(getItemUseHandler());
}
@Override
public void postRegister() {
List<Integer> list = new ArrayList<>();
int i = 0;
while (Slimefun.getItemValue(this.getID(), PREFIX + i + ".enabled") != null) {
if ((boolean) Slimefun.getItemValue(this.getID(), PREFIX + i + ".enabled")) {
list.add(i);
}
i++;
}
this.modes = list;
}
public List<Integer> getModes() {
return this.modes;
}
}

View File

@ -6,8 +6,8 @@ import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
@ -28,13 +28,16 @@ public class Multimeter extends SimpleSlimefunItem<ItemUseHandler> {
if (block.isPresent()) {
Block b = block.get();
if (ChargableBlock.isChargable(b)) {
e.cancel();
String stored = DoubleHandler.getFancyDouble(ChargableBlock.getCharge(b)) + " J";
String capacity = DoubleHandler.getFancyDouble(ChargableBlock.getMaxCharge(b)) + " J";
Player p = e.getPlayer();
p.sendMessage("");
p.sendMessage(ChatColors.color("&bStored Energy: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getCharge(b)) + " J"));
p.sendMessage(ChatColors.color("&bCapacity: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getMaxCharge(b)) + " J"));
SlimefunPlugin.getLocal().sendMessage(p, "messages.multimeter", str -> str.replace("%stored%", stored).replace("%capacity%", capacity));
p.sendMessage("");
}
}

View File

@ -46,7 +46,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
@ -84,6 +83,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MeatJerky;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.Medicine;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MultiTool;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.Multimeter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.NetherGoldPan;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment;

View File

@ -3,12 +3,13 @@ package me.mrCookieSlime.Slimefun.api.energy;
import java.math.BigDecimal;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
public final class ItemEnergy {
private ItemEnergy() {}
@ -20,8 +21,8 @@ public final class ItemEnergy {
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
for (String line : item.getItemMeta().getLore()) {
if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
return Float.valueOf(line.split(" / ")[0].replace(ChatColor.translateAlternateColorCodes('&', "&c&o&8\u21E8 &e\u26A1 &7"), ""));
if (line.startsWith(ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
return Float.valueOf(line.split(" / ")[0].replace(ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7"), ""));
}
}
@ -33,7 +34,7 @@ public final class ItemEnergy {
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
for (String line: item.getItemMeta().getLore()) {
if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
if (line.startsWith(ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
return Float.valueOf(line.split(" / ")[1].replace(" J", ""));
}
}
@ -71,7 +72,7 @@ public final class ItemEnergy {
for (int i = 0; i < lore.size(); i++) {
String line = lore.get(i);
if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
if (line.startsWith(ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
index = i;
break;
}
@ -79,7 +80,7 @@ public final class ItemEnergy {
BigDecimal decimal = BigDecimal.valueOf(stored).setScale(2, BigDecimal.ROUND_HALF_UP);
lore.set(index, ChatColor.translateAlternateColorCodes('&', "&c&o&8\u21E8 &e\u26A1 &7") + decimal.floatValue() + " / " + capacity + " J");
lore.set(index, ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7") + decimal.floatValue() + " / " + capacity + " J");
ItemMeta im = item.getItemMeta();
im.setLore(lore);

View File

@ -104,7 +104,6 @@ public final class Utilities {
public final Map<UUID, Boolean> jumpState = new HashMap<>();
public final Set<UUID> damage = new HashSet<>();
public final Map<UUID, Entity[]> remove = new HashMap<>();
public final Map<UUID, Integer> mode = new HashMap<>();
public final Map<UUID, Integer> enchanting = new HashMap<>();
public final Map<UUID, ItemStack> backpack = new HashMap<>();

View File

@ -28,6 +28,21 @@ guide:
languages:
updated: '&aYour language was successfully set to: &b%lang%'
title:
main: 'Slimefun Guide'
settings: 'Settings & Info'
languages: 'Select your preferred language'
credits: 'Slimefun4 Contributors'
credits:
commit: 'Commit'
commits: 'Commits'
roles:
developer: '&6Developer'
wiki: '&3Wiki Editor'
resourcepack: '&cResourcepack Artist'
translator: '&9Translator'
messages:
not-researched: '&4You do not have enough knowledge to understand this'
@ -49,6 +64,7 @@ messages:
disabled-in-world: '&4&lThis Item has been disabled in this world'
disabled-item: '&4&lThis Item has been disabled! How did you even get that?'
no-tome-yourself: '&cYou cannot use the &4Tome of Knowledge &con yourself...'
multimeter: '&bStored Energy: &3%stored% &b/ &3%capacity%'
talisman:
anvil: '&a&oYour Talisman saved your tool from breaking'
@ -68,7 +84,7 @@ messages:
soulbound-rune:
fail: '&cYou can only bind one item to your soul at a time.'
success: '&aYou have successfully bound this item to your soul! You will keep it when you die.'
research:
start: '&7The Ancient Spirits whisper mysterious words into your ear!'
progress: '&7You start to wonder about &b%research% &e(%progress%)'