mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
start working on mixins
This commit is contained in:
parent
74fdf9a18e
commit
eca46a7c64
@ -17,6 +17,10 @@ repositories {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
"compileOnly"("org.spongepowered:spongeapi:8.0.0-SNAPSHOT")
|
"compileOnly"("org.spongepowered:spongeapi:8.0.0-SNAPSHOT")
|
||||||
|
|
||||||
|
"annotationProcessor"("org.spongepowered:mixin:0.8.2:processor")
|
||||||
|
|
||||||
|
"compileOnly"("org.spongepowered:mixin:0.8.2")
|
||||||
"shadedApi"(project(":common"))
|
"shadedApi"(project(":common"))
|
||||||
"shadedImplementation"("org.yaml:snakeyaml:1.27")
|
"shadedImplementation"("org.yaml:snakeyaml:1.27")
|
||||||
"shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1")
|
"shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1")
|
||||||
@ -35,3 +39,11 @@ minecraft {
|
|||||||
client()
|
client()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.named<Jar>("jar") {
|
||||||
|
manifest {
|
||||||
|
attributes(
|
||||||
|
mapOf("MixinConfigs" to "terra.mixins.json")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -192,6 +192,10 @@ public class TerraSpongePlugin implements TerraPlugin {
|
|||||||
return profiler;
|
return profiler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<DimensionType,Pair<ServerWorld, TerraWorld>> getWorldMap() {
|
||||||
|
return worldMap;
|
||||||
|
}
|
||||||
|
|
||||||
@Addon("Terra-Sponge")
|
@Addon("Terra-Sponge")
|
||||||
@Author("Terra")
|
@Author("Terra")
|
||||||
@Version("1.0.0")
|
@Version("1.0.0")
|
||||||
|
@ -3,7 +3,7 @@ package com.dfsek.terra.sponge.handle;
|
|||||||
import com.dfsek.terra.api.platform.block.BlockData;
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
import com.dfsek.terra.api.platform.entity.EntityType;
|
import com.dfsek.terra.api.platform.entity.EntityType;
|
||||||
import com.dfsek.terra.api.platform.handle.WorldHandle;
|
import com.dfsek.terra.api.platform.handle.WorldHandle;
|
||||||
import com.dfsek.terra.sponge.SpongeAdapter;
|
import com.dfsek.terra.sponge.intern.util.SpongeAdapter;
|
||||||
import org.spongepowered.api.Sponge;
|
import org.spongepowered.api.Sponge;
|
||||||
import org.spongepowered.api.block.BlockState;
|
import org.spongepowered.api.block.BlockState;
|
||||||
|
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.dfsek.terra.sponge.intern.mixin;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||||
|
import com.dfsek.terra.sponge.TerraSpongePlugin;
|
||||||
|
import com.dfsek.terra.sponge.intern.SpongeChunkGeneratorWrapper;
|
||||||
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
|
import net.minecraft.server.level.ServerChunkCache;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.dimension.DimensionType;
|
||||||
|
import org.spongepowered.api.world.server.ServerWorld;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
|
@Mixin(ServerLevel.class)
|
||||||
|
public abstract class ServerLevelMixin {
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private ServerChunkCache chunkSource;
|
||||||
|
|
||||||
|
@Redirect(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;updateSkyBrightness()V"))
|
||||||
|
public void injectConstructor(Level level) {
|
||||||
|
if(chunkSource.getGenerator() instanceof SpongeChunkGeneratorWrapper) {
|
||||||
|
SpongeChunkGeneratorWrapper chunkGeneratorWrapper = (SpongeChunkGeneratorWrapper) chunkSource.getGenerator();
|
||||||
|
DimensionType dimensionType = ((Level) (Object) this).dimensionType();
|
||||||
|
TerraSpongePlugin.getInstance().getWorldMap().put(dimensionType, Pair.of((ServerWorld) this, new TerraWorld((com.dfsek.terra.api.platform.world.World) this, chunkGeneratorWrapper.getPack(), TerraSpongePlugin.getInstance())));
|
||||||
|
chunkGeneratorWrapper.setDimensionType(dimensionType);
|
||||||
|
TerraSpongePlugin.getInstance().logger().info("Registered world " + this + " to dimension type " + dimensionType);
|
||||||
|
}
|
||||||
|
((Level) (Object) this).updateSkyBrightness();
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,10 @@
|
|||||||
package com.dfsek.terra.sponge.intern.util;
|
package com.dfsek.terra.sponge.intern.util;
|
||||||
|
|
||||||
import com.dfsek.terra.api.math.vector.Vector3;
|
import com.dfsek.terra.api.math.vector.Vector3;
|
||||||
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
|
import com.dfsek.terra.sponge.world.block.data.SpongeBlockData;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
import org.spongepowered.api.block.BlockState;
|
||||||
|
|
||||||
public final class SpongeAdapter {
|
public final class SpongeAdapter {
|
||||||
public static Vector3 adapt(BlockPos pos) {
|
public static Vector3 adapt(BlockPos pos) {
|
||||||
@ -11,4 +14,8 @@ public final class SpongeAdapter {
|
|||||||
public static BlockPos adapt(Vector3 vec) {
|
public static BlockPos adapt(Vector3 vec) {
|
||||||
return new BlockPos(vec.getBlockX(), vec.getBlockY(), vec.getBlockZ());
|
return new BlockPos(vec.getBlockX(), vec.getBlockY(), vec.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static BlockData adapt(BlockState state) {
|
||||||
|
return new SpongeBlockData(state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
1
platforms/sponge/src/main/resources/META-INF/MANIFEST.MF
Normal file
1
platforms/sponge/src/main/resources/META-INF/MANIFEST.MF
Normal file
@ -0,0 +1 @@
|
|||||||
|
MixinConfigs: terra.mixins.json
|
17
platforms/sponge/src/main/resources/terra.mixins.json
Normal file
17
platforms/sponge/src/main/resources/terra.mixins.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"package": "com.dfsek.terra.sponge.intern.mixin",
|
||||||
|
"compatibilityLevel": "JAVA_8",
|
||||||
|
"refmap": "terra-refmap.json",
|
||||||
|
"mixins": [
|
||||||
|
"ServerLevelMixin"
|
||||||
|
],
|
||||||
|
"client": [
|
||||||
|
],
|
||||||
|
"server": [
|
||||||
|
],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
},
|
||||||
|
"minVersion": "0.8"
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user