Page 1 of 2

Minetest Content Database

Posted: Fri Jul 21, 2017 02:46
by SonosFuer
I have a Minetest content database website currently in progress, essentially it will allow searching of all of the mods, skins, texture packs, and other content for Minetest. It is being written in Python / Django If you are interested in checking it out I am interested in collaborating on it, you can check it out at https://github.com/apachano/minetestdb *note at this stage it is very rough. If you have any ideas for it please post below.

I am also setting up discussions for feature / function details over here to stay organized https://github.com/apachano/minetestdb/issues

Here are some pictures of what I have so far
Login Page
Spoiler
Image
Servers List
Spoiler
Image
Server Information
Spoiler
Image
Create Server Listing
Spoiler
Image
Mod List
Spoiler
Image

Re: Minetest Content Database

Posted: Fri Jul 21, 2017 13:52
by octacian
Nice! It's really encouraging to see someone go and try to tackle such a large task as this. In fact, not too long ago, I was developing my own website like this - called the Minetest Content Database (or, Minetest CDB). I was also planning to work with rubenwardy on his "webstore," however, I was never able to do either. So, a few suggestions after looking at your screenshot.

Try using the Bootstrap library and custom CSS used on the official Minetest website in order to make things fit in. I'd also suggest that you plan on implementing some sort of user system in order to allow users to create mod "topics" directly from the website, rather than depending on the forums as many sites do now. Also, keep in mind that the site will need to have some sort of API that Minetest could query in order to retrieve mods.

There were some more things I noticed while looking at the screenshot, but I've forgotten what they were. Anyways, in concept, looking good! However, you really need to improve the styling, preferably to be the same as the official site.

Re: Minetest Content Database

Posted: Sun Jul 23, 2017 18:39
by SonosFuer
It is definitely a large project, I alone will take a long time to actually get it done. I intend on including a login system so developers can manage their own mod pages. I don't think I am going to include a script to parse the forums It would end up being a bigger mess than its worth. I just cant figure out how I want to approach user logins. So far I have looked over userspice and userfrosting for user management. I have also considered coding it myself but that is a big task and will lack security.

Re: Minetest Content Database

Posted: Sun Jul 23, 2017 18:47
by rubenwardy
For reference, here are previous attempts:
The most complete one is the Minetest Mod Database - it has support for forum logins, and was hosted on minetest.net for a while until due to political reasons it was taken down (the person hosting forums.minetest.net couldn't be bothered to maintain it as they were working on a fork of Minetest, and then celeron55 took over hosting and couldn't be bothered to set it up)

Here are a list of requirements:
  • Must work with whatever database celeron55 uses
  • Must support server mods, client mods, and subgames
  • Python or PHP is recommended, most people tend to hate other technologies
  • Must provide a RESTful JSON API
  • Must be secure
  • Must have a normalised database
  • Must have an open source license
  • Must be maintainable if you disappear
  • Must allow users other than the author to add mods (even if it requires a privilege)
If you are to use PHP (which I don't recommend), I highly suggest using a PHP framework rather than raw PHP. It makes it considerably more maintainable, and stops you reinventing the wheel for things like user logins and permissions. It also fails the maintainability requirement as nobody will want to maintain a raw PHP project.

Also, this is the first post's image for those that dislike Google drive (or don't want to have to click a link)

Image

Re: Minetest Content Database

Posted: Mon Jul 24, 2017 06:01
by SonosFuer
Thanks for the help rubenwardy, I think I am going to learn Python and Django to do this project, I personally have never been a fan of PHP frameworks and from what I have read I will get along with Python really well.

Hopefully I will have a solid update in the next week.

Re: Minetest Content Database

Posted: Wed Aug 02, 2017 20:34
by SonosFuer
After justifying the amount of time that I spend on this project as "Furthering my education" I present to you my crappy update.I have a website coded in Python using Django, it uses Django-Bootstrap3 (an app that just implements bootstrap) and a my-sql server. (I have not found out what celeron55 uses but Django makes it easy to switch that around)

Here is a screen shot of what it looks like so far
[img]
Capture.PNG
Capture.PNG (21.84 KiB) Viewed 1973 times
[/img]
If you know Django and want to see what I have coded head over to this new git hub repository https://github.com/apachano/minetestdb As I literally just learned Python and Django over the last week helpful coding suggestions are more than welcome.

Next on my todo list is implementing Djangos user system and figuring out how to add tags to the server classes in an efficient way to assist in sorting.

Re: Minetest Content Database

Posted: Wed Aug 02, 2017 20:57
by octacian
Wow! Now that's some progress :D You've now made it as far as I ever did with making a content DB :rofl:

I've never really gotten a chance to get very experienced in either Python or Django, but after looking at some of your code, I'm definitely going to make a point of learning some more in-depth whilst on my 2-month MT break.

Also, I'm not sure that the "-" is needed for the "Sub-Games" menu item. I typically just say "Subgames," but maybe that is the better way to say it...

Re: Minetest Content Database

Posted: Sat Aug 05, 2017 22:04
by SonosFuer
I am stuck on something and I am looking for help with this. I have a view that displays the list of tags for the servers. I simplified the code to make it more portable but there is one bug where the panel heading is displaying variable values and not variable names (I know like it is supposed to). I want to figure out how to make it display the variable names. Here is a screen shot of the actual page.

Image

Here is the code (You can see more on git hub, i posted it)

Code: Select all

def index(request):
    current_server_list = Server.objects.all()
    tags = Tag.objects.all()
    mt_version = ["0.4.16", "0.5.0"]
    subgame = 0
    filters = [tags, mt_version, subgame]

    context = {'current_server_list': current_server_list,
               'filters': filters}
    return render(request, 'servers/index.html', context)
This is the code from the template.

Code: Select all

                <form>
                    {% for ftype in filters %}
                        {%  if ftype %}
                            <div class="form-group">
                                <div class="panel panel-default">
                                    <div class="panel-heading">{{ ftype }} </div>
                                    <div class="panel-body">
                                        {% for filter in ftype %}
                                            <div class="checkbox">
                                                <label><input type="checkbox">{{ filter }}</label>
                                            </div>
                                        {% endfor %}
                                    </div>
                                </div>
                            </div>
                        {% endif %}
                    {% endfor %}
                </form>

Re: Minetest Content Database

Posted: Sat Aug 05, 2017 22:46
by rubenwardy
try

Code: Select all

{% for ftypename, ftype in filters.items %}
instead of

Code: Select all

{% for ftype in filters %}
then use

Code: Select all

<div class="panel-heading">{{ ftypename }} </div>
instead of

Code: Select all

<div class="panel-heading">{{ ftype }} </div>

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 00:30
by SonosFuer
It doesn't load with that

Image.

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 00:39
by rubenwardy
Well, I suggest looking at the html it generated. The fact it didn't crash indicates that it's working somehow.
If nothing is generated, try printing out ftype and ftypename just under the for loop

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 01:12
by SonosFuer
The for loop is not executing at all because filters.items does not exist.

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 01:29
by rubenwardy
Ah, it's because it's an array not a dictionary

You need to change filters in python to be a dictionary from the panel title to the list of options

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 05:46
by SonosFuer
Got it working, thank you!

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 08:48
by SonosFuer
UPDATE
I have the servers page mostly functional, it does not save check boxes after it filters but that is not critical (just annoying). I am happy with the servers list page although I want suggestions on how it should be changed. Here is a screen shot of the page.
Image

Re: Minetest Content Database

Posted: Sun Aug 06, 2017 21:00
by webdesigner97
I think Minetest needs a proper package manager, with a web interface, online storage, an ingame GUI and a CLI (like npm). We had nice attempts before, but I think there should be a more or less official project for this :)

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 00:18
by SonosFuer
webdesigner97 wrote:I think Minetest needs a proper package manager, with a web interface, online storage, an ingame GUI and a CLI (like npm). We had nice attempts before, but I think there should be a more or less official project for this :)
I agree with you, in the future I would like to build my own launcher that handles all of this (probably will interface with my database) but that is a long ways out as I have a lot of other projects on my mind (and those stupid job and school things that keep getting in the way). What it ultimately comes down to is having someone willing to put in the effort.

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 00:20
by octacian
SonosFuer wrote:I am happy with the servers list page although I want suggestions on how it should be changed.
  • Server links should be <a> elements
  • Server flags should could use some improvement, maybe use Bootstrap labels or pagination (minus the previous and next buttons of course)
  • "Mt_Version" should be "Minetest Version"
  • "Apply Filters" button should use Bootstrap as well
webdesigner97 wrote:I think Minetest needs a proper package manager, with a web interface, online storage, an ingame GUI and a CLI (like npm). We had nice attempts before, but I think there should be a more or less official project for this :)
uhh, Isn't that sorta what this is? :P Although it's not official yet, it's an incredible start, and IMO has a good chance of later becoming official
SonosFuer wrote:I agree with you, in the future I would like to build my own launcher that handles all of this (probably will interface with my database) but that is a long ways out as I have a lot of other projects on my mind (and those stupid job and school things that keep getting in the way). What it ultimately comes down to is having someone willing to put in the effort.
I thought long and hard about making a launcher, and even started working on one, but I've come to the conclusion that features such as content store connectivity should be implemented right within the Minetest main menu. And BTW, I'm hoping to have several main menu improvements ready for 0.5 ;)

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 02:27
by SonosFuer
octacian wrote: [*]Server links should be <a> elements
Do you mean the server addresses? except for Hometown none of them actually mean anything to a browser, they are the addresses you put into the client. I will post a screen of it once I get a bit more styling done but there is a link to their forums post (or in hometowns case their private forums) in the server display page. Once I get that screen let me know what you think.
octacian wrote: [*]Server flags should could use some improvement, maybe use Bootstrap labels or pagination (minus the previous and next buttons of course)
I am going with labels, I still need to tinker because they dont look quite right but the idea is there. (Updated screen shot)
octacian wrote: [*]"Mt_Version" should be "Minetest Version"
Django is nice, that eas an easy fix and would have been a nightmare in php with how I have it set up.
octacian wrote: [*]"Apply Filters" button should use Bootstrap as well[/list]
Done!
octacian wrote: I thought long and hard about making a launcher, and even started working on one, but I've come to the conclusion that features such as content store connectivity should be implemented right within the Minetest main menu. And BTW, I'm hoping to have several main menu improvements ready for 0.5 ;)
The way I was going to do it would be considered a fork of mine test, I wanted to modify the original launcher to support version control and pull the actual game side of things from the git server. Then it would have a link on this database where you click a mod or server and it loads the game and installs it. Lots of fancy ideas but the bottom line is I have a lot of studying about the engine to do before I even try.

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 03:49
by SonosFuer
UPDATE - Server Details Page
I want to show off the details page I have been working on (not knowing django or bootstrap this is a much bigger accomplishment for me than it looks) I am absolutely looking for feedback on this. If anyone knows how to interface with server statuses that would also be helpful (players / max players, server signal, etc)
Image

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 04:44
by octacian
Suggestions regarding server information panels:
  • Description
  • Rules
  • Mods (this might be able to be grabbed automatically)
  • Players (can get this from servers.minetest.net if server_announce is on)
  • Server specifications (just for fun :D)
  • Comments (essentially reviews)
Yes, I know that the above requests are quite numerous, but I just wanted to throw them out there.

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 11:35
by rubenwardy
I think that you should get mods working first, as we already have a server list server. Also, we used to have an in-game mod store, it would be worth reviving that if so. (Don't worry about that, just make a nice rest API)

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 16:43
by sorcerykid
SonosFuer wrote:
octacian wrote: [*]Server links should be <a> elements
Do you mean the server addresses? except for Hometown none of them actually mean anything to a browser, they are the addresses you put into the client. I will post a screen of it once I get a bit more styling done but there is a link to their forums post (or in hometowns case their private forums) in the server display page. Once I get that screen let me know what you think.
Is that true? I pointed my Web browser to arklegacy.duckdns.org which is the server address of Must Test, and it takes me to a Web page. Glancing through the list at servers.minetest.net, this appears to be the case of quit a lot of servers in fact, certainly not just Hometown.

Edit: I take it there will be more than 4 servers, and that the listings will editable by server owners themselves.

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 17:02
by SonosFuer
rubenwardy wrote:I think that you should get mods working first, as we already have a server list server. Also, we used to have an in-game mod store, it would be worth reviving that if so. (Don't worry about that, just make a nice rest API)
While I develop this I am trying (*doing a poor job but trying) to make the code all universal, I wanted the difference between the mods page and servers page to just the the content. This took me about a half hour but all I did was make a copy of the servers page, rename everything that said servers to mods (changed server address to author name and other minor fixes) and put some content in that database.
Image
You bringing that up and me making this view does inspire me to condense a lot of the code that is redundant across the apps as I realize how the code can be condensed with some data structures and generic names.

Re: Minetest Content Database

Posted: Mon Aug 07, 2017 17:13
by SonosFuer
octacian wrote:Suggestions regarding server information panels:
  • Description
  • Rules
  • Mods (this might be able to be grabbed automatically)
  • Players (can get this from servers.minetest.net if server_announce is on)
  • Server specifications (just for fun :D)
  • Comments (essentially reviews)
Yes, I know that the above requests are quite numerous, but I just wanted to throw them out there.
I am looking for numerous requests :P I can build an app with a basic concept but my brain crashes on the details.

Description is the big chunk of text in the middle, and on the listings page I truncate the description to 250 chars. As far as rules I figured I would let that stay in the description for the sake of simpler code but if you think a separate built in heading would be better it would not be that hard to add, let me know what you are thinking about that.

Mods should be easy, especially once the Mods DB is properly implemented and easy to pull from, I just have to figure out checking if the listed mod is in the db or hosted else where to provide proper linkage.

As far as players and server stats,.I really don't want to parse from the website if I can avoid it. The website gets the information from the server itself and that is the connection I want to get stats from to improve performance.

Comments, I want to add this and have made a few attempts at it, ultimately I believe the best way would be to integrate a forums application into the site but that has proven to be difficult, definitely on the list for when I am better at Django.

Loving the feedback! I hope this turns into something good.