mirror of https://github.com/PikaMug/Quests.git
Deduct from blocks broken objective (#1953)
This commit is contained in:
parent
c351ad699d
commit
56ccaaab32
|
@ -210,7 +210,8 @@ public class BlockListener implements Listener {
|
||||||
final ItemStack blockItemStack = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState()
|
final ItemStack blockItemStack = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState()
|
||||||
.getData().toItemStack().getDurability());
|
.getData().toItemStack().getDurability());
|
||||||
final IQuester quester = plugin.getQuester(player.getUniqueId());
|
final IQuester quester = plugin.getQuester(player.getUniqueId());
|
||||||
final ObjectiveType type = ObjectiveType.PLACE_BLOCK;
|
final ObjectiveType placeType = ObjectiveType.PLACE_BLOCK;
|
||||||
|
final ObjectiveType breakType = ObjectiveType.BREAK_BLOCK;
|
||||||
final Set<String> dispatchedQuestIDs = new HashSet<>();
|
final Set<String> dispatchedQuestIDs = new HashSet<>();
|
||||||
for (final IQuest quest : plugin.getLoadedQuests()) {
|
for (final IQuest quest : plugin.getLoadedQuests()) {
|
||||||
if (!evt.isCancelled()) {
|
if (!evt.isCancelled()) {
|
||||||
|
@ -218,12 +219,41 @@ public class BlockListener implements Listener {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quester.getCurrentQuestsTemp().containsKey(quest)
|
if (quester.getCurrentQuestsTemp().containsKey(quest)) {
|
||||||
&& quester.getCurrentStage(quest).containsObjective(type)) {
|
IStage currentStage = quester.getCurrentStage(quest);
|
||||||
quester.placeBlock(quest, blockItemStack);
|
|
||||||
|
if (currentStage.containsObjective(placeType)) quester.placeBlock(quest, blockItemStack);
|
||||||
|
|
||||||
|
if (currentStage.containsObjective(breakType)) {
|
||||||
|
for (final ItemStack is : quester.getQuestData(quest).blocksBroken) {
|
||||||
|
if (evt.getBlock().getType().equals(is.getType()) && is.getAmount() > 0) {
|
||||||
|
ItemStack toBreak = new ItemStack(is.getType(), 64);
|
||||||
|
for (final ItemStack stack : currentStage.getBlocksToBreak()) {
|
||||||
|
if (ItemUtil.compareItems(is, stack, true) == 0) {
|
||||||
|
toBreak = stack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final QuesterPreUpdateObjectiveEvent preEvent
|
||||||
|
= new QuesterPreUpdateObjectiveEvent((Quester) quester, quest,
|
||||||
|
new BukkitObjective(placeType, is.getAmount(), toBreak.getAmount()));
|
||||||
|
plugin.getServer().getPluginManager().callEvent(preEvent);
|
||||||
|
|
||||||
|
final int index = quester.getQuestData(quest).blocksBroken.indexOf(is);
|
||||||
|
final int newAmount = is.getAmount() - 1;
|
||||||
|
is.setAmount(newAmount);
|
||||||
|
quester.getQuestData(quest).blocksBroken.set(index, is);
|
||||||
|
|
||||||
|
final QuesterPostUpdateObjectiveEvent postEvent
|
||||||
|
= new QuesterPostUpdateObjectiveEvent((Quester) quester, quest,
|
||||||
|
new BukkitObjective(placeType, newAmount, toBreak.getAmount()));
|
||||||
|
plugin.getServer().getPluginManager().callEvent(postEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatchedQuestIDs.addAll(quester.dispatchMultiplayerEverything(quest, type,
|
dispatchedQuestIDs.addAll(quester.dispatchMultiplayerEverything(quest, placeType,
|
||||||
(final IQuester q, final IQuest cq) -> {
|
(final IQuester q, final IQuest cq) -> {
|
||||||
if (!dispatchedQuestIDs.contains(cq.getId())) {
|
if (!dispatchedQuestIDs.contains(cq.getId())) {
|
||||||
q.placeBlock(cq, blockItemStack);
|
q.placeBlock(cq, blockItemStack);
|
||||||
|
|
Loading…
Reference in New Issue