Collection.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package me.lortseam.completeconfig.data;
  2. import lombok.AccessLevel;
  3. import lombok.RequiredArgsConstructor;
  4. import lombok.extern.log4j.Log4j2;
  5. import me.lortseam.completeconfig.api.ConfigGroup;
  6. import me.lortseam.completeconfig.data.structure.Identifiable;
  7. import me.lortseam.completeconfig.data.structure.client.TooltipSupplier;
  8. import me.lortseam.completeconfig.text.TranslationKey;
  9. import net.fabricmc.api.EnvType;
  10. import net.fabricmc.api.Environment;
  11. import org.apache.commons.lang3.ArrayUtils;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.spongepowered.configurate.CommentedConfigurationNode;
  14. import java.util.Arrays;
  15. @Log4j2(topic = "CompleteConfig")
  16. @RequiredArgsConstructor(access = AccessLevel.PACKAGE)
  17. public final class Collection extends BaseCollection implements Identifiable, TooltipSupplier {
  18. private final BaseCollection parent;
  19. private final ConfigGroup group;
  20. @Environment(EnvType.CLIENT)
  21. private TranslationKey translation;
  22. @Environment(EnvType.CLIENT)
  23. private TranslationKey[] tooltipTranslation;
  24. @Override
  25. public TranslationKey getTranslation() {
  26. if (translation == null) {
  27. translation = parent.getTranslation().append(group.getId());
  28. }
  29. return translation;
  30. }
  31. @Override
  32. public TranslationKey[] getTooltipTranslation() {
  33. if (tooltipTranslation == null) {
  34. if (ArrayUtils.isNotEmpty(group.getTooltipTranslationKeys())) {
  35. tooltipTranslation = Arrays.stream(group.getTooltipTranslationKeys()).map(key -> getTranslation().root().append(key)).toArray(TranslationKey[]::new);
  36. } else {
  37. tooltipTranslation = getTranslation().appendTooltip().orElse(new TranslationKey[0]);
  38. }
  39. }
  40. return tooltipTranslation;
  41. }
  42. @Override
  43. public void fetch(CommentedConfigurationNode node) {
  44. if (!StringUtils.isEmpty(group.getComment())) {
  45. node.comment(group.getComment());
  46. }
  47. super.fetch(node);
  48. }
  49. @Override
  50. public String getId() {
  51. return group.getId();
  52. }
  53. }