@CoFFeIN04 @polsatgraniepl @Xyntegi_ok
Zanim zamknę temat, chciałbym powiedzieć, że wszystkie powyższe kody nie działają na wersji 1.21 z najnowszą wersją Skripta i WorldGuarda, ponieważ:
Skript nie jest w stanie zrozumieć tekstu jako regionu (to znaczy, pobrać regionu na podstawie jego nazwy),
porównywanie obiektu regionu z tekstem nigdy nie zadziała, co jest bezpośrednio powiązane z tym co napisałem wyżej.
Jak można więc pobrać region na podstawie nazwy? Cóż, jedyny działający sposób w czystym Skript'cie to użycie wyrażenia '%text% parsed as %*type%'. Przykład poniżej.
set {_region} to "kowadla" parsed as region
Dzięki powyższej linijce uzyskujemy region na podstawie jego nazwy. Należy jednak uważać, ponieważ nie zadziała on dla regionów dzielących tę samą nazwę, ale istniejących w różnych światach (WorldGuard dopuszcza tworzenie takich regionów).
Po otrzymaniu obiektu reprezentującego region reszta kodu regenerującego uszkodzone kowadła staje się trywialna.
every 10 seconds:
set {_region} to "kowadla" parsed as region
set (blocks in region {_region} where [input is any anvil]) to anvil
Wspomnę jeszcze tylko o tym, że choć wedle dokumentacji słowo 'region' w składni wyrażenia 'blocks in %region%' jest opcjonalne, ze względu na kolizję składni musi ono się tam znaleźć.
Finalnie, jeszcze mam trzy uwagi- jedną do Coffeina i dwie do polsatgranie.
@CoFFeIN04: otwieranie GUI kowadła poprzez Skripta co prawda zadziała, ale takie GUI jest bezużyteczne, ponieważ nic nie da się w nim zrobić. Warto tu powiedzieć, że jest to problem związany z Bukkit API, a nie z samym Skriptem. Aby uporać się z tym problemem, należy wykorzystać albo wysyłanie pakietów, albo pakiet NMS. Można się tutaj posłużyć biblioteką AnvilGUI, która zdecydowanie ułatwia te zadanie.
@polsatgraniepl:
Alias 'an anvil' obejmuje jedynie nieuszkodzone kowadło. Aby skrypt obsługiwał kowadła w dowolnym stanie, należy użyć aliasu 'any anvil'.
Zalecam nie podawać typu przy wyrażeniu 'input', ponieważ czasem powoduje to brak działania filtru. Przynajmniej tak było w wersji Skripta 2.9.0, nie miałem okazji przetestować tego w wersji 2.9.1.
Zdarzenie 'anvil damage' jest jednym z tych zdarzeń, których użyteczność jest niemalże bliska zerowej, ponieważ (najprawdopodobniej) nie posiada jakichkolwiek wartości możliwych do pobrania związanych ze zdarzeniem, co jest następstwem wpakowania go do klasy SimpleEvents, która "przechowuje" dziesiątki innych takich mało użytecznych zdarzeń.
Pozdrawiam.