mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-19 15:20:55 +00:00
feat: more works
This commit is contained in:
@@ -11,6 +11,8 @@ import org.allaymc.api.block.property.type.BlockPropertyType.BlockPropertyValue;
|
|||||||
import org.allaymc.api.block.registry.BlockTypeRegistry;
|
import org.allaymc.api.block.registry.BlockTypeRegistry;
|
||||||
import org.allaymc.api.block.type.BlockState;
|
import org.allaymc.api.block.type.BlockState;
|
||||||
import org.allaymc.api.block.type.BlockTypes;
|
import org.allaymc.api.block.type.BlockTypes;
|
||||||
|
import org.allaymc.api.entity.registry.EntityTypeRegistry;
|
||||||
|
import org.allaymc.api.entity.type.EntityType;
|
||||||
import org.allaymc.api.utils.Identifier;
|
import org.allaymc.api.utils.Identifier;
|
||||||
import org.allaymc.api.utils.JSONUtils;
|
import org.allaymc.api.utils.JSONUtils;
|
||||||
|
|
||||||
|
|||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
package org.allaymc.terra.allay.delegate;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.entity.EntityType;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Terra Project 2024/6/16
|
|
||||||
*
|
|
||||||
* 我们暂时不支持实体,因为端本身都没实体ai,生成实体没有意义
|
|
||||||
*
|
|
||||||
* @author daoge_cmd
|
|
||||||
*/
|
|
||||||
public record AllayEntityTypeHandle(String id) implements EntityType {
|
|
||||||
@Override
|
|
||||||
public String getHandle() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+39
-13
@@ -10,22 +10,37 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
|||||||
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
|
import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
|
||||||
|
|
||||||
|
import org.allaymc.api.world.chunk.UnsafeChunk;
|
||||||
|
import org.allaymc.terra.allay.Mapping;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Terra Project 2024/6/16
|
* Terra Project 2024/6/16
|
||||||
*
|
*
|
||||||
* @author daoge_cmd
|
* @author daoge_cmd
|
||||||
*/
|
*/
|
||||||
public record AllayProtoWorld(ServerWorld serverWorld, int centerChunkX, int centerChunkZ) implements ProtoWorld {
|
public record AllayProtoWorld(AllayServerWorld allayServerWorld, UnsafeChunk centerChunk) implements ProtoWorld {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int centerChunkX() {
|
||||||
|
return centerChunk.getX();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int centerChunkZ() {
|
||||||
|
return centerChunk.getZ();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ServerWorld getWorld() {
|
public ServerWorld getWorld() {
|
||||||
return serverWorld;
|
return allayServerWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBlockState(int x, int y, int z, BlockState data, boolean physics) {
|
public void setBlockState(int x, int y, int z, BlockState data, boolean physics) {
|
||||||
serverWorld.setBlockState(x, y, z, data, physics);
|
if(isInRegin(x, y, z)) {
|
||||||
|
centerChunk.setBlockState(x & 15, y, z & 15, ((AllayBlockState)data).allayBlockState());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -36,7 +51,11 @@ public record AllayProtoWorld(ServerWorld serverWorld, int centerChunkX, int cen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getBlockState(int x, int y, int z) {
|
public BlockState getBlockState(int x, int y, int z) {
|
||||||
return serverWorld.getBlockState(x, y, z);
|
if(isInRegin(x, y, z)) {
|
||||||
|
var blockState = centerChunk.getBlockState(x & 15, y, z & 15);
|
||||||
|
return new AllayBlockState(blockState, Mapping.blockStateBeToJe(blockState));
|
||||||
|
}
|
||||||
|
return AllayBlockState.AIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -47,36 +66,43 @@ public record AllayProtoWorld(ServerWorld serverWorld, int centerChunkX, int cen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ChunkGenerator getGenerator() {
|
public ChunkGenerator getGenerator() {
|
||||||
return serverWorld.getGenerator();
|
return allayServerWorld.getGenerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BiomeProvider getBiomeProvider() {
|
public BiomeProvider getBiomeProvider() {
|
||||||
return serverWorld.getBiomeProvider();
|
return allayServerWorld.getBiomeProvider();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigPack getPack() {
|
public ConfigPack getPack() {
|
||||||
return serverWorld.getPack();
|
return allayServerWorld.getPack();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getSeed() {
|
public long getSeed() {
|
||||||
return serverWorld.getSeed();
|
return allayServerWorld.getSeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxHeight() {
|
public int getMaxHeight() {
|
||||||
return serverWorld.getMaxHeight();
|
return allayServerWorld.getMaxHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMinHeight() {
|
public int getMinHeight() {
|
||||||
return serverWorld.getMinHeight();
|
return allayServerWorld.getMinHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ServerWorld getHandle() {
|
public AllayServerWorld getHandle() {
|
||||||
return serverWorld;
|
return allayServerWorld;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private boolean isInRegin(int x, int y, int z) {
|
||||||
|
return
|
||||||
|
x >= centerChunkX() && x < centerChunkX() + 16 &&
|
||||||
|
z >= centerChunkZ() && z < centerChunkZ() + 16 &&
|
||||||
|
y >= getMinHeight() && y <= getMaxHeight();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -74,7 +74,7 @@ public class AllayGeneratorWrapper extends WorldGenerator implements GeneratorWr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var tmp = new AllayProtoWorld(new AllayServerWorld(this, dimension), chunkX, chunkZ);
|
var tmp = new AllayProtoWorld(new AllayServerWorld(this, dimension), chunk);
|
||||||
try {
|
try {
|
||||||
for (var generationStage : configPack.getStages()) {
|
for (var generationStage : configPack.getStages()) {
|
||||||
generationStage.populate(tmp);
|
generationStage.populate(tmp);
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import com.dfsek.terra.api.handle.WorldHandle;
|
|||||||
import org.allaymc.terra.allay.JeBlockState;
|
import org.allaymc.terra.allay.JeBlockState;
|
||||||
import org.allaymc.terra.allay.Mapping;
|
import org.allaymc.terra.allay.Mapping;
|
||||||
import org.allaymc.terra.allay.delegate.AllayBlockState;
|
import org.allaymc.terra.allay.delegate.AllayBlockState;
|
||||||
import org.allaymc.terra.allay.delegate.AllayEntityTypeHandle;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
|
||||||
@@ -31,6 +30,7 @@ public class AllayWorldHandle implements WorldHandle {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull EntityType getEntity(@NotNull String id) {
|
public @NotNull EntityType getEntity(@NotNull String id) {
|
||||||
return new AllayEntityTypeHandle(id);
|
// TODO: 我们暂时不支持实体,因为端本身都没实体ai,生成实体没有意义
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user