From a950a2b7f8316ea742cb1e05d71ba9909e9eb354 Mon Sep 17 00:00:00 2001 From: asofold Date: Mon, 15 Apr 2013 16:20:41 +0200 Subject: [PATCH] Use a "temporary" TickListener to process queued IHoldSubComponents instances. --- .../java/fr/neatmonster/nocheatplus/NoCheatPlus.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/NoCheatPlus.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/NoCheatPlus.java index 410dd610..9dce3c4e 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/NoCheatPlus.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/NoCheatPlus.java @@ -339,6 +339,15 @@ public class NoCheatPlus extends JavaPlugin implements NoCheatPlusAPI { /** All registered components. */ protected Set allComponents = new LinkedHashSet(50); + /** Tick listener that is only needed sometimes (component registration). */ + protected final TickListener onDemandTickListener = new TickListener() { + @Override + public void onTick(int tick, long timeLast) { + processQueuedSubComponentHolders(); + TickTask.removeTickListener(this); + } + }; + @SuppressWarnings("unchecked") @Override public Collection> getComponentRegistries(final Class> clazz) { @@ -432,8 +441,10 @@ public class NoCheatPlus extends JavaPlugin implements NoCheatPlusAPI { added = true; } + // Components holding more components to register later. if (obj instanceof IHoldSubComponents){ subComponentholders.add((IHoldSubComponents) obj); + TickTask.addTickListener(onDemandTickListener); added = true; // Convention. }