Skip to content

Commit

Permalink
Add Advancement Grant and Revoke Events
Browse files Browse the repository at this point in the history
  • Loading branch information
ZockerAxel committed Jun 2, 2022
1 parent 4cb96b5 commit a728d6a
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package eu.endercentral.crazy_advancements.event;

import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

import eu.endercentral.crazy_advancements.advancement.Advancement;
import eu.endercentral.crazy_advancements.advancement.AdvancementFlag;
import eu.endercentral.crazy_advancements.manager.AdvancementManager;

public class AdvancementGrantEvent extends Event {

public static final HandlerList handlers = new HandlerList();

@Override
public HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}


private final AdvancementManager manager;
private final Advancement advancement;
private final Player player;
private boolean showToast;
private boolean displayMessage;

public AdvancementGrantEvent(AdvancementManager manager, Advancement advancement, Player player) {
this.manager = manager;
this.advancement = advancement;
this.player = player;
this.showToast = advancement.hasFlag(AdvancementFlag.SHOW_TOAST);
this.displayMessage = advancement.hasFlag(AdvancementFlag.DISPLAY_MESSAGE);
}

/**
* Gets the Manager
*
* @return The Manager this event has been fired from
*/
public AdvancementManager getManager() {
return manager;
}

/**
* Gets the Advancement
*
* @return The Advancement that has been granted
*/
public Advancement getAdvancement() {
return advancement;
}

/**
* Gets the Player
*
* @return Reciever
*/
public Player getPlayer() {
return player;
}

/**
* Gets whether a toast will be shown
*
* @return true if a toast will be shown
*/
public boolean isShowToast() {
return showToast;
}

/**
* Sets if a toast will be shown
*
* @param showToast Whether toast should be shown
*/
public void setShowToast(boolean showToast) {
this.showToast = showToast;
}

/**
* Gets whether a message will be displayed
*
* @return true if a message will be displayed
*/
public boolean isDisplayMessage() {
return displayMessage;
}

/**
* Sets if a message will be displayed
*
* @param displayMessage Whethere message should be displayed
*/
public void setDisplayMessage(boolean displayMessage) {
this.displayMessage = displayMessage;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package eu.endercentral.crazy_advancements.event;

import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

import eu.endercentral.crazy_advancements.advancement.Advancement;
import eu.endercentral.crazy_advancements.manager.AdvancementManager;

public class AdvancementRevokeEvent extends Event {

public static final HandlerList handlers = new HandlerList();

@Override
public HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}


private final AdvancementManager manager;
private final Advancement advancement;
private final Player player;

public AdvancementRevokeEvent(AdvancementManager manager, Advancement advancement, Player player) {
this.manager = manager;
this.advancement = advancement;
this.player = player;
}

/**
* Gets the Manager
*
* @return The Manager this event has been fired from
*/
public AdvancementManager getManager() {
return manager;
}

/**
* Gets the Advancement
*
* @return The Advancement that has been granted
*/
public Advancement getAdvancement() {
return advancement;
}

/**
* Gets the Player
*
* @return Reciever
*/
public Player getPlayer() {
return player;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,14 @@
import eu.endercentral.crazy_advancements.NameKey;
import eu.endercentral.crazy_advancements.advancement.Advancement;
import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay;
import eu.endercentral.crazy_advancements.advancement.AdvancementFlag;
import eu.endercentral.crazy_advancements.advancement.AdvancementReward;
import eu.endercentral.crazy_advancements.advancement.criteria.CriteriaType;
import eu.endercentral.crazy_advancements.advancement.progress.AdvancementProgress;
import eu.endercentral.crazy_advancements.advancement.progress.GenericResult;
import eu.endercentral.crazy_advancements.advancement.progress.GrantCriteriaResult;
import eu.endercentral.crazy_advancements.advancement.progress.SetCriteriaResult;
import eu.endercentral.crazy_advancements.event.AdvancementGrantEvent;
import eu.endercentral.crazy_advancements.event.AdvancementRevokeEvent;
import eu.endercentral.crazy_advancements.packet.AdvancementsPacket;
import eu.endercentral.crazy_advancements.packet.PacketConverter;
import eu.endercentral.crazy_advancements.save.CriteriaData;
Expand Down Expand Up @@ -445,10 +446,13 @@ public GenericResult grantAdvancement(Player player, Advancement advancement) {
GenericResult result = progress.grant();

if(result == GenericResult.CHANGED) {
if(advancement.hasFlag(AdvancementFlag.SHOW_TOAST)) {
AdvancementGrantEvent event = new AdvancementGrantEvent(this, advancement, player);
Bukkit.getPluginManager().callEvent(event);

if(event.isShowToast()) {
advancement.displayToast(player);
}
if(advancement.hasFlag(AdvancementFlag.DISPLAY_MESSAGE)) {
if(event.isDisplayMessage()) {
advancement.displayMessageToEverybody(player);
}
AdvancementReward reward = advancement.getReward();
Expand Down Expand Up @@ -490,6 +494,9 @@ public GenericResult revokeAdvancement(Player player, Advancement advancement) {
GenericResult result = progress.revoke();

if(result == GenericResult.CHANGED) {
AdvancementRevokeEvent event = new AdvancementRevokeEvent(this, advancement, player);
Bukkit.getPluginManager().callEvent(event);

updateVisibility(player);
updateProgress(player, advancement);
}
Expand Down Expand Up @@ -527,10 +534,13 @@ public GrantCriteriaResult grantCriteria(Player player, Advancement advancement,

switch(result) {
case COMPLETED:
if(advancement.hasFlag(AdvancementFlag.SHOW_TOAST)) {
AdvancementGrantEvent event = new AdvancementGrantEvent(this, advancement, player);
Bukkit.getPluginManager().callEvent(event);

if(event.isShowToast()) {
advancement.displayToast(player);
}
if(advancement.hasFlag(AdvancementFlag.DISPLAY_MESSAGE)) {
if(event.isDisplayMessage()) {
advancement.displayMessageToEverybody(player);
}
AdvancementReward reward = advancement.getReward();
Expand Down Expand Up @@ -578,6 +588,9 @@ public GenericResult revokeCriteria(Player player, Advancement advancement, Stri
GenericResult result = progress.revokeCriteria(criteria);

if(result == GenericResult.CHANGED) {
AdvancementRevokeEvent event = new AdvancementRevokeEvent(this, advancement, player);
Bukkit.getPluginManager().callEvent(event);

updateVisibility(player);
updateProgress(player, advancement);
}
Expand Down Expand Up @@ -614,14 +627,18 @@ public GenericResult revokeCriteria(UUID uuid, Advancement advancement, String..
public SetCriteriaResult setCriteriaProgress(Player player, Advancement advancement, int criteriaProgress) {
if(advancement.getCriteria().getType() == CriteriaType.NUMBER) {
AdvancementProgress progress = advancement.getProgress(player);
boolean doneBefore = progress.isDone();
SetCriteriaResult result = progress.setCriteriaProgress(criteriaProgress);

switch(result) {
case COMPLETED:
if(advancement.hasFlag(AdvancementFlag.SHOW_TOAST)) {
AdvancementGrantEvent event = new AdvancementGrantEvent(this, advancement, player);
Bukkit.getPluginManager().callEvent(event);

if(event.isShowToast()) {
advancement.displayToast(player);
}
if(advancement.hasFlag(AdvancementFlag.DISPLAY_MESSAGE)) {
if(event.isDisplayMessage()) {
advancement.displayMessageToEverybody(player);
}
AdvancementReward reward = advancement.getReward();
Expand All @@ -630,6 +647,10 @@ public SetCriteriaResult setCriteriaProgress(Player player, Advancement advancem
}
updateVisibility(player);
case CHANGED:
if(doneBefore) {
AdvancementRevokeEvent revokeEvent = new AdvancementRevokeEvent(this, advancement, player);
Bukkit.getPluginManager().callEvent(revokeEvent);
}
updateProgress(player, advancement);
break;
default:
Expand Down

0 comments on commit a728d6a

Please sign in to comment.