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. }