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] Moj kod ma poprawna skladnie? Bukkit API


xWatx

Rekomendowane odpowiedzi

Opublikowano

Witam, mam plugin i mam pytanie czy ten kod jest przejrzysty i dobrze zbudowany? Kod 0 errorow z console wszystko dziala jak nalezy, ale czy to tak ma  byc? Cos moze tam pominalem? TAk sie robi pluginy z confingiem czy sie uzywa innych metod?

 

Kod:

package me.Test;
 
import java.util.logging.Logger;
 
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{
 
Logger logger = Logger.getLogger("Minecraft");
 
@Override
public void onEnable() {
logger.info("Plugin wlaczony");
getConfig().options().copyDefaults(true);
saveConfig();
 
 
}
 
@Override
public void onDisable() {
logger.info("Plugin wylaczony");
saveConfig();
 
 
}
 
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args){
Player p = (Player) sender;
if(command.getName().equalsIgnoreCase("MOTD")){
p.sendMessage(ChatColor.RED + "MOTD: " + (getConfig().getString("MOTD")));
}
return false;
 
}
}
Opublikowano

Zacznijmy od tego że to nie twój kod tylko Kamilkime :D. Kod, mało rozbudowany, i radziłbym zrobić zmienną dotyczącą config'u :D

Pomogłem, strzel duży przycisk Lubię To!­

Opublikowano

@1361622928-U485574.pngmareqqqq.

 

where? kod kamilkime powiadasz?

 

http://pastebin.com/7R0LrY1W

 

przemyśl zanim znowu coś napiszesz.

 

@topic

 

Ładnie napisane możesz wywalić logger.info bo samo pisze, że włączony.

 

Świetny programista z tego KAMILKIME, implementuje commandexecutor, a operuje zwykłym command. do tego commandlabelem, zamiast rejestrowania komendy. Brak override dla funkcji z komendą yay!

A to mu tam po co ? :

public MotdSet(Main plugin){}

skoro i tak c***a z tego ma...

giphy.gif

Opublikowano

Świetny programista z tego KAMILKIME, implementuje commandexecutor, a operuje zwykłym command. do tego commandlabelem, zamiast rejestrowania komendy. Brak override dla funkcji z komendą yay!

A to mu tam po co ? :

public MotdSet(Main plugin){}

skoro i tak c***a z tego ma...

 

@Override nie jest wymagane.

 

BTW.

 

 

 implementuje commandexecutor, a operuje zwykłym command.

wut?

Opublikowano

boze ... skonczcie z tym kamilkime bo on nawet podstaw javy nie zna ...

nie uzywa sie takiego loggera tylko albo wbudowanego w bukkita albo system.out

komende nazywasz command.getname() a nie commandlabelem

i tekst z configu wczytuje sie przy ladowaniu pluginu a nie za kazdym razem jak uzyjesz komendy

Dlaczego blezur broni non premium ? 

bo sam nim jest

Opublikowano

@Override nie jest wymagane.

 

BTW.

wut?

Ale jak ktoś robi tutoriale to powinien uczyć dobrych nawyków.

 

A tutaj są same złe, a ten pusty konstruktor... to zmora debilizmu, potem każdy go daje, nie wie po co on jest, ale kimi tak robił, też nie wiedział po co, to i jak tak zrobię.

 

I ciekawe po jakiego muja ta linijka:

if(commandLabel.equalsIgnoreCase("motdset")){

i dlaczego uzywa commandLabela.

 

 

 

Witam, mam plugin i mam pytanie czy ten kod jest przejrzysty i dobrze zbudowany? Kod 0 errorow z console wszystko dziala jak nalezy, ale czy to tak ma  byc? Cos moze tam pominalem? TAk sie robi pluginy z confingiem czy sie uzywa innych metod?

 

Kod:

package me.Test;
 
import java.util.logging.Logger;
 
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{
 
Logger logger = Logger.getLogger("Minecraft");
 
@Override
public void onEnable() {
logger.info("Plugin wlaczony");
getConfig().options().copyDefaults(true);
saveConfig();
 
 
}
 
@Override
public void onDisable() {
logger.info("Plugin wylaczony");
saveConfig();
 
 
}
 
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args){
Player p = (Player) sender;
if(command.getName().equalsIgnoreCase("MOTD")){
p.sendMessage(ChatColor.RED + "MOTD: " + (getConfig().getString("MOTD")));
}
return false;
 
}
}

Ten logger to można zmienić na np plugin.getLogger(), czyli możesz tutaj spokojnie dać this.getLogger()

Albo jest też Bukkit.getLogger()

 

i onCommand powinno zwracać true, false powiadamia bukkita o pojawieniu się błędu.

 

Player p = (Player) sender;

Te castowanie jest nie potrzebne ;)

Wiadomość możesz spokojnie wysyłać bezpośrednio do sendera.

I działać będzie tak samo, ale za to nie wywali błędu z konosli.

 

 

Zapis configu też nie jest ci potrzebny, bo nic do niego nie dodajesz, tylko odczytujesz.

 

I jak masz jedną komendę to nie musisz sprawdzać jej nazwy ;) Tak samo nie trzeba używać "equalsIgnoreCase", zwykłe equals i taka sama nazwa jak w plugin.yml, ale to tam oszczędność na poziomie kilkunastu ns :P Mozna spokojnie olać, to tylko takie info ;)

 

 

boze ... skonczcie z tym kamilkime bo on nawet podstaw javy nie zna ...

nie uzywa sie takiego loggera tylko albo wbudowanego w bukkita albo system.out

komende nazywasz command.getname() a nie commandlabelem

i tekst z configu wczytuje sie przy ladowaniu pluginu a nie za kazdym razem jak uzyjesz komendy

podaj miejsce gdzie tu ktoś wczytuje za każdym razem coś z konfiguracji :D I piszesz niezbyt na temat, bo piszesz o kodzie kimi, a nie autora tematu.

Kimi może i ma jakieś dziwne saveConfig w kodzie, ale autor tematu nie :)

­

1438614356923701010629.png

 

Opublikowano

p.sendMessage(ChatColor.RED + "MOTD: " + (getConfig().getString("MOTD")));

 
 
nieee to sie wcale nie wczytuje  z kazdym uzyciem komendy 

Dlaczego blezur broni non premium ? 

bo sam nim jest

Opublikowano

 

p.sendMessage(ChatColor.RED + "MOTD: " + (getConfig().getString("MOTD")));

 
 
nieee to sie wcale nie wczytuje  z kazdym uzyciem komendy 

 

boże, proszę cię człowieku, wracaj na podstawy bukkita. Mam nadzieję że się jeszcze po prostu zaczynasz uczyć, bo takie braki w kimś kto już myśli że pisze byłyby straszne.

https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/plugin/java/JavaPlugin.java#L155-L160

    @Override
    public FileConfiguration getConfig() {
        if (newConfig == null) {
            reloadConfig();
        }
        return newConfig;
    } 

Jak widzisz, kochany, to wczytuje tylko raz, za pierwszym razem, co zapewne wykona się w onEnable z powodu save.

 

A zgadnij czym jest FileConfiguration? A raczej YamlConfiguration i MemorySection? 

Jednym wielkim wrapperem dla jednej wielkiej mapy...

To oznacze że wszystkie dane załadowe są raz, a potem są trzymane w map<String, Object>

Więc nic tu nie jest wczytywane...

 

Śmieszą te mnie te debile, co ładują wszystko z konfiguracji do własnej mapy, i mają dwie prawie takie same :D

Ładuje się głównie dla wygody, albo po to by coś z tymi danymi zrobić, np poskładać w itemy, lokacje, by tego nie robić za kazdym razem.

 

https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/configuration/MemorySection.java#L22

No popatrz, mapa!

 

 

No nic, pewnie się jeszcze uczysz ;) Ale jak nie jesteś pewien to nie pisz, bo tylko mącisz innym co się uczą w głowach, i potem wszyscy piszą jakieś brednie.

Mam nadzieję że za to nauczyłeś się czegoś nowego :D

­

1438614356923701010629.png

 

Opublikowano

Ja bym to tak zrobił: (Mini poprawki)

package me.Test;
 
import java.util.logging.Logger;
 
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{
 
 
@Override
public void onEnable() {
System.out.print("Plugin wlaczony");
getConfig().options().copyDefaults(true);
loadAll();
 
 
}
 
@Override
public void onDisable() {
System.out.print("Plugin wylaczony");
saveConfig();
 
 
}
 
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args){
if(Player instanceof sender){ // Moglem tu sie pomylic
if(command.getName().equalsIgnoreCase("MOTD")){
p.sendMessage(ChatColor.RED + "MOTD: " + getConfig().getString("MOTD"));
}
}
return false;
 
}
}

Pisze pluginy na zamówienie ! Skype: elfusion200

Opublikowano

Ale jak ktoś robi tutoriale to powinien uczyć dobrych nawyków.

 

A tutaj są same złe, a ten pusty konstruktor... to zmora debilizmu, potem każdy go daje, nie wie po co on jest, ale kimi tak robił, też nie wiedział po co, to i jak tak zrobię.

 

I ciekawe po jakiego muja ta linijka:

if(commandLabel.equalsIgnoreCase("motdset")){

i dlaczego uzywa commandLabela.

 

 

 

Ten logger to można zmienić na np plugin.getLogger(), czyli możesz tutaj spokojnie dać this.getLogger()

Albo jest też Bukkit.getLogger()

 

i onCommand powinno zwracać true, false powiadamia bukkita o pojawieniu się błędu.

 

Player p = (Player) sender;

Te castowanie jest nie potrzebne ;)

Wiadomość możesz spokojnie wysyłać bezpośrednio do sendera.

I działać będzie tak samo, ale za to nie wywali błędu z konosli.

 

 

Zapis configu też nie jest ci potrzebny, bo nic do niego nie dodajesz, tylko odczytujesz.

 

I jak masz jedną komendę to nie musisz sprawdzać jej nazwy ;) Tak samo nie trzeba używać "equalsIgnoreCase", zwykłe equals i taka sama nazwa jak w plugin.yml, ale to tam oszczędność na poziomie kilkunastu ns :P Mozna spokojnie olać, to tylko takie info ;)

 

 

podaj miejsce gdzie tu ktoś wczytuje za każdym razem coś z konfiguracji :D I piszesz niezbyt na temat, bo piszesz o kodzie kimi, a nie autora tematu.

Kimi może i ma jakieś dziwne saveConfig w kodzie, ale autor tematu nie :)

­

Dziękować, oszczędziłeś Mi zalania hejtem przez boskich programistów "bukkita" z mpc.

 

 

 

 

Ja bym to tak zrobił: (Mini poprawki)

package me.Test;

 

import java.util.logging.Logger;

 

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{

 

 

@Override

public void onEnable() {

System.out.print("Plugin wlaczony");

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

loadAll();

 

 

}

 

@Override

public void onDisable() {

System.out.print("Plugin wylaczony");

saveConfig();

 

 

}

 

public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args){

if(Player instanceof sender){ // Moglem tu sie pomylic

if(command.getName().equalsIgnoreCase("MOTD")){

p.sendMessage(ChatColor.RED + "MOTD: " + getConfig().getString("MOTD"));

}

}

return false;

 

}

}

 

Kek?

Słodko że pamiętacie o override dla onEnable onDisable, ale nauczcie się tego używać please...

if (sender instanceof Player) <- Wiesz jak to działa, ale nie masz pojęcia o co chodzi...

import loggera, i brak użycia xD? Wyczuwam ctrl + v.

getConfig().options().copyDefaults(true); -> Każdym włączeniem generujesz podstawowy config.

equalsIgnoreCase -> Po co do tego pakować duże litery, znów osoba która wie co robi, ale nie jak działa.

W sumie jeszcze po co samemu informować o włączeniu, skoro bukkit robi to sam wyświtalając że plugin jest loaded, lub nie.

Na oglądacie się takich kamilkimów, i potem tak to wygląda... Już nie mówiąc że ten kod nie ma nic wspólnego z tematem, bo jego kod setował, twój wyświetla xD I do tego : http://scr.hu/11lq/wenuzprawie jak korporacyjni programiści :v Ciekawe co już sprzedałeś o ile działa xD

 

giphy.gif

Opublikowano

@UP 

if(Player instanceof sender){ // Moglem tu sie pomylic 

Jeżeli player jest senderem/

 

if(sender instanceof Player)

Jezeli sender jest Graczem

 

Ehh, pomylilo mi się, a import loggera tylko ostrzezenie wyjebie, w kazdej chwili mozesz sb zaznaczyc i wcisnąć BACKSPACE

Pisze pluginy na zamówienie ! Skype: elfusion200

Opublikowano

@UP 

if(Player instanceof sender){ // Moglem tu sie pomylic 

Jeżeli player jest senderem/

 

if(sender instanceof Player)

Jezeli sender jest Graczem

 

Ehh, pomylilo mi się, a import loggera tylko ostrzezenie wyjebie, w kazdej chwili mozesz sb zaznaczyc i wcisnąć BACKSPACE

Nawet nie mam zamiaru z tego korzystać.

jeśli sender jest typem gracza, a nie jeśli gracz jest typem sendera.

giphy.gif

Opublikowano

Mam pytanie, funkcja "FileConfiguration  confing =  getConfig();" jest bardziej manualna od "getConfig().options().copyDefaults(true);"? Czym to się różni i w jakich okolicznościach używa się FileConfiguration? Sorrki za takie pytania, ale jestem poczatkujacy ;/.

Opublikowano

Mam pytanie, funkcja "FileConfiguration  confing =  getConfig();" jest bardziej manualna od "getConfig().options().copyDefaults(true);"? Czym to się różni i w jakich okolicznościach używa się FileConfiguration? Sorrki za takie pytania, ale jestem poczatkujacy ;/.

Tera to ja mam takie WAT?

Co ma możliwość pobrania i używania configu, do generowania jego podstawy xD?

Jak chcecie generować tylko jeśli nie ma, no to przecież, zróbcie sobie nie wiem choćby coś takiego:

File f = new File(getDataFolder() + File.separator + "config.yml");
if (!f.exists)
{
    getConfig().options().copyDefaults(true);
    saveDefaultConfig();
}

Pisane z palca ale na 99% śmiga jak trzeba.

giphy.gif

Opublikowano

Mam pytanie ten kod jest poprawny? Z pomoca bukkit.org napisalem plugin na confing ze zewnetrznymi klasami. Prosze sprawdzcie czy kod jest poprawny moze cos mi tak umknelo. Dziala wszystko dobrze, zero errorow.  Jak cos prosze o poprawe jesli uzylem zlej skladni kodu.

 

Main:

package me.Test;
 
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main plugin;
public static Main instane;
 
@Override
public void onEnable() {
getCommand("test").setExecutor(new TestCommandExecutor(this));
final FileConfiguration config = this.getConfig();
config.options().copyDefaults(true);
saveConfig();
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new Join(this), this);
 
 
 
}
 
@Override
public void onDisable() {
 
}
}

TestCommandExecutor:

package me.Test;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class TestCommandExecutor implements CommandExecutor{
 
Main plugin;
public TestCommandExecutor(Main instance) {
plugin = instance;
}
 
 
 
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
if(cmd.getName().equalsIgnoreCase("test")){
Player p = (Player) sender;
p.sendMessage(plugin.getConfig().getString("TEST"));
}
return true;
}
 
 
}
 

Join:

package me.Test;
 
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
 
public class Join implements Listener{
 
Main plugin;
public Join(Main instance) {
plugin = instance;
}
 
@EventHandler
public void antyBot(final PlayerJoinEvent e){
Player p = e.getPlayer();
if(p.hasPlayedBefore()){
e.getPlayer().sendMessage((plugin.getConfig().getString("JOIN")));
}
}
 
}
Opublikowano

 

Mam pytanie ten kod jest poprawny? Z pomoca bukkit.org napisalem plugin na confing ze zewnetrznymi klasami. Prosze sprawdzcie czy kod jest poprawny moze cos mi tak umknelo. Dziala wszystko dobrze, zero errorow.  Jak cos prosze o poprawe jesli uzylem zlej skladni kodu.

 

Main:

package me.Test;
 
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main plugin;
public static Main instane;
 
@Override
public void onEnable() {
getCommand("test").setExecutor(new TestCommandExecutor(this));
final FileConfiguration config = this.getConfig();
config.options().copyDefaults(true);
saveConfig();
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new Join(this), this);
 
 
 
}
 
@Override
public void onDisable() {
 
}
}

TestCommandExecutor:

package me.Test;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class TestCommandExecutor implements CommandExecutor{
 
Main plugin;
public TestCommandExecutor(Main instance) {
plugin = instance;
}
 
 
 
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
if(cmd.getName().equalsIgnoreCase("test")){
Player p = (Player) sender;
p.sendMessage(plugin.getConfig().getString("TEST"));
}
return true;
}
 
 
}
 

Join:

package me.Test;
 
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
 
public class Join implements Listener{
 
Main plugin;
public Join(Main instance) {
plugin = instance;
}
 
@EventHandler
public void antyBot(final PlayerJoinEvent e){
Player p = e.getPlayer();
if(p.hasPlayedBefore()){
e.getPlayer().sendMessage((plugin.getConfig().getString("JOIN")));
}
}
 
}

Twój Main wciąż za każdym razem tworzy podstawowy config, wiec nic nie można w nim zmienić bo po reloadzie i tak bedzie nadpisany. Co do reszty. Naprawde UJDZIE. Dalej sprawdzasz komendzie w executorze, chodż i tak już ją rejestrujesz? getConfig() jako final? Czyli nie można tego ruszyć lel, czy to ma sens? Po co plugin dla klas, skoro uzywać instance zdecyduj się. Paczki z małych liter. Event jako final ? Rajuśku ;o Robisz sobie : Player p = e.getPlayer(); używasz tego w ifie, poczym do wykonalnej ifa, robisz zwykłe pobranie znów? Najdziewniejsze ze w listenerze zrobiłeś inaczej ,w executorze inaczej, return true, przy wyjściu z komendy :O ?

giphy.gif

Opublikowano

@liarek123 dziekuje za wylapanie bledu. Jetsem poczatkujacy i wzorowalem sie na TuT'cie.

Moglaby jakas dobra osoba poprawic wszystkie bledy? Wzamian dam lajka.

Problem pierwszy jest taki że błędy, to jedno w tym całym xD Nie wzoruj się na poradnikach. Najpierw jakaś javastart cokolwiek, bo ty nawet nie wiesz jak działają zmienne ;3

giphy.gif

Opublikowano

Dziękować, oszczędziłeś Mi zalania hejtem przez boskich programistów "bukkita" z mpc.

 

 

 

Kek?

Słodko że pamiętacie o override dla onEnable onDisable, ale nauczcie się tego używać please...

if (sender instanceof Player) <- Wiesz jak to działa, ale nie masz pojęcia o co chodzi...

import loggera, i brak użycia xD? Wyczuwam ctrl + v.

getConfig().options().copyDefaults(true); -> Każdym włączeniem generujesz podstawowy config.

equalsIgnoreCase -> Po co do tego pakować duże litery, znów osoba która wie co robi, ale nie jak działa.

W sumie jeszcze po co samemu informować o włączeniu, skoro bukkit robi to sam wyświtalając że plugin jest loaded, lub nie.

Na oglądacie się takich kamilkimów, i potem tak to wygląda... Już nie mówiąc że ten kod nie ma nic wspólnego z tematem, bo jego kod setował, twój wyświetla xD I do tego : http://scr.hu/11lq/wenuzprawie jak korporacyjni programiści :v Ciekawe co już sprzedałeś o ile działa xD

 

 

Każdy sobie tłumaczy jak chce.

Sprzedałem już kilka pluginów, zleceniodawcy byli zadowoleni. Nie będę się tutaj kłócił, zapraszam na pw/skype.

Main:

package me.Test;
 
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main plugin;
public static Main instane;
 
TestCommandExecutor testcommand;
 
@Override
public void onEnable() {

saveConfig();
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new Join(this), this);
this.testcommand = new TestCommandExecutor(this);
 
 
 
}
 
}

TestCommandExecutor:

package me.Test;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class TestCommandExecutor implements CommandExecutor{
 
Main plugin;
public TestCommandExecutor(Main instance) {
plugin = instance;
this.plugin.getCommand("test").setExecutor(this);
}
 
 
 
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
Player p = (Player) sender;
p.sendMessage(plugin.getConfig().getString("TEST"));
return true;
}
 
}
 

Join:

package me.Test;
 
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
 
public class Join implements Listener{
 
Main plugin;
public Join(Main instance) {
plugin = instance;
}
 
@EventHandler
public void antyBot(PlayerJoinEvent e){
Player p = e.getPlayer();
if(p.hasPlayedBefore()){
p.sendMessage(plugin.getConfig().getString("JOIN"));
}
}
 

Teraz możecie mnie hejtować/pokazać gdzie zrobilem błąd.

Pisze pluginy na zamówienie ! Skype: elfusion200

Opublikowano

Każdy sobie tłumaczy jak chce.

Sprzedałem już kilka pluginów, zleceniodawcy byli zadowoleni. Nie będę się tutaj kłócił, zapraszam na pw/skype.

Main:

package me.Test;
 
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main plugin;
public static Main instane;
 
TestCommandExecutor testcommand;
 
@Override
public void onEnable() {

saveConfig();
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new Join(this), this);
this.testcommand = new TestCommandExecutor(this);
 
 
 
}
 
}

TestCommandExecutor:

package me.Test;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class TestCommandExecutor implements CommandExecutor{
 
Main plugin;
public TestCommandExecutor(Main instance) {
plugin = instance;
this.plugin.getCommand("test").setExecutor(this);
}
 
 
 
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
Player p = (Player) sender;
p.sendMessage(plugin.getConfig().getString("TEST"));
return true;
}
 
}
 

Join:

package me.Test;
 
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
 
public class Join implements Listener{
 
Main plugin;
public Join(Main instance) {
plugin = instance;
}
 
@EventHandler
public void antyBot(PlayerJoinEvent e){
Player p = e.getPlayer();
if(p.hasPlayedBefore()){
p.sendMessage(plugin.getConfig().getString("JOIN"));
}
}
 

Teraz możecie mnie hejtować/pokazać gdzie zrobilem błąd.

po co to: (w klasie Join)

Main plugin;
public Join(Main instance) {
plugin = instance;
}

po co to (w komendzie)

Player p = (Player) sender; 

a komenda nie zarejestrowana, + jakaś w uj nie potrzebna zmienna w głównej klasie.

TestCommandExecutor testcommand;

A do tego 2x, i do tego żadna z nich nie jest uzywana:

public static Main plugin;
public static Main instane;

I że się ludzie dają nabierać na takie pluginy na zlecenia, ledwo działa, napisane jak uj wie co, ale co tam... 

­

1438614356923701010629.png

 

Opublikowano

Każdy sobie tłumaczy jak chce.

Sprzedałem już kilka pluginów, zleceniodawcy byli zadowoleni. Nie będę się tutaj kłócił, zapraszam na pw/skype.

Main:

package me.Test;
 
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin{
 
public static Main plugin;
public static Main instane;
 
TestCommandExecutor testcommand;
 
@Override
public void onEnable() {

saveConfig();
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new Join(this), this);
this.testcommand = new TestCommandExecutor(this);
 
 
 
}
 
}

TestCommandExecutor:

package me.Test;
 
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
 
public class TestCommandExecutor implements CommandExecutor{
 
Main plugin;
public TestCommandExecutor(Main instance) {
plugin = instance;
this.plugin.getCommand("test").setExecutor(this);
}
 
 
 
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
Player p = (Player) sender;
p.sendMessage(plugin.getConfig().getString("TEST"));
return true;
}
 
}
 

Join:

package me.Test;
 
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
 
public class Join implements Listener{
 
Main plugin;
public Join(Main instance) {
plugin = instance;
}
 
@EventHandler
public void antyBot(PlayerJoinEvent e){
Player p = e.getPlayer();
if(p.hasPlayedBefore()){
p.sendMessage(plugin.getConfig().getString("JOIN"));
}
}
 

Teraz możecie mnie hejtować/pokazać gdzie zrobilem błąd.

To wciąż ma multum debilizmu. GoToFinal, i ja pare postów przed nim pisałem co jest źle.

@Edit nie zobaczyłem że GTF pierwszy.

giphy.gif

Opublikowano

Probowalem poprawiac, ale jak cos usunalem to w innej linii wtedy blad wywalalo... Prosze kogos kto caly kod poprawi i wrzuci tutaj w code lub na pastebin. Dzialajacy w 100%.

Opublikowano

public static Main plugin;
public static Main instane; 

wat????

wywal to main plugin 

w onenable nie ma instance - this;

Dlaczego blezur broni non premium ? 

bo sam nim jest

Opublikowano

@MakaPaka666 okay dzieki wywalilem i zero errorow. Usunalem takze "Final" z Main w onEnable i Join to dobrze? Niby wszystko dziala i teraz kod jest przejrzysty? 

 

Teraz napisalem mini plugin na inventory gui i jak wpisze /inventory ok otwiera sie, ale jak klikne na dirta nie canceluje zdarzenia i nie wylacza "Ekwipunku/Inventory", moglby ktos poprawic/powiedziec co zle robie? Prosze o pomoc.

 

Main:

 

package me.Test;
 
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin implements Listener{
 
public static Inventory myInventory = Bukkit.createInventory(null, 9, "Inventory");
 
static{
myInventory.setItem(0, new ItemStack(Material.DIRT, 1));
myInventory.setItem(8, new ItemStack(Material.GOLD_BLOCK, 1));
 
}
 
@EventHandler
public void onInventoryClick(InventoryClickEvent event){
Player player = (Player) event.getWhoClicked();
ItemStack clicked = event.getCurrentItem();
Inventory inventory = event.getInventory();
if (inventory.getName().equals(myInventory.getName())){
if (clicked.getType() == Material.DIRT){
event.setCancelled(true);
player.closeInventory();
player.getInventory().addItem(new ItemStack(Material.DIRT, 1));
}
}
}
 
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args){
Player player = (Player) sender;
if(command.getName().equalsIgnoreCase("inventory")){
player.openInventory(myInventory);
}
return false;
 
}
}

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...