- 音频(音频.md §2):Session.Sound 事件回调,破坏/放置/攻击/村民环境音接入, 客户端 audio.Manager 3D 衰减 + 监听器跟随 + 音量可调 - 原版掉落:草方块→泥土、石头→圆石、树叶无掉落(no_drop);掉落物实体 用物品图标小广告牌渲染(物品纹理并入实体图集) - 动物攻击(动物体系.md §5):左键优先射线命中实体(半径 0.6 球体判定), 伤害/击退/死亡移除+肉类掉落;僵尸掉腐肉 - 村庄村民(村民系统.md §2):Generator.VillageAt 定位村庄中心,会话扫描 已加载区块在村庄生成 3 名村民 - 种子与灵敏度配置:client.yaml world.seed/name、mouse_sensitivity; 存档与种子联动;鼠标左右反转修复(右移应右转) - 设置界面(UI与输入.md §6):屏幕状态 4,灵敏度/音量滑条、世界种子显示、 按键教程多行列表(cjkfont 支持 \\n)、完成按钮;主菜单/暂停菜单入口 - 准星指向方块名:左下角 CJK 显示(lang 本地化,tick 光栅化渲染线程上传) - 截图统一存项目根目录 jietu/(paths.RootDir;dev 构建识别 bin/ 布局)
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
//go:build gl
|
||
|
||
// 实体可视映射:实体类型 → 广告牌贴图键与高度(渲染.md §5.3)。
|
||
package main
|
||
|
||
import (
|
||
"mc/internal/entity"
|
||
"mc/internal/item"
|
||
)
|
||
|
||
// entityVisual 返回实体的贴图键与身高(米)。
|
||
// 动物按 ID 轮换四种外观(cow/pig/sheep/chicken);掉落物用物品图标(0.3 米小广告牌)。
|
||
func entityVisual(e *entity.Entity, items *item.Registry) (key string, height float32) {
|
||
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
|
||
}
|
||
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
|
||
default:
|
||
return "", 0
|
||
}
|
||
}
|