config loading w/o errors

This commit is contained in:
dfsek
2021-06-02 10:26:55 -07:00
parent aaf32709b4
commit 44410323af
4 changed files with 125 additions and 15 deletions

View File

@@ -3,27 +3,38 @@ package com.dfsek.terra.sponge;
import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.addons.annotations.Addon;
import com.dfsek.terra.api.addons.annotations.Author;
import com.dfsek.terra.api.addons.annotations.Version;
import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.TerraEventManager;
import com.dfsek.terra.api.event.annotations.Global;
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.LockedRegistry;
import com.dfsek.terra.api.util.logging.DebugLogger;
import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.profiler.Profiler;
import com.dfsek.terra.profiler.ProfilerImpl;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
import com.dfsek.terra.registry.master.AddonRegistry;
import com.dfsek.terra.registry.master.ConfigRegistry;
import com.dfsek.terra.sponge.world.SpongeWorldHandle;
import com.dfsek.terra.sponge.handle.SpongeItemHandle;
import com.dfsek.terra.sponge.handle.SpongeWorldHandle;
import com.dfsek.terra.sponge.world.SpongeTree;
import com.dfsek.terra.world.TerraWorld;
import com.google.inject.Inject;
import org.apache.logging.log4j.Logger;
import org.spongepowered.api.Server;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.config.ConfigDir;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.lifecycle.StartedEngineEvent;
import org.spongepowered.plugin.PluginContainer;
@@ -32,25 +43,31 @@ import org.spongepowered.plugin.jvm.Plugin;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
@Plugin("terra")
public class TerraSpongePlugin implements TerraPlugin {
private final ConfigRegistry configRegistry = new ConfigRegistry();
private final CheckedRegistry<ConfigPack> packCheckedRegistry = new CheckedRegistry<>(configRegistry);
private final PluginConfig config = new PluginConfig();
private final AddonRegistry addonRegistry = new AddonRegistry(this);
private final LockedRegistry<TerraAddon> addonLockedRegistry = new LockedRegistry<>(addonRegistry);
private final SpongeWorldHandle spongeWorldHandle = new SpongeWorldHandle();
private final EventManager eventManager = new TerraEventManager(this);
private final AddonRegistry addonRegistry;
private final LockedRegistry<TerraAddon> addonLockedRegistry;
private final PluginContainer plugin;
private final GenericLoaders loaders = new GenericLoaders(this);
private final WorldHandle worldHandle = new SpongeWorldHandle();
Profiler profiler = new ProfilerImpl();
@Inject
public TerraSpongePlugin(PluginContainer plugin) {
this.plugin = plugin;
this.addonRegistry = new AddonRegistry(new SpongeAddon(this), this);
this.addonLockedRegistry = new LockedRegistry<>(addonRegistry);
}
@@ -64,12 +81,13 @@ public class TerraSpongePlugin implements TerraPlugin {
@Override
public void register(TypeRegistry registry) {
loaders.register(registry);
registry.registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o));
}
@Override
public WorldHandle getWorldHandle() {
return spongeWorldHandle;
return worldHandle;
}
@Override
@@ -123,7 +141,7 @@ public class TerraSpongePlugin implements TerraPlugin {
@Override
public ItemHandle getItemHandle() {
return null;
return new SpongeItemHandle();
}
@Override
@@ -138,7 +156,7 @@ public class TerraSpongePlugin implements TerraPlugin {
@Override
public DebugLogger getDebugLogger() {
return null;
return new DebugLogger(logger());
}
@Override
@@ -148,6 +166,55 @@ public class TerraSpongePlugin implements TerraPlugin {
@Override
public Profiler getProfiler() {
return null;
return profiler;
}
@Addon("Terra-Sponge")
@Author("Terra")
@Version("1.0.0")
private static final class SpongeAddon extends TerraAddon implements EventListener {
private final TerraPlugin main;
private SpongeAddon(TerraPlugin main) {
this.main = main;
}
@Override
public void initialize() {
main.getEventManager().registerListener(this, this);
}
@Global
public void onPackLoad(ConfigPackPreLoadEvent event) {
CheckedRegistry<Tree> treeRegistry = event.getPack().getTreeRegistry();
injectTree(treeRegistry, "BROWN_MUSHROOM", new SpongeTree());
injectTree(treeRegistry, "RED_MUSHROOM", new SpongeTree());
injectTree(treeRegistry, "JUNGLE", new SpongeTree());
injectTree(treeRegistry, "JUNGLE_COCOA", new SpongeTree());
injectTree(treeRegistry, "LARGE_OAK", new SpongeTree());
injectTree(treeRegistry, "LARGE_SPRUCE", new SpongeTree());
injectTree(treeRegistry, "SMALL_JUNGLE", new SpongeTree());
injectTree(treeRegistry, "SWAMP_OAK", new SpongeTree());
injectTree(treeRegistry, "TALL_BIRCH", new SpongeTree());
injectTree(treeRegistry, "ACACIA", new SpongeTree());
injectTree(treeRegistry, "BIRCH", new SpongeTree());
injectTree(treeRegistry, "DARK_OAK", new SpongeTree());
injectTree(treeRegistry, "OAK", new SpongeTree());
injectTree(treeRegistry, "CHORUS_PLANT", new SpongeTree());
injectTree(treeRegistry, "SPRUCE", new SpongeTree());
injectTree(treeRegistry, "JUNGLE_BUSH", new SpongeTree());
injectTree(treeRegistry, "MEGA_SPRUCE", new SpongeTree());
injectTree(treeRegistry, "CRIMSON_FUNGUS", new SpongeTree());
injectTree(treeRegistry, "WARPED_FUNGUS", new SpongeTree());
}
private void injectTree(CheckedRegistry<Tree> registry, String id, Tree tree) {
try {
registry.add(id, tree);
} catch(DuplicateEntryException e) {
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,24 @@
package com.dfsek.terra.sponge.handle;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.inventory.Item;
import com.dfsek.terra.api.platform.inventory.item.Enchantment;
import java.util.Set;
public class SpongeItemHandle implements ItemHandle {
@Override
public Item createItem(String data) {
return null;
}
@Override
public Enchantment getEnchantment(String id) {
return null;
}
@Override
public Set<Enchantment> getEnchantments() {
return null;
}
}

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.sponge.world;
package com.dfsek.terra.sponge.handle;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.entity.EntityType;

View File

@@ -0,0 +1,19 @@
package com.dfsek.terra.sponge.world;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.util.collections.MaterialSet;
import java.util.Random;
public class SpongeTree implements Tree {
@Override
public boolean plant(Location l, Random r) {
return false;
}
@Override
public MaterialSet getSpawnable() {
return MaterialSet.empty();
}
}