mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 10:30:42 +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.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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user