Resource Get ready developers, 1.12 introduces some fun changes

Discussion in 'Spigot Plugin Development' started by megamichiel, Apr 29, 2017.

  1. Good day fellow forum member,

    You may or may not have been following the news, but 1.12 contains some interesting features that you might want to know about.
    • Java version will now be 8. No more people will complain about major.minor version errors. On top of that, you're free to use Java 8 as much as you want! I'm interested, any new API features you would love to see implemented in the new update to make our lives easier, like a new event listener system around stream-like classes?
    • Dinnerbone twittered about a new /reload command. Either spigot forces people to use /minecraft:reload or the command will change. Beware!
    • Using noteblock music? (As of now) There will be 5 new noteblock sounds!
    • The player entity gets 2 new nbt tags: 1 for the entity on the left shoulder and 1 for on the right. Though intended for parrots, would it be possible to put another player on there?
    • Advancements replace achievements. Not sure if achievements are completely wiped out, but if that's the case they could quickly be removed from the API.
    • Though not many people are using it, the Ebean ORM is going to be removed in 1.12. On top of that, some deprecated APIs will possibly be removed as well.

    This thread was mainly created as a discussion thread. Post anything you'd like in here.
    #1 megamichiel, Apr 29, 2017
    Last edited: Apr 29, 2017
    • Like Like x 3
    • Agree Agree x 1
  2. *compiles with java 9*
    well woops, more complaints!
    it doesnt reload plugins, but most likely spigot will just change it to reload plugins too.
    has at least been confirmed you can't put horses on there, sadly, so i assume no.
    they'll most likely just gonna be changing the names in the API, as it's pretty much the same thing.
    • Agree Agree x 1
    • Funny Funny x 1
    • Winner Winner x 1
  3. Let us enjoy the few months. Java 8 was also something a lot of people wanted to use cause of the new *sorta* functional programming.

    They both have different functionality. Seems odd to me to keep them in the same command.

    Might I see the source?

    Things can be removed and added, but plugins depending on the stuff will be forced to update and discontinued but still functional plugins will break. If the plugin references the classes and values they need to increase the amount of code for multiple-version compatibility. Advancements work quite different from normal achievements, so their API will probably differ a fair bit.
  4. md_5 said that it'll not be changed, both of them reload data (one reloads the advancement and recipes (and maybe structures soon), and you know what the bukkit /reload is supposed to do) and if you want use one of them exclusively then you can do /minecraft:reload or /bukkit: reload
  5. why not start already now?
    Didn't think of that, but with Spigot for all we know they might just make it use args and specify what you wanna reload, but most likely will provide another reload command.
    Don't have it, but at least Bram (no idea what his spigot name is) talked in IRC about it with Michael/md_5 and he said we couldn't since me and Bram both wanted to do that with horses and other animals.
    just gonna be picky, some will.
    • Like Like x 1
  6. You didn't say anything about the new recipe helper also, it would be good if our custom recipes be registered there, wouldn't it?
  7. I don't like change ;c. JDK 9 is also not fully released yet, which is why I mentioned the few months.

    I'm not sure there will be much in the API about this. I'd say they will just be added to the recipe helper.
  8. anyone who makes Spigot plugins using Kotlin has already been able to enjoy functional-esque programming with backwards compatibility, but I digress

    Might be worth mentioning that the Ebean ORM is getting removed in 1.12, also there's some other spring cleaning that's planned to happen with regards to long deprecated methods afaik
  9. Was mentioned in the API discussion section, but I'll add it to the list.
  10. Choco


    Servers and clients will be incapable of running without Java 8. The only people that will complain about major.minor errors will be those that are not updating to 1.12.0, and those people are not worth supporting anymore. Use Java 8 if you're not already; it is a standard now that it has been released for over 2 years

    The Achievement API as a whole has been deprecated and will be removed. This will break numerous plugins that use the Achievement API because it will just not exist. I presume an Advancement class with constants (rather than enumeration constants) will replace it, because custom advancements will be possible.
    API deprecation commit:

    There are plenty of other features that weren't mentioned in here that I'm sure will have an API (And if they were not planned, perhaps md_5 will get some ideas from this):
    • Parrots are a large feature of 1.12, and I imagine a #setMimicSound(EntityType) will be added to manipulate the sound it mimics
    • Advancement TOAST notifications (The notifications in the top right) may be possible to manipulate. There is a packet for advancements as a whole, which I imagine could be manipulated to send a fake advancement in order to send the notification. I foresee a Player#sendTOAST("Title", "Content") or Player#sendNotification()
    • Saved tool bars are actually capable of being manipulated server-side, as far as I'm aware, so there will also likely be an API for that. Player#saveToolbar(0, new Toolbar(ItemStack... items))
    • The Narrator does have a class in Mojang's new API (I believe it's Text2Speech or something along the lines of that), which may be capable of reading any String passed to a method? I'm not exactly sure how it works, but there may be an API to say custom messages if it works how I think it does. That would be extremely useful as well
    • The Recipe Book has various NBT tags that allow people to discover any recipes they desire, and limited crafting is a possibility with a gamerule, "doLimitedCrafting", which means progressional crafting will be a possibility
    • Tutorial TOAST notifications, which may or may not be modifiable through JSON, but those are not as interesting, I don't believe. The fact that they have indicators and progress bars intrigues me, but this may just be client side :c
    • MANY improvements to NBT which allow it to be many times more flexible, yet also more restricting at the same time. Quotations are now possible to allow for strings with spaces in them, and it will now spew out more specific error messages when something is not formatted properly, including the index at which it failed to parse
    Rainbow parrots... you're welcome

    There are many more features I did not bother listing, but if you wish to see the whole list of changes to date (which is also constantly updated), feel free to browse the 1.12 Wiki page
    • Agree Agree x 1
    • Winner Winner x 1
  11. I am aware of all the features. I listed the ones that would have the most impact on current systems, not new features.
  12. Wouldn't that technically be EULA compliant to limit? You have access to all other features in some plot server but you can then have building hotbars, which will simply make it a bit easier for the donator, but still doesn't give clear advantage.
  13. Non-competitive plot servers don't have to follow the EULA (I think. I'm not sure), because it's not providing an advantage over another player, and doesn't degrade the other player's experiences.

    And other than that, it "should" be EULA-compliant but then again, Mojang doesn't even know what EULA-compliant means.

    P.S.: I am not a lawyer, it's just from what I've heard and what makes sense to me (but then again, since when does Mojang do anything that makes sense)
  14. JamesJ


    Oh for fuck sake...
  15. Very constructive.