Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
TheBrokenRail | 94e674658f | |
TheBrokenRail | 47a9d6454f |
|
@ -1,5 +1,12 @@
|
|||
# Changelog
|
||||
|
||||
**1.0.5**
|
||||
* Allow Forcing Preview Features With ``freshcoffee:preview_features_required``
|
||||
|
||||
**1.0.4**
|
||||
* Replace Reflection With New Fabric Loader API
|
||||
* Enable Java Preview Features
|
||||
|
||||
**1.0.3**
|
||||
* Improve Java Binary Testing
|
||||
|
||||
|
|
|
@ -35,4 +35,13 @@ You can set a maximum version of Java by adding this to ``fabric.mod.json``:
|
|||
"freshcoffee:maximum_java_version": 14
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can also force Java preview features:
|
||||
```json
|
||||
{
|
||||
"custom": {
|
||||
"freshcoffee:preview_features_required": true
|
||||
}
|
||||
}
|
||||
```
|
|
@ -3,14 +3,14 @@ org.gradle.jvmargs = -Xmx1G
|
|||
|
||||
# Fabric Properties
|
||||
# check these on https://fabricmc.net/use
|
||||
minecraft_version = 1.16.2
|
||||
minecraft_version = 1.16.3
|
||||
curseforge_id = 398250
|
||||
simple_minecraft_version = 1.16.2
|
||||
yarn_build = 6
|
||||
fabric_loader_version = 0.9.0+build.204
|
||||
simple_minecraft_version = 1.16.3
|
||||
yarn_build = 47
|
||||
fabric_loader_version = 0.10.3+build.211
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.0.3
|
||||
mod_version = 1.0.5
|
||||
maven_group = com.thebrokenrail
|
||||
|
||||
# Dependencies
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.thebrokenrail.freshcoffee.config.HardcodedConfig;
|
|||
import com.thebrokenrail.freshcoffee.dialog.Dialog;
|
||||
import com.thebrokenrail.freshcoffee.download.AdoptOpenJDK;
|
||||
import com.thebrokenrail.freshcoffee.util.PlatformUtil;
|
||||
import com.thebrokenrail.freshcoffee.util.PreviewUtil;
|
||||
import com.thebrokenrail.freshcoffee.util.ReLaunchUtil;
|
||||
import com.thebrokenrail.freshcoffee.util.Util;
|
||||
import com.thebrokenrail.freshcoffee.util.ExtractUtil;
|
||||
|
@ -17,7 +18,7 @@ import java.net.URL;
|
|||
public class FreshCoffee implements PreLaunchEntrypoint {
|
||||
@Override
|
||||
public void onPreLaunch() {
|
||||
if (Util.JAVA_VERSION < LimitUtil.getMinimumJavaVersion().getValue() || Util.JAVA_VERSION > LimitUtil.getMaximumJavaVersion().getValue()) {
|
||||
if (Util.JAVA_VERSION < LimitUtil.getMinimumJavaVersion().getValue() || Util.JAVA_VERSION > LimitUtil.getMaximumJavaVersion().getValue() || (PreviewUtil.arePreviewFeaturesRequired() && !PreviewUtil.arePreviewFeaturesEnabled())) {
|
||||
if (LimitUtil.getMinimumJavaVersion().getValue() > LimitUtil.getMaximumJavaVersion().getValue()) {
|
||||
Dialog.getInstance().showErrorDialog(String.format(HardcodedConfig.MINIMUM_HIGHER_THAN_MAXIMUM_MESSAGE, LimitUtil.getMinimumJavaVersion().toString(), LimitUtil.getMaximumJavaVersion().toString()));
|
||||
System.exit(1);
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.io.File;
|
|||
public final class HardcodedConfig {
|
||||
public static final String MINIMUM_JSON_KEY = "freshcoffee:minimum_java_version";
|
||||
public static final String MAXIMUM_JSON_KEY = "freshcoffee:maximum_java_version";
|
||||
public static final String PREVIEW_JSON_KEY = "freshcoffee:preview_features_required";
|
||||
|
||||
public static final String TITLE = "FreshCoffee";
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package com.thebrokenrail.freshcoffee.util;
|
||||
|
||||
import com.thebrokenrail.freshcoffee.config.HardcodedConfig;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.fabricmc.loader.api.ModContainer;
|
||||
import net.fabricmc.loader.api.metadata.ModMetadata;
|
||||
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class PreviewUtil {
|
||||
public static boolean arePreviewFeaturesRequired() {
|
||||
for (ModContainer mod : FabricLoader.getInstance().getAllMods()) {
|
||||
ModMetadata metadata = mod.getMetadata();
|
||||
if (metadata.containsCustomValue(HardcodedConfig.PREVIEW_JSON_KEY)) {
|
||||
try {
|
||||
boolean newValue = metadata.getCustomValue(HardcodedConfig.PREVIEW_JSON_KEY).getAsBoolean();
|
||||
if (newValue) {
|
||||
return true;
|
||||
}
|
||||
} catch (ClassCastException e) {
|
||||
Util.getLogger().error("Invalid Value For Preview Features: " + metadata.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean arePreviewFeaturesEnabled() {
|
||||
List<String> vmArgs = new ArrayList<>(ManagementFactory.getRuntimeMXBean().getInputArguments());
|
||||
return vmArgs.contains("--enable-preview");
|
||||
}
|
||||
}
|
|
@ -1,16 +1,13 @@
|
|||
package com.thebrokenrail.freshcoffee.util;
|
||||
|
||||
import com.thebrokenrail.freshcoffee.config.HardcodedConfig;
|
||||
import net.fabricmc.loader.FabricLoader;
|
||||
import net.fabricmc.loader.game.MinecraftGameProvider;
|
||||
import net.fabricmc.loader.util.Arguments;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
@ -47,15 +44,7 @@ public final class ReLaunchUtil {
|
|||
// Set Entry-Point
|
||||
mainArgs.add(Util.getMainClass());
|
||||
// Get Parameters
|
||||
String[] launchArgs;
|
||||
try {
|
||||
Field launchArgsField = MinecraftGameProvider.class.getDeclaredField("arguments");
|
||||
launchArgsField.setAccessible(true);
|
||||
//noinspection deprecation
|
||||
launchArgs = ((Arguments) launchArgsField.get(FabricLoader.INSTANCE.getGameProvider())).toArray();
|
||||
} catch (IllegalAccessException | NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
String[] launchArgs = FabricLoader.getInstance().getLaunchArguments(false);
|
||||
// Add Parameters
|
||||
mainArgs.addAll(Arrays.asList(launchArgs));
|
||||
return mainArgs;
|
||||
|
@ -68,6 +57,14 @@ public final class ReLaunchUtil {
|
|||
List<String> vmArgs = new ArrayList<>(ManagementFactory.getRuntimeMXBean().getInputArguments());
|
||||
// Remove Debugger
|
||||
vmArgs.removeIf(arg -> arg.startsWith("-agentlib") || arg.startsWith("-javaagent"));
|
||||
// Enable Java Preview Features
|
||||
if (PreviewUtil.arePreviewFeaturesRequired()) {
|
||||
if (!vmArgs.contains("--enable-preview")) {
|
||||
vmArgs.add("--enable-preview");
|
||||
}
|
||||
} else {
|
||||
vmArgs.remove("--enable-preview");
|
||||
}
|
||||
|
||||
List<String> mainArgs = getMainArgs();
|
||||
|
||||
|
|
Reference in New Issue