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
|
@Override
|
||||||
public boolean handle(NodeUsageEvent event) {
|
public boolean handle(NodeUsageEvent event) {
|
||||||
Recipe recipe = null;
|
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
|
// 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) {
|
for (Recipe temp : Recipe.RECIPES) {
|
||||||
if (temp.isSingular()) {
|
if (temp.isSingular()) {
|
||||||
if (temp.getBase().getId() == event.getUsedItem().getId() || temp.getBase().getId() == event.getBaseItem().getId()) {
|
if (temp.getBase().getId() == event.getUsedItem().getId() || temp.getBase().getId() == event.getBaseItem().getId()) {
|
||||||
for (Item ingredient : temp.getIngredients()) {
|
for (Item ingredient : temp.getIngredients()) {
|
||||||
if (ingredient.getId() == event.getBaseItem().getId() || ingredient.getId() == event.getUsedItem().getId()) {
|
if (ingredient.getId() == event.getBaseItem().getId() || ingredient.getId() == event.getUsedItem().getId()) {
|
||||||
recipe = temp;
|
recipe = temp;
|
||||||
break;
|
break recipeloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Item part = null;
|
|
||||||
Item ingredient = null;
|
|
||||||
for (int k = 0; k < temp.getParts().length; k++) {
|
for (int k = 0; k < temp.getParts().length; k++) {
|
||||||
for (int i = 0; i < temp.getIngredients().length; i++) {
|
for (int i = 0; i < temp.getIngredients().length; i++) {
|
||||||
part = temp.getParts()[k];
|
Item tempPart = temp.getParts()[k];
|
||||||
ingredient = temp.getIngredients()[i];
|
Item 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()) {
|
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
|
if (k == i) {// represents that this ingredient can
|
||||||
// mix with the other.
|
// mix with the other.
|
||||||
recipe = temp;
|
recipe = temp;
|
||||||
break;
|
part = tempPart;
|
||||||
|
break recipeloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -76,6 +77,7 @@ public final class CookingRecipePlugin extends UseWithHandler {
|
||||||
if (recipe != null) {
|
if (recipe != null) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
final Recipe recipe_ = recipe;
|
final Recipe recipe_ = recipe;
|
||||||
|
final Item part_ = part;
|
||||||
SkillDialogueHandler handler = new SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, recipe.getProduct()) {
|
SkillDialogueHandler handler = new SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, recipe.getProduct()) {
|
||||||
@Override
|
@Override
|
||||||
public void create(final int amount, int index) {
|
public void create(final int amount, int index) {
|
||||||
|
|
@ -91,7 +93,7 @@ public final class CookingRecipePlugin extends UseWithHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAll(int index) {
|
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) {
|
if (player.getInventory().getAmount(recipe.getBase()) == 1) {
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,9 @@ public abstract class Recipe {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (index != -1) {
|
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())) {
|
if (player.getInventory().remove(event.getBaseItem()) && player.getInventory().remove(event.getUsedItem())) {
|
||||||
player.getInventory().add(getParts()[index + 1]);
|
player.getInventory().add(getParts()[index + 1]);
|
||||||
String message = getMixMessage(event);
|
String message = getMixMessage(event);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue