feat: more works

This commit is contained in:
daoge_cmd
2024-06-16 15:02:42 +08:00
parent 2b125414c9
commit 62e589870d
5 changed files with 44 additions and 34 deletions

View File

@@ -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.type.BlockState;
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.JSONUtils;

View File

@@ -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;
}
}

View File

@@ -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.ProtoWorld;
import org.allaymc.api.world.chunk.UnsafeChunk;
import org.allaymc.terra.allay.Mapping;
/**
* Terra Project 2024/6/16
*
* @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
public ServerWorld getWorld() {
return serverWorld;
return allayServerWorld;
}
@Override
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
@@ -36,7 +51,11 @@ public record AllayProtoWorld(ServerWorld serverWorld, int centerChunkX, int cen
@Override
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
@@ -47,36 +66,43 @@ public record AllayProtoWorld(ServerWorld serverWorld, int centerChunkX, int cen
@Override
public ChunkGenerator getGenerator() {
return serverWorld.getGenerator();
return allayServerWorld.getGenerator();
}
@Override
public BiomeProvider getBiomeProvider() {
return serverWorld.getBiomeProvider();
return allayServerWorld.getBiomeProvider();
}
@Override
public ConfigPack getPack() {
return serverWorld.getPack();
return allayServerWorld.getPack();
}
@Override
public long getSeed() {
return serverWorld.getSeed();
return allayServerWorld.getSeed();
}
@Override
public int getMaxHeight() {
return serverWorld.getMaxHeight();
return allayServerWorld.getMaxHeight();
}
@Override
public int getMinHeight() {
return serverWorld.getMinHeight();
return allayServerWorld.getMinHeight();
}
@Override
public ServerWorld getHandle() {
return serverWorld;
public AllayServerWorld getHandle() {
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();
}
}

View File

@@ -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 {
for (var generationStage : configPack.getStages()) {
generationStage.populate(tmp);

View File

@@ -7,7 +7,6 @@ import com.dfsek.terra.api.handle.WorldHandle;
import org.allaymc.terra.allay.JeBlockState;
import org.allaymc.terra.allay.Mapping;
import org.allaymc.terra.allay.delegate.AllayBlockState;
import org.allaymc.terra.allay.delegate.AllayEntityTypeHandle;
import org.jetbrains.annotations.NotNull;
@@ -31,6 +30,7 @@ public class AllayWorldHandle implements WorldHandle {
@Override
public @NotNull EntityType getEntity(@NotNull String id) {
return new AllayEntityTypeHandle(id);
// TODO: 我们暂时不支持实体因为端本身都没实体ai生成实体没有意义
return null;
}
}