下面列出了怎么用org.bukkit.event.inventory.FurnaceBurnEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@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;
}
@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;
}
}
@EventHandler
public void onFurnaceBurn(FurnaceBurnEvent e){
Block block = e.getBlock();
Bukkit.getScheduler().runTaskLater(UhcCore.getPlugin(), new Runnable() {
@Override
public void run() {
// If the furnace is broken stop thread.
if (block.getType() == Material.AIR){
return;
}
Furnace furnace = (Furnace) block.getState();
// If furnace almost stopped burning stop thread. A new FurnaceBurnEvent will be called.
if (furnace.getBurnTime() <= 10) {
return;
}
// If no item is cooking don't speed up cooking time but show down thread while waiting for the burning to stop.
if (furnace.getCookTime() <= 0){
Bukkit.getScheduler().runTaskLater(UhcCore.getPlugin(), this, 5);
return;
}
// Speed up cooking time by 10 ticks, this happens every 2 ticks (5x the default speed).
short newCookTime = (short) (furnace.getCookTime() + speed);
// If new cook time is greater than the max cook time of item set to 199.
if (newCookTime >= 200){
newCookTime = 199;
}
furnace.setCookTime(newCookTime);
furnace.update();
Bukkit.getScheduler().runTaskLater(UhcCore.getPlugin(), this, 2);
}
}, 1);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onFurnaceBurn(FurnaceBurnEvent event) {
if (event.isCancelled())
return;
ItemStack fuel = event.getFuel();
if (!AdditionsAPI.isCustomItem(fuel))
return;
CustomItemStack cStack = new CustomItemStack(fuel);
Bukkit.getPluginManager().callEvent(new CustomItemFurnaceBurnEvent(event, cStack));
}
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) {
cookTime = parseResult.mark == 1;
isEvent = matchedPattern == 0;
if (isEvent && !ScriptLoader.isCurrentEvent(FurnaceBurnEvent.class)) {
Skript.error("Cannot use 'burning time' outside a fuel burn event.");
return false;
}
if (!isEvent)
setExpr((Expression<? extends Block>) exprs[0]);
return true;
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onFuelBurn(FurnaceBurnEvent e) {
SlimefunItem furnace = BlockStorage.check(e.getBlock());
if (furnace instanceof EnhancedFurnace && ((EnhancedFurnace) furnace).getFuelEfficiency() > 0) {
int burnTime = e.getBurnTime();
int newBurnTime = ((EnhancedFurnace) furnace).getFuelEfficiency() * burnTime;
e.setBurnTime(Math.min(newBurnTime, Short.MAX_VALUE));
}
}
@EventHandler
public void onFurnaceBurn(FurnaceBurnEvent event) {
if (!match.isRunning()) {
event.setCancelled(true);
event.setBurning(true);
}
}
public CustomItemFurnaceBurnEvent(FurnaceBurnEvent event, CustomItemStack cStack) {
super(cStack);
this.setFurnaceBurnEvent(event);
}
/**
* @return the event
*/
public FurnaceBurnEvent getFurnaceBurnEvent() {
return event;
}
@SuppressWarnings("unchecked")
@Override
public boolean setTime(final int time) {
return super.setTime(time, getExpr(), FurnaceSmeltEvent.class, FurnaceBurnEvent.class);
}
/**
* @param event
* the event to set
*/
public void setFurnaceBurnEvent(FurnaceBurnEvent event) {
this.event = event;
}