package com.hypixel.hytale.server.npc.asset.builder; import javax.annotation.Nonnull; import javax.annotation.Nullable; public interface BuilderContext { BuilderContext getOwner(); String getLabel(); default void setCurrentStateName(String name) { } @Nullable default Builder getParent() { BuilderContext owner = this.getOwner(); return owner instanceof Builder ? (Builder)owner : (owner != null ? owner.getParent() : null); } default void getBreadCrumbs(@Nonnull StringBuilder stringBuilder) { BuilderContext owner = this.getOwner(); if (owner != null) { owner.getBreadCrumbs(stringBuilder); } String label = this.getLabel(); if (label != null && !label.isEmpty()) { if (!stringBuilder.isEmpty()) { stringBuilder.append('|'); } stringBuilder.append(label); } } @Nonnull default String getBreadCrumbs() { StringBuilder stringBuilder = new StringBuilder(80); this.getBreadCrumbs(stringBuilder); return stringBuilder.toString(); } }