• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Mdx sanity tester

Level 29
Joined
Jul 29, 2007
Messages
5,174
Welcome to the sanity tester!
A tool that looks for issues in models (*.mdx, *.mdl) and textures (*.blp).
If a map (*.w3m, *.w3x) is tested, all of the models and textures inside it will be tested.

There isn't much to do to start - simply open up the tester, and start testing.

To load things, you need to grab and drop them anywhere on the tester page:
  • Local files from your computer.
  • Links to Hive thread/pastebin attachments.
  • Links to Hive resources.
See the attached images.

For models, the test will report errors, severe warnings, warnings, and unused objects (either because they are really not used, or due to some error/warning).
Errors are things that will cause the model to either not load at all, or otherwise crash the game or the World Editor.
Severe warnings are things that will most likely cause the model to render wrong.
Warnings are more lenient, and in many cases might not affect how the model ends up behaving.

The texture test is a far simpler, and the rules aren't so much known to me, so for now any issue will be reported as a warning.


Did a model work in the game but not pass the test? did a model pass when it shouldn't have? any other issue? please post it.
HOWEVER, before doing so, open up your browser's console (F12 usually), and copy any errors that show up.

If you see problems with the viewer, rather than the test, I would prefer if you post them in the viewer's thread.



Errors


Error
CausesFix

Corrupted texture path (doesn't end with ".blp" or ".tga")
Model can't be loadedFix the path

A geoset animation references an invalid geoset
Loads in the World Editor. If preplaced in the map, the map will get stuck while loading. If created after map initialization, the geoset animation does nothingReference a valid geoset

Corrupted attachment path (doesn't end with ".mdl")
?Fix the path

Corrupted particle emitter path (doesn't end with ".mdl")
?Fix the path

A ribbon emitter references an invalid material
Loads in the World Editor. Crashes the game while the map loadsReference a valid material

An event object references an invalid global sequence
?Reference a valid global sequence, or None

An event object with zero keys
Model can't be loadedAdd keys, or remove the event object

A node with an invalid parent ID
Model can't be loadedFix it

A node with the same object ID and parent ID
Crashes the World Editor the moment you click on the unit button in order to place it somewhereFix it

A tracks chunk references an invalid global sequence
Crashes the World Editor the moment you select the model file in the Object EditorReference a valid global sequence, or None
Warnings


Warning
CausesFix

Unknown version
??

No sequences
Can cause issues with some use casesAdd sequences

No "stand" sequence
Can cause issues with some use casesAdd a "stand" sequence

No "death" sequence
Can cause issues with some use casesAdd a "death" sequence

A sequence with a negative frame
Probably defined as unsigned, and so the real frame will be HUGE*Don't have sequences with negative frames

A global sequence with 0 length
Uses the first track, regardless of its frameDon't have global sequences with 0 length

A global sequence with negative length
Probably defined as unsigned, and so the real length will be HUGE*Don't have global sequences with negative lengths

A texture defines both a path and a replaceable ID
The path is ignored*Remove the path

A texture uses an unknown replaceable ID
Does nothingUse a known replaceable ID

A material has no layers
?Add layers, or remove the material

A material uses an invalid filter mode
?Change the filter mode

A vertex is not attached to any bone
The vertex will be attached to the map's centerAttach it to something

A geoset is referenced by multiple geoset animations
The last one is used*If the model works properly, remove the useless geoset animations, otherwise, check it

There are geoset animations, but no geosets
?Remove the geoset animations

A bone references an invalid geoset
NothingReference a valid geoset

A bone references an invalid geoset animation
NothingReference a valid geoset animation, or None

A light uses non-recommended attenuation values
?Stay in the range min=80 max=200

No pivot points
A default one is created at the origin*Add pivot points

A particle emitter 2 uses an invalid filter mode
?Change the filter mode

A tracks chunk has 0 tracks
?Add tracks, or remove the tracks chunk

A tracks chunk references a sequence, but there are no sequences
?If you meant to reference a global sequence, do so. If you have no global sequence to reference, and no sequences, then why do you have animation data in the first place?

A track has a frame that isn't in any sequence (ignores frame 0)
Does nothing*Don't have tracks outside of sequences

A track has a negative frame
?Don't have tracks with negative frames

A track chunk has tracks in a sequence, but no opening track for that sequence
Can cause weird animationsAdd an opening track

A track chunk has tracks in a sequence, but no closing track for that sequence
Can cause weird animationsAdd a closing track

A visibility tracks chunk uses an interpolation type that is not None
It is set to None*Change the interpolation type to None

* This is an educated guess, but a guess nonetheless.
 

Attachments

  • attachment.jpg
    attachment.jpg
    8.9 KB · Views: 369
  • resource.jpg
    resource.jpg
    19.6 KB · Views: 371
  • test.jpg
    test.jpg
    235.6 KB · Views: 368
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
I made the test quite more advanced, and updated the main post with nice tables.

Note that there are many question marks.

If you have any broken models, or know what to fill the blanks with, do share.

Some of the question marks I have seen in the past, but no longer have the models, and have no idea if they worked in-game or not.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
Fixed bugs, and changed global sequences with zero length to a warning, since it's load-able (I assume it does nothing).

In general it makes sense to me that all of the current errors will result in models that cannot be loaded, but I can't verify it.
The difference between the error section and the warning section, as they stand, is that the error section is all about invalid references to objects in the model, for which there can be no default values, while the warning section is made of lots of things the game might as well have defaults for.

Beside the zero length global sequences, the test spew no errors for all of the Warcraft 3 1.26 models.

/Edit
Tested a couple of the errors, see updated tables.

Added a test for sequence names. It only checks if the first token is one of the main token list (attack, birth, cinematic, death, decay, dissipate, morph, portrait, sleep, spell, stand, walk).
I am not quite sure how sequence names work, so if more needs to be checked, do say.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
- Added reporting useless objects. Reports textures, texture animations, materials, geoset animations, and global sequences (anything I forgot?)
- Added some more tests (e.g. all texture references in a layer's image animation are checked, and a couple of others).
- Made the client more reliable, it no longer messes with internal models, causing the viewer to show unintended things.
- The test results and console logs are now cleared every time a new test begins.

/Edit
- Sequences with unknown names are now reported as useless, rather than a warning.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
- Updated to the latest library code.
- Improved the testing code, it should be far more stable.
- Added a more stable reference counting code for all of the relevant objects. It works far better, however it doesn't contain the reason an object is considered useless. If the object has errors/warnings, that's probably the reason! If it doesn't, then the object is simply not referenced at all, and is just garbage (or if it's not supposed to be garbage, you forgot to use it!)
- Added more tests and cleaned the existing ones.
- The viewer now shows the model extent. This can help you determine if the extents are an issue for you or not. I am not 100% sure this is how extents work, so correct me if it's not (mostly the size and location).
 
  • Like
Reactions: pyf
Level 11
Joined
Jan 25, 2017
Messages
213
Hey this tool hasn't failed me before now... but I couldn't get Retera's MatrixEater to open a model so I tried to use the sanity tool to see what was amiss... and it doesn't do squat (won't even open it?). I haven't ever had problems with this model in game though.

Any ideas?

EDIT: This is the exception MatrixEater throws:

Unknown error occurred:
java.lang.IndexOutOfBoundsException: Index: 41, Size: 19
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.hiveworkshop.wc3.mdl.Geoset.getMatrix(Geoset.java:243)
at com.hiveworkshop.wc3.mdl.Geoset.updateToObjects(Geoset.java:429)
at com.hiveworkshop.wc3.mdl.MDL.read(MDL.java:1112)
at com.hiveworkshop.wc3.mdl.MDL.read(MDL.java:945)
at com.hiveworkshop.wc3.gui.modeledit.ModelPanel.<init>(ModelPanel.java:51)
at com.matrixeater.src.MainPanel.loadFile(MainPanel.java:2394)
at com.matrixeater.src.MainPanel.loadFile(MainPanel.java:2427)
.... and on and on
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
Added another test, and fixed the extents in the viewer as far as I can tell. This should make it easy to see if the extents are wrong and need to be recalculated in Magos or some other tool.

I removed the attachment name checking, because I cannot figure the exact rules.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
- Added a test for a geoset having too few or too many sequence extents. This doesn't seem to affect the game in any way, but it can make Magos behave badly.
- Removed the file selection button, just drag your files into the page.
- MDL files can now be loaded too.
- The messages are now shown in the same hierarchy the model objects have, rather than a list. The color of the object names is determined whether they, or anything down the hierarchy, have any errors (red), or otherwise any warnings (yellow), or otherwise whether they are not used at all (green).
- Added the [probably useless but fun] ability to view the MDL source of the objects in question. Click on the black "VIEW" button next to the object names. If you happen to notice anything wrong with the MDL source, I'd like to know so.
- BLP testing coming soon-ish™.
 
Last edited:
  • Like
Reactions: pyf
Level 29
Joined
Jul 29, 2007
Messages
5,174
Added a beta BLP test.
If you drop a model onto the page, you get the model test and view.
If you drop a texture onto the page, you get the texture test and a simple 3D texture view.

/Edit
Added the full model structure, you can click on any part of it to show the MDL source.
 
Last edited:
  • Like
Reactions: pyf
Level 29
Joined
Jul 29, 2007
Messages
5,174
You can now load Hive attachments by directly grabbing and dropping their links on the page. This applies to thread and pastebin attachments.

Added tooltip messages to some of the warnings, which you can see by the messages having a black dashed underline.
Their purpose is to explain why the warning is showing.
If it seems good, I'll improve them and add the rest.
 
  • Like
Reactions: pyf
Level 4
Joined
Jul 26, 2017
Messages
66
Hi, I wanted to know what causes the model I created which is attached to crash both the editor and the game and how would I go about and fixing so I tried the tester and when I dragged the model to it it shows nothing,
Did I do something horribly wrong???
 

Attachments

  • Divine Storm3.mdx
    6.7 KB · Views: 247

eejin

Tool Moderator
Level 12
Joined
Mar 6, 2017
Messages
221
Hey GhostWolf. I tried opening some .mdl files in Firefox, but I got the following browser console errors:

upload_2018-8-18_23-13-15.png

The first error is for RobeMan_ManyAnimations.mdl and the second for RobeMan_ManyAnimations2.mdl

I used this MDX to MDL converter to convert this file.
 

Attachments

  • RobeMan_ManyAnimations.mdl
    275.7 KB · Views: 140
  • RobeMan_ManyAnimations2.mdl
    448.9 KB · Views: 132

eejin

Tool Moderator
Level 12
Joined
Mar 6, 2017
Messages
221
I ran the sanity tester for MCFC7.0 and while it did display results there were a lot of console error messages.
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. viewer.min.js:24:7488
console.trace() viewer.min.js:24:7691
ModelViewer</i.prototype.addListener
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7691
ModelViewer</i.prototype.once
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7941
whenLoaded/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310836
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310796
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:386841
ed/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:385499
Viewer version 4.5.7 main.js:19:1
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. viewer.min.js:24:7488
console.trace() viewer.min.js:24:7691
ModelViewer</i.prototype.addListener
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7691
ModelViewer</i.prototype.once
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7941
whenLoaded/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310836
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310796
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:315307
ed
https://viewer.hiveworkshop.com/check/viewer.min.js:24:385474
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:390250
loadData
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310507
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:314023
addModelTest
https://viewer.hiveworkshop.com/check/main.js:326:21
addMapTest
https://viewer.hiveworkshop.com/check/main.js:392:7
onLocalFileLoaded
https://viewer.hiveworkshop.com/check/main.js:407:5
handleDrop/<
https://viewer.hiveworkshop.com/check/main.js:429:49
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. viewer.min.js:24:7488
console.trace() viewer.min.js:24:7691
ModelViewer</i.prototype.addListener
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7691
ModelViewer</i.prototype.once
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7941
whenLoaded/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310836
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310796
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:315307
ed
https://viewer.hiveworkshop.com/check/viewer.min.js:24:385474
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:390250
loadData
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310507
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:314023
addModelTest
https://viewer.hiveworkshop.com/check/main.js:326:21
addMapTest
https://viewer.hiveworkshop.com/check/main.js:392:7
onLocalFileLoaded
https://viewer.hiveworkshop.com/check/main.js:407:5
handleDrop/<
https://viewer.hiveworkshop.com/check/main.js:429:49
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. viewer.min.js:24:7488
console.trace() viewer.min.js:24:7691
ModelViewer</i.prototype.addListener
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7691
ModelViewer</i.prototype.once
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7941
whenLoaded/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310836
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310796
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:315307
ed
https://viewer.hiveworkshop.com/check/viewer.min.js:24:385474
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:390250
loadData
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310507
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:314023
addModelTest
https://viewer.hiveworkshop.com/check/main.js:326:21
addMapTest
https://viewer.hiveworkshop.com/check/main.js:392:7
onLocalFileLoaded
https://viewer.hiveworkshop.com/check/main.js:407:5
handleDrop/<
https://viewer.hiveworkshop.com/check/main.js:429:49
ERROR InvalidData TypeError: i is undefined main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=axe_2h_horde_d_04red.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=axe_2h_horde_d_04red.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=axe_2h_horde_d_04red.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=fishingpole.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=fishingpole.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=fishingpole.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=abilities/spells/other/fallinlove/heart.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=abilities/spells/other/fallinlove/heart.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=abilities/spells/other/fallinlove/heart.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-co...ngleplayer/tutorialcampaign3d/cloudstile1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/singleplayer/nightelf_exp/arrow.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-co...ngleplayer/tutorialcampaign3d/cloudstile1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-co...ngleplayer/tutorialcampaign3d/cloudstile1.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/singleplayer/nightelf_exp/arrow.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/singleplayer/nightelf_exp/arrow.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.13.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.13.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.13.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.04.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.04.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.04.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.09.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.09.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=textures/ribbonne1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=sunchiprig1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.09.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=textures/ribbonne1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=textures/ribbonne1.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-co...ingleplayer/nightelfcampaign3d/ruins_head.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=sunchiprig1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=sunchiprig1.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-co...ingleplayer/nightelfcampaign3d/ruins_head.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-co...ingleplayer/nightelfcampaign3d/ruins_head.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=units/creeps/dragonspawnblue/dragonspawn.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.08.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.15.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=units/creeps/dragonspawnblue/dragonspawn.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=units/creeps/dragonspawnblue/dragonspawn.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.08.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.08.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-co...res/commandbuttons/btnstaffofpurification.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.15.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.15.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-co...res/commandbuttons/btnstaffofpurification.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-co...res/commandbuttons/btnstaffofpurification.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=textures/demonrune1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=textures/demonrune1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=textures/demonrune1.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.11.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.19.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.11.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.11.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.01.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.22.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.19.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.19.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.01.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.01.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.22.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.22.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=musicnote.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.12.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=musicnote.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=musicnote.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.12.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.12.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.24.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.10.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.24.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.24.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.10.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.10.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.06.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.06.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.06.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.18.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.28.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.16.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.18.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.18.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.28.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.28.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.16.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.16.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.26.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.25.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.26.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.26.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.25.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.25.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=thunderfury_texture.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=thunderfury_texture.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=thunderfury_texture.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.23.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.05.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.23.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.23.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=units/critters/shoveler/koboldshoveler.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.05.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.05.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=units/critters/shoveler/koboldshoveler.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=units/critters/shoveler/koboldshoveler.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=swordtxtr.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.27.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.21.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=swordtxtr.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=swordtxtr.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.27.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.27.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.21.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=ui/glues/mainmenu/mainmenu3d_exp/ocean_h.21.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomebrown/tomebrown.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomered/tomered.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomebrown/tomebrown.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomebrown/tomebrown.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-co...onsummer/structures/bridgelog/bridge_rope.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=balkenenden.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomered/tomered.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomered/tomered.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-co...onsummer/structures/bridgelog/bridge_rope.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-co...onsummer/structures/bridgelog/bridge_rope.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=balkenenden.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=balkenenden.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=textures/ice_ice.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=textures/ice_ice.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=textures/ice_ice.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomegreen/tomegreen.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=balken_hell.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomegreen/tomegreen.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=objects/inventoryitems/tomegreen/tomegreen.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=balken_hell.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-co...daeronsummer/structures/bridgelog/logdirt.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=balken_hell.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-co...daeronsummer/structures/bridgelog/logdirt.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-co...daeronsummer/structures/bridgelog/logdirt.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=loadingscreenbl.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=loadingscreenbl.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=loadingscreentl.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=loadingscreentr.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=loadingscreenbr.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=loadingscreenbl.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=loadingscreentl.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=loadingscreentl.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=loadingscreentr.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=loadingscreentr.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=loadingscreenbr.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=loadingscreenbr.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_bush_2.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_bush_2.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_bush_2.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_wood_new1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_cp_wood_wall3.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_wood_new1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_wood_new1.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_cp_wood_wall3.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_cp_wood_wall3.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_ruins3.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_ruins2.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_stone_floor1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_ruins3.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_ruins3.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_ruins2.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_ruins2.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_stone_floor1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_stone_floor1.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_ruins4.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_ruins1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_stone1.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_ruins4.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_ruins4.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_ruins1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_ruins1.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_stone1.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_stone1.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_wood_end.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=od_web.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_wood_end.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_wood_end.blp main.js:41:3
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=od_web.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=od_web.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=textures/trilobite.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=textures/trilobite.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=textures/trilobite.blp main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=bridgestone_hq.blp. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=bridgestone_hq.blp main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=bridgestone_hq.blp main.js:41:3
Unknown event object ID SPN TOBO viewer.min.js:24:386902
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. viewer.min.js:24:7488
console.trace() viewer.min.js:24:7691
ModelViewer</i.prototype.addListener
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7691
ModelViewer</i.prototype.once
https://viewer.hiveworkshop.com/check/viewer.min.js:24:7941
whenLoaded/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310836
whenLoaded
https://viewer.hiveworkshop.com/check/viewer.min.js:24:310796
load
https://viewer.hiveworkshop.com/check/viewer.min.js:24:386841
ed/<
https://viewer.hiveworkshop.com/check/viewer.min.js:24:385499
Unknown event object ID UBR CLTS viewer.min.js:24:386902
ERROR FailedToFetch https://www.hiveworkshop.com/mpq-contents/?path=objects/spawnmodels/orc/orcblood/orcbloodgrunt.mdx main.js:41:3
ERROR NetworkError TypeError: NetworkError when attempting to fetch resource. https://www.hiveworkshop.com/mpq-contents/?path=objects/spawnmodels/orc/orcblood/orcbloodgrunt.mdx main.js:41:3
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.hiveworkshop.com/mpq-contents/?path=objects/spawnmodels/orc/orcblood/orcbloodgrunt.mdx. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Unknown event object ID SND AHDR viewer.min.js:24:386902
Unknown event object ID SND ANSD
viewer.min.js:24:386902
Unknown event object ID SND KPES viewer.min.js:24:386902
Unknown event object ID SND DLVR
viewer.min.js:24:386902
Unknown event object ID SND KPES
viewer.min.js:24:386902
Unknown event object ID SND DSCB viewer.min.js:24:386902
Unknown event object ID SND AUCB viewer.min.js:24:386902
Unknown event object ID SND ABRW viewer.min.js:24:386902
Unknown event object ID SND DMAK viewer.min.js:24:386902
Unknown event object ID SND ANHT viewer.min.js:24:386902
Unknown event object ID SND KFAR viewer.min.js:24:386902
 

Attachments

  • MCFC 7.0.w3x
    5.6 MB · Views: 160
Level 29
Joined
Jul 29, 2007
Messages
5,174
I saw the node EventEmitter console messages, they don't actually matter, maybe I'll remove them in the future.

The Hive's 404 page is not CORS-enabled, so any time a resource isn't found, you'll get CORS errors.
The sanity tester doesn't actually use the map's context, just grabs everything from it, so any custom texture etc. used by a model will thus fail to load, get 404, and you'll get a CORS error.
That being said, in this case it seems like also the MPQ files aren't CORS-enabled for some reason, maybe something on the server changed? @Ralle

Are those sound event emitters using custom SLK data?

/Edit
I just want to mention all of those errors only matter for the viewer, the tests themselves will run regardless.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
Updated the test.

This includes:
  • Reforged models are now supported.
  • The warnings are now split to "warnings" and "severe warnings". Normal warnings can usually be ignored, severe ones will usually change the behavior of the model.
  • Better animation testing.
  • Added some more tests.
  • For models with custom textures, if you also test the textures, they will be automatically loaded into the model as well in the viewer part. The order in which you load models/textures doesn't matter.
Hopefully I didn't add any issues as well.

As always, if you have a model that fails to be tested, or if the test shows wrong results, please tell me about it.

As far as the viewer part of the tester, Reforged models won't get any internal resources like textures loaded because the Hive isn't set up for it yet.
Either way the viewer is not directly related to the test, and the test will work fine regardless if the viewer is showing the model correctly or not.

/edit
Added another test for useless keyframes, where the value of a keyframe is identical (or nearly identical) to the values of the surrounding keyframes.
 
Last edited:
Level 12
Joined
Jan 30, 2020
Messages
875
Thanks you so much for the update.

How hard would it be to convert this wonderful webapp into a local application that can be run even in case of no internet connectivity ?

Anyways I am pleased we have an updated sanity checker, really much appreciated !
 
Level 12
Joined
Jan 30, 2020
Messages
875
Oh ok thanks, being able to still run the check in such circumstances is plenty enough I believe.


EDIT : typo
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
Reforged models use a different format for skinning, however they can contain also TFT skinning data, which is not used (I have seen that also in Blizzard models in the beta era, don't know about current ones).
In cases where a model contains both (e.g. for reference), but the TFT skinning data is fake, the test reported all of the vertices as not being attached to any bone.
Changed it to a warning that says both exist.
 
Last edited:
Level 12
Joined
Jan 30, 2020
Messages
875
Yes his is definitely a sanity issue.

Thanks for still working on this tool, I find myself using it everytime I work on a model !
 
Level 12
Joined
Jan 30, 2020
Messages
875
Please allow the use of dds files for textures to prevent throwing an unjustified error with models using them, thanks :)

Also is the missing death sequence that much of an issue. I mean I suppose it is for units, missiles and destructables, but can it have adverse effects on other things ?
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Please allow the use of dds files for textures to prevent throwing an unjustified error with models using them, thanks :)

Also is the missing death sequence that much of an issue. I mean I suppose it is for units, missiles and destructables, but can it have adverse effects on other things ?

By dds do you mean having textures that literally reference file names ending with .dds? Is that valid? I only saw Blizzard's models which use .tif (which is of course silly, but what can you expect from the same company that also uses .mdl where the actual models are .mdx...)

Missing birth/death animations isn't always an issue, but the code can't know in what context the model is going to be used. It is an issue that I've seen many people have in the past.
 
Level 12
Joined
Jan 30, 2020
Messages
875
Well indeed many Reforged models seem to reference TIFF textures for some reasons. Quick guess thats the format they used in production.
So yes what I meant is just accepting the referenced extension names.

Thanks for the explanation about death/birth animations, it indeed makes sense.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
- Added .dds as an accepted image extension.
- Added testing for keyframe frames, for cases where a keyframe has the same frame as the one before it, and for cases where a keyframe has a frame that is lower than the one before it.
- The animation testing in general was bugged and I am surprised I didn't see it before, hopefully it's fixed now.
- Geoset sequence extents are no longer reported for Reforged models, since they no longer seem to be used and are always empty. They were reported only because of Magos crashing in some cases in the first place, and Magos can't open Reforged models either way (are they supplied/used for SD Reforged models though? I don't know)
 
Last edited:
Level 12
Joined
Jan 30, 2020
Messages
875
Thank you for this update, thats really nice !

Sent my entire map to the sanity test, all errors and warnings were those i was expecting, so I suppose that is working quite nicely ^^
As for the extents you are mentioning, they probably are there to maintain compatibility with real classic models in older maps ?
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Every geoset has a list of extents that should have as many entries as there are animations in the model.
I say should because in reality the numbers mismatch in a huge number of models.
The size of the list per-geoset is given in each geoset.
I don't know if these extents were even used in TFT either, and the game never cared about having too few or too many of them, only Magos did.
For Reforged HD models, as far as I can tell, the size is always 0.
 
Level 12
Joined
Jan 30, 2020
Messages
875
Ok well it's worth knowing.

While we are mentioning EXTENTS, are the extents that affects the pre-selection mouse cursor change on hover the main model extents ?

In order to try to fine tune this selection that used to cause on hover issues for some of my custom models, I had to change these extents and make them smaller, but as I didn't know those the game takes into account for the pre-selection hover, I changed them all, and I have the feeling this could mess up the models...
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
There's the main model extent, the per-animation extents, the per-geoset extents, the per-geoset per-animation extents, and collision shapes.
I don't know what exactly the game uses for what, I never really cared enough to experiment.
As in, what exactly does it use for culling, what exactly does it use for mouse selections, what it uses to know a projectile hit a model, etc.
Retera probably knows more about this, but I don't know if anyone really thoroughly checked the subject.
 
Level 12
Joined
Jan 30, 2020
Messages
875
Well fact is I didn't care before I realized there were serious selection issues. If I'd put a model with large extents next to another one with small extents, it simply became impossible to select with the mouse.
Using the same extents across the model allowed me to reasonably fix this, and I suppose I should not look any further if I don't encounter unexpected issues.

If @Retera knows more about this, I must admit I wouldn't spit on more knowledge for a better understanding :)

Thanks for your replies though, always appreciated.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
A new version is around!

- Redesigned the page layout and colors, it's hopefully not as bad, but I am still not a designer (suggestions?). Thanks to Ralle with help getting the layout to work and teaching me a thing or two.
- There is now a test text filter, in case you are testing a map with lots of things, and want to find a test.
- The test results can be filtered to show/hide unused/warnings/severe warnings/errors.
- The MDL view is now switchable with the 3D view, rather than both taking space at the same time. There's only so much space on one monitor.
- When checking for keyframe equality, the test now differentiates between keys being exactly equal, and roughly equal.
- Warcraft 3 supports corrupted data in a lot of its files. They miss data, or their data is broken, but the game works all the same. The viewer and the sanity test will now attempt to load files also if they fail to parse. If the corruption isn't critical, everything will work. The sanity test will report on any file that failed to parse, whether it's a model, texture, or map.
- All of the parsers including MDLX now support unicode. Doesn't affect the sanity test much, maybe some models have foreign names...
- TGA is now supported properly (there was a very lackluster parser previously), and is accepted by the sanity test as a source for custom textures, or if you simply want to view a TGA image.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
I fixed a couple of issues along the way without writing about it, but I do want to mention the newest fix - finally animations are actually rendered correctly!

If you ever saw the warning "No opening/closing track...", then you can actually test whether it affects you or not now.

Under some circumstances, missing these keyframes can result in very odd behavior, such as animation values reversing. This was never correctly reproduced in any old wc3 related tool. The viewer should now show the same bugged behavior thanks to @Retera figuring it out!
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
The BLP test now shows also all of the mipmaps, for the textures out there with bad mipmaps.

If your model renders differently depending on its distance from the camera, you should probably check the mipmaps.

Unfortunately I do not know enough about image manipulation to get this to work automatically. No clue how to properly know if a mipmap is similar enough to the mipmap before it.

The attached images are an example of textures that look ok on the surface, but the mipmaps are completely broken.
 

Attachments

  • Untitled.jpg
    Untitled.jpg
    82 KB · Views: 42
  • Untitled.jpg
    Untitled.jpg
    86.2 KB · Views: 40
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
  • The BLP handler no longer uses mipmap dimensions based on the dimensions of the mipmaps themselves, but rather based on the image dimensions scaled down to the current mipmap level. This is because there are JPG mipmaps out there with wrong dimensions, such as having the two last mipmaps be 2x1 pixels, rather than 2x1 and 1x1, which messes with WebGL.
  • Geosets with too many vertices cause serious graphics glitches in the game and it's reported by the test, however the number for "too many" isn't known and it was very much off. I still don't know the exact number, but it's significantly closer now (~7433 vertices per geoset).

(source for these problems: Broken mdx converting)
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
  • The BLP test now warns about non power of two dimensions.
  • The MDX test now warns about particle emitters that use squirt but have a low emission rate, which is currently defined as 8. This is because squirt emitters emit all of the particles in one go, and a low emission rate is likely a user mistake.
  • In addition, emitters that use squirt but have no emission rate animation will also get a warning, as it's incredibly likely to be a user mistake.
  • XY Quad emitters now get a warning if the speed or latitude are equal to 0, since it makes them stop working. The exact numbers are not actually 0, but are also not known, and need further investigation (reported by @Mythic, thanks!)
  • Some BLP textures have broken JPG mipmaps, which in turn break the JPG parser, which in turn breaks the sanity test if they are loaded. They should no longer break the test, and instead will get reported as errors.
  • Some of the keyframe tracks warnings were using 1-based indexing while the rest (and all other objects) use 0-based indexing, they should now all use 0-based indexing consistently.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
  • Apparently models exist with negative extents, where the maximum is smaller than the minimum. This caused the viewer to not render them, because they would always get culled. Instead it now changes them to use point culling (i.e. size=0). I also added this as a warning to the MDX test because it was reported as an issue, however it doesn't seem to affect WE or the game as far as I can tell (they probably also revert to point culling).
  • The above error for squirt emitters with no emission rate animation was changed to also check for a visibility animation. It's totally legit to have one and not the other.
 
Top