Skip to content

능력을 만나보세요

Daybreak edited this page Oct 15, 2020 · 2 revisions

능력을 만나보세요

아래는 능력 클래스의 기본적인 틀입니다.

@AbilityManifest(name = "반가워요", rank = Rank.A, species = Species.OTHERS, explain = {
	"§f당신의 능력을",
	"§f마음껏 설명해주세요."
})
public class Ability extends AbilityBase implements ActiveHandler, TargetHandler {

	public Ability(Participant participant) {
		super(participant);
	}
	
	@Override
	public boolean ActiveSkill(Material material, ClickType clickType) {
		return false;
	}
		
	@Override
	public void TargetSkill(Material material, LivingEntity entity) {}
	
	@Override
	public void onUpdate(Update update) {}
		
}

AbilityManifest : 능력의 가장 기본적인 정보를 담고 있는 어노테이션입니다. 이 어노테이션이 존재하지 않는 능력은 등록할 수 없습니다.

ActiveSkill : 액티브 능력 코드를 작성하기 위해 사용됩니다. 이 메소드를 사용하려면 능력 클래스가 ActiveHandler를 implement 해야 합니다.

  • Material
    • IRON_INGOT
    • 추가로 사용하고 싶은 Material이 있다면, 능력 클래스에 @Materials 어노테이션을 붙이고 사용할 Material들을 나열하시면 됩니다.
    • 동적인 사용 Material 목록 변경이 필요하다면, usesMaterial 메소드를 override하세요.
  • ClickType
    • RIGHT_CLICK
    • LEFT_CLICK

TargetSkill : 타겟팅 능력 코드를 작성하기 위해 사용됩니다. 이 메소드를 사용하려면 능력 클래스가 TargetHandler를 implement 해야 합니다.

  • Material : 대상을 우클릭할 때 사용한 아이템
    • IRON_INGOT
    • 추가로 사용하고 싶은 Material이 있다면, 능력 클래스에 @Materials 어노테이션을 붙이고 사용할 Material들을 나열하시면 됩니다.
    • 동적인 사용 Material 목록 변경이 필요하다면, usesMaterial 메소드를 override하세요.
  • LivingEntity : 타격한 대상. null이 아닙니다.

onUpdate : 생명주기 안내 메소드입니다.

  • Update : 업데이트 종류
    • RESTRICTION_CLEAR
      • 능력 제한 해제 (활성화)
    • RESTRICTION_SET
      • 능력 제한 (비활성화)
    • ABILITY_DESTROY
      • 능력 파괴 (제거)

능력 등록

모든 능력은 AbilityFactory에 기본적으로 등록합니다.

AbilityFactory.registerAbility(Ability.class);

기본 게임모드에서 능력이 사용되길 원한다면 AbilityList에도 함께 등록합니다.

AbilityList.registerAbility(Ability.class);

AbilityFactory에는 등록하지만 AbilityList에는 등록하지 않는 경우도 있나요?

예를 들어, 폭탄 돌리기 게임 모드를 만든다고 가정해봅시다. 우리는 다른 플레이어를 타격하면 해당 플레이어에게
능력이 넘어가는 폭탄 능력을 만들었습니다. 이 능력이 폭탄 돌리기 게임 모드에서는 사용되겠지만, 일반 능력자 대전에서
폭탄 능력이 할당되는 것을 원치는 않을 것입니다. 이 경우에, AbilityFactory에만 등록하게 됩니다.