Learning bukkit / Java - How hard is it?

Discussion in 'Bukkit Discussion' started by redcanoe, May 16, 2014.

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

    Smerfa

    any...
    in some place i read something like that:
    "We don't want editing much code in NMS because it's harder to update Bukkit."

    And there is some code that you can't add to API, like override mobs.


    And after so long time... we still don't have any method to get drops of block, or damage from damageEvent
    bukkit deprecating options without adding any new to replace them... like get block where player is looking.


    And missing any API for many features from 1.0+ versions...
     
  2. Offline

    Necrodoom

    This is getting off the topic rails, considering a newbie should never be encouraged to edit NMS due to the fact he won't understand how using NMS differs from bukkit API, resulting in some cases in using NMS classes over where bukkit API completely covers, or rarely creating a chaos of bukkit API and NMS calls unnecessaryly which would error when the NMS version updates with the newbie being completely in the dark.

    Using NMS can be benefitable when alternative does not exist, however you should do so only when you are absolutely sure what you are doing.
     
  3. Offline

    XxZHALO13Xx

    Heres a tip bro.. im new to it too... i have learned some java.. mostly from books and the new boston... just keep trying and ull get it.. and remember the people on here are really helpful.. u get stuck.. ask them and theyll help u :D hope u do good at learning!
     
  4. Offline

    RawCode

    just open bukkit pullrequest page, get oldest unresolved request

    by ScoreUnder on Oct 3, 2012

    ScoreUnder:
    NoclipFix
     17 comments

    2012 year!

    pullrequests to bukkit is waste of time.

    NMS always evil, especially in hands of "developers" who unaware of how things actually works.
     
  5. Offline

    Cirno

    Jeeze, if you hate this software so much, why are you still here?
    anyways, to OP:
    Programming isn't difficult; it's the obstacles that prevent you from actually utilizing it.
    Minecraft has a lot of limitations; e.g not being able to add new block (as in, with custom textures and all), not being able to add new sounds (I literally mean "adding" and not "replacing"), not being able to popup custom GUIs, etc. This often restricts what you can do. As discouraging as this may sound, we still carry on because Bukkit is pretty free in how it works. I guess it's just that we strive for a more creative, interesting, new Minecraft.
     
    Rocoty likes this.
  6. Offline

    RawCode

    Minecraft has a lot of limitations Cirno
    hm lol.

    do you know anything about minecraft forge?
    did you ever visited other forums about java?
     
  7. Offline

    Cirno

    Did you know that Bukkit doesn't support Forge? I didn't mention Forge because Forge requires a custom client.
    and why would visiting other forums about Java help at all?
     
  8. Offline

    RawCode

    lol
     
    Bobit likes this.
  9. Offline

    Bobit

    RawCode

    Yeah...what was this guy trying to say?? It's still java!
     
  10. Offline

    Wingzzz

    While I agree- you unfortunately didn't quite make the distinction in this comment about Bukkit (non-custom client dependent) multiplayer Minecraft vs custom-client (standalone/modified vanilla client) required (ie: Forge, Spout, many other mods etc). You later mentioned you were talking about the Bukkit project to which explains it, but just be sure you don't say "Minecraft" has those limitations, but instead specify that "Bukkit" has those limitations and why they purposefully do.

    For anyone confused about this, it basically means that in order for developers to create content- modify, the existing way Minecraft multiplayer works, and safely at that (having no need for custom clients, or downloads) is to ensure there is no content that would be missing from the client. This means we cannot use custom sounds, images, animations, etc (aside from resource packs) because the Minecraft client wouldn't be able to display them as it does not have it. It would in almost all cases cause errors and crash the client. So Bukkit only acts as a bridge between Mojang's Minecraft server making it easier for developers to work with it (it's an API for Minecraft SMP- view Bukkit's "about" for more info). Bukkit doesn't let you add custom images (aside from drawing on a map, which is sorta custom but not really), sounds, animations etc etc. This is on purpose because Bukkit is meant to not require users to have a custom client in order to assure the most wide-range of users and overall usefulness of the API.

    If you want to add custom visuals, sounds etc- the client must be able to have those "resources", those newly added files. This means the client must either download it automatically (like Mojang plans to do with its Plugin API) or install it manually to the existing client, or of course just use a completely standalone client such as Technic/Spout (no longer available). Please note this is just a brief explanation, you can find more information by researching Forge or similar projects.

    I only clarified this for new-comers as I assume this thread should (hopefully) bring. This was in no way targeted towards you Cirno, but just simply to provide additional information for those not following/understanding the above comments.
     
    JaguarJo likes this.
  11. Offline

    Cirno

    The point I was trying to make is that RawCode was talking about Forge. If I followed his post correctly, his post was saying "Visit other java forums for Forge help" in which no way would help unless you are asking blindingly obvious questions; e.g "how do i add 1 to a number"
     
  12. Offline

    RawCode

    how do i add 1 to a number Cirno
    you may find such questions on this forum, many such questions.

    my comment was about "you must use all possible sources of knowledge if you actually want to learn java".

    ignoring forge is huge mistake, since you are missing opportunity to learn minecraft internals and perform server side coding with knowledge about how client will handle your actions.

    same to spigot or bungee, ever if you not going to use this - you shoud know how it works.
     
    L33m4n123 likes this.
  13. Offline

    Jade

    Moved to a more appropriate section. Surprised I didn't see this beforehand.
     
  14. Offline

    Necrodoom

    RawCode all the things you mentioned are not Java language.. They are entirely other applications written in Java that happen to have an API in Java. This is not 'Java knowledge'.

    Also telling people to use things which are not even supported here is not going to help.
     
  15. Offline

    Bobit

    Necrodoom

    He's not saying "use", he's saying "know how bukkit uses it". Generally though, bukkit's documentation will be sufficient, so you should probably wait to research stuff like forge for when you have a specific reason (I just did: to figure out what it is!). If notch were to release the source code of minecraft right now, would you read the entire thing? Do you even read the entire bukkit API?
     
  16. Offline

    RawCode

    Necrodoom

    Java knowlage is syntax and usage of native classes\native features.

    Reading valid source code of relatively large, but yet simple application allow you to get knowlage about both sides of language.

    Reverse engeneering is most simple and time\energy efficient way of learning, ever with zero skills at language, you can learn it from valid source code by trial and error and some google.
     
  17. Offline

    Bobit

    Lol okay. Go reverse engineer minecraft source code via google when (if?) notch releases it.
     
  18. Offline

    Necrodoom

    Er, not really.
    If you take someone who is new to Java, and tell him to read the source code of a Java application and try to make a hello world Java application, the result would be a big pile of useless code and, in rare cases, you may have a valid end result.

    That is because there are two things needed to understand coding. The why, and the how. Reverse engineering may give you the how, but that is only useful if you now why it works that way.

    Take for example a recent thread from plugin development. A user was given code for a simple setspawn plugin, and wanted to add yaw and pitch to it, without any Java knowledge. He knew that in order to do a set spawn plugin, you need this piece of code, but he didn't knew why it worked.

    The end result, that even with major guiding, the person did not know what he is supposed to do with the code to get and set yaw, because he did not understand why it works, and thus could not use it properly. Hence the person had to be fed the rest of the code for it to work.

    basically, reverse engineering is only when you understand why things work as they are, and which to know how to do more things. As with the why, comes the how.
     
    garbagemule and jthort like this.
  19. Offline

    Wingzzz

    As well, reverse engineering is not always time/energy efficient. Reverse engineering obfuscated code is not gonna be a "quick & easy job". It will take experience in working with obfuscated code to be conformable and productive as opposed to being uncertain and spending hours figuring out an efficient yet effective way of actually making the source readable.
     
  20. Offline

    Smerfa

    Yep :)
    Learning on obfuscated code will be... stupid
    When I first saw Minecraft code... "WTF then can't write, who the hell naming variables like that?! IDIOTS!"

    IMHO the best way to learn... it's start learn :> just start do something, that don't must be bukkit, but bukkit it's easy to start :>
     
  21. Offline

    RawCode

    forge provide valid fields\methods names of core classes, you can learn from it without special skills.

    reversing always energy\time efficient, in case of obfuscation - you will need some time to track meaning of fields\methods on your own, but final result will be same.
     
  22. Offline

    Necrodoom

    ...Again, looking at the source of a huge Java application will not improve your Java knowledge if you don't have at least decent Java knowledge first.

    The proper way to learn a new programming language is still tutorials and basic apps, beating your head against a huge giant Java application, which may or not may follow proper conventions, is the same as giving a complex 3D vector math problem and solution to a 1st grader, and expecting him to 'reverse engineer' all the required knowledge out of that.
     
    Zupsub, Wingzzz and garbagemule like this.
  23. Offline

    desht

    This topic is posted on the Bukkit forums and is called Learning bukkit / Java - how hard is it?

    Forge/Spigot/Bungee are not relevant to this discussion; we're talking about Bukkit here. Can you do us all a favour and actually start contributing to this discussion instead of finding new ways to derail it or belittle the original poster? You're not helping anyone and you're just making yourself look bad.
     
    CaptainBern, garbagemule and Wingzzz like this.
  24. Offline

    RawCode

    desht
    I making myself look bad for users who demand spoonfeeding and dont want to learn java before coding bukkit.
    this done intentionally.
     
  25. Offline

    Necrodoom

    Huh?
     
    Wingzzz, desht and Bobit like this.
  26. Offline

    Bobit

    RawCode

    Wait, so you made yourself look like a jerk... because you're a jerk to noobs.
    Huh?
     
    desht likes this.
  27. Offline

    xTrollxDudex

    Well that went down hill quickly.

    Annnnnnd back to the topic, Java/Bukkit will only be worth it if you are truly into it and you have a real drive behind what you are doing other than getting a higher number next to My Plugins in your profile.
     
  28. Offline

    Onlineids

    I agree people that code for the soul purpose of either increasing that number or gaining as much downloads as possible disgust me tbh, its about putting dat love <insert heart img> into plugins and coding.
     
    xTrollxDudex likes this.
  29. Offline

    Maximvdw


    When I started coding 11 years ago my dad gave me a book (VB.net) for my 8th birthday... The first program I had to make was like the most useless thing, so I fancied it up a bit.

    I don't think you should start from the beginning. Get a hard to code program and much motivation and you will learn quicker then going step by step. You will ofc end up with useless coding, but next time it will be better and better.

    Books and teachers can not learn you how to code, it requires motivation and the power to create something better
     
Thread Status:
Not open for further replies.

Share This Page