Using Static fields is wrong. If you need a "global" variable, put it in you plugin instance like this: public class MahPlugin { private...
Actually Bukkit.getLogger returns Minecraft's logger (see...
When unsure about how Bukkit does something, peek at the source code:...
Rather than using Player to store players who are playing, use something like ArenaPlayer: import org.bukkit.entity.Player; import lombok.Getter;...
Use getDataFolder(). It returns a File which points to plugins/[plugin name]/.
The same but with v1_5_R3 Actually you don't have to update your plugin for every version if you use reflection. See...
I think the best way to learn is trying to develop something. If you know the basics of Java and OOP, have a look at other's plugins at get ideas...
Change: money.put(p.getName(), cash += a); to money.put(p.getName(), money.get(p.getName()) + a); and get rid of that global "int cash" variable...
A bit offtopic: you might want to use a HashSet rather than an ArrayList: HashSet<Block> blocks = new HashSet<Block>(); public void addBlocks()...
When in doubt, why don't you look at the NMS source and see how they did it?
Are you aware that your call to Bukkit.clearRecipes() will not only remove your recipe, but also the default ones? Actually you can use getConfig...
I recommend you using: getServer().addRecipe(recipe); rather than: Bukkit.addRecibe(recipe); as I'm doing in the plugin, because it is more...
Have a look at this: https://github.com/socram8888/netherbrick I am creating a "prototype" NetherBrick ItemStack in a private variable, and then...
Separate names with a comma.