make Registry immutable, remove other registry implementations

This commit is contained in:
dfsek committed 2022-08-21 00:51:26 -07:00
1 parent b04a4850da
commit 620ae7d1ff
39 files changed
+275 -819

No files matched your search

@@ -1,33 +1,17 @@
package com.dfsek.terra.addon.terrascript.check;
import com.dfsek.terra.addons.manifest.api.MonadAddonInitializer;
import com.dfsek.terra.addons.manifest.api.monad.Do;
import com.dfsek.terra.addons.manifest.api.monad.Get;
import com.dfsek.terra.addons.manifest.api.monad.Init;
import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.addon.BaseAddon;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
import com.dfsek.terra.api.inject.annotations.Inject;
import com.dfsek.terra.api.util.function.monad.Monad;
import static com.dfsek.terra.addons.manifest.api.monad.Get.platform;
import static com.dfsek.terra.addons.manifest.api.monad.Register.register;
public class TerraScriptCheckFunctionAddon implements MonadAddonInitializer {
@Override
public Monad<?, Init<?>> initialize() {
return Do.with(
Get.eventManager().map(eventManager -> eventManager.getHandler(FunctionalEventHandler.class)),
Get.addon(),
Get.platform(),
((handler, base, platform) -> Init.ofPure(
handler.register(base, ConfigPackPreLoadEvent.class)
.priority(1)
.then(event -> event
.getPack()
.getOrCreateRegistry(FunctionBuilder.class)
.register(base.key("check"), new CheckFunctionBuilder(platform)))
.failThrough()))
);
return platform().bind(platform -> register(FunctionBuilder.class, "check", new CheckFunctionBuilder(platform)));
}
}