Closed cccgh5 closed 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 를 실제 구현한 후, 테스트를 진행한 코드 이미지입니다.
val vas = VirtualArmorStand(location: Location, name: String)
특정 플레이어가 보고있는 인벤토리에 가상의 아이템을 추가할 수 있습니다. 해당 아이템은 Client-Side 이기 때문에 실제 아이템처럼 사용할 수 없습니다. 아래는 VirtualItem 을 설정 한 예시 코드입니다.
fun test(player: Player) { player.virtual { setItem(1, ItemStack(Material.BARRIER)) } }
흠... 긍정적으로 검토해보겠습니다
기존의 PacketPlayOutSetSlotItemWrapper 와 같이 가독성이 안좋은 클래스들을 버리고 Virtual 로 재탄생한 HQFramework 만의 특별한 NMS (Client-Side) 패킷 조작 방식.
위의 아이디어를 착안하여 추가 개발하게 됨.
VirtualArmorStand
특정 플레이어에게만 보이는 아머스탠드를 생성할 수 있습니다. 아래는 VirtualArmorStand 를 실제 구현한 후, 테스트를 진행한 코드 이미지입니다.
VirtualItem
특정 플레이어가 보고있는 인벤토리에 가상의 아이템을 추가할 수 있습니다. 해당 아이템은 Client-Side 이기 때문에 실제 아이템처럼 사용할 수 없습니다. 아래는 VirtualItem 을 설정 한 예시 코드입니다.