mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
A lot more refactoring and cleanup
This commit is contained in:
parent
74f33764ad
commit
1cbe3f9e1f
@ -25,10 +25,13 @@
|
|||||||
## Release Candidate 5 (TBD)
|
## Release Candidate 5 (TBD)
|
||||||
|
|
||||||
### Additions
|
### Additions
|
||||||
|
* Aded preset messages.yml files
|
||||||
* Added user-configurable localization
|
* Added user-configurable localization
|
||||||
|
* Added many more options to the messages.yml
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
* Removed Solar Array
|
* Removed Solar Array
|
||||||
|
* A lot of internal cleanup
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
* Fixed #1355
|
* Fixed #1355
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.hooks;
|
package io.github.thebusybiscuit.slimefun4.core.hooks;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.hooks;
|
package io.github.thebusybiscuit.slimefun4.core.hooks;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.hooks;
|
package io.github.thebusybiscuit.slimefun4.core.hooks;
|
||||||
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.hooks;
|
package io.github.thebusybiscuit.slimefun4.core.hooks;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
@ -1,5 +1,8 @@
|
|||||||
package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -10,8 +13,9 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.Elevator;
|
import me.mrCookieSlime.Slimefun.GPS.Elevator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
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.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
public class TeleporterListener implements Listener {
|
public class TeleporterListener implements Listener {
|
||||||
|
|
||||||
@ -21,7 +25,7 @@ public class TeleporterListener implements Listener {
|
|||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.HIGHEST,ignoreCancelled=true)
|
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled=true)
|
||||||
public void onStarve(PlayerInteractEvent e) {
|
public void onStarve(PlayerInteractEvent e) {
|
||||||
if (e.getAction() != Action.PHYSICAL || e.getClickedBlock() == null) return;
|
if (e.getAction() != Action.PHYSICAL || e.getClickedBlock() == null) return;
|
||||||
|
|
||||||
@ -36,7 +40,9 @@ public class TeleporterListener implements Listener {
|
|||||||
if (!BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN).getRelative(face), "GPS_TELEPORTER_PYLON")) return;
|
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")) {
|
else if (id.equals("ELEVATOR_PLATE")) {
|
||||||
|
@ -1,15 +1,20 @@
|
|||||||
package io.github.thebusybiscuit.slimefun4.utils;
|
package io.github.thebusybiscuit.slimefun4.utils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
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 io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
|
||||||
public final class ChestMenuUtils {
|
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 + ")")));
|
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<String> 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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
@ -72,7 +73,7 @@ public class Category {
|
|||||||
*/
|
*/
|
||||||
public void register() {
|
public void register() {
|
||||||
SlimefunPlugin.getUtilities().allCategories.add(this);
|
SlimefunPlugin.getUtilities().allCategories.add(this);
|
||||||
Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter);
|
Collections.sort(list(), Comparator.comparingInt(Category::getTier));
|
||||||
|
|
||||||
if (this instanceof SeasonalCategory) {
|
if (this instanceof SeasonalCategory) {
|
||||||
if (((SeasonalCategory) this).isUnlocked()) {
|
if (((SeasonalCategory) this).isUnlocked()) {
|
||||||
@ -83,7 +84,7 @@ public class Category {
|
|||||||
SlimefunPlugin.getUtilities().enabledCategories.add(this);
|
SlimefunPlugin.getUtilities().enabledCategories.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, SlimefunPlugin.getUtilities().categorySorter);
|
Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, Comparator.comparingInt(Category::getTier));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -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.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
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.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
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) {
|
public Teleporter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
@ -31,6 +31,4 @@ public abstract class Teleporter extends SlimefunItem {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void onInteract(Player p, Block b);
|
|
||||||
|
|
||||||
}
|
}
|
@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Setup;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.stream.Collectors;
|
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.Talisman;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
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.AdvancedCargoOutputNode;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock;
|
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.geo.OilPump;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.ElevatorPlate;
|
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.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.NetherStarReactor;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors.NuclearReactor;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors.NuclearReactor;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge;
|
||||||
@ -1050,7 +1049,7 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Chest chest = (Chest) chestBlock.getState();
|
Chest chest = (Chest) chestBlock.getState();
|
||||||
final Inventory inv = chest.getInventory();
|
Inventory inv = chest.getInventory();
|
||||||
List<Location> ores = new ArrayList<>();
|
List<Location> ores = new ArrayList<>();
|
||||||
|
|
||||||
for (int x = b.getX() - 4; x <= b.getX() + 4; x++) {
|
for (int x = b.getX() - 4; x <= b.getX() + 4; x++) {
|
||||||
@ -1063,8 +1062,8 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ores.isEmpty()) {
|
if (!ores.isEmpty()) {
|
||||||
final Material ore = ores.get(0).getBlock().getType();
|
Material ore = ores.get(0).getBlock().getType();
|
||||||
final ItemStack adding = new ItemStack(ore);
|
ItemStack adding = new ItemStack(ore);
|
||||||
ores.get(0).getBlock().setType(Material.AIR);
|
ores.get(0).getBlock().setType(Material.AIR);
|
||||||
ores.clear();
|
ores.clear();
|
||||||
if (InvUtils.fits(inv, adding)) {
|
if (InvUtils.fits(inv, adding)) {
|
||||||
@ -1099,7 +1098,7 @@ public final class SlimefunSetup {
|
|||||||
private final ItemStack effectivePickaxe = new ItemStack(Material.DIAMOND_PICKAXE);
|
private final ItemStack effectivePickaxe = new ItemStack(Material.DIAMOND_PICKAXE);
|
||||||
|
|
||||||
@Override
|
@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())) {
|
if (mb.equals(((SlimefunMachine) SlimefunItem.getByID("ADVANCED_DIGITAL_MINER")).getMultiBlock())) {
|
||||||
p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!");
|
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)) {
|
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();
|
Chest chest = (Chest) chestBlock.getState();
|
||||||
final Inventory inv = chest.getInventory();
|
Inventory inv = chest.getInventory();
|
||||||
List<Location> ores = new ArrayList<>();
|
List<Location> ores = new ArrayList<>();
|
||||||
|
|
||||||
for (int x = b.getX() - 6; x <= b.getX() + 6; x++) {
|
for (int x = b.getX() - 6; x <= b.getX() + 6; x++) {
|
||||||
@ -1124,8 +1123,9 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ores.isEmpty()) {
|
if (!ores.isEmpty()) {
|
||||||
final Material ore = ores.get(0).getBlock().getType();
|
Material ore = ores.get(0).getBlock().getType();
|
||||||
ItemStack drop = new ItemStack(ore);
|
ItemStack drop = new ItemStack(ore);
|
||||||
|
|
||||||
if (ore == Material.COAL_ORE) drop = new ItemStack(Material.COAL, 4);
|
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.IRON_ORE) drop = new CustomItem(SlimefunItems.IRON_DUST, 2);
|
||||||
else if (ore == Material.GOLD_ORE) drop = new CustomItem(SlimefunItems.GOLD_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.NETHER_QUARTZ_ORE) drop = new ItemStack(Material.QUARTZ, 4);
|
||||||
else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12);
|
else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12);
|
||||||
else {
|
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);
|
if (!drops.getType().isBlock()) drop = new CustomItem(drops, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final ItemStack adding = drop;
|
final ItemStack adding = drop;
|
||||||
ores.get(0).getBlock().setType(Material.AIR);
|
ores.get(0).getBlock().setType(Material.AIR);
|
||||||
ores.clear();
|
ores.clear();
|
||||||
@ -2718,14 +2719,7 @@ public final class SlimefunSetup {
|
|||||||
.register(true, new RainbowTicker(9, 10));
|
.register(true, new RainbowTicker(9, 10));
|
||||||
|
|
||||||
new Teleporter(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_TELEPORTATION_MATRIX, RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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"))));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
@ -15,6 +15,7 @@ import io.github.thebusybiscuit.cscorelib2.recipes.RecipeSnapshot;
|
|||||||
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
|
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunCommand;
|
import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunCommand;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunTabCompleter;
|
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.AutoSavingService;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.services.BlockDataService;
|
import io.github.thebusybiscuit.slimefun4.core.services.BlockDataService;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.services.CustomItemDataService;
|
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.SlimefunBackup;
|
||||||
import me.mrCookieSlime.Slimefun.api.TickerTask;
|
import me.mrCookieSlime.Slimefun.api.TickerTask;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks;
|
|
||||||
import me.mrCookieSlime.Slimefun.listeners.ItemListener;
|
import me.mrCookieSlime.Slimefun.listeners.ItemListener;
|
||||||
import me.mrCookieSlime.Slimefun.listeners.ToolListener;
|
import me.mrCookieSlime.Slimefun.listeners.ToolListener;
|
||||||
import me.mrCookieSlime.Slimefun.utils.ConfigCache;
|
import me.mrCookieSlime.Slimefun.utils.ConfigCache;
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package me.mrCookieSlime.Slimefun.utils;
|
|
||||||
|
|
||||||
import java.util.Comparator;
|
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
|
||||||
|
|
||||||
public class CategorySorter implements Comparator<Category> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 4.0
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int compare(Category c1, Category c2) {
|
|
||||||
return Integer.compare(c1.getTier(), c2.getTier());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,26 +1,24 @@
|
|||||||
package me.mrCookieSlime.Slimefun.utils;
|
package me.mrCookieSlime.Slimefun.utils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
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;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public final class MachineHelper {
|
public final class MachineHelper {
|
||||||
|
|
||||||
private MachineHelper() {}
|
private MachineHelper() {}
|
||||||
|
|
||||||
public static String getTimeLeft(int seconds) {
|
public static String getTimeLeft(int seconds) {
|
||||||
String timeleft = "";
|
String timeleft = "";
|
||||||
final int minutes = (int) (seconds / 60L);
|
|
||||||
|
int minutes = (int) (seconds / 60L);
|
||||||
if (minutes > 0) {
|
if (minutes > 0) {
|
||||||
timeleft = String.valueOf(timeleft) + minutes + "m ";
|
timeleft = String.valueOf(timeleft) + minutes + "m ";
|
||||||
}
|
}
|
||||||
|
|
||||||
seconds -= minutes * 60;
|
seconds -= minutes * 60;
|
||||||
timeleft = String.valueOf(timeleft) + seconds + "s";
|
timeleft = String.valueOf(timeleft) + seconds + "s";
|
||||||
return ChatColor.translateAlternateColorCodes('&', "&7" + timeleft + " left");
|
return ChatColor.translateAlternateColorCodes('&', "&7" + timeleft + " left");
|
||||||
@ -83,24 +81,8 @@ public final class MachineHelper {
|
|||||||
return Math.round(((((25 - passed) * 100.0F) / 25) * 100.0F) / 100.0F);
|
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) {
|
public static void updateProgressbar(BlockMenu menu, int slot, int timeleft, int time, ItemStack indicator) {
|
||||||
ItemStack item = indicator.clone();
|
ChestMenuUtils.updateProgressbar(menu, slot, timeleft, time, indicator);
|
||||||
ItemMeta im = item.getItemMeta();
|
|
||||||
im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
|
||||||
((Damageable) im).setDamage(getDurability(item, timeleft, time));
|
|
||||||
im.setDisplayName(" ");
|
|
||||||
List<String> 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,6 @@ public final class Utilities {
|
|||||||
*/
|
*/
|
||||||
public final List<Category> allCategories = new ArrayList<>();
|
public final List<Category> allCategories = new ArrayList<>();
|
||||||
public final List<Category> enabledCategories = new ArrayList<>();
|
public final List<Category> enabledCategories = new ArrayList<>();
|
||||||
public final CategorySorter categorySorter = new CategorySorter();
|
|
||||||
|
|
||||||
public final Set<ItemStack> radioactiveItems = new HashSet<>();
|
public final Set<ItemStack> radioactiveItems = new HashSet<>();
|
||||||
public final Map<String, Set<ItemHandler>> itemHandlers = new HashMap<>();
|
public final Map<String, Set<ItemHandler>> itemHandlers = new HashMap<>();
|
||||||
|
Loading…
Reference in New Issue
Block a user