mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Fixed issues causing pie crafting to stop or consume additional ingredients
This commit is contained in:
parent
63f8ec3cbf
commit
47ac5e93d6
2 changed files with 13 additions and 8 deletions
|
|
@ -44,29 +44,30 @@ public final class CookingRecipePlugin extends UseWithHandler {
|
|||
@Override
|
||||
public boolean handle(NodeUsageEvent event) {
|
||||
Recipe recipe = null;
|
||||
Item part = null;
|
||||
// TODO: Transitioning to a Listener would save an O(n) pass through the recipes list on every use-with
|
||||
recipeloop:
|
||||
for (Recipe temp : Recipe.RECIPES) {
|
||||
if (temp.isSingular()) {
|
||||
if (temp.getBase().getId() == event.getUsedItem().getId() || temp.getBase().getId() == event.getBaseItem().getId()) {
|
||||
for (Item ingredient : temp.getIngredients()) {
|
||||
if (ingredient.getId() == event.getBaseItem().getId() || ingredient.getId() == event.getUsedItem().getId()) {
|
||||
recipe = temp;
|
||||
break;
|
||||
break recipeloop;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Item part = null;
|
||||
Item ingredient = null;
|
||||
for (int k = 0; k < temp.getParts().length; k++) {
|
||||
for (int i = 0; i < temp.getIngredients().length; i++) {
|
||||
part = temp.getParts()[k];
|
||||
ingredient = temp.getIngredients()[i];
|
||||
if (part.getId() == event.getUsedItem().getId() && ingredient.getId() == event.getBaseItem().getId() || part.getId() == event.getBaseItem().getId() && ingredient.getId() == event.getUsedItem().getId()) {
|
||||
Item tempPart = temp.getParts()[k];
|
||||
Item ingredient = temp.getIngredients()[i];
|
||||
if (tempPart.getId() == event.getUsedItem().getId() && ingredient.getId() == event.getBaseItem().getId() || tempPart.getId() == event.getBaseItem().getId() && ingredient.getId() == event.getUsedItem().getId()) {
|
||||
if (k == i) {// represents that this ingredient can
|
||||
// mix with the other.
|
||||
recipe = temp;
|
||||
break;
|
||||
part = tempPart;
|
||||
break recipeloop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -76,6 +77,7 @@ public final class CookingRecipePlugin extends UseWithHandler {
|
|||
if (recipe != null) {
|
||||
final Player player = event.getPlayer();
|
||||
final Recipe recipe_ = recipe;
|
||||
final Item part_ = part;
|
||||
SkillDialogueHandler handler = new SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, recipe.getProduct()) {
|
||||
@Override
|
||||
public void create(final int amount, int index) {
|
||||
|
|
@ -91,7 +93,7 @@ public final class CookingRecipePlugin extends UseWithHandler {
|
|||
|
||||
@Override
|
||||
public int getAll(int index) {
|
||||
return player.getInventory().getAmount(recipe_.getBase());
|
||||
return player.getInventory().getAmount(part_ != null ? part_ : recipe_.getBase());
|
||||
}
|
||||
};
|
||||
if (player.getInventory().getAmount(recipe.getBase()) == 1) {
|
||||
|
|
|
|||
|
|
@ -119,6 +119,9 @@ public abstract class Recipe {
|
|||
}
|
||||
}
|
||||
if (index != -1) {
|
||||
if (!player.getInventory().containItems(event.getBaseItem().getId(), event.getUsedItem().getId())) {
|
||||
return;
|
||||
}
|
||||
if (player.getInventory().remove(event.getBaseItem()) && player.getInventory().remove(event.getUsedItem())) {
|
||||
player.getInventory().add(getParts()[index + 1]);
|
||||
String message = getMixMessage(event);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue