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); 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); decorate(buffer.getDelegate(), context, x, y, z);
} }
@ -46,11 +46,9 @@ public interface ColumnDecorator {
chunk.setBlockState(new BlockPos(x, y, z), state, moving); chunk.setBlockState(new BlockPos(x, y, z), state, moving);
} }
default void fillDown(IChunk chunk, int x, int z, int from, int to, BlockState state) { default void fillDown(DecoratorContext context, IChunk chunk, int x, int z, int from, int to, BlockState state) {
try (BlockPos.PooledMutable pos = ColumnDecorator.pos(x, from, z)) {
for (int dy = from; dy > to; dy--) { 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) { static float getNoise(float x, float z, int seed, int scale, int bias) {
return getNoise(x, z, seed, scale / 255F, bias / 255F); 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.heightmap.Levels;
import com.terraforged.core.world.terrain.Terrain; import com.terraforged.core.world.terrain.Terrain;
import com.terraforged.core.world.terrain.Terrains; import com.terraforged.core.world.terrain.Terrains;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunk; import net.minecraft.world.chunk.IChunk;
public class ProcessorContext extends ChunkContext { public class DecoratorContext extends ChunkContext {
public final Levels levels; public final Levels levels;
public final Climate climate; public final Climate climate;
public final Terrains terrains; public final Terrains terrains;
public final BlockPos.Mutable pos = new BlockPos.Mutable();
public Biome biome; public Biome biome;
public Cell<Terrain> cell; 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); super(chunk);
this.levels = levels; this.levels = levels;
this.climate = climate; this.climate = climate;

View File

@ -26,26 +26,22 @@
package com.terraforged.api.chunk.surface; package com.terraforged.api.chunk.surface;
import com.terraforged.api.chunk.column.ColumnDecorator;
import com.terraforged.api.chunk.surface.builder.Combiner; import com.terraforged.api.chunk.surface.builder.Combiner;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.chunk.IChunk; import net.minecraft.world.chunk.IChunk;
public interface Surface { public interface Surface {
void buildSurface(int x, int z, int height, SurfaceContext ctx); 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) { default void fill(int x, int z, int start, int end, SurfaceContext ctx, IChunk chunk, BlockState state) {
try (BlockPos.PooledMutable pos = ColumnDecorator.pos(x, start, z)) {
if (start < end) { if (start < end) {
for (int y = start; y < end; y++) { 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) { } else if (start > end) {
for (int y = start; y > end; y--) { 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; 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.climate.Climate;
import com.terraforged.core.world.heightmap.Levels; import com.terraforged.core.world.heightmap.Levels;
import com.terraforged.core.world.terrain.Terrains; 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.chunk.IChunk;
import net.minecraft.world.gen.GenerationSettings; import net.minecraft.world.gen.GenerationSettings;
public class SurfaceContext extends ProcessorContext { public class SurfaceContext extends DecoratorContext {
public final BlockState solid; public final BlockState solid;
public final BlockState fluid; public final BlockState fluid;

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