mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-19 15:20:55 +00:00
begin sponge impl
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("org.spongepowered.plugin").version("0.9.0")
|
|
||||||
id("org.spongepowered.gradle.vanilla").version("0.2")
|
id("org.spongepowered.gradle.vanilla").version("0.2")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9,16 +8,16 @@ repositories {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
java {
|
||||||
"shadedApi"(project(":common:implementation"))
|
sourceCompatibility = JavaVersion.VERSION_16
|
||||||
annotationProcessor(implementation("org.spongepowered:spongeapi:9.0.0-SNAPSHOT")!!)
|
targetCompatibility = JavaVersion.VERSION_16
|
||||||
annotationProcessor("org.spongepowered:mixin:0.8.2:processor")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sponge {
|
dependencies {
|
||||||
plugin {
|
"shadedApi"(project(":common:implementation"))
|
||||||
id = "terra"
|
"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 {
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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