1
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:
TheBusyBiscuit 2020-01-12 01:44:57 +01:00
parent 74f33764ad
commit 1cbe3f9e1f
17 changed files with 105 additions and 393 deletions

View File

@ -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

View File

@ -1,4 +1,4 @@
package me.mrCookieSlime.Slimefun.hooks;
package io.github.thebusybiscuit.slimefun4.core.hooks;
import java.util.Iterator;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package me.mrCookieSlime.Slimefun.hooks;
package io.github.thebusybiscuit.slimefun4.core.hooks;
import java.util.logging.Level;

View File

@ -1,4 +1,4 @@
package me.mrCookieSlime.Slimefun.hooks;
package io.github.thebusybiscuit.slimefun4.core.hooks;
import org.bukkit.Bukkit;
import org.bukkit.Location;

View File

@ -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")) {

View File

@ -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<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);
}
}

View File

@ -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));
}
/**

View File

@ -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);
}
}
}

View File

@ -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;
}
});
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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<Location> 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<Location> 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,

View File

@ -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;

View File

@ -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());
}
}

View File

@ -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<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);
ChestMenuUtils.updateProgressbar(menu, slot, timeleft, time, indicator);
}
}

View File

@ -65,7 +65,6 @@ public final class Utilities {
*/
public final List<Category> allCategories = new ArrayList<>();
public final List<Category> enabledCategories = new ArrayList<>();
public final CategorySorter categorySorter = new CategorySorter();
public final Set<ItemStack> radioactiveItems = new HashSet<>();
public final Map<String, Set<ItemHandler>> itemHandlers = new HashMap<>();