Custom potion brewing now consume fuel from the brewing stand.

Fixed a glitch that let players remove the ingredient of a custom potion
from the brewing stand without cancelling the brewing task (this doesn't
seem to have caused any duplicates, once the task finished nothing
happened).
This commit is contained in:
Dor 2016-03-16 15:16:48 +02:00
parent d942cedb8e
commit 4054315c19
2 changed files with 7 additions and 2 deletions

View File

@ -26,7 +26,7 @@ public class AlchemyBrewCheckTask extends BukkitRunnable {
public void run() {
Location location = brewingStand.getLocation();
ItemStack[] newInventory = Arrays.copyOfRange(brewingStand.getInventory().getContents(), 0, 4);
boolean validBrew = AlchemyPotionBrewer.isValidBrew(player, newInventory);
boolean validBrew = brewingStand.getFuelLevel() > 0 && AlchemyPotionBrewer.isValidBrew(player, newInventory);
if (Alchemy.brewingStandMap.containsKey(location)) {
if (oldInventory[Alchemy.INGREDIENT_SLOT] == null || newInventory[Alchemy.INGREDIENT_SLOT] == null || !oldInventory[Alchemy.INGREDIENT_SLOT].isSimilar(newInventory[Alchemy.INGREDIENT_SLOT]) || !validBrew) {

View File

@ -27,6 +27,7 @@ public class AlchemyBrewTask extends BukkitRunnable {
private double brewSpeed;
private double brewTimer;
private Player player;
private int fuel;
public AlchemyBrewTask(BlockState brewingStand, Player player) {
this.brewingStand = brewingStand;
@ -51,13 +52,15 @@ public class AlchemyBrewTask extends BukkitRunnable {
Alchemy.brewingStandMap.get(location).cancel();
}
fuel = ((BrewingStand) brewingStand).getFuelLevel() - 1;
Alchemy.brewingStandMap.put(location, this);
this.runTaskTimer(mcMMO.p, 1, 1);
}
@Override
public void run() {
if (player == null || !player.isValid() || brewingStand == null || brewingStand.getType() != Material.BREWING_STAND) {
if (player == null || !player.isValid() || brewingStand == null || brewingStand.getType() != Material.BREWING_STAND || !AlchemyPotionBrewer.isValidIngredient(player, ((BrewingStand) brewingStand).getInventory().getContents()[Alchemy.INGREDIENT_SLOT])) {
if (Alchemy.brewingStandMap.containsKey(location)) {
Alchemy.brewingStandMap.remove(location);
}
@ -67,6 +70,8 @@ public class AlchemyBrewTask extends BukkitRunnable {
return;
}
((BrewingStand) brewingStand).setFuelLevel(fuel);
brewTimer -= brewSpeed;
// Vanilla potion brewing completes when BrewingTime == 1