Introduction To Onenable And Ondisable
Create the methods onEnable and onDisable inside the main class created in the previous section. It will look something like the following
The methods now exist, but they don’t do anything yet.Note: There is no reason to print a message such as ” has been enabled!” as bukkit will do this automatically.For more information about events, click here.
Learning How To Code Quickly Without Prior Experience
This option is suitable for 99% of people. Even if you need an extremely large solution like Mineplex or Hypixel, you still need to understand at least the basics so you wont need to ping your developer team each time you need to change a simple message in the code for you.
Coding is easier and faster than most people experience. The problem out there is a lack of quality resources, proven systems to follow and professional guidance to help you get unstuck. And as you probably know, if youre a beginner, youll get stuck a lot.
Getting Started With Coding For Free
Here are some great starting points for coding plugins. Minecraft updates rapidly and plugins break, so I really tried to write this article in an universal and future-proof way to avoid putting out a version-specific advice out there.
Understand This Before You Start
Minecraft is coded in Java. Everything we do will have to do with the Java programming language. If you never coded anything before, or you dont understand the Java programming language, you need to learn it before you can developer great Minecraft plugins. Yes, this tutorial is designed as a jumpstart right into production and we will not cover how Java works in general, but for most people you need to learn it simultaneously if you are serious about your progress.
How To Code Minecraft Plugins From Scratch
Ever wondered how to code your own Minecraft plugins and develop custom servers from the ground up? This article from the largest Minecraft education portal on Earth is designed to help you quickly.
A lot of Minecraft server owners are tired and frustrated of broken and limited plugins that cant do what they want them to do. The choice of existing plugins is large, however most of them are hard to configure, prone to bugs and errors, and their authors hard to reach or give up soon after the first version.
So is there a better alternative than to rely on the existing plugins?
There are two options to transform your ideas into reality:
#1 You find talented developers and build a great team#2 You learn how to code your own plugins fast and implement what you want, the way you want it
Warning: Theres a lot of psychology and principles oriented thinking in this article. To avoid failure, frustration, procrastination and overwhelm when coding, please read this article in full.
Recommended Reading: Brown Dye In Minecraft
How To Code A Minecraft Plugin
After many years of waiting, today I can officially announce that Minecraft Plugin Development has come to replit! With this tutorial you will understand all you need to know on how to create the basic boilerplate for a standard Java edition plugin for the Spigot API.
This guide is geared towards creating a plugin on repl.it but will also work for IDEs such as Intelij IDEA and Eclipse
For any assistance feel free to leave a reply or join my Discord server discord.gg/zfgVqZv
How To Create A Minecraft Plugin

After creating a Spigot server and installing all the appropriate programs, the “climax” arrived, that is, the creation of the plugin.
If you have followed the instructions I gave you in the previous chapter, you already have the IDE window available Intellij IDEA on your screen. Then press the button Skip the rest and set the default values and click on the New project. After that select the Java in the upper left corner and press the button twice Next.
At this point, give a project’s name and click the button Finalize. You can press on Close in case some “tutorial” windows appear on the screen.
After that, press the voice Archive in the upper left corner and click Project structure. Move, then, in the Libraries… click on the icon … + Click on the entry Java Select the server jar files and awards in OK.
Great, now you’ve successfully imported all the libraries out of the box. After that, close the library window, expand projects folder present left, do right-click in the folder src and select the items New menu that is proposed to you, and then assigning the name that you prefer .
After that you do right-click en package you just created, which is on the left, and select the elements Java class from the menu that is offered to you. So, hit the name you want and press OK.
Of course you have to end everything with support. In case JavaPlugin is not recognized, try reimporting the vase file from the server in the way I showed you before.
Don’t Miss: What Does Rotten Flesh Do In Minecraft
Das Pluginyml Anlegen Das Projekt Bauen Und Testen
Im plugin.yml schreiben wir alles das rein, das Minecraft braucht, um unser Plugin zu erkennen und im richtigen Moment auch aufrufen zu können. Dazu legen wir das File zuerst einmal an. Überraschenderweise klickst du wieder mit der rechten Maustaste auf das und wählst New und YAML File aus. Falls du diesen Eintrag nicht findest, wählst du im Menü ganz unten Other aus und wählst aus der Kategorie Other den Punkt YAML File aus.
Inzwischen kennst du den zweiten Schritt wahrscheinlich auch schon: Wir müssen das File benennen. Achte darauf, dass,
Und wenn du jetzt in den Project Explorer schaust, dann entdeckst du, dass unser geliebtes < default package> wiederauferstanden ist. Das ist auch richtig so, da Minecraft das plugin.yml genau an dieser Stelle sucht.
Jetzt haben wir wieder ein leeres File und dürfen hier die notwendigen Informationen eintragen:
Bevor du beginnst, das abzuschreiben, lies dir die folgenden Punkte bitte durch: Als erstes achte bitte darauf, dass nach den Doppelpunkten immer unbedingt ein Leerzeichen kommen muss.
What If I Want To Switch To Java In The Future
Skript doesnt interfere with Java or any of your other plugins at all. Skript is essentially just another plugin, so creating additional plugins wont have any impact. If you decide youd like to make the switch to Java at any point, you can simply begin creating new Java plugins.
Skript is a great introduction to programming because it follows the same concepts and logic as any other programming language. If you are an aspiring Java developer, it certainly is a good pathway to begin on.
Also Check: Bad Omen Minecraft Cure
Adding Your Command To The Pluginyml
You will also need to add the command to your plugin.yml file. Add the following to the end of plugin.yml:
name:Basicmain:< main package> .< main class> version:1.0author:< your IGN or name> commands:basic:description:This is a demo command.usage:/< command> permission:< plugin name> .basicpermission-message:You don't have < permission>
- basic – the name of the command.
- description – the description of the command .
- usage – the help dialog that users will see when you return false in the onCommand method. Write clearly, so that others can discern what the command is and how to use it.
- permission – This is used by some help plugins to work out which commands to show to the user.
- permission-message – This is output when the player attempts but does not have permission to use the command.
Note that yml files use 2 spaces for tabs, as the tab character will cause problems.
Creating Spigot Plugin Workspace
To create a Spigot workspace, open MCreator, and click the “+” button to create a new workspace.
If the plugin is properly installed, you will see the “Spigot plugin” type on the left side of the workspace creation window. Click on this option and enter workspace details.
After you create a new workspace, setup will be run and afterward, you can start making your mod.
Keep in mind the plugin is still in the development so not all mod elements or functionalities will be supported.
For more help, check the related pages listed below.
Recommended Reading: Can You Ride A Zombie Horse In Minecraft
Reference The Bukkit Api
Before you begin developing your plugin you will need to add the Bukkit API library to your project as a dependency, you can also add any other API’s you may want to use.
Double-click pom.xml, which is at the bottom of your project’s folder. Click the pom.xml tab at the bottom, and you should see something like this:
If you wish to use Java 6+ language features, you must specify the Java version that the project should be built on. Copy and paste this before < /project> :
< build> < plugins> < plugin> < groupId> org.apache.maven.plugins< /groupId> < artifactId> maven-compiler-plugin< /artifactId> < configuration> < source> 1.7< /source> < target> 1.7< /target> < /configuration> < /plugin> < /plugins> < /build>
You may use other levels, such as 1.8 for Java 8 or 11 for Java 11. Please note that according to BStats, a sizeable number of servers run Java 8 , so compiling for Java 11 will result in many server owners being unable to run your plugin. If you do use Java 1.8 or 11 features, Eclipse will suggest changing the language level when you hover over the code “error”. Do so.
Before the < /project> at the bottom, copy and paste this block :
< repositories> < repository> < id> spigot-repo< /id> < url> < /url> < /repository> < /repositories>
The spigot repository is the only working repository as the former repository “bukkit-repo” is down.
Next, before the < /project> at the bottom, copy and paste this block :
Creating Your First Project In Eclipse
Create the project itself
Create a package
Create the Main class
Also Check: How To Tp In Minecraft Xbox
Using A Separate Commandexecutor Class
The examples above just put the onCommand method into the plugin’s main class. For small plugins, this is fine, but if you’re writing something more extensive, it may make sense to put your onCommand method into its own class. Fortunately, this isn’t too hard:
- Create a new class within your plugin’s package. Call it something like MyPluginCommandExecutor . That class must implement the Bukkit CommandExecutor interface.
- In your plugin’s onEnable method, you need to create an instance of your new command executor class, and then make a call like getCommand.setExecutor , where “basic” is the command we want to handle, and myExecutor is the instance we created.
Best explained by example:
MyPlugin.java :
MyPluginCommandExecutor.java:
Notice how we send a reference of the main plugin object to MyPluginCommandExecutor. This allows us easy access to the main plugin objects’s methods if we need to.
By doing this, we can better organise our code – if the main onCommand method is large and complex, it can be split into submethods without cluttering up the plugin’s main class.
Note that if your plugin has multiple commands, you will need set the command executor for each command individually.
Ein Package Und Die Plugin

Du speicherst Java-Dateien in Packages ab. Wenn du im Project Explorer den Ordner öffnest, siehst du das Package < default package> . Damit Package-Namen aber sicherlich eindeutig sind, legst du besser ein neues Package an, mit io.coderdojo-linz.< dein-name> .firstplugin . Wenn du eine eigene Domain über die du im Netz erreichbar bist hast, dann kannst du auch die verwenden.
Also klickst du mit der rechten Maustaste auf und wählst aus dem Kontextmenü New und dann Java Package aus.
Im nun folgenden Fenster gibst du den Namen deines Packages, wie wir oben beschrieben haben, ein und klickst auf den Button Finish.
Jetzt ist das Package < default package> verschwunden. Das macht nichts, weil wir es derzeit echt nicht brauchen. Und nun musst du noch die Klasse anlegen, in der wir dieses Plugin programmieren. Dazu klickst du mit der rechten Maustaste auf das neu erstellte Package und wählst dann New und Java Class aus
Im darauffolgenden Fenster gibst du der neuen Klasse einen Namen und klickst auf Finish.
Jetzt solltest du in NetBeans ziemlich genau dieses Bild vor dir haben:
Die grauen Zeilen am Anfang des Files sehen wahrscheinlich ein wenig anders aus. Das macht aber nix, weil das ist ein Kommentar und Kommentare werden vom Compiler ignoriert. Man verwendet Kommentare, um etwas in sein Programm reinzuschreiben, das für Menschen wichtig ist, aber nicht für Computer. Du kannst das ausprobieren und in einer Zeile außerhalb eines Kommentars folgende Zeilen dazuschreiben:
Also Check: How To Make Cyan Clay
Console Commands Vs Player Commands
You may have noticed the CommandSender sender parameter above. CommandSender is a Bukkit interface which has two useful subclasses: Player and ConsoleCommandSender.
When you’re writing your plugin, it’s a very good idea to ensure that commands that can be run from the console actually work, and that commands that should only be run as a logged-in player really are only run as a logged-in player. Some plugins simply return if the sender is not a player , even when those commands make perfect sense from the console .
One way to do this is:
In this example, the command basic can be run by anyone – a logged-in player, or the server operator on the console. But the command basic2 can only be run by logged-in players.
In general, you should allow as many commands as possible to work on both the console and for players. Commands that need a logged-in player can use the mechanism in the example above to check that the CommandSender is actually a player before continuing. Such commands would generally depend on some attribute of the player, e.g. a teleportation command needs a player to teleport, an item giving command needs a player to give the item to…
If you want to get more advanced, you could do some extra checks on your command arguments so that e.g. a teleportation command could be used from the console if and only if a player’s name is also supplied.
Creating A Plugin From Scratch Gradle
-
Open IntelliJ IDEA.
-
Select Gradle in the popup.
-
If you want, select any additional libraries and frameworks you desire, for example Kotlin.
-
Make sure your Project SDK is set to some version of Java 8/1.8.
-
Enter your Group ID, Artifact ID, and Version.
-
Your Group ID should usually correspond to your Java package name. See Main Plugin Class for details.
-
Your Artifact ID should usually correspond to your plugin ID you chose earlier, e.g. myplugin.
-
Your Version is up to you. See Version Numbers for details.
The project will be created without a src directory. If you add java files to the incorrectlocation underneath the project, they will be ignored and not compiled, so it is a good idea toenable the checkbox âCreate directories for empty content rootsâ, found in:
Windows: File -> Settings -> Build,Execution,Deployment -> Gradle
Mac: IntellijIDEA -> Preferences -> Build,Execution,Deployment -> BuildTools -> Gradle
Enabling UseAuto-import in the same location will allow change to the gradle configuration toautomatically reload without IDEA prompting you each time.
Upon enabling those settings, a /src/main/java directory should be created, where you canstart creating your main plugin code files.
Don’t Miss: Can You Tame Pandas In Minecraft
Writing A Safe Oncommand
When writing an onCommand, it’s important that you don’t assume any information, such as the sender being a Player. Things to keep in mind:
Make sure the sender is a Player before casting
Using simple code like this makes it possible:
Check the arguments length
Don’t always assume the sender typed the correct amount of arguments.
Check if a Player is online before getting them
Sometimes you want to get another player by the name entered by the player. Always make sure the player is online!
If you need to modify a Player currently not online, the OfflinePlayer class provides basic manipulation methods.
Prepare Your Battle Plan And Mindset
No, the first step is, contrary to what most articles do, NOT downloading software and clicking a freaking button to create a new project right away. You can do this and give up, like most people after 1-4 weeks. Before you even touch something, you need to set your foundations right.
Start by planning out the next 30 days what days will you be able to dedicate to this, and how many hours? Any important exams, doctor appointments, job or client work, or holidays? Once you get that handled, set a specific goal for the month. It can be I will easily code a double-jump plugin in the next 30 days. It should be attainable and realistic to your level of experience.
Studies show that most people over-exaggerate their expectations so you should probably divide yours by 1/3 or more. Once you start seeing progress from something realistic it will give you a winners effect and a feeling of empowerment that will keep you motivated. If you set the bar too high you will crash and lose motivation once you get stuck, and then find yourself browsing Facebook or Youtube videos and soon give up on your plan. So really, keep this in mind !
You May Like: How To Make Big Mushrooms In Minecraft