Skip to content
This repository was archived by the owner on Dec 22, 2019. It is now read-only.

Commit 7075fcd

Browse files
committed
MC version ranges
1 parent 683510b commit 7075fcd

File tree

5 files changed

+41
-1
lines changed

5 files changed

+41
-1
lines changed

src/main/java/com/therandomlabs/randomlib/TRLUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import net.minecraft.crash.CrashReport;
88
import net.minecraft.launchwrapper.Launch;
99
import net.minecraft.util.ReportedException;
10+
import net.minecraftforge.fml.common.versioning.ArtifactVersion;
11+
import net.minecraftforge.fml.common.versioning.DefaultArtifactVersion;
1012
import net.minecraftforge.fml.relauncher.FMLInjectionData;
1113
import net.minecraftforge.fml.relauncher.FMLLaunchHandler;
1214
import org.apache.commons.lang3.ArrayUtils;
@@ -17,6 +19,8 @@ public final class TRLUtils {
1719
public static final boolean IS_CLIENT = FMLLaunchHandler.side().isClient();
1820
public static final String MC_VERSION = (String) FMLInjectionData.data()[4];
1921
public static final int MC_VERSION_NUMBER = Integer.parseInt(MC_VERSION.split("\\.")[1]);
22+
public static final ArtifactVersion MC_ARTIFACT_VERSION =
23+
new DefaultArtifactVersion("minecraft", MC_VERSION);
2024

2125
private static Field modifiers;
2226

src/main/java/com/therandomlabs/randomlib/config/Config.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@
6363
String value();
6464
}
6565

66+
@Retention(RetentionPolicy.RUNTIME)
67+
@Target(ElementType.FIELD)
68+
@interface MCVersion {
69+
//Version range
70+
String value();
71+
}
72+
6673
//Mod ID
6774
String value();
6875

src/main/java/com/therandomlabs/randomlib/config/ConfigManager.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
1919
import net.minecraftforge.fml.common.Loader;
2020
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
21+
import net.minecraftforge.fml.common.versioning.VersionParser;
22+
import net.minecraftforge.fml.common.versioning.VersionRange;
2123
import org.apache.commons.lang3.StringUtils;
2224

2325
public final class ConfigManager {
@@ -259,6 +261,10 @@ private static void loadCategories(String languageKeyPrefix, String parentCatego
259261
throw new IllegalArgumentException(name + " is not public static final");
260262
}
261263

264+
if(!testVersionRange(field)) {
265+
continue;
266+
}
267+
262268
final Class<?> categoryClass = field.getType();
263269
final String categoryName = parentCategory + name;
264270

@@ -294,6 +300,10 @@ private static void loadCategory(TRLCategory category) {
294300
throw new IllegalArgumentException(name + " is not public static non-final");
295301
}
296302

303+
if(!testVersionRange(field)) {
304+
continue;
305+
}
306+
297307
final Config.Previous previousData = field.getAnnotation(Config.Previous.class);
298308
final String previous = previousData == null ? null : previousData.value();
299309

@@ -304,4 +314,21 @@ private static void loadCategory(TRLCategory category) {
304314
}
305315
}
306316
}
317+
318+
private static boolean testVersionRange(Field field) {
319+
final Config.MCVersion mcVersion = field.getAnnotation(Config.MCVersion.class);
320+
321+
if(mcVersion == null) {
322+
return true;
323+
}
324+
325+
final String versionRange = mcVersion.value().trim();
326+
327+
if(versionRange.isEmpty()) {
328+
throw new IllegalArgumentException("Version range must not be empty");
329+
}
330+
331+
final VersionRange range = VersionParser.parseRange(versionRange);
332+
return range.containsVersion(TRLUtils.MC_ARTIFACT_VERSION);
333+
}
307334
}

src/test/java/com/therandomlabs/randomlib/test/RandomLibTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
@Mod(
1717
modid = RandomLibTest.MOD_ID, name = RandomLibTest.NAME, version = RandomLibTest.VERSION,
18-
guiFactory = RandomLibTest.GUI_FACTORY
18+
guiFactory = RandomLibTest.GUI_FACTORY, acceptedMinecraftVersions = "[1.8,1.13)"
1919
)
2020
public final class RandomLibTest {
2121
public static final String MOD_ID = "randomlibtest";

src/test/java/com/therandomlabs/randomlib/test/config/ConfigTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ public static final class Lol {
1414
public static boolean test = true;
1515
}
1616

17+
@Config.MCVersion("1.12.2")
1718
@Config.Category("lol")
1819
public static final Lol lol = null;
1920

21+
@Config.MCVersion("[1.10,1.11]")
2022
@Config.RequiresMCRestart
2123
@Config.Property("Whether to enable flying pigs.")
2224
public static boolean flyingPigs = true;

0 commit comments

Comments
 (0)