Skocz do zawartości

yooniks

Użytkownik
  • Zawartość

    692
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Ostatnia wygrana yooniks w dniu 3 września

Użytkownicy przyznają yooniks punkty reputacji!

7 obserwujących

O yooniks

  • Tytuł
    Wyjadacz III

Informacje

  • Płeć
    Nie podano
  • Hobby
    just someone who likes java
  • Nick w MC
    yooniks_tendev

Metody kontaktu

Ostatnie wizyty

2426 wyświetleń profilu
  1. yooniks

    [Optymalizacja] Automessage oraz inventory

    rozszerz klase o runnable, a wiadomosci dostarcz od razu w konstruktorze no i wtedy mozesz jeszcze od razu je skoloryzować i tyle, a w run() juz tylko sprawdzasz size listy itd no i: mozesz puszczac to async i uzyc od razu this.getServer().getScheduler() a nie Bukkit.getScheduler(), no ale jak kto woli, i tak wyjdzie na to samo nie rozumiem po co to printujecie =/ przeciez sam serwer juz to robi podczas wlaczania pluginu.. do tego println, a przeciez mozesz uzyc loggera ktory jest juz w javaplugin stringi porownujemy equals(), a enumy enum equals czyli == a itemshop.create.. to juz kompletnie fuj = ( uzyj jakiegos api, do tego masz przeciez petle, a ty odwalasz cos takiego: lore mozesz dac juz wgl do configu i te inventory wczytuj sobie tylko raz =/ przeciez przy kazdym wywolaniem tej metody robisz pelno akcji =/ sprobuj to skrocic, czyli przy onenable laduj to tylko raz, a w create...() tylko otwieraj inventory graczowi ogolnie te tworzenie itemkow wyglada okropnie, jest pelno api gotowych do gui =( np. opengui i ogolnie cancelowac event mozesz od razu po sprawdzeniu nazwy inventory, a nie przy kazdym sprawdzaniu nazwy itemu bo i tak wychodzi na to samo, do tego sprawdzaj czy item ma itemmete i displayname bo sie zdziwisz jak ci zacznie rzucac nulle
  2. yooniks

    kolejny problem z hash mapa

    eh.. tak jest jak piszesz pluginy pod mc, a jedyne co widziales to kod z dekompilatora public class PlayersHolder { private final Set<UUID> players = new HashSet<>(); private boolean contains(UUID uuid) { return this.players.contains(uuid); } private void add(UUID uuid) { this.players.add(uuid); } private void remove(UUID uuid) { this.players.remove(uuid); } } (zmien private na public bo robilem na szybko) private final PlayersHolder playersHolder = new PlayersHolder(); @EventHandler public void onJoin(PlayerJoinEvent event) { this.playersHolder.add(event.getPlayer().getUniqueId()); } @EventHandler public void onQuit(PlayerQuitEvent event) { this.playersHolder.remove(event.getPlayer().getUniqueId()); } //dodaj sobie jakis listener i wtedy: if (this.playersHolder.contains(player.getUniqueId()) { player.sendMessage("contains!"); }
  3. yooniks

    Jak zrobić "współpracę" pluginów?

    tak, bo wcale funnyguilds nie ma swojego repo, maven taki trudny =/ i ten depend tez niepotrzebny, mozna wykrywac czy plugin istnieje - jak tak to dodaje zmienne do scoreboarda z fg i nie wiem czy funnyguilds uzywa placeholderapi, ale jezeli tak to mozna uzyc pewnie jego zmiennych do papi, bedzie latwiej mozesz dodać tą "jarkę" jako zwykłą biblioteke, tak jak dodawałeś silnik, no chyba, że używasz intellij i korzystasz z mavena, to przecież na githubie fg jest podane repo https://github.com/FunnyGuilds/FunnyGuilds - nikt nie bedzie cie tutaj uczyl kazdej rzeczy od zera - zacznij pierw z czyms prostym bez mc, a potem dopiero zacznij z mc, bo nic nie potrafisz i ze wszystkim przychodzisz tutaj, a tutaj nikt cie nie bedzie uczył, bo nie ma ochoty, tutaj sie pomaga w np. problemach z kodem
  4. yooniks

    prosty przyklad zmiennej boolean true/false

    moze zacznij od nauki programowania obiektowego bez mc?
  5. yooniks

    hash mapa

    tak jak wyzej ^ do tego nie trzymaj implementacji mapy: HashMap<K, V> map = new HashMap<>(); tylko interfejs: Map<K, V> map = new HashMap<>(); tutaj nie ma to prawie znaczenia, ale rób to tak jak napisałem, bo potem wejdzie ci to w nawyk i bedziesz, źle robił =/ tutaj masz lepiej wytlumaczone i przykład: https://www.p-programowanie.pl/paradygmaty-programowania/zasady-solid/ (spójrz na linkov substitution) nick gracza może nie być w mapce i wtedy rzuca nulla =( czemu castujesz playera do playera? przeciez nawet IDE pewnie ci pokazuje ze to jest niepotrzebne.. czemu z playera pobierasz jeszcze raz playera i dopiero jego displayname? po co trzymać true/false w mapce skoro możesz użyć coś w stylu listy, setów i wtedy tylko sprawdzasz czy jest - jezeli tak to true, jezeli nie to false i zamiast putowania false/true to wyrzucasz/wrzucasz do listy/seta czy czegos tam no i ten task z kickaniem tez chyba niepotrzebny, a efekt i tak słaby daje bo 20L to 1 sekunda, 6L = 6/20 sekundy więc prawie niewidoczne, a niepotrzebnie to wykonujesz do tego przetrzymujesz nick gracza, a co jak on go zmieni? trzymaj uuid, bo one jest unikalne i sie nie zmienia a co do tego, że nie działa - wywal casta, wywal getPlayer(), używaj uuid zamiast nicku gracza i przed get dodaj sprawdzanie czy gracz jest w mapce
  6. yooniks

    PublicRPG - Plugin na RPG

    nie ma tu uzytych funkcji javy 8, takie rzeczy to tylko w javie 6 =/ co do reszty: public UserManager getUserManager() { if(this.userManager == null) this.userManager = new UserManager(); return this.userManager; } public CustomClassManager getCustomClassManager() { if(this.customClassManager == null) this.customClassManager = new CustomClassManager(); return this.customClassManager; } gettery powinny zwracać od razu coś, no chyba, że to singleton czy coś, no a nie widze zebys ustawial gdzies te zmienne na null, wiec nie ma potrzeby nawet takiego sprawdzania, bo są inicjowane w konstruktorze (no i powinny byc rejestrowane w onenable, a nie w konstruktorze) for(Entity entity : Bukkit.getWorld("world").getEntities()){ if(this.mobManager.isMob(entity.getCustomName()) && !(entity instanceof Player)){ ((LivingEntity) entity).setHealth(0); } } od razu mozesz uzyc getlivingentities, no i uzyc streamow =/ private final Map<String, List<String>> moreMessages = new HashMap<String, List<String>>(); mozesz zastapic to multimapą z guavy ogólnie to jest tu dużo błędów, a kod wygląda nieestetycznie i słabe rozwiązania =/ public void save(Main main){ for(User user : main.getUserManager().userSet()){ if(user.isChanged()){ new FlatUser(user).save(); } } } tworzysz obiekt tylko po to aby wykonać metode save, od razu w parametrze mozesz dostarczyc usermanager lub od razu liste, bo po co main skoro i tak nie uzywasz wiecej funkcji od niego. nazwy zmiennych z małych liter, tak samo metod i pakietów, klasy z dużych liter. for(String string : Messages.getInstance().getList("LevelUpMessage")) { player.sendMessage(string .replace("{LVL}", "" + this.getLevel()) .replace("{EXP}", "" + this.getExp()) .replace("{NEED}", "" + this.getNeed())); } yaml wspiera wielolinijkowe teksty, tzn. message: "Pierwsza linia\nDruga linia" #musi być te " ", jest oczywiscie duzo wiecej sposobow na tworzenie takich tekstow, ale ten jest chyba najprostszy dla kogos kto tego nie ogarnia i wtedy wysylasz to jako jedną wiadomość, do tego zamiast String#replace mozesz uzyc StringUtils.replace, ktore jest kilka razy szybsze. no i tez czasem immutable tez by sie tu przydalo edit: no i oczywiscie tutaj flat ssie, do tego widze ze masz tutaj kilka obiektów, które używają metody np. save, mógłbyś pobawić sie z interfejsami lub dziedziczeniem, ładniej by wyszło
  7. yooniks

    Topka w fg

    a po co konczyc edycje? wgraj najnowszego builda, który jest wspierany i aktualizowany a w razie dalszych problemow pisz tu: https://github.com/FunnyGuilds/FunnyGuilds/issues - pewnie topka sie po prostu nie aktualizuje, albo jakis problem z tabem, albo sortowaniem
  8. yooniks

    matiiWhoIs - Informacje o graczu!

    co to jest x d no tych podstawowych tez za bardzo nie, pelno bledow, a dalej nic nie zmieniasz =/ czekam az zrobisz jakis update i wtedy ocenie
  9. yooniks

    Zmienna boolean osobna dla każdego gracza

    private final Set<UUID> players = new HashSet<>(); public boolean has(UUID uuid) { return this.players.contains(uuid); } public void add(UUID uuid) { this.players.add(uuid); } public void remove(UUID uuid) { this.players.remove(uuid); } @Test public void booleanTests() { final UUID uuid = UUID.randomUUID(); Assert.assertTrue(this.has(uuid)); this.add(uuid); Assert.assertTrue(this.has(uuid)); } normalnie uzylbys mapek lub zmiennych w jakims obiekcie, ale takie cos mozesz przetrzymywac sobie w secie, gracz w nim jest - zwraca true - nie jest - zwraca false. przetrzymujesz tam uuid gracza tak jest wygodniej. w drugim kodzie po prostu sprawdzasz czy metoda zwraca true testami jednostkowymi: https://kobietydokodu.pl/17-testy-jednostkowe/ przydadzą ci sie podstawy javy, po co zaczynac z minecraftem i pisaniem pod niego pluginów skoro nie potrafisz zrobic prostego programu sprawdzajacego czy lista coś zawiera, albo nie wiesz co to mapki.. narobisz sobie tylko pełno problemów, pierw zacznij od podstaw javy, a potem bukkit.
  10. yooniks

    Technika

    Szukasz technika, a jedyne co możesz zaoferować to serwer na jakimś hostingu za 20 zł na miesiąc? Ktoś kto potrafi pisać pluginy na pewno nie bedzie tracił na ciebie czasu =/ Jeszcze "pisanie dla ciebie pluginów" - wszystkie twoje zachcianki za 20 zł XD (i to nie jeszcze dla technika tylko na serwer, to tak na prawde gowno ma z tego technik) Co technik zyskuje współpracując z tobą? Nic oprócz straty czasu.
  11. yooniks

    Najoptymalniejsze rozwiązanie.

    tak, i ładowanie 100+ światów przy starcie serwera i przy save-all lub wyłączeniu =/ przecież taki border można zrobić na jednym świecie, tylko wysyłać każdemu graczowi inny pakiet z wielkościa bordera itd
  12. no jak chcesz pobrac tą tablice byte'ow to uzywasz: packet.getByteArrays().read(0) w protocollibie, a to jak juz bedziesz nasluchiwal to bardzo prosto zrobic.. no i tylko tam gdzie przetrzymujesz protocolManager to dodajesz ten listener
  13. yooniks

    Program do pluginów

    ale tłumaczył jak ogarnąć środowisko
  14. yooniks

    Problem z odpaleniem clienta

    ^ = ( wywala nulla bo dajesz nulla w parametrach = ( Start.main(null);
  15. yooniks

    [Pytanie] Wyciagnie mi ktos JARke

    no raczej nie =/ https://github.com/SocketByte/OpenSectors/releases - tu masz fajne sektorki
×