1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Refactoring, lots of refactoring

This commit is contained in:
TheBusyBiscuit 2020-01-12 02:05:33 +01:00
parent 1cbe3f9e1f
commit 626a2ebdaf
23 changed files with 195 additions and 148 deletions

View File

@ -0,0 +1,109 @@
package io.github.thebusybiscuit.slimefun4.implementation.listeners;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Skull;
import org.bukkit.block.data.Rotatable;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.cscorelib2.skull.SkullBlock;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
public class DebugFishListener implements Listener {
public DebugFishListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler
public void onDebug(PlayerInteractEvent e) {
if (e.getAction() == Action.PHYSICAL || e.getHand() != EquipmentSlot.HAND) return;
Player p = e.getPlayer();
if (SlimefunManager.isItemSimilar(e.getItem(), SlimefunItems.DEBUG_FISH, true)) {
e.setCancelled(true);
if (p.isOp()) {
switch (e.getAction()) {
case LEFT_CLICK_BLOCK:
if (p.isSneaking()) {
if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
BlockStorage.clearBlockInfo(e.getClickedBlock());
}
}
else e.setCancelled(false);
break;
case RIGHT_CLICK_BLOCK:
if (p.isSneaking()) {
Block b = e.getClickedBlock().getRelative(e.getBlockFace());
b.setType(Material.PLAYER_HEAD);
SkullBlock.setFromBase64(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTllYjlkYTI2Y2YyZDMzNDEzOTdhN2Y0OTEzYmEzZDM3ZDFhZDEwZWFlMzBhYjI1ZmEzOWNlYjg0YmMifX19");
}
else if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
p.sendMessage(" ");
p.sendMessage(ChatColors.color("&d" + e.getClickedBlock().getType() + " &e@ X: " + e.getClickedBlock().getX() + " Y: " + e.getClickedBlock().getY() + " Z: " + e.getClickedBlock().getZ()));
p.sendMessage(ChatColors.color("&dID: " + "&e" + BlockStorage.checkID(e.getClickedBlock())));
if (e.getClickedBlock().getState() instanceof Skull) {
p.sendMessage(ChatColors.color("&dSkull: " + "&2\u2714"));
p.sendMessage(ChatColors.color(" &dRotation: &e" + ((Rotatable) e.getClickedBlock().getBlockData()).getRotation().toString()));
}
if (BlockStorage.getStorage(e.getClickedBlock().getWorld()).hasInventory(e.getClickedBlock().getLocation())) {
p.sendMessage(ChatColors.color("&dInventory: " + "&2\u2714"));
}
else {
p.sendMessage(ChatColors.color("&dInventory: " + "&4\u2718"));
}
if (BlockStorage.check(e.getClickedBlock()).isTicking()) {
p.sendMessage(ChatColors.color("&dTicking: " + "&2\u2714"));
p.sendMessage(ChatColors.color(" &dAsync: &e" + (BlockStorage.check(e.getClickedBlock()).getBlockTicker().isSynchronized() ? "&4\u2718": "&2\u2714")));
p.sendMessage(ChatColors.color(" &dTimings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock()) + "ms"));
p.sendMessage(ChatColors.color(" &dTotal Timings: &e" + SlimefunPlugin.getTicker().getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms"));
p.sendMessage(ChatColors.color(" &dChunk Timings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock().getChunk()) + "ms"));
}
else if (BlockStorage.check(e.getClickedBlock()).getEnergyTicker() != null) {
p.sendMessage(ChatColors.color("&dTicking: " + "&b~ &3(Indirect)"));
p.sendMessage(ChatColors.color(" &dTimings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock()) + "ms"));
p.sendMessage(ChatColors.color(" &dChunk Timings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock().getChunk()) + "ms"));
}
else {
p.sendMessage(ChatColors.color("&dTicking: " + "&4\u2718"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&',"&dTicking: " + "&4\u2718"));
}
if (ChargableBlock.isChargable(e.getClickedBlock())) {
p.sendMessage(ChatColors.color("&dChargable: " + "&2\u2714"));
p.sendMessage(ChatColors.color(" &dEnergy: &e" + ChargableBlock.getCharge(e.getClickedBlock()) + " / " + ChargableBlock.getMaxCharge(e.getClickedBlock())));
}
else {
p.sendMessage(ChatColors.color("&dChargable: " + "&4\u2718"));
}
p.sendMessage(ChatColors.color("&6" + BlockStorage.getBlockInfoAsJson(e.getClickedBlock())));
p.sendMessage(" ");
}
break;
default:
break;
}
}
}
}
}

View File

@ -27,7 +27,6 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
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.utils.MachineHelper;
public abstract class AContainer extends SlimefunItem implements InventoryBlock {
@ -182,8 +181,9 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(inv, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(inv, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -193,7 +193,7 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
else progress.put(b, timeleft - 1);
}
else {
inv.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
inv.replaceExistingItem(22, new CustomItem(Material.BLACK_STAINED_GLASS_PANE, " "));
for (ItemStack output : processing.get(b).getOutput()) {
inv.pushItem(output.clone(), getOutputSlots());

View File

@ -37,7 +37,6 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
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;
public abstract class AGenerator extends SlimefunItem implements RecipeDisplayItem {
@ -170,8 +169,9 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
BlockMenu inv = BlockStorage.getInventory(l);
if (isProcessing(l)) {
int timeleft = progress.get(l);
if (timeleft > 0) {
MachineHelper.updateProgressbar(inv, 22, timeleft, processing.get(l).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(inv, 22, timeleft, processing.get(l).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(l)) {
if (ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l) >= getEnergyProduction()) {

View File

@ -256,9 +256,11 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
if (isProcessing(l)) {
extraTick(l);
int timeleft = progress.get(l);
if (timeleft > 0) {
int produced = getEnergyProduction();
int space = ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l);
if (space >= produced) {
ChargableBlock.addCharge(l, getEnergyProduction());
space -= produced;
@ -270,7 +272,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
if (!l.getBlock().getRelative(cooling[ThreadLocalRandom.current().nextInt(cooling.length)]).isLiquid()) explode.add(l);
});
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(l).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(l).getTicks(), getProgressBar());
if (needsCooling()) {
boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0;

View File

@ -46,17 +46,19 @@ public class CargoManagerBlock extends SlimefunItem {
@Override
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) {
if (e.getClickedBlock() == null) return false;
String item = BlockStorage.checkID(e.getClickedBlock());
Block b = e.getClickedBlock();
if (b == null) return false;
String item = BlockStorage.checkID(b);
if (item == null || !item.equals(getID())) return false;
e.setCancelled(true);
if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) {
BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled");
if (BlockStorage.getLocationInfo(b.getLocation(), "visualizer") == null) {
BlockStorage.addBlockInfo(b, "visualizer", "disabled");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718"));
}
else {
BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null);
BlockStorage.addBlockInfo(b, "visualizer", null);
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714"));
}
return true;

View File

@ -5,6 +5,7 @@ import java.util.List;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet;
@ -57,16 +58,19 @@ public class GoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implemen
public ItemInteractionHandler getItemHandler() {
return (e, p, item) -> {
if (isItem(item)) {
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
Block b = e.getClickedBlock();
if (b != null && b.getType() == Material.GRAVEL && SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.BREAK_BLOCK)) {
ItemStack output = randomizer.getRandom();
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
e.getClickedBlock().setType(Material.AIR);
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
b.setType(Material.AIR);
if (output.getType() != Material.AIR) {
e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), output.clone());
b.getWorld().dropItemNaturally(b.getLocation(), output.clone());
}
}
e.setCancelled(true);
return true;
}

View File

@ -25,8 +25,10 @@ public class InfernalBonemeal extends SimpleSlimefunItem<ItemInteractionHandler>
return (e, p, item) -> {
if (isItem(item)) {
Block b = e.getClickedBlock();
if (b != null && b.getType() == Material.NETHER_WART) {
Ageable ageable = (Ageable) b.getBlockData();
if (ageable.getAge() < ageable.getMaximumAge()) {
ageable.setAge(ageable.getMaximumAge());
b.setBlockData(ageable);

View File

@ -7,6 +7,7 @@ import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -17,7 +18,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public abstract class AutoAnvil extends AContainer {
@ -53,8 +53,9 @@ public abstract class AutoAnvil extends AContainer {
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;

View File

@ -16,6 +16,7 @@ import org.bukkit.inventory.meta.Repairable;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.api.events.AutoDisenchantEvent;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
@ -28,7 +29,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public class AutoDisenchanter extends AContainer {
@ -58,7 +58,7 @@ public class AutoDisenchanter extends AContainer {
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;

View File

@ -9,6 +9,7 @@ import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -20,7 +21,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public class AutoDrier extends AContainer implements RecipeDisplayItem {
@ -91,7 +91,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;

View File

@ -12,6 +12,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
@ -24,7 +25,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public class AutoEnchanter extends AContainer {
@ -52,8 +52,9 @@ public class AutoEnchanter extends AContainer {
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -114,7 +115,7 @@ public class AutoEnchanter extends AContainer {
newItem.addUnsafeEnchantment(entry.getKey(), entry.getValue());
}
for (ItemEnchantment ench: emeraldEnchantments) {
for (ItemEnchantment ench : emeraldEnchantments) {
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, ench.getEnchantment(), ench.getLevel());
}

View File

@ -1,12 +1,13 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
@ -18,7 +19,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public abstract class ElectricDustWasher extends AContainer {
@ -41,10 +41,12 @@ public abstract class ElectricDustWasher extends AContainer {
@Override
protected void tick(Block b) {
BlockMenu menu = BlockStorage.getInventory(b);
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0 && getSpeed() < 10) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -81,10 +83,10 @@ public abstract class ElectricDustWasher extends AContainer {
if (!emptySlot) return;
}
ItemStack adding = items[new Random().nextInt(items.length)];
ItemStack adding = items[ThreadLocalRandom.current().nextInt(items.length)];
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
if (SlimefunPlugin.getSettings().legacyDustWasher && !menu.fits(r.getOutput()[0], getOutputSlots())) return;
menu.consumeItem(slot);
menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
@ -92,7 +94,7 @@ public abstract class ElectricDustWasher extends AContainer {
else if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), SlimefunItems.PULVERIZED_ORE, true)) {
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER});
if (!menu.fits(r.getOutput()[0], getOutputSlots())) return;
menu.consumeItem(slot);
menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;

View File

@ -9,6 +9,7 @@ import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -21,7 +22,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem {
@ -90,10 +90,12 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
@Override
protected void tick(Block b) {
BlockMenu menu = BlockStorage.getInventory(b);
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0 && getSpeed() < 10) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -120,8 +122,8 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
MachineRecipe r = new MachineRecipe(3 / getSpeed(), new ItemStack[0], new ItemStack[] {output});
if (!menu.fits(output, getOutputSlots())) return;
menu.consumeItem(slot);
menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
@ -131,8 +133,8 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {output});
if (!menu.fits(output, getOutputSlots())) return;
menu.consumeItem(slot);
menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;

View File

@ -14,6 +14,7 @@ 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.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -31,7 +32,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.inventory.DirtyChestMenu;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public abstract class HeatedPressureChamber extends AContainer {
@ -146,7 +146,7 @@ public abstract class HeatedPressureChamber extends AContainer {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;

View File

@ -7,8 +7,8 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -20,7 +20,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
@ -56,7 +55,7 @@ public abstract class Refinery extends AContainer implements RecipeDisplayItem {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.isChargable(b)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -81,7 +80,7 @@ public abstract class Refinery extends AContainer implements RecipeDisplayItem {
if (!menu.fits(SlimefunItems.BUCKET_OF_FUEL, getOutputSlots())) return;
ItemUtils.consumeItem(menu.getItemInSlot(slot), false);
menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;

View File

@ -10,6 +10,7 @@ import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -134,34 +135,20 @@ public class WitherAssembler extends SlimefunItem {
private void constructMenu(BlockMenuPreset preset) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
(p, slot, item, action) -> false
);
preset.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
}
for (int i : border_1) {
preset.addItem(i, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
(p, slot, item, action) -> false
);
preset.addItem(i, new CustomItem(Material.BLACK_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler());
}
for (int i : border_2) {
preset.addItem(i, new CustomItem(new ItemStack(Material.BROWN_STAINED_GLASS_PANE), " "),
(p, slot, item, action) -> false
);
preset.addItem(i, new CustomItem(Material.BROWN_STAINED_GLASS_PANE, " "), ChestMenuUtils.getEmptyClickHandler());
}
preset.addItem(1, new CustomItem(new ItemStack(Material.WITHER_SKELETON_SKULL, (byte) 1), "&7Wither Skull Slot", "", "&rThis Slot accepts Wither Skeleton Skulls"),
(p, slot, item, action) -> false
);
preset.addItem(7, new CustomItem(new ItemStack(Material.SOUL_SAND), "&7Soul Sand Slot", "", "&rThis Slot accepts Soul Sand"),
(p, slot, item, action) -> false
);
preset.addItem(13, new CustomItem(new ItemStack(Material.CLOCK), "&7Cooldown: &b30 Seconds", "", "&rThis Machine takes up to half a Minute to operate", "&rso give it some Time!"),
(p, slot, item, action) -> false
);
preset.addItem(1, new CustomItem(Material.WITHER_SKELETON_SKULL, "&7Wither Skull Slot", "", "&rThis Slot accepts Wither Skeleton Skulls"), ChestMenuUtils.getEmptyClickHandler());
preset.addItem(7, new CustomItem(Material.SOUL_SAND, "&7Soul Sand Slot", "", "&rThis Slot accepts Soul Sand"), ChestMenuUtils.getEmptyClickHandler());
preset.addItem(13, new CustomItem(Material.CLOCK, "&7Cooldown: &b30 Seconds", "", "&rThis Machine takes up to half a Minute to operate", "&rso give it some Time!"), ChestMenuUtils.getEmptyClickHandler());
}
public int[] getInputSlots() {
@ -183,6 +170,7 @@ public class WitherAssembler extends SlimefunItem {
@Override
public void tick(Block b, SlimefunItem sf, Config data) {
if (BlockStorage.getLocationInfo(b.getLocation(), "enabled").equals("false")) return;
if (lifetime % 60 == 0) {
if (ChargableBlock.getCharge(b) < energyConsumption) return;
@ -194,6 +182,7 @@ public class WitherAssembler extends SlimefunItem {
for (int slot : getSoulSandSlots()) {
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
soulsand = soulsand + menu.getItemInSlot(slot).getAmount();
if (soulsand > 3) {
soulsand = 4;
break;
@ -204,6 +193,7 @@ public class WitherAssembler extends SlimefunItem {
for (int slot : getWitherSkullSlots()) {
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
skulls = skulls + menu.getItemInSlot(slot).getAmount();
if (skulls > 2) {
skulls = 3;
break;

View File

@ -32,6 +32,7 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
public XPCollector(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, recipeType, recipe);
createPreset(this, "&aEXP Collector", this::constructMenu);
registerBlockHandler(getID(), new SlimefunBlockHandler() {

View File

@ -11,6 +11,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
import io.github.thebusybiscuit.slimefun4.utils.holograms.SimpleHologram;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
@ -30,7 +31,6 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
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.utils.MachineHelper;
public abstract class GEOMiner extends AContainer implements InventoryBlock, RecipeDisplayItem {
@ -159,8 +159,9 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(menu, 4, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(menu, 4, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
ChargableBlock.addCharge(b, -getEnergyConsumption());

View File

@ -11,6 +11,7 @@ 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.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
@ -27,7 +28,6 @@ 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;
public abstract class OilPump extends AContainer implements RecipeDisplayItem {
@ -88,8 +88,9 @@ public abstract class OilPump extends AContainer implements RecipeDisplayItem {
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
MachineHelper.updateProgressbar(inv, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
ChestMenuUtils.updateProgressbar(inv, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
ChargableBlock.addCharge(b, -getEnergyConsumption());

View File

@ -43,13 +43,14 @@ public class ElevatorPlate extends SimpleSlimefunItem<ItemInteractionHandler> {
@Override
public ItemInteractionHandler getItemHandler() {
return (e, p, item) -> {
if (e.getClickedBlock() == null) return false;
Block b = e.getClickedBlock();
if (b == null) return false;
String id = BlockStorage.checkID(e.getClickedBlock());
String id = BlockStorage.checkID(b);
if (id == null || !id.equals(getID())) return false;
if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) {
Elevator.openEditor(p, e.getClickedBlock());
if (BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString())) {
Elevator.openEditor(p, b);
}
return true;

View File

@ -35,6 +35,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.listeners.BlockListener
import io.github.thebusybiscuit.slimefun4.implementation.listeners.CoolerListener;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DamageListener;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DeathpointListener;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DebugFishListener;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.EnhancedFurnaceListener;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.ExplosionsListener;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.GearListener;
@ -227,6 +228,7 @@ public final class SlimefunPlugin extends JavaPlugin {
new ItemPickupListener(this);
new DeathpointListener(this);
new ExplosionsListener(this);
new DebugFishListener(this);
// Toggleable Listeners for performance
if (config.getBoolean("items.talismans")) new TalismanListener(this);

View File

@ -1024,6 +1024,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
public void addItems(Block b, ItemStack... items) {
BlockMenu inv = BlockStorage.getInventory(b);
for (ItemStack item : items) {
inv.pushItem(item, getOutputSlots());
}

View File

@ -9,8 +9,6 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BrewingStand;
import org.bukkit.block.Hopper;
import org.bukkit.block.Skull;
import org.bukkit.block.data.Rotatable;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.IronGolem;
import org.bukkit.entity.Player;
@ -33,13 +31,13 @@ import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.inventory.BrewerInventory;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import io.github.thebusybiscuit.cscorelib2.skull.SkullBlock;
import io.github.thebusybiscuit.slimefun4.core.guide.GuideSettings;
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BackpackListener;
@ -58,7 +56,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
@ -76,7 +73,9 @@ public class ItemListener implements Listener {
@EventHandler
public void onIgnitionChamberItemMove(InventoryMoveItemEvent e) {
if (e.getInitiator().getHolder() instanceof Hopper && BlockStorage.check(((Hopper) e.getInitiator().getHolder()).getBlock(), "IGNITION_CHAMBER")) {
InventoryHolder holder = e.getInitiator().getHolder();
if (holder instanceof Hopper && BlockStorage.check(((Hopper) holder).getBlock(), "IGNITION_CHAMBER")) {
e.setCancelled(true);
}
}
@ -119,79 +118,6 @@ public class ItemListener implements Listener {
}
}
@EventHandler
public void debug(PlayerInteractEvent e) {
if (e.getAction() == Action.PHYSICAL || e.getHand() != EquipmentSlot.HAND) return;
Player p = e.getPlayer();
if (SlimefunManager.isItemSimilar(e.getItem(), SlimefunItems.DEBUG_FISH, true)) {
e.setCancelled(true);
if (p.isOp()) {
switch (e.getAction()) {
case LEFT_CLICK_BLOCK:
if (p.isSneaking()) {
if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
BlockStorage.clearBlockInfo(e.getClickedBlock());
}
}
else e.setCancelled(false);
break;
case RIGHT_CLICK_BLOCK:
if (p.isSneaking()) {
Block b = e.getClickedBlock().getRelative(e.getBlockFace());
b.setType(Material.PLAYER_HEAD);
SkullBlock.setFromBase64(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTllYjlkYTI2Y2YyZDMzNDEzOTdhN2Y0OTEzYmEzZDM3ZDFhZDEwZWFlMzBhYjI1ZmEzOWNlYjg0YmMifX19");
}
else if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
p.sendMessage(" ");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&d" + e.getClickedBlock().getType() + " &e@ X: " + e.getClickedBlock().getX() + " Y: " + e.getClickedBlock().getY() + " Z: " + e.getClickedBlock().getZ()));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dID: " + "&e" + BlockStorage.checkID(e.getClickedBlock())));
if (e.getClickedBlock().getState() instanceof Skull) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dSkull: " + "&2\u2714"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dRotation: &e" + ((Rotatable) e.getClickedBlock().getBlockData()).getRotation().toString()));
}
if (BlockStorage.getStorage(e.getClickedBlock().getWorld()).hasInventory(e.getClickedBlock().getLocation())) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dInventory: " + "&2\u2714"));
}
else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dInventory: " + "&4\u2718"));
}
if (BlockStorage.check(e.getClickedBlock()).isTicking()) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&2\u2714"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dAsync: &e" + (BlockStorage.check(e.getClickedBlock()).getBlockTicker().isSynchronized() ? "&4\u2718": "&2\u2714")));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock()) + "ms"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTotal Timings: &e" + SlimefunPlugin.getTicker().getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock().getChunk()) + "ms"));
}
else if (BlockStorage.check(e.getClickedBlock()).getEnergyTicker() != null) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&b~ &3(Indirect)"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock()) + "ms"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock().getChunk()) + "ms"));
}
else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&4\u2718"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&',"&dTicking: " + "&4\u2718"));
}
if (ChargableBlock.isChargable(e.getClickedBlock())) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dChargable: " + "&2\u2714"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dEnergy: &e" + ChargableBlock.getCharge(e.getClickedBlock()) + " / " + ChargableBlock.getMaxCharge(e.getClickedBlock())));
}
else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dChargable: " + "&4\u2718"));
}
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6" + BlockStorage.getBlockInfoAsJson(e.getClickedBlock())));
p.sendMessage(" ");
}
break;
default:
break;
}
}
}
}
@EventHandler
public void onBucketUse(PlayerBucketEmptyEvent e) {
// Fix for placing water on player heads