jMonkeyEngine / sdk

The jMonkeyEngine3 Software Development Kit based on Netbeans
BSD 3-Clause "New" or "Revised" License
314 stars 101 forks source link

AssetPackBrowser: index of packs is not available #570

Open nothingTVatYT opened 8 months ago

nothingTVatYT commented 8 months ago

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)
neph1 commented 8 months ago

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 ?

tonihele commented 8 months ago

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?

normen commented 8 months ago

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).

tonihele commented 8 months ago

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.

neph1 commented 8 months ago

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.

MeFisto94 commented 8 months ago

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

neph1 commented 8 months ago

@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).

normen commented 8 months ago

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?).

riccardobl commented 7 months ago

@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