diff --git a/CHANGELOG.md b/CHANGELOG.md index 85d218a19..c03645890 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,10 +25,13 @@ ## Release Candidate 5 (TBD) ### Additions +* Aded preset messages.yml files * Added user-configurable localization +* Added many more options to the messages.yml ### Changes * Removed Solar Array +* A lot of internal cleanup ### Fixes * Fixed #1355 diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/ClearLagHook.java similarity index 92% rename from src/main/java/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java rename to src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/ClearLagHook.java index 170e1c27b..9d09d5c22 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/ClearLagHook.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.hooks; +package io.github.thebusybiscuit.slimefun4.core.hooks; import java.util.Iterator; diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/PlaceholderAPIHook.java similarity index 97% rename from src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java rename to src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/PlaceholderAPIHook.java index fa624b1c5..9601865f6 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/PlaceholderAPIHook.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.hooks; +package io.github.thebusybiscuit.slimefun4.core.hooks; import java.util.Set; import java.util.stream.Stream; diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/SlimefunHooks.java similarity index 97% rename from src/main/java/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java rename to src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/SlimefunHooks.java index 46ea22837..f6d148c9b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/SlimefunHooks.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.hooks; +package io.github.thebusybiscuit.slimefun4.core.hooks; import java.util.logging.Level; diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/WorldEditHook.java similarity index 95% rename from src/main/java/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java rename to src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/WorldEditHook.java index aa3ca4834..1d121d77a 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/hooks/WorldEditHook.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.hooks; +package io.github.thebusybiscuit.slimefun4.core.hooks; import org.bukkit.Bukkit; import org.bukkit.Location; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java index 7e0aa10fb..ebcc8d2cc 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TeleporterListener.java @@ -1,5 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners; +import java.util.UUID; + +import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -10,8 +13,9 @@ import org.bukkit.event.player.PlayerInteractEvent; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.Teleporter; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; public class TeleporterListener implements Listener { @@ -21,7 +25,7 @@ public class TeleporterListener implements Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @EventHandler(priority=EventPriority.HIGHEST,ignoreCancelled=true) + @EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled=true) public void onStarve(PlayerInteractEvent e) { if (e.getAction() != Action.PHYSICAL || e.getClickedBlock() == null) return; @@ -35,8 +39,10 @@ public class TeleporterListener implements Listener { for (BlockFace face : faces) { if (!BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN).getRelative(face), "GPS_TELEPORTER_PYLON")) return; } - - ((Teleporter) teleporter).onInteract(e.getPlayer(), e.getClickedBlock().getRelative(BlockFace.DOWN)); + + Block block = e.getClickedBlock().getRelative(BlockFace.DOWN); + UUID owner = UUID.fromString(BlockStorage.getLocationInfo(block.getLocation(), "owner")); + Slimefun.getGPSNetwork().openTeleporterGUI(e.getPlayer(), owner, block, Slimefun.getGPSNetwork().getNetworkComplexity(owner)); } } else if (id.equals("ELEVATOR_PLATE")) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/ChestMenuUtils.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/ChestMenuUtils.java index d976afeb2..027d4fb57 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/ChestMenuUtils.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/ChestMenuUtils.java @@ -1,15 +1,20 @@ package io.github.thebusybiscuit.slimefun4.utils; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; import io.github.thebusybiscuit.cscorelib2.item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public final class ChestMenuUtils { @@ -68,4 +73,64 @@ public final class ChestMenuUtils { return new CustomItem(NEXT_BUTTON_ACTIVE, meta -> meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"))); } + public static void updateProgressbar(BlockMenu menu, int slot, int timeleft, int time, ItemStack indicator) { + ItemStack item = indicator.clone(); + ItemMeta im = item.getItemMeta(); + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + ((Damageable) im).setDamage(getDurability(item, timeleft, time)); + im.setDisplayName(" "); + List lore = new ArrayList<>(); + lore.add(getProgressBar(timeleft, time)); + lore.add(""); + lore.add(getTimeLeft(timeleft / 2)); + im.setLore(lore); + item.setItemMeta(im); + + menu.replaceExistingItem(slot, item); + } + + public static String getProgressBar(int time, int total) { + StringBuilder progress = new StringBuilder(); + float percentage = Math.round(((((total - time) * 100.0F) / total) * 100.0F) / 100.0F); + + if (percentage < 16.0F) progress.append("&4"); + else if (percentage < 32.0F) progress.append("&c"); + else if (percentage < 48.0F) progress.append("&6"); + else if (percentage < 64.0F) progress.append("&e"); + else if (percentage < 80.0F) progress.append("&2"); + else progress = progress.append("&a"); + + int rest = 20; + for (int i = (int) percentage; i >= 5; i = i - 5) { + progress.append(":"); + rest--; + } + + progress.append("&7"); + + for (int i = 0; i < rest; i++) { + progress.append(":"); + } + + progress.append(" - " + percentage + "%"); + return ChatColor.translateAlternateColorCodes('&', progress.toString()); + } + + private static String getTimeLeft(int seconds) { + String timeleft = ""; + + int minutes = (int) (seconds / 60L); + if (minutes > 0) { + timeleft = String.valueOf(timeleft) + minutes + "m "; + } + + seconds -= minutes * 60; + timeleft = String.valueOf(timeleft) + seconds + "s"; + return ChatColor.translateAlternateColorCodes('&', "&7" + timeleft + " left"); + } + + private static short getDurability(ItemStack item, int timeleft, int max) { + return (short) ((item.getType().getMaxDurability() / max) * timeleft); + } + } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/Category.java index 8746a2933..31888fd45 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.bukkit.inventory.ItemFlag; @@ -72,7 +73,7 @@ public class Category { */ public void register() { SlimefunPlugin.getUtilities().allCategories.add(this); - Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter); + Collections.sort(list(), Comparator.comparingInt(Category::getTier)); if (this instanceof SeasonalCategory) { if (((SeasonalCategory) this).isUnlocked()) { @@ -83,7 +84,7 @@ public class Category { SlimefunPlugin.getUtilities().enabledCategories.add(this); } - Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, SlimefunPlugin.getUtilities().categorySorter); + Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, Comparator.comparingInt(Category::getTier)); } /** diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java deleted file mode 100644 index 71f9d6906..000000000 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ /dev/null @@ -1,137 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; - -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.ItemStack; - -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.GEO.OreGenResource; -import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; -import me.mrCookieSlime.Slimefun.utils.MachineHelper; - -@Deprecated -public abstract class ADrill extends AContainer { - - private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 9, 10, 11, 12, 18, 21, 27, 28, 29, 30, 19, 20}; - private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35}; - - public abstract OreGenResource getOreGenResource(); - public abstract ItemStack[] getOutputItems(); - public abstract int getProcessingTime(); - public abstract int getSpeed(); - - public ADrill(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, id, recipeType, recipe); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - this.constructMenu(this); - } - - private void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - ChestMenuUtils.getEmptyClickHandler() - ); - } - for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - ChestMenuUtils.getEmptyClickHandler() - ); - } - - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), - ChestMenuUtils.getEmptyClickHandler() - ); - - for (int i: getOutputSlots()) { - preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { - - @Override - public boolean onClick(Player p, int slot, ItemStack cursor, ClickAction action) { - return false; - } - - @Override - public boolean onClick(InventoryClickEvent e, Player p, int slot, ItemStack cursor, ClickAction action) { - return cursor == null || cursor.getType() == null || cursor.getType() == Material.AIR; - } - }); - } - } - - @Override - public boolean canOpen(Block b, Player p) { - if (!(p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES))) { - return false; - } - - if (!OreGenSystem.wasResourceGenerated(getOreGenResource(), b.getChunk())) { - SlimefunPlugin.getLocal().sendMessage(p, "gps.geo.scan-required", true); - return false; - } - return true; - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - }; - } - - @Override - public int[] getInputSlots() { - return new int[0]; - } - - @Override - public void registerDefaultRecipes() {} - - @Override - protected void tick(Block b) { - BlockMenu menu = BlockStorage.getInventory(b); - if (isProcessing(b)) { - int timeleft = progress.get(b); - if (timeleft > 0) { - MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar()); - - if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; - ChargableBlock.addCharge(b, -getEnergyConsumption()); - - progress.put(b, timeleft - 1); - } - else { - menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots()); - - progress.remove(b); - processing.remove(b); - } - } - else if (OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) > 0) { - MachineRecipe r = new MachineRecipe(getProcessingTime() / getSpeed(), new ItemStack[0], this.getOutputItems()); - if (!menu.fits(r.getOutput()[0], getOutputSlots())) return; - processing.put(b, r); - progress.put(b, r.getTicks()); - OreGenSystem.setSupplies(getOreGenResource(), b.getChunk(), OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) - 1); - } - } - -} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java deleted file mode 100644 index 1f5ee6a08..000000000 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ /dev/null @@ -1,146 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; - -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.ItemStack; - -import io.github.thebusybiscuit.cscorelib2.item.CustomItem; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils; -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -public abstract class AFarm extends SlimefunItem { - - private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 36, 37, 38, 39, 40, 41, 42, 43, 44}; - private static final int[] border_out = {9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}; - - public AFarm(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, id, recipeType, recipe); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); - return new int[0]; - } - }; - - registerBlockHandler(id, (p, b, tool, reason) -> { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - return true; - }); - } - - private void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler()); - } - - for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); - } - - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler()); - - for (int i : getOutputSlots()) { - preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { - - @Override - public boolean onClick(Player p, int slot, ItemStack cursor, ClickAction action) { - return false; - } - - @Override - public boolean onClick(InventoryClickEvent e, Player p, int slot, ItemStack cursor, ClickAction action) { - return cursor == null || cursor.getType() == null || cursor.getType() == Material.AIR; - } - }); - } - } - - public abstract String getInventoryTitle(); - public abstract int getEnergyConsumption(); - public abstract boolean canHarvest(Block b); - public abstract ItemStack harvest(Block b); - public abstract int getRadius(); - - public int[] getOutputSlots() { - return new int[] {19, 20, 21, 22, 23, 24, 25}; - } - - protected void tick(Block b) { - if (ChargableBlock.isChargable(b)) { - if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; - int radius = getRadius(); - - for (int x = -radius; x <= radius; x++) { - for (int z = -radius; z <= radius; z++) { - Block block = new Location(b.getWorld(), b.getX() + (double) x, b.getY() + 2.0, b.getZ() + (double) z).getBlock(); - if (canHarvest(block)) { - BlockMenu menu = BlockStorage.getInventory(b.getLocation()); - ItemStack item = harvest(block); - - if (!menu.fits(item, getOutputSlots())) { - return; - } - - menu.pushItem(item, getOutputSlots()); - ChargableBlock.addCharge(b, -getEnergyConsumption()); - - return; - } - } - } - } - } - - @Override - public void preRegister() { - addItemHandler(new BlockTicker() { - - @Override - public void tick(Block b, SlimefunItem sf, Config data) { - AFarm.this.tick(b); - } - - @Override - public boolean isSynchronized() { - return true; - } - }); - } -} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java deleted file mode 100644 index bdf981259..000000000 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; - -import org.bukkit.inventory.ItemStack; - -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; - -@Deprecated -public final class MachineHelper { - - private MachineHelper() {} - - public static String getTimeLeft(int seconds) { - return me.mrCookieSlime.Slimefun.utils.MachineHelper.getTimeLeft(seconds); - } - - public static String getProgress(int time, int total) { - return me.mrCookieSlime.Slimefun.utils.MachineHelper.getProgress(time, total); - } - - public static String getCoolant(int time, int total) { - return me.mrCookieSlime.Slimefun.utils.MachineHelper.getCoolant(time, total); - } - - public static float getPercentage(int time, int total) { - return me.mrCookieSlime.Slimefun.utils.MachineHelper.getPercentage(time, total); - } - - public static short getDurability(ItemStack item, int timeleft, int max) { - return me.mrCookieSlime.Slimefun.utils.MachineHelper.getDurability(item, timeleft, max); - } - - public static void updateProgressbar(BlockMenu menu, int slot, int timeleft, int time, ItemStack indicator) { - me.mrCookieSlime.Slimefun.utils.MachineHelper.updateProgressbar(menu, slot, timeleft, time, indicator); - } - -} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/Teleporter.java similarity index 85% rename from src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/Teleporter.java index 085e83c1e..c99cfa946 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/Teleporter.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -12,7 +12,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; -public abstract class Teleporter extends SlimefunItem { +public class Teleporter extends SlimefunItem { public Teleporter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { super(category, item, recipeType, recipe); @@ -30,7 +30,5 @@ public abstract class Teleporter extends SlimefunItem { } }); } - - public abstract void onInteract(Player p, Block b); } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 5ee680c24..a38c40dee 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; import java.util.List; -import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; @@ -62,7 +61,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock; @@ -148,6 +146,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOS import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.OilPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.ElevatorPlate; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.GPSTransmitter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.Teleporter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors.NetherStarReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors.NuclearReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; @@ -1050,7 +1049,7 @@ public final class SlimefunSetup { } Chest chest = (Chest) chestBlock.getState(); - final Inventory inv = chest.getInventory(); + Inventory inv = chest.getInventory(); List ores = new ArrayList<>(); for (int x = b.getX() - 4; x <= b.getX() + 4; x++) { @@ -1063,8 +1062,8 @@ public final class SlimefunSetup { } } if (!ores.isEmpty()) { - final Material ore = ores.get(0).getBlock().getType(); - final ItemStack adding = new ItemStack(ore); + Material ore = ores.get(0).getBlock().getType(); + ItemStack adding = new ItemStack(ore); ores.get(0).getBlock().setType(Material.AIR); ores.clear(); if (InvUtils.fits(inv, adding)) { @@ -1099,7 +1098,7 @@ public final class SlimefunSetup { private final ItemStack effectivePickaxe = new ItemStack(Material.DIAMOND_PICKAXE); @Override - public boolean onInteract(final Player p, MultiBlock mb, final Block b) { + public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.equals(((SlimefunMachine) SlimefunItem.getByID("ADVANCED_DIGITAL_MINER")).getMultiBlock())) { p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { @@ -1111,7 +1110,7 @@ public final class SlimefunSetup { } Chest chest = (Chest) chestBlock.getState(); - final Inventory inv = chest.getInventory(); + Inventory inv = chest.getInventory(); List ores = new ArrayList<>(); for (int x = b.getX() - 6; x <= b.getX() + 6; x++) { @@ -1124,8 +1123,9 @@ public final class SlimefunSetup { } } if (!ores.isEmpty()) { - final Material ore = ores.get(0).getBlock().getType(); + Material ore = ores.get(0).getBlock().getType(); ItemStack drop = new ItemStack(ore); + if (ore == Material.COAL_ORE) drop = new ItemStack(Material.COAL, 4); else if (ore == Material.IRON_ORE) drop = new CustomItem(SlimefunItems.IRON_DUST, 2); else if (ore == Material.GOLD_ORE) drop = new CustomItem(SlimefunItems.GOLD_DUST, 2); @@ -1133,10 +1133,11 @@ public final class SlimefunSetup { else if (ore == Material.NETHER_QUARTZ_ORE) drop = new ItemStack(Material.QUARTZ, 4); else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12); else { - for (ItemStack drops: ores.get(0).getBlock().getDrops(effectivePickaxe)) { + for (ItemStack drops : ores.get(0).getBlock().getDrops(effectivePickaxe)) { if (!drops.getType().isBlock()) drop = new CustomItem(drops, 2); } } + final ItemStack adding = drop; ores.get(0).getBlock().setType(Material.AIR); ores.clear(); @@ -2718,14 +2719,7 @@ public final class SlimefunSetup { .register(true, new RainbowTicker(9, 10)); new Teleporter(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_TELEPORTATION_MATRIX, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) { - - @Override - public void onInteract(final Player p, final Block b) { - Slimefun.getGPSNetwork().openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")))); - } - - } + new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) .register(true); new SlimefunItem(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, RecipeType.ENHANCED_CRAFTING_TABLE, diff --git a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 36d907af8..053762c05 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -15,6 +15,7 @@ import io.github.thebusybiscuit.cscorelib2.recipes.RecipeSnapshot; import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils; import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunCommand; import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunTabCompleter; +import io.github.thebusybiscuit.slimefun4.core.hooks.SlimefunHooks; import io.github.thebusybiscuit.slimefun4.core.services.AutoSavingService; import io.github.thebusybiscuit.slimefun4.core.services.BlockDataService; import io.github.thebusybiscuit.slimefun4.core.services.CustomItemDataService; @@ -69,7 +70,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunBackup; import me.mrCookieSlime.Slimefun.api.TickerTask; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; -import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks; import me.mrCookieSlime.Slimefun.listeners.ItemListener; import me.mrCookieSlime.Slimefun.listeners.ToolListener; import me.mrCookieSlime.Slimefun.utils.ConfigCache; diff --git a/src/main/java/me/mrCookieSlime/Slimefun/utils/CategorySorter.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/CategorySorter.java deleted file mode 100644 index 64cf469c4..000000000 --- a/src/main/java/me/mrCookieSlime/Slimefun/utils/CategorySorter.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.mrCookieSlime.Slimefun.utils; - -import java.util.Comparator; - -import me.mrCookieSlime.Slimefun.Objects.Category; - -public class CategorySorter implements Comparator { - - /** - * @since 4.0 - */ - @Override - public int compare(Category c1, Category c2) { - return Integer.compare(c1.getTier(), c2.getTier()); - } - -} \ No newline at end of file diff --git a/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineHelper.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineHelper.java index ba18afb1e..5f62ad458 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineHelper.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineHelper.java @@ -1,26 +1,24 @@ package me.mrCookieSlime.Slimefun.utils; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.ChatColor; -import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; +import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +@Deprecated public final class MachineHelper { private MachineHelper() {} public static String getTimeLeft(int seconds) { String timeleft = ""; - final int minutes = (int) (seconds / 60L); + + int minutes = (int) (seconds / 60L); if (minutes > 0) { timeleft = String.valueOf(timeleft) + minutes + "m "; } + seconds -= minutes * 60; timeleft = String.valueOf(timeleft) + seconds + "s"; return ChatColor.translateAlternateColorCodes('&', "&7" + timeleft + " left"); @@ -82,25 +80,9 @@ public final class MachineHelper { int passed = ((total - time) % 25); return Math.round(((((25 - passed) * 100.0F) / 25) * 100.0F) / 100.0F); } - - public static short getDurability(ItemStack item, int timeleft, int max) { - return (short) ((item.getType().getMaxDurability() / max) * timeleft); - } public static void updateProgressbar(BlockMenu menu, int slot, int timeleft, int time, ItemStack indicator) { - ItemStack item = indicator.clone(); - ItemMeta im = item.getItemMeta(); - im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); - ((Damageable) im).setDamage(getDurability(item, timeleft, time)); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(getProgress(timeleft, time)); - lore.add(""); - lore.add(getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - menu.replaceExistingItem(slot, item); + ChestMenuUtils.updateProgressbar(menu, slot, timeleft, time, indicator); } } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java index 6ebeeacc7..9ec282743 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -65,7 +65,6 @@ public final class Utilities { */ public final List allCategories = new ArrayList<>(); public final List enabledCategories = new ArrayList<>(); - public final CategorySorter categorySorter = new CategorySorter(); public final Set radioactiveItems = new HashSet<>(); public final Map> itemHandlers = new HashMap<>();