register patterns

This commit is contained in:
dfsek
2021-07-27 20:07:35 -07:00
parent 63667f256b
commit 07c8bfb29e

View File

@@ -3,6 +3,14 @@ package com.dfsek.terra.addons.feature.locator;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate;
import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.AirMatchPatternTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.AndPatternTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.BlockSetMatchPatternTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.NotPatternTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.OrPatternTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.SingleBlockMatchPatternTemplate;
import com.dfsek.terra.addons.feature.locator.config.pattern.SolidMatchPatternTemplate;
import com.dfsek.terra.addons.feature.locator.patterns.Pattern;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.addon.annotations.Addon;
@@ -23,6 +31,7 @@ import java.util.function.Supplier;
public class LocatorAddon extends TerraAddon {
public static final TypeKey<Supplier<ObjectTemplate<Locator>>> LOCATOR_TOKEN = new TypeKey<>() {};
public static final TypeKey<Supplier<ObjectTemplate<Pattern>>> PATTERN_TOKEN = new TypeKey<>() {};
@Inject
private TerraPlugin main;
@@ -36,6 +45,17 @@ public class LocatorAddon extends TerraAddon {
locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main));
locatorRegistry.register("RANDOM", RandomLocatorTemplate::new);
})
.then(event -> {
CheckedRegistry<Supplier<ObjectTemplate<Pattern>>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN);
patternRegistry.register("MATCH_AIR", AirMatchPatternTemplate::new);
patternRegistry.register("MATCH_SOLID", SolidMatchPatternTemplate::new);
patternRegistry.register("MATCH", SingleBlockMatchPatternTemplate::new);
patternRegistry.register("MATCH_SET", BlockSetMatchPatternTemplate::new);
patternRegistry.register("AND", AndPatternTemplate::new);
patternRegistry.register("OR", OrPatternTemplate::new);
patternRegistry.register("NOT", NotPatternTemplate::new);
})
.failThrough();
}
}