Furnace.setresult to nothing

Discussion in 'Plugin Development' started by Darkman2412, Jun 29, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    Darkman2412

    Hi,

    How can I change the result of a furnace to nothing?
    I tried event.setResult(new ItemStack(Material.AIR)) but it gives me undefined item (fire) as result :p

    Thanks,

    Darkman2412
     
  2. Offline

    Weltall 7

    I'd try setResult(null) or setResult(new ItemStack(0, 0))
     
  3. Offline

    Darkman2412

    The first one crashed my server (nullPointerException) and the other one gave me undefined item... But thanks!

    Any ideas?

    I found something:
    Code:
    public void onFurnaceSmelt(FurnaceSmeltEvent event)
        {
        	Location locfurnaces = event.getFurnace().getLocation();
        	plugin.getServer().getPlayer("darkman2412").sendMessage("furnacesmelt1");
        		Player player = AutoFurnace.usedplayers.get(locfurnaces);
        		ItemStack result = event.getResult();
        		int firstempty = player.getInventory().firstEmpty();
        		plugin.getServer().getPlayer("darkman2412").sendMessage("furnacesmelt2 " + firstempty);
        	if(firstempty>=0)
        	{
        		plugin.getServer().getPlayer("darkman2412").sendMessage("furnacesmelt3a");
                    player.getInventory().addItem(result);
        		player.sendMessage(ChatColor.GREEN + "[AutoFurnace]" + ChatColor.GREEN + "You got a(n) " + result.getType().name() + ".");
    		Furnace furnace = (Furnace)(event.getFurnace()).getState();
        		furnace.getInventory().clear(2);
        	}
        	else
        	{
        		plugin.getServer().getPlayer("darkman2412").sendMessage("furnacesmelt3b");
        		player.sendMessage(ChatColor.GREEN + "[AutoFurnace]" + ChatColor.GREEN + "You're " + result.getType().name() + " is ready in your furnace!");
        	}
    }
    What happens now:
    - Iron ore smelted -> 1 iron ingot in output slot
    - 2nd iron ore smelted -> still 1 iron ingot
    - You take 1 iron ingot out of the output
    - 3th iron smelted -> 1 iron ingot in output slot
    - ...

    How can I also clear the remaining ingot?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  4. Offline

    mattmoss

    In a nutshell, his is how I dealt with clearing the furnace output:

    Code:
    public void onFurnaceSmelt(FurnaceSmeltEvent event) {
        // Do nothing if event was cancelled.
        if (event.isCancelled())
            return;
    
        final Block furnace = event.getFurnace();
    
        // Queue up task to clear the furnace output.
        plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
            public void run() {
                ((Furnace) furnace.getState()).getInventory().clear(2);
            }
        });
    }
    
    To see the code in context, check out the source code for DwarfForge.
     
  5. Offline

    Darkman2412

    Thanks, i'll try it in a minute. :D
     
Thread Status:
Not open for further replies.

Share This Page