类org.bukkit.event.inventory.FurnaceSmeltEvent源码实例Demo

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

源代码1 项目: Skript   文件: ExprFurnaceSlot.java
@SuppressWarnings({"unchecked", "null"})
@Override
public boolean init(final Expression<?>[] exprs, final int matchedPattern, final Kleenean isDelayed, final ParseResult parseResult) {
	isEvent = matchedPattern == 0;
	slot = parseResult.mark;
	if (isEvent && slot == RESULT && !ScriptLoader.isCurrentEvent(FurnaceSmeltEvent.class)) {
		Skript.error("Cannot use 'result slot' outside a fuel smelt event.");
		return false;
	} else if (isEvent && slot == FUEL && !ScriptLoader.isCurrentEvent(FurnaceBurnEvent.class)) {
		Skript.error("Cannot use 'fuel slot' outside a fuel burn event.");
		return false;
	}
	if (!isEvent)
		setExpr((Expression<Block>) exprs[0]);
	return true;
}
 
源代码2 项目: Skript   文件: ExprFurnaceSlot.java
@Override
@Nullable
public ItemStack getItem() {
	switch (slot) {
		case RESULT:
			if (e instanceof FurnaceSmeltEvent)
				return getTime() > -1 ? ((FurnaceSmeltEvent) e).getResult().clone() : super.getItem();
			else
				return super.getItem();
		case FUEL:
			if (e instanceof FurnaceBurnEvent)
				return getTime() > -1 ? ((FurnaceBurnEvent) e).getFuel().clone() : super.getItem();
			 else
				return pastItem();
		case ORE:
			if (e instanceof FurnaceSmeltEvent)
				return pastItem();
			else
				return super.getItem();
		default:
			return null;
	}
}
 
源代码3 项目: Skript   文件: ExprFurnaceSlot.java
@SuppressWarnings("synthetic-access")
@Override
public void setItem(final @Nullable ItemStack item) {
	if (getTime() > -1) {
		Bukkit.getScheduler().scheduleSyncDelayedTask(Skript.getInstance(),
				() -> FurnaceEventSlot.super.setItem(item));
	} else {
		if (e instanceof FurnaceSmeltEvent && slot == RESULT) {
			if (item != null)
				((FurnaceSmeltEvent) e).setResult(item);
			else
				((FurnaceSmeltEvent) e).setResult(new ItemStack(Material.AIR));
		} else {
			super.setItem(item);
		}
	}
}
 
源代码4 项目: Slimefun4   文件: EnhancedFurnaceListener.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onItemSmelt(FurnaceSmeltEvent e) {
    SlimefunItem sfItem = BlockStorage.check(e.getBlock());

    if (sfItem instanceof EnhancedFurnace) {
        Furnace furnace = (Furnace) e.getBlock().getState();
        int amount = furnace.getInventory().getSmelting().getType().toString().endsWith("_ORE") ? ((EnhancedFurnace) sfItem).getOutput() : 1;
        Optional<ItemStack> result = Optional.ofNullable(furnace.getInventory().getResult());

        if (!result.isPresent()) {
            result = SlimefunPlugin.getMinecraftRecipeService().getFurnaceOutput(furnace.getInventory().getSmelting());
        }

        if (result.isPresent()) {
            ItemStack item = result.get();
            furnace.getInventory().setResult(new CustomItem(item, Math.min(item.getAmount() + amount, item.getMaxStackSize())));
        }
    }
}
 
源代码5 项目: ProRecipes   文件: Recipes.java
@EventHandler(priority=EventPriority.MONITOR)
public void onSmelt(final FurnaceSmeltEvent event){
	
	for(RecipeFurnace rec : fur){
		if(rec.toBurn.getType().equals(event.getSource().getType())){
			if(rec.match(event.getSource())){
				////System.out.println("Matched");
				////System.out.println("1");
				Furnace f = ((Furnace)event.getBlock().getState());
				Inventory inv = f.getInventory();
				
				
				//f.update();
				////System.out.println(rec.result.toString());
				FurnaceCraftEvent eventFurnace = new FurnaceCraftEvent(ProRecipes.getAPI().getRecipe(RecipeType.FURNACE, fur.indexOf(rec)), inv, rec.getResult(), event.getSource());
				ProRecipes.getPlugin().getServer().getPluginManager().callEvent(eventFurnace);
				
				//System.out.println("1");
				event.setCancelled(true);
				break;
			}else if(!rec.def){
				////System.out.println("2");
				////System.out.println("It doesnt match and it doesn't have an original");
				////////////System.out.println("Doesn't");
				event.setResult(null);
				event.setCancelled(true);
				///return;
				//return;
				//System.out.println("2");
			}else{
				////System.out.println("3");
				//////System.out.println("It has an original");
				event.setResult(rec.original.getResult());
				event.setCancelled(false);
				//System.out.println("3");
			//	return;
			}
		}
		
	}
	
	if(event.getSource().getAmount()-1 > 0){
		//Check if there's source, then set a timer for the amount of time for new one to finish, then add the old one on after that. 
		ProRecipes.getPlugin().getServer().getScheduler().scheduleSyncDelayedTask(ProRecipes.getPlugin(), new Runnable(){

			@Override
			public void run() {
				//refreshCraft(((Furnace)event.getBlock().getState()).getInventory());
			}
			
		}, 1);
	}
	
	////System.out.println("Cancelled: " + event.isCancelled());
	////System.out.println("Done");
	
}
 
源代码6 项目: Skript   文件: ExprFurnaceSlot.java
@SuppressWarnings("unchecked")
@Override
public boolean setTime(final int time) {
	return super.setTime(time, getExpr(), FurnaceSmeltEvent.class, FurnaceBurnEvent.class);
}
 
 类所在包
 同包方法