C4LLM3P3T3R 4 Opublikowano 6 lutego 2020 Udostępnij Opublikowano 6 lutego 2020 (edytowane) StoneMaker StoneMaker to plugin na zwykłą stoniarkę. Sam szukając prostej stoniarki na mój serwer natknąłem się na aż 4, ale każda z nich miała praktycznie ten sam kod w sobie. Co więcej, każda wykrywała jako "stoniarkę" zwykły end stone więc postanowiłem coś z tym zrobic. Od zera napisałem plugin na "porządną" stoniarkę, która nie posiada takiego błędu. Lecz nie tylko zrobiłem to czego inni nie potrafili, dodałem pełną konfigurację. Zapis narazie tylko flat, zobaczymy co później. Nowy update wprowadził crafing na stoniarkę, oraz naprawił większość bugów Później może dodam wsparcie dla world guarda, jest open source więc zapraszam do ulepszania pluginu Skan Download/Spigot GitHub Edytowane 29 listopada 2020 przez C4LLM3P3T3R Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/ Udostępnij na innych stronach Więcej opcji udostępniania...
kerpson 551 Opublikowano 6 lutego 2020 Udostępnij Opublikowano 6 lutego 2020 Szczerze, to nic w niej innowacyjnego. Toster 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-235508 Udostępnij na innych stronach Więcej opcji udostępniania...
C4LLM3P3T3R 4 Opublikowano 6 lutego 2020 Autor Udostępnij Opublikowano 6 lutego 2020 Godzinę temu, HotAngel2K17 napisał: Szczerze, to nic w niej innowacyjnego. Nie chodziło mi o wprowadzenie jakiegoś nowego standardu, jakichś opcji, czy czegoś innego. Chodziło mi o poprawne wykonanie stoniarki, tak jak powinna być zrobiona. Tak jak napisałem, znalazłem 4 pluginy na stoniarkę, ale we wszystkich był ten sam "błąd",który mi się nie podobał i myślałem, że innym tez nie będzie się podobać. ScripteR 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-235515 Udostępnij na innych stronach Więcej opcji udostępniania...
Bartek123344 1 Opublikowano 7 lutego 2020 Udostępnij Opublikowano 7 lutego 2020 Działa na 1.14.4? Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-235544 Udostępnij na innych stronach Więcej opcji udostępniania...
chomik123 1 Opublikowano 27 maja 2021 Udostępnij Opublikowano 27 maja 2021 W dniu 7.02.2020 o 12:35, Bartek123344 napisał: Działa na 1.14.4? raczej tak odpaliłem na serwerze 1.12.2-1.16.5 Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-304554 Udostępnij na innych stronach Więcej opcji udostępniania...
Zbucki 46 Opublikowano 16 czerwca 2021 Udostępnij Opublikowano 16 czerwca 2021 W dniu 6.02.2020 o 19:14, C4LLM3P3T3R napisał: Nie chodziło mi o wprowadzenie jakiegoś nowego standardu, jakichś opcji, czy czegoś innego. Chodziło mi o poprawne wykonanie stoniarki, tak jak powinna być zrobiona. Tak jak napisałem, znalazłem 4 pluginy na stoniarkę, ale we wszystkich był ten sam "błąd",który mi się nie podobał i myślałem, że innym tez nie będzie się podobać. No poprawnie to ona napisana nie jest. Nie chce mi się zagłębiać w jakieś szczegóły ale sam sposób regeneracji stoniarki/pobierania danych i wiele innych rzeczy w tym kodzie byłoby śmiertelne dla nawet średniego serwera. @EventHandler public void blockDestroy(BlockBreakEvent event){ Player player = event.getPlayer(); Block bloc = event.getBlock(); Location location = bloc.getLocation(); if(bloc.getType().equals(Material.ENDER_STONE) && stoneMaker.getConfig().getStringList("Locations.StoneMakers").contains(location.toString())){ ArrayList<String> locationsOfStoneMakers = new ArrayList<String>(stoneMaker.getConfig().getStringList("Locations.StoneMakers")); locationsOfStoneMakers.remove(location.toString()); stoneMaker.getConfig().set("Locations.StoneMakers", locationsOfStoneMakers); stoneMaker.saveConfig(); bloc.setType(Material.AIR); location.getWorld().dropItemNaturally(location, createItem()); }else{ location.setY(location.getY() - 1); if (stoneMaker.getConfig().getStringList("Locations.StoneMakers").contains(location.toString())){ location.setY(location.getY() + 1); Location stone = location; new BukkitRunnable(){ @Override public void run() { if(stone.getBlock().getType().equals(Material.AIR)){ stone.getWorld().getBlockAt(stone).setType(Material.STONE); this.cancel(); }else{ this.cancel(); } } }.runTaskTimer(stoneMaker, stoneMaker.getConfig().getInt("Options.Time")*20, 0); } } } samo tworzenie nowego tasku po każdym rozwaleniu stoniarki to bardzo głupi pomysł. pomijając również taki termin jak `konwencja nazewnictwa` Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-305647 Udostępnij na innych stronach Więcej opcji udostępniania...
C4LLM3P3T3R 4 Opublikowano 9 sierpnia 2021 Autor Udostępnij Opublikowano 9 sierpnia 2021 W dniu 16.06.2021 o 16:00, Zbucki napisał: No poprawnie to ona napisana nie jest. Nie chce mi się zagłębiać w jakieś szczegóły ale sam sposób regeneracji stoniarki/pobierania danych i wiele innych rzeczy w tym kodzie byłoby śmiertelne dla nawet średniego serwera. @EventHandler public void blockDestroy(BlockBreakEvent event){ Player player = event.getPlayer(); Block bloc = event.getBlock(); Location location = bloc.getLocation(); if(bloc.getType().equals(Material.ENDER_STONE) && stoneMaker.getConfig().getStringList("Locations.StoneMakers").contains(location.toString())){ ArrayList<String> locationsOfStoneMakers = new ArrayList<String>(stoneMaker.getConfig().getStringList("Locations.StoneMakers")); locationsOfStoneMakers.remove(location.toString()); stoneMaker.getConfig().set("Locations.StoneMakers", locationsOfStoneMakers); stoneMaker.saveConfig(); bloc.setType(Material.AIR); location.getWorld().dropItemNaturally(location, createItem()); }else{ location.setY(location.getY() - 1); if (stoneMaker.getConfig().getStringList("Locations.StoneMakers").contains(location.toString())){ location.setY(location.getY() + 1); Location stone = location; new BukkitRunnable(){ @Override public void run() { if(stone.getBlock().getType().equals(Material.AIR)){ stone.getWorld().getBlockAt(stone).setType(Material.STONE); this.cancel(); }else{ this.cancel(); } } }.runTaskTimer(stoneMaker, stoneMaker.getConfig().getInt("Options.Time")*20, 0); } } } samo tworzenie nowego tasku po każdym rozwaleniu stoniarki to bardzo głupi pomysł. pomijając również taki termin jak `konwencja nazewnictwa` Faktycznie instancjonowanie nowego taska przy każdym rozwaleniu bloku to trochę głupi pomysł. Powinienem był po prostu dać interval na tworzenie stone'a przy postawieniu stoniarki ale nie wiem czy da się to zrobić jakoś wydajniej, dawno się tym nie zajmowałem bardziej skupiłem się na node'dzie i discord.js. Jeśli masz pomysł jak sam sposób regeneracji można by ulepszyć to z chęcią posłucham bo jestem szczerze ciekawy, a co do nazewnictwa. Powiedzmy, że wtedy nie miałem nadziei, że komuś będzie się w ogóle chciało grzebać w tym kodzie i zostawiłem zmienne tak jak było mi wygodnie a nie żeby ktoś się domyślił o co chodzi. Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-309118 Udostępnij na innych stronach Więcej opcji udostępniania...
Zbucki 46 Opublikowano 9 sierpnia 2021 Udostępnij Opublikowano 9 sierpnia 2021 44 minuty temu, C4LLM3P3T3R napisał: Faktycznie instancjonowanie nowego taska przy każdym rozwaleniu bloku to trochę głupi pomysł. Powinienem był po prostu dać interval na tworzenie stone'a przy postawieniu stoniarki ale nie wiem czy da się to zrobić jakoś wydajniej, dawno się tym nie zajmowałem bardziej skupiłem się na node'dzie i discord.js. Jeśli masz pomysł jak sam sposób regeneracji można by ulepszyć to z chęcią posłucham bo jestem szczerze ciekawy, a co do nazewnictwa. Powiedzmy, że wtedy nie miałem nadziei, że komuś będzie się w ogóle chciało grzebać w tym kodzie i zostawiłem zmienne tak jak było mi wygodnie a nie żeby ktoś się domyślił o co chodzi. Wystarczy jeden task. Po rozwaleniu stone dodajesz lokacje wraz z czasem do mapki. W tasku zapętlasz wszystkie dane do mapki generatory, porównujesz czas i jeżeli będzie gotowy do regeneracji to setujesz na stone i usuwasz go z mapy. Cytuj Odnośnik do komentarza https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/#findComment-309123 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.