ModArgument.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package me.shedaniel.rei.impl.search;
  2. import me.shedaniel.rei.api.ClientHelper;
  3. import me.shedaniel.rei.api.EntryStack;
  4. import net.minecraft.util.Identifier;
  5. import org.jetbrains.annotations.ApiStatus;
  6. import org.jetbrains.annotations.Nullable;
  7. import java.util.Locale;
  8. @ApiStatus.Internal
  9. public final class ModArgument extends Argument {
  10. public static final ModArgument INSTANCE = new ModArgument();
  11. @Override
  12. public String getName() {
  13. return "mod";
  14. }
  15. @Override
  16. public @Nullable String getPrefix() {
  17. return "@";
  18. }
  19. @Override
  20. public boolean matches(Object[] data, EntryStack stack, String searchText, Object searchData) {
  21. if (data[getDataOrdinal()] == null) {
  22. data[getDataOrdinal()] = new String[]{
  23. stack.getIdentifier().map(Identifier::getNamespace).orElse("").toLowerCase(Locale.ROOT),
  24. null
  25. };
  26. }
  27. String[] strings = (String[]) data[getDataOrdinal()];
  28. if (strings[0].isEmpty() || strings[0].contains(searchText)) return true;
  29. if (strings[1] == null) {
  30. strings[1] = ClientHelper.getInstance().getModFromModId(strings[0]).toLowerCase(Locale.ROOT);
  31. }
  32. return strings[1].isEmpty() || strings[1].contains(searchText);
  33. }
  34. private ModArgument() {
  35. }
  36. }