Mod.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * This file is part of architectury.
  3. * Copyright (C) 2020 shedaniel
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser General Public
  7. * License as published by the Free Software Foundation; either
  8. * version 3 of the License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * Lesser General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser General Public License
  16. * along with this program; if not, write to the Free Software Foundation,
  17. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. */
  19. package me.shedaniel.architectury.platform;
  20. import net.fabricmc.api.EnvType;
  21. import net.fabricmc.api.Environment;
  22. import net.minecraft.client.gui.screens.Screen;
  23. import org.jetbrains.annotations.NotNull;
  24. import org.jetbrains.annotations.Nullable;
  25. import java.nio.file.Path;
  26. import java.util.Collection;
  27. import java.util.Optional;
  28. public interface Mod {
  29. @NotNull
  30. String getModId();
  31. @NotNull
  32. String getVersion();
  33. @NotNull
  34. String getName();
  35. @NotNull
  36. String getDescription();
  37. /**
  38. * Gets the logo file path of the mod
  39. *
  40. * @param preferredSize the preferred logo size, only used in fabric
  41. * @return the logo file path relative to the file
  42. */
  43. @NotNull
  44. Optional<String> getLogoFile(int preferredSize);
  45. @NotNull
  46. Path getFilePath();
  47. @NotNull
  48. Collection<String> getAuthors();
  49. @Nullable
  50. Collection<String> getLicense();
  51. @NotNull
  52. Optional<String> getHomepage();
  53. @NotNull
  54. Optional<String> getSources();
  55. @NotNull
  56. Optional<String> getIssueTracker();
  57. @Environment(EnvType.CLIENT)
  58. void registerConfigurationScreen(ConfigurationScreenProvider provider);
  59. @Environment(EnvType.CLIENT)
  60. @FunctionalInterface
  61. interface ConfigurationScreenProvider {
  62. Screen provide(Screen parent);
  63. }
  64. }