diff --git a/CHANGELOG.md b/CHANGELOG.md index 14dcb3cd9..49dfaab47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/ItemUseEvent.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/ItemUseEvent.java index d9680df5f..2a1d0da9f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/ItemUseEvent.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/ItemUseEvent.java @@ -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; private final Optional clickedBlock; - + private final EquipmentSlot hand; private final BlockFace face; - + private ComputedOptional slimefunItem = ComputedOptional.createNew(); private ComputedOptional 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 getClickedBlock() { - return clickedBlock; - } - - public BlockFace getClickedFace() { - return face; - } - - public Optional getSlimefunItem() { - - if (!slimefunItem.isComputed()) { - if (itemStack.isPresent()) { - slimefunItem.compute(SlimefunItem.getByItem(itemStack.get())); - } - else { - slimefunItem = ComputedOptional.empty(); - } - } - - return slimefunItem.getAsOptional(); - } - - public Optional 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 getClickedBlock() { + return clickedBlock; + } + + public BlockFace getClickedFace() { + return face; + } + + public Optional getSlimefunItem() { + + if (!slimefunItem.isComputed()) { + if (itemStack.isPresent()) { + slimefunItem.compute(SlimefunItem.getByItem(itemStack.get())); + } + else { + slimefunItem = ComputedOptional.empty(); + } + } + + return slimefunItem.getAsOptional(); + } + + public Optional 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; + } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/ChestSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/ChestSlimefunGuide.java index 4ffad5d1b..869658d5b 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/ChestSlimefunGuide.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/ChestSlimefunGuide.java @@ -65,7 +65,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide { profile.getGuideHistory().clear(); } - ChestMenu menu = create(); + ChestMenu menu = create(p); List categories = SlimefunPlugin.getUtilities().enabledCategories; List 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)); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/GuideSettings.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/GuideSettings.java index 17ddb8a40..c37fbeabb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/GuideSettings.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/GuideSettings.java @@ -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 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)); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java index 63f797dea..00266c38f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/GitHubService.java @@ -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) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java index 342f022d0..c762238de 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/SlimefunItemListener.java @@ -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 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); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java index 994e15738..a20401d37 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java @@ -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; } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java deleted file mode 100644 index 2f15feb3d..000000000 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java +++ /dev/null @@ -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 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 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 getModes() { - return this.modes; - } - -} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MultiTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MultiTool.java new file mode 100644 index 000000000..424d0df57 --- /dev/null +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MultiTool.java @@ -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 selectedMode = new HashMap<>(); + private List 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 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 getModes() { + return this.modes; + } + +} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/Multimeter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/Multimeter.java index ec79c952a..7556bd25b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/Multimeter.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/Multimeter.java @@ -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 { 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(""); } } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 4a1fb3110..23c6a6a1b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -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; diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java index 7b7c17740..7b7a467e4 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java @@ -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); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java index db8e3c8f9..674fd20f4 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -104,7 +104,6 @@ public final class Utilities { public final Map jumpState = new HashMap<>(); public final Set damage = new HashSet<>(); public final Map remove = new HashMap<>(); - public final Map mode = new HashMap<>(); public final Map enchanting = new HashMap<>(); public final Map backpack = new HashMap<>(); diff --git a/src/main/resources/languages/messages_en.yml b/src/main/resources/languages/messages_en.yml index d4f861806..9c5d7cf7f 100644 --- a/src/main/resources/languages/messages_en.yml +++ b/src/main/resources/languages/messages_en.yml @@ -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%)'