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

Jak w kodzie dodac komende np. /testreload


Rekomendowane odpowiedzi

Opublikowano

Mam taki kod

package me.patryk9873.pomoc;

import java.io.File;
import java.util.ArrayList;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class Main
  extends JavaPlugin
  implements Listener
{
  public void onEnable()
  {
    getServer().getPluginManager().registerEvents(this, this);
    if (!new File(getDataFolder(), "config.yml").exists()) {
      saveDefaultConfig();
      this.reloadConfig();
      this.saveConfig();
    }
  }
  
  @EventHandler(priority=EventPriority.HIGH)
  public void onPlayerChat(PlayerCommandPreprocessEvent e)
  {
    for (String c : getConfig().getConfigurationSection("commands").getKeys(false)) {
      if (e.getMessage().startsWith(c))
      {
        e.setCancelled(true);
        showHelp(e.getPlayer(), "commands." + c);
        return;
      }
    }
  }
  
  private void showHelp(CommandSender sender, String path)
  {
    ArrayList<String> config = (ArrayList)getConfig().getStringList(path);
    for (String item : config)
    {
      item = ChatColor.translateAlternateColorCodes('&', item);
      sender.sendMessage(item);
    }
  }
}

Jak dodać do tego komende /pomocreload, żeby ta komenda przeładowywała config.yml?

Opublikowano

uzyc metody reloadConfig?

Po drugie na po cholere w onEnable przeladowujesz config i zapisujesz? 

I nie uzywaj na przemian odwolan do metod/pol raz z this raz nie, bo kod wyglada jak gowno. Trzymaj sie jednego stylu.

Opublikowano

Stwórz nową klase implementującą CommandExecutor, IDE powinno ci podpowiedzieć, żeby zaimplementować metode od komendy, później w środku tej metody wpisz to, co miała robić ta twoja komenda (pamiętaj o return false na końcu), potem w onEnable getCommand("twojakomenda").setExecutor(new nazwaklasyzkomenda());

Ostatnie co ci zostało, to w plugin.yml dodać coś takiego:

commands:

  twojakomenda:

Oczywiście to jest bardzo uproszczony opis tego, co masz zrobić :D

Opublikowano
Dnia 27.06.2017 o 17:38, Patrys003 napisał:

Mam taki kod


package me.patryk9873.pomoc;

import java.io.File;
import java.util.ArrayList;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class Main
  extends JavaPlugin
  implements Listener
{
  public void onEnable()
  {
    getServer().getPluginManager().registerEvents(this, this);
    if (!new File(getDataFolder(), "config.yml").exists()) {
      saveDefaultConfig();
      this.reloadConfig();
      this.saveConfig();
    }
  }
  
  @EventHandler(priority=EventPriority.HIGH)
  public void onPlayerChat(PlayerCommandPreprocessEvent e)
  {
    for (String c : getConfig().getConfigurationSection("commands").getKeys(false)) {
      if (e.getMessage().startsWith(c))
      {
        e.setCancelled(true);
        showHelp(e.getPlayer(), "commands." + c);
        return;
      }
    }
  }
  
  private void showHelp(CommandSender sender, String path)
  {
    ArrayList<String> config = (ArrayList)getConfig().getStringList(path);
    for (String item : config)
    {
      item = ChatColor.translateAlternateColorCodes('&', item);
      sender.sendMessage(item);
    }
  }
}

Jak dodać do tego komende /pomocreload, żeby ta komenda przeładowywała config.yml?

te onEnable ma jakiegos raka lol

@topic

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
	if (cmd.getName().equalsIgnoreCase("testreload")){
    	sender.sendMessage("Przeladowano!");
    	this.reloadConfig();
    	}
	return false; 
}

 

 

 

JAVA <3

 

Opublikowano
2 godziny temu, Entify napisał:

te onEnable ma jakiegos raka lol

@topic


@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
	if (cmd.getName().equalsIgnoreCase("testreload")){
    	sender.sendMessage("Przeladowano!");
    	this.reloadConfig();
    	}
	return false; 
}

 

w komendach bukkitowskich nie zwraca się false tylko true, bo inaczej silnik myśli, że coś poszło nie tak

warto też reloadConfig złapać w try, tak, żeby wyświetlać odpowiedni komunikat jeżeli się reload powiedzie lub nie

 

 

 

 

fKJeAI4.jpg

 

 

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...