Skocz do zawartości
  • 0

Pomoc z menadżerem światów w SkBee (26.1.2)


Pytanie

Podstawowe informacje

  • Wersja serwera: 26.1.2
  • Wersja Skript: 2.15.3
  • Dodatki Skript i ich wersje: SkBee 3.24.0, skript-placeholders 1.7.1, PermSk 1.1.1

Kod skryptu

on Skript start:
	loop all worlds:
		if loop-world's name starts with "arena_":
			unload loop-world without saving
			
			wait 10 ticks
			
			delete world file for world "%loop-world%"

Opis problemu

Problem jest taki, że dzięki errorowi wiem, że usuwanie światów po nazwie już nie działa (A world file cannot be deleted by name in Minecraft 26.1+), dzięki czemu nie działa mi ten czyścik na arenki. Jak inaczej mogę usunąć świat przy użyciu SkBee?

Próbowałem już:
- Używać namespace'ów światów
- Zamiast world "%loop-world%" użyć samego loop-world

Odnośnik do komentarza
https://skript.pl/temat/59134-pomoc-z-menad%C5%BCerem-%C5%9Bwiat%C3%B3w-w-skbee-2612/
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

@wikt0r3k

Dokumentacja składni z SkBee nie jest szczególnie pomocna w przypadku efektu `delete world file...`, dlatego też postanowiłem zajrzeć do kodu źrodłowego SkBee. Ważne przy analizie źródła problemu są dwa niżej załączone fragmenty kodu:

 reg.newEffect(EffLoadWorld.class,
	"load world from [[world] creator] %worldcreator%",
	"load world %namespacedkey%",
	"unload [world] %world% [and (save|1:(do not|don't) save)]",
	"delete world file for [world] %string%",
	"delete world file for world with key %namespacedkey%")

a także:

if (this.pattern == 3 && LegacyUtils.IS_RUNNING_MC_26_1_1) {
	Skript.error("A world file cannot be deleted by name in Minecraft 26.1+");
	return false;
}
if (this.pattern == 4 && !LegacyUtils.IS_RUNNING_MC_26_1_1) {
	Skript.error("A world file cannot be deleted by key in Minecraft 1.21.11 or below.");
	return false;
}

Pole "this.pattern" przechowuje indeks wzorca, który został wykorzystany. Możliwe wzorce załączyłem w pierwszym fragmencie, indeksacja zaczyna się od zera.
Jaki płynie z tego wniosek? Jeżeli wersja serwera to 26.1 lub wyższa, należy wykorzystać ostatni wzorzec. W przeciwnym wypadku, należy skorzystać z przedostatniego wzorca.

Z racji tego, że wersja twojego serwera to 26.1.2, powinieneś skorzystać ze wzorca "delete world file for world with key %namespacedkey%", gdzie `%namespacedkey%` to nic innego jak "%przestrzeń nazw%:%nazwa świata%". Jako przykład może posłużyć "minecraft:the_end".

Pozyskanie samego klucza w przestrzeni nazw jest bardzo proste. Możesz wykorzystać to wyrażenie z SkBee, co finalnie daje instrukcję "delete world file for world with key (namespaced key of loop-world)".

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/59134-pomoc-z-menad%C5%BCerem-%C5%9Bwiat%C3%B3w-w-skbee-2612/#findComment-347798
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
Odpowiedz na pytanie...

×   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ę...