mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-02 19:36:41 +00:00
Make masks more stateless
This commit is contained in:
@ -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() {
|
||||
|
@ -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
|
||||
|
@ -32,4 +32,9 @@ public class ExtentFilterBlock extends AbstractFilterBlock {
|
||||
public BlockVector3 getPosition() {
|
||||
return pos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Extent getExtent() {
|
||||
return extent;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user