more pos refactor stuff

This commit is contained in:
dags- 2020-02-28 21:37:44 +00:00
parent c566614f66
commit f17036097d
5 changed files with 20 additions and 28 deletions

View File

@ -36,9 +36,9 @@ public interface ColumnDecorator {
FastSource variance = (FastSource) Source.perlin(0, 100, 1);
void decorate(IChunk chunk, ProcessorContext context, int x, int y, int z);
void decorate(IChunk chunk, DecoratorContext context, int x, int y, int z);
default void decorate(ChunkSurfaceBuffer buffer, ProcessorContext context, int x, int y, int z) {
default void decorate(ChunkSurfaceBuffer buffer, DecoratorContext context, int x, int y, int z) {
decorate(buffer.getDelegate(), context, x, y, z);
}
@ -46,11 +46,9 @@ public interface ColumnDecorator {
chunk.setBlockState(new BlockPos(x, y, z), state, moving);
}
default void fillDown(IChunk chunk, int x, int z, int from, int to, BlockState state) {
try (BlockPos.PooledMutable pos = ColumnDecorator.pos(x, from, z)) {
default void fillDown(DecoratorContext context, IChunk chunk, int x, int z, int from, int to, BlockState state) {
for (int dy = from; dy > to; dy--) {
chunk.setBlockState(pos.setPos(x, dy, z), state, false);
}
chunk.setBlockState(context.pos.setPos(x, dy, z), state, false);
}
}
@ -61,8 +59,4 @@ public interface ColumnDecorator {
static float getNoise(float x, float z, int seed, int scale, int bias) {
return getNoise(x, z, seed, scale / 255F, bias / 255F);
}
static BlockPos.PooledMutable pos(int x, int y, int z) {
return BlockPos.PooledMutable.retain(x, y, z);
}
}

View File

@ -31,19 +31,21 @@ import com.terraforged.core.world.climate.Climate;
import com.terraforged.core.world.heightmap.Levels;
import com.terraforged.core.world.terrain.Terrain;
import com.terraforged.core.world.terrain.Terrains;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunk;
public class ProcessorContext extends ChunkContext {
public class DecoratorContext extends ChunkContext {
public final Levels levels;
public final Climate climate;
public final Terrains terrains;
public final BlockPos.Mutable pos = new BlockPos.Mutable();
public Biome biome;
public Cell<Terrain> cell;
public ProcessorContext(IChunk chunk, Levels levels, Terrains terrain, Climate climate) {
public DecoratorContext(IChunk chunk, Levels levels, Terrains terrain, Climate climate) {
super(chunk);
this.levels = levels;
this.climate = climate;

View File

@ -26,26 +26,22 @@
package com.terraforged.api.chunk.surface;
import com.terraforged.api.chunk.column.ColumnDecorator;
import com.terraforged.api.chunk.surface.builder.Combiner;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.chunk.IChunk;
public interface Surface {
void buildSurface(int x, int z, int height, SurfaceContext ctx);
default void fill(int x, int z, int start, int end, IChunk chunk, BlockState state) {
try (BlockPos.PooledMutable pos = ColumnDecorator.pos(x, start, z)) {
default void fill(int x, int z, int start, int end, SurfaceContext ctx, IChunk chunk, BlockState state) {
if (start < end) {
for (int y = start; y < end; y++) {
chunk.setBlockState(pos.setPos(x, y, z), state, false);
chunk.setBlockState(ctx.pos.setPos(x, y, z), state, false);
}
} else if (start > end) {
for (int y = start; y > end; y--) {
chunk.setBlockState(pos.setPos(x, y, z), state, false);
}
chunk.setBlockState(ctx.pos.setPos(x, y, z), state, false);
}
}
}

View File

@ -25,7 +25,7 @@
package com.terraforged.api.chunk.surface;
import com.terraforged.api.chunk.column.ProcessorContext;
import com.terraforged.api.chunk.column.DecoratorContext;
import com.terraforged.core.world.climate.Climate;
import com.terraforged.core.world.heightmap.Levels;
import com.terraforged.core.world.terrain.Terrains;
@ -33,7 +33,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.world.chunk.IChunk;
import net.minecraft.world.gen.GenerationSettings;
public class SurfaceContext extends ProcessorContext {
public class SurfaceContext extends DecoratorContext {
public final BlockState solid;
public final BlockState fluid;

@ -1 +1 @@
Subproject commit 3717ff07d10d449d8a5c77ff75cf88f00e277429
Subproject commit 8077a91476371a9d71567763a55982c5e05b4cdc