diff --git a/dragonfly b/dragonfly index 49e1ed3..f408596 160000 --- a/dragonfly +++ b/dragonfly @@ -1 +1 @@ -Subproject commit 49e1ed3d35eab5704a03ccfa6419260e670b5fbb +Subproject commit f4085964a8b9c22257d41cadf04002551b50d9bb diff --git a/utils/behaviourpack/entity.go b/utils/behaviourpack/entity.go index 78dc4dd..651f71b 100644 --- a/utils/behaviourpack/entity.go +++ b/utils/behaviourpack/entity.go @@ -84,6 +84,14 @@ func (bp *Pack) AddEntity(EntityType string, attr []protocol.AttributeValue, met } } + if ShowNameTag, ok := meta[protocol.EntityDataKeyAlwaysShowNameTag]; ok { + if ShowNameTag != 0 { + entry.MinecraftEntity.Components["minecraft:nameable"] = map[string]any{ + "always_show": true, + } + } + } + if _, ok := meta[protocol.EntityDataKeyFlags]; ok { AlwaysShowName := meta.Flag(protocol.EntityDataKeyFlags, protocol.EntityDataFlagAlwaysShowName) if AlwaysShowName { diff --git a/utils/dumpstruct.go b/utils/dumpstruct.go index d8280d3..8c1311b 100644 --- a/utils/dumpstruct.go +++ b/utils/dumpstruct.go @@ -6,6 +6,8 @@ import ( "reflect" "strconv" "strings" + + "github.com/sandertv/gophertunnel/minecraft/protocol" ) func DumpStruct(f io.StringWriter, inputStruct any) { @@ -78,14 +80,37 @@ func dumpValue(f io.StringWriter, level int, value reflect.Value, withType, isEn return } f.WriteString("\n") + + if isEntityMetadata { + meta := protocol.EntityMetadata(value.Interface().(map[uint32]any)) + if _, ok := meta[protocol.EntityDataKeyFlags]; ok { + f.WriteString(tabs + "\tFlags: ") + var first = true + for i, name := range entityDataFlags { + if meta.Flag(protocol.EntityDataKeyFlags, uint8(i)) { + if !first { + f.WriteString("|") + } + f.WriteString(name[len("EntityDataFlag"):]) + first = false + } + } + f.WriteString(",\n") + } + } + iter := value.MapRange() for iter.Next() { f.WriteString(tabs + "\t") var kevV bool if isEntityMetadata { idx := int(iter.Key().Uint()) + if idx == 0 { + continue + } if idx < len(entityDataKeys) { - f.WriteString(entityDataKeys[idx][len("EntityDataKey"):]) + vv := entityDataKeys[idx][len("EntityDataKey"):] + f.WriteString(vv) kevV = true } } @@ -318,3 +343,124 @@ var entityDataKeys = []string{ "EntityDataKeyPlayerHasDied", "EntityDataKeyCollisionBox", } + +var entityDataFlags = []string{ + "EntityDataFlagOnFire", + "EntityDataFlagSneaking", + "EntityDataFlagRiding", + "EntityDataFlagSprinting", + "EntityDataFlagUsingItem", + "EntityDataFlagInvisible", + "EntityDataFlagTempted", + "EntityDataFlagInLove", + "EntityDataFlagSaddled", + "EntityDataFlagPowered", + "EntityDataFlagIgnited", + "EntityDataFlagBaby", + "EntityDataFlagConverting", + "EntityDataFlagCritical", + "EntityDataFlagShowName", + "EntityDataFlagAlwaysShowName", + "EntityDataFlagNoAI", + "EntityDataFlagSilent", + "EntityDataFlagWallClimbing", + "EntityDataFlagClimb", + "EntityDataFlagSwim", + "EntityDataFlagFly", + "EntityDataFlagWalk", + "EntityDataFlagResting", + "EntityDataFlagSitting", + "EntityDataFlagAngry", + "EntityDataFlagInterested", + "EntityDataFlagCharged", + "EntityDataFlagTamed", + "EntityDataFlagOrphaned", + "EntityDataFlagLeashed", + "EntityDataFlagSheared", + "EntityDataFlagGliding", + "EntityDataFlagElder", + "EntityDataFlagMoving", + "EntityDataFlagBreathing", + "EntityDataFlagChested", + "EntityDataFlagStackable", + "EntityDataFlagShowBottom", + "EntityDataFlagStanding", + "EntityDataFlagShaking", + "EntityDataFlagIdling", + "EntityDataFlagCasting", + "EntityDataFlagCharging", + "EntityDataFlagKeyboardControlled", + "EntityDataFlagPowerJump", + "EntityDataFlagDash", + "EntityDataFlagLingering", + "EntityDataFlagHasCollision", + "EntityDataFlagHasGravity", + "EntityDataFlagFireImmune", + "EntityDataFlagDancing", + "EntityDataFlagEnchanted", + "EntityDataFlagReturnTrident", + "EntityDataFlagContainerPrivate", + "EntityDataFlagTransforming", + "EntityDataFlagDamageNearbyMobs", + "EntityDataFlagSwimming", + "EntityDataFlagBribed", + "EntityDataFlagPregnant", + "EntityDataFlagLayingEgg", + "EntityDataFlagPassengerCanPick", + "EntityDataFlagTransitionSitting", + "EntityDataFlagEating", + "EntityDataFlagLayingDown", + "EntityDataFlagSneezing", + "EntityDataFlagTrusting", + "EntityDataFlagRolling", + "EntityDataFlagScared", + "EntityDataFlagInScaffolding", + "EntityDataFlagOverScaffolding", + "EntityDataFlagDescendThroughBlock", + "EntityDataFlagBlocking", + "EntityDataFlagTransitionBlocking", + "EntityDataFlagBlockedUsingShield", + "EntityDataFlagBlockedUsingDamagedShield", + "EntityDataFlagSleeping", + "EntityDataFlagWantsToWake", + "EntityDataFlagTradeInterest", + "EntityDataFlagDoorBreaker", + "EntityDataFlagBreakingObstruction", + "EntityDataFlagDoorOpener", + "EntityDataFlagCaptain", + "EntityDataFlagStunned", + "EntityDataFlagRoaring", + "EntityDataFlagDelayedAttack", + "EntityDataFlagAvoidingMobs", + "EntityDataFlagAvoidingBlock", + "EntityDataFlagFacingTargetToRangeAttack", + "EntityDataFlagHiddenWhenInvisible", + "EntityDataFlagInUI", + "EntityDataFlagStalking", + "EntityDataFlagEmoting", + "EntityDataFlagCelebrating", + "EntityDataFlagAdmiring", + "EntityDataFlagCelebratingSpecial", + "EntityDataFlagOutOfControl", + "EntityDataFlagRamAttack", + "EntityDataFlagPlayingDead", + "EntityDataFlagInAscendingBlock", + "EntityDataFlagOverDescendingBlock", + "EntityDataFlagCroaking", + "EntityDataFlagDigestMob", + "EntityDataFlagJumpGoal", + "EntityDataFlagEmerging", + "EntityDataFlagSniffing", + "EntityDataFlagDigging", + "EntityDataFlagSonicBoom", + "EntityDataFlagHasDashTimeout", + "EntityDataFlagPushTowardsClosestSpace", + "EntityDataFlagScenting", + "EntityDataFlagRising", + "EntityDataFlagFeelingHappy", + "EntityDataFlagSearching", + "EntityDataFlagCrawling", + "EntityDataFlagTimerFlag1", + "EntityDataFlagTimerFlag2", + "EntityDataFlagTimerFlag3", +}