Skip to content
This repository has been archived by the owner on Nov 2, 2021. It is now read-only.

Multiple Requirement Achievements #616

Open
Laarryy opened this issue Dec 2, 2019 · 8 comments
Open

Multiple Requirement Achievements #616

Laarryy opened this issue Dec 2, 2019 · 8 comments
Labels
enhancement Also known as new features.

Comments

@Laarryy
Copy link

Laarryy commented Dec 2, 2019

Hello, I may be wrong, but I can't seem to find a way to set up achievements in the config so that several steps must be completed before the achievement is granted. I thought of making several single achievements (with no reward), and then a final achievement with a reward that is completed by unlocking all of the single achievements, but I'm not sure how I can set up one achievement to be unlocked by others. My end goal, for example, could be to give a reward when a player has completed all of the following:
-Mine 30 000 stone
-Mine 2 048 Coal ore
-Mine 1 024 iron ore
-Mine 512 Gold ore
-Mine 512 Redstone ore
-Mine 256 Lapis ore
-Mine 64 Diamond ore

I have tried this as follows (replacing values with 1 for easy testing):

Breaks:
stone:
'1':
diamond_ore:
'1':
gold_ore:
'1':
coal_ore:
'1':
redstone_ore:
'1':
lapis_ore:
'1':
iron_ore:
'1':
Goal: [Goal].
Message: §1The greatest miner ever!
Name: break_everything
DisplayName: [name]
Reward:
Command:
Execute: give PLAYER [reward]

When I run this, the plugin works fine and gives no errors on startup, however, the achievement is granted only by breaking iron_ore, and the other blocks have no effect.

Is there any way to set up such an achievement? Thank you.

@Laarryy
Copy link
Author

Laarryy commented Dec 3, 2019

In pondering this further, I've come to the realization that an achievement unlocked by completing other achievements is all that is really necessary in order for this to work. While I can't seem to find this included, is it even possible to add it to the game? I suppose the category would be something like AchievementsReceived and the possible subsets of this would just be a list of all other achievements.

For example:

Breaks:
stone:
'1':
Goal: [Goal]
Message: [Message]
Name: break_stone
DisplayName: [name]

etc.

and then, after all blocktypes inputted as individual achievements:

AchievementsReceived:
break_stone | break_diamond | break_redstone | etc.
'1':
Goal: [Goal]
Message: [Message]
Name: break_everything
DisplayName: [name]
Reward:
Command:
Execute: give player [reward]

I hope this makes sense; would it work? Is this even possible?

Thanks again for taking the time to read all of this and potentially deal with my nonsense xD

@PyvesB
Copy link
Owner

PyvesB commented Dec 7, 2019

Hello @LarryB11,

You can group multiple sub-categories by following the Wiki or the default configuration file. Doing more complex things such as unlocking achievements by completing other achievements is not currently possible out of the box, see #82. 😉

Hope this helps!

Pyves

@PyvesB PyvesB added the general support Help requested by a user. label Dec 7, 2019
@Laarryy
Copy link
Author

Laarryy commented Dec 7, 2019

Thank you so much for you speedy response, @PyvesB!

However, I suppose my question was poorly worded.

I have attempted several different ways to group the sub-categories to my needs. For example, using:

stone|diamond_ore|gold_ore|coal_ore|redstone_ore|lapis_ore|iron_ore:
'1':

However, that grants the achievement whenever any one of these blocks is broken.

Is there a way to have it so one sub-categorized achievement is completed only when (for example):

ALL:
-30 000 stone mined
-2 048 Coal ore mined
-1 024 iron ore mined
-512 Gold ore mined
-512 Redstone ore mined
-256 Lapis ore mined
-64 Diamond ore mined

and not when only one of these is done?

Thank you so much for your help!

Larry

@PyvesB
Copy link
Owner

PyvesB commented Dec 7, 2019

However, I suppose my question was poorly worded.

Or maybe I didn't read carefully enough. 😉

The Wiki section I linked to is in effect "this block OR this other block", rather than "this block with this threshold AND this other block with this other threshold". And unfortunately, there isn't currently a way to award a sub-categorized achievement when all conditions similar to the ones you've listed above are met.

@Laarryy
Copy link
Author

Laarryy commented Dec 7, 2019

Thank you very much @PyvesB!

I was hoping there was, but since there isn't (yet?), I'll share with you a workaround I've been using to accomplish my goal in case anyone else has the same question. I saw on another issue here that there exists a plugin the hooks AdvancedAchievements and Luckperms (AALP). It allows for a luckperms addgroup or addperm command to be run when several (user specified) AACH achievements are completed. So far, it works well!

I'll keep an eye on the update log for when something is added that allows me to streamline the process and eliminate the AALP component. Perhaps a way to award achievements based on specific achievements completed? Maybe a way to replace '|' with ',' to make it AND, (and a way to specify different thresholds) not OR as you described.

I understand that all of this is very complicated and time consuming, and I am in the process of learning Java to be able to contribute, however, there is certainly a lot to learn! If I ever get to the level of technical skill to be able to do it, I will definitely try. If you do have the opportunity to work on it, and beat me to it, I'd really appreciate it for sure!

Thank again for your help,

Larry

@PyvesB
Copy link
Owner

PyvesB commented Dec 7, 2019

Maybe a way to replace '|' with ',' to make it AND, (and a way to specify different thresholds)

I like the idea of replacing '|' with ',' (or simply '&'). Though the thresholds is a tricky one to solve without making the config look inconsistent or confusing.

I understand that all of this is very complicated and time consuming, and I am in the process of learning Java to be able to contribute, however, there is certainly a lot to learn! If I ever get to the level of technical skill to be able to do it, I will definitely try.

Help would definitely be appreciated! I've been faithfully maintaining this project since 2015, but my time is limited given that this is just a hobby and that I'm involved in quite a few other side projects. Supportive/friendly people like yourself are also increasingly rare in the Minecraft community nowadays, which doesn't help with motivation. 😉

@PyvesB PyvesB added enhancement Also known as new features. and removed general support Help requested by a user. labels Dec 7, 2019
@Laarryy
Copy link
Author

Laarryy commented Dec 9, 2019

Hey @PyvesB,

Don't worry about the jerks that seem to thrive off of demands and negative feedback. What you're doing out of the goodness of your own heart is more than enough to overshadow them and their negativity!

Just one, unrelated, followup question though:

Is it possible to award an achievement when a specific item is picked up? Not just any amount of things picked up, but for example an achievement when a player picks up or gets elytra?

I feel kinda stupid for asking, but I genuinely have no clue!

Thanks again,

Larry

@PyvesB
Copy link
Owner

PyvesB commented Dec 10, 2019

Is it possible to award an achievement when a specific item is picked up? Not just any amount of things picked up, but for example an achievement when a player picks up or gets elytra?

Not currently possible, as ItemPickups is a "normal" achievement category. Issue #56 is related.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement Also known as new features.
Projects
None yet
Development

No branches or pull requests

2 participants