mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 03:56:59 -05:00
Proper mods metadata
This commit is contained in:
@@ -20,10 +20,12 @@ import me.shedaniel.architectury.Architectury;
|
||||
import me.shedaniel.architectury.ArchitecturyPopulator;
|
||||
import me.shedaniel.architectury.Populatable;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.minecraft.SharedConstants;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
public final class Platform {
|
||||
private Platform() {}
|
||||
@@ -39,6 +41,11 @@ public final class Platform {
|
||||
return Architectury.getModLoader();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getMinecraftVersion() {
|
||||
return SharedConstants.getCurrentVersion().getId();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Path getGameFolder() {
|
||||
return IMPL.getGameFolder();
|
||||
@@ -63,11 +70,29 @@ public final class Platform {
|
||||
return IMPL.getMod(id);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Optional<Mod> getOptionalMod(String id) {
|
||||
try {
|
||||
return Optional.of(IMPL.getMod(id));
|
||||
} catch (NullPointerException e) {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Collection<Mod> getMods() {
|
||||
return IMPL.getMods();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Collection<String> getModIds() {
|
||||
return IMPL.getModIds();
|
||||
}
|
||||
|
||||
public static boolean isDevelopmentEnvironment() {
|
||||
return IMPL.isDevelopmentEnvironment();
|
||||
}
|
||||
|
||||
public interface Impl {
|
||||
Path getGameFolder();
|
||||
|
||||
@@ -82,6 +107,10 @@ public final class Platform {
|
||||
Mod getMod(String id);
|
||||
|
||||
Collection<Mod> getMods();
|
||||
|
||||
Collection<String> getModIds();
|
||||
|
||||
boolean isDevelopmentEnvironment();
|
||||
}
|
||||
|
||||
static {
|
||||
|
||||
@@ -28,6 +28,7 @@ import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PlatformImpl implements Platform.Impl {
|
||||
public static final Map<String, Mod.ConfigurationScreenProvider> CONFIG_SCREENS = new HashMap<>();
|
||||
@@ -71,6 +72,16 @@ public class PlatformImpl implements Platform.Impl {
|
||||
return this.mods.values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> getModIds() {
|
||||
return FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).map(ModMetadata::getId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDevelopmentEnvironment() {
|
||||
return FabricLoader.getInstance().isDevelopmentEnvironment();
|
||||
}
|
||||
|
||||
private static class ModImpl implements Mod {
|
||||
private final ModMetadata metadata;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"authors": [
|
||||
"shedaniel"
|
||||
],
|
||||
"license": "MIT",
|
||||
"license": "Apache-2.0",
|
||||
"environment": "*",
|
||||
"mixins": [
|
||||
"architectury.mixins.json"
|
||||
|
||||
@@ -23,7 +23,9 @@ import net.minecraftforge.fml.ExtensionPoint;
|
||||
import net.minecraftforge.fml.ModContainer;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
import net.minecraftforge.fml.loading.FMLLoader;
|
||||
import net.minecraftforge.fml.loading.FMLPaths;
|
||||
import net.minecraftforge.fml.loading.moddiscovery.ModInfo;
|
||||
import net.minecraftforge.forgespi.language.IModInfo;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -31,6 +33,7 @@ import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PlatformImpl implements Platform.Impl {
|
||||
private final Map<String, Mod> mods = new HashMap<>();
|
||||
@@ -73,6 +76,16 @@ public class PlatformImpl implements Platform.Impl {
|
||||
return this.mods.values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> getModIds() {
|
||||
return ModList.get().getMods().stream().map(ModInfo::getModId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDevelopmentEnvironment() {
|
||||
return !FMLLoader.isProduction();
|
||||
}
|
||||
|
||||
private static class ModImpl implements Mod {
|
||||
private final ModContainer container;
|
||||
private final IModInfo metadata;
|
||||
|
||||
14
forge/src/main/resources/META-INF/mods.toml
Normal file
14
forge/src/main/resources/META-INF/mods.toml
Normal file
@@ -0,0 +1,14 @@
|
||||
modLoader = "javafml"
|
||||
loaderVersion = "[32,)"
|
||||
issueTrackerURL = "https://github.com/shedaniel/architectury/issues"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[[mods]]
|
||||
modId = "architectury"
|
||||
version = "${version}"
|
||||
displayName = "Architectury"
|
||||
authors = "shedaniel"
|
||||
description = '''
|
||||
A intermediary api aimed to ease developing multiplatform mods.
|
||||
'''
|
||||
license = "Apache-2.0"
|
||||
Reference in New Issue
Block a user