Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Jak zaargumentować komendę w pluginie?


Zientez

Rekomendowane odpowiedzi

Opublikowano

Chce aby bylo /sms i wyskakiwal przyklad z confing.yml, chce aby bylo /sms vip i tez wyskakiwal przyklad z confing.yml. Zedytuje mi ktos to i poda w code? Jestem poczatkujacy i chce wiedziec jak zaargumentowac komende. Kto zrobi przyklad temu dam like! xD Juz bede wtedy wiedzial co i jak.

 

Glowna Klasa Main:

 

 

package me.Zientez;
 
import java.util.List;
 
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
public static List<String> sms;
 
@Override
public void onDisable() {
System.out.print("Plugin zostal wylaczony"); 
}
 
@Override
public void onEnable() {
        saveDefaultConfig();
System.out.print("Plugin zostal uruchomiony");
 
        sms = getConfig().getStringList("sms");
        getCommand("sms").setExecutor(new SmsCommand());
}
}
 
Klasa SmsCommand:
 
package me.Zientez;
 
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class SmsCommand implements CommandExecutor{
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
        Player player = (Player) sender;
        
        player.sendMessage("##################");
        for(String s: Main.sms){
            player.sendMessage("# " + ChatColor.translateAlternateColorCodes('&', s));
        }
            player.sendMessage("##################");
 
return false;
}
 
}
 
Confing.yml
 
sms:
    - '&cNumer &f- &6koszt &f- &2ilosc monet'
    - '&c99800 &f- &63,40zl &f-&2 30'
    - '&c99800 &f- &67,60zl &f-&2 120'
 
Plugin.yml
 
name: Rangi
main: me.Zientez.Main
description: Informacje O Rangach
version: 1.0
 
commands:
 
  sms:
    description: Informacje O Rangach
 

 

Opublikowano

W kodzie pluginu umieść

 

onEnable():

getConfig().options().copyDefaults(true);
saveConfig();

Teraz pobieranie informacji z configu:

getConfig().getString("sms")

W plugin.yml

sms: Koszt SMS'a to xxx

Przykładowe użycie:

player.sendMessage(ChatColor.YELLOW + "Informacje SMS: " + getConfig().getString("sms"));

Wstawić sobie już sam wstawisz ;)

Od dnia 1.11.2013r. 14:17 zobaczono moje posty licznik-56-90712-stat.png razy ;)


 


 

Opublikowano

@1361622928-U485574.pngup2 On pokazał, że chce ma tak w configu :

sms:
    - '&cNumer &f- &6koszt &f- &2ilosc monet'
    - '&c99800 &f- &63,40zl &f-&2 30'
    - '&c99800 &f- &67,60zl &f-&2 120'

Czyli znaczy, że chce wszystko to 

player.sendMessage(ChatColor.YELLOW + "Informacje SMS: " + getConfig().getString("sms"));

jest złe

 

Jeżeli chcesz kilka to po prostu bierzesz:

player.sendMessage(ChatColor.YELLOW + "Informacje SMS: " + getConfig().getMapList("sms"));

A jak np. chcesz dać do tego jakiś fany prefix to polecam coś w tym stylu

public void msg(CommandSender sender, String wiadomosc) {
sender.sendMessage(ChatColor.DARK_RED + "[FUNGAMES] " + ChatColor.WHITE + wiadomosc);
 }

Wywołujesz takim czymś

Main.msg(sender, chatcolor.GOLD + "Coś");

Oczywiście sendera używasz np. przy komendach bo np. przy eventach polecam:

Player p = e.getPlayer;

lub przy niektórych

Player p = (Player) e.getEntity;

Cały kod:

 

Główna klasa:

package me.Zientez;
 
import java.util.List;
 
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
@Override
public void onDisable() {
System.out.print("Plugin zostal wylaczony"); 
}
 
@Override
public void onEnable() {
        saveDefaultConfig();
System.out.print("Plugin zostal uruchomiony");
 
        getCommand("sms").setExecutor(new SmsCommand());
}
public void sms(CommandSender sender, String wiadomosc) {
        sender.sendMessage(ChatColor.DARK_RED + "[FUNGAMES] " + ChatColor.WHITE + wiadomosc);
 }
}

Klasa komendy:

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class SmsCommand implements CommandExecutor{
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
        Player player = (Player) sender;
        Main.sms(sender, ChatColor.YELLOW + "Informacje SMS: " + ChatColor.GREEN + getConfig().getStringList("sms"));
 
return false;
}
 
}

Pozdrawiam i liczę na like ;)

|| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 ||


 

Opublikowano

@Zientez Nie, /vip sms nie będzie działać xD Dałem Ci tylko na /vip 

 

 

//Edit: Znalazłem błąd ponieważ nie dodałem w klasie z komendą

private FileConfiguration cfg = Main.instance.getConfig();

i klasa z komendą powinna wyglądać tak:

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class SmsCommand implements CommandExecutor{
private FileConfiguration cfg = Main.instance.getConfig();
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
        Player player = (Player) sender;
        Main.sms(sender, ChatColor.YELLOW + "Informacje SMS: " + ChatColor.GREEN + cfg.getConfig().getStringList("sms"));
 
return false;
}
 
}

A jeżeli chcesz argumenty w komendzie to dodajesz jeszcze

if (args[0].equalsIgnoreCase("<nazwa argumentu>) {

PAMIETAJ! Argumenty liczysz od 0, czyli każdy kolejny to 1, 2, itp.

 

Jeżeli chcesz sprawdzić ilość argumentów wpisanych przez gracza piszesz:

if (args.lenght == <ilość>) {

Pozdrawiam i dalej liczę na like ;)

|| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 ||


 

Opublikowano

@Mistrz25566 kurde dodasz mi argument? Chce aby byla komemda /sms i /sms vip. I /sms brala by jakis przyklad z configu a /sms vip inny przyklad. I napisz co znaczy Private FileConfiguration cfg = Main.instance.getConfig(). W tym kodzie co podalem tej linijki nie bylo wiec to jest zbedne? Napisz co to oznacza i po co to jest. I sorry, ale dorobisz tez /sms vip? Jestem poczatkujacy... Dam like. A i cos tam pisales wyzej, ze kod jest zly itp. Kod zalamuje sie w przejrzystosci czy co? Jak cos prosze popraw dam like. I

Opublikowano

@Zientez

 

To tak:

Private FileConfiguration cfg = Main.instance.getConfig()

Tutaj sobie uprościłem dostęp do configu z Main. 

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class SmsCommand implements CommandExecutor{
private FileConfiguration cfg = Main.instance.getConfig();
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
        Player player = (Player) sender;
        Main.sms(sender, ChatColor.YELLOW + "Informacje SMS: " + ChatColor.GREEN + cfg.getConfig().getStringList("sms"));
 
return false;
}
 
}

To jest tylko na komendę /vip. Jeżeli chcesz kilka argumentów to piszesz:

if (args[0].equalsIgnoreCase("sms") {

i jeżeli to już masz to dalej:

cfg.getConfig().getStringList("sms");

Teraz trochę wytłumaczenia:

 

.getStringList - używasz wtedy, gdy masz w configu tak:

sms:
    - 'siema"
    - 'mam'
    - 'mam na wszystko wywalone'

.getString - używasz wtedy, gdy masz tylko jedną informację, czyli np.

sms: siema, mam na wszystko wywalone

Tutaj masz kod z argumentem:

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class SmsCommand implements CommandExecutor{
private FileConfiguration cfg = Main.instance.getConfig();
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
        Player player = (Player) sender;
        if (args[0].equalsIgnoreCase("vip") {
             p.sendMessage(cfg.getConfig().getStringList("sms"));
}
        Main.sms(sender, ChatColor.YELLOW + "Informacje SMS: " + ChatColor.GREEN + cfg.getConfig().getStringList("sms"));
 
return false;
}
 
}

Pozdrawiam i liczę na like.

 

 

//EDIT: Jak chcesz coś więcej to PW. Nie nabijajmy sobie postów ;)

|| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 ||


 

Opublikowano

Boze dziecko podstawy javy (ktorych pewnie nawet na oczy nie widziales) i pobieranie informacji z configu ...

 

if args.lemght<1

If args [0].equalsignorecase("costam")

i poboerasz z getconfig ().getstringlist ("vip") itd takie k***a trudne ???

Opublikowano

@asdfxxxNie nabijaj postów. Moim skromnym zdaniem to było zbędne. Każdy musi od czegoś zacząć c'nie? Sam przyznaj, że kiedyś sam nie wiedziałeś jak pobierać wiadomości z configu ;)

 

//EDIT:

Kurde przypomniałem sobie trochę co nie co o configu xD Tak, tak wiem jak to brzmi ;3  

Od jakiegoś czasu configi tworzę w inny sposób niż

 

getConfig().options().copyDefaults();
saveConfig();

Pozdrawiam 

|| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 ||


 

Opublikowano

@Mistrz25566 ostatni post mial byc do cb, ale ten ads sie wjeb*** z nie okreslonych przyczyn... Wiec tak podstaw Javy ucze sie od 2 dni. Wole sie zapytac niz kur** jak wiekszosc Copy Paste... Piszesz pluginy, dlatego ze masz pewnie kilku letnie doswiadczenie. Tez bym teraz wiedzial tyle co ty gdybym sie nie bral za lamana angielszczyzne uzywana w skryptach wiec pozdro ** @Mistrz25566 jak sie daje limit like? Aha i juz dodane jest /sms vip czy ja musze dodac?

//EDIT

Jak w inny sposob? W jaki?

Opublikowano

@Zientez Double post ;3

 

A w taki sposób:

 

public File getConfigFile() {
File file = new File(Bukkit.getPluginManager().getPlugin("FunGamesRPG")
.getDataFolder()
+ "config.yml");
return file;
}
Ten wycinek jest z pluginu na RPG, który w tej chwili tworzę i niedługo udostępnię. Jak chcesz @Zientez to możesz mi móc zobaczyć czy plugin nadaje się na upublicznienie ;3
A z tym kilkuletnim doświadczeniem to trochę przesadziłeś. Ja uczę się Javy od 6-7 miesięcy ;3

|| 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 ||


 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...