default String getAsString() { if (getStates().isEmpty()) { return this.getBlockType().getId(); } else { String properties = getStates().entrySet().stream().map(entry -> entry.getKey().getName() + "=" + entry.getValue().toString().toLowerCase()).collect(Collectors.joining( ",")); return this.getBlockType().getId() + "[" + properties + "]"; } } }
@SuppressWarnings("WeakerAccess") protected BlockState getBlockState(BlockStateHolder<?> block) { if (block instanceof com.sk89q.worldedit.world.block.BlockState) { BlockState state = Sponge.getRegistry().getType(BlockType.class, block.getBlockType().getId()).orElse(BlockTypes.AIR).getDefaultState(); for (Map.Entry<Property<?>, Object> entry : block.getStates().entrySet()) { // TODO Convert across states } return state; } else { throw new UnsupportedOperationException("Missing Sponge adapter for WorldEdit!"); } }
@Override public boolean equalsFuzzy(BlockStateHolder<?> o) { if (this == o) { // Added a reference equality check for return true; } if (!getBlockType().equals(o.getBlockType())) { return false; } Set<Property<?>> differingProperties = new HashSet<>(); for (Object state : o.getStates().keySet()) { if (getState((Property<?>) state) == null) { differingProperties.add((Property<?>) state); } } for (Property<?> property : getStates().keySet()) { if (o.getState(property) == null) { differingProperties.add(property); } } for (Property<?> property : getStates().keySet()) { if (differingProperties.contains(property)) { continue; } if (!Objects.equals(getState(property), o.getState(property))) { return false; } } return true; }
Block mcBlock = Block.getBlockFromName(block.getBlockType().getId()); IBlockState newState = mcBlock.getDefaultState(); Map<Property<?>, Object> states = block.getStates(); newState = applyProperties(mcBlock.getBlockState(), newState, states); IBlockState successState = chunk.setBlockState(pos, newState);