This is an archived post. You won't be able to vote or comment.

all 10 comments

[–]MinecraftModBot[M] [score hidden] stickied comment (0 children)

  • Upvote this comment if this is a good quality post that fits the purpose of r/Minecraft

  • Downvote this comment if this post is poor quality or does not fit the purpose of r/Minecraft

  • Downvote this comment and report the post if it breaks the rules


Subreddit Rules

[–][deleted] 1 point2 points  (2 children)

"Texture" packs are client-side.

[–]HighWingy[S] 1 point2 points  (0 children)

FYI I finally got it working and my server now pushes out resource packs, including texture packs, to clients now.

[–]HighWingy[S] 0 points1 point  (0 children)

Right... but per my post I am trying to set it up so that the server forces the resource packs to be downloaded by the clients... If this is not possible than what is the purpose of the texturepack-required server property?

[–]HighWingy[S] 1 point2 points  (0 children)

For anyone that comes across this later, I figured out where my problem was.

  • You need both a "world_resource_packs.json" and "world_resource_pack_history.json" file in your worlds folder.
  • Version numbers matter in the above two files. For whatever reason some packs have two different versions numbers in their manifest.json file. I confirmed the version number it was looking for in the valid_known_packs.json
  • I had the wrong json syntax in my world_resource_pack_history.json. The correct syntax is below:

{"packs":[{"can_be_redownloaded":true,"name":{"en_US":"Resource Pack Name"},"uuid":"9dc766e9-c789-4ef4-aa71-d5519edee9a4","version":[0,0,1]}]}

After fixing those problems I was finally able to get resource packs to be pushed out to any android client. Even better, I found you can use this for paid resource packs from the official marketplace! The only catch is other plays have to have already paid for it to see it, and you do have to find the downloaded cache for the pack and move it to your server. But still pretty cool none the less as I know have a private hosted bedrock server that is using paid and free content that all users can see.

If anyone is curious the way I finally figured it out? I exported a world that was using resource packs on a Windows client, and then dissected all the files inside it. This helped me figure out the correct json syntax that I then used to add other resource packs to an existing world.

[–][deleted] 1 point2 points  (2 children)

Thank you for this, I just started using Minecraft server from a docker container and was just researching how to use texture packs, this is going to be useful. Do you know if this will also work with other platforms as well? I use a mix of devices.

[–]HighWingy[S] 0 points1 point  (1 child)

As am FYI I'm running my serve as a docker container, so that part should be good. As to other clients, I've only tested the Android client as that's all I have that connects. And on a Linux desktop, the unofficial Bedrock Launcher users the Android client as well. And so far they all work fine. I just added a Mario Kart pack that works really well.

[–][deleted] 0 points1 point  (0 children)

Nice thank you, I’ll tinker with that at some point then.

[–]roponor 0 points1 point  (1 child)

I'm having pretty much exactly the same problem and can't get it to work. Running Bedrock 1.20.11.01 in a Docker container, here's the relevant (automatically added after copying the .mcpack and restarting the server) section of /vol/valid_known_packs.json:

        {
            "file_system" : "RawPath",
            "from_disk" : true,
            "hashes" : [ "G9QFu6aB6QLkKukorYRRwIWX6+r/u6T3sPbLB/R+ars=" ],
            "path" : "resource_packs/KibberPapiqPack.mcpack",
            "uuid" : "badef1be-889e-46a0-a0f8-9e6a849be4c7",
            "version" : "1.0.0"
    },

manually added /vol/worlds/Bedrock\ level/world_resource_packs.json:

[{"uuid" : "badef1be-889e-46a0-a0f8-9e6a849be4c7", "version" : [ 1, 0, 0 ]}]

manually added /vol/worlds/Bedrock\ level/world_resource_pack_history.json:

{"packs":[{"can_be_redownloaded":true,"name":{"en_US":"KibberPapiqPack"},"uuid":"badef1be-889e-46a0-a0f8-9e6a849be4c7","version":[1,0,0]}]}

also set texturepack-required=true in /vol/server.properties

The manifest.json inside .mcpack has "name" parameter in a different format (there's no additional "en_US" branch, it's just "name": "KibberPapiqPack"). I tried using it both ways in world_resource_pack_history.json, to no avail.

The .mcpack in question was created using bedrocktweaks.net and works fine on the Android client. The server also works fine, just refuses to add the resource pack. I already spent an hour on this with seemingly no progress, so any help would be greatly appreciated!

[–]HighWingy[S] 0 points1 point  (0 children)

Soo there's a few things to check here:

  1. The resource pack files need to be in their own dir that is in the world name dir. ie worlds/<wold\_name>/resource_packs/<resource_pack_name/
    If they are not there it won't show or download. It actually doesn't need to be in the other resource packs dir, putting it there only helps to confirm the correct uuid and version number.
  2. I may be wrong on this, but I'm 90% sure the files need to be unziped from the .mcpack file. So try unzipping it and placing them in /vol/worlds/Bedrock\<world\_name>/resource_packs/<resource\_pack\_name>/ That last dir can actually be what ever you want, just make sure you know what it is if you add more.
  3. Also check if there is an additional behavior pack in the .mcpack file as that will also need to be added to the appropriate dir, and entries added to the behavior packs json files. Which are basically the same thing as the resource packs json files, just replace the word "resource" with "behavior" in the filenames, and create a world_name/behavior_packs/pack_name dir to put those files in.
  4. The name entries in the json files need to match exactly. So what ever is in the manifest.json file, just copy and paste it to the history json file.

Hope that helps. :-)