This commit is contained in:
Jesse Boyd
2019-05-29 06:31:22 +10:00
parent da034f9ac4
commit 6bc5b4a823
119 changed files with 2184 additions and 1329 deletions

View File

@ -135,20 +135,6 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
this(other.toImmutableState(), other.getNbtData());
}
@Override
public String getNbtId() {
CompoundTag nbtData = getNbtData();
if (nbtData == null) {
return "";
}
Tag idTag = nbtData.getValue().get("id");
if (idTag instanceof StringTag) {
return ((StringTag) idTag).getValue();
} else {
return "";
}
}
@Nullable
@Override
public CompoundTag getNbtData() {
@ -247,14 +233,10 @@ public class BaseBlock implements BlockStateHolder<BaseBlock> {
@Override
public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException {
return extent.setBlock(set, this);
set.setFullBlock(extent, this);
return true;
}
@Override
public void apply(FilterBlock block) {
block.setFullBlock(this);
}
@Override
public boolean hasNbtData() {
return this.nbtData != null;

View File

@ -50,7 +50,7 @@ import java.util.stream.Stream;
* An immutable class that represents the state a block can be in.
*/
@SuppressWarnings("unchecked")
public class BlockState implements BlockStateHolder<BlockState>, FawePattern {
public final class BlockState implements BlockStateHolder<BlockState>, FawePattern {
private final int internalId;
private final int ordinal;
private final char ordinalChar;
@ -216,12 +216,7 @@ public class BlockState implements BlockStateHolder<BlockState>, FawePattern {
@Override
public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException {
return extent.setBlock(set, this);
}
@Override
public final void apply(FilterBlock block) {
block.setOrdinal(ordinal);
return set.setBlock(extent, this);
}
@Override
@ -267,6 +262,24 @@ public class BlockState implements BlockStateHolder<BlockState>, FawePattern {
}
}
public <V> BlockState withProperties(final BlockState other) {
BlockType ot = other.getBlockType();
if (ot == blockType) {
return other;
}
if (ot.getProperties().isEmpty() || blockType.getProperties().isEmpty()) {
return this;
}
BlockState newState = this;
for (Property<?> prop: ot.getProperties()) {
PropertyKey key = prop.getKey();
if (blockType.hasProperty(key)) {
newState = newState.with(key, other.getState(key));
}
}
return this;
}
@Override
public final <V> V getState(final Property<V> property) {
try {

View File

@ -21,8 +21,6 @@ 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;
import com.sk89q.worldedit.function.mask.Mask;
@ -33,14 +31,12 @@ import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.world.item.ItemTypes;
import com.sk89q.worldedit.world.registry.BlockMaterial;
import com.sk89q.worldedit.extension.platform.Capability;
import com.sk89q.worldedit.registry.NamespacedRegistry;
import com.sk89q.worldedit.registry.state.AbstractProperty;
import com.sk89q.worldedit.registry.state.Property;
import com.sk89q.worldedit.registry.state.PropertyKey;
import com.sk89q.worldedit.world.item.ItemType;
import com.sk89q.worldedit.world.registry.LegacyMapper;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;
import java.util.stream.Collectors;
@ -299,7 +295,7 @@ public final class BlockType implements FawePattern {
@Override
public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException {
return extent.setBlock(set, this.getDefaultState());
return set.setBlock(extent, getDefaultState());
}
@Override
@ -307,11 +303,6 @@ public final 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

@ -2,6 +2,9 @@ package com.sk89q.worldedit.world.block;
import com.boydti.fawe.beta.FilterBlock;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.math.BlockVector3;
import javax.annotation.Nullable;
@ -22,7 +25,7 @@ public final class ImmutableBaseBlock extends BaseBlock {
}
@Override
public final void apply(FilterBlock block) {
block.setOrdinal(getOrdinal());
public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException {
return set.setBlock(extent, toBlockState());
}
}