Make BlockStateHolder extend Pattern.

Removes the need for wrapping them in BlockPattern.
This commit is contained in:
wizjany
2019-07-28 18:20:00 -04:00
parent f4c238c3da
commit 6631b6bdf0
17 changed files with 59 additions and 53 deletions

View File

@ -25,6 +25,7 @@ import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.StringTag;
import com.sk89q.jnbt.Tag;
import com.sk89q.worldedit.blocks.TileEntityBlock;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.registry.state.Property;
import java.util.Map;
@ -166,6 +167,11 @@ public class BaseBlock implements BlockStateHolder<BaseBlock>, TileEntityBlock {
return this;
}
@Override
public BaseBlock apply(BlockVector3 position) {
return this;
}
@Override
public BaseBlock toBaseBlock(CompoundTag compoundTag) {
if (compoundTag == null) {

View File

@ -28,6 +28,7 @@ import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.extension.platform.Capability;
import com.sk89q.worldedit.internal.block.BlockStateIdAccess;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.registry.state.Property;
import com.sk89q.worldedit.world.registry.BlockRegistry;
@ -207,6 +208,11 @@ public class BlockState implements BlockStateHolder<BlockState> {
return this.emptyBaseBlock;
}
@Override
public BaseBlock apply(BlockVector3 position) {
return this.emptyBaseBlock;
}
@Override
public BaseBlock toBaseBlock(CompoundTag compoundTag) {
if (compoundTag == null) {

View File

@ -20,13 +20,15 @@
package com.sk89q.worldedit.world.block;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.registry.state.Property;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
public interface BlockStateHolder<B extends BlockStateHolder<B>> {
public interface BlockStateHolder<B extends BlockStateHolder<B>> extends Pattern {
/**
* Get the block type
@ -89,6 +91,11 @@ public interface BlockStateHolder<B extends BlockStateHolder<B>> {
*/
BaseBlock toBaseBlock(CompoundTag compoundTag);
@Override
default BaseBlock apply(BlockVector3 position) {
return toBaseBlock();
}
default String getAsString() {
if (getStates().isEmpty()) {
return this.getBlockType().getId();