mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-05 07:16:10 +00:00
config loading w/o errors
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user