mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 10:30:42 +00:00
begin sponge impl
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
plugins {
|
||||
id("org.spongepowered.plugin").version("0.9.0")
|
||||
id("org.spongepowered.gradle.vanilla").version("0.2")
|
||||
}
|
||||
|
||||
@@ -9,16 +8,16 @@ repositories {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
"shadedApi"(project(":common:implementation"))
|
||||
annotationProcessor(implementation("org.spongepowered:spongeapi:9.0.0-SNAPSHOT")!!)
|
||||
annotationProcessor("org.spongepowered:mixin:0.8.2:processor")
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_16
|
||||
targetCompatibility = JavaVersion.VERSION_16
|
||||
}
|
||||
|
||||
sponge {
|
||||
plugin {
|
||||
id = "terra"
|
||||
}
|
||||
dependencies {
|
||||
"shadedApi"(project(":common:implementation"))
|
||||
"annotationProcessor"("org.spongepowered:spongeapi:9.0.0-SNAPSHOT")
|
||||
"shadedImplementation"("org.spongepowered:spongeapi:9.0.0-SNAPSHOT")
|
||||
"annotationProcessor"("org.spongepowered:mixin:0.8.2:processor")
|
||||
}
|
||||
|
||||
minecraft {
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.dfsek.terra.sponge;
|
||||
|
||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||
import org.spongepowered.api.Server;
|
||||
import org.spongepowered.api.event.Listener;
|
||||
import org.spongepowered.api.event.lifecycle.StartingEngineEvent;
|
||||
|
||||
public class SpongeListener {
|
||||
private final TerraSpongePlugin plugin;
|
||||
|
||||
public SpongeListener(TerraSpongePlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Listener
|
||||
public void initialize(StartingEngineEvent<Server> event) {
|
||||
plugin.getTerraPlugin().getEventManager().callEvent(new PlatformInitializationEvent());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.dfsek.terra.sponge;
|
||||
|
||||
import com.dfsek.terra.AbstractTerraPlugin;
|
||||
import com.dfsek.terra.api.Logger;
|
||||
import com.dfsek.terra.api.handle.ItemHandle;
|
||||
import com.dfsek.terra.api.handle.WorldHandle;
|
||||
import com.dfsek.terra.sponge.handle.SpongeWorldHandle;
|
||||
import org.spongepowered.api.Sponge;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
||||
public class TerraPluginImpl extends AbstractTerraPlugin {
|
||||
private final TerraSpongePlugin plugin;
|
||||
private final SpongeWorldHandle worldHandle = new SpongeWorldHandle();
|
||||
public TerraPluginImpl(TerraSpongePlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorldHandle getWorldHandle() {
|
||||
return worldHandle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getDataFolder() {
|
||||
return Sponge.configManager().pluginConfig(plugin.getPluginContainer()).directory().toFile();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean reload() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemHandle getItemHandle() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String platformName() {
|
||||
return "Sponge";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Logger createLogger() {
|
||||
return new Logger() {
|
||||
@Override
|
||||
public void info(String message) {
|
||||
plugin.getPluginContainer().logger().info(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warning(String message) {
|
||||
plugin.getPluginContainer().logger().warn(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void severe(String message) {
|
||||
plugin.getPluginContainer().logger().error(message);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.dfsek.terra.sponge;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import org.spongepowered.plugin.PluginContainer;
|
||||
import org.spongepowered.plugin.jvm.Plugin;
|
||||
|
||||
@Plugin("terra")
|
||||
public class TerraSpongePlugin {
|
||||
private final PluginContainer plugin;
|
||||
private final TerraPluginImpl terraPlugin;
|
||||
@Inject
|
||||
public TerraSpongePlugin(PluginContainer plugin) {
|
||||
this.plugin = plugin;
|
||||
this.terraPlugin = new TerraPluginImpl(this);
|
||||
}
|
||||
|
||||
public PluginContainer getPluginContainer() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public TerraPluginImpl getTerraPlugin() {
|
||||
return terraPlugin;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.dfsek.terra.sponge.block;
|
||||
|
||||
import com.dfsek.terra.api.block.BlockType;
|
||||
import com.dfsek.terra.api.block.state.BlockState;
|
||||
import com.dfsek.terra.api.block.state.properties.Property;
|
||||
import org.spongepowered.api.block.BlockTypes;
|
||||
|
||||
public class SpongeBlockState implements BlockState {
|
||||
private final org.spongepowered.api.block.BlockState delegate;
|
||||
|
||||
public SpongeBlockState(org.spongepowered.api.block.BlockState delegate) {
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public org.spongepowered.api.block.BlockState getHandle() {
|
||||
return delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockType getBlockType() {
|
||||
return new SpongeBlockType(delegate.type());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(BlockState other) {
|
||||
return delegate.type().equals(((SpongeBlockType) other.getBlockType()).getHandle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState clone() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAsString() {
|
||||
return delegate.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAir() {
|
||||
return delegate.type().equals(BlockTypes.AIR.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStructureVoid() {
|
||||
return delegate.type().equals(BlockTypes.STRUCTURE_VOID.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean has(Property<T> property) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T get(Property<T> property) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> BlockState set(Property<T> property, T value) {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.dfsek.terra.sponge.block;
|
||||
|
||||
import com.dfsek.terra.api.block.BlockType;
|
||||
import com.dfsek.terra.api.block.state.BlockState;
|
||||
import org.spongepowered.api.block.BlockTypes;
|
||||
import org.spongepowered.api.data.Keys;
|
||||
|
||||
public class SpongeBlockType implements BlockType {
|
||||
private final org.spongepowered.api.block.BlockType delegate;
|
||||
|
||||
public SpongeBlockType(org.spongepowered.api.block.BlockType delegate) {
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public org.spongepowered.api.block.BlockType getHandle() {
|
||||
return delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getDefaultData() {
|
||||
return new SpongeBlockState(delegate.defaultState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSolid() {
|
||||
return !delegate.getOrElse(Keys.IS_SOLID, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWater() {
|
||||
return delegate.equals(BlockTypes.WATER.get());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.dfsek.terra.sponge.handle;
|
||||
|
||||
import com.dfsek.terra.api.block.state.BlockState;
|
||||
import com.dfsek.terra.api.entity.EntityType;
|
||||
import com.dfsek.terra.api.handle.WorldHandle;
|
||||
import com.dfsek.terra.sponge.block.SpongeBlockState;
|
||||
import org.spongepowered.api.block.BlockTypes;
|
||||
|
||||
public class SpongeWorldHandle implements WorldHandle {
|
||||
private final SpongeBlockState air;
|
||||
|
||||
public SpongeWorldHandle() {
|
||||
air = new SpongeBlockState(BlockTypes.AIR.get().defaultState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState createBlockData(String data) {
|
||||
return new SpongeBlockState(org.spongepowered.api.block.BlockState.fromString(data));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState air() {
|
||||
return air;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getEntity(String id) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
24
platforms/sponge/src/main/resources/META-INF/plugins.json
Normal file
24
platforms/sponge/src/main/resources/META-INF/plugins.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"plugins": [
|
||||
{
|
||||
"loader": "java_plain",
|
||||
"id": "terra",
|
||||
"name": "Terra",
|
||||
"version": "@VERSION@",
|
||||
"main-class": "com.dfsek.terra.sponge.TerraSpongePlugin",
|
||||
"description": "@DESCRIPTION@",
|
||||
"links": {
|
||||
"source": "@SOURCE@",
|
||||
"issues": "@ISSUES@"
|
||||
},
|
||||
"contributors": [
|
||||
],
|
||||
"dependencies": [
|
||||
{
|
||||
"id": "spongeapi",
|
||||
"version": "9.0.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user