2026-08-16 10:08:40 +08:00
|
|
|
|
//go:build gl
|
|
|
|
|
|
|
|
|
|
|
|
// 实体可视映射:实体类型 → 广告牌贴图键与高度(渲染.md §5.3)。
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
2026-08-16 20:18:52 +08:00
|
|
|
|
import (
|
|
|
|
|
|
"mc/internal/entity"
|
|
|
|
|
|
"mc/internal/item"
|
|
|
|
|
|
)
|
2026-08-16 10:08:40 +08:00
|
|
|
|
|
|
|
|
|
|
// entityVisual 返回实体的贴图键与身高(米)。
|
2026-08-16 20:18:52 +08:00
|
|
|
|
// 动物按 ID 轮换四种外观(cow/pig/sheep/chicken);掉落物用物品图标(0.3 米小广告牌)。
|
|
|
|
|
|
func entityVisual(e *entity.Entity, items *item.Registry) (key string, height float32) {
|
2026-08-16 10:08:40 +08:00
|
|
|
|
switch e.Kind {
|
|
|
|
|
|
case entity.KindZombie:
|
|
|
|
|
|
return "entity/zombie/zombie", 1.95
|
|
|
|
|
|
case entity.KindVillager:
|
|
|
|
|
|
return "entity/villager/villager", 1.95
|
|
|
|
|
|
case entity.KindAnimal:
|
|
|
|
|
|
switch e.ID % 4 {
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
return "entity/cow/cow_temperate", 1.4
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
return "entity/pig/pig_temperate", 0.9
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
return "entity/sheep/sheep", 1.3
|
|
|
|
|
|
default:
|
|
|
|
|
|
return "entity/chicken/chicken_temperate", 0.7
|
|
|
|
|
|
}
|
2026-08-16 20:18:52 +08:00
|
|
|
|
case entity.KindItemDrop:
|
|
|
|
|
|
d, ok := e.Data.(*entity.Drop)
|
|
|
|
|
|
if !ok || items == nil {
|
|
|
|
|
|
return "", 0
|
|
|
|
|
|
}
|
|
|
|
|
|
def, ok := items.Get(d.Item)
|
|
|
|
|
|
if !ok {
|
|
|
|
|
|
return "", 0
|
|
|
|
|
|
}
|
|
|
|
|
|
return def.Texture, 0.3
|
2026-08-16 10:08:40 +08:00
|
|
|
|
default:
|
2026-08-16 20:18:52 +08:00
|
|
|
|
return "", 0
|
2026-08-16 10:08:40 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|