Skocz do zawartości
  • 0

Wasze zdanie na temat mojego kodu


kapi.

Pytanie

Witam, jestem w trakcie pisania pluginu na chat i mam póki co samego Maina i powiedzcie mi czy jest to dobrze napisane?

 

Spoiler

package pl.kacper.beChat;

import org.bukkit.Bukkit;
import org.bukkit.command.*;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

	private Player p;
	private String chat;

    public String getChat() {
		return chat;
	}
	public void setChat(String chat) {
		this.chat = chat;
	}
	public void onEnable(){
    	Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Enabled");
    }
    public void onDisable() {
    	Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Disabled");
    }

	public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){ // Wszystkie prawa zastrzeżone
		if(cmd.getName().equalsIgnoreCase("chat")){ // Wszystkie prawa zastrzeżone
			setP(Bukkit.getPlayerExact(args[0]));
			if(Bukkit.getPlayerExact(args[0]).hasPermission("beChat.usecommand")) {
				p.sendMessage("beChat!");
				p.sendMessage("/chat on - wlacz chat");
				p.sendMessage("/chat off - wylacza chat");
			}else{
				p.sendMessage("Nie posiadasz uprawnien");
				}
			if (arg == "on");
				setChat("true");
				p.sendMessage("Wlaczyles chat!");
				Bukkit.broadcastMessage("Chat zostal wlaczony!");
				return true;
			}else{
				if (arg == "off");
					setChat("false");
					p.sendMessage("Wylaczyles chat!");
					Bukkit.broadcastMessage("Chat zostal wylaczony!");
					return true;
		}
	}

	public Player getP() {
		return p;
	}

	public void setP(Player p) {
		this.p = p;
	}
}

 

Potem będę jeszcze pisał event na blokowanie chatu, aby nie można było pisać. @Ixidi

Edytowane przez KCPRRR
Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/
Udostępnij na innych stronach

13 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
package pl.kacper.beChat;

package tylko z małych :<

 

I zdecyduj się czy używasz tabów czy spacji... formatuj kod, każde IDE ma taką opcję

	public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){ // Wszystkie prawa zastrzeżone
		if(cmd.getName().equalsIgnoreCase("chat")){ // Wszystkie prawa zastrzeżone

co to ma znaczyć te komentarze xD

 

if (arg == "on");

średnik po ifie więc zakończyłeś ifa, a else niżej jest do linijki z sprawdzeniem nazwy komendy. Podobnie z off.
Jak byś formatował kod to by było widać, a każde IDE ma od tego nawet skrót klawiszowy. (nie znam do eclipse a pewnie używasz)
Do tego porównywanie stringów == jest zazwyczaj wynikiem błędu, bo nie porównujesz czy są takie same, tylko czy to ten sam string, a to różnica. powinno być equals.

 

 

Nie nazywaj zmiennych, a tyb bardziej getterów/setterów jednoliterkowcami, bo to nic nie mówi.
Do tego po co są ci tam te zmienne? i dlatego ten chat to zmienna typu String a nie boolean? Ani trochę nie rozumiem po co ci tam zmienna "p" z graczem, szczególnie że może być tylko jedna na cały plugin.

I po co te wiadomości w onEnable/Disable, bukkit i tak wysyla takie.

 

 

Więc ogólnie wszystko bez sensu

 

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153353
Udostępnij na innych stronach

  • 0

Miałem kilka żarówek świecących się, a nie umiem ręcznie naprawiać to skorzystałem przez to większość getterów i setterów.

W takim razie jak to poprawić/naprawić oraz mam kolejny błąd z kolejną klasą

 

Spoiler

package pl.kacper.bechat;

import org.bukkit.command.CommandSender;
import org.bukkit.event.player.AsyncPlayerChatEvent;

public class FunctionForChat {

	public void playerChat(AsyncPlayerChatEvent e){
		// Tu jak sprawdzić czy string chat jest ustawiony na false
		// Tu jak zablokowac chat dla gracza
		((CommandSender) e).sendMessage("Chat jest zablokowany");
	}
}

 

 

Edytowane przez KCPRRR
Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153364
Udostępnij na innych stronach

  • 0

To przy każdej żarówce jest wyjaśnienie, jak nie rozumiesz to googlowac i jak nie znajdziesz nic co rozumiesz to piszesz na forum najlepiej podając co znalazłeś sam by nikt ci tego napisał ponownie

 

A tak to zacznij od jakiś poradników samej Javy, bo ewidentnie nie ogarniasz nawet składni i podstawowych zasad.

 

Tak samo nie znasz podstaw bukkita, że klasa z listenerami musi implementować interfejs Listener, I że metody co są listenerami muszą mieć adnotacje event handler.

A tak to najlepiej mieć w tej klasie finalną zmienna z instancja głównej klasy przekazywaną przez konstruktor, tylko to pewnie musisz doczytać o samej javie by wiedzieć jak tego użyć.

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153373
Udostępnij na innych stronach

  • 0

if(chat.equals("false"){
    e.setCancelled(true);
    e.getPlayer().sendMessage("Chat jest zablokowany");
}

 

generalnie nie ma sensu robić ze stringów T/F bo od tego jest boolean i wtedy by to wyglądało tak
if(!chat){
(lub if(chat == false){ nw czy można tak zaprzeczyć wykrzyknikiem )

Edytowane przez Lloyd PL
()
Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153378
Udostępnij na innych stronach

  • 0
1 minutę temu, KCPRRR napisał:

@Lloyd PL a jak zapisać wtedy ten "boolean"?

Odbiegając od tematu; getPlayer cannot be resolved or is not a field

jak pytasz o takie rzeczy to ewidentnie znak że musisz poczytać o podstawach samego języka, bo nie możesz tu pytać o każdą głupotę, to podstawowa umiejętność - umieć szukać takich rzeczy. Tak trudno w google dać java boolean czy coś? 

A błąd masz chyba oczywisty, nie ma takiego pola/metody czy co tam robiles

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153384
Udostępnij na innych stronach

  • 0
59 minut temu, KCPRRR napisał:

@GotoFinal dla was jest to oczywiste, lecz ja dopiero zaczynam ;/

nie, ty pytasz się o gotowe rozwiązanie teraz, zamiast samemu poszukać, zobaczyć przykłady itd.

To różnica, pokaż swoja zaangażowanie to i my pomożemy

Edytowane przez GotoFinal
Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153391
Udostępnij na innych stronach

  • 0

Nie wiem jak to naprawić, więc proszę o naprawienie kodu... 

Podczas wrzucenia go na serwer występują błędy...

 

[11:48:13 INFO]: Set PluginClassLoader as parallel capable
[11:48:13 ERROR]: Could not load 'plugins\testowy chat.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `pl.kacper.bechat'
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:292) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:202) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:561) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.ClassNotFoundException: pl.kacper.bechat
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_144]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_144]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_144]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_144]
        at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_144]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        ... 7 more


Main(bez zmian);

 

Spoiler

package pl.kacper.bechat;

import org.bukkit.Bukkit;
import org.bukkit.command.*;
import org.bukkit.entity.Player;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

	private Player p;
	private String chat;

    public String getChat() {
		return chat;
	}
	public void setChat(String chat) {
		this.chat = chat;
	}
	public void onEnable(){
    	Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Enabled");
    }
    public void onDisable() {
    	Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Disabled");
    }

	public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){
		if(cmd.getName().equalsIgnoreCase("chat")){
			setP(Bukkit.getPlayerExact(args[0]));
			if(Bukkit.getPlayerExact(args[0]).hasPermission("beChat.usecommand")) {
				p.sendMessage("beChat!");
				p.sendMessage("/chat on - wlacz chat");
				p.sendMessage("/chat off - wylacza chat");
			}else{
				p.sendMessage("Nie posiadasz uprawnien");
				}
			if (arg == "on");
				setChat("true");
				p.sendMessage("Wlaczyles chat!");
				Bukkit.broadcastMessage("Chat zostal wlaczony!");
				return true;
			}else{
				if (arg == "off");
					setChat("false");
					p.sendMessage("Wylaczyles chat!");
					Bukkit.broadcastMessage("Chat zostal wylaczony!");
					return true;
		}
	}

	public Player getP() {
		return p;
	}

	public void setP(Player p) {
		this.p = p;
}
	public void playerChat(AsyncPlayerChatEvent e){
		if (chat.equals("false")){
		    e.setCancelled(true);
		    e.getPlayer().sendMessage("Chat jest zablokowany");
		}
}
}

 

 

plugin.yml: 

Spoiler

name: beChat
version: 1.0
description: This plugin is so 31337.
author: KCPRRR

main: pl.kacper.bechat
database: false
 
commands:
   chat:
    description: Zarzadzanie chatem!
    aliases: [czat]
    permission: beChat.usecommand
    usage: Uzyj /chat <on/off>
 
permissions:
  beChat.usecommand:
    description: Daje dostep do komendy /chat

 

 

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153406
Udostępnij na innych stronach

  • 0

w plugin.yml musisz podać nazwę głównej klasy, a ty podałeś tylko nazwę paczki, więc musisz dodać jeszcze klase. moje.package.GłównaKlasa

a tak to dalej nie poprawiłeś głównej klasy tak jak pisałem w pierwszym poście...

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153437
Udostępnij na innych stronach

  • 0

Proszę o pomoc mam kolejne błędy

 

[16:34:35 INFO]: Plugins (1): beChat
>chat
[16:34:38 WARN]: Unexpected exception while parsing console command "chat"
org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin beChat v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
        at pl.kacper.bechat.Main.onCommand(Main.java:29) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        ... 8 more
>chat on
[16:34:42 WARN]: Unexpected exception while parsing console command "chat on"
org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin beChat v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
        at pl.kacper.bechat.Main.onCommand(Main.java:30) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        ... 8 more
>chat off
[16:34:45 WARN]: Unexpected exception while parsing console command "chat off"
org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin beChat v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [Silnik.jar:git-PaperSpigot-978982e-12698ea]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
        at pl.kacper.bechat.Main.onCommand(Main.java:30) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea]
        ... 8 more

 

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153473
Udostępnij na innych stronach

  • 0

 

4 godziny temu, KCPRRR napisał:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at pl.kacper.bechat.Main.onCommand(Main.java:29) ~[?:?]

Błąd znajduje się w klasie Main w 29 linijce.

Kurczę, weź to całkiem wyrzuć i napisz od nowa. Nie potrzebne metody, po co jakieś setP, getP? To tylko prosty plug-in na chat. Ustawiasz private boolean chat; i potem zmieniasz chat = false/true

I tak już za dużo ci odpowiedziałem, zacznij sam szukać błędów i rozwiązań to szybko się nauczysz.

Odnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153520
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ę...