Skip to content

Commit

Permalink
chores: make more things related to chunk generating context public f…
Browse files Browse the repository at this point in the history
…or using
  • Loading branch information
smartcmd committed Jun 16, 2024
1 parent d52b606 commit 715b08b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import org.allaymc.api.world.generator.function.Lighter;
import org.allaymc.api.world.generator.function.Populator;

import java.util.function.Consumer;

/**
* Allay Project 2024/6/16
*
Expand All @@ -30,6 +32,8 @@ static WorldGeneratorBuilder builder() {
String getPreset();

void setDimension(Dimension dimension);

Dimension getDimension();

interface WorldGeneratorBuilder {
WorldGeneratorBuilder name(String name);
Expand All @@ -46,6 +50,8 @@ interface WorldGeneratorBuilder {

WorldGeneratorBuilder entitySpawners(EntitySpawner... entitySpawners);

WorldGeneratorBuilder onDimensionSet(Consumer<Dimension> onDimensionSet);

WorldGenerator build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.allaymc.api.world.generator.context;

import lombok.Getter;
import org.allaymc.api.world.chunk.ChunkAccessible;
import org.allaymc.api.world.chunk.UnsafeChunk;

Expand All @@ -10,6 +11,7 @@
*/
public abstract class OtherChunkAccessibleContext extends Context {

@Getter
protected ChunkAccessible chunkAccessor;

public OtherChunkAccessibleContext(UnsafeChunk currentChunk, ChunkAccessible chunkAccessor) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@

import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

/**
* Allay Project 2023/7/1
*
* @author daoge_cmd
*/
@Getter
@Slf4j
public final class AllayWorldGenerator implements WorldGenerator {

Expand All @@ -42,9 +42,11 @@ public final class AllayWorldGenerator implements WorldGenerator {
private final List<Populator> populators ;
private final List<Lighter> lighters;
private final List<EntitySpawner> entitySpawners;
private final Consumer<Dimension> onDimensionSet;
// 存储基本区块,基本区块的ChunkStatus为NOISED
private final Map<Long, Chunk> basicChunks = new Long2ObjectNonBlockingMap<>();

@Getter
private Dimension dimension; // Will be set later

public static AllayWorldGeneratorBuilder builder() {
Expand All @@ -58,7 +60,8 @@ private AllayWorldGenerator(
List<Noiser> noisers,
List<Populator> populators,
List<Lighter> lighters,
List<EntitySpawner> entitySpawners
List<EntitySpawner> entitySpawners,
Consumer<Dimension> onDimensionSet
) {
this.name = name;
this.type = type;
Expand All @@ -67,6 +70,7 @@ private AllayWorldGenerator(
this.populators = populators;
this.lighters = lighters;
this.entitySpawners = entitySpawners;
this.onDimensionSet = onDimensionSet;
init();
}

Expand All @@ -83,6 +87,7 @@ public void setDimension(Dimension dimension) {
throw new IllegalStateException("Dimension already set");
}
this.dimension = dimension;
onDimensionSet.accept(dimension);
}

/**
Expand Down Expand Up @@ -195,6 +200,7 @@ public static final class AllayWorldGeneratorBuilder implements WorldGenerator.W
private List<Populator> populators = List.of();
private List<Lighter> lighters = List.of();
private List<EntitySpawner> entitySpawners = List.of();
private Consumer<Dimension> onDimensionSet;

public AllayWorldGeneratorBuilder name(String name) {
this.name = name;
Expand Down Expand Up @@ -231,11 +237,16 @@ public AllayWorldGeneratorBuilder entitySpawners(EntitySpawner... entitySpawners
return this;
}

public AllayWorldGeneratorBuilder onDimensionSet(Consumer<Dimension> onDimensionSet) {
this.onDimensionSet = onDimensionSet;
return this;
}

public WorldGenerator build() {
if (name == null || name.isBlank()) {
throw new IllegalStateException("Name cannot be null or blank");
}
return new AllayWorldGenerator(name, type, preset, noisers, populators, lighters, entitySpawners);
return new AllayWorldGenerator(name, type, preset, noisers, populators, lighters, entitySpawners, onDimensionSet);
}
}
}

0 comments on commit 715b08b

Please sign in to comment.