Completely new plugin system?

Discussion in 'Archived: Plugin Requests' started by morshu9001, Nov 6, 2011.


Should plugins actually be YMLs executed by a master plugin?

  1. Yes, this will be easier. I'm sick of plugins not working with the new CB versions.

  2. No, this is a stupid idea. It's fine how it is. We don't need random people making random plugins.

  1. Offline


    Here is the problem with Bukkit plugins. Each one must be written from scratch in Java using methods from Bukkit that change with certain updates. Each developer must update his(/her?) own plugin, and they usually do not unless it is a very active developer. Also, you need to be pretty good with Java to make a plugin!

    I'm proposing that the whole system be run by ONE plugin (well, it could be built in to Bukkit actually). That plugin would look for YML files that have scripts for plugins in a much more abstract and user-friendly manner. Bukkit would take stuff like "when a person dies, log it in this file, and spawn a chest with his inventory in it" and do the required methods. Of course, it would be something uniform and specific. Basically, you would take listener events and do things based on that. You can also have variables and such and math.

    The advantages of this: It's very easy, especially for simple plugins. It's faster than writing a whole Java program each time. It's uniform. It only requires one update of the master plugin to make the same plugin scripts work for new CraftBukkit versions because it can update the methods. A very simple GUI can be made for this, too! Lastly, I'd find it less boring than doing it in Java.

    What I'm proposing is pretty radical, but please think before you make a hate comment! Post a rational opinion on this!

    Agh, I wanted to add to the pole a "no for technical reasons" and a "yes for technical reasons" thing, but you can't ed it anymore. Oh well.

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


    1. I'm not sure if this hasn't been done yet
    2. I think it could be very complicated to create (Buuut there are some ideas i have already to simplify it)

    EDIT: Oh jk, i found this: ScriptedEvents
  3. Offline


    Yeah, that looks pretty nice. I think the whole system should be scripted plugins.

    EDIT: Ironically, that plugin gave me a "bad version number" error. Sigh [dirt]
    I'm getting kinda annoyed now. So far, 4 1.8 plugins have gotten bad version errors, and I realllllly wanted them!
  4. Offline


    This will never end up happening, Because of a few reasons,

    1. What you are proposing bukkit does would eventually have you end up in the same exact position you are in now, Plugins would be made the same way they are right now, just in a different coding language... You are just implying that we change systems.

    2. Minecraft, Bukkit, are both coded in java, therefore making it easiest to code "Plugins/Extensions" of them in java, Just because people are to lazy to sit down and learn a new language doesn't mean everyone else should have to change to that format as well.

    3. If you are getting errors, Report them to the plugin creator.

    4. (To get back to my 2nd point) And for those people that are going to rage at me for all of this because they say that they dont have time, or it takes to much work, I am balancing a relationship, 2 jobs, going to college, and I still have time to learn java.

    So please, Dont be lazy, 'cause it just makes people not want to put in any effort for you, because obviously you aren't putting any effort into yourself

    @morshu9001 I am not directing any of this towards you, This is a general statement to anyone so please, dont take this as a attack towards you.
    BooGaLoo90, Technius and Zothen like this.
  5. Offline


    I learned Java for 4 evenings and it took me one more week to publish two plugins, it's not that hard...

    @Fallen_Advent: You are totally right...
    codename_B likes this.
  6. Offline


    This. I learned Java in a few days with practice. Its really not that hard, although I'm no Java master. I honestly think that people are discouraged when they see 200 lines of code. They look at it and automatically assume it difficult. What they don't seem to understand that its all repetitive ideas. You learn it line for line, term for term, and it is no longer difficult.
  7. Offline


    I don't know if you're understanding the point.
    It's not about changing the language. The YML scripts would not need to be updated because the master plugin updating would allow even old scripts from many versions ago to still work. Also, it's better to not have to start from scratch every time when you're doing object-oriented programming.
  8. Ehm... this is a plugin request, too:
  9. Offline


    But why repeat it every time? And again, the main reason is to fix the updating issue.

    I guess it is in a way, but a more evolved version of my earlier request. This would, ideally, not be a plugin but a built-in kind of thing.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 21, 2016
  10. So ask bukkit to become a stable API (which I doubt will happen soon as bukkit is still a young project). Making a new abstraction layer which translates old to new API will only decrease performance (as I told in the other thread).

    So what does it do in the plugin requests thread then? Don't fool me, it IS the same request, just with a side note that this could be added directly into bukkit, which could had append to the old thread instead of making a new one...
  11. Offline


    Well, I couldn't find a "Bukkit Plugin System Request"-like forum, so I put it here.
    And I think as long as Bukkit is open-source, it will not have a stable API because of all the people working on it. This would unify it pretty easily. Even if the API were to somehow become stable from regulations, the script system would make plugin-making faster and easier.

    And is it really that much computer work for it to get a line from the YML and translate that into a method call using a conversion list?
  12. There are open source projects with stable APIs out. OS != unstable (API). With that logic the new plugin system you want to have couldn't have a stable API, too.

    //EDIT: BTW: You should start to ask yourself why nobody other replied in the old thread and if you know everything better than the devs, why don't you learn java, make it for yourself and prove your points?
    Phiwa, Technius and undeadmach1ne like this.
  13. Offline


    It would be the responsibility of the builder to update the list, which you can do with simple find&replace in a few seconds.
  14. I don't really understand. Builder = The builder of the API? Then it would again decrease performance or builder of the plugins, then the plugins had to be updated like the plugins now.
    And again:
    @resba (you're online right now xD) I vote for LAWL. :)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 21, 2016
    Phiwa likes this.
  15. Offline


    im not trying to be a dick here, but if you dont know about programming you should not try to invent a new way to do things programmatically. what you are suggesting is basically bukkit anyway. here, i will slightly edit a quote from your original post to explain it.

    bukkit is a "system run by ONE plugin (well, Bukkit actually). That plugin would look for .jar files that have scripts for plugins" to alter the way minecraft works and add functionality to smp servers.

    also, to repeat the others, java is pretty easy to pick up. by your definition of "you need to be pretty good with Java to make a plugin!", i am 'pretty good with java' after getting to day four of this book, since i have made multiple plugins and fixed/resurrected 3 or 4 inactive plugins (requiring various amounts of work, ranging from simply recompiling against a new version of bukkit, all the way up to completely re-writing how an rpg plugin handles ranged combat). getting to day four of that book took me one night. i wouldnt be surprised if the amount of effort and thought you have put into this concept of yours has taken you almost the same amount of time it took me to get to the point where i was 'pretty good with java'. again, no insult intended.
  16. Offline


    I'm not sure if you're trolling or not.

    Assuming you're not, here are a few reasons this is a bad idea:

    1. YML is nowhere near as powerful as java. In the end all you'll be doing is building an interpreter layer over the existing java layer. You would loose a great deal of performance because of this. This interpreter layer would have to be created from scratch (very hard to do). Some of the plugins that work now will not work without the flexibility built into java.

    2. There is no IDE for YML and there never will be. There are many IDEs for java, which assist developers a lot.

    3. Most developers already know java. Why would they learn another obscure scripting language?

    4. Java isn't hard to learn, grab Big Java and read it cover to cover, by the end you will be more than competent (online tutorials are another good way to learn and are far cheaper :p).

    5. You'll be limiting yourself to the functions programmed into the YML interpreter, if you want something new, you have to ask the dev in charge. This would make the plugin system far more unstable as people keep changing it.

    6. There really isn't a point, updates don't break a lot of plugins. The plugin I wrote should still work on the current bukkit version and I stopped developing it 6 months ago (the current version works fine and there has been very little change gone into it [maintained by someone else] ).
    7. I'm sure there are more reasons, but I am too lazy to list them all, and we'd be nit picking by the time we got through them all.

    On a side note, YML is terrible and should be shot. XML is far superior and would be a far better choice if it didn't involve everyone needing to change their plugin configuration code.
  17. Offline


    YML IS terrible. I agree.

    Back to the topic:

    What the others said about performance and Java being easy to learn to true. And just because plugins that have the version tag [1000] doesn't mean that it doesn't work. Updates don't break plugins very often. Only writing plugins that are for previous versions. Then we come to another question(possibly) why don't you create a plugin that does everything that every plugin, to this date, can do right now? I can't do it, nor anyone else. That plugin would cause major lag and cause the server size to be.... big. The things that are left in the dust, unupdated but still used, will be replaced. Things that are forgotten... will be forgotten and remain as relics of the past.

    As we all said, the system so far is simple and easy enough to use. No need to make it more complicated by attempting to make it simple. Nothing is perfect and never will be.
    Phiwa likes this.
  18. Offline


  19. We have different interpretations of logic, which is not logic because logically logic is always the same... This causes a logic error in my brain right now, have to reboot it. :D
    Phiwa likes this.
  20. Offline


    But why :O
    Don't wanna throw all my plugins away!
  21. Offline


    Because repetition is the best way to perfection. You do not become better without practice. Java is also useful to know if you plan on getting into computers as a career.
  22. Offline


    Normally there would not be any need for this post because everything has been said, but:

    I am happy that there's noone who supports the idea... :confused:
    undeadmach1ne likes this.
  23. Offline


    Before I begin let me just say that I don't know java I only have what I would consider a limited understanding of the process but I hope it is enough to at least make a clear point, forgive me if I do not understand correctly and correct me if need be.

    This is incorrect, Code only works while code exists, Dependency code in this case code from Bukkit and java, minecraft would have to continue to be the same unchanged in order for something like this work, the issue is code never stays the same.

    For example a new minecraft update comes out, Event names get changes what might have been "Player_Interact" is now "Player_Do" old yml plugin file would be outdated as the master plugin would have to update his or her code to match that of Bukkit's that changed when they too had to update their event code for "Player_Interact"

    You see the problem here yet ?, The idea is not new its just not possible when you have code that gets re factored and names for events and variables being changed often. Sure you could invent a master plugin but that is exactly what Bukkit itself is. Its a wrapper for the server, The very thing you want to invent already has been invented, The problem is not with the wrapper tho as I have stated the wrapper in this case Bukkit only provides extra events and other variables and exposes the code of the server providing an API for Java based plugins to be written and executed.

    But the problem is deeper still then that again, See in order for something to be modified it has to talk to the wrapper so in this case a plugin has to CALL events as they are stated in the wrapper for the wrapper to execute it on the server.

    Take a minute to think about this...., if you need to use the very variables and events in your own script to be executed by the wrapper then your idea is proven invalid to begin with as the whole point your trying to make about a script that does not need updating just cannot be done for as long as events and variables change so will your scripts to match it just like I stated above.

    The only way you could be sure it would work is with a 100% code freeze indefinitely on all minecraft code and bukkit/Masterplugin did not change or re factor any existing or depreciated code. But sorry to burst your bubble but change is inevitable as long we keep striving to improve we will need to constantly update our code to match.

    All you are suggesting right now is to swap from java to YML doing this would then just add more overhead to the whole process Bukkit would then need to read a YML script instead of inject a bunch of classes in native java language this process would be slower and it would also allow users to modify the script with a text editor making the debugging a lot harder and open the door to even more user error.

    Don't get me wrong I would love it if all old things worked for ever but sadly it just cannot be so :(, Though again do not get me wrong there is plenty room to improve on how the process for updating is done in terms of how long it takes as well as how much we have to re write each update.

    Sorry If sound Noob but its a plain fact I am when it comes to development stuff like this as don't know anything about it. I just read a lot and as a IT person I tend to try and take it in even If I am not going to use it its still handy to have some idea how things work.

    Besides understanding this process at a very basic level helps me the server admin make better decisions :)
  24. Offline

    Don Redhorse

    what you are requesting is a stable api or an api which has backwards compability.

    bukkit is that... but sometimes api changes break things... and those api changes come from changes in minecraft..

    so I would guess that when minecraft get's more rest... not being update every 1 or 2 month... bukkit will mature and the api will become more stable and more feature rich..

    The only real backwards compability I would like to see in bukkit is a terrain generator which not only takes seeds but also Minecraft Versions...
  25. Offline


    No, I mean that you shouldn't have to repeat it every time. And really, the current system is horrible. A simple death on ban plugin gets outdated in 1 version.
  26. No it's not,it's nice and clean.
    outdated != non functional, I guarant you if I would write such a plugin you could use it a long, long time.
  27. Offline


    This is simply not true. Most plugins continue to work fine through updates. They don't suddenly become outdated. That's one of the ideas behind the Bukkit/CraftBukkit separation. The Bukkit API remains stable so plugins don't break.

    The main issue is that Minecraft itself has changed a lot over time, which requires updates to the API. Honestly though, there haven't been too many major API changes recently that break old plugins. There are plugins from months ago that still work fine without needing updated. In fact, most plugins for 1.8 work fine in 1.9 without any changes.
  28. Offline


    Just because a plugin's version tag says [1000], or any other number, it doesn't mean the plugin will break.
  29. Offline


    The first (maybe only) good thing that I think of from this, would be more server admins making their own "plugins". But again, there have already been event scripting plugins and such.

    Overall I think the flaws Bukkit's "system" for plugins are not very clear cut. There are too many little things that bother people, and too many possibilities, I think we should just be men and wait it out until it's more refined.
    Afterall, if bukkit's system is flawed, what makes you think yours is any different?

    (tl;dr, i'm not against this particular idea, i'm against trying to change the system right now) ← wow conservatism much?
  30. Offline


    About 9/10 of the plugins I download get broken in 1 or 2 versions, and almost none work in older versions. And the stupid download link for 1337 actually downloads an older version, so I can't update! My friend also has the same issue.

    It usually does. In fact, the only plugin that I've been satisfied with so far is NoCheat.

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

Share This Page