HQService / HQFramework

A next-generation Bukkit development framework.
https://hqservice.kr
GNU General Public License v3.0
47 stars 1 forks source link

Virtual #6

Closed cccgh5 closed 1 year ago

cccgh5 commented 1 year ago

기존의 PacketPlayOutSetSlotItemWrapper 와 같이 가독성이 안좋은 클래스들을 버리고 Virtual 로 재탄생한 HQFramework 만의 특별한 NMS (Client-Side) 패킷 조작 방식.

VirtualEntity

ex)
val virtualArmorStand = VirtualArmorStand(Location, ~~~)
virtualArmorStand.~~~

Player#virtual {
  spawnVirtualEntity(virtualArmorStand)
}

// ...

Player#virtual {
  moveVirtualEntity(virtualArmorStand)
}

// ...

Player#virtual {
  removeVirtualEntity(virtualArmorStand)
}

위의 아이디어를 착안하여 추가 개발하게 됨.

VirtualArmorStand

특정 플레이어에게만 보이는 아머스탠드를 생성할 수 있습니다. 아래는 VirtualArmorStand 를 실제 구현한 후, 테스트를 진행한 코드 이미지입니다.

val vas = VirtualArmorStand(location: Location, name: String)

image

VirtualItem

특정 플레이어가 보고있는 인벤토리에 가상의 아이템을 추가할 수 있습니다. 해당 아이템은 Client-Side 이기 때문에 실제 아이템처럼 사용할 수 없습니다. 아래는 VirtualItem 을 설정 한 예시 코드입니다.

fun test(player: Player) {
  player.virtual {
    setItem(1, ItemStack(Material.BARRIER))
  }
}
vjh0107 commented 1 year ago

흠... 긍정적으로 검토해보겠습니다