functional events in DistributorAddon

This commit is contained in:
dfsek 2021-07-21 20:06:28 -07:00
parent facd878788
commit 3f42b9ab3e

View File

@ -10,7 +10,6 @@ import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Addon;
import com.dfsek.terra.api.addon.annotations.Author; import com.dfsek.terra.api.addon.annotations.Author;
import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.addon.annotations.Version;
import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
@ -22,23 +21,22 @@ import java.util.function.Supplier;
@Addon("config-distributors") @Addon("config-distributors")
@Version("1.0.0") @Version("1.0.0")
@Author("Terra") @Author("Terra")
public class DistributorAddon extends TerraAddon implements EventListener { public class DistributorAddon extends TerraAddon {
public static final TypeKey<Supplier<ObjectTemplate<Distributor>>> DISTRIBUTOR_TOKEN = new TypeKey<>() {}; public static final TypeKey<Supplier<ObjectTemplate<Distributor>>> DISTRIBUTOR_TOKEN = new TypeKey<>() {};
@Inject @Inject
private TerraPlugin main; private TerraPlugin main;
@Override @Override
public void initialize() { public void initialize() {
main.getEventManager().registerListener(this, this); main.getEventManager()
} .register(ConfigPackPreLoadEvent.class)
.then(event -> {
public void packPreLoad(ConfigPackPreLoadEvent event) {
CheckedRegistry<Supplier<ObjectTemplate<Distributor>>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN); CheckedRegistry<Supplier<ObjectTemplate<Distributor>>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN);
distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); distributorRegistry.register("NOISE", NoiseDistributorTemplate::new);
distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); distributorRegistry.register("POINTS", PointSetDistributorTemplate::new);
event.getPack() event.getPack()
.applyLoader(Point.class, PointTemplate::new); .applyLoader(Point.class, PointTemplate::new);
});
} }
} }