Why not change the XOR bytes with the current reading offset? Thats so easy to reverse..
Would take some more time to figure out...
Because to make it effectively secure you need a key of the length of the content, and the key can't be ever shared with anyone you don't trust. This would essentially be a one time pad. It would also be useless, because you either share the key and obfuscate it in your binary somewhere but have it still accessible to unpack your data, or you don't and your users won't be able to play the game anymore.
It really boils down to the following: At some point you have to access the data on the client machine. So the application itself has to somehow be able to unpack them.
You can obfuscate it, or do hacks like having a slave .exe that launches your actual .exe and attaches itself as a silent debugger to it. Windows only allows one debugger attached per application, so it makes it harder for third party to attach a real debugger and watch the execution of your program.
Really, the only reason you probably want encryption and resource packs is for updates: Sign your resource packs cryptographically and check the signature at runtime. That way you can at least make sure that no one is supplying malicious updates to the user.