sdk icon indicating copy to clipboard operation
sdk copied to clipboard

AssetPackBrowser: index of packs is not available

Open nothingTVatYT opened this issue 1 year ago • 9 comments

The asset packs browser reports an IOException when trying to access the online asset packs: (The URL https://jmonkeyengine.org/assetpacks/list.php indeed yields an HTTP 404.)

SEVERE [org.openide.util.Exceptions]
java.io.FileNotFoundException: https://jmonkeyengine.org/assetpacks/list.php
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1996)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1581)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1579)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
	at java.base/java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:962)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1578)
	at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)
	at java.desktop/javax.swing.JEditorPane.getStream(JEditorPane.java:791)
Caused: java.io.FileNotFoundException: https://jmonkeyengine.org/assetpacks/list.php
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:2057)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:2052)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:2051)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1609)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1581)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1579)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
	at java.base/java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:962)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1578)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
	at java.desktop/javax.swing.JEditorPane.getStream(JEditorPane.java:826)
	at java.desktop/javax.swing.JEditorPane.getStream(JEditorPane.java:805)
	at java.desktop/javax.swing.JEditorPane.setPage(JEditorPane.java:489)
[catch] at com.jme3.gde.assetpack.browser.OnlineBrowser.<init>(OnlineBrowser.java:47)
	at com.jme3.gde.assetpack.browser.AssetPackBrowserTopComponent.jButton2ActionPerformed(AssetPackBrowserTopComponent.java:230)
	at com.jme3.gde.assetpack.browser.AssetPackBrowserTopComponent$5.actionPerformed(AssetPackBrowserTopComponent.java:184)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

nothingTVatYT avatar Feb 28 '24 20:02 nothingTVatYT

I'm afraid those are long gone. It was a feature that never really took off. Should we remove any trace of it? @tonihele @MeFisto94 ?

neph1 avatar Mar 02 '24 18:03 neph1

I can't really judge does anyone use it or what it even is. I think you can even create an asset pack project type in the SDK. So all possible to use it.. locally?

It would be great if @normen maybe gets resurrected from his deep slumber to explain the feature :D But I suspect you assessment is correct. Maybe some sort of asset store thingie?

tonihele avatar Mar 02 '24 19:03 tonihele

Yeah, the old web page allowed to browse online "asset packs" to use in the engine, I still have the backend PHP code but its based on Wordpress.

You can still create asset packs yourself locally though to add prepared assets to different games, its all documented in the SDK F1 help (and the old wiki which the help was grabbed from).

normen avatar Mar 02 '24 19:03 normen

If it is super easy to save this patient... we could do it and add some sort of support to https://library.jmonkeyengine.org/ for asset packs...?

But if we are afraid of its usability and maintenance burden, then we should just amputate this feature.

tonihele avatar Mar 02 '24 19:03 tonihele

We could keep the local function and just remove the web links. If people want to share them, they can use library.jmonkeyengine.org. I don't think we need to do any special support for it. Users can download them like with any asset and place them where they need.

neph1 avatar Mar 02 '24 20:03 neph1

There were some asset packs that were only consumable with that concept? Worldforge stuff? Do i remember correctly?

MeFisto94 avatar Mar 04 '24 23:03 MeFisto94

@riccardobl Do you think it would be possible to use 'library' to display this? Is it possible to use the api to get all submissions of a certain type (I'm not sure there is an 'asset pack' type as of now).

neph1 avatar Mar 05 '24 06:03 neph1

There were some asset packs that were only consumable with that concept? Worldforge stuff? Do i remember correctly?

I packed WorldForge in an AssetPack and made it available through that online asset pack thingy. If I remember right I actually made it so that when you create a new asset pack in the SDK and pass the world forge folder it will recognize it and automatically set up the asset pack so that it works properly with the WF assets (or was it a separate template for WF?).

normen avatar Mar 05 '24 10:03 normen

@riccardobl Do you think it would be possible to use 'library' to display this? Is it possible to use the api to get all submissions of a certain type (I'm not sure there is an 'asset pack' type as of now).

Sorry for the late reply, i missed the ping somehow. Yes it is possible, we can just tag all the asset packs with the same tag "#asset-pack" , and then they can be searched by tag:

Eg. searching by #vehicle curl -X POST -H "Content-Type: application/json" -d '{"query":"#vehicle", "limit":100,"page":0}' https://library.jmonkeyengine.org/entry/list

{
  "entryId": [
    "38308161-c3cf-4e23-8754-528ca8387c11",
    "2d0fc6de-2e4d-49b1-8372-4f364d79e175"
  ],
  "userId": [
    "11511",
    "11511"
  ]
}

Getting the entry data:

curl -X POST -H "Content-Type: application/json" -d '{"entryId":"38308161-c3cf-4e23-8754-528ca8387c11", "userId":"11511"}' https://library.jmonkeyengine.org/entry/get
# NB: needs both entryId and userId since entries are scoped to the user submitting them
{
  "entryId": "38308161-c3cf-4e23-8754-528ca8387c11",
  "userId": "11511",
  "name": "Minie Physics Library",
  "repo": "https://github.com/stephengold/Minie",
  "docs": "https://stephengold.github.io/Minie",
  "issues": "https://github.com/stephengold/Minie/issues",
  "discussions": "https://hub.jmonkeyengine.org/c/user-code-projects/minie/63",
  "tags": [
    "physics",
    "ragdoll",
    "cloth",
    "vehicle",
    "Bullet",
    "inverse kinematics",
    "rope",
    "collision",
    "convex decomposition",
    "friction",
    "dynamics",
    "character",
    "real-time",
    "tech-demo",
    "library",
    "Physics",
    "Extensions",
    "38308161-c3cf-4e23-8754-528ca8387c11"
  ],
  "description": "Minie is a physics library for JMonkeyEngine that takes  physics-based games to the next level:\r\n\r\n + add solidity to walls, characters, projectiles, landscapes, and vehicles\r\n + detect collisions between complex shapes\r\n + simulate characters and buildings collapsing in real time\r\n + simulate cloth, rope, and deformable volumes, including their interactions with rigid bodies and each other\r\n\r\nForked from the jme3-bullet library, Minie adds many features while preserving most of the jme3-bullet API. Most JME physics examples can use Minie without modification, and Minie adds its own tests, demos, documentation, and tutorials to help you get started.\r\n\r\nThe Minie repo includes the following 3-D models (used in demos):\r\n + Ankh (Creative Commons CC0 1.0 Universal license),\r\n + Banana (Creative Commons CC0 1.0 Universal license),\r\n + Barrel (Creative Commons CC0 1.0 Universal license),\r\n + BowlingPin (Creative Commons CC0 1.0 Universal license),\r\n + CandyDish (Creative Commons CC0 1.0 Universal license),\r\n + Duck (SCEA Shared Source License), \r\n + Horseshoe (Creative Commons CC0 1.0 Universal license),\r\n + MhGame (Creative Commons CC0 1.0 Universal license),  and \r\n + Puppet (Creative Commons Attribution 3.0 license).\r\n\r\nAlso comes with ProFont (MIT license, used in demos).\r\n\r\nFor details, see the Minie documentation at [https://stephengold.github.io/Minie](https://stephengold.github.io/Minie).",
  "descriptionSummary": "Real-time physics simulation, including rigid/soft bodies, vehicles, ragdolls, ropes, convex decomposition, and debugging aids",
  "license": "## Software License\n[BSD 3-Clause “New” or “Revised”](https://opensource.org/licenses/BSD-3-Clause)\n## Permissions\n### Commercial_Use\nThis software and derivatives may be used for commercial purposes.\n### Distribution\nThis software may be distributed.\n### Modification\nThis software may be modified.\n### Private_Use\nThis software may be used and modified in private.\n## Conditions\n### License_And_Copyright_Notice\nA copy of the license and copyright notice must be included with the software.\n## Limitations\n### Liability\nThis license includes a limitation of liability.\n### Warranty\nThe license explicitly states that it does NOT provide any warranty.\n## Media License\n[Mixed Licenses]()\n## Permissions\n## Conditions\n## Limitations",
  "version": "7.7.0",
  "creationDate": 1657920929053,
  "updateDate": 1693854438137,
  "likes": 1,
  "maven-artifacts": [
    "com.github.stephengold:Minie:$VERSION"
  ],
  "platforms": [
    "DESKTOP_LINUX",
    "DESKTOP_WINDOWS",
    "DESKTOP_MACOS",
    "MOBILE_ANDROID"
  ],
  "initializerCategory": "GENERAL"
}

full api dock here api here: https://library.jmonkeyengine.org/apidoc

You can specify a download link from the ui and api that will be returned in the "download" field of the response when available, this one could be used by the sdk to pull the pack

riccardobl avatar Apr 05 '24 10:04 riccardobl