Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] World Formats #2

Open
OoLunar opened this issue Oct 31, 2021 · 0 comments
Open

[Feature Request] World Formats #2

OoLunar opened this issue Oct 31, 2021 · 0 comments
Labels
Documentation Improvements or additions to documentation Enhancement New feature or request Help Wanted Extra attention is needed

Comments

@OoLunar
Copy link
Member

OoLunar commented Oct 31, 2021

What's your suggestion?

World Formats. This allows us to save worlds to a database, our own world format or to the native Minecraft world format.

Why do you feel this should be added?

Exposing multiple ways to save a Minecraft world allows us to either save disk space or paves a way to convenience. Those who are server providers, such as MCProHosting, would most definitely take advantage of our world saving database feature, since it would mean files would not have to be written to a disk but instead a remote database.

The worlds can be saved in the following formats:

  • Through a database
  • In Slimeworld format (which removes tons of metadata. Fit for minigames, not for survival worlds)
  • Traditional Minecraft format

Of course, there would have to be a tool or command to convert the world to whatever format is desired, at any time. I suspect making this tool will be the most difficult part.

Do you have a rough idea of how this should be implemented? If so, how?

When a plugin API is made, the world can be exposed as an interface. The interface should contain an Enum property defining which type the world is, along with other properties that the Minecraft protocol defines. Finally, which world format the world should be saved in will be determined by the server:world_type config setting, which is an enum defined as such:

public enum WorldFormat {
    Database,
    Slimeworld,
    Traditional
}

The IWorld interface could look something like this:

public interface IWorld {
    WorldFormat WorldFormat;

    int Dimension;
    string WorldName;
    Guid WorldId;
    // ...among other properties and methods
}

I expect the final product to look very different, but the concept is here.

What gave you this idea? Was it related to a certain problem or inconvenience?

Multiple inconveniences when transferring worlds across devices.

Have any alternatives been considered?

N/A

Personal notes

Linked to #1.

@OoLunar OoLunar added Documentation Improvements or additions to documentation Enhancement New feature or request Help Wanted Extra attention is needed labels Oct 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Documentation Improvements or additions to documentation Enhancement New feature or request Help Wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant