本文整理匯總了Golang中chunkymonkey/gamerules.Slot.IsEmpty方法的典型用法代碼示例。如果您正苦於以下問題:Golang Slot.IsEmpty方法的具體用法?Golang Slot.IsEmpty怎麽用?Golang Slot.IsEmpty使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類chunkymonkey/gamerules.Slot
的用法示例。
在下文中一共展示了Slot.IsEmpty方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: PacketPlayerBlockHit
func (player *Player) PacketPlayerBlockHit(status DigStatus, target *BlockXyz, face Face) {
player.lock.Lock()
defer player.lock.Unlock()
// This packet handles 'throwing' an item as well, with status = 4, and
// the zero values for target and face, so check for that.
if status == DigDropItem && target.IsZero() && face == 0 {
blockLoc := player.position.ToBlockXyz()
shardClient, _, ok := player.chunkSubs.ShardClientForBlockXyz(blockLoc)
if !ok {
return
}
var itemToThrow gamerules.Slot
player.inventory.TakeOneHeldItem(&itemToThrow)
if !itemToThrow.IsEmpty() {
velocity := physics.VelocityFromLook(player.look, 0.50)
position := player.position
position.Y += player.height
shardClient.ReqDropItem(itemToThrow, position, velocity, TicksPerSecond/2)
}
return
}
// Validate that the player is actually somewhere near the block.
targetAbsPos := target.MidPointToAbsXyz()
if !targetAbsPos.IsWithinDistanceOf(&player.position, MaxInteractDistance) {
log.Printf("Player/PacketPlayerBlockHit: ignoring player dig at %v (too far away)", target)
return
}
// TODO measure the dig time on the target block and relay to the shard to
// stop speed hacking (based on block type and tool used - non-trivial).
shardClient, _, ok := player.chunkSubs.ShardClientForBlockXyz(target)
if ok {
held, _ := player.inventory.HeldItem()
shardClient.ReqHitBlock(held, *target, status, face)
}
}