Advanced Usage
This page isnt rly structured rn
Example ItemStack Deserialiser zer Using Helper Mapper
Warp deserialisers can use other deserialisers, including dynamic ones. A common pattern is to create configuration objects as an intermediate form when creating deserialisers for external types.
class ItemStackDeserializer implements Deserializer<ItemStack> {
@Configuration
interface Helper {
@Property("type")
Material type();
@Property("count")
Optional<Integer> count();
@Property("item-name")
Optional<Component> itemName();
}
@Override
public Renderer<HashMap> deserialize(ConfigurationNode node, Deserializer.Context dctx) throws DeserializationException {
Helper helper = context.deserializer(Helper.class).orElseThrow().deserialize(node, context);
ItemStack item = ItemStack.of(helper.type(), helper.count().orElse(1));
helper.itemName().ifPresent(itemName -> item.setData(DataComponentTypes.ITEM_NAME, itemName));
return _ -> new ItemStack(item); // defensive copy
}
}Last updated