// Path: projects/main/src/main/java/libshapedraw/internal/LSDInternalException.java
// public class LSDInternalException extends RuntimeException {
//     private static final long serialVersionUID = 1L;
// 
//     public LSDInternalException(String message) {
//         super(message);
//     }
// 
//     public LSDInternalException(String message, Throwable t) {
//         super(message, t);
//     }
// }
// 
// Path: projects/main/src/main/java/libshapedraw/internal/LSDModDirectory.java
// public class LSDModDirectory {
//     public static final File DIRECTORY = new File(getMinecraftDir(), "mods" + File.separator + ApiInfo.getName());
// 
//     /**
//      * Use reflection to invoke the static method. This supports both normal
//      * play (reobfuscated minecraft.jar) and development (deobfuscated classes
//      * in MCP).
//      */
//     private static File getMinecraftDir() {
//         try {
//             Method m;
//             try {
//                 m = Minecraft.class.getMethod("b");
//             } catch (NoSuchMethodException e) {
//                 m = Minecraft.class.getMethod("getMinecraftDir");
//             }
//             return (File) m.invoke(null);
//         } catch (Exception e) {
//             throw new LSDInternalReflectionException("unable to invoke Minecraft.getMinecraftDir", e);
//         }
//     }
// }


import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;
import libshapedraw.internal.LSDInternalException;
import libshapedraw.internal.LSDModDirectory;
        return getInstance().name;
    }
    public static String getVersion() {
        return getInstance().version;
    }
    public static boolean isVersionAtLeast(String minVersion) {
        if (minVersion == null) {
            throw new IllegalArgumentException("minVersion cannot be null");
        }
        return minVersion.compareTo(getInstance().version) <= 0;
    }
    @Deprecated public static String getUrl() {
        return getInstance().urlMain.toString();
    }
    public static URL getUrlMain() {
        return getInstance().urlMain;
    }
    public static URL getUrlShort() {
        return getInstance().urlShort;
    }
    public static URL getUrlSource() {
        return getInstance().urlSource;
    }
    public static URL getUrlUpdate() {
        return getInstance().urlUpdate;
    }
    public static String getAuthors() {
        return getInstance().authors;
    }
    public static File getModDirectory() {
// Path: projects/main/src/main/java/libshapedraw/internal/LSDInternalException.java
// public class LSDInternalException extends RuntimeException {
//     private static final long serialVersionUID = 1L;
// 
//     public LSDInternalException(String message) {
//         super(message);
//     }
// 
//     public LSDInternalException(String message, Throwable t) {
//         super(message, t);
//     }
// }
// 
// Path: projects/main/src/main/java/libshapedraw/internal/LSDModDirectory.java
// public class LSDModDirectory {
//     public static final File DIRECTORY = new File(getMinecraftDir(), "mods" + File.separator + ApiInfo.getName());
// 
//     /**
//      * Use reflection to invoke the static method. This supports both normal
//      * play (reobfuscated minecraft.jar) and development (deobfuscated classes
//      * in MCP).
//      */
//     private static File getMinecraftDir() {
//         try {
//             Method m;
//             try {
//                 m = Minecraft.class.getMethod("b");
//             } catch (NoSuchMethodException e) {
//                 m = Minecraft.class.getMethod("getMinecraftDir");
//             }
//             return (File) m.invoke(null);
//         } catch (Exception e) {
//             throw new LSDInternalReflectionException("unable to invoke Minecraft.getMinecraftDir", e);
//         }
//     }
// }


// Path: projects/main/src/main/java/libshapedraw/ApiInfo.java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;
import libshapedraw.internal.LSDInternalException;
import libshapedraw.internal.LSDModDirectory;

        return getInstance().name;
    }
    public static String getVersion() {
        return getInstance().version;
    }
    public static boolean isVersionAtLeast(String minVersion) {
        if (minVersion == null) {
            throw new IllegalArgumentException("minVersion cannot be null");
        }
        return minVersion.compareTo(getInstance().version) <= 0;
    }
    @Deprecated public static String getUrl() {
        return getInstance().urlMain.toString();
    }
    public static URL getUrlMain() {
        return getInstance().urlMain;
    }
    public static URL getUrlShort() {
        return getInstance().urlShort;
    }
    public static URL getUrlSource() {
        return getInstance().urlSource;
    }
    public static URL getUrlUpdate() {
        return getInstance().urlUpdate;
    }
    public static String getAuthors() {
        return getInstance().authors;
    }
    public static File getModDirectory() {
        return LSDModDirectory.DIRECTORY;