Skocz do zawartości
  • 0

Vault, usuwanie pieniedzy


Necekez1

Pytanie

Pomoze ktos dodac ze jesli gracz ma 1000$ to wykonuje sie ta komenda i zabiera mu te 1000$ jesli nie to wyskakuje wiadomosc ze nie ma??

 

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("test")) {
            Player player = null;
            if(player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.LAPIS_BLOCK) {
                player.sendMessage("Zostales uleczony");
                Player p = (Player) sender;
                p.setHealth(20);
                econ.depositPlayer(p.getName(), -1000);
            }
        }
        return false;
    }


}

 

Odnośnik do komentarza
Udostępnij na innych stronach

13 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("test")) {
        	if(!(sender instanceof Player)) {
        		return false;
        	}
        	Player player = (Player)sender;
        	if(!econ.has(player, 1000)) {
        		player.sendMessage("Nie masz 1000$!");
        		return true;
        	}
            if(player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.LAPIS_BLOCK) {
                player.sendMessage("Zostales uleczony");
                Player p = (Player) sender;
                p.setHealth(20);
                econ.withdrawPlayer(player, 1000);
            }
        }
        return false;
    }
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 minuty temu, Zbucki napisał:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("test")) {
        	if(!(sender instanceof Player)) {
        		return false;
        	}
        	Player player = (Player)sender;
        	if(!econ.has(player, 1000)) {
        		player.sendMessage("Nie masz 1000$!");
        		return true;
        	}
            if(player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.LAPIS_BLOCK) {
                player.sendMessage("Zostales uleczony");
                Player p = (Player) sender;
                p.setHealth(20);
                econ.withdrawPlayer(player, 1000);
            }
        }
        return false;
    }
}

 

Przy econ wyskakuje mi cannot resolve symbol econ

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

 

Musisz zarejestrować Vault.

Dodaj tą metodę do głównej klasy:

private boolean setupEconomy() {
  if (this.getServer().getPluginManager().getPlugin("Vault") == null) {
     return false;
  }
  RegisteredServiceProvider<Economy> rsp = RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
  if (rsp == null) {
    return false;
  }
  econ = (Economy)rsp.getProvider();
  return econ != null;
}

public static Economy getEconomy() {
  return econ;
}

Te pole również dodaj gdzieś na początku głównej klasy:

private static final Economy econ;


I przy włączaniu serwera(onEnable) zarejestruj Vault'a:

public void onEnable(){
  if (!setupEconomy()) {
    getLogger().warning("Nie znaleziono pluginu Vault");
    getServer().getPluginManager().disablePlugin(this);
    return;
  }
}

 

I wtedy zmień sobie w komendzie:
 

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("test")) {
        	if(!(sender instanceof Player)) {
        		return false;
        	}
        	Player player = (Player)sender;
        	if(!NazwaKlasyGlownej.getEconomy().has(player, 1000)) {
        		player.sendMessage("Nie masz 1000$!");
        		return true;
        	}
            if(player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.LAPIS_BLOCK) {
                player.sendMessage("Zostales uleczony");
                Player p = (Player) sender;
                p.setHealth(20);
                NazwaKlasyGlownej.getEconomy().withdrawPlayer(player, 1000);
            }
        }
        return false;
    }
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Tak to ma wygladac??

 

package pierwszyplugin.minerp.czokomoc.plugin.Minerp.czokomoc;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;

public final class plugin extends JavaPlugin implements Listener {

    private Object RegisteredServiceProvider;

    @Override
    public void onEnable(){
        if (!this.setupEconomy()) {
            getLogger().warning("Nie znaleziono pluginu Vault");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
    }

    private static final Economy econ;
    private <Economy> boolean setupEconomy() {
        if (this.getServer().getPluginManager().getPlugin("Vault") == null) {
            return false;
        }
        RegisteredServiceProvider<Economy> rsp = RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }
        econ = (Economy)rsp.getProvider();
        return econ != null;
    }

    public static Economy getEconomy() {
        return econ;
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("brudnyulecz")) {
            if(!(sender instanceof Player)) {
                return false;
            }
            Player player = (Player)sender;
            if(!econ.has(player, 1000)) {
                player.sendMessage("Nie masz 1000$!");
                return true;
            }
            if(player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.LAPIS_BLOCK) {
                player.sendMessage("Zostales uleczony");
                Player p = (Player) sender;
                p.setHealth(20);
                econ.withdrawPlayer(player, 1000);
            }
        }
        return false;
    }
}

Screeny u mnie: https://imgur.com/a/0QNB1uh

 

Oraz getProvider cannot resolve method

Edytowane przez Necekez1
Glicz

Łączę posty.

Notatka dodana przez Glicz

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Bo parametr, który masz podać to nie jest klasa, tylko obiekt tej klasy. Nie znam się za bardzo na Vault, ale spróbuj dać zamiast Economy.class, new Economy(). Mogę się mylić... ale warto spróbować. Jak to nie zadziała to daj po prostu kod, bo tak po skrawku to nie za bardzo się pomaga.

Edytowane przez krzmaciek
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
W dniu 17.08.2021 o 13:51, Necekez1 napisał:

Dzieki za pomoc ale teraz jest takie cos https://imgur.com/a/7rMeE9U

Po prostu usuń klase Economy.class którą stworzyłeś w swoim projekcie ;d

Edytowane przez JanekMaSkrypta_
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...