mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-14 01:24:09 +00:00
Add a Pre Event
This commit is contained in:
1 parent
7e15c598a2
commit
6e2176de0e
3 files changed
+28
-17
No files matched your search
+24
-16
@@ -5,24 +5,32 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AttributeRecalcEvent {
|
||||
private static final List<IAttributeRecalcListener> listeners = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Allows other mods to register a listener that is called after attribute recalculation.
|
||||
*/
|
||||
public static void registerListener(IAttributeRecalcListener listener) {
|
||||
if (listener != null && !listeners.contains(listener)) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
public final class AttributeRecalcEvent {
|
||||
@FunctionalInterface
|
||||
public interface PreListener {
|
||||
void onPre(EntityPlayer player, PlayerAttributeTracker tracker);
|
||||
}
|
||||
|
||||
/**
|
||||
* Posts an event to all registered listeners.
|
||||
*/
|
||||
private static final List<PreListener> preListeners = new ArrayList<>();
|
||||
private static final List<Listener> postListeners = new ArrayList<>();
|
||||
|
||||
public static void pre(EntityPlayer player, PlayerAttributeTracker tracker) {
|
||||
for (PreListener l : preListeners) l.onPre(player, tracker);
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface Listener {
|
||||
void onPost(EntityPlayer player, PlayerAttributeTracker tracker);
|
||||
}
|
||||
|
||||
public static void registerListener(Listener l) {
|
||||
postListeners.add(l);
|
||||
}
|
||||
public static void post(EntityPlayer player, PlayerAttributeTracker tracker) {
|
||||
for (IAttributeRecalcListener listener : listeners) {
|
||||
listener.onAttributesRecalculated(player, tracker);
|
||||
}
|
||||
for (Listener l : postListeners) l.onPost(player, tracker);
|
||||
}
|
||||
|
||||
public static void registerPreListener(PreListener l) {
|
||||
preListeners.add(l);
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -31,7 +31,7 @@ public class PlayerAttributeTracker implements IPlayerAttributes {
|
||||
public static UUID knockbackResUUID = UUID.fromString("b2f261e8-34f0-4140-9828-b56c1f6e0ff2");
|
||||
|
||||
private final UUID playerId;
|
||||
private PlayerAttributeMap playerAttributes = new PlayerAttributeMap();
|
||||
public PlayerAttributeMap playerAttributes = new PlayerAttributeMap();
|
||||
|
||||
public float extraHealth = 0;
|
||||
public float extraHealthBoost = 0;
|
||||
@@ -61,6 +61,8 @@ public class PlayerAttributeTracker implements IPlayerAttributes {
|
||||
magicDefense.clear();
|
||||
magicResistance.clear();
|
||||
if (player != null) {
|
||||
AttributeRecalcEvent.pre(player, this);
|
||||
|
||||
// Update equipment tracker.
|
||||
PlayerEquipmentTracker currentEquip = new PlayerEquipmentTracker();
|
||||
currentEquip.updateFrom(player);
|
||||
|
||||
Reference in new issue
Block a user