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

[Problem] Tworzenie pluginu - błąd.


Zientez

Rekomendowane odpowiedzi

Opublikowano

Mam problem przy 2 linijkach:

package me.Zientez;
 
import java.util.List;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
 
public class CommandSMS implements CommandExecutor{
 
public static List<String> sms;
private FileConfiguration cfg = Main.instance.getConfig();
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
    Player p = (Player) sender;
     if (args[0].equalsIgnoreCase("vip")) {
     p.sendMessage(cfg.getStringList("sms_vip"));
     }
     p.sendMessage(cfg.getStringList("sms"));
return false;
}
 
}
 
Ta linijka wywala blad:
 
     p.sendMessage(cfg.getStringList("sms"));
 
Jestescie to w stanie naprawic? Dam +
Opublikowano

1. Albo nie zrobiłeś sb w configu stringa "sms"

2. Spróbuj zmienić na:

public static FileConfiguration cfg;

,a w onEnable() w twojej klasie "Main" dodać linijke:

CommandSMS.cfg = getConfig();

@edit:

 

3.Najprawdopodobniejsze zmień w:

p.sendMessage(cfg.getStringList("sms"));

na:

p.sendMessage(cfg.getString("sms"));

4. Może nie zapisałeś ani razu configa do felderu ;/

Opublikowano

for(String sms : cfg.getStringList("sms") ){

p.sendMessage(sms);

}

 

Koniec imprezy :)

Sieć serwerów Minecraft
Serwer Minecraft IP: play.myotherworld.net

HnS, Survival, FreeBuild, Parkour, MiniGry, Strzelnica, SkyBlock, AntFarm, Walls, TNTRun, Prison, Craftown oraz WIELE
logo_m.png

Opublikowano

Nie wiem, same getString dziala, ale GetStringList juz blad wywala. Jak wgralem na serwer plugin wpisalem /sms to nie dzialala komenda tak samo jak i /sms vip... Dodam, ze plugin wczytuje pod /pl, ale komendy nie dzialaja. Za skonfigururowanie Main, CommandSMS dam kilka lajkow! (Prosze podac sprawdzone odp). Na MPC daje nie wytabowane...

Main:

 

package me.Zientez;
 
import org.bukkit.command.CommandExecutor;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main instance;
public static Main plugin;
 
@Override
public void onDisable() {
System.out.print("Plugin zostal wylaczony"); 
}
 
@Override
public void onEnable() {
getConfig().options().copyDefaults();
saveConfig();
System.out.print("Plugin zostal uruchomiony");
 
getCommand("sms").setExecutor((CommandExecutor) new CommandSMS());
}
 
}
 
CommandSMS

package me.Zientez;
 
import java.util.List;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
 
public class CommandSMS implements CommandExecutor{
 
public static List<String> sms;
private FileConfiguration cfg = Main.instance.getConfig();
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
    Player p = (Player) sender;
     if (args[0].equalsIgnoreCase("vip")) {
     p.sendMessage(cfg.getStringList("sms"));
     }
     p.sendMessage(cfg.getStringList("sms"));
return false;
}
 
}
 
Config:
 
sms:
  - 'linia 1'
  - 'linia2'
sms_vip:
  - 'linia 1'
  - 'linia2'
 
Plugin.yml
 
name: Rangi
main: me.Zientez.Main
description: Informacje o Rangach
version: 1.0
 
commands:
 
  sms:
    description: Informacje o Rangach
Opublikowano

dostales 3 opcje rozwiazania problemu i zmien w onenable

getCommand("sms").setExecutor((CommandExecutor) new CommandSMS());

na getCommand("sms").setExecutor( new CommandSMS());
getConfig().options().copyDefaults();

saveConfig();

 

saveDefaultConfig()

i reloadConfig()

 

2 razy instancje robisz lel

 

skasuj to public static Main plugin;

 
dodaj instance = this
Opublikowano
package me.Zientez;
 
import org.bukkit.command.CommandExecutor;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main instance;
public static Main plugin;
 
@Override
public void onDisable() {
System.out.print("Plugin zostal wylaczony"); 
}
 
@Override
public void onEnable() {
getConfig().options().copyDefaults();
saveConfig();
System.out.print("Plugin zostal uruchomiony");
 
getCommand("sms").setExecutor(new CommandSMS());
}
 
}
package me.Zientez;
 
import java.util.List;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
 
public class CommandSMS implements CommandExecutor{
 
public static List<String> sms;
private FileConfiguration cfg = Main.instance.getConfig();
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
    Player p = (Player) sender;
    if (args[0].equalsIgnoreCase("vip")) {
    for(String sms : cfg.getStringList("sms") ){
               p.sendMessage(sms);
         }
    }
    for(String smsv : cfg.getStringList("smsvip") ){
               p.sendMessage(smsv);
}
return false;
}
 
}
sms:
  - 'linia 1'
  - 'linia2'
smsvip:
  - 'linia 1'
  - 'linia2'

Btw. getString działa tylko na 

sms: siema

A getStringList na 

sms:
    - 'siema'
    - 'h*j'

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


 

Opublikowano

To może po prostu daj takie coś

sms1: coś
sms2: siema
smsvip1: siema2
smsvip2: coś2
import java.util.List;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
 
public class CommandSMS implements CommandExecutor{
 
public static List<String> sms;
private FileConfiguration cfg = Main.instance.getConfig();
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
    Player p = (Player) sender;
    if (args[0].equalsIgnoreCase("vip) {
    p.sendMessage(cfg.getString("smsvip1"));
    p.sendMessage(cfg.getString("smsvip2));
}
p.sendMessage(cfg.getString("sms1"));
p.sendMessage(cfg.getString("sms2));
}
return false;
}
 
}

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


 

Opublikowano
package me.Zientez;
 
import org.bukkit.command.CommandExecutor;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main instance;
 
@Override
public void onDisable() {
System.out.print("Plugin zostal wylaczony"); 
}
 
@Override
public void onEnable() {
instance = this;
saveDefaultConfig();
System.out.print("Plugin zostal uruchomiony");
 
getCommand("sms").setExecutor(new CommandSMS());
}
 
}

Tak jak już ktoś pisał wyżej jedyne co ci może wywalać null to twoja instancja głównej klasy ...

Opublikowano

Ref Probowalem zrobic i nie dziala. Moglby ktos zedytowac Main CommamdSMS aby na 100% dzialalo? Dam Limit lajkow za to. Zrozumcie jestem poczatkujacy i z tym kodem sie mecze juz ponad tydzien... Prosze o pomoc.

Opublikowano

Suchy i Mistrz dzieki pomogliscie :D.

 

Tylko jak wpisze /sms to sie wyswietla "An interial error occured while attemping to perfom this command". Dodam, ze po wpisaniu /sms vip wyswietla sie z configu sms i smsvip, a powinno jedno sie wyswietlac z nich.

 

Logi z console podczas wpisania /sms:

org.bukkit.command.CommandException: Unhandled exception executing command 'sms' in plugin Rangi v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196) ~[minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) ~[minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:932) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at me.Zientez.CommandSMS.onCommand(CommandSMS.java:19) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[minecraft_server.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
... 13 more[code]
 


Main:


	package me.Zientez;
	 
	import org.bukkit.command.CommandExecutor;
	import org.bukkit.plugin.java.JavaPlugin;
	 
	public class Main extends JavaPlugin{
	 
	public static Main instance;
	 
	@Override
	public void onDisable() {
	System.out.print("Plugin zostal wylaczony"); 
	}
	 
	@Override
	public void onEnable() {
	instance = this;
	saveDefaultConfig();
	System.out.print("Plugin zostal uruchomiony");
	 
	getCommand("sms").setExecutor(new CommandSMS());
	}
	 
	}


 


CommandSMS:
 
[code]package me.Zientez;
 
import java.util.List;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
 
public class CommandSMS implements CommandExecutor{
 
public static List<String> sms;
private FileConfiguration cfg = Main.instance.getConfig();
 
@Override
    public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) {
    Player p = (Player) sender;
    if (args[0].equalsIgnoreCase("vip")) {
for(String sms : cfg.getStringList("sms") ){
p.sendMessage(sms);
}
    }
for(String smsv : cfg.getStringList("smsvip") ){
p.sendMessage(smsv);
}
return false;
}
 
}
 




Config:
 
/code]sms:
    - 'test'
    - 'test'
smsvip:
    - 'test'
    - 'test'

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...