Spout vs ItemCraft vs ModLoaderMP OR new ClientUtility(???)

Discussion in 'Bukkit Discussion' started by sfxworks, Sep 20, 2011.

Thread Status:
Not open for further replies.
  1. Offline


    But their objectives are the same. To get from point a to point b.
  2. Offline


    Frankly it's not that we're not willing to work with people, it's that you seem to be really misinformed about how things work. You repeatedly demonstrate you do not understand how programming works, and merely repeat idealistic answers to everything as if you have some kind of foreknowledge of the subject that we do not on how to work with other teams.

    You talk about things like flat files and streaming but your actual understanding of the concepts seems to fall short. I only picked out one thing wrong with your post because I don't have the will to explain them all, but you need to take some time and read up and really understand the things you are talking about before you pretend you know how to solve them with ActionScript 3.

    EDIT: The FIRST reply to that plugin you linked. "Does this require a client mod?" The answer is "Yes".
    Vhab likes this.
  3. Offline


    Then it seem we are having some communication issues. I'd like it if we could continue this conversation without assumptions. All I wanted to know if this was possible and if not, why? All I have heard is no because the method we are taking is different. I mean don't take me literally. When I say "merge code" I don't literally MEAN dump all your class files into a jar and see what happens. So, would you please gather the will to explain what i don't understand?
  4. Offline


    Possible = yes
    Worth it = no
    Waste of time = yes
    Results in a mess = yes

    Numerous people have already given you various reasons and explained to you as to why it's not a good idea.

    The objectives are not the same either as we want to get from point A to point B in different ways and some would rather go to point C.
    Vhab likes this.
  5. Offline


    @codename_B here's someone who shares your dislike of flatfiles :D
  6. Offline


    Callin' 'troll' on this thread and walking back the way I came. Get out while you still can.
    swift_fox24, smickles and narrowtux like this.
  7. Offline


    So why doesn't minecraft use MySQL for storing its chunkdata?
    aehoooo, sddddgjd, Vhab and 5 others like this.
  8. Offline



    HTML5>Flash, guys !

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 19, 2016
  9. Offline


  10. Offline


    Which is exactly why flatfile is retarted. Anyway (since I can't press enter) ...let's see..... Ok so no merge then. Still ... Something else is wrong..... Well w/e hf then. I wish you all the luck in the world. (No seriously no sarcasm just trying to end this thread before you all think its a troll thread. That and I'm tired of typing on a blackberry)

    Oh yeah I completely forgot about html5. Lol.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 19, 2016
  11. Offline


    So how would you store chunks in java without using flatfiles?
  12. Offline


    (Yay internet is back!)

    Oh come on think outside the block. Why use nbt format in the first place? And mysql can (even though you really shouldnt) store raw file data.
  13. Offline


    Modloader does not have much actual API. Instead, it provides a few interfaces and a few API methods for things like blocks and loading the classes for mods themselves and that's it. Because we are doing everything that modloader does entirely differently from an API standpoint, there is absolutely no way to use any of its code. I could go into further detail but that's pretty much it for that one. There isn't a whole lot to modloader in the first place, it's not a lot of code, most of it is left up to the modders.

    Modloader style modding includes basically mucking about in whatever classes you need to, and writing your OWN api hooks or whatever. Every mod does this differently and that causes modding conflicts all the time.

    Minecraft Forge expands on modloader (Read: adds actual API to it), in a similar way to what Spoutcraft is doing from an API perspective. Essentially it tried to add hooks to Minecraft code so that mods only have to call Minecraft Forge code. Their class layouts and hooks are different from ours, some of their code might be usable to us but we haven't gotten to the point of specifically checking, and frankly it shouldn't take us too horrible long to catch up to them anyway. Most of the work of adding hooks in Spoutcraft is laying everything out in a very simple to use Bukkit-style API. We are currently updating to 1.8.1, after it's stable again we will work on testing our addon loader. Our addon loader is entirely different from modloader. We will allow NO modding of minecraft classes. ALL minecraft native code will be modified or wrapped by us in the API to use. This is almost exactly the way Bukkit does it, but with very tight security on the code instead of full access to net.minecraft.src.

    We may or may not be able to use some of Minecraft Forge's API code but as far as they are it won't take us very long to write it ourselves, it's ironing out 1.8.1 bugs and homework that is slowing us right this minute. When we get to starting that part, we will see. My gut instinct is that their code will not be very compatible with our goals.

    Spoutcraft is open source on github, and ANYONE is free to help add API funtionality after the clientside addon loader is ready (Well they are free to now but it can't be accessed yet). Minecraft forge team or whoever.

    As for literally merging teams, it's unlikely. Both camps are going to maintain that their method is better for the community and the other team should be helping them, not writing something separate. But ultimately we feel that Bukkit compatibility is going to the best for the community. Bukkit has strong support from Mojang already and Spout is already far along in development. Minecraft Forge has not directly expressed any desire to make their Multiplayer API a direct extension of Bukkit API to my knowledge.

    Custom blocks and items are also being handled in a very different way by Spout. It is taking longer, but we believe it to be the right way. The idea is that all custom data is stored in metadata and a lookup, eliminating map corrupt from items dropped on the ground, and allowing vanilla clients to connect to Spout modded multiplayer servers should the server owner choose to.

    Spout also is the only attempt to tackle the problem of clients not having the correct mods for the server you wish to play on. Instead of manually downloading the client mods for each server and having a manager or backups or whatever, servers will distribute to clients. In this way, we aim for the ultimate ease of use for the users. Sending files to the clients is already more or less ready and in play. You can see this with the texture pack forcing and GUI precaching with some of the RPG plugins.

    Another determining factor for the ability to work with the minecraftforums community is their general opinion on source rights and modding. Most of them have ad.fly links, and their source is closed. Minecraft forge and others are the exception, but the Bukkit community has a very FOSS mindset. Almost all plugins you will be able to find on github, including ours. Most licences are open source licenses. It's very helpful to the community when a popular plugin dev quits for someone else to have the legal right to fork it and pick up the slack.

    In summation, any broad merge is physically impossible due to the conflicting natures of the teams and schools of thought.
    poiNt_3D, Vhab, swift_fox24 and 5 others like this.
  14. Offline


    This is what I was looking for.

    Thank you. Now I can finally act on proper information.
    Even though this is from one side I seriously think you covered the nature of the 3 properly.

    So then, I am targeting the wrong audience and going about this the wrong way. Thank you for your time. Sorry I compared you to the two without seeing everything clearly.
    Haekon likes this.
  15. Offline


    But do you think that reading from a flatfile will bog the performance down or what?
  16. Offline


    Personally I think parsing a flat file to get necessary information is inefficient. Mysql is organized and can fetch information in nanoseconds. Format the tables properly and you can literally call an entire world in a minute. nbts (region and chunk files) are just arrays within arrays. I mean, did you see what it was like in 1.3? HOOORIBLE...
  17. Offline


    This shows how misinformed and unprepared to argue you are. From that page it clearly states:
  18. Offline


    Oh. Didn't see that.
    So, what of the rest?
  19. Offline


    No problem, I am sorry for being hostile but as you can see there is a ton of factors and easier to just say you are wrong. Part of the reason I replied is also so that I can clean it up for a FAQ and direct people to it who also don't quite understand. We get the question a lot and it's hard to quantify and easier to simply say "Not possible." You will find most programmers do this due to the difficulty in explaining every detail.
  20. Offline


    Detail is what I am use to hearing in as3. But like I said I guess its different from java devs.

    Let me know when the API for item creation is out. I want to make an item generator that'l write the classes necessary and put them into the jar. It would be something like a form (Insert name and other various values here kinda thing). Just need to know what it would look like and what directory in the jar it would go. I can read the syntax but learning an entirely different documentation is a different story. (If this is possible in the first place. High hopes and optimism tho!)
  21. Offline


    I'd just like to state that you guys doing Spout have giant cajones to take on something of such magnitude.

    When i finally found spout and what you were trying to do i was a bit surprised, it was one of those things i always thought would be amazing but figured nobody would ever take on such a large project with Minecraft and Bukkit changing so often.. for me even handling a few small plugins like Towny for a few months was a nightmare...
    Zothen likes this.
  22. Offline


    This is a rather uninformed comment. Minecraft is loading the world into memory a chunk at a time. This is accomplished by streaming the chunk into memory directly. Once the chunk is loaded into memory locating blocks within that chunk is incredibly cheap.

    MySQL (any RDBMS for that matter) is not designed to 'load' data quickly. It is designed to traverse relationships (hence being called a Relational DBMS) to quickly find data. When you get right down to it, the RDBMS is still loading the data off disk. Using an RDBMS for a dataset with low cardinality (chunks per world) is introducing a significant amount of overhead for very little gain.

    Now I'll touch on what I believe is behind your opinion on this. If you were comparing the amount of time it would take for an RDBMS to locate a block within the world compared to traversing a flat file that represented the world to locate a single block obviously the RDBMS wins. Of course running a SQL query to locate a block in the world versus accessing a block directly using an array index of the block already in memory (how Minecraft is actually doing this) the index based array lookup in memory wins by many orders of magnitude. I think you mistakenly thought Minecraft loaded the world one block at at time and if this were the case, it just wouldn't run regardless of where the block data is stored.
  23. Offline


    You have been told pretty much that several times before already though.
    It was in different wording and different posts, but the gist of it always was already there.

    All the hostility received was because of this. Because you seemed to ignore these concerns.
    This also was exactly what I was pointing out earlier you weren't addressing any of the concerns voiced.

    Again, you're now expressing your inexperience on the subject.
    Being inexperienced isn't bad, except for when it leads you to jump to conclusions with weak understanding of the subjects involved.
    Unfortunately this entire thread is based on your weak understanding of the technical challenges and inability to grasp the different incompatible design decisions between the projects.

    What I'm saying is, you're making a fool out of yourself continuing this conversation.
    You're not positioning yourself to learn, but rather just jump the gun based on false information.
    Eventually leading to the horribly incorrect claims you just posted in the quoted post.
  24. Offline


    How in the world can you compare flatfile to mysql when you don't even know how I am going to format it? I'm not talking about storing everything in "chunks" or "regions". Anyway this is off topic now so go here.
  25. Spout will be the next big evolutionary jump after server APIs like hmod/bukkit! When everything goes well it will be the tool that breaks the leash on the creativity of the devs and can finally lead to new gameplay concepts!
    Viva Spout!
    sddddgjd and alta189 like this.
  26. Offline


    I can compare the 2 very easily. Your schema will be irrelevant to this discussion.
    I'll leave it as an exercise for you to find out why.
  27. Offline



    I would like to illustrate what is happening here using a car analogy (Geeks love car analogies):

    sfxworks is employed at a pizza shop, where he notices that the distributors bring supplies in semi trucks and the delivery boys use mopeds. Seeing this he begins a crusade to get the belligerent semi and moped companies to stop wasting time developing two solutions to the motorized vehicle problem and takes it upon himself to bring the warring factions together.

    His first step in this process is to go to the moped manufacturer and loudly proclaim his great vision of single motorized travel solutions. While there he explains that putting a semi engine into a moped should be pretty simple and the only reason it isn't working is because the two companies are selfish. He then explains how he used a screwdriver to help one of the delivery boys attach bungie cords to their moped which enabled the delivery boy to be more effective. This in his mind is enough proof of mechanical know-how to warrant appealing to the moped company to stop wasting time duplicating the work of the semi company.

    After being rebuked for nonsensical notions by the designers at the moped company he now begins proclaiming that all mopeds and semis should use electric motors powered with solar arrays, because of the universal truth "electric is better for the environment than gasoline". With complete disregard for the problem domain he touts this great bit of wisdom and manages to get a few passersby to actually believe what he is saying.

    At this point a few engineers from the moped company confront him and tell him to go back to school and maybe he can be a car designer some day. To which he responds by starting another thread on the forum (guess the analogy fell apart just then... )
  28. Offline


    Hmm... nice.
  29. Offline


    I saw on the MC forums that Olloth tried working with someone from the Minecraft Forge API team. What happened after that--did this end up dead in the water?

    (Just wondering if I should keep my hopes up for some kind of interface between systems or not...)

    Weenus, I think the sarcasm/tone in your post is completely undeserved.

    I just read this whole thread from start to finish because I didn't understand why some kind of collaboration didn't already exist between Spout devs and other Minecraft APIs. This thread (and all the dev's replies) wouldn't exist if someone hadn't been hopeful enough to put the idea out there and frame it this well.

    So he doesn't have the full picture, neither do most of us who were wondering the same thing.

    You just put someone down for not having all the information.
    That's what forums are for: exchanging information. Nobody is such a genius that they know everything, and that shouldn't limit the possibility of asking questions. For once we have someone NOT being whiny, snarky, insulting, childish, patronizing and such when asking questions, I think it deserves better replies (even if only to tell him to be quiet) than that injection of slime.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 19, 2016
  30. Offline


    Easily, look at how the chunk data is access in memory by the server / client.

    The only reasonable scheme to use for that type of data is a keyed blob in mysql and sql databases are a terrible choice for that type of storage, you'd be much better off with a key-value document oriented store, such as mongoDB or maybe a graph DB such as neo4j would be a better choice.

    That all assume there is any reason at all to move to a database store, which there isn't. If world data were so large that it couldn't be easily memory mapped there would be an argument, but it isn't. If you wanted to gen a world from farlands to farlands then yea, maybe moving chunk storage to a separate server acting as a dedicated database would make sense. That however isn't going to happen as you would be hamstrung by the MC server's capabilities to deal with the load unless you figure out how to shard the server world load there is no point.

    So is summary, its a really bad idea on all accounts.
Thread Status:
Not open for further replies.

Share This Page