shedaniel 4 лет назад
Родитель
Сommit
cd595fc55a

+ 29 - 0
common/src/main/java/me/shedaniel/architectury/platform/Platform.java

@@ -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 {

+ 11 - 0
fabric/src/main/java/me/shedaniel/architectury/platform/fabric/PlatformImpl.java

@@ -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;
         

+ 1 - 1
fabric/src/main/resources/fabric.mod.json

@@ -7,7 +7,7 @@
   "authors": [
     "shedaniel"
   ],
-  "license": "MIT",
+  "license": "Apache-2.0",
   "environment": "*",
   "mixins": [
     "architectury.mixins.json"

+ 13 - 0
forge/src/main/java/me/shedaniel/architectury/platform/forge/PlatformImpl.java

@@ -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 - 0
forge/src/main/resources/META-INF/mods.toml

@@ -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"