-3

I made a plugin for my server. When you click on a sponge, a Menu appears. If you click on (for example) the diamond block with the name "deposit 5000" 5000 money will go into your bank account. You can withdraw or deposit money (like a atm machine). For the money options, I implemented Vault to make it easier. I put the plugin in my server and then I got an error. I really hope you can help me. Thanks alot!

This is the error:

[16:47:15 ERROR]: Could not load 'plugins\MTEconomy.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
ava:133) ~[craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
java:328) ~[craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:251) [craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.ja
va:289) [craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:71
8) [craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.Bukkit.reload(Bukkit.java:544) [craftbukkit.jar:git-Bukkit
-53fac9f]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
25) [craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:14
0) [craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServe
r.java:620) [craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(Craf
tServer.java:606) [craftbukkit.jar:git-Bukkit-53fac9f]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:
372) [craftbukkit.jar:git-Bukkit-53fac9f]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:3
36) [craftbukkit.jar:git-Bukkit-53fac9f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:6
28) [craftbukkit.jar:git-Bukkit-53fac9f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java
:536) [craftbukkit.jar:git-Bukkit-53fac9f]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_60]
Caused by: java.lang.NullPointerException
        at me.abbob1.MTEconomy.MenuInv.<init>(MenuInv.java:25) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 ~[?:1.8.0_60]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
 ~[?:1.8.0_60]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce) ~[?:1.8.0_60]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_6
0]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_60]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.jav
a:52) ~[craftbukkit.jar:git-Bukkit-53fac9f]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
ava:129) ~[craftbukkit.jar:git-Bukkit-53fac9f]
        ... 14 more

MenuInv class (main class):

package me.abbob1.MTEconomy;

import net.milkbowl.vault.economy.Economy;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

public class MenuInv extends JavaPlugin implements Listener {

    private Menu menu;
    
    Player p;
    PlayerInventory pi = p.getInventory();
    
    public static Economy econ = null;

    public void onEnable() {
        menu = new Menu(this);
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        if (!setupEconomy() ) {
            getLogger().severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
    }
    
    private boolean setupEconomy() {
    if (getServer().getPluginManager().getPlugin("Vault") == null) {
        return false;
    }
    RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
    if (rsp == null) {
        return false;
    }
    econ = rsp.getProvider();
    return econ != null;
}

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
        if (!(e.getAction() == Action.LEFT_CLICK_BLOCK))
            if (e.getClickedBlock()== null) {
                return;
            }
        if (e.getClickedBlock().getType() == Material.SPONGE)
            menu.show(e.getPlayer());
    }
    
    private Inventory inv;
    
    public void show(Player player) {
        player.openInventory(inv);
    }
}

Menu class:

package me.abbob1.MTEconomy;

import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.Plugin;

public class Menu implements Listener {

    private Inventory inv;

    public Menu(Plugin p) {

        inv = Bukkit.createInventory(null, 18, ChatColor.AQUA + "MineTopia Bank");

        ItemStack stickO = new ItemStack(Material.STICK);
        ItemMeta stickOMeta = stickO.getItemMeta();

        ItemStack stickS = new ItemStack(Material.STICK);
        ItemMeta stickSMeta = stickS.getItemMeta();

        ItemStack O1 = new ItemStack(Material.DIAMOND_BLOCK);
        ItemMeta O1Meta = O1.getItemMeta();

        ItemStack O2 = new ItemStack(Material.EMERALD_BLOCK);
        ItemMeta O2Meta = O2.getItemMeta();

        ItemStack O3 = new ItemStack(Material.IRON_BLOCK);
        ItemMeta O3Meta = O3.getItemMeta();

        ItemStack O4 = new ItemStack(Material.GOLD_BLOCK);
        ItemMeta O4Meta = O4.getItemMeta();

        ItemStack O5 = new ItemStack(Material.GOLD_INGOT);
        ItemMeta O5Meta = O5.getItemMeta();

        ItemStack O6 = new ItemStack(Material.GOLD_NUGGET);
        ItemMeta O6Meta = O6.getItemMeta();

        ItemStack S1 = new ItemStack(Material.DIAMOND_BLOCK);
        ItemMeta S1Meta = S1.getItemMeta();

        ItemStack S2 = new ItemStack(Material.EMERALD_BLOCK);
        ItemMeta S2Meta = S2.getItemMeta();

        ItemStack S3 = new ItemStack(Material.IRON_BLOCK);
        ItemMeta S3Meta = S3.getItemMeta();

        ItemStack S4 = new ItemStack(Material.GOLD_BLOCK);
        ItemMeta S4Meta = S4.getItemMeta();

        ItemStack S5 = new ItemStack(Material.GOLD_INGOT);
        ItemMeta S5Meta = S5.getItemMeta();

        ItemStack S6 = new ItemStack(Material.GOLD_NUGGET);
        ItemMeta S6Meta = S6.getItemMeta();

        stickOMeta.setDisplayName(ChatColor.AQUA + "Geld opnemen ->");
        stickO.setItemMeta(stickOMeta);

        stickSMeta.setDisplayName(ChatColor.AQUA + "Geld storten ->");
        stickS.setItemMeta(stickSMeta);

        O1Meta.setDisplayName(ChatColor.DARK_AQUA + "€5000 opnemen");
        O1.setItemMeta(O1Meta);

        O2Meta.setDisplayName(ChatColor.DARK_AQUA + "€1000 opnemen");
        O2.setItemMeta(O2Meta);

        O3Meta.setDisplayName(ChatColor.DARK_AQUA + "€100 opnemen");
        O3.setItemMeta(O3Meta);

        O4Meta.setDisplayName(ChatColor.DARK_AQUA + "€50 opnemen");
        O4.setItemMeta(O4Meta);

        O5Meta.setDisplayName(ChatColor.DARK_AQUA + "€10 opnemen");
        O5.setItemMeta(O5Meta);

        O6Meta.setDisplayName(ChatColor.DARK_AQUA + "€1 opnemen");
        O6.setItemMeta(O6Meta);

        S1Meta.setDisplayName(ChatColor.DARK_AQUA + "€5000 storten");
        S1.setItemMeta(S1Meta);

        S2Meta.setDisplayName(ChatColor.DARK_AQUA + "€1000 storten");
        S2.setItemMeta(S2Meta);

        S3Meta.setDisplayName(ChatColor.DARK_AQUA + "€100 storten");
        S3.setItemMeta(S3Meta);

        S4Meta.setDisplayName(ChatColor.DARK_AQUA + "€50 storten");
        S4.setItemMeta(S4Meta);

        S5Meta.setDisplayName(ChatColor.DARK_AQUA + "€10 storten");
        S5.setItemMeta(S5Meta);

        S6Meta.setDisplayName(ChatColor.DARK_AQUA + "€1 storten");
        S6.setItemMeta(S6Meta);

        inv.setItem(0, stickO);
        inv.setItem(3, O1);
        inv.setItem(4, O2);
        inv.setItem(5, O3);
        inv.setItem(6, O4);
        inv.setItem(7, O5);
        inv.setItem(8, O6);

        inv.setItem(9, stickS);
        inv.setItem(12, S1);
        inv.setItem(13, S2);
        inv.setItem(14, S3);
        inv.setItem(15, S4);
        inv.setItem(16, S5);
        inv.setItem(17, S6);
    }   
    
    public static Economy econ = null;
    
    Player p;
    PlayerInventory pi = p.getInventory();

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        if (!e.getInventory().getName().equalsIgnoreCase(inv.getName()))
            return;
        if (e.getCurrentItem().getItemMeta() == null)
            return ;

        if (e.getCurrentItem().getItemMeta().getDisplayName().contains("€5000 opnemen")) {
            e.setCancelled(true);
            EconomyResponse r = econ.withdrawPlayer(p.getName(), 10);
            if (r.transactionSuccess()) {
                pi.remove(Material.DIAMOND_BLOCK);
                p.sendMessage(ChatColor.GREEN + "Gelukt");
                return;
            }
            else {
                p.sendMessage(ChatColor.RED + "Je hebt niet genoeg geld bij je!");
                return;
            }
        }
    }
    
    public void show(Player player) {
        player.openInventory(inv);
    }
}

Plugin.yml:

name: MTEconomy
version: 1.0
main: me.abbob1.MTEconomy.MenuInv
description: MineTopia Economy for PallazarNetwork
depend: [Vault]
General Grievance
  • 4,555
  • 31
  • 31
  • 45
abbob1
  • 143
  • 1
  • 1
  • 12

1 Answers1

1

When you initialise MenuInv you get a NullPointerException.

See these 2 lines:

Player p;
PlayerInventory pi = p.getInventory();

The 2nd one throws the NullPointerExxception because p is null.

NickJ
  • 9,380
  • 9
  • 51
  • 74