Make masks more stateless

This commit is contained in:
Jesse Boyd
2020-01-04 10:11:13 +00:00
parent 9efdd886c5
commit 88a95221a8
98 changed files with 617 additions and 468 deletions

View File

@ -16,11 +16,8 @@ public abstract class AbstractFilterBlock extends FilterBlock {
public abstract BaseBlock getFullBlock();
public abstract void setFullBlock(BaseBlock block);
public abstract BlockVector3 getPosition();
@Override
public Extent getExtent() {
return this;
}
public abstract Extent getExtent();
@Override
public int getX() {

View File

@ -19,9 +19,7 @@ public class ArrayFilterBlock extends AbstractExtentFilterBlock {
private final int yOffset;
private final int width, length;
private int x, z, index;
private char ordinal;
// TODO use in CFI
public ArrayFilterBlock(Extent extent, char[] blocks, byte[] heights, int width, int length,
int yOffset) {
super(extent);
@ -32,18 +30,16 @@ public class ArrayFilterBlock extends AbstractExtentFilterBlock {
this.yOffset = yOffset;
}
public void filter2D(Filter filter) {
for (z = 0; z < length; z++) {
for (x = 0; x < width; x++, index++) {
ordinal = blocks[ordinal];
filter.applyBlock(this);
}
}
public void init(int x, int z, int index) {
this.x = x;
this.z = z;
this.index = index;
}
@Override
public int getOrdinal() {
return ordinal;
return blocks[index];
}
@Override
@ -53,7 +49,7 @@ public class ArrayFilterBlock extends AbstractExtentFilterBlock {
@Override
public BlockState getBlock() {
return BlockTypesCache.states[ordinal];
return BlockTypesCache.states[getOrdinal()];
}
@Override

View File

@ -32,4 +32,9 @@ public class ExtentFilterBlock extends AbstractFilterBlock {
public BlockVector3 getPosition() {
return pos;
}
@Override
public Extent getExtent() {
return extent;
}
}

View File

@ -0,0 +1,39 @@
package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState;
import javax.annotation.Nullable;
public class MultiFilterBlock extends DelegateFilterBlock {
private final FilterBlock[] blocks;
private final int length;
public MultiFilterBlock(FilterBlock... blocks) {
super(blocks[0]);
this.blocks = blocks;
this.length = blocks.length;
}
@Override
public void setOrdinal(int ordinal) {
for (int i = 0; i < length; i++) blocks[i].setOrdinal(ordinal);
}
@Override
public void setBlock(BlockState state) {
for (int i = 0; i < length; i++) blocks[i].setBlock(state);
}
@Override
public void setFullBlock(BaseBlock block) {
for (int i = 0; i < length; i++) blocks[i].setFullBlock(block);
}
@Override
public void setNbtData(@Nullable CompoundTag nbtData) {
for (int i = 0; i < length; i++) blocks[i].setNbtData(nbtData);
}
}

View File

@ -1,32 +0,0 @@
package com.boydti.fawe.beta.implementation.filter.block;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BaseBlock;
public class VectorSingleFilterBlock extends AbstractSingleFilterBlock {
private final BlockVector3 mutable;
public VectorSingleFilterBlock(BlockVector3 mutable) {
this.mutable = mutable;
}
public VectorSingleFilterBlock init(BaseBlock block) {
super.init(block);
return this;
}
@Override
public int getX() {
return mutable.getX();
}
@Override
public int getY() {
return mutable.getY();
}
@Override
public int getZ() {
return mutable.getZ();
}
}