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

Regeneracja areny po zakończeniu gry


AdixeMC

Rekomendowane odpowiedzi

Opublikowano

Cześć,

jakiś czas temu zacząłem pisać plugin pod minigrę na serwer. Niestety, napotkałem problem. Mianowicie, chciałbym po każdej grze przywracać arenę do pierwotnego stanu. Nie wiem, w jaki sposób to zrobić, aby nie lagowało serwera. Aktualnie używam trzech pętli for dla x, y, z. Nie jest to dobre rozwiązanie, bo wywołuje straszne obciążenie. Pytanie, czy rozłożenie w czasie tego mechanizmu (spowolnienie) pomoże. Może jest jeszcze inne rozwiązanie? Na pewno jest, ponieważ sporo pluginów działa na tej zasadzie. Będę wdzięczny za pomoc.

Opublikowano

Piszę własny plugin na minigrę (można niszczyć bloki, wysadzać teren, itp.). Chodzi o przywrócenie areny do pierwotnego stanu.
Chodzi o to, że można niszczyć teren - nie chcę wyłączać tej możliwości. Bez tego minigra sensu nie ma.

Opublikowano

Stwórz metode, która za każdym razem gdy gra ma sie rozpoczać, tworzy nowy świat z przez ciebie przygotowanym schematiciem a po zakonczeniu usunie ten świat.

Opublikowano

Właśnie, wiele razy obił mi się o uszy "schematic". Czym to dokładnie jest? Jak to stworzyć? Dopiero zaczynam z pluginami.

Opublikowano

Plik schematic, jest to schemat mapy, jest tam zapisane jakie bloki sa na jakich kordach, co sie znajduje w skrzynkach etc, mozesz storzyc takiego schematica na podstawie swiata, ktory masz lub zaznaczyc obszar w WE i zrobic schematica tylko z jakiegos obszaru, potem tylko w swoim pluginie importujesz to.

Z poziomu kodu można to zrobić przez WorldEdit API, lub za pomoca jakiegos innego API.

 

https://worldedit.enginehub.org/en/latest/api/examples/

https://matthewmiller.dev/blog/use-schematics-worldedit/

Opublikowano

I gdy mam takiego schematica, to mogę stworzyć na jego podstawie świat? Czy tworzenie świata nie będzie lagujące?
Jak to dokładnie wygląda?

 

Wiem już jak stworzyć schematic. Podałby ktoś teraz, jak wsadzić to w kod?

Poszukałem informacji i chyba wiem jak to zrobić. Jeśli będę miał jakieś problemy, to poproszę o pomoc. :-]

 

Opublikowano

Witam,

stworzyłem owego schematica, ale to jeszcze bardziej laguje serwer, niż wcześniejsza metoda... Pewnie zrobiłem coś nie tak.

 

File file = new File(Bukkit.getPluginManager().getPlugin("WorldEdit").getDataFolder() + "/schematics/arena1.schem");
                World world = Bukkit.getWorld("world");

                Clipboard clipboard = null;
                ClipboardFormat format = ClipboardFormats.findByFile(file);
                try (ClipboardReader reader = format.getReader(new FileInputStream(file))) {
                    clipboard = reader.read();
                } catch (IOException exception) {
                    plugin.getLogger().warning("Unable to load schematic.");
                }

                try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(world), -1)) {
                    Operation operation = new ClipboardHolder(clipboard)
                            .createPaste(editSession)
                            .to(BlockVector3.at(40, 0, -75))
                            .ignoreAirBlocks(false)
                            .build();
                    Operations.complete(operation);
                }
                catch (WorldEditException exception) {
                    plugin.getLogger().warning("Unable to paste schematic.");
                }

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...