Address several multiplayer objective issues, by @AlessioDP

This commit is contained in:
PikaMug 2021-01-05 16:06:14 -05:00
parent 8e2f5dd13e
commit 3b8e0aa7af
2 changed files with 10 additions and 15 deletions

View File

@ -70,18 +70,13 @@ public class BlockListener implements Listener {
.replace("<quest>", quest.getName())); .replace("<quest>", quest.getName()));
} else { } else {
quester.breakBlock(quest, blockItemStack); quester.breakBlock(quest, blockItemStack);
quester.dispatchMultiplayerEverything(quest, breakType, (final Quester q) -> {
q.breakBlock(quest, blockItemStack);
return null;
});
} }
} }
quester.dispatchMultiplayerEverything(quest, breakType, (final Quester q) -> {
if (quest.getOptions().canIgnoreSilkTouch()
&& player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "optionSilkTouchFail")
.replace("<quest>", quest.getName()));
} else {
quester.breakBlock(quest, blockItemStack);
}
return null;
});
if (quester.getCurrentQuests().containsKey(quest) if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(placeType)) { && quester.getCurrentStage(quest).containsObjective(placeType)) {
for (final ItemStack is : quester.getQuestData(quest).blocksPlaced) { for (final ItemStack is : quester.getQuestData(quest).blocksPlaced) {
@ -115,7 +110,7 @@ public class BlockListener implements Listener {
for (final ItemStack is : q.getQuestData(quest).blocksPlaced) { for (final ItemStack is : q.getQuestData(quest).blocksPlaced) {
if (evt.getBlock().getType().equals(is.getType()) && is.getAmount() > 0) { if (evt.getBlock().getType().equals(is.getType()) && is.getAmount() > 0) {
ItemStack toPlace = new ItemStack(is.getType(), 64); ItemStack toPlace = new ItemStack(is.getType(), 64);
for (final ItemStack stack : quester.getCurrentStage(quest).getBlocksToPlace()) { for (final ItemStack stack : q.getCurrentStage(quest).getBlocksToPlace()) {
if (ItemUtil.compareItems(is, stack, true) == 0) { if (ItemUtil.compareItems(is, stack, true) == 0) {
toPlace = stack; toPlace = stack;
} }
@ -123,7 +118,7 @@ public class BlockListener implements Listener {
final ObjectiveType type = ObjectiveType.PLACE_BLOCK; final ObjectiveType type = ObjectiveType.PLACE_BLOCK;
final QuesterPreUpdateObjectiveEvent preEvent final QuesterPreUpdateObjectiveEvent preEvent
= new QuesterPreUpdateObjectiveEvent(quester, quest, = new QuesterPreUpdateObjectiveEvent(q, quest,
new Objective(type, is.getAmount(), toPlace.getAmount())); new Objective(type, is.getAmount(), toPlace.getAmount()));
plugin.getServer().getPluginManager().callEvent(preEvent); plugin.getServer().getPluginManager().callEvent(preEvent);
@ -133,7 +128,7 @@ public class BlockListener implements Listener {
q.getQuestData(quest).blocksPlaced.set(index, is); q.getQuestData(quest).blocksPlaced.set(index, is);
final QuesterPostUpdateObjectiveEvent postEvent final QuesterPostUpdateObjectiveEvent postEvent
= new QuesterPostUpdateObjectiveEvent(quester, quest, = new QuesterPostUpdateObjectiveEvent(q, quest,
new Objective(type, newAmount, toPlace.getAmount())); new Objective(type, newAmount, toPlace.getAmount()));
plugin.getServer().getPluginManager().callEvent(postEvent); plugin.getServer().getPluginManager().callEvent(postEvent);
} }

View File

@ -154,7 +154,7 @@ public class ItemListener implements Listener {
} }
quester.dispatchMultiplayerEverything(quest, type, (final Quester q) -> { quester.dispatchMultiplayerEverything(quest, type, (final Quester q) -> {
quester.enchantItem(quest, enchantedItem); q.enchantItem(quest, enchantedItem);
return null; return null;
}); });
} }
@ -180,7 +180,7 @@ public class ItemListener implements Listener {
} }
quester.dispatchMultiplayerEverything(quest, type, (final Quester q) -> { quester.dispatchMultiplayerEverything(quest, type, (final Quester q) -> {
quester.consumeItem(quest, consumedItem); q.consumeItem(quest, consumedItem);
return null; return null;
}); });
} }