mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
Fixes #1366
This commit is contained in:
parent
626a2ebdaf
commit
b94121e55b
@ -36,6 +36,7 @@
|
||||
### Fixes
|
||||
* Fixed #1355
|
||||
* Fixed Localization mistakes
|
||||
* Fixed #1366
|
||||
|
||||
## Release Candidate 4 (06 Jan 2020)
|
||||
https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#4
|
||||
|
@ -11,6 +11,7 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
@ -60,10 +61,12 @@ public class BackpackListener implements Listener {
|
||||
|
||||
if (item != null) {
|
||||
if (e.getClick() == ClickType.NUMBER_KEY) {
|
||||
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
|
||||
|
||||
if ((hotbarItem != null && hotbarItem.getType().toString().contains("SHULKER_BOX")) || SlimefunItem.getByItem(hotbarItem) instanceof SlimefunBackpack) {
|
||||
e.setCancelled(true);
|
||||
if (e.getClickedInventory().getType() != InventoryType.PLAYER) {
|
||||
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
|
||||
|
||||
if (hotbarItem != null && (hotbarItem.getType().toString().contains("SHULKER_BOX") || SlimefunItem.getByItem(hotbarItem) instanceof SlimefunBackpack)) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (e.getCurrentItem() != null && e.getCurrentItem().getType() != Material.AIR) {
|
||||
|
@ -4,7 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
@ -69,25 +69,13 @@ public class Smeltery extends MultiBlockMachine {
|
||||
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);
|
||||
|
||||
for (int i = 0; i < inputs.size(); i++) {
|
||||
boolean craft = true;
|
||||
for (ItemStack converting: inputs.get(i)) {
|
||||
if (converting != null) {
|
||||
for (int j = 0; j < inv.getContents().length; j++) {
|
||||
if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimilar(converting, inv.getContents()[j], true)) {
|
||||
craft = false;
|
||||
break;
|
||||
}
|
||||
else if (SlimefunManager.isItemSimilar(inv.getContents()[j], converting, true)) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (craft) {
|
||||
if (canCraft(inv, inputs, i)) {
|
||||
ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
|
||||
if (Slimefun.hasUnlocked(p, adding, true)) {
|
||||
Inventory outputInv = findOutputInventory(adding, dispBlock, inv);
|
||||
|
||||
if (outputInv != null) {
|
||||
for (ItemStack removing: inputs.get(i)) {
|
||||
for (ItemStack removing : inputs.get(i)) {
|
||||
if (removing != null) {
|
||||
InvUtils.removeItem(inv, removing.getAmount(), true, stack -> SlimefunManager.isItemSimilar(stack, removing, true));
|
||||
}
|
||||
@ -99,7 +87,7 @@ public class Smeltery extends MultiBlockMachine {
|
||||
|
||||
Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST);
|
||||
|
||||
if (new Random().nextInt(100) < SlimefunPlugin.getSettings().smelteryFireBreakChance) {
|
||||
if (ThreadLocalRandom.current().nextInt(100) < SlimefunPlugin.getSettings().smelteryFireBreakChance) {
|
||||
if (chamber != null) {
|
||||
if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) {
|
||||
ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL));
|
||||
@ -138,8 +126,23 @@ public class Smeltery extends MultiBlockMachine {
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "machines.pattern-not-found", true);
|
||||
}
|
||||
|
||||
private boolean canCraft(Inventory inv, List<ItemStack[]> inputs, int i) {
|
||||
for (ItemStack converting : inputs.get(i)) {
|
||||
if (converting != null) {
|
||||
for (int j = 0; j < inv.getContents().length; j++) {
|
||||
if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimilar(converting, inv.getContents()[j], true)) {
|
||||
return false;
|
||||
}
|
||||
else if (SlimefunManager.isItemSimilar(inv.getContents()[j], converting, true)) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private Hopper findHopper(Block b, BlockFace... faces) {
|
||||
for (BlockFace face: faces) {
|
||||
for (BlockFace face : faces) {
|
||||
if (b.getRelative(face).getType() == Material.HOPPER && BlockStorage.check(b.getRelative(face), "IGNITION_CHAMBER")) {
|
||||
return (Hopper) b.getRelative(face).getState();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user