diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts index 9880b8c93..feabcda9d 100644 --- a/platforms/sponge/build.gradle.kts +++ b/platforms/sponge/build.gradle.kts @@ -15,7 +15,7 @@ repositories { } dependencies { - "compileOnly"("org.spongepowered:spongeapi:7.2.0") + "compileOnly"("org.spongepowered:spongeapi:8.0.0-SNAPSHOT") "shadedApi"(project(":common")) "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1") diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java index 1ead85e8d..838ccd58a 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeLogger.java @@ -3,9 +3,9 @@ package com.dfsek.terra.sponge; import com.dfsek.terra.api.util.logging.Logger; public class SpongeLogger implements Logger { - private final org.slf4j.Logger logger; + private final org.apache.logging.log4j.Logger logger; - public SpongeLogger(org.slf4j.Logger logger) { + public SpongeLogger(org.apache.logging.log4j.Logger logger) { this.logger = logger; } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 536850875..162c04010 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -20,17 +20,21 @@ import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.sponge.world.SpongeWorldHandle; import com.dfsek.terra.world.TerraWorld; import com.google.inject.Inject; -import org.slf4j.Logger; +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.game.state.GameStartedServerEvent; -import org.spongepowered.api.plugin.Plugin; +import org.spongepowered.api.event.lifecycle.StartedEngineEvent; +import org.spongepowered.plugin.PluginContainer; +import org.spongepowered.plugin.jvm.Plugin; + import java.io.File; import java.io.IOException; import java.nio.file.Path; -@Plugin(id = "terra", name = "Terra-Sponge", version = "", description = "Terra") +@Plugin("terra") public class TerraSpongePlugin implements TerraPlugin { private final ConfigRegistry configRegistry = new ConfigRegistry(); private final CheckedRegistry packCheckedRegistry = new CheckedRegistry<>(configRegistry); @@ -42,16 +46,18 @@ public class TerraSpongePlugin implements TerraPlugin { private final EventManager eventManager = new TerraEventManager(this); - @Inject - @ConfigDir(sharedRoot = false) - private Path privateConfigDir; + private final PluginContainer plugin; @Inject - private Logger logger; + public TerraSpongePlugin(PluginContainer plugin) { + this.plugin = plugin; + } @Listener - public void initialize(GameStartedServerEvent event) { + public void initialize(StartedEngineEvent event) { + plugin.logger().info("Loading Terra..."); + plugin.logger().info("Config: " + getDataFolder()); addonRegistry.loadAll(); configRegistry.loadAll(this); } @@ -73,7 +79,7 @@ public class TerraSpongePlugin implements TerraPlugin { @Override public com.dfsek.terra.api.util.logging.Logger logger() { - return new SpongeLogger(logger); + return new SpongeLogger(plugin.logger()); } @Override @@ -83,7 +89,7 @@ public class TerraSpongePlugin implements TerraPlugin { @Override public File getDataFolder() { - return privateConfigDir.toFile(); + return Sponge.configManager().pluginConfig(plugin).directory().toFile(); } @Override diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java index 422229ba9..11a375d31 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/world/SpongeWorldHandle.java @@ -10,7 +10,7 @@ import org.spongepowered.api.block.BlockState; public class SpongeWorldHandle implements WorldHandle { @Override public BlockData createBlockData(String data) { - return SpongeAdapter.adapt(Sponge.getRegistry().getType(BlockState.class, data).orElseThrow(() -> new IllegalArgumentException("Invalid block data \"" + data + "\""))); + return SpongeAdapter.adapt(BlockState.fromString(data)); } @Override diff --git a/platforms/sponge/src/main/resources/META-INF/plugins.json b/platforms/sponge/src/main/resources/META-INF/plugins.json new file mode 100644 index 000000000..91f9a6926 --- /dev/null +++ b/platforms/sponge/src/main/resources/META-INF/plugins.json @@ -0,0 +1,18 @@ +{ + "plugins": [ + { + "loader": "java_plain", + "id": "terra", + "name": "Terra", + "version": "@VERSION@", + "main-class": "com.dfsek.terra.sponge.TerraSpongePlugin", + "description": "@DESCRIPTION@", + "dependencies": [ + { + "id": "spongeapi", + "version": "8.0.0" + } + ] + } + ] +} \ No newline at end of file