MC Toolkit

Poradniki / Polecenia i dane

/attribute: wartość bazowa kontra modyfikatory — i dlaczego twoja ciągle się resetuje

Ustawienie wartości bazowej jest trwałe, a ustawienie modyfikatora nie — chyba że wybierzesz złą operację. Trzy operacje, kolejność nakładania i pułapka slotów.

/attribute wygląda jak jedna komenda z trzema podkomendami. W rzeczywistości to dwa różne systemy, które przypadkiem dzielą nazwę — i mieszanie ich jest powodem, dla którego wartości ciągle wracają do poprzedniego stanu.

wartość bazowa kontra modyfikator

/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
  • base set nadpisuje własną wartość encji. Jest trwałe przez przeładowania i nie usuwa go nic poza kolejnym base set.
  • modifier add nakłada nazwaną korektę na wierzch. Jest zapisywany razem z encją tak samo jak wartość bazowa, ma własne id i można go usunąć po tym id.

Jeśli twoja zmiana nie chce zniknąć, to albo użyłeś base set i potrzebujesz base reset, albo dodałeś modyfikator, który wymaga modifier remove <id>.

Trzy operacje i kolejność ich stosowania

OperacjaDziałanieStosowana
add_valuewartość + npierwsza
add_multiplied_basewartość + (baza × n)druga
add_multiplied_totalsuma bieżąca × (1 + n)ostatnia

Kolejność jest stała i ma znaczenie. Zaczynając od bazy 20, potem add_value 10 i add_multiplied_total 0.5:

20 → 30 → 45          not  20 → 30 → 30 + 10 = 40

add_multiplied_base mnoży bazę po dodaniu modyfikatorów add_value — a nie sumę bieżącą — dlatego dwa takie modyfikatory sumują się addytywnie, a nie składają procentowo.

Id modyfikatorów mają teraz przestrzeń nazw

Starsze wersje używały UUID. Współczesne wersje używają id z przestrzenią nazw:

/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value

Dodanie drugiego modyfikatora o tym samym id kończy się niepowodzeniem z komunikatem „Modifier … is already present", zamiast go nałożyć lub zastąpić. Aby odświeżyć efekt, najpierw go modifier remove.

Modyfikatory ekwipunku siedzą na przedmiocie, nie na encji

Premia do obrażeń miecza to komponent przedmiotu attribute_modifiers i działa tylko wtedy, gdy przedmiot znajduje się w odpowiednim slocie:

/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
  operation:"add_value",slot:"mainhand",id:"my:bonus"}]]

Pominięcie slot to najczęstszy błąd. Domyślnie przyjmuje wartość any, więc modyfikator działa w każdym slocie ekwipunku — miecz wzmacnia cię z offhandu albo ze slotu zbroi, nie tylko z głównej ręki.

Prawidłowe sloty: mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any.

Odczyt wartości z powrotem

/attribute @s minecraft:max_health get

zwraca efektywną sumę, wraz z modyfikatorami. /attribute @s minecraft:max_health base get zwraca samą wartość bazową.

Zbuduj dowolny z tych elementów — w tym formę komponentu przedmiotu z ustawionym slotem — w Kreatorze komend do encji i walki.

Kreator komend bytów i walki →

Więcej poradników

Zobacz wszystkie →