Commit 3053d264 authored by Carson's avatar Carson
Browse files

added "forcegive" argument (defaults to false) to prevent getting an advancement multiple times.

parent b46c8cab
...@@ -213,7 +213,6 @@ public class AchievementImpl extends Achievement implements MenuData<Achievement ...@@ -213,7 +213,6 @@ public class AchievementImpl extends Achievement implements MenuData<Achievement
.model(iconModel) .model(iconModel)
.hideAttributes() .hideAttributes()
.lore(description) .lore(description)
.skullTexture(TEXTURE.get(this))
.build(); .build();
} else { } else {
this.menuItem = ItemFactory.of(this.iconMaterial) this.menuItem = ItemFactory.of(this.iconMaterial)
......
...@@ -13,36 +13,43 @@ import org.bukkit.entity.Player; ...@@ -13,36 +13,43 @@ import org.bukkit.entity.Player;
public class GrantAchievementMechanic implements ITargetedEntitySkill { public class GrantAchievementMechanic implements ITargetedEntitySkill {
private final MythicAchievementsPlugin plugin; private final MythicAchievementsPlugin plugin;
private String achievement; private final String achievement;
private boolean giveRewards = false; private final boolean giveRewards;
private final boolean forceGive;
public GrantAchievementMechanic(MythicAchievementsPlugin plugin, MythicLineConfig config) { public GrantAchievementMechanic(MythicAchievementsPlugin plugin, MythicLineConfig config) {
this.plugin = plugin; this.plugin = plugin;
this.achievement = config.getString(new String[] {"achievement", "achieve", "a"}, null); this.achievement = config.getString(new String[] {"achievement", "achieve", "a"}, null);
this.giveRewards = config.getBoolean("giverewards", false);
this.forceGive = config.getBoolean(new String[] {"force", "f", "forcegive"}, false);
} }
@Override @Override
public SkillResult castAtEntity(SkillMetadata skillMetadata, AbstractEntity abstractEntity) { public SkillResult castAtEntity(SkillMetadata skillMetadata, AbstractEntity abstractEntity) {
if(!abstractEntity.isPlayer()) { if (!abstractEntity.isPlayer()) {
return SkillResult.INVALID_TARGET; return SkillResult.INVALID_TARGET;
} }
var maybeAchieve = plugin.getAchievementManager().getAchievement(achievement); var maybeAchieve = plugin.getAchievementManager().getAchievement(achievement);
if(maybeAchieve.isEmpty()) { if (maybeAchieve.isEmpty()) {
return SkillResult.INVALID_CONFIG; return SkillResult.INVALID_CONFIG;
} }
var achieve = maybeAchieve.get(); var achieve = maybeAchieve.get();
var player = (Player) abstractEntity.getBukkitEntity(); var player = (Player) abstractEntity.getBukkitEntity();
var profile = plugin.getProfiles().getProfile(player); var profile = plugin.getProfiles().getProfile(player);
if (profile.hasCompleted(achieve) && !forceGive) {
return SkillResult.SUCCESS;
}
profile.completeAchievement(achieve, giveRewards); profile.completeAchievement(achieve, giveRewards);
return SkillResult.SUCCESS; return SkillResult.SUCCESS;
} }
@Override @Override
public ThreadSafetyLevel getThreadSafetyLevel() { public ThreadSafetyLevel getThreadSafetyLevel() {
return ThreadSafetyLevel.SYNC_ONLY; return ThreadSafetyLevel.SYNC_ONLY;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment