Skocz do zawartości
  • 0

atrybut


TeZetYT

Pytanie

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
7 godzin temu, TeZetYT napisał:

witam. Jak dodać atrybuty do przedmiotu za pomocą skripta? Wiem że jest komenda, ale potrzebuje też w skripcie to. Szukam wszędzie i nie moge zmaleźć :( W dokumentacji nie ma żadnych przykładów

Wedle mojej wiedzy Skript nie implementuje systemu atrybutów dla przedmiotów. Na tą chwilę możliwa jest jedynie modyfikacja atrybutów bytów.

Możliwe jednak jest rozwiązanie tego problemu przy pomocy dodatku skript-reflect. Wystarczy zmodyfikować ItemMeta przedmiotu.
Poniższy kod nie był testowany, proszę to mieć na uwadze. Pierwszy raz posługuję się klasą NamespacedKey, gdyż ostatni raz modyfikowałem atrybuty przedmiotów gdy jeszcze użycie UUID i dodatkowej nazwy w konstruktorze klasy AttributeModifier było na porządku dziennym.

import:
	org.bukkit.NamespacedKey
	org.bukkit.attribute.AttributeModifier
	org.bukkit.attribute.AttributeModifier$Operation as AttributeModifierOperation
	org.bukkit.inventory.EquipmentSlotGroup
	org.bukkit.attribute.Attribute

command /addattackspeed:
	executable by: players
	permission: server.command.addattackspeed
	trigger:
		player's tool is not air
		set {_item} to player's tool
		set {_itemMeta} to {_item}.getItemMeta()
		
		set {_nsKey} to new NamespacedKey(instance of plugin "Skript", UUID.randomUUID().toString())
		set {_amount} to 1
		set {_operation} to AttributeModifierOperation.ADD_NUMBER
		set {_eqSlot} to EquipmentSlotGroup.getByName("hand")
		
		set {_modifier} to new AttributeModifier({_nsKey}, {_amount}, {_operation}, {_eqSlot})
		
		{_itemMeta}.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, {_modifier})
		{_item}.setItemMeta({_itemMeta})

Jeśli Pan chce, istnieje również drugi sposób. Mianowicie, może Pan dodać za pomocą dodatku obsługującego NBT (np. SkBee) znacznik (tag) opisujący atrybut, który chce Pan dodać.
Więcej informacji o tym znajdzie Pan na wiki dodatku SkBee.

Pozdrawiam.

Edytowane przez Kormic
Dodanie importu enuma Attribute
Odnośnik do komentarza
https://skript.pl/temat/57675-atrybut/#findComment-343048
Udostępnij na innych stronach

  • 0
2 godziny temu, Kormic napisał:

Wedle mojej wiedzy Skript nie implementuje systemu atrybutów dla przedmiotów. Na tą chwilę możliwa jest jedynie modyfikacja atrybutów bytów.

Możliwe jednak jest rozwiązanie tego problemu przy pomocy dodatku skript-reflect. Wystarczy zmodyfikować ItemMeta przedmiotu.
Poniższy kod nie był testowany, proszę to mieć na uwadze. Pierwszy raz posługuję się klasą NamespacedKey, gdyż ostatni raz modyfikowałem atrybuty przedmiotów gdy jeszcze użycie UUID i dodatkowej nazwy w konstruktorze klasy AttributeModifier było na porządku dziennym.

import:
	org.bukkit.NamespacedKey
	org.bukkit.attribute.AttributeModifier
	org.bukkit.attribute.AttributeModifier$Operation as AttributeModifierOperation
	org.bukkit.inventory.EquipmentSlotGroup
	org.bukkit.attribute.Attribute

command /addattackspeed:
	executable by: players
	permission: server.command.addattackspeed
	trigger:
		player's tool is not air
		set {_item} to player's tool
		set {_itemMeta} to {_item}.getItemMeta()
		
		set {_nsKey} to new NamespacedKey(instance of plugin "Skript", UUID.randomUUID().toString())
		set {_amount} to 1
		set {_operation} to AttributeModifierOperation.ADD_NUMBER
		set {_eqSlot} to EquipmentSlotGroup.getByName("hand")
		
		set {_modifier} to new AttributeModifier({_nsKey}, {_amount}, {_operation}, {_eqSlot})
		
		{_itemMeta}.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, {_modifier})
		{_item}.setItemMeta({_itemMeta})

Jeśli Pan chce, istnieje również drugi sposób. Mianowicie, może Pan dodać za pomocą dodatku obsługującego NBT (np. SkBee) znacznik (tag) opisujący atrybut, który chce Pan dodać.
Więcej informacji o tym znajdzie Pan na wiki dodatku SkBee.

Pozdrawiam.

ja mam skbee więc druga opcja mi bardziej odpowiada. Dziękuję, temat do zamknięcia.

Odnośnik do komentarza
https://skript.pl/temat/57675-atrybut/#findComment-343055
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ę...