1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-21 20:25:54 +00:00
Slimefun4/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java

133 lines
4.6 KiB
Java
Raw Normal View History

2016-04-14 16:24:03 +00:00
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import java.util.ArrayList;
import java.util.List;
2016-05-18 17:04:27 +00:00
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
2016-05-18 17:04:27 +00:00
import org.bukkit.inventory.meta.ItemMeta;
2016-04-14 16:24:03 +00:00
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
2016-05-18 17:04:27 +00:00
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
2016-04-14 16:24:03 +00:00
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
import me.mrCookieSlime.Slimefun.Setup.Messages;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
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 OilPump extends AContainer {
public OilPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, name, recipeType, recipe);
new BlockMenuPreset(name, getInventoryTitle()) {
@Override
public void init() {
constructMenu(this);
}
@Override
public void newInstance(BlockMenu menu, Block b) {
}
@Override
public boolean canOpen(Block b, Player p) {
if (!(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true))) {
return false;
}
2016-05-18 17:04:27 +00:00
if (!OreGenSystem.wasResourceGenerated(OreGenSystem.getResource("Oil"), b.getChunk())) {
2016-04-14 16:24:03 +00:00
Messages.local.sendTranslation(p, "gps.geo.scan-required", true);
return false;
}
return true;
}
@Override
public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) {
2019-08-29 17:12:53 +00:00
if (flow == ItemTransportFlow.INSERT) return getInputSlots();
2016-04-14 16:24:03 +00:00
else return getOutputSlots();
}
};
}
@Override
public String getMachineIdentifier() {
return "OIL_PUMP";
}
@Override
public String getInventoryTitle() {
2016-11-23 15:51:57 +00:00
return "&4Oil Pump";
2016-04-14 16:24:03 +00:00
}
@Override
public ItemStack getProgressBar() {
2018-09-04 16:54:12 +00:00
return new ItemStack(Material.DIAMOND_SHOVEL);
2016-04-14 16:24:03 +00:00
}
@Override
public void registerDefaultRecipes() {}
2019-08-29 23:40:18 +00:00
@Override
2016-04-14 16:24:03 +00:00
protected void tick(Block b) {
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
ItemStack item = getProgressBar().clone();
ItemMeta im = item.getItemMeta();
2019-03-27 20:18:59 +00:00
((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks()));
2016-04-14 16:24:03 +00:00
im.setDisplayName(" ");
2019-08-28 08:59:20 +00:00
List<String> lore = new ArrayList<>();
2016-04-14 16:24:03 +00:00
lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks()));
lore.add("");
lore.add(MachineHelper.getTimeLeft(timeleft / 2));
im.setLore(lore);
item.setItemMeta(im);
BlockStorage.getInventory(b).replaceExistingItem(22, item);
2016-05-09 17:51:04 +00:00
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
ChargableBlock.addCharge(b, -getEnergyConsumption());
progress.put(b, timeleft - 1);
2016-04-14 16:24:03 +00:00
}
else {
2018-09-05 16:36:32 +00:00
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
2016-04-14 16:24:03 +00:00
pushItems(b, processing.get(b).getOutput());
progress.remove(b);
processing.remove(b);
}
}
2016-05-18 17:04:27 +00:00
else if (OreGenSystem.getSupplies(OreGenSystem.getResource("Oil"), b.getChunk(), false) > 0) {
2016-04-14 16:24:03 +00:00
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
MachineRecipe r = new MachineRecipe(26, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_OIL});
if (!fits(b, r.getOutput())) return;
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
processing.put(b, r);
progress.put(b, r.getTicks());
2016-05-18 17:04:27 +00:00
OreGenSystem.setSupplies(OreGenSystem.getResource("Oil"), b.getChunk(), OreGenSystem.getSupplies(OreGenSystem.getResource("Oil"), b.getChunk(), false) - 1);
2016-04-14 16:24:03 +00:00
break;
}
}
}
}
}