Skip to content

Commit

Permalink
add minecraft version to mod version, and use it for the window title
Browse files Browse the repository at this point in the history
unload mixins, in case modloading fails to complete, to fix crash with forge
  • Loading branch information
fayer3 committed Sep 29, 2022
1 parent 0c9226e commit a60f439
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 18 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ allprojects {
apply plugin: "maven-publish"

archivesBaseName = rootProject.archives_base_name
version = rootProject.mod_version
group = rootProject.maven_group
version = rootProject.minecraft_version + "-" + rootProject.mod_version
group = rootProject.maven_group

repositories {
// Add repositories to retrieve artifacts from in here.
Expand Down
12 changes: 10 additions & 2 deletions common/src/main/java/org/vivecraft/CommonDataHolder.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,18 @@ public class CommonDataHolder {
public final String minecriftVerString;

public CommonDataHolder() {
String mcVersion = "";
String modVersion = "";
if (Xplat.isModLoadedSuccess()) {
String[] version = Xplat.getModVersion().split("-");
mcVersion = version[0];
modVersion = version[1];
}

if (VRState.checkVR()) {
minecriftVerString = "Vivecraft 1.18.2 jrbudda-VR-" + Xplat.getModloader() + "-" + Xplat.getModVersion();
minecriftVerString = "Vivecraft " + mcVersion + " jrbudda-VR-" + Xplat.getModloader() + "-" + modVersion;
} else {
minecriftVerString = "Vivecraft 1.18.2 jrbudda-NONVR-" + Xplat.getModloader() + "-" + Xplat.getModVersion();
minecriftVerString = "Vivecraft " + mcVersion + " jrbudda-NONVR-" + Xplat.getModloader() + "-" + modVersion;
}
}

Expand Down
6 changes: 6 additions & 0 deletions common/src/main/java/org/vivecraft/NonVRMixinConfig.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.vivecraft;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.objectweb.asm.tree.ClassNode;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
Expand Down Expand Up @@ -31,6 +33,10 @@ public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {

@Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
if (!Xplat.isModLoadedSuccess()) {
LogManager.getLogger().log(Level.WARN, "not loading '" + mixinClassName + "' because mod failed to load completely");
return false;
}
if (mixinClassName.contains("ClientPacketListenerMixin")) {
return !VRState.checkVR();
} else {
Expand Down
6 changes: 6 additions & 0 deletions common/src/main/java/org/vivecraft/VRMixinConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.sun.jna.NativeLibrary;
import jopenvr.JOpenVRLibrary;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.objectweb.asm.tree.ClassNode;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
Expand Down Expand Up @@ -121,6 +123,10 @@ else if (s.contains("mac"))

@Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
if (!Xplat.isModLoadedSuccess()) {
LogManager.getLogger().log(Level.WARN, "not loading '" + mixinClassName + "' because mod failed to load completely");
return false;
}
if (mixinClassName.contains("NoSodium") && (Xplat.isModLoaded("sodium") || Xplat.isModLoaded("rubidium"))) {
return false;
}
Expand Down
5 changes: 5 additions & 0 deletions common/src/main/java/org/vivecraft/Xplat.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,9 @@ static String getModloader() {
static String getModVersion() {
return "";
}

@ExpectPlatform
static boolean isModLoadedSuccess() {
return false;
}
}
14 changes: 8 additions & 6 deletions fabric/src/main/java/org/vivecraft/fabric/XplatImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,8 @@

import net.fabricmc.api.EnvType;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.dedicated.DedicatedServer;

import java.nio.file.Path;
import java.util.Collection;
import java.util.List;
import java.util.Optional;

public class XplatImpl {

Expand All @@ -28,6 +23,13 @@ public static String getModloader() {
}

public static String getModVersion() {
return FabricLoader.getInstance().getModContainer("vivecraft").get().getMetadata().getVersion().getFriendlyString();
if (isModLoadedSuccess()) {
return FabricLoader.getInstance().getModContainer("vivecraft").get().getMetadata().getVersion().getFriendlyString();
}
return "no version";
}

public static boolean isModLoadedSuccess() {
return FabricLoader.getInstance().isModLoaded("vivecraft");
}
}
16 changes: 8 additions & 8 deletions forge/src/main/java/org/vivecraft/forge/XplatImpl.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
package org.vivecraft.forge;

import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.dedicated.DedicatedServer;
import net.minecraft.world.level.storage.LevelResource;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.ForgeConfig;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.fml.loading.FMLLoader;
import net.minecraftforge.fml.loading.FMLPaths;
Expand All @@ -32,6 +25,13 @@ public static String getModloader() {
return "forge";
}
public static String getModVersion() {
return FMLLoader.getLoadingModList().getModFileById("vivecraft").versionString();
if (isModLoadedSuccess()) {
return FMLLoader.getLoadingModList().getModFileById("vivecraft").versionString();
}
return "no version";
}

public static boolean isModLoadedSuccess() {
return FMLLoader.getLoadingModList().getModFileById("vivecraft") != null;
}
}

0 comments on commit a60f439

Please sign in to comment.