DISCLAIMER! This suggestion is alot technicial. If you don't understand, try to support the understandable part. If you don't have any, saying "Support! It'll create more space for blocks." is enough for me. I can accept why you don't want to comment. But i'll keep it in my sig in hope someone else understand me.
Ok, let's begin with the basic part, it's
Short Array Tag
Many mods have implemented this, but Mojang isn't. This suggestion contains this tag type, so i think it's worth to explain it out.
Short Array used to, you know, store arrays of 16-bit integers. Here's the structure.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-\\+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-\\+-+-+-+-+-+-+-+-+
| | | \\ | | \\ |
| Tag ID | Name Length | Tag \\ | Payload Length | \\ Payload |
| | | Name \\ | | \\ |
| | | \\ | | \\ |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\\-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\\-+-+-+-+-+-+
Description :
Tag ID (1 byte) : 12
Name Length (2 byte) : Tag Name length in bytes.
Tag Name (1 byte x Name Length) : Tag name, encoded in UTF-8.
Payload Length (2 byte) : Payload length in elements.
Payload (2 bytes x Payload Length) : Array, 16-bit integer.
Ok, that's enough. Let's move to
New Save Format
This save format is used to expand the available space for blocks and metadata. Here's the changes from old format (because i don't want to copy that giganticarticle) :
Blocks tag type is changed to Short Array and Add tag is removed.
Expand the blocks ID to 32767.
Data tag is expanded to 8 bits per block.
Expand the block DV.
V tag (previously unused) set to 2.
Differentiate from old format.
Some more change to session.lock file (explained later).
That is enough for thousands of new blocks. But that's not all, because
Inter-App Sync and Auto-Multiplayer
Have you ever tried opening a world with both Minecraft and MCEdit? The result is, a mess! You can't open the same world with multiple apps. Even there's a lock mechanism, it's not complete.
Ok, enough with that. As i promise, here's the format of new session.lock file :
Root tag
Server (Compound) : Server
Type (Byte) : 1 for full server (explained later), 0 otherwise.
Name (String) : Name of the server. "Minecraft" if it's from minecraft.
Ver (Int) : Server version.
MaxClients (Short) : Maximum number of clients.
Info (Compound) : The information of how to connect with the server.
Server information data (PID, IP, etc.)
When Minecraft loads the world :
Check session.lock file.
If there's no server, set role to full server, write session.lock and play.
If there's any server, it tries to connect.
If failed, set role to full server, write session.lock and play.
If success, it checks server type.
If it's full server, connect to the server.
If not, request for server takeover.
If success, set role to full server, overwrite session.lock and play.
If failed, abort loading and inform the user to close the offending app.
When Minecraft close the world :
If the role isn't as server, disconnect.
If it is, request a client (preference : Minecraft Client, Fastest Connection) to takeover the server.
If the client refuse, try with another one.
If all client refused, kicks all clients and quit.
If success, quit.
When App loads the world :
Check session.lock file.
If there's no server, set role to minimal server, write session.lock and play.
If there's any server, it tries to connect.
If failed, set role to minimal server, write session.lock and play.
If success, connect to the server.
When App close the world :
If the role isn't as server, disconnect.
If it is, request a client (preference : Minecraft Client, Fastest Connection) to takeover the server (it's different than server takeover request).
If the client refuse, try with another one.
If all client refused, kicks all clients and quit.
If success, quit.
When App got server takeover request, it can do the following :
Automatically release the server and switch to client.
Inform the user that they played Minecraft (and may conflict with the app).
Refuse to release.
NOTE: The difference between Full and Minimal server is Full server load block ticks, entities movement, etc. While Minimal doesn't.
TL;DR: Minecraft/App checks for any server which load the world, and if it is, connect to the server.
The End
We're now reaching the end of this suggestion. That's all everyone. And i hope you understand and support me . Bye!
Rollback Post to RevisionRollBack
I'm a programmer. I use C/C++, BASIC, Assembly, and Python. If i sound too technicial, that's because it's the way i think.
Well, the majority of us aren't programmers, so it's hard to tell exactly what you're suggesting. I have a bit of programming experience, and even I'm confused.
Anyway, the new save format is probably going to be in 1.10, since the block ID limit is going to be removed (or, at least, immensely increased).
As for in-app syncing, I don't see a reason why not, but Mojang doesn't officially support other apps that can open a world, like MCEdit. Because of this, I doubt this will happen.
Well, the majority of us aren't programmers, so it's hard to tell exactly what you're suggesting. I have a bit of programming experience, and even I'm confused.
Yeah, i think that's ok for bumping a bit.
Anyway, the new save format is probably going to be in 1.10, since the block ID limit is going to be removed (or, at least, immensely increased).
Let's give this suggestion to Jeb (who worked on 1.10).
As for in-app syncing, I don't see a reason why not, but Mojang doesn't officially support other apps that can open a world, like MCEdit. Because of this, I doubt this will happen.
The tell me why there's a world locking mechanism (session.lock). And this will work with inter-minecraft too. Imagine you accessed a network drive and then you can play with your friends (without setting up a server)! That'll look like magic, you know.
DISCLAIMER! This suggestion is alot technicial. If you don't understand, try to support the understandable part. If you don't have any, saying "Support! It'll create more space for blocks." is enough for me. I can accept why you don't want to comment. But i'll keep it in my sig in hope someone else understand me.
Ok, let's begin with the basic part, it's
Short Array Tag
Many mods have implemented this, but Mojang isn't. This suggestion contains this tag type, so i think it's worth to explain it out.
Short Array used to, you know, store arrays of 16-bit integers. Here's the structure.
Description :
Ok, that's enough. Let's move to
New Save Format
This save format is used to expand the available space for blocks and metadata. Here's the changes from old format (because i don't want to copy that gigantic article) :
That is enough for thousands of new blocks. But that's not all, because
Inter-App Sync and Auto-Multiplayer
Have you ever tried opening a world with both Minecraft and MCEdit? The result is, a mess! You can't open the same world with multiple apps. Even there's a lock mechanism, it's not complete.
Ok, enough with that. As i promise, here's the format of new session.lock file :
When Minecraft close the world :
When App loads the world :
When App close the world :
When App got server takeover request, it can do the following :
NOTE: The difference between Full and Minimal server is Full server load block ticks, entities movement, etc. While Minimal doesn't.
TL;DR: Minecraft/App checks for any server which load the world, and if it is, connect to the server.
The End
We're now reaching the end of this suggestion. That's all everyone. And i hope you understand and support me . Bye!
I'm a programmer. I use C/C++, BASIC, Assembly, and Python. If i sound too technicial, that's because it's the way i think.
My Suggestions
No comment? Weird.
I'm a programmer. I use C/C++, BASIC, Assembly, and Python. If i sound too technicial, that's because it's the way i think.
My Suggestions
Well, the majority of us aren't programmers, so it's hard to tell exactly what you're suggesting. I have a bit of programming experience, and even I'm confused.
Anyway, the new save format is probably going to be in 1.10, since the block ID limit is going to be removed (or, at least, immensely increased).
As for in-app syncing, I don't see a reason why not, but Mojang doesn't officially support other apps that can open a world, like MCEdit. Because of this, I doubt this will happen.
Want to see my suggestions? Here they are!
I am also known as GameWyrm or GameWyrm97. You can also find me at snapshotmc.com
Yeah, i think that's ok for bumping a bit.
Let's give this suggestion to Jeb (who worked on 1.10).
The tell me why there's a world locking mechanism (session.lock). And this will work with inter-minecraft too. Imagine you accessed a network drive and then you can play with your friends (without setting up a server)! That'll look like magic, you know.
I'm a programmer. I use C/C++, BASIC, Assembly, and Python. If i sound too technicial, that's because it's the way i think.
My Suggestions