- Drodzy Gracze:
- Wersja 1.18.2-rc.3 & rc.4, niestabilne wydanie, jest teraz dostępna do pobrania za pośrednictwem menedżera konta (sekcja „Inne Dodatki”).
- [Uaktualnienie:] Wydano również wersję rc.4, aby naprawić problem z awarią w trybie wieloosobowym i dodać brakujące lokalizacje.
- To uaktualnienie koncentruje się na wydajności serwera i powinno naprawić jeden lub dwa istotne problemy wprowadzone w rc.1 / 2.
- Aktualizacje gry:
Poprawki:
- Dodano możliwość czarnolistowania modyfikacji po stronie klienta przez właścicieli serwera. Możesz dodać identyfikatory modów do „ModIdBlackList” w konfiguracji serwera.
- Dodano dalsze ulepszenia wydajności w obszarach z dużą ilością jednostek i upuszczonych przedmiotów.
- Te zmiany znacząco zmniejszają łączny czas spędzany na taktowaniu jednostek:
- Taktowanie jednostek: poprawiono upuszczone przedmioty i inne jednostki biernego typu (szczegóły: teraz korzystają one również z CachingCollisionTester oraz różnych drobnych usprawnień).
- Taktowanie jednostek: znacząca redukcja czasu taktowania dla upuszczonych przedmiotów.
- Znacząca redukcja czasu taktowania serwera, gdy trzeba usuwać duże ilości jednostek (np. upuszczone przedmioty).
- Taktowanie jednostek AI: brak spadku wydajności, gdy w pobliżu stworzeń znajduje się wiele upuszczonych przedmiotów.
- Taktowanie jednostek AI: poprawka w rozpoczynaniu wykonywania zadań „idle” i „stayclosetoentity”.
- Taktowanie jednostek: ogólna redukcja czasu taktowania (~3-10 ms średnio dla 10 000 jednostek na średnim sprzęcie, czasami więcej).
- Taktowanie jednostek: znaczna redukcja czasu dla zachowania „timeddespawn” i „floatupwhenstuck”.
- Fizyka jednostek: ulepszenia w lokomotorach (szczegóły: refaktoryzacja kodu dotyczącego jednostek graczy w nowy lokomotor PlayerEntityInAir).
- Fizyka jednostek: Statystyki „walkspeed” są teraz sprawdzane tylko przez jednostki graczy.
- Czas znikania upuszczonych przedmiotów można teraz skrócić, edytując plik zasobów „item.json”, bez wpływu na czas znikania upuszczonych przedmiotów w wyniku śmierci gracza (czas znikania upuszczonych przedmiotów w wyniku śmierci gracza jest teraz ustawiony na 10 minut).
- Dodano brakujące lokalizacje w języku angielskim dla nazw cech i różnych wiekowych skrzyń.
- Dodano nowe klucze lokalizacji dla ustawień trybu gry, wzrostu nasion w dniach, rozmiaru populacji uli, wyściółki latarń i różnych klawiszy skrótów.
- Przewijanie myszką na pola wprowadzania liczb działa teraz w tym samym kierunku co przyciski (w górę = przesuń koło w górę).
- Pola wprowadzania liczb mogły zakłócić wynik przy użyciu przewijania myszką + (SHIFT/CTRL).
- Błędy dialogów z handlarzami po stronie klienta w wersji 1.18.2-rc1 i rc2.
- Błędy po stronie klienta dla niektórych graczy dołączających do rozgrywki wieloosobowej po tym, jak inni gracze już byli na serwerze, w wersji 1.18.2-rc3.
- Bardzo rzadkie błędy związane z węglem drzewnym i innymi pigmentami artystycznymi trzymanymi w ręku.
- Linki w przewodniku do Gabloty Terakoty teraz działają (linki są wyświetlane na przedmiotach, które można przechowywać w Gablocie Terakoty).
API Ulepszenie:
- Dodano „onshelfTransform” do ’.tfedit’ dla Półek i Półek na Książki.
- Gablota, półka, półka na książki, skrzynka na ziemię, stojak na narzędzia/formy teraz zaktualizują się na żywo podczas edycji w edytorze transformacji.
- Przy przełączaniu zakładek w tfedit zastosowane transformacje teraz są resetowane, a tylko kliknięcie „Zamknij i Zastosuj” zachowuje zmiany.
API Techniczne informacje dla programistów (1):
Server.LoadedEntities
teraz jest CachingConcurrentDictionary
, a nie ConcurrentDictionary
, i jest oznaczone jako internal
, nie jest przeznaczone do bezpośredniego dostępu przez modyfikacje. Jeśli twój kod bezpośrednio korzysta z server.LoadedEntities
(mało prawdopodobne), to możesz potrzebować ponownej kompilacji kodu dla wersji 1.18.2-rc3. W każdym razie zalecamy nie korzystanie z pól server
w sposób bezpośredni, a zamiast tego korzystanie z API, konkretnie IServerWorldAccessor.LoadedEntities
. Nie ma zmian w API. Mody, które już korzystają z API zgodnie z przeznaczeniem, nie będą miały wpływu na te zmiany i nie będą musiały ponownie kompilować kodu. Więcej informacji znajdziesz w zaktualizowanej dokumentacji XML dla IServerWorldAccessor.LoadedEntities
. Oto przykład zamierzonego użycia API przez mody do dostępu do załadowanych jednostek, ten kod przykładu będzie nadal działać i nie jest objęty zmianami omawianymi tutaj:
ICollection entities;
if (api.Side == EnumAppSide.Server) entities = (api as ICoreServerAPI).World.LoadedEntities.Values;
else entities = (api as ICoreClientAPI).World.LoadedEntities.Values;
API Techniczne notatki dla programistów (2):
Server.LoadedEntities
teraz jest CachingConcurrentDictionary
, a nie ConcurrentDictionary
, i jest oznaczone jako internal
, nie jest przeznaczone do bezpośredniego dostępu przez modyfikacje. Jeśli twój kod bezpośrednio korzysta z server.LoadedEntities
(mało prawdopodobne), to możesz potrzebować ponownej kompilacji kodu dla wersji 1.18.2-rc3. W każdym razie zalecamy nie korzystanie z pól server
w sposób bezpośredni, a zamiast tego korzystanie z API, konkretnie IServerWorldAccessor.LoadedEntities
. Nie ma zmian w API. Mody, które już korzystają z API zgodnie z przeznaczeniem, nie będą miały wpływu na te zmiany i nie będą musiały ponownie kompilować kodu. Więcej informacji znajdziesz w zaktualizowanej dokumentacji XML dla IServerWorldAccessor.LoadedEntities
. Oto przykład zamierzonego użycia API przez mody do dostępu do załadowanych jednostek, ten kod przykładu będzie nadal działać i nie jest objęty zmianami omawianymi tutaj:
public override double GetWalkSpeedMultiplier(double groundDragFactor = 0.3)
{
double mul = base.GetWalkSpeedMultiplier(groundDragFactor); mul *= Stats.GetBlended("walkspeed");
mul *= Stats.GetBlended("walkspeed");
return mul;
}