Skocz do zawartości

StoneMaker - darmowa, konfigurowalna stoniarka na twój serwer!


Rekomendowane odpowiedzi

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 przez C4LLM3P3T3R
Odnośnik do komentarza
https://skript.pl/temat/36953-stonemaker-darmowa-konfigurowalna-stoniarka-na-tw%C3%B3j-serwer/
Udostępnij na innych stronach

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ć. 

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

  • C4LLM3P3T3R zmienił(a) tytuł na StoneMaker - darmowa, konfigurowalna stoniarka na twój serwer!
  • 5 miesięcy temu...
  • 3 tygodnie później...
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`

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

  • 1 miesiąc temu...
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.

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

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.

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

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ą.

Nieaktywny
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...