Search in sources :

Example 1 with BrewingRecipe

use of cn.nukkit.inventory.BrewingRecipe in project Nukkit by Nukkit.

the class BlockEntityBrewingStand method onUpdate.

@Override
public boolean onUpdate() {
    if (closed) {
        return false;
    }
    boolean ret = false;
    Item ingredient = this.inventory.getIngredient();
    boolean canBrew = false;
    Item fuel = this.getInventory().getFuel();
    if (this.fuelAmount <= 0 && fuel.getId() == Item.BLAZE_POWDER && fuel.getCount() > 0) {
        fuel.count--;
        this.fuelAmount = 20;
        this.fuelTotal = 20;
        this.inventory.setFuel(fuel);
        this.sendFuel();
    }
    if (this.fuelAmount > 0) {
        for (int i = 1; i <= 3; i++) {
            if (this.inventory.getItem(i).getId() == Item.POTION) {
                canBrew = true;
            }
        }
        if (this.brewTime <= MAX_BREW_TIME && canBrew && ingredient.getCount() > 0) {
            if (!this.checkIngredient(ingredient)) {
                canBrew = false;
            }
        } else {
            canBrew = false;
        }
    }
    if (canBrew) {
        if (this.brewTime == MAX_BREW_TIME) {
            this.sendBrewTime();
            StartBrewEvent e = new StartBrewEvent(this);
            this.server.getPluginManager().callEvent(e);
            if (e.isCancelled()) {
                return false;
            }
        }
        this.brewTime--;
        if (this.brewTime <= 0) {
            // 20 seconds
            BrewEvent e = new BrewEvent(this);
            this.server.getPluginManager().callEvent(e);
            if (!e.isCancelled()) {
                for (int i = 1; i <= 3; i++) {
                    Item potion = this.inventory.getItem(i);
                    BrewingRecipe recipe = Server.getInstance().getCraftingManager().matchBrewingRecipe(ingredient, potion);
                    if (recipe != null) {
                        this.inventory.setItem(i, recipe.getResult());
                    }
                }
                ingredient.count--;
                this.inventory.setIngredient(ingredient);
                this.fuelAmount--;
                this.sendFuel();
            }
            this.brewTime = MAX_BREW_TIME;
        }
        ret = true;
    } else {
        this.brewTime = MAX_BREW_TIME;
    }
    // this.sendBrewTime();
    lastUpdate = System.currentTimeMillis();
    return ret;
}
Also used : Item(cn.nukkit.item.Item) StartBrewEvent(cn.nukkit.event.inventory.StartBrewEvent) BrewEvent(cn.nukkit.event.inventory.BrewEvent) StartBrewEvent(cn.nukkit.event.inventory.StartBrewEvent) BrewingRecipe(cn.nukkit.inventory.BrewingRecipe)

Aggregations

BrewEvent (cn.nukkit.event.inventory.BrewEvent)1 StartBrewEvent (cn.nukkit.event.inventory.StartBrewEvent)1 BrewingRecipe (cn.nukkit.inventory.BrewingRecipe)1 Item (cn.nukkit.item.Item)1