More support for 3D biomes (#608)

* More support for 3D biomes

* Resolved merge conflicts
This commit is contained in:
Matt
2020-09-12 09:31:42 -04:00
committed by GitHub
parent de199a0e59
commit d00899e177
40 changed files with 337 additions and 191 deletions

View File

@ -7,7 +7,6 @@ import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.collection.BlockVector3ChunkMap;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BlockStateHolder;
@ -198,8 +197,8 @@ public class CharSetBlocks extends CharBlocks implements IChunkSet {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
return setBiome(position.getX(),0, position.getZ(), biome);
public boolean setBiome(BlockVector3 position, BiomeType biome) {
return setBiome(position.getX(),position.getY(), position.getZ(), biome);
}
@Override

View File

@ -82,6 +82,10 @@ object NullChunk : IQueueChunk<Nothing> {
}
override fun fullySupports3DBiomes(): Boolean {
return false
}
override fun setBlockLight(x: Int, y: Int, z: Int, value: Int) {
}

View File

@ -11,7 +11,7 @@ import com.boydti.fawe.beta.implementation.blocks.CharGetBlocks;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock;
@ -397,7 +397,7 @@ public class CharFilterBlock extends ChunkFilterBlock {
public char getOrdinalChar(Extent orDefault) {
return getOrdinalChar();
}
//Set delegate
private SetDelegate initSet() {
setArr = set.load(layer);
@ -419,8 +419,8 @@ public class CharFilterBlock extends ChunkFilterBlock {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
return setBiome(position.getX(), 0, position.getBlockZ(), biome);
public boolean setBiome(BlockVector3 position, BiomeType biome) {
return setBiome(position.getX(), position.getY(), position.getBlockZ(), biome);
}
@Override

View File

@ -150,12 +150,6 @@ public abstract class FilterBlock extends BlockVector3 implements Extent, TileEn
return true;
}
@Override
public boolean setBiome(Extent orDefault, BiomeType biome) {
setBiome(biome);
return true;
}
@Override
public int getOrdinal(Extent orDefault) {
return getOrdinal();

View File

@ -16,7 +16,6 @@ import com.sk89q.worldedit.function.generator.GenBase;
import com.sk89q.worldedit.function.generator.Resource;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.session.ClipboardHolder;
@ -545,7 +544,7 @@ public class LimitExtent extends PassthroughExtent {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
limit.THROW_MAX_CHECKS();
try {
return getExtent().getBiome(position);
@ -614,7 +613,7 @@ public class LimitExtent extends PassthroughExtent {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
public boolean setBiome(BlockVector3 position, BiomeType biome) {
limit.THROW_MAX_CHANGES();
try {
return getExtent().setBiome(position, biome);

View File

@ -16,7 +16,6 @@ import com.sk89q.jnbt.ListTag;
import com.sk89q.jnbt.NBTConstants;
import com.sk89q.jnbt.NBTInputStream;
import com.sk89q.jnbt.NBTOutputStream;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.registry.state.Property;
@ -481,14 +480,14 @@ public class MCAChunk implements IChunk {
}
@Override
public boolean setBiome(BlockVector2 pos, BiomeType biome) {
return this.setBiome(pos.getX(), 0, pos.getZ(), biome);
public boolean setBiome(BlockVector3 pos, BiomeType biome) {
return this.setBiome(pos.getX(), pos.getY(), pos.getZ(), biome);
}
@Override
public boolean setBiome(int x, int y, int z, BiomeType biome) {
setModified();
biomes[x + (z << 4)] = biome;
biomes[x + (z << 4)] = biome; //TODO Support 3D Biomes
return true;
}

View File

@ -7,7 +7,6 @@ import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.history.changeset.ChangeSet;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.util.Location;
@ -96,7 +95,7 @@ public class HistoryExtent extends AbstractDelegateExtent {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType newBiome) {
public boolean setBiome(BlockVector3 position, BiomeType newBiome) {
BiomeType oldBiome = this.getBiome(position);
if (oldBiome.getId() != newBiome.getId()) {
this.changeSet.addBiomeChange(position.getBlockX(), position.getBlockZ(), oldBiome, newBiome);
@ -108,7 +107,7 @@ public class HistoryExtent extends AbstractDelegateExtent {
@Override
public boolean setBiome(int x, int y, int z, BiomeType newBiome) {
BiomeType oldBiome = this.getBiome(BlockVector2.at(x, z));
BiomeType oldBiome = this.getBiome(BlockVector3.at(x, y, z));
if (oldBiome.getId() != newBiome.getId()) {
this.changeSet.addBiomeChange(x, z, oldBiome, newBiome);
return getExtent().setBiome(x, y, z, newBiome);

View File

@ -4,7 +4,6 @@ import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.regions.Region;
@ -28,7 +27,7 @@ public abstract class ImmutableVirtualWorld implements VirtualWorld {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
return BiomeTypes.FOREST;
}

View File

@ -1024,8 +1024,8 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
}
@Override
public BiomeType getBiome(BlockVector2 position) {
return getBiomeType(position.getBlockX(), 0, position.getBlockZ());
public BiomeType getBiome(BlockVector3 position) {
return getBiomeType(position.getBlockX(), position.getBlockY(), position.getBlockZ());
}
@Override

View File

@ -45,7 +45,7 @@ object EmptyClipboard : Clipboard {
return BlockTypes.AIR!!.defaultState
}
override fun getBiome(position: BlockVector2): BiomeType? {
override fun getBiome(position: BlockVector3): BiomeType? {
return null
}
@ -64,7 +64,11 @@ object EmptyClipboard : Clipboard {
return false
}
override fun setBiome(position: BlockVector2, biome: BiomeType): Boolean {
override fun setBiome(position: BlockVector3, biome: BiomeType): Boolean {
return false
}
override fun fullySupports3DBiomes(): Boolean {
return false
}

View File

@ -3,7 +3,6 @@ package com.boydti.fawe.object.extent;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector3;
import com.sk89q.worldedit.world.biome.BiomeType;
@ -36,8 +35,8 @@ public class BlockTranslateExtent extends AbstractDelegateExtent {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
return super.setBiome(position.add(dx, dz), biome);
public boolean setBiome(BlockVector3 position, BiomeType biome) {
return super.setBiome(position.add(dx, dy, dz), biome);
}
@Override
@ -46,8 +45,8 @@ public class BlockTranslateExtent extends AbstractDelegateExtent {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
return super.getBiome(position.add(dx, dz));
public BiomeType getBiome(BlockVector3 position) {
return super.getBiome(position.add(dx, dy, dz));
}
@Override

View File

@ -93,7 +93,7 @@ public abstract class FaweRegionExtent extends ResettableExtent implements IBatc
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
if (!contains(position)) {
if (!limit.MAX_FAILS()) {
WEManager.IMP.cancelEditSafe(this, FaweCache.OUTSIDE_REGION);

View File

@ -19,7 +19,6 @@ import com.sk89q.worldedit.function.generator.Resource;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.session.ClipboardHolder;
@ -110,7 +109,7 @@ public class NullExtent extends FaweRegionExtent implements IBatchProcessor {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
return BiomeTypes.THE_VOID;
}
@ -141,7 +140,7 @@ public class NullExtent extends FaweRegionExtent implements IBatchProcessor {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
public boolean setBiome(BlockVector3 position, BiomeType biome) {
return false;
}
@ -149,7 +148,7 @@ public class NullExtent extends FaweRegionExtent implements IBatchProcessor {
public boolean setBiome(int x, int y, int z, BiomeType biome) {
return false;
}
@Override
public boolean isQueueEnabled() {
throw reason;

View File

@ -2,7 +2,6 @@ package com.boydti.fawe.object.extent;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector3;
import com.sk89q.worldedit.math.MutableVector3;
@ -62,11 +61,11 @@ public class PositionTransformExtent extends ResettableExtent {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
mutable.mutX(position.getBlockX());
mutable.mutZ(position.getBlockZ());
mutable.mutY(0);
return super.getBiome(getPos(mutable).toBlockVector2());
mutable.mutY(position.getBlockY());
return super.getBiome(getPos(mutable));
}
@Override
@ -81,11 +80,11 @@ public class PositionTransformExtent extends ResettableExtent {
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
public boolean setBiome(BlockVector3 position, BiomeType biome) {
mutable.mutX(position.getBlockX());
mutable.mutZ(position.getBlockZ());
mutable.mutY(0);
return super.setBiome(getPos(mutable).toBlockVector2(), biome);
mutable.mutY(position.getBlockY());
return super.setBiome(getPos(mutable), biome);
}
public void setTransform(Transform transform) {

View File

@ -2,7 +2,6 @@ package com.boydti.fawe.object.extent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.PassthroughExtent;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock;
@ -69,7 +68,7 @@ public class TemporalExtent extends PassthroughExtent {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
if (position.getX() == bx && position.getZ() == bz) {
return biome;
}

View File

@ -3,31 +3,31 @@ package com.boydti.fawe.object.function.block;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.function.RegionFunction;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector2;
import com.sk89q.worldedit.math.MutableBlockVector3;
public class BiomeCopy implements RegionFunction {
protected final Extent source;
protected final Extent destination;
private final MutableBlockVector2 mPos2d;
private final MutableBlockVector3 mutableVector;
public BiomeCopy(Extent source, Extent destination) {
this.source = source;
this.destination = destination;
this.mPos2d = new MutableBlockVector2();
this.mPos2d.setComponents(Integer.MIN_VALUE, Integer.MIN_VALUE);
this.mutableVector = new MutableBlockVector3();
this.mutableVector.setComponents(Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE);
}
@Override
public boolean apply(BlockVector3 position) throws WorldEditException {
int x = position.getBlockX();
int y = position.getBlockY();
int z = position.getBlockZ();
if (x != mPos2d.getBlockX() || z != mPos2d.getBlockZ()) {
mPos2d.setComponents(x, z);
BlockVector2 bv = mPos2d;
return destination.setBiome(bv, source.getBiome(bv));
if (x != mutableVector.getBlockX() || z != mutableVector.getBlockZ()|| y != mutableVector
.getBlockY()) {
mutableVector.setComponents(x, y, z);
return destination.setBiome(mutableVector, source.getBiome(mutableVector));
}
return false;
}

View File

@ -281,12 +281,12 @@ public class WorldWrapper extends AbstractWorld {
}
@Override
public BiomeType getBiome(BlockVector2 position) {
public BiomeType getBiome(BlockVector3 position) {
return parent.getBiome(position);
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
public boolean setBiome(BlockVector3 position, BiomeType biome) {
return parent.setBiome(position, biome);
}