Skip to content

Commit

Permalink
Some optimizations
Browse files Browse the repository at this point in the history
  • Loading branch information
EpicPlayerA10 committed Jul 12, 2021
1 parent 962833b commit b9420da
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState;
import org.bukkit.block.Container;
import org.bukkit.block.Dispenser;
import org.bukkit.entity.Player;
Expand All @@ -31,6 +32,8 @@
import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.OutputChest;
import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils;

import io.papermc.lib.PaperLib;

import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
Expand Down Expand Up @@ -173,22 +176,25 @@ public void load() {
*
* @param outputItem
* A crafted {@link ItemStack} from {@link MultiBlockMachine}
* @param container
* Our main {@link Container} from {@link MultiBlockMachine}
* @param block
* Main {@link Block} of our {@link Container} from {@link MultiBlockMachine}
*
*/
@ParametersAreNonnullByDefault
protected void handleCraftedItem(ItemStack outputItem, Container container) {
protected void handleCraftedItem(ItemStack outputItem, Block block) {
BlockState state = PaperLib.getBlockState(block, false).getState();
Validate.isTrue(state instanceof Container);
Container container = (Container) state;
Inventory containerInv = container.getInventory();
Inventory outputInv = findOutputInventory(outputItem, container.getBlock(), containerInv);
Inventory outputInv = findOutputInventory(outputItem, block, containerInv);

if (outputInv != null) {
outputInv.addItem(outputItem);
} else if (InvUtils.fits(containerInv, outputItem)) {
containerInv.addItem(outputItem);
} else {
// fallback
SlimefunUtils.spawnItem(container.getLocation(), outputItem, ItemSpawnReason.MULTIBLOCK_MACHINE_OVERFLOW, true);
SlimefunUtils.spawnItem(block.getLocation(), outputItem, ItemSpawnReason.MULTIBLOCK_MACHINE_OVERFLOW, true);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void onInteract(Player p, Block b) {
ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();

if (SlimefunUtils.canPlayerUseItem(p, output, true)) {
craft(p, output, inv, disp);
craft(p, output, inv, dispenser);
}

return;
Expand All @@ -70,9 +70,9 @@ private boolean isCraftable(Inventory inv, ItemStack[] recipe) {
}

@ParametersAreNonnullByDefault
private void craft(Player p, ItemStack output, Inventory inv, Dispenser dispenser) {
private void craft(Player p, ItemStack output, Inventory inv, Block dispenser) {
Inventory fakeInv = createVirtualInventory(inv);
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), inv, fakeInv);
Inventory outputInv = findOutputInventory(output, dispenser, inv, fakeInv);

if (outputInv != null) {
for (int j = 0; j < 9; j++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public void onInteract(Player p, Block b) {
removing.setAmount(recipeInput.getAmount());
inv.removeItem(removing);

craft(p, output, disp);
craft(p, output, dispBlock);
} else {
SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true);
}
Expand All @@ -87,7 +87,7 @@ public void onInteract(Player p, Block b) {
}

@ParametersAreNonnullByDefault
private void craft(Player p, ItemStack output, Dispenser dispenser) {
private void craft(Player p, ItemStack output, Block dispenser) {
for (int i = 0; i < 4; i++) {
int j = i;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void onInteract(Player p, Block b) {
ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();

if (SlimefunUtils.canPlayerUseItem(p, output, true)) {
craft(inv, disp, p, b, output);
craft(inv, dispenser, p, b, output);
}

return;
Expand All @@ -69,9 +69,9 @@ public void onInteract(Player p, Block b) {
}

@ParametersAreNonnullByDefault
private void craft(Inventory inv, Dispenser dispenser, Player p, Block b, ItemStack output) {
private void craft(Inventory inv, Block dispenser, Player p, Block b, ItemStack output) {
Inventory fakeInv = createVirtualInventory(inv);
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), inv, fakeInv);
Inventory outputInv = findOutputInventory(output, dispenser, inv, fakeInv);

if (outputInv != null) {
SlimefunItem sfItem = SlimefunItem.getByItem(output);
Expand All @@ -90,18 +90,19 @@ private void craft(Inventory inv, Dispenser dispenser, Player p, Block b, ItemSt
}
}

startAnimation(p, b, output, dispenser);
startAnimation(p, b, dispenser, output);
} else {
SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true);
}
}

private void startAnimation(Player p, Block b, ItemStack output, Dispenser dispenser) {
private void startAnimation(Player p, Block b, Block dispenser, ItemStack output) {
for (int j = 0; j < 4; j++) {
int current = j;
SlimefunPlugin.runSync(() -> {
p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
p.getWorld().playEffect(b.getLocation(), Effect.ENDER_SIGNAL, 1);

if (current < 3) {
p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1F, 1F);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void onInteract(Player p, Block b) {
removing.setAmount(convert.getAmount());
inv.removeItem(removing);

craft(p, b, output, disp);
craft(p, b, output, dispBlock);
} else {
SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true);
}
Expand All @@ -71,7 +71,7 @@ public void onInteract(Player p, Block b) {
}

@ParametersAreNonnullByDefault
private void craft(Player p, Block b, ItemStack output, Dispenser dispenser) {
private void craft(Player p, Block b, ItemStack output, Block dispenser) {
for (int i = 0; i < 4; i++) {
int j = i;

Expand Down

0 comments on commit b9420da

Please sign in to comment.