[Solved] Set item variant when creating item stack

You could try this

String itemID;
int amount;
String splitID = itemID.split(":");
int dataValue = Integer.parseInt(splitID[2]);
String parsedID = splitID[0] + ":" + splitID[1];
Optional<ItemType> opType = Sponge.getRegistry().getType(ItemType.class, parsedID);
if(opType.isPresent()){
    ItemStack item = ItemStack.builder().itemType(opType.get()).quantity(amount).build();
    switch(dataValue){
        case 0: item.offer(Key.SKULL_TYPE, SkullTypes.CREEPER); break;
        case 1: item.offer(Key.SKULL_TYPE, SkullTypes.WITHER_SKELETON); break;
        //ETC
    }
}

The code is from memory and not tested, if it does not compile then consider it a way of going about it.

SpongePowered does not support data values due to the fact Minecraft is attempting to remove them. This has resulted to some really strange work arounds.

I advise you look at this thread where @gabizou (a sponge leader) talks about getting varients