类org.bukkit.inventory.FurnaceInventory源码实例Demo

下面列出了怎么用org.bukkit.inventory.FurnaceInventory的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Kettle   文件: CraftFurnace.java
@Override
public FurnaceInventory getInventory() {
    if (!this.isPlaced()) {
        return this.getSnapshotInventory();
    }

    return new CraftInventoryFurnace(this.getTileEntity());
}
 
源代码2 项目: GlobalWarming   文件: CO2Listener.java
public void onInventoryMoveItemEvent(InventoryMoveItemEvent event) {
    if (event.getItem().getType().isFuel()) {
        if (event.getDestination() instanceof FurnaceInventory) {
            FurnaceInventory furnaceInventory = (FurnaceInventory) event.getDestination();
        }
    }
}
 
/**
 * Fix a bukkit bug where shift click doesn't register.
 *
 * @param e
 * @return
 */
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onSmelting2(InventoryClickEvent e) {
    Inventory clickedInventory = null;
    Player player = (Player) e.getWhoClicked();
    if (e.getSlot() < 0) {
        clickedInventory = null;
    } else if (e.getView().getTopInventory() != null && e.getSlot() < e
            .getView().getTopInventory().getSize()) {
        clickedInventory = e.getView().getTopInventory();
    } else {
        clickedInventory = e.getView().getBottomInventory();
    }
    if (clickedInventory == null) {
        return;
    }
    if (!clickedInventory.getType().equals(InventoryType.FURNACE)) {
        return;
    }
    if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) {
        return;
    }
    FurnaceInventory fi = (FurnaceInventory) clickedInventory;
    boolean click = e.getClick().isShiftClick() || e.getClick()
            .isLeftClick() && e.getRawSlot() == 2;
    boolean item = fi.getResult() != null;

    if (click && item && !fi.getResult().getType().isFuel() && !fi.getResult().getType().isBurnable() && !Util.invFull(player)) {
        for (int i = 0; i < fi.getResult().getAmount(); i++) {
            if (DropManager.smeltingChance > random.nextDouble()) {
                DropManager.randomDrop(player, DropManager.smeltingLootTable);
            }
        }
    }
}
 
源代码4 项目: ProRecipes   文件: EventListener.java
@EventHandler(priority = EventPriority.MONITOR)
public void furnaceCraftEvent(FurnaceCraftEvent event){
	FurnaceInventory inv = (FurnaceInventory)event.getInventory();
	if(event.isCancelled()){
		inv.setResult(new ItemStack(Material.AIR));
		return;
	}else{
		int amount = 0;
		
		ItemStack b = new ItemStack(inv.getItem(0));
		
		amount = b.getAmount();
		
		int newAmount = amount - ProRecipes.getPlugin().getRecipes().fur.get(event.getRecipe().getId()).getSubtractAmount();
		ItemStack i = event.getSource().clone();
		i.setAmount(newAmount);
		inv.setSmelting(i);
		if(inv.getResult() != null && inv.getResult().isSimilar(event.getResult())){
			ItemStack re = event.getResult().clone();
			re.setAmount(re.getAmount() + inv.getResult().getAmount());
			inv.setResult(re);
		}else{
			inv.setResult(event.getResult());
		}
		
		ProRecipes.getPlugin().incrementRecipesCrafted(RecipeType.FURNACE);
		
	}
}
 
源代码5 项目: Slimefun4   文件: CargoUtils.java
static ItemStack withdrawFromVanillaInventory(Block node, ItemStack template, Inventory inv) {
    ItemStack[] contents = inv.getContents();
    int minSlot = 0;
    int maxSlot = contents.length;

    if (inv instanceof FurnaceInventory) {
        minSlot = 2;
        maxSlot = 3;
    }
    else if (inv instanceof BrewerInventory) {
        maxSlot = 3;
    }

    ItemStackWrapper wrapper = new ItemStackWrapper(template);

    for (int slot = minSlot; slot < maxSlot; slot++) {
        // Changes to this ItemStack are synchronized with the Item in the Inventory
        ItemStack itemInSlot = contents[slot];

        if (SlimefunUtils.isItemSimilar(itemInSlot, wrapper, true) && matchesFilter(node, itemInSlot)) {
            if (itemInSlot.getAmount() > template.getAmount()) {
                itemInSlot.setAmount(itemInSlot.getAmount() - template.getAmount());
                return template;
            }
            else {
                ItemStack clone = itemInSlot.clone();
                itemInSlot.setAmount(0);
                return clone;
            }
        }
    }

    return null;
}
 
源代码6 项目: Kettle   文件: Furnace.java
@Override
public FurnaceInventory getInventory();
 
源代码7 项目: Kettle   文件: Furnace.java
@Override
public FurnaceInventory getSnapshotInventory();
 
源代码8 项目: Kettle   文件: CraftFurnace.java
@Override
public FurnaceInventory getSnapshotInventory() {
    return new CraftInventoryFurnace(this.getSnapshot());
}
 
源代码9 项目: Skript   文件: ExprFurnaceSlot.java
public FurnaceEventSlot(final Event e, final FurnaceInventory invi) {
	super(invi, slot);
	this.e = e;
}
 
源代码10 项目: ExoticGarden   文件: Kitchen.java
@Override
public void onInteract(Player p, Block b) {
    Block dispenser = b.getRelative(BlockFace.DOWN);

    Furnace furnace = locateFurnace(dispenser);
    FurnaceInventory furnaceInventory = furnace.getInventory();

    Inventory inv = ((Dispenser) dispenser.getState()).getInventory();
    List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);

    recipe:
    for (ItemStack[] input : inputs) {
        for (int i = 0; i < inv.getContents().length; i++) {
            if (!SlimefunUtils.isItemSimilar(inv.getContents()[i], input[i], true)) continue recipe;
        }

        ItemStack adding = RecipeType.getRecipeOutputList(this, input);

        if (Slimefun.hasUnlocked(p, adding, true)) {
            boolean canFit = furnaceInventory.getResult() == null || (furnaceInventory.getResult().getAmount() + adding.getAmount() <= 64 && SlimefunUtils.isItemSimilar(furnaceInventory.getResult(), adding, true));

            if (!canFit) {
                SlimefunPlugin.getLocal().sendMessage(p, "machines.full-inventory", true);
                return;
            }

            for (int i = 0; i < inv.getContents().length; i++) {
                ItemStack item = inv.getItem(i);

                if (item != null) {
                    ItemUtils.consumeItem(item, item.getType() == Material.MILK_BUCKET);
                }
            }

            Bukkit.getScheduler().runTaskLater(plugin, () -> p.getWorld().playSound(furnace.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 1F, 1F), 55L);

            for (int i = 1; i < 7; i++) {
                Bukkit.getScheduler().runTaskLater(plugin, () -> p.getWorld().playSound(furnace.getLocation(), Sound.BLOCK_METAL_PLACE, 7F, 1F), i * 5L);
            }

            if (furnaceInventory.getResult() == null) {
                furnaceInventory.setResult(adding);
            }
            else {
                furnaceInventory.getResult().setAmount(furnaceInventory.getResult().getAmount() + adding.getAmount());
            }
        }

        return;
    }

    SlimefunPlugin.getLocal().sendMessage(p, "machines.pattern-not-found", true);
}
 
源代码11 项目: Thermos   文件: CraftFurnace.java
public FurnaceInventory getInventory() {
    return new CraftInventoryFurnace(furnace);
}
 
源代码12 项目: Slimefun4   文件: CargoUtils.java
static ItemStack insertIntoVanillaInventory(ItemStack stack, Inventory inv) {
    ItemStack[] contents = inv.getContents();
    int minSlot = 0;
    int maxSlot = contents.length;

    // Check if it is a normal furnace
    if (inv instanceof FurnaceInventory) {
        // Check if it is fuel or not
        if (stack.getType().isFuel()) {
            maxSlot = 2;

            // Any non-smeltable items should not land in the upper slot
            if (!isSmeltable(stack, true)) {
                minSlot = 1;
            }
        }
        else {
            maxSlot = 1;
        }
    }
    else if (inv instanceof BrewerInventory) {
        if (stack.getType() == Material.POTION || stack.getType() == Material.LINGERING_POTION || stack.getType() == Material.SPLASH_POTION) {
            // Potions slot
            maxSlot = 3;
        }
        else if (stack.getType() == Material.BLAZE_POWDER) {
            // Blaze Powder slot
            minSlot = 4;
            maxSlot = 5;
        }
        else {
            // Input slot
            minSlot = 3;
            maxSlot = 4;
        }
    }

    ItemStackWrapper wrapper = new ItemStackWrapper(stack);

    for (int slot = minSlot; slot < maxSlot; slot++) {
        // Changes to this ItemStack are synchronized with the Item in the Inventory
        ItemStack itemInSlot = contents[slot];

        if (itemInSlot == null) {
            inv.setItem(slot, stack);
            return null;
        }
        else {
            int maxStackSize = itemInSlot.getType().getMaxStackSize();

            if (SlimefunUtils.isItemSimilar(itemInSlot, wrapper, true, false) && itemInSlot.getAmount() < maxStackSize) {
                int amount = itemInSlot.getAmount() + stack.getAmount();

                if (amount > maxStackSize) {
                    stack.setAmount(amount - maxStackSize);
                }
                else {
                    stack = null;
                }

                itemInSlot.setAmount(Math.min(amount, maxStackSize));
                // Setting item in inventory will clone the ItemStack
                inv.setItem(slot, itemInSlot);

                return stack;
            }
        }
    }

    return stack;
}
 
源代码13 项目: ProRecipes   文件: Recipes.java
public void refreshCraft(final FurnaceInventory inv){
final ItemStack i = inv.getResult().clone();

inv.setResult(null);
		
	

ProRecipes.getPlugin().getServer().getScheduler().scheduleSyncDelayedTask(ProRecipes.getPlugin(), new Runnable(){

	@Override
	public void run() {
		if(inv.getResult() != null && inv.getResult().isSimilar(i)){
			ItemStack ne = i.clone();
			i.setAmount(i.getAmount() + inv.getResult().getAmount());
			inv.setResult(ne);
		}else{
			inv.getHolder().getLocation().getWorld().dropItem(inv.getHolder().getLocation(), i);
		}
		
	}
	
	
	}, 20*10 - 1);



}
 
 类所在包
 类方法
 同包方法