Spigot Plugin Development - 72 - Understanding NMS

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ม.ค. 2025

ความคิดเห็น • 121

  • @shreyasayyengar
    @shreyasayyengar 3 ปีที่แล้ว +31

    I think this is the most underated NMS video ww.
    Not only do you, in-depth describe the differences between (Craft)Bukkit, Spigot and Core NMS code like a hundred times which is so nice, but you also take a good amount of time explaining the differences in development between the spigot and mojang mappings, and how you accomplished the same thing in like 2 mins lmao.
    It's quite obvious that you have put in and poured a good amount of time and knowledge into this well-thought-out video and you talk about aspects which no developer / yt tutorial has ever covered. (Talking about 1:41, 10:50 - 19:03, 1:02:35)
    For anyone, this has to be the most resourceful, informative and useful intro to NMS and i really hope that this blows up because this honestly deserves way more recognition then it has atm

  • @stonozkachlupata5674
    @stonozkachlupata5674 2 ปีที่แล้ว +14

    Best hour 9 minutes and 20 seconds of my life spent on TH-cam. I wish I found your channel 1 year ago. This is the best explanation of Bukkit, Craftbukkit, Spigot and NMS I have ever seen. This video gave me a lot, thank you.

    • @KodySimpson
      @KodySimpson  2 ปีที่แล้ว +4

      Thank you! I appreciate that, it's the exact reason I made this video. Glad to have helped

  • @KodySimpson
    @KodySimpson  3 ปีที่แล้ว +32

    I aged 20 years in this video

    • @names5509
      @names5509 3 ปีที่แล้ว

      I russian, обожаю твои видио по созданию плагинов, очень качествено, желаю тебе много подпищиков ;)

    • @BarraR3port
      @BarraR3port 3 ปีที่แล้ว +3

      But it was every single day of those 20 years 1000% worth it!

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      @@BarraR3port hahaha thanks

  • @felipeticov
    @felipeticov 3 ปีที่แล้ว +4

    i dont even mess with plugins anymore but your tutorials are so interesting i just keep watching them lol
    great content!!

  • @ratio6677
    @ratio6677 3 ปีที่แล้ว +5

    Holy crap dude i love you i just came to the latest video to say this im just starting out with the first few episodes and i just wanna say thank you SO MUCH for creating this in depth tutorial series on spigot

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว +1

      Welcome aboard! Thank you for the kind words, keep grinding and learning.

  • @blackmt9642
    @blackmt9642 3 ปีที่แล้ว +9

    I'm definitely going to be using the Mojang mappings now these are amazing

  • @gersomwastaken
    @gersomwastaken 3 ปีที่แล้ว +10

    Mate, this is a perfect video, thank you so much!
    Never heard of this channel before, but subbed now, this is the real quality content!

  • @celestebatres4581
    @celestebatres4581 3 ปีที่แล้ว +10

    Thank you for this video! I just speak a little bit english, but I'm going to work hard to understand it better. Your videos are really awesome and they certainly come in handy.

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว +10

      Gracias, tu eres muy bien! I am only assuming you speak spanish by your name, I wish you luck in learning both English and coding. You can do it!

  • @jacrispys2784
    @jacrispys2784 3 ปีที่แล้ว +28

    Finally a good tutorial on this, learning from forums and resources is a pain but I’m glad you tried to conquer this. Kody If you need help with these NMS videos just send me a dm on spigot forums i might be able to help a bit.

  • @jk-gn2fu
    @jk-gn2fu 2 ปีที่แล้ว

    They said, "Give a man a fish, you feed him for a day. Teach him to fish, you feed him for a lifetime". You are one of very few (if not the only) who teach how to fish.

  • @tomashula2779
    @tomashula2779 3 ปีที่แล้ว +3

    You are a legend.
    I myself tried coding with NMS, but as you said, the tutorial foundation is little to nothing, and when there is something it's either not explained and just poorly copying code or its outdated. I was quite confused with the mappings thing, but after watching this video, I understand everything. I appreciate this video very much, it had to be so much work, since as I understood it, you learnt everything from 0 as well.. but without this video😄
    Btw, the wether was maybe scuffed because you built the buildtools with --rev 1.17 (not 1.17.1) and used 1.17.1 in the plugin.

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว +1

      Hey, thanks so much! That means a lot to me. Glad to have helped. Good catch, but I dont think the packet layout for game state would have changed between 1.17 and 1.17.1

  • @DarkCraftPlayz
    @DarkCraftPlayz 3 ปีที่แล้ว +17

    This video is so informative, have already watched it thrice 🔥

  • @agustinarnoldi9542
    @agustinarnoldi9542 2 ปีที่แล้ว +7

    Hey, when i remove "-api" from spigot-api in pom.xml, nothing happens even if i reload maven... is this video outdated or how should i start creating plugins with craftbukkit and nms? how do i access them?

  • @zigafide
    @zigafide ปีที่แล้ว +1

    Thank you so much for this video. It heavily pointed me in the right direction for figuring out how to do something I wanted to do. :)

  • @Anony03
    @Anony03 ปีที่แล้ว

    I love this video, i love your diligence and i love the way you teach us things that would be learned in much more time.
    You gave us a great resource that cost you a lot of time, so thank you 🧡

  • @pokecrafterBE
    @pokecrafterBE 3 ปีที่แล้ว +2

    What an incredibly helpful video. I can not thank you enough!

  • @andre_601
    @andre_601 ปีที่แล้ว +1

    I think the reason why the EULA (End User License Agreement) forbits the usage of the Mojang Mappings outside of development, and therefore requires a remapping of methods, is simply that Mojang doesn't allow distribution of their unobfuscated (modified) client/server code, which is also why Spigot and Paper rely on BuildTools and Runtime patching respectively. They can't share the final server jar themself as it would be considered distribution of modified server source code and therefore against the EULA, build building or patching it is a legal grey area Mojang was happy to ignore so far.
    And regarding the plugin: You basically expose the unobfuscated class, method and var names, which is like exposing their code as is. So I believe that's their reasoning behind this.

  • @wubbo1468
    @wubbo1468 3 ปีที่แล้ว +1

    I wish I saw this a week ago. It took me soooo long to get the mojang mappings to work

  • @whyditto604
    @whyditto604 3 ปีที่แล้ว +2

    Pretty cool didn’t have time to watch all of it but def will come back to this

  • @SmilyAnimasi
    @SmilyAnimasi 3 ปีที่แล้ว +1

    Thank You For The Knowledge
    Please take care of your health as well

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      Thank u, ill try haha

  • @Evanski
    @Evanski 2 ปีที่แล้ว

    For some people not getting craftbukkit as a import,
    where you did the build tools run it again but instead of --rev do --compile craftbukkit
    close intellij if its open, let the jar build, reopen intllij and reload your project (like when you edit the pom.xml)

  • @quzack46
    @quzack46 3 ปีที่แล้ว +3

    this is great , i really hope you blow up on youtube

  • @szym402pl
    @szym402pl 3 ปีที่แล้ว +2

    sheesh, today we learned about how M&Ms are made

  • @hatdoggo8824
    @hatdoggo8824 3 ปีที่แล้ว +2

    Making a comment for the algorithm cause this is super well made!! Good job mate

  • @pianochannel100
    @pianochannel100 2 ปีที่แล้ว +1

    Listening to nerdy kermit tell me about how Spigot works. Nice video!

  • @einfxchfinn
    @einfxchfinn ปีที่แล้ว

    1:01:38 I opened a bug report for this but they said that this downy affect the gameplay, so they won’t fix it. (MC-261038)

  • @fabccc
    @fabccc 3 ปีที่แล้ว +1

    Thanks you so much ! I used to be an Spigot mapping enjoyer, after your video i'm just going to switch to Mojang Mapping.

  • @TheStroker986
    @TheStroker986 3 ปีที่แล้ว +2

    did they take away the spigot mappings in 1.18? I can only find a way to use the mojang mappings.

    • @ArtusDev
      @ArtusDev 3 ปีที่แล้ว +1

      I also have that problem

  • @viuwmemes
    @viuwmemes 3 ปีที่แล้ว +4

    Great video, very detailed

  • @darthmango6573
    @darthmango6573 2 ปีที่แล้ว

    OMG You are the best!!! You don't know how long it took for me to finally figure out how to import nms! Thaaaaaaaaaanks!
    (Instant abo and like :D)

  • @Sasmety
    @Sasmety 2 ปีที่แล้ว +1

    Does mojang mappings work on paper or purpur servers?

  • @karshaakman6837
    @karshaakman6837 2 ปีที่แล้ว +1

    Hello when i do spigot instead of spigot api i do have a error even after reloading java 16

  • @realazashiro
    @realazashiro 3 ปีที่แล้ว +2

    How can I use the Mojang mappings using gradle ? I searched for hours on internet but found nothing

  • @realminecraaftt
    @realminecraaftt 3 ปีที่แล้ว +2

    It would be cool if there was a way to get a version of spigot remapped with yarn mappings as well

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      What do ya mean by yarn mappings?

    • @devmclovin
      @devmclovin 3 ปีที่แล้ว

      I thought it would be cool to have a completely mapped jar file. But the usefulness to myself is very limited as I do not run my own server and such a jar file would cause api issues unless the mapped jar itself was an api

    • @pezus553
      @pezus553 3 ปีที่แล้ว +1

      @@KodySimpson yarn mappings are the mapping used by fabric

  • @mischa7669
    @mischa7669 6 หลายเดือนก่อน +2

    can i just point out that this dude is recording his videos at 4 am?

  • @NamikazeAsh
    @NamikazeAsh 3 ปีที่แล้ว +1

    Hello , I removed the -api part from the pom.xml but for reason it gives me errors
    Any errors , and what am i doing wrong?

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      Not sure, hop into our discord

  • @sunsurvivaltv3475
    @sunsurvivaltv3475 3 ปีที่แล้ว +2

    I have one ques to ask you. if i want to use key like "Shift ctrl or any button" to use command can i do it? And how to

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      What do you mean exactly? I recommend hoping into the discord and asking in one of the help channels.

    • @sunsurvivaltv3475
      @sunsurvivaltv3475 3 ปีที่แล้ว

      @@KodySimpson Ahhh forget it.now u can do plugin like tackle4826 channel he has plugin item stack you try to see his channel when he drop items its will show item name and amout item idk you understand me i not good english.ty

    • @sunsurvivaltv3475
      @sunsurvivaltv3475 3 ปีที่แล้ว

      And he have gain xp title show when he kill any mob i want to know how to do it.

    • @sunsurvivaltv3475
      @sunsurvivaltv3475 3 ปีที่แล้ว

      Lastest Video skip to 4.21 see the top of head skeleton its show amount skeleton and see when he killed it have show gain xp

  • @pedrojavaarchive
    @pedrojavaarchive 3 ปีที่แล้ว +1

    Hey dude, good vid mate! Do you have any idea if there's an optimized way of changing biomes of the world? I was doing one comission of an Season plugin which had like Summer winter etc, but making it snow its quite hard bcs i have to keep changing the biome for world, and that's not actually pretty good process, would it be possible to send a weather packet about snowing?

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว +1

      Hey, I'm not sure off the top of my head! Sorry. I am happy you enjoyed the video though

  • @negai_
    @negai_ ปีที่แล้ว

    6:40
    You can send ActionBars to players with nms too. Bukkit and Spigot APIs can't do that

  • @devmclovin
    @devmclovin 3 ปีที่แล้ว +1

    I’ve been making plugins for so long and I didn’t know removing the api from your maven import would give access to the spigot jar and all the nms imports. I’ve been under the impression the only way to get them is via building build tools on your computer

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      You do need to use build tools to obtain that spigot jar

    • @devmclovin
      @devmclovin 3 ปีที่แล้ว

      @@KodySimpson I see

    • @epicgodmc9949
      @epicgodmc9949 3 ปีที่แล้ว +2

      Buildtools will not only give you an up to date server jar. it will also automatically add that server src into your local maven repository. aka your .m2 folder which is why you are able to access it after running buildtools

  • @BramStolk
    @BramStolk ปีที่แล้ว

    So crazy that "Play Pufferfish Sting Sound" is one of the 12 message types, along with "Win Game." They seem so different in importance. E.g. why do puffer fish sounds need to be communicated over the network? It makes no sense???

  • @じゅげむ-s6b
    @じゅげむ-s6b 3 ปีที่แล้ว +1

    5:53am? *salute* dude, sleep

  • @quinn4571
    @quinn4571 2 ปีที่แล้ว +1

    Hi, I tried doing this for 1.12.2, but i couldnt get it to work. I keep getting the error "Cannot resolve org.spigotmc:spigot:1.12.2-R0.1-SNAPSHOT". I did the buildtools remapped and added the plugin and dependencies. Yk how to fix this?

    • @KodySimpson
      @KodySimpson  2 ปีที่แล้ว +1

      Likely doesnt support remapped on pre-16/17 versions

    • @quinn4571
      @quinn4571 2 ปีที่แล้ว

      @@KodySimpson if i wanted to follow your npc tutorial but make 1 for 1.12.2 what would u advice? I just want it to work on 1.12.2

    • @quinn4571
      @quinn4571 2 ปีที่แล้ว

      please help anyone xD

    • @quinn4571
      @quinn4571 2 ปีที่แล้ว

      @@KodySimpson I was able to create the mojang remapping with the build tool, so it would be supported right? Could you please help me, I've been stuck on this for 2 days xD

    • @moteloff
      @moteloff 2 ปีที่แล้ว

      same problem, could you decide?

  • @MrTiger-ud7jc
    @MrTiger-ud7jc 2 ปีที่แล้ว

    Awesome Video thx really needed that i couldnt figure out how to get this dame craftbukkit with my programming skills and had no Clue that nms is that big of a deal really good explained hope it gets More views nice work

  • @allanmingau
    @allanmingau 2 ปีที่แล้ว +2

    very AWESOME video

  • @jakeysteaky4004
    @jakeysteaky4004 2 ปีที่แล้ว +1

    underrated.

  • @_malloc_
    @_malloc_ 3 ปีที่แล้ว +1

    Nice tutorial can you make Bossbar tutorial for mod bukkit?

  • @narwhster
    @narwhster 3 ปีที่แล้ว +1

    that intro is cool

  • @rjhj_official
    @rjhj_official 2 ปีที่แล้ว

    How come when I try using the nms methods for remapped mojang 1.19.3 it says java.lang.NoSuchMethodError: 'net.minecraft.server.level.ServerPlayer

  • @AwayAllay-p4o
    @AwayAllay-p4o 3 หลายเดือนก่อน

    The best NMS vid i have seen so far! Awesome! Anyone who knows where i can find the plugin for remapping the majong maps to spigot for gradle?

  • @FunixGaming
    @FunixGaming 6 หลายเดือนก่อน +1

    Thanks so much ❤️❤️

  • @dylandakota759
    @dylandakota759 3 ปีที่แล้ว +1

    Since it's the native Minecraft code, I'm assuming NMS is something someone reversed and decided to share the reversed code publicly?

  • @upperarmhumor
    @upperarmhumor 3 ปีที่แล้ว +1

    Extremely helpful!

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      Glad it was helpful!

  • @narwhster
    @narwhster 3 ปีที่แล้ว +3

    oh yeah the mojang mappings look so much easier

    • @KodySimpson
      @KodySimpson  3 ปีที่แล้ว

      Yeah they are awesome

  • @Noikz
    @Noikz 3 ปีที่แล้ว +1

    Can you do a tutorial about player uuid's?

  • @dereksavage8728
    @dereksavage8728 3 ปีที่แล้ว +1

    you are a legend

  • @NuradonxPlay
    @NuradonxPlay 3 ปีที่แล้ว +1

    Okay this was really awesome

  • @_invectys_8935
    @_invectys_8935 2 ปีที่แล้ว +1

    Thank you!

  • @Seriost
    @Seriost 2 ปีที่แล้ว

    what do if use paper? how to get NMS with paper? i think i figured it out but how to get the shit you said in the next tutorial with like ServerLevel and shit , i cant even get it in spigot when i tried using spigot

  • @uvuvuwewenyetwe644
    @uvuvuwewenyetwe644 3 ปีที่แล้ว +1

    53:58 killed me 😂

  • @ariansadeghi3181
    @ariansadeghi3181 2 ปีที่แล้ว +1

    Thank you so muchhhh

  • @rarehyperion
    @rarehyperion 2 ปีที่แล้ว

    I feel like TH-cam is trying to kill me right now, I am literally trying to setup a CraftBukkit NMS project and NOTHING will work, if it works then the server will give a class not found error even though its getting exported with the jar and when I try to get the CraftBukkit API from BuildTools it doesn't give me anything I can use at all literally nothing, I feel like this is hell and I don't use Maven so as of typing this right now I have decided to learn maven because this is the only difference everyone has that made it work, This is killing me lmao.

  • @WolfTwo
    @WolfTwo 3 ปีที่แล้ว +2

    Queria saber inglês 😥

  • @miniluca
    @miniluca 3 ปีที่แล้ว +1

    i love you ❤

  • @emmet401
    @emmet401 3 ปีที่แล้ว +1

    holy shit kody

  • @Mxchyyyy
    @Mxchyyyy 2 ปีที่แล้ว +1

    tysm!

  • @ChickenSaysBak
    @ChickenSaysBak 2 ปีที่แล้ว

    NMS = In A Mess

  • @캣잎-w7q
    @캣잎-w7q ปีที่แล้ว

    감사합니다!

  • @somethingaboutmoron
    @somethingaboutmoron 2 ปีที่แล้ว

    On the mojang mapping when I try to run my code why does it say:
    Caused by: java.lang.NoSuchMethodError: 'net.minecraft.server.level.ServerPlayer org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer.getHandle()'?
    was there something wrong with the implementation of the mapping?
    Edit: I tried switching java versions from 1.8 (while using minecraft 1.17.1) to 1.16 and now mojang mapping won't work, it just switches to the spigot mapping