functional events in FabricAddon

This commit is contained in:
dfsek
2021-07-21 20:23:45 -07:00
parent 1d6d63b399
commit 6f1938ef82
@@ -14,13 +14,9 @@ import com.dfsek.terra.api.command.CommandManager;
import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.command.exception.MalformedCommandException;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.config.PluginConfig;
import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.annotations.Global;
import com.dfsek.terra.api.event.annotations.Priority;
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent;
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.event.events.config.type.ConfigTypePostLoadEvent;
import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.ItemHandle;
import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.handle.WorldHandle;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.lang.Language;
@@ -69,7 +65,6 @@ import net.minecraft.world.dimension.DimensionType;
import net.minecraft.world.gen.decorator.Decorator; import net.minecraft.world.gen.decorator.Decorator;
import net.minecraft.world.gen.decorator.NopeDecoratorConfig; import net.minecraft.world.gen.decorator.NopeDecoratorConfig;
import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.ConfiguredFeatures;
import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.FeatureConfig; import net.minecraft.world.gen.feature.FeatureConfig;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@@ -288,16 +283,14 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@Addon("Terra-Fabric") @Addon("Terra-Fabric")
@Author("Terra") @Author("Terra")
@Version("1.0.0") @Version("1.0.0")
public final class FabricAddon extends TerraAddon implements EventListener { public final class FabricAddon extends TerraAddon {
private final Map<ConfigPack, Pair<PreLoadCompatibilityOptions, PostLoadCompatibilityOptions>> templates = new HashMap<>(); private final Map<ConfigPack, Pair<PreLoadCompatibilityOptions, PostLoadCompatibilityOptions>> templates = new HashMap<>();
@Override @Override
public void initialize() { public void initialize() {
eventManager.registerListener(this, this); eventManager
} .register(ConfigPackPreLoadEvent.class)
.then(event -> {
@Global
public void onPackLoad(ConfigPackPreLoadEvent event) {
PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions(); PreLoadCompatibilityOptions template = new PreLoadCompatibilityOptions();
try { try {
event.loadTemplate(template); event.loadTemplate(template);
@@ -317,12 +310,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
}); });
} }
templates.put(event.getPack(), Pair.of(template, null)); templates.put(event.getPack(), Pair.of(template, null));
})
.global();
} eventManager
.register(ConfigPackPostLoadEvent.class)
@Priority(Priority.HIGHEST) .then(event -> {
@Global
public void createInjectionOptions(ConfigPackPostLoadEvent event) {
PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions(); PostLoadCompatibilityOptions template = new PostLoadCompatibilityOptions();
try { try {
@@ -332,24 +325,32 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
} }
templates.get(event.getPack()).setRight(template); templates.get(event.getPack()).setRight(template);
} })
.priority(100)
.global();
@Global eventManager
public void injectBiomes(BiomeRegistrationEvent event) { .register(BiomeRegistrationEvent.class)
.then(event -> {
logger.info("Registering biomes..."); logger.info("Registering biomes...");
Registry<Biome> biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY); Registry<Biome> biomeRegistry = event.getRegistryManager().get(Registry.BIOME_KEY);
configRegistry.forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes. configRegistry.forEach(pack -> pack.getCheckedRegistry(TerraBiome.class).forEach((id, biome) -> FabricUtil.registerOrOverwrite(biomeRegistry, Registry.BIOME_KEY, new Identifier("terra", FabricUtil.createBiomeID(pack, id)), FabricUtil.createBiome(biome, pack, event.getRegistryManager())))); // Register all Terra biomes.
logger.info("Biomes registered."); logger.info("Biomes registered.");
} })
.global();
@Global eventManager
public void initializePacks(GameInitializationEvent event) { .register(GameInitializationEvent.class)
.then(event -> {
TerraFabricPlugin main = TerraFabricPlugin.getInstance(); TerraFabricPlugin main = TerraFabricPlugin.getInstance();
main.logger().info("Loading config packs..."); main.logger().info("Loading config packs...");
configRegistry.loadAll(TerraFabricPlugin.this); configRegistry.loadAll(TerraFabricPlugin.this);
logger.info("Loaded packs."); logger.info("Loaded packs.");
})
.global();
} }
private void injectTree(CheckedRegistry<Tree> registry, String id, ConfiguredFeature<?, ?> tree) { private void injectTree(CheckedRegistry<Tree> registry, String id, ConfiguredFeature<?, ?> tree) {
try { try {
registry.register(id, (Tree) tree); registry.register(id, (Tree) tree);