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 dodać confing.yml do własnego pluginu?


Zientez

Rekomendowane odpowiedzi

Opublikowano

Jak wyzej chce aby wpisalo sie np. /sms i wyskakiwaly napisy ustawione z confing.yml. Napiszecie przyklad taki? Dam like! JAk cos podajcie kod w code jaki ma byc w confing.yml i jaki ma byc w klasie.

Opublikowano

Skrypt > potrzebujesz pluginy skript

command /sms:
	trigger:
		send "TEKST"             <----- Tu wpisujesz co chcesz aby pisało po wpisaniu na czacie /sms
                send "TEKST"
                send "TEKST"
                send "TEKST"

Opublikowano

Jeśli plugin to:

1. W zależności od kompilatora np.

  • NetBeans masz tak: PPM na "Source Packages" > New > Empty File > I musisz nazwac plik "config.yml"
  • Eclipse podobnie PPM na "Katalog twojego projektu" > New > Other... > General > File > i nazwać go "config.yml"

2. Teraz żeby się wygenerował za 1 razem dodajesz w onEnable() takie coś:

saveDefaultConfig();

A, teraz żeby pobrać:

 

Przykładowy config:

Teksty:
  line1: '1 linia'
Teksty_lista:
  - 'linia 1'
  - 'linia2'

Z głównej klasy musisz sb pobrać configa np. w onEnable:

 

i 1 Stringa:

String linia1 = getConfig().getString("Teksty.linia1");

 

,lub lista lini:

List<String> lista = getConfig().getStringList("Teksty_lista");

 

Liczę na like D:

Opublikowano

więc w pluginie stwórz pierw "file" o nazwie "config.yml" następnie w pluginie muszisz dać takie coś:

public void onEnable(){
    File file = new File(getDataFolder() + File.separator + "config.yml");
        if(!file.exists()) {
            this.getLogger().info("Generowanie config.yml...");
            this.getConfig().options().copyDefaults(true);
            this.saveConfig();
        }

        cfg = getConfig();  
}

Potem jeśli chcesz na temat wiadomości to robisz :

player.sendMessage(ChatColor.GREEN + cfg.getString ("sms");

wchodzisz w ten plik config.yml i tak wpisujesz 
 

sms: Text

No i chyba wszystko. 
Jak coś to poprawić.
Pisałem na sucho.

 

Pomogłem? Like ->>

531001454960877632167.png

Opublikowano

@kondziu98 jestem poczatkujacy i cos kumam, ale moglbys zrobic przyklad? Napisz jakas dwuczlonowa komende od zera np. /sms i jak sie wpisze to z Confing.yml bedzie bralo kolorowa wiadomosc "To jest Przyklad". A jak sie wpisze /sms vip to bedzie pisac "To jest Drugi przyklad" chodzi mi abys komemde /sms zaargumentowal. Komenda sms jest glowna a vip jest podglowne co razem daje /sms vip. Wiesz chodzi o komendy kilkuczlonowe. Prosze podaj w code co ma sie znajdowac w confingu a co ma sie znajdowac w class. Dam like

Opublikowano

Główna klasa:

public class GlownaKlasaTwojegoPluginu extends JavaPlugin{

    public static List<String> sms; 
            
    @Override
    public void onEnable(){
        saveDefaultConfig();
        
        sms = getConfig().getStringList("Teksty_lista");
        getCommand("sms").setExecutor(new SmsCommand());
    }     
}

Klasa komendy sms'a:

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: GlownaKlasaTwojegoPluginu.sms){
            player.sendMessage("# " + ChatColor.translateAlternateColorCodes('&', s));
        }
        player.sendMessage("##################");
        
        return true;
    }   
}

Przykładowy config:

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

 

Główna klasa:

public class GlownaKlasaTwojegoPluginu extends JavaPlugin{

    public static List<String> sms; 
            
    @Override
    public void onEnable(){
        saveDefaultConfig();
        
        sms = getConfig().getStringList("Teksty_lista");
        getCommand("sms").setExecutor(new SmsCommand());
    }     
}

Klasa komendy sms'a:

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: GlownaKlasaTwojegoPluginu.sms){
            player.sendMessage("# " + ChatColor.translateAlternateColorCodes('&', s));
        }
        player.sendMessage("##################");
        
        return true;
    }   
}

Przykładowy config:

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

Już mnie suchy wyręczył z tego co widzę jest dobrze napisane :)

Pozdrawiam

531001454960877632167.png

Opublikowano
public class GlownaKlasaTwojegoPluginu extends JavaPlugin{
 
    public static List<String> sms; 
            
    @Override
    public void onEnable(){
        saveDefaultConfig();

        sms = getConfig().getStringList("Teksty_lista");

    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args){
     Player p = (Player) sender;
      if(cmd.equalsIgnoreCase("sms")){
         if(args[0].equalsIgnoreCase("vip")) {
             for(String s: GlownaKlasaTwojegoPluginu.sms){
                p.sendMessage("# "+ChatColot.translateAlternateColorCodes('&', s));
             }
          return true;
         }
      }
    }    
}

Posłuzyłem się większości kodem @ suchy9145

żeby nie pisać tego samogo od początku

531001454960877632167.png

Opublikowano

Dzieki wam za pomoc. Aha @kondziu98 , w jednej classie nie bedzie to mialo wagi w przejrzystosci pluginu? W niczym nie zaszkodzi?

Nie na jedną komendę to wystarczy mieć chyba że piszesz większy plugin który w jednej klasie by miał z +100 linijek 

@Edit jeśli być chciał przejrzystość to zrób więcej spacji - Enterów :) 

 

Pozdrawiam

531001454960877632167.png

Opublikowano

@kondziu98 u mnie jednak nie dziala a tobie? :( Sprawdź czy Ci dziala bo moze cos ja spieprzylem...

 

Stworzylem klase Main pozniej plugin.yml i confing pododawalem tam to co trzeba i tylko w Main sa problemy. 


Pomoze Ktos?

Opublikowano

@kondziu98 u mnie jednak nie dziala a tobie? :( Sprawdź czy Ci dziala bo moze cos ja spieprzylem...

 

Stworzylem klase Main pozniej plugin.yml i confing pododawalem tam to co trzeba i tylko w Main sa problemy. 

Pomoze Ktos?

Pokaż cały plugin.yml

531001454960877632167.png

Opublikowano

@kondziu98

Zdazylem usunac juz caly projekt, ale mialem cos takiego.

 

 

main: me.Zientez
version: 1.0
name: sms
 
commands:
  sms:
    usage: /sms
    permission: ble.ble
    description: Ble Ble
Opublikowano

 

@kondziu98

Zdazylem usunac juz caly projekt, ale mialem cos takiego.

 

 

main: me.Zientez
version: 1.0
name: sms
 
commands:
  sms:
    usage: /sms
    permission: ble.ble
    description: Ble Ble

 

zrób takie coś

 

name: sms
main: me.Zientez
description: Opis pluginu
author: Zientez
version: 1.0
commands:
    sms:
        description: Kupuj VIPa

531001454960877632167.png

Opublikowano

@kondziu98 nie to nie chodzi o plugin.yml Jak podales kod, ktorym moge zrobic to w jednej klasie to gryzlo sie z tym, ze nie ma stworzonej klasy sms czy cos takiego. Ci dziala?

 

 

Sprawdz czy podales dobry kod w glownej klasie u mnie ta klasa nazywa sie Main. Zrob moze ten kod pod klase Main zamiast "GlownaKlasaTwojegoPluginu" moze ja cos spieprzylem.

Opublikowano

@kondziu98 nie to nie chodzi o plugin.yml Jak podales kod, ktorym moge zrobic to w jednej klasie to gryzlo sie z tym, ze nie ma stworzonej klasy sms czy cos takiego. Ci dziala?

Właśnie wrzuciłem to do eclipce i było kilka błędów oto prawidłowa kasa :)

 

 

import java.util.List;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Twoja_Klasa extends JavaPlugin{
 
    public static List<String> sms; 
            
    @Override
    public void onEnable(){
        saveDefaultConfig();

        sms = getConfig().getStringList("Teksty_lista");

    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args) {
     Player p = (Player) sender;
      if(cmd.equalsIgnoreCase("sms")){
         if(args[0].equalsIgnoreCase("vip")) {
             for(String s: Twoja_Klasa.sms){
                p.sendMessage("# "+ChatColor.translateAlternateColorCodes('&', s));
             }
          return true;
         }
      }
    }    
}

531001454960877632167.png

Opublikowano

@Zientez ja Ci teraz nie powiem tych linijek bo nie jestem na kompie. Ale to co tam bylo .sms i tam pisalo, po ang, ze nie znalazlo czegos tam... Mam pomysl. Moglbys napisac i podac tutaj w code glowna klase plugin.yml i confing.yml? Tylko uznajmy ze klase nazwiesz np. Main. Nie rob takiego czegos, ze pisze "GlownaKlasaTwojegoPluginu" tylko ze swoja klasa zrob. Bo ja cos zle robie. I jak zrobisz z klasa "Main" to moze bedzie dzialac.

Opublikowano

@Zientez ja Ci teraz nie powiem tych linijek bo nie jestem na kompie. Ale to co tam bylo .sms i tam pisalo, po ang, ze nie znalazlo czegos tam... Mam pomysl. Moglbys napisac i podac tutaj w code glowna klase plugin.yml i confing.yml? Tylko uznajmy ze klase nazwiesz np. Main. Nie rob takiego czegos, ze pisze "GlownaKlasaTwojegoPluginu" tylko ze swoja klasa zrob. Bo ja cos zle robie. I jak zrobisz z klasa "Main" to moze bedzie dzialac.

Ojej to zmienisz tylko kalse i wtedy ci działa. Ja sprawdzałem kod i mi wszystko działało było bez zarzutu.

Klasa Main:

import java.util.List;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{
 
    public static List<String> sms; 
            
    @Override
    public void onEnable(){
        saveDefaultConfig();

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

    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args) {
     Player p = (Player) sender;
      if(cmd.equalsIgnoreCase("sms")){
         if(args[0].equalsIgnoreCase("vip")) {
             for(String s: Main.sms){
                p.sendMessage("# "+ChatColor.translateAlternateColorCodes('&', s));
             }
          return true;
         }
      }
    }    
}

plugin.yml

name: sms
main: me.Zientez.main
description: Opis pluginu
author: Zientez
version: 1.0
commands:
    sms:
        description: Kupuj VIPa 

config.yml

sms:
  - '&aText_1'
  - '&bText_2'
  - '&cText_3'

531001454960877632167.png

Opublikowano

@kondziu98 na razie zero errorow po wklejeniu twojego kodu. Mam pytanie jak wyimportowales:

p.sendMessage("# "+ChatColor.translateAlternateColorCodes('&', s));

bo u mnie nie ma opcji import

 

Aha i moglbys zedytowac ten kod, ze jak gracz wpisze /sms to bedzie jakas wiadomosc bralo z confingu. A jak gracz wpisze /sms vip to inna wiadomosc bedzie bralo z confingu. Sorry, ze cb mecze xD

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...