Code Monkey home page Code Monkey logo

beatsaber-ipa-reloaded's Introduction

beatsaber-ipa-reloaded's People

Contributors

andruzzzhka avatar arimodu avatar artman41 avatar atemu avatar auros avatar dependabot[bot] avatar erisapps avatar geefr avatar kinsi55 avatar meivyn avatar mikegecko avatar nicoco007 avatar nike4613 avatar tonimacaroni avatar zingabopp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beatsaber-ipa-reloaded's Issues

Game unable to launch unless cleaninstall is performed

We have had several users in the #support channel report that when they launch the game they briefly see a console window, then the game closes. Here is an example https://cdn.discordapp.com/attachments/442696229508612096/564336479833292810/bandicam_2019-04-06_23-26-34-710.jpg

Here is the output log of the user above
output_log.txt

Workaround
Currently the solution is to perform a clean reinstall of Beat Saber with the following steps

  1. Make sure to back up your CustomSongs folder before uninstalling
  2. Uninstall Beat Saber
  3. Delete your "Beat Saber" folder
  4. Reinstall the game, then make sure to run it once without modding it, then close it
  5. Mod the game using the latest Mod Manager https://github.com/beat-saber-modding-group/BeatSaberModInstaller/releases/latest

Errors doing a local build

references missing BeatSaberCustomUI Assembly-CSharp Mono.Cecil newtonsoft json and probably more which this all leads to 290 errors during compiling

Mods not recognised when running Beat Saber under Wine (Linux)

I once had mods working when Beat Saber was on version 0.12.2. Then it updated and they stopped working.

I've tried to reinstall the mods onto the new version, but no matter what I try IPA doesn't even seem to get recognised. The --verbose argument does nothing when I add it to the game in Steam. The --launch argument run against IPA and the game exe directly doesn't work as the game seems to crash immediately on load. I've installed .NET 4.7.2 via winetricks/protontricks. I don't know how IPA is meant to hook into the game on load, as it doesn't look like it changes any files (only adding them), and I'm at a loss as to why it doesn't work. I've even copied the files over from a separate Windows machine that is working, and it still won't work for me.

What's worse, even rolling back to 0.12.2 in Steam doesn't work. I can't even get old versions of the mods to install and be recognised, the same problem happens with them now too. I can't understand what has changed, when it worked so perfectly before when I first installed it a couple months ago. If I could even get that working I would just stick to the old version.

I know Beat Saber is a Windows game and this isn't made with the idea of running under Wine/Linux being supported, but seeing as it USED to work I had hope of being at least pointed in the right direction or given some advice on how to debug this.

winhttp.dll override breaks wine (with fix)

I haven't had time to dig into this until recently, but an update a few weeks ago completely broke this in Wine whereas prior it worked perfectly. Anyway, I worked with a wine dev digging through logs and it turns out this was caused by the way the newer IPA hotloads winhttp.dll.

It can be fixed by adding a DLL override in winecfg for 'winhttp' to 'native,builtin'. I've made a .REG file that can just be run through regedit that does this automatically: https://github.com/Vash63/bsmodinstaller.py/blob/master/winhttp.reg

Also on that repo I'm hoping to get my mod installer working again (it relied heavily on modsaber) to make this a bit more automated.

tldr: Could you notate somewhere in the Readme or any FAQ that this winhttp override is necessary? It wasn't required with the old IPA and was an unexpected regression.

UnityEngine.CoreModule.dll access denied

Whenever I launch IPA it says System.UnauthorizedAccessException: Access to the path 'common\Beat Saber\Beat Saber_Data\Managed\UnityEngine.CoreModule.dll' is denied.

Tags are missing

Why are the tagged versions not corresponding with the versions beatmods or even missing?

Library logger interface

It would be very convenient if there were some interface to allow for libraries to register a log interface from within a bare manifest file.

Auto-scrolling broken

I have done 3 fresh installs only with BSIPA each time i load any window that has a scroll bar, scrolls to the top and won't let you scroll down.

Refs/refs.txt - Build failure report

This is merely a report for notification, just in case it is helpful.

  1. The issue
    • When building for .NET 4, build fails because there is no Muse Dash.
  2. Versions
    • BSIPA 4.0.0-beta branch
    • Beat Saber 1.8.0b1 Beta branch, but other versions should apply.
  3. Steps to reproduce:
    • Cloned the repo
      git clone repo && cd repo
      git checkout 4.0.0-beta
      git submodule init && git submodule update
    • Made the bsinstalldir.txt directory with the appropriate path
    • Opened the solution in Visual Studio and Build Debug - x64-Net4.
    • Build fails with:
      "$"Invalid PathMuseDash_Data/Managed/UnityEngine.CoreModule.dll?alias=UnityEngine.CoreModule.Net3.dll" System.ArgumentException: Invalid character in path (refs.txt:45 or refs.txt:46)
    • The above can be solved by getting rid of the Muse Dash part in refs.txt.
    • Additionally, for Beat Saber 1.8.0b1, build also fails with:
      System.IO.FileNotFoundException: 'C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data/Managed/MainAssembly.dll' File not found. (refs.txt:34)
    • This can also be solved by adding """Main.dll?virt at the last Beat Saber option in refs.txt
    • Also, BSIPA-ModList doesn't build at all with a bunch of missing references, thus needs to be disabled.

Pretty sure it's a known issue, pinging just in case it needs to be taken care of.
Thank you for reading.

Error (can someone please help me) when running IPA

ERROR: Oops! This should not have happened.

System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\Managed\System.Runtime.Serialization.dll' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.FileInfo.CopyTo(String destFileName, Boolean overwrite)
at IPA.Patcher.BackupUnit.Restore()
at IPA.Patcher.BackupManager.Restore(PatchContext context)
at IPA.Program.Install(PatchContext context)
[Press any key to continue]

BeatSaber crashes on close after installing only BSIPA

Log makes it seem like I have closed the game quickly. But I assure you that isn't the issue. It seems to be hanging for a while at the point saying "[DEBUG @ 21:43:38 | IPA/Updater] To Download "

To clarify, I haven't done anything to the base game, but install BSIPA. No Custom Songs or anything. I"m using the latest ModAssistant 1.0.25 to install and my Steam install has no non-default config.

I'm unsure of what it is exactly trying to do here, but if the dev can assist me in understanding how this normally works, I can try to figure out what might be going on.

Any chance to run a debug version or enable debug logging?

2019.11.08.21.43.34.log

Autoupdater makes mods downgrade in specific cases

If IPA fails to delete the IPA/pending directory, the pending mods will always stay and the mods will always be downgraded to that pending version. This was originally discovered in Goobwabber/MultiplayerExtensions#114. You can find the log and other info there.

Error looks like this:

[ERROR @ 15:26:31 | IPA/Updater] Something went wrong performing an operation that should never fail!
[ERROR @ 15:26:31 | IPA/Updater] System.UnauthorizedAccessException: Access to the path "D:\Steam\steamapps\common\Beat Saber\IPA\Pending\CustomSabers" is denied.
[ERROR @ 15:26:31 | IPA/Updater]   at System.IO.Directory.Delete (System.String path) [0x0006f] in <9577ac7a62ef43179789031239ba8798>:0 
[ERROR @ 15:26:31 | IPA/Updater]   at System.IO.Directory.RecursiveDelete (System.String path) [0x00051] in <9577ac7a62ef43179789031239ba8798>:0 
[ERROR @ 15:26:31 | IPA/Updater]   at System.IO.Directory.RecursiveDelete (System.String path) [0x00024] in <9577ac7a62ef43179789031239ba8798>:0 
[ERROR @ 15:26:31 | IPA/Updater]   at System.IO.Directory.Delete (System.String path, System.Boolean recursive) [0x00009] in <9577ac7a62ef43179789031239ba8798>:0 
[ERROR @ 15:26:31 | IPA/Updater]   at IPA.Injector.Updates.InstallPendingModUpdates () [0x0024c] in <4bdc24c1a08744338464a7a790d69395>:0 

I took a look at the code but I'm not really sure how it could be fixed, since this specific case comes down to a permissions issue. It's probably best to just notify support and if someone says their "mods are downgrading" then just tell them to delete IPA/Pending

Unable to load Mod, the following error is displayed after adding --verbose

I'm in Beat Saber 1.7.0, which is newly installed and has been run once,
BSIPA 3.13.7 was installed using ModAssistant, but the Mod option cannot be loaded anyway.
When I opened Beat Saber\Plugins, I couldn't find any mods.
After running the Beat Saber with the --verbose parameter, BSIPA outputs the following:

System.ArgumentException: Value does not fall within the expected range.
at IPA.Loader.LibLoader+d__13.MoveNext () [0x00061] in <561f7537f11b496bb2465f41d54f54b0>:0
at IPA.Loader.LibLoader.SetupAssemblyFilenames (System.Boolean force) [0x0009d] in <561f7537f11b496bb2465f41d54f54b0>:0
at IPA.Loader.LibLoader.Configure () [0x0002c] in <561f7537f11b496bb2465f41d54f54b0>:0
at IPA.Injector.Injector.SetupLibraryLoading () [0x0000e] in :0
at IPA.Injector.Injector.Main (System.String[] args) [0x00017] in :0
Setting breakpad minidump AppID = 620980
Steam_SetMinidumpSteamID: Caching Steam ID: 76561198430065093 [API loaded no]

This is the game's log folder:
https://wgzeyu.gtxcn.com/img/Logs.zip

Linux - Possibility of Native or .Net core build?

So over in the linux world we're having some issues with Wine, making it a pain to install .net 4.6.x.

The only reason we need that is to run ipa.exe for the initial patching process, once running the game it's all under proton.

So before I go diving into the code does anyone have ideas on whether ipa could be built with .net core, or otherwise provide a wine-independent executable for Linux use?
Strictly it would only be needed for the initial setup process, when loading/hooked through winhttp.dll that should all be under steam's proton install, no issues there once things are installed.

And if no ideas thanks anyway, keep up the awesome work here <3

BSIPA Install Access refused

I wanted to patch beatsaber 1.3 but the ipa.exe installer refuse ton Install due to an System.UnauthorizeAccessExecption while backuping the System.Runtime.Serialization. It can't seems to works even after a reboot and throws out the same error even in while lainchin in administrator. i've try to patch in a cm to test but non luck. So it isn't a permission issue. If you need the full log

Launch game error : System.NullReferenceException

Hello,

when i start the game after mod installed (IPA), i have en issue. The game crashes instantly. Looking at the logs, I have the following message :

[DEBUG @ 20:47:25 | IPA/LibraryLoader] Found file Newtonsoft.Json.dll as C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Libs\Newtonsoft.Json.dll
[ERROR @ 20:47:25 | IPA] Error installing harmony patches to intercept Console color properties:
[ERROR @ 20:47:25 | IPA] System.NullReferenceException: Object reference not set to an instance of an object
[ERROR @ 20:47:25 | IPA] at System.Guid.NewGuid () [0x00029] in <9577ac7a62ef43179789031239ba8798>:0
[ERROR @ 20:47:25 | IPA] at Mono.Cecil.ModuleDefinition.CreateModule (System.String name, Mono.Cecil.ModuleParameters parameters) [0x0005b] in <28a34da201e449be81fe5efb7481a26c>:0
[ERROR @ 20:47:25 | IPA] at HarmonyLib.HarmonySharedState.CreateModule () [0x00018] in <28a34da201e449be81fe5efb7481a26c>:0
[ERROR @ 20:47:25 | IPA] at HarmonyLib.HarmonySharedState.GetState () [0x0001f] in <28a34da201e449be81fe5efb7481a26c>:0
[ERROR @ 20:47:25 | IPA] at HarmonyLib.HarmonySharedState.GetPatchInfo (System.Reflection.MethodBase method) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
[ERROR @ 20:47:25 | IPA] at HarmonyLib.PatchProcessor.Patch () [0x0006d] in <28a34da201e449be81fe5efb7481a26c>:0
[ERROR @ 20:47:25 | IPA] at HarmonyLib.Harmony.Patch (System.Reflection.MethodBase original, HarmonyLib.HarmonyMethod prefix, HarmonyLib.HarmonyMethod postfix, HarmonyLib.HarmonyMethod transpiler, HarmonyLib.HarmonyMethod finalizer) [0x00028] in <28a34da201e449be81fe5efb7481a26c>:0
[ERROR @ 20:47:25 | IPA] at IPA.Logging.StdoutInterceptor+ConsoleHarmonyPatches.Patch (HarmonyLib.Harmony harmony) [0x0005d] in <8e98fd56b0d143f6ba8e9ca7b94817e7>:0
[INFO @ 20:47:25 | _] System.Security.Cryptography.CryptographicException: Couldn't access random source.
[INFO @ 20:47:25 | _] at System.Security.Cryptography.RNGCryptoServiceProvider.Check () [0x0001c] in <9577ac7a62ef43179789031239ba8798>:0
[INFO @ 20:47:25 | _] at System.Security.Cryptography.RNGCryptoServiceProvider..ctor () [0x00012] in <9577ac7a62ef43179789031239ba8798>:0
[INFO @ 20:47:25 | _] at System.Guid.FastNewGuidArray () [0x00030] in <9577ac7a62ef43179789031239ba8798>:0
[INFO @ 20:47:25 | _] at System.Reflection.Emit.ModuleBuilder..ctor (System.Reflection.Emit.AssemblyBuilder assb, System.String name, System.String fullyqname, System.Boolean emitSymbolInfo, System.Boolean transient) [0x00035] in <9577ac7a62ef43179789031239ba8798>:0
[INFO @ 20:47:25 | _] at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName, System.Boolean emitSymbolInfo, System.Boolean transient) [0x0005b] in <9577ac7a62ef43179789031239ba8798>:0
[INFO @ 20:47:25 | _] at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName) [0x00000] in <9577ac7a62ef43179789031239ba8798>:0
[INFO @ 20:47:25 | _] at IPA.Config.Stores.GeneratedStoreImpl.get_Module () [0x0003a] in <8e98fd56b0d143f6ba8e9ca7b94817e7>:0
[INFO @ 20:47:25 | _] at IPA.Config.Stores.GeneratedStoreImpl.CreateAndInitializeConvertersFor (System.Type type, System.Collections.Generic.IEnumerable`1[T] structure) [0x00012] in <8e98fd5

NullReferenceException on startup with a fresh install

Hi all, got some problems while running a fresh install.

With fresh install I mean I downloaded the game from steam, ran it once, then proceeded to follow the steps shown in the documentation.

Version: BSIPA 4.1.6
Error log: _latest.log

Did some digging around, found out the exception is occurring here.
Commit 078ff43 seems to address some related issue here, but I have no idea how to fix that.

Any help would be appreciated.

System.EntryPointNotFoundException: SetPeekMessageHook on Linux

With BS IPA version 3.13.x which gets installed via Mod Assisstant for Beat Saber version 1.3.0 the mods aren't loaded on Linux with wine/proton anymore.

It seems to get loaded, but stops with this message in the log file:

[INFO @ 22:16:01 | _] System.EntryPointNotFoundException: SetPeekMessageHook
[INFO @ 22:16:01 | _]   at (wrapper managed-to-native) IPA.Utilities.CriticalSection+WinHttp.SetPeekMessageHook(IPA.Utilities.CriticalSection/WinHttp/PeekMessageHook)
[INFO @ 22:16:01 | _]   at IPA.Utilities.CriticalSection.ResetExitHandlers () [0x00018] in <5d740ba0e5eb41aba55dc7889c3ff942>:0 
[INFO @ 22:16:01 | _]   at IPA.Utilities.CriticalSection.Configure () [0x0000f] in <5d740ba0e5eb41aba55dc7889c3ff942>:0 
[INFO @ 22:16:01 | _]   at IPA.Injector.Injector.Main (System.String[] args) [0x00067] in <48d88cb1b3d24e2cac71318bd6c46df6>:0 

It was working perfectly with the override winhttp=n,b before this version.

access denied

when i run IPA(even as administrator) it gives this:

Restoring old version...
Restoring Beat Saber_Data\Managed\System.Runtime.Serialization.dll
C:\Users\Денис\Downloads\Beat Saber\IPA\Backups\Beat Saber\2019-11-30_10-18-14\Beat Saber_Data\Managed\System.Runtime.Serialization.dll => C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\System.Runtime.Serialization.dll
ERROR: Oops! This should not have happened.

System.UnauthorizedAccessException: Отказано в доступе по пути "C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\System.Runtime.Serialization.dll".
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
в System.IO.FileInfo.CopyTo(String destFileName, Boolean overwrite)
в IPA.Patcher.BackupUnit.Restore()
в IPA.Patcher.BackupManager.Restore(PatchContext context)
в IPA.Program.Install(PatchContext context)
[Press any key to continue]

it's not problem with runned game or premissions

BSIPA failed to Install

While using Mod Assistant to install mods, always failed to update BSIPA.
I can update BSIPA via Mod Assistant each time but find it still 3.13.2 version the next time I run Mod Assistant.
Mods don't effect in games.
The other mods are successfully updated.
Game version 1.9.0
Mod assistant version 1.1.502

Newtonsoft can't find System.Numerics

Hello,

I've been trying to use BSIPA on Hearthstone (another Unity game), and after running IPA.exe and launching the game I have this issue:

[DEBUG @ 15:52:18 | IPA/LibraryLoader] Resolving library System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
[DEBUG @ 15:52:18 | IPA/LibraryLoader] Looking for file System.Numerics.dll
[DEBUG @ 15:52:18 | IPA/LibraryLoader] Found file System.Numerics.dll as D:\Games\Hearthstone\Libs\System.Numerics.dll
[DEBUG @ 15:52:18 | IPA/LibraryLoader] Resolving library System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
[DEBUG @ 15:52:18 | IPA/LibraryLoader] Looking for file System.Numerics.dll
[DEBUG @ 15:52:18 | IPA/LibraryLoader] Found file System.Numerics.dll as D:\Games\Hearthstone\Libs\System.Numerics.dll
[ERROR @ 15:52:18 | IPA/Config] Error serializing value for D:\Games\Hearthstone\UserData\Beat Saber IPA.json
[ERROR @ 15:52:18 | IPA/Config] System.TypeInitializationException: The type initializer for 'Newtonsoft.Json.JsonWriter' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Newtonsoft.Json.Utilities.ConvertUtils' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
[ERROR @ 15:52:18 | IPA/Config]    --- End of inner exception stack trace ---
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.Utilities.EnumUtils.ToUInt64 (System.Object value) [0x00006] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.Utilities.EnumUtils.InitializeValuesAndNames (Newtonsoft.Json.Utilities.StructMultiKey`2[T1,T2] key) [0x00045] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]   at (wrapper delegate-invoke) System.Func`2[Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy],Newtonsoft.Json.Utilities.EnumInfo].invoke_TResult_T(Newtonsoft.Json.Utilities.StructMultiKey`2<System.Type, Newtonsoft.Json.Serialization.NamingStrategy>)
[ERROR @ 15:52:18 | IPA/Config]   at System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue].GetOrAdd (TKey key, System.Func`2[T,TResult] valueFactory) [0x00034] in <7ba07f088431485bb722f3b3373e87ee>:0 
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.Utilities.ThreadSafeStore`2[TKey,TValue].Get (TKey key) [0x00000] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.Utilities.EnumUtils.GetEnumValuesAndNames (System.Type enumType) [0x0000c] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.JsonWriter.BuildStateArray () [0x0001b] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.JsonWriter..cctor () [0x000b3] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]    --- End of inner exception stack trace ---
[ERROR @ 15:52:18 | IPA/Config]   at Newtonsoft.Json.JsonTextWriter..ctor (System.IO.TextWriter textWriter) [0x00000] in <836484b0267d488c8d30f28b57efebd9>:0 
[ERROR @ 15:52:18 | IPA/Config]   at IPA.Config.Providers.JsonConfigProvider.Store (IPA.Config.Data.Value value, System.IO.FileInfo file) [0x0002f] in <a83e389c035f440ca90c6c2639d8fa6c>:0 
[DEBUG @ 15:52:18 | IPA/Config] Generated impl WriteTo IPA.Loader.DisabledConfig<Generated>

where Newtonsoft can't find the System.Numerics DLL.
I have added it to the Libs folder, which is why it is found by IPA/LibraryLoader.

Do you have any idea what should be done to solve this?

Thanks!
Seb

Separate colors for log prefix/message

In the current implementation of the BSIPA logger, stdout messages have a different color than their [INFO] prefix. This results in a nice contrast between the message and the prefix, making it extremely easy to spot the actual message very quickly.

Here's an example to show what I'm describing:

Changing the white console color results in the entire [INFO] prefix also changing to that color, so what I'm suggesting is a change in the BSIPA logger system to allow for log messages to have a different color prefix/message.

A proposal to change the way that plugin enabling and disabling is done

In the in-development beta of BSIPA 4, all BSIPA plugins have been made to be, by default, enableable at runtime, however not disableable at runtime. This is a strange inconsistency and has several ways of being fixed:

  1. Make the default be both enableable and disableable at runtime
  2. Leave it as is
  3. Swap the inconsistency to make it by default disableable but not enableable at runtime
  4. Make the default be neither enableable nor disableable at runtime, so that that is opt-in
  5. Completely redo the plugin interface so that both cases are explicit

My preference is, in order, 1, then 5, then 2.

For number 1: I believe that having the default allow runtime enabling and disabling would encourage mod authors to write more robust code, as it would need to be capable of withstanding multiple disable/enable cycles. It would also give users that wish to exercise the control that this system provides the ability to with more mods out-of-the-box.

Number 2 should be fairly self-explanatory, as its basically what already exists in BSIPA 3.

Number 5 is the most interesting one, and possibly the most promising.
The way I currently envision such a change going would be such that the resulting plugin classes would look something like this:

For a non-enableable non-disableable plugin:

[BSIPAPlugin(PluginOptions.RuntimeStateStatic)]
public class Plugin 
{
    private PluginConfig config;
    [Init]
    public void Init(Config cfg)
    {
        config = cfg.Generated<PluginConfig>();
    }

    [OnEnable]
    public void OnEnable() 
    {
        // do your stuff for the enable event
    }

    [OnDisable]
    public void OnExit()
    {
        // do your stuff for game exit
    }
}

For an enableable and disableable plugin:

[BSIPAPlugin(PluginOptions.RuntimeStateChanging)]
public class Plugin 
{
    private PluginConfig config;
    [Init]
    public void Init(Config cfg)
    {
        config = cfg.Generated<PluginConfig>();
    }

    [OnEnable]
    public void OnEnable() 
    {
        // do your stuff for the enable event
    }

    [OnDisable]
    public void OnDisable()
    {
        // do your stuff for the disable event
    }
}

None of this is final, and any suggestions for it are welcome.

when i try to start the game after patching nothing happens

BUT when i delete winhttp.dll game starts... but without mods

Restoring old version...
Restoring Beat Saber_Data\Managed\I18N.dll
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\I18N.dll
Restoring Beat Saber_Data\Managed\I18N.West.dll
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\I18N.West.dll
Restoring Beat Saber_Data\Managed\IPA.Injector.dll
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\IPA.Injector.dll
Restoring Beat Saber_Data\Managed\IPA.Injector.pdb
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\IPA.Injector.pdb
Restoring Beat Saber_Data\Managed\IPA.Loader.dll
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\IPA.Loader.dll
Restoring Beat Saber_Data\Managed\IPA.Loader.pdb
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\IPA.Loader.pdb
Restoring Beat Saber_Data\Managed\IPA.Loader.xml
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\IPA.Loader.xml
Restoring Beat Saber_Data\Managed\Microsoft.CSharp.dll
x C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\Microsoft.CSharp.dll
Restoring Beat Saber_Data\Managed\System.Runtime.Serialization.dll
C:\Users\Денис\Downloads\Beat Saber\IPA\Backups\Beat Saber\2019-12-13_6-52-01\Beat Saber_Data\Managed\System.Runtime.Serialization.dll => C:\Users\Денис\Downloads\Beat Saber\Beat Saber_Data\Managed\System.Runtime.Serialization.dll
Restoring Libs\0Harmony.1.2.0.1.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\0Harmony.1.2.0.1.dll
Restoring Libs\Ionic.Zip.1.9.1.8.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\Ionic.Zip.1.9.1.8.dll
Restoring Libs\Mono.Cecil.0.10.4.0.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\Mono.Cecil.0.10.4.0.dll
Restoring Libs\Mono.Cecil.Mdb.0.10.4.0.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\Mono.Cecil.Mdb.0.10.4.0.dll
Restoring Libs\Mono.Cecil.Pdb.0.10.4.0.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\Mono.Cecil.Pdb.0.10.4.0.dll
Restoring Libs\Mono.Cecil.Rocks.0.10.4.0.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\Mono.Cecil.Rocks.0.10.4.0.dll
Restoring Libs\Newtonsoft.Json.12.0.0.0.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\Newtonsoft.Json.12.0.0.0.dll
Restoring Libs\SemVer.1.2.0.0.dll
x C:\Users\Денис\Downloads\Beat Saber\Libs\SemVer.1.2.0.0.dll
Restoring winhttp.dll
x C:\Users\Денис\Downloads\Beat Saber\winhttp.dll
Copying C:\Users\Денис\Downloads\Beat Saber\winhttp.dll
[Press any key to continue] <

Type modification before load time

Try to add some format to allow plugins to modify types, more than with Harmony, by defining changed methods and fields with some metadata for location searching

Corrupted All Of The Game Files

WTH i get this from beatsaver and i click it and everything is gone off of my computer and will not open it saying major files are corrupted. Frick This!!!

[Request] Additional Command Flags

Add additional launch arguments for Beat Saber that BSIPA can read to do various things.

Here are some I would find useful:

Flag Type Description Example
--disable-autoupdate boolean Does not check for mod updates, only loads them n/a
--log-rotate string Enables log rotation, deletes logs older than argument value --log-rotate 7d
--combine-logs boolean Disables per-mod logging n/a
--no-yeet boolean Disables mod yeeter n/a

New BeatSaber release 1.1.0p1 breaks SemVer.Version (in IPA.Loader.PluginManager)

Beat Saber version 1.1.0p1 breaks SemVer.Version used in IPA.Loader.PluginManager.Load
Stacktrace:

[CRITICAL @ 17:40:13 | UnityEngine] ArgumentException: Invalid version string: 1.1.0p1
[CRITICAL @ 17:40:13 | UnityEngine] SemVer.Version..ctor (System.String input, System.Boolean loose) (at <dc65dd8f03a84bbea3e4d134615b1a4d>:0)
[CRITICAL @ 17:40:13 | UnityEngine] IPA.Loader.PluginManager.Load () (at <34a700a0d3854de2963fe8845db23cee>:0)
[CRITICAL @ 17:40:13 | UnityEngine] IPA.Loader.PluginComponent.Awake () (at <34a700a0d3854de2963fe8845db23cee>:0)
[CRITICAL @ 17:40:13 | UnityEngine] UnityEngine.GameObject:AddComponent()
[CRITICAL @ 17:40:13 | UnityEngine] IPA.Loader.PluginComponent:Create()
[CRITICAL @ 17:40:13 | UnityEngine] IPA.Loader.PluginComponent:OnDestroy()

Code: https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded/blob/2c46240e65bd16c15f97dce0252d747ffaa348bf/IPA.Loader/Loader/PluginManager.cs#L297

As a fix, one can use new SemVer.Version(lastVerS.Split('p').First()) instead of new SemVer.Version(lastVerS), and maybe wrap this in a try/catch which defaults to the last known version if this fails too - for futureproofing.

BSIPA breaks controller Vibration on Beat Saber 1.3.0

Hi, sadly I didn't dodge the new Beat Saber update well enough.
So after updating I have no vibration - only a tiny bit when clicking with the trigger.
My testing led me to believe, that its BSIPA.

My Setup:
HTC Vive + Valve Index Controllers
Windows 10 x64 1903 (German)

When I do a clean install without any mods, my vibration works.
Then I only install BSIPA through mod assistant - no other mods at all.
I start the game and vibration is gone.

latest.log

Could not load file or assembly '0Harmony, Version=1.2.0.1, Culture=neutral, PublicKeyToken=null' or one of its dependencies. File name: '0Harmony, Version=1.2.0.1, Culture=neutral, PublicKeyToken=null'

anyone help me? when run bs out log is :

Doorstop started!
DLL Path: C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\WINHTTP.dll
Doorstop DLL Name: WINHTTP
Looking for original DLL from C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\WINHTTP_alt.dll
Looking for original DLL from C:\WINDOWS\system32\WINHTTP.dll
Doorstop enabled!
Installing IAT hook
Hook installed!
Attempting to install GetMessageA and GetMessageW hooks
Could not hook GetMessageW! (not an error)
Attempting to install PeekMessageA and PeekMessageW hooks
Got mono.dll at 00007FFBD9A30000
Loading assembly: Beat Saber_Data/Managed/IPA.Injector.dll
Invoking method!
An error occurred invoking the injector: System.IO.FileNotFoundException: Could not load file or assembly '0Harmony, Version=1.2.0.1, Culture=neutral, PublicKeyToken=null' or one of its dependencies.

File name: '0Harmony, Version=1.2.0.1, Culture=neutral, PublicKeyToken=null'

Split plugin interface

Split it so that OnUpdate/OnFixedUpdate and the level events are separate interfaces, that don't need to be implemented.

Why BSIPA include BeatsaberCustomUI in the refs

BSIPA is the basic tool for developing mod, why include BeatsaberCustomUI? In addition, where is musedasha_data in resfs.txt? According to the document git clone, I can't build it. Who can help me?

Game crashes when launching from executable without SteamVR

(This is a reopening of #70, addressing the original comment)

When launching the game through its executable (Beat Saber.exe) or through a shortcut (e.g. in an Oculus library) with BSIPA installed, the game crashes with the following "Sharing violation on path" error. The game launches through these shortcuts correctly without BSIPA. The error occurs regardless of number of launch attempts, and can be recreated as follows:

  1. Reboot computer.
  2. Connect a virtual reality device (I use the Oculus Quest 2 via Air Link, have not tested with other headsets or connection methods).
  3. Launch Steam.
  4. Launch Beat Saber by navigating to game data folder and running Beat Saber.exe (tested with the default mods on 1.16.4 via Mod Assistant, as well as only BSIPA, SongCore, and corequisites).

This procedure has been tested multiple times, with a consistent crash message result.

image

Game crashes when launching from executable without SteamVR

When launching the game through its executable (Beat Saber.exe) or through a shortcut (e.g. in an Oculus library) with BSIPA installed, the game crashes with the following "Sharing violation on path" error. The game launches through these shortcuts correctly without BSIPA.

image

ModPrefs.HasKey always returns true

The ModPrefs.HasKey() function always returns true, even if the checked key is not present.

The HasKey() function is querying for a key and checks for NULL as a return value:

https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded/blob/master/IPA.Loader/Config/ModPrefs.cs#L204

However, IniReadValue never returns NULL - for non-existing keys, it'll return an empty string (third parameter):

https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded/blob/master/IPA.Loader/Config/IniFile.cs#L96

getThreadContext FAILED upon launching

The new IPA has been causing me and "many" others some problems upon launching the game. Some say the problem was FaceIT Anti cheat and upon deleting it, it worked for them. But I still have the same issue(s) even though I uninstalled FaceIT.

What I tried to fix the issue:

-Uninstall FaceIT
-Reinstalling the game
-Manually downloading ALL of the mods, including IPA (it worked like this, but when I tried launching the game second time, I got the same error(s) again
-Verifying game files

This is the first part I get:

https://imgur.com/a/bqhJrnM

This is the second part:

https://imgur.com/a/Oo3aLiv

Library only plugins

For mods that are defined as only being a library, be able to load the raw manifest from the Plugins directory for dependency resolution. The file would be named <mod name>.json.

[Mod List/Updater] New dependencies are not downloaded on update for mod with invalid id/name

As noted in the title, a mod with an invalid id/name will be updated properly (I assume based on hash or something), however any new dependencies associated with it will not be downloaded.

Example:
The old YUR.fit mod had an invalid manifest. The id/name said "YUR" when the name on BeatMods is "YUR Fit Calorie Tracker". The BSIPA mod list properly identifies that the mod has an update, and updates it accordingly, however it does not download the new dependencies (BeatSaberMarkupLanguage and SkiaSharp).

I've been told this might be happening due to the invalid name/id in the manifest, but if that is the case then BSIPA should not be downloading an update for this mod in the first place, or it should correctly identify the new dependencies and download them accordingly. Therefore, I assume this is a bug in the updater logic.

Let me know if you need me to provide any more details.

Exception initializing logging when using --verbose

When I run bsipa 3.12.14 in a fresh install of beat saber, and then run beat saber with the --verbose parameter, this stacktrace is generated every time I launch the game:

System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect.
 
  at IPA.Logging.WinConsole.InitializeOutStream () [0x00061] in <42e6b957870f49a
8b15c6a9cec75005b>:0
  at IPA.Logging.WinConsole.InitializeStreams () [0x00000] in <42e6b957870f49a8b
15c6a9cec75005b>:0
  at IPA.Logging.WinConsole.Initialize (System.Boolean alwaysCreateNewConsole) [
0x00023] in <42e6b957870f49a8b15c6a9cec75005b>:0
  at IPA.Injector.Injector.Main (System.String[] args) [0x00011] in <442e552a97d
843ada80a94daad31e07b>:0

When I then put dlls in plugins/, they don't get loaded. The game itself still runs properly, just without mods.

When I stop using --verbose, everything works as expected and mods get loaded.

If I then turn --verbose back on, the exception returns and the game is just a black screen. verbose is nice for mod development so I would like to be able to use it

--verbose worked fine for me back on beatsaber 0.12.2 (before bsipa had forked ipa?)

(windows 8.1, steam)

Doorstop: Fatal

I keep getting this error after installing BSIPA and it's only with BSIPA, the instillation goes fine and then when I run it it makes that error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.