Ep61. Complete GUI System CHALLENGE CONQUERED - Minecraft Plugin Development

I designed an entire GUI system with multi-paged menus, clickable buttons and security in under 29 minutes.
This challenge was fun and you will learn a lot of principles in GUI design, object oriented programming and Minecraft plugins.
== COURSES ==
Minecraft Plugin Development: mineacademy.org/project-orion...
Forge Modding: mineacademy.org/forge-mastery...
== SOURCE CODE AND MORE INFO ==
Blog post: mineacademy.org/tutorial-61/?...
#coding #code #tutorial #money #developer #java #minecraft #minecraftplugin #bukkit #spigot #spigotmc #paper #paperspigot #programming

Пікірлер: 19

  • @smokinglife8980
    @smokinglife89802 ай бұрын

    Cool man, Great Video! Not really into creating plugins anymore. I code game engines using C++ now but love to give you a watch when i have the time!

  • @realzuhaz
    @realzuhazАй бұрын

    Awesome video!

  • @exparo6594
    @exparo65942 ай бұрын

    I understand that this is your income, but still more free content, you are very good, I love your videos

  • @kangarko

    @kangarko

    Ай бұрын

    We got over 60 free episodes now and more incoming soon!

  • @user-pt9zl1oz8w
    @user-pt9zl1oz8wАй бұрын

    Amazing

  • @DestroyerDoesMC
    @DestroyerDoesMCАй бұрын

    Hello this is Zavy great job on the video!

  • @kangarko

    @kangarko

    Ай бұрын

    I'm glad you like it

  • @NuradonxPlay
    @NuradonxPlay2 ай бұрын

    nice tut

  • @allround1455
    @allround14552 ай бұрын

    I would recommend using arrays for the buttons as they are more performant. You can create an array with the size of the menu and you just havbe to check if the clicked slot has a button at its index and if so you can use the button 15:00

  • @kangarko

    @kangarko

    Ай бұрын

    I believe the performance difference is negligent. If I am wrong, please send me your spark report if the code from the video is poorly performing and I'll remake it.

  • @koenkeizer2917
    @koenkeizer29172 ай бұрын

    video suggestion: could you do some particle movement mathmatics videos. Like for example, move around little particles around an npc or the player, 2e suggestion. Could you, if you know how to do this, figure out a way to do a color loop on leather armor, so it becomes disco armor. With a hue to rgb, maybe looping the color codes from #FFFFFF to #000000

  • @kangarko

    @kangarko

    Ай бұрын

    Thanks! You can use the new chatgpt omni to generate the code that will transition between hex colors and it should give you some pointers.

  • @exparo6594
    @exparo65942 ай бұрын

    And there is also a question, why metadata and not inventoryHolder?

  • @leonardogeusa4894

    @leonardogeusa4894

    2 ай бұрын

    I happened to read some threads online regarding this, and it seems that InventoryHolder is not a best practice since it causes performance issues.

  • @kangarko

    @kangarko

    Ай бұрын

    Metadata is fastest and works on all Minecraft versions down to like 1.7.10. I never used InventoryHolder btw. Don't overstress over the details. I see so many plugin developers waste energy on things like that. Facebook's strategy is "better done than perfect". Just get your idea out there, ship it. You can always improve later.

  • @CsontiX
    @CsontiXАй бұрын

    The issue with these kind of solutions is that there are ways to delay packets or close an inventory without packets which will NOT call the actual InventoryCloseEvent. It is better to create a custom InventoryHolder in which you can implement any kind of identifier you wish, like enums for inventory types (confirmation, shop, staffmenu, whatever) or even a name that you can set in a constructor. Tracking the player as you do is quite unoptimal, just like checking for inventory name. In reality it is a serious safety issue because developing an inventory by implementing tracking similar to this MIGHT cause other inventories to act differently.

  • @kangarko

    @kangarko

    Ай бұрын

    Enums are quite limited in nature. If poorly coded plugins cause issues they need to be fixed, not by a hacky workaround in our own plugin. Our system has been in all of our plugins since 2017 and causes zero issues with other properly coded plugins.

  • @CsontiX

    @CsontiX

    Ай бұрын

    @@kangarko I understand and Im not saying that specifically Your method is bad. My main point is that this tracking way IN MY OPINION is not the best for the issue mentioned above and I rather use the option that cannot be spoofed or atleast currently there are no issues with it. The best example is the well known Kingdoms plugin which many server uses and it has a fatal issue. It is tracking players in ArrayLists which you can exploit by just delaying packets and then you can technically dupe certain items or take out items that you were never meant to access because of the "wacky solutions" they implemented. Again, if it works good enough then okey, I did not mean to attack in anyway and please dont take it as that.

  • @kangarko

    @kangarko

    Ай бұрын

    @@CsontiX Thanks for sharing the info, I did not know about it actually! Going to review the inventory holders soon and possibly make a new video about them