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

[Plugin] ScoreTools - Projekt toolsów na twój serwer


Rekomendowane odpowiedzi

Opublikowano

* Nazwy listenerów małymi literkami :)

* Kod nie jest Twój, widzę tu sklejke

* fix colorków 

   @EventHandler
    public void onChatColor(final AsyncPlayerChatEvent e) {
        e.setMessage(e.getMessage().replaceAll("§", "&"));
    }
}

A w bukkicie masz metode ChatColor.trans...

 

* W komendach zastanów sie nad return false..

* dalej nie chce mi sie wypowiadać

 

Nie polecam pluginu, drogi sb napisz coś sam.

Opublikowano

1.

public static HashMap<Player, Location> lastLoc = new HashMap();

nie używa się obiektu gracza w mapkach, może to doprowadzić do niechcianych memory leaków ;p

 

2. 

  public static void setChat(String mode)
  {
    if (mode == "off") {
      chat = false;
    } else if (mode == "on") {
      chat = true;
    }
  }

weźcie mnie zabijcie... nie łatwiej:

  public static void setChat(boolean enabled)
  {
    chat = enabled;
  }

a jak już się uczepiasz tego on/off (bo w komendzie pewnie od razu dajesz argument do metody)

  public static void setChat(String mode)
  {
    chat = mode == "on" ? true : false;
  }

wiadomo że jak gracz wpisał inny mode no to c**j, po co to sprawdzać? :) lepiej od razu walnąć jak będzie inny że false. Ale najlepsza metoda jest na górze, i tylko sprawdzać w komendzie argumenty. 

 

3. Ah, ile razy ja ten EnchantUtil widziałem, sam go kiedyś używałem! :D

4. ale... po co ten PlayerManager? Bukkit.getOnlinePlayers() nie gryzie, szczególnie jeżeli to plugin na 1.11.

5. 

  @EventHandler(priority=EventPriority.LOW)
  public void onmove(PlayerMoveEvent e)
  {
    Player p = e.getPlayer();
    if (list.contains(p))
    {
      list.remove(p);
      Util.sendMessage(p, "&cTeleportacja zostala przerwana!");
    }
  }

a jak ktoś myszką ruszy? też ma anulować? na c**j?

6. 

  public static int getRandomInt(int min, int max)
  {
    Random rand = new Random();
    int randomNumber = rand.nextInt(max + 1 - min) + min;
    
    return randomNumber;
  }

nie twórz za każdym razem nowego randoma. + to można do jednej linijki skrócić. 

7. 

  public static void clearChat()
  {
    int i;
    for (Iterator localIterator = PlayerManager.getOnlinePlayers().iterator(); localIterator.hasNext(); i < 100)
    {
      Player p = (Player)localIterator.next();
      i = 0; continue;
      p.sendMessage(" ");i++;
    }
  }

trochę dekompiler zwalił ale nadal można zauważyć że robisz to źle. 

Kiedyś dawałem fajną klasę od czyszczenia czatu.

private static char[] chars;

static {
    char[] chars = new char[7680];
    Arrays.fill(chars, ' ');
}

<komenda> {
    for (Player player : Bukkit.getOnlinePlayers()) {
        player.sendMessage(String.valueOf(chars));
    }
}

100x szybsze! :D C**j że małe ilości, ale musimy być jak goto! to nas doprowadzi do przyszłości!

 

8. 

    if (!p.hasPlayedBefore())
    {
      ItemStack stonepickaxe = new ItemStack(Material.STONE_PICKAXE);
      ItemStack cookedbeef = new ItemStack(Material.COOKED_BEEF, 128);
      ItemStack enderchest = new ItemStack(Material.ENDER_CHEST);
      ItemStack boat = new ItemStack(Material.BOAT, 2);
      p.getInventory().addItem(new ItemStack[] { stonepickaxe });
      p.getInventory().addItem(new ItemStack[] { cookedbeef });
      p.getInventory().addItem(new ItemStack[] { enderchest });
      p.getInventory().addItem(new ItemStack[] { boat });
    }

nie twórz za każdym razem nowego itemstacka, pls.

9. 

  public static boolean containsIgnoreCase(String[] board, String s)
  {
    String[] arrayOfString = board;
    int j = board.length;
    for (int i = 0; i < j; i++)
    {
      String otherstring = arrayOfString[i];
      if (otherstring.equalsIgnoreCase(s)) {
        return true;
      }
    }
    return false;
  }
  
  public static boolean containsIgnoreCase(List<String> board, String s)
  {
    for (String otherString : board) {
      if (otherString.equalsIgnoreCase(s)) {
        return true;
      }
    }
    return false;
  }

może jestem zbyt tępy ale nie widzę sensu tych metod.

 

no i nie widzę też sensu tego pluginu, brak githuba, brak mavena, brak pomysłu, brak umiejętności, brak optymalizacji, no tak trochę rak. 

po co to komu

 

PS: Wytłumaczy mi ktoś doświadczony po c***a jest to "if (cmd.equals...)"? Czy bukkit tego nie sprawdza? Przecież rejestrujemy komendę jako getCommand("nazwa") i po co to sprawdzać, jak "cmd" nie może być inne niż ta "nazwa"... chyba? mi zawsze w pełni działało bez tego ifa.

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Gość dominik148
Opublikowano

 

 

        Util.sendMessage((CommandSender)p, " &7&m-------------&2&l NASZHC&7&l.PL &7&m-------------");
        Util.sendMessage((CommandSender)p, "  &7§aWitaj: &3" + p.getName() + ",");
        Util.sendMessage((CommandSender)p, "  &7§aGraczy online: &3" + Bukkit.getOnlinePlayers().size() + "/" + Join.max + ",");
        Util.sendMessage((CommandSender)p, "  &7§aTS3: §3NaszHc.pl");
        Util.sendMessage((CommandSender)p, "  &7§aFacebook: §3http://fb.com/NaszHc");
        Util.sendMessage((CommandSender)p, "  &7§aWWW: §3http://naszhc.pl.");
        Util.sendMessage((CommandSender)p, " &7&m-----------------------------------");

Jak ktoś ma sobie to edytować? 

 

 

 

Plugin bardzo słabo napisany, lepiej już użyć essentials'a :v

Opublikowano

1. ???

  public static boolean isInteger(String string)
  {
    return Pattern.matches("-?[0-9]+", string.subSequence(0, string.length()));
  }

bodajże @GotoFinal tlumaczyl dlaczego takie sprawdzanie jest idiotyczne

 

2.

  public static boolean getBarAPI()
  {
    if (getInst().getConfig().getBoolean("barapi")) {
      return true;
    }
    return false;
  }

nie rozumiem dlaczego odwołujesz sie do instancji klasy w metodzie, która znajduje się w tej klasie, poza tym, zwracanie booleana przy getBarAPI? raczej powinno zwracać jakąś instancję barapi, a nie boolean.

 

3. 

public static HashMap<Player, Location> lastLoc = new HashMap();

gdzie następnie w tej samej klasie:

  public static HashMap<Player, Location> getMap()
  {
    return lastLoc;
  }

pomijając scope i brak kontroli, deklarujesz publiczną mapkę i do tego tworzysz getter, który kompletnie nie ma sensu.

 

4.

return false;

zwracanie false w metodzie onCommand daje znać bukkitowi, że powinien wyprintować usage tej komendy z plugin.yml, zwracaj true jak komenda wykonała się poprawnie.

 

5.

  private static final HashMap<CommandSender, Player> lastPlayer = new HashMap();
  
  public static HashMap<CommandSender, Player> getLastPlayer()
  {
    return lastPlayer;
  }

kompletnie nie rozumiem tworzenia takiego zapisu w klasie komendy, jak już to powinno to być w osobnej klasie czy coś.

 

6.

List<org.bukkit.World> ws = Bukkit.getWorlds();

for (org.bukkit.World w : ws) {
            Util.sendMessage(p, "&c   '" + w.getName() + "'");
          }

nie lepiej

for(World w : Bukkit.getWorlds()) {
    //kod
}

? tworzenie listy jest bezsensowne w tej sytuacji, a jeżeli chcesz, żeby to ładniej wyglądało, to zastostuj streamy:

Bukkit.getWorlds().forEach(w -> p.sendMessage(w.getName()));

lub

Bukkit.getWorlds().forEach(w -> <stringbuilder>.append(w.getName()).append(" "));

i potem zwracasz za pomocą <stringbuilder>.toString() gotowy string z nazwami światów

ogólnie jest dużo błędów, jak np. nazewnictwo paczek lub package scope, ale rozwijaj dalej projekt, a może coś z tego wyjdzie

 

 

 

 

fKJeAI4.jpg

 

 

 

Opublikowano

Duplikat klas:

6566514928134361555313.png

 

Nie rozumiem klasy LogUtil skoro i tak nigdzie nie użyjesz jej "możliwości"

 

Nazwa klasy "Util" jest zbyt ogólna 

 

Util.sendMessage(p, " &7&m-------------&2&l NASZHC&7&l.PL &7&m-------------"); 

nazwe serwera chyba powinieneś pobierać z configu skoro udostępniasz ten plugin dla wszystkich? nie każdy ma nazwe serwera NASZHC?

 

ten config.yml gdzieś już widziałem... 

 

jaki sens ma czyszczenie itemów z ziemi skoro minecraft robi to sam ?

 

Czemu w TimeUtil znajduje się event?

Opublikowano
    String one = Main.getInst().getConfig().getString("wejsciowe-motd1");
    String two = Main.getInst().getConfig().getString("wejsciowe-motd2");
    String three = Main.getInst().getConfig().getString("wejsciowe-motd3");
    String four = Main.getInst().getConfig().getString("wejsciowe-motd4");
    String five = Main.getInst().getConfig().getString("wejsciowe-motd5");
    String seven = Main.getInst().getConfig().getString("wejsciowe-motd7");
    String six = Main.getInst().getConfig().getString("wejsciowe-motd6");

quality ta wiadomość powitalna

Opublikowano

Z ta wiadomością powitalna to przy starcie serwera zapisuj listę messages z configu do mapki, i wtedy for(String w : mapa){p.sendMeesage(fixcolors(w))}

czyli ma zapisywać mapkę... do mapki? Dobre sobie. 

 

polecam

List<String> strings = Main.getInstance().getConfig().getStringList("motd");

legit 100% no scam works 2017 no surveys hit

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...