Retera / WarsmashModEngine

An emulation engine to improve Warcraft III modding
GNU Affero General Public License v3.0
192 stars 37 forks source link

can't open warsmash #19

Open LoveBeforT opened 1 year ago

LoveBeforT commented 1 year ago

Warcraft Version: 1.24e Renderer: NVIDIA GeForce RTX 3060/PCIe/SSE2 Wasting memory with conversion from InputStream to buffer in MdxModel Loading TOC file: UI\FrameDef\FrameDef.toc line 1:0 token recognition error at: '?' Loading TOC file: UI\FrameDef\SmashFrameDef.toc Wasting memory with conversion from InputStream to buffer in MdxModel Wasting memory with conversion from InputStream to buffer in MdxModel Wasting memory with conversion from InputStream to buffer in MdxModel Wasting memory with conversion from InputStream to buffer in MdxModel Wasting memory with conversion from InputStream to buffer in MdxModel Attempting to load non-existant file: ReplaceableTextures\.blp java.lang.IllegalArgumentException: input == null! at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1358) at com.etheller.warsmash.viewer5.handlers.blp.BlpTexture.load(BlpTexture.java:30) at com.etheller.warsmash.viewer5.Resource.loadData(Resource.java:28) at com.etheller.warsmash.viewer5.ModelViewer.load(ModelViewer.java:197) at com.etheller.warsmash.viewer5.handlers.mdx.MdxModel.load(MdxModel.java:186) at com.etheller.warsmash.viewer5.handlers.mdx.MdxModel.load(MdxModel.java:315) at com.etheller.warsmash.viewer5.Resource.loadData(Resource.java:28) at com.etheller.warsmash.viewer5.ModelViewer.load(ModelViewer.java:197) at com.etheller.warsmash.parsers.fdf.GameUI.setSpriteFrameModel(GameUI.java:1484) at com.etheller.warsmash.viewer5.handlers.w3x.ui.MenuUI.main(MenuUI.java:813) at com.etheller.warsmash.WarsmashGdxMenuScreen.show(WarsmashGdxMenuScreen.java:234) at com.badlogic.gdx.Game.setScreen(Game.java:61) at com.etheller.warsmash.desktop.DesktopLauncher$1.run(DesktopLauncher.java:122) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.executeRunnables(LwjglApplication.java:309) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:236) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:138) Wasting memory with conversion from InputStream to buffer in MdxModel Wasting memory with conversion from InputStream to buffer in MdxModel Exception in thread "LWJGL Application" java.lang.NullPointerException: Cannot invoke "com.etheller.warsmash.parsers.fdf.frames.UIFrame.setVisible(boolean)" because "this.battleNetChangeEmailPanel" is null at com.etheller.warsmash.viewer5.handlers.w3x.ui.menu.BattleNetUI.<init>(BattleNetUI.java:169) at com.etheller.warsmash.viewer5.handlers.w3x.ui.MenuUI.main(MenuUI.java:1393) at com.etheller.warsmash.WarsmashGdxMenuScreen.show(WarsmashGdxMenuScreen.java:234) at com.badlogic.gdx.Game.setScreen(Game.java:61) at com.etheller.warsmash.desktop.DesktopLauncher$1.run(DesktopLauncher.java:122) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.executeRunnables(LwjglApplication.java:309) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:236) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:138)

Retera commented 1 year ago

Hi. Sorry about this, you did everything right, but when you used the latest version of the "warsmash.ini" file from the Hive Workshop download of the Warsmash engine (which it uses by default), you got hit by a change that I added when trying to share with some other people. You need to use "warsmashLegacy.ini" instead.

I am basing this assumption on the specific error message that you encountered. As a part of the multiplayer gaming network UI that I show when trying to join chat lobbies or multiplayer games, I load a bunch of presets from the Warcraft III assets including some presets for the style and layout of these multiplayer menu UIs. One of the changes to these multiplayer menu UIs between Patch 1.14 and Patch 1.22 was the addition of a "ChangeEmailPanel" component in the UI. Even though I do not use this component and do not support emails in Warsmash Server at this time, I load that component and then hide it because it is irrelevant to my current test version. So I messed up twice; firstly that the component is required to exist in the Warcraft III assets, and second that your default config file is trying to load the Patch 1.14 data instead of the Patch 1.24 data.

If you want to get this working fast, just go into the Warsmash folder that you (I assume) downloaded from Hive Workshop, and there should be in this folder both "warsmash.ini" and also "warsmashLegacy.ini". What needs to happen is you want to rename or remove "warsmash.ini" and then put the "warsmashLegacy.ini" into its place. This will cause "war3patch.mpq" to load from inside your Warcraft III installation, effectively upgrading it from Patch 1.14 data into Patch 1.24 data. The default INI file does not include this "war3patch.mpq" because I removed it in order to support the Warcraft III Patch 1.29 which they said is probably going to be the version Hive Workshop supports in the future, now in these times when Activision Blizzard takes further steps towards having "no officially working" version of Warcraft III for the general public.

But Patch 1.29 was made by the Reforged team and they made the goofy decision to remove the "war3patch.mpq" that was in all the versions made by the pre-Activision version of Blizzard. I guess it makes the installation smaller, but it means that the default Warsmash config we use for all the legacy versions of Warcraft 3 assets is different than the Warsmash config that will probably be default if we ever get to a future where people are all using the same version of Warcraft 3.