Allow @Linked on fields

The value of a @Linked field of a linked class is linked like a linked class
itself, e.g. registered as listener, and unlinked again on unlink. The field
has to be initialised when linking. HullHiderCommand and TPSSystem use it
instead of registering their listeners by hand.
This commit is contained in:
2026-10-31 15:43:35 +01:00
parent a9fbb4cd8d
commit abf44b2306
4 changed files with 44 additions and 4 deletions
@@ -57,10 +57,10 @@ public class HullHiderCommand extends SWCommand implements Listener {
public HullHiderCommand() {
super("hullhider");
Bukkit.getPluginManager().registerEvents(hullHider, BauSystem.getInstance());
Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), this::onTick, 1, 1);
}
@Linked
private final HullHider<Region> hullHider = new HullHider<>();
// Read on netty threads by the BauTechHider
private final Map<Region, HiddenHull> hulls = new ConcurrentHashMap<>();
@@ -50,6 +50,9 @@ import java.util.Arrays;
@Linked
public class TPSSystem implements Listener {
@Linked
private final TickManager tickManager = TickManager.impl;
public TPSSystem() {
if (TickManager.impl.canFreeze()) {
new TPSFreezeCommand();
@@ -68,7 +71,6 @@ public class TPSSystem implements Listener {
new TickDefaultCommand();
new TPSBaseCommand();
new TickBaseCommand();
Bukkit.getPluginManager().registerEvents(TickManager.impl, BauSystem.getInstance());
}
@EventHandler