Checklist for Bukkit.api Learners

Discussion in 'Resources' started by InstanceofDeath, Aug 23, 2016.

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

    InstanceofDeath

    1. The Idea behind:
    So I thought if your in the learning process of the bukkit/spigot and anything else .api it would be useful to you to see what you learned and what you should learn next. There are 2 problems:
    1. I am not a native english speaker, so pls ignore several grammatic/language mistakes. Added to that I am a "very yound human" I would say, so I am not working with Englosh all the day.
    2. Second Point is that many of you guys think : "I can learn java by learning bukkit" .. Thats so completely wrong!!! I made the same mistake: You copy and past internet examples in your code switch some things up and think that its not that hard. But without knowing what a static method or a field is, you will never develop a fully working gamemode. So thats what I had to say .. and now the checklist
    Checklist

    Beginner

    1. Know how to implement the api, do the plugin.yml stuff and run the plugin without mistakes
    2. onEnable/onDisable Method should get called and should print a line in the console
    3. Overwrite the onCommand Method, define a Player variable and create an easy command with no arguments.
    4. Do a second command, with a permission and a second argument (for example a gamemode cmd)
    5. Third command with an alias, a playerargument and the rest args saving in a String (msg command)
    6. Know how to work with the playervariable(effects, messages etc.)
    7. Create a seperate Listener class, register it trough the PluginManager and change the Join/Leave Messages
    8. Create a seperate CommandExecutor class and put your third command in
    9. Create a TapCompleter class to help the player with te syntax of a created command
    10. Know how to use Lists ans Maps in your plugins and how to get the instance of your main class into other classes by using a constructor. (java)
    11. Know how to create custom Itemstacks
    12. Know how to create living and nonleaving Entities with a name and other nbt-Attributes
    13. How to create a foreach loop to send every op player a message
    14. Knowing how to use reapeting and waiting schedulers to create xp countdowns
    15. Can work with the scoreboard to add teams, let people join them, modify their color and create objectives with custom numbers and a scrolling header ....
    16. Can Create a vanish plugin
    17. Have the knowledge to work with Inventories and complex Listeners to check, if a player pressed an item in the Inventory
    Advanced

    1. Know how to create custom YAML files in your plugin directory and how to Write/Read Data
    2. Work with Json to create a message with a hoverEvent and other stuff with Json
    3. Create a GsonFetcher to get the gameprofile of a player trough an url
    4. Skills to make flying text (mostly known as holograms - ArmorStands that are invisible with a visible name) and signs with changing text
    5. Know how to use Listeners and the World methods to create your own WorldEdit
    6. Make a command to set the joinposition, that stays after reload (File saves Location)
    7. Basic WorldGeneration knowledge and how to for example delete all standart trees
    8. Knowledge to do cool looking falling blocks constructions things blabla
    9. Work with randoms and the java switch module to give the Player a random item
    10. Create a small tnt run minigame
    11. work with flying objects with the velocity and know how to build jumppads
    12. Knowledge to create a custom multiverse plugin
    13. Know how to create own Listeners and develop an own ban/punishment plugin thats userfriendly with an inventory, warn messages, a chatmute and a kick option: All with permissions
    14. Can create own permissionmanager
    Professional
    1. Know how to use extern databases especially mysql know the SQL "language", know how to create good tables for their usage. How to Write/Read data and work with them in your plugin (only neccesary for network-plugins, death hating YAML files or just be a bit more profesional)
    2. Can create a leaderboad system, knowing simple math functions to get the K/D and the array knowledge to get the 10 best players. On a wall there should be their name, their place and their playerhead.
    3. Know how to create a one server based survivalgames plugin with a mapvoting system, a spectator mode to see their view and there inventory, usefriendly interfaces and a random chest filler ...
    4. Knowledge to create a minigame, that you can play on one server several times.
    5. Create a completely plugin, that oppens a window where you can see the console, the memory used, the current players online ...
    6. Know how the transision between the net/minecraft/server and the client works to intercept packages from the client cancel them in then pipeline, but also send the client custompackets trough reflection onto nms classes (Reflection == basicJava;)
    7. Know how to create a method to let reflections work independent from the bukkit version
    8. Knowledge to create a basic anti-killaura plugin with a custom packets sent fake player that spawn in the back of the player
    9. You can use the PluginMessageChannel in your bukkit plugin to send the player to another server or give the proxy infos about the server itself (could be advanced aswell)
    10. Can use the nms pathfinding method for entities
    Extra
    That was written down in only about one and a half hour. I would like to get some feedback about the idea, some points, maybe adds, because I forgot something worldchangig .... but yeah .. thanks for Listening
     
    Last edited: Aug 23, 2016
  2. Offline

    Zombie_Striker

    First, I would recommend changin the title to something that explains what this thread is for.

    Do you mean "holograms", or some other version of "fly Text"?

    Most plugins do not need SQL support, nor does this show that you are a 'professional' plugin creator.

    I would actually put this in "Advanced". It's actually quite easy to do "simple math", get the top ten players from an arraylist or map, and to set signs and player heads.

    'Create a complete plugin' is most likely what you were going for.

    Protocol Lib makes this easy. This should go in Advanced.

    Reflection does not need static objects. I think another way of wording this would be "Knowing how to use reflection", which is more of a "Java" thing than a "Bukkit" thing.

    player.sendSignChange(lines). This should go in Beginner.

    *cough* Bungee is not supported here *cough*. Not only that, but the method for sending players to different servers is actually quite easy (this then should go under Advanced). Hell, BCBroz did a video on this. It is super easy to do this.

    Besides all of this: Good job. This will help new coders understand 'Where they are' and what they should work on
     
  3. Offline

    InstanceofDeath

    Okey I respect all your feedback and I agree with with most of your points, except with the protoclib one. Everybody should know how does the data transision rlly works and then he can use ProtocolLib to save work. And yes I ment holograms, I just wanted to make it a bit more gerneral ;) As also thanks for your great feedback ..
     
    Last edited: Aug 23, 2016
  4. Offline

    Zombie_Striker

    @InstanceofDeath
    Sorry, was not me:p. I did not see the poll before. Just voted "good job".
     
  5. Offline

    InstanceofDeath

    Sry for that ;/
     
  6. Offline

    timtower Administrator Administrator Moderator

    And that is exactly why polls are a bad idea, certainly with those options.
     
    ChipDev likes this.
  7. Offline

    InstanceofDeath

    And thats why you deleted it? okey :€
     
  8. Offline

    ChipDev

    #16 in beginner
    That seems more of an advanced thing
    Also, its really hard to read beginner, advanced, and professional
     
  9. Offline

    InstanceofDeath

    Why should a vanish plugin be that hard? I will change the title-colors
     
  10. Offline

    Zombie_Striker

    @ChipDev
    Not really:
    Code:
    if(cmd.getName().equals("vanish")){
     for(Player player : onlineplayers){
      player.hidePlayer(sender);
     }
    }
     
  11. Offline

    ChipDev

    Oh.
    It's THAT simple? Wow.
    Why did people always use protocollib for this then? To hide from the server/tab?
     
  12. Offline

    Zombie_Striker

    @ChipDev
    I think this method only came out past 1.6. Before then, you had to use PL for this. Also, this method does not remove the player from other player's tab-list. You would need to use PL (or something like Util) to remove them.
     
  13. Offline

    InstanceofDeath

    I dont want to argue with you, but the hidePlayer removes the player from the tablist as expected.. The only problem is then, that it when the showPlayer method gets called, the scoreboard team colors are away (need to send them with an extra scoreboard packet)
     
Thread Status:
Not open for further replies.

Share This Page