WIP filter patterns

This commit is contained in:
Jesse Boyd
2019-05-12 23:32:04 +10:00
parent 459629a2f2
commit c797dcb194
61 changed files with 2075 additions and 793 deletions

View File

@ -91,11 +91,6 @@ public abstract class AbstractWorld implements World {
return false;
}
@Override
public BlockState getLazyBlock(BlockVector3 position) {
return getBlock(position);
}
@Override
public boolean queueBlockBreakEffect(Platform server, BlockVector3 position, BlockType blockType, double priority) {
if (taskId == -1) {

View File

@ -19,6 +19,7 @@
package com.sk89q.worldedit.world.block;
import com.boydti.fawe.beta.FilterBlock;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.StringTag;
import com.sk89q.jnbt.Tag;
@ -47,9 +48,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
*/
public class BaseBlock implements BlockStateHolder<BaseBlock> {
private final BlockState blockState;
@Nullable
protected CompoundTag nbtData;
private final CompoundTag nbtData;
@Deprecated
public BaseBlock() {
@ -83,6 +82,7 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
public BaseBlock(BlockState blockState) {
this.blockState = blockState;
nbtData = null;
}
/**
@ -157,7 +157,7 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
@Override
public void setNbtData(@Nullable CompoundTag nbtData) {
this.nbtData = nbtData;
throw new UnsupportedOperationException("Immutable");
}
/**
@ -202,7 +202,7 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
}
@Override
public int getOrdinal() {
public final int getOrdinal() {
return blockState.getOrdinal();
}
@ -227,6 +227,10 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
}
}
public BlockState toBlockState() {
return blockState;
}
@Override
public int hashCode() {
return getOrdinal();
@ -246,7 +250,12 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
return extent.setBlock(set, this);
}
@Override
@Override
public void apply(FilterBlock block) {
block.setFullBlock(this);
}
@Override
public boolean hasNbtData() {
return this.nbtData != null;
}

View File

@ -19,6 +19,7 @@
package com.sk89q.worldedit.world.block;
import com.boydti.fawe.beta.FilterBlock;
import com.boydti.fawe.command.SuggestInputParseException;
import com.boydti.fawe.object.string.MutableCharSequence;
import com.boydti.fawe.util.StringMan;
@ -62,7 +63,7 @@ public class BlockState implements BlockStateHolder<BlockState>, FawePattern {
this.internalId = internalId;
this.ordinal = ordinal;
this.ordinalChar = (char) ordinal;
this.emptyBaseBlock = new BaseBlock(this);
this.emptyBaseBlock = new ImmutableBaseBlock(this);
}
/**
@ -218,6 +219,11 @@ public class BlockState implements BlockStateHolder<BlockState>, FawePattern {
return extent.setBlock(set, this);
}
@Override
public final void apply(FilterBlock block) {
block.setOrdinal(ordinal);
}
@Override
public BaseBlock apply(BlockVector3 position) {
return this.toBaseBlock();
@ -333,7 +339,7 @@ public class BlockState implements BlockStateHolder<BlockState>, FawePattern {
}
@Override
public int getOrdinal() {
public final int getOrdinal() {
return this.ordinal;
}

View File

@ -21,6 +21,7 @@ package com.sk89q.worldedit.world.block;
import static com.google.common.base.Preconditions.checkArgument;
import com.boydti.fawe.beta.FilterBlock;
import com.boydti.fawe.util.ReflectionUtils;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
@ -45,7 +46,7 @@ import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class BlockType implements FawePattern {
public final class BlockType implements FawePattern {
private final String id;
private final BlockTypes.Settings settings;
@ -179,7 +180,7 @@ public class BlockType implements FawePattern {
*
* @return The default state
*/
public BlockState getDefaultState() {
public final BlockState getDefaultState() {
return this.settings.defaultState;
}
@ -306,6 +307,11 @@ public class BlockType implements FawePattern {
return this.getDefaultState().toBaseBlock();
}
@Override
public final void apply(FilterBlock block) {
block.setOrdinal(getDefaultState().getOrdinal());
}
public Mask toMask(Extent extent) {
return new SingleBlockTypeMask(extent, this);
}

View File

@ -0,0 +1,28 @@
package com.sk89q.worldedit.world.block;
import com.boydti.fawe.beta.FilterBlock;
import com.sk89q.jnbt.CompoundTag;
import javax.annotation.Nullable;
public final class ImmutableBaseBlock extends BaseBlock {
public ImmutableBaseBlock(BlockState blockState) {
super(blockState);
}
@Nullable
@Override
public CompoundTag getNbtData() {
return null;
}
@Override
public boolean hasNbtData() {
return false;
}
@Override
public final void apply(FilterBlock block) {
block.setOrdinal(getOrdinal());
}
}