use event API for registration of Bukkit trees

This commit is contained in:
dfsek
2021-02-16 12:57:35 -07:00
parent 48296fb14a
commit 06cd1dc562
4 changed files with 26 additions and 20 deletions

View File

@@ -7,7 +7,6 @@ import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.debug.DebugLogger;
import com.dfsek.terra.registry.ConfigRegistry;
import com.dfsek.terra.world.TerraWorld;
@@ -42,13 +41,6 @@ public interface TerraPlugin extends LoaderRegistrar {
String platformName();
default void packPreLoadCallback(ConfigPack pack) {
}
default void packPostLoadCallback(ConfigPack pack) {
}
DebugLogger getDebugLogger();

View File

@@ -198,7 +198,7 @@ public class ConfigPack implements LoaderRegistrar {
private void load(long start, TerraPlugin main) throws ConfigException {
main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this));
main.packPreLoadCallback(this);
for(Map.Entry<String, Double> var : template.getVariables().entrySet()) {
varScope.create(var.getKey(), var.getValue());
}
@@ -230,7 +230,6 @@ public class ConfigPack implements LoaderRegistrar {
.open("structures/structures", ".yml").then(streams -> buildAll(new StructureFactory(), structureRegistry, abstractConfigLoader.load(streams, StructureTemplate::new), main)).close()
.open("flora", ".yml").then(streams -> buildAll(new FloraFactory(), floraRegistry, abstractConfigLoader.load(streams, FloraTemplate::new), main)).close()
.open("biomes", ".yml").then(streams -> buildAll(new BiomeFactory(this), biomeRegistry, abstractConfigLoader.load(streams, () -> new BiomeTemplate(this, main)), main)).close();
main.packPostLoadCallback(this);
main.getEventManager().callEvent(new ConfigPackPostLoadEvent(this));
LangUtil.log("config-pack.loaded", Level.INFO, template.getID(), String.valueOf((System.nanoTime() - start) / 1000000D), template.getAuthor(), template.getVersion());

View File

@@ -18,10 +18,9 @@ import com.dfsek.terra.bukkit.handles.BukkitWorldHandle;
import com.dfsek.terra.bukkit.listeners.CommonListener;
import com.dfsek.terra.bukkit.listeners.PaperListener;
import com.dfsek.terra.bukkit.listeners.SpigotListener;
import com.dfsek.terra.bukkit.listeners.TerraListener;
import com.dfsek.terra.bukkit.util.PaperUtil;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitBiome;
import com.dfsek.terra.bukkit.world.BukkitTree;
import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.LangUtil;
@@ -34,7 +33,6 @@ import com.dfsek.terra.world.generation.MasterChunkGenerator;
import io.papermc.lib.PaperLib;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.TreeType;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.EntityType;
import org.bukkit.generator.ChunkGenerator;
@@ -103,13 +101,6 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
this.handle = handle;
}
@Override
public void packPreLoadCallback(ConfigPack pack) {
for(TreeType value : TreeType.values()) {
pack.getTreeRegistry().add(BukkitAdapter.TREE_TRANSFORMER.translate(value), new BukkitTree(value, this));
}
}
@Override
public DebugLogger getDebugLogger() {
return debugLogger;
@@ -129,6 +120,8 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
public void onEnable() {
debugLogger = new DebugLogger(getLogger());
eventManager.registerListener(new TerraListener(this)); // Register tree injection event
getLogger().info("Running on version " + BUKKIT_VERSION);
if(BUKKIT_VERSION.equals(Version.UNKNOWN)) {
getLogger().warning("Terra is running on an unknown Bukkit version. Proceed with caution.");

View File

@@ -0,0 +1,22 @@
package com.dfsek.terra.bukkit.listeners;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.api.core.event.EventListener;
import com.dfsek.terra.api.core.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitTree;
import org.bukkit.TreeType;
public class TerraListener implements EventListener {
private final TerraPlugin main;
public TerraListener(TerraPlugin main) {
this.main = main;
}
public void injectTrees(ConfigPackPreLoadEvent event) {
for(TreeType value : TreeType.values()) {
event.getPack().getTreeRegistry().add(BukkitAdapter.TREE_TRANSFORMER.translate(value), new BukkitTree(value, main));
}
}
}