分享到           


故事所属系列

系列
其他
本帖最后由 羽·凌风 于 2023-3-31 11:22 编辑
事情是这样的,前段时间我不是想要在我的老猎人MOD里用geckolib加载更精致的动物模型和更好看的动画嘛,于是不得不把原本1.10.2版的MOD更新到1.12.2版(geckolib支持的最低版本)
然后学习geckolib花了很长的时间(X),同时在实际更新的过程中,遭遇了不少的问题,包括但不限于仇恨机制坏掉了啊、驯服机制坏掉了啊等等
但这些问题都是小毛病,都抵不过后来我发现的一个巨大的失误,那就是:我研究了很长时间、心心念念想要的,有了漂亮的模型动画后就要再加上漂亮的物品装备显示,可1.12版的geckolib压根没有提供跟随动画显示物品的接口!要到1.16版本才提供!!!
顿时我陷入了一个极大的困境:一边是比较好升级、并且大部分核心功能都已经升级完成的1.12.2,另一边却是充满了我很想要的新功能(包括并不限于更好的物品和动画显示、更好的海洋生态系统、更完善的游泳和飞行路径系统、更漂亮的飞行姿态机制)、但是据说核心代码和1.12差别太大以至于MOD里很多东西都要重新调整的1.16.5!
就这样,我经历了十分纠结的内心斗争,再加上看到1.16.5版本已经取代1.12.2成为了一个新的稳定版,MOD数量也超过了1.12.2,这意味着1.16.5的教程也很成熟了
于是,我,决定,我要抛弃1.12.2了,我也要升级到1.16.5!
但升级到1.16.5,也就意味着forge的核心代码存在断层式的大改,MOD代码的修改势必也会非常大,有些地方几乎等于重做(比如新版的配方表),还好我的很多动物核心代码都是放我自己的MOD里重写的,以及geckolib因为是独立的库,所以改动(应该)不会很大
你们说,这么一个耗费了如此多心力的东西,不拿来多水点帖子实在是有些浪费了,是吧?(???)
So,从头开始的《老猎人MOD升级1.16.5进度 及 往后MOD更新和BUG修复进度 完全整理》,堂堂连载!(炸)


既然要搞更新进度这种东西,那,允许我直接画个大饼,以下,是目前已在计划中的MOD及DLC(大版本更新)的玩法和系统更新计划:
1. 原始呼唤(Call of the Primeval)-基础系统,动物,魔法,生态,部位破坏 √
2. 动物伙伴(Animal Companion)-驯服,骑乘,动作优化,物种图鉴 DOING
3. 四季之歌(Seasons in the Song)-季节天气变化,作物影响、物候生态,古神 TODO
4. 文明崛起(Rise of Civilization)-组队,成就,任务,NPC,城市,科技造物 TODO
5. 领地战争(Man versus Wild)-云洲,村庄区域的攻城战,野外盗猎 TODO
6. 远古尘埃(Dust from the Past)-灭绝种,进化树,化石挖掘和复活 TODO

理想很丰满、现实很骨感,看看我能走到哪一步吧

什么?你问我计划那么多为什么不做独立游戏?当然是因为菜呀!MC现成的核心系统、世界生成、以及超级简单轻松的建模和素材制作,可以把大部分精力都放在玩法、堆量和优化上,不香吗!(炸)

 

欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

本帖最后由 羽·凌风 于 2023-3-31 23:24 编辑
感谢楼上的小伙伴一直那么支持我这个三脚猫程序猿写的BUG,呸,我是说写的MOD

下面就开始正经更新进度了!我会放上一些我参考的教程、以及遇到的问题和解决方式,如果可以帮助到其他和我一样菜鸡的Moder,就好了(X)

首先,开发环境搭建,按照我的教程(?)走就好,需要注意的是国内网络下载环境的时候可能会出错,如果下载很长时间程序都没动静,建议多换几个网络。
然后就可以直接动手了,因为是更新MOD,所以把1.12版的文件一点一点搬运到新工程里对应的位置,然后再按照教程调整代码就好
创造模式物品栏:https://blog.csdn.net/qq_24336523/article/details/119930500
语言文件:https://blog.csdn.net/qq_24336523/article/details/119938631
方块:https://blog.csdn.net/m0_51390535/article/details/124485761
物品:https://blog.csdn.net/qq_24336523/article/details/119929913
食物注册稍微麻烦一点,新版Food变成了私有类,不能像以前一样直接extends了,得extends Item主类,然后在Properties里面说明这是个food
Like this
  1. super(new Item.Properties().food((new Food.Builder()).hunger(2).saturation(0.2F).meat().build()).group(CreativeTabsLoader.tabDragicland));
复制代码
武器和工具:https://blog.csdn.net/qq_24336523/article/details/119938806
防具做法和武器一样,先去 implements IArmorMaterial 把质地注册了,再在防具的类里面直接调用就行了
唯一需要注意的是在IArmorMaterial里面注册盔甲质地的时候记得带上自己MOD的ID,不然系统默认你的盔甲材质是放在minecraft本体的材质文件夹里面的
Like this
  1. Cover("dragicland:animal_cover", 7, new int[]{1, 2, 1, 1}, 20, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0F, 0.0F, () -> { return Ingredient.fromTag(ItemTags.SAPLINGS); }),
复制代码
呼,也不知道是不是我已经被升级1.12训练得没有那么菜了,方块和物品算是forge MOD里最简单的部分,感觉就算是大更也没有很复杂,全部方块和道具,近两百个物品已经搞定
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


物品和方块已经完成了,下一步就该到附魔和配方表了
没有找到附魔的教程,不过1.16的注册逻辑很简单,模仿方块和物品那样写就行了
  1.     public static final DeferredRegister<Enchantment> ENCHANTMENTS = DeferredRegister.create(ForgeRegistries.ENCHANTMENTS, Dragicland.MOD_ID);

  2.     public static RegistryObject<Enchantment> Cover = ENCHANTMENTS.register("cover", EnchantmentCover::new);
复制代码
附魔的主类Enchantment改动不多,照着原版的附魔类稍微改一下super就行了

物品、方块、附魔都还原后,就可以搞配方表了:https://www.bilibili.com/video/av458777176/
带附魔的配方表:https://www.mcbbs.net/thread-1272294-1-1.html
配方表属于1.12跨1.13的时候最麻烦的一个部分,1.12及之前配方表可以用JAVA写,但之后全部改成了json,等于全部重写
BUT!我在升级1.12之前,曾经先试过升级1.13(我真的太想要那个海洋更新了),所以,配方表的部分我已经重写好了!直接拷过来,搞定


其实可以理解MC和forge新版为什么要大改这些注册和加载机制,把很多东西都从Java里删掉直接放到json里面,json数据条目很清晰很简便,跨版本迁移几乎不需要做什么修改,确实很方便
就是从Java转Jason的时候真的蛮麻烦的(X)

然后,小东西都解决了,开始做实体,也不知道什么时候可以有进展,已经被魔法导弹(?)渲染不出来的问题卡一天了


【发帖际遇】羽·凌风 在森林中探险时不慎遭遇土球特工队,被成千上万土球追赶,却奇迹般地全身而退,获得&sid=6I3CZ0 46探险经验 !

际遇事件仅作娱乐,正式设定请见【DL故事集】
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


经过几天被1.16.5虐待,我发现……物品、方块、附魔、配方表,全都是小case,果然实体才是大魔王啊!!!
实体的 Attribute 和 Render 方法全改了,我已经找遍了教程,还是没能把 Attribute 的注册完全搞定,然后又发现 Render 更难!
尤其是1.12很好用的多层贴图,被1.16取消了!!!!!没这个东西我怎么做部位破坏!!!!!
就这样,我看遍了教程,都没有能够做出来一个可以正常生成的、有贴图的实体!不管怎么改,要么生成不出来、要么一出来就闪退、要么贴图错误
就算搞定了这部分,新版 Biome 的刷新注册改动更多!教程也更少!我已经完全没有头绪要怎么搞定新版的实体注册了……
而我甚至都还没有办法去看看新版本把size写死后到底要怎么自由改变动物的尺寸……
总感觉这个新版的实体,继续研究下去,得变成完全重写了,基本上等于写一个新MOD,我手上有一个写好的MOD我干嘛还要写一个新MOD……
简单来说就是,我严重低估了升级的难度!并且可能也高估了1.12添加新功能的难度(X)

于是,和首席玩家灿同学(?)讨论后,我决定……还是回到1.12版吧!(没出息.gif)
有必要的新版功能(比如海洋群系)直接通过1.12新增群系的方式解决,1.12的教程毕竟还是比较多,做群系的参考也多
呜呜呜,继续修1.12版吧……还是按照一开始的计划,坚守1.12版,新版本太可怕了,MC为什么更新要大改源码啊


【发帖际遇】:羽·凌风断河市被流浪猫老大的左右手卡洛·斑以收保护费的名义讹诈了 7F卡币 。

际遇事件仅作娱乐,正式设定请见【DL故事集】
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 6#  @紅峽青燦

之前是被物品在模型上渲染(也就是让动物可以像玩家那样手中拿着剑)给卡死了,发现1.16版的geckolib才有这个功能
哎,1.12没有这个接口,就想办法手动计算这个剑该渲染的位置吧(X)WWWWWWWW


回到1.12,那就开始放送正经的更新吧,虽然上次错误发布(?)后我一直都在修代码,但是动物模型翻新的事也没有落下呢!先前发布的时候翻新了10个模型,到现在已经做好15个了!
先来秀一下模型,有一些之前使用同一个模型但实际设定外观差别比较大的物种,也都独立模型了!

首先是吉祥物(?)因为泥球独立成种了,所以土球的亚种皮肤就取消了(X)


飞行动画测试功臣(?),三种飞蜥龙,模型没改动,但是添加了不少动画


两种喙龙,顺便因为添加了性别系统,就也给高山喙龙加上了雌雄差异(公的红角,母的黄角)


林兔和雪兔,模型和原版差不多,但有了动画,比如拜倒(?)

草兔垂耳,模型和标准兔子(?)不一样了

顺便加入新兔子,对这个名字叫鼠的东西是一种兔子(?)


猪突猛进,山猪加了鬃毛和背刺(?)好看多了


一字触,获得了更加精神污染的攻击动画(X)


大鼻子猪 熊的通模也改精致了一些,顺便加入了利爪熊和幻嗅


角犀原本就很好看了(?),有了动画更好看哦

如果你遇到一头瘤犀,跟着他,你会发现他身上的瘤子也会弹动的哦(XXX)


鳄鱼模型翻新,背上的棘刺和头上的角都更精致了,什么你问下面这是个什么鳄鱼?这是有着泽原鳄的颜色、高山鳄的鼻角和大戟河蜥的背鳍的三位一体混种鳄!(?


厌世跳鼠,看过兔王争霸赛的朋友们应当已经认识他了(X


小型鱼类的模型放大+翻新,四种小型鱼(圆斑鱼、切肉鱼、草鱼、土鱼)的物种区别能看得更清楚了(?


大型鱼长得都不太一样,模型区分开了,血斑鲈还是常规的鱼型

而灰石鲈已经完全是一块石头啦(X),之后尝试再做做看水域底栖动物的AI~


所有翻新的模型都加上了有体积的鞍具,鞍不再只是单纯的贴图了,比之前好看多了吧
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


本帖最后由 羽·凌风 于 2023-4-8 17:01 编辑
回复 8#  @紅峽青燦

这难道不会让模型运动的时候,不停的在计算部件生成位置导致剧慢或者卡死吗?
还好,毕竟只是几个立体几何坐标点的计算,对电脑来说完全是小case
这个更主要的问题是……研究了很久,公式依然建立不起来,我立体几何已经完全还给老师了(炸)


继续汇报近况,最近为了做一些习性更复杂的动物,把原版分开包装的路径系统(原版陆地、飞行、攀爬、游泳都是相互独立的)全部整合到一起了,这样可以试着做一些更自由的路径组合方式,比如又会钻地又会游泳的土鱼呀、又会飞行又会攀爬的风翔龙啊之类的
飞行方式也优化了,之前参考的“更多生物”MOD里的飞行方式,结果做出来动物老是垂直方向飘忽不定地飞,跟气球似的,这次修改之后可以飞得更稳定了(?
跳跃也优化了,先前跳跃高度很迷离,一个熊能跳两米高(?),现在都削得自然了些

顺道还发现了一个钻地生物的大BUG,就是我是按照方块的材质种类属性(Material)来设置钻地生物能钻的方块的,然后基本上这些动物都可以钻泥土(Material.GROUND)。但我发现咋我的土鱼老是钻进去了却会闷死在里面,最后发现,它在泥土的状态钻进去了,而当泥土长草之后变成了草方块,材质就变成了(Material.GRASS)!而对于草材质的方块,可怜的土鱼就钻不动了,然后就在里面被闷死。给钻地类型里加上草的材质就没事了。
什么恐怖故事,开开心心出门散个步,头顶突然长了草,就被活埋了 (X)

再测试一下驯服动物的数据储存,没问题的话1.12版就可以再次发布了(?)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 10#  @紅峽青燦

那是怎么一回事呢?
这个问题我一直没有复现,所以不知道你当时到底是什么情况WWWWWWW
不过既然没有复现,那就没关系了吧(X)


目前移动路径差不多修好了,驯服代码也换了个接口,现在驯服成功会弹出原版驯服马和狗时候的成就,应该没问题了(?
顺便新增两个小东西,一个是犬笛右键会强制将没睡觉的宠物移动到自己身边,另一个是动物屎会自动降解、并且降解的时候会在原地产生一个骨粉的效果(?
采集屎获得的道具,也可以和骨粉一样右键对着植物使用催熟,屎的功能终于完善了!(X)
内测版本已发送,没大问题就可以重新更新了
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 12#  @紅峽青燦

其实我有点疑惑,这些问题很多都不存在于大地走龙那次的测试中,比如裂开比如不能骑龙攻击,之前都是已经完善的功能了,为甚么现在反而有虫了?是甚么东西更新影响了这些部分本来的功能?
感觉基本所有的问题,都是存档玩到后期实体数量太多之后,游戏运算量太大被干崩溃导致的问题
比如残影看起来像客户端错误生成了实体,但一开始实体没有出现在客户端的话,后续正常也不会突然出现在客户端的
还有不攻击不跟随,明显也是AI的计算力全被卡死了,没触发正常的AI计算
所以这些问题在我测试的时候都没有,我测试的存档动物显然并没有多到卡死程序
下一步看来是看看怎么再优化一下刷新机制,以及看看有没有更好的办法控制某个区域内动物的数量

还有一点就是,你玩的时候开的多大的内存?反正我以前那个电脑用默认1G以下也是日常卡死,至少要2G才可以流畅一些,可以的话当然越高越好

至于其他的,看血量和饱食度是shift右键打开物品栏来看,和原版打开马的物品栏一样,而且现在饿到四分之一会有粒子显示,用的生气的村民那个粒子(?)
而骑龙左右键你人物有动作是正常的,只是没有动画的动物你以为他没动而已WWWWWWWWWW
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 14#  @紅峽青燦

那你这个真的太奇怪了,我开个新世界跑一两天都看不到几个动物,你那里怎么一下子就生成那么多……
而我的测试存档的寿命已经有现实好几天了,超平坦世界的密度都还和你那个刚开的存档差不多,甚至密度还低一些……
也只见过一次裂开的状况,当时重开之后就没遇到过了
就像我昨天说的,感觉你那边怎么好像我设置的刷新限制全都不起效啊……不会真的是正版受害者吧(X)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 16#  @紅峽青燦

1骑上龙之后Lshift(LS)不一定能下来,要是下不来就卡住了无法脱离骑乘也无法回到地面,甚至打不开玩家背包介面。
2shift+右键未必能打开宠物背包
1望远镜好像不太正常,近距离动物不显示,不知道怎么对准动物
这几个,就是我之前跟你说过的,MC自己碰撞箱判定太粗糙导致的
小体型的动物还不明显,大体型再加上独立的部位碰撞箱,或者像望远镜用视线的扇形面代码去检测碰撞箱,就会变成这样
当时是谁说只有动作游戏需要更准确的碰撞箱,MC不需要呢?(X)

其他的都是很简单的问题,就修上面的核心问题的时候顺便慢慢修了
至于营养级的问题,直接降低一部分肉食动物的生成几率,再把狩猎的范围判定减小、逃跑的范围判定提高,让动物分布得更均匀些,应该就行了(?)
不过密度低了又可能出现肉食动物打不到猎饿死的问题,不过算了,反正刷出和刷没的频率也都调高了(X)

动物比普通的MC略少你是指动物(牛羊)还是指怪物(僵尸)?我想要的是比动物略多、但比怪物要少,原版怪物单位面积(?)上限是70个、动物上限是10个,我想达到30-40个左右这个样子


【发帖际遇】羽·凌风 见路边的流浪猫饥寒交迫很是可怜,花了 2F卡币 为他买了点鱼干。

际遇事件仅作娱乐,正式设定请见【DL故事集】
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


一边勤奋地清理内测出来的BUG


一边又做了两个小动物
独触鱼

和草蛙

有动画之后真的变得好可爱呀(X)


灿 写道:
本王已經是DL猥瑣生存大師惹
我懂了,这就增加难度(XXX)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


本帖最后由 羽·凌风 于 2023-4-13 21:51 编辑
回复 20#  @紅峽青燦

哈哈哈哈这个儿歌,点开之前没想到那么合拍!WWWWWWWW
灿你会玩虚拟歌姬吗?求出歌(X)WWWWWWWWWWW

难度只是开个玩笑啦,你看我很听你的,之前血量攻击啥的都优化过了WWWWWW
难度等之后的DLC再慢慢加(X)

这一波真的发现了好多藏在奇奇怪怪的小地方的BUG,鬼知道我当初是怎么写出来的
呜呜呜,我果然只会写BUG

虽然只会写BUG,但还是要保持动物的更新,这次是猫咪

狞猫用小型猫通模做出来感觉好小啊(X)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


比较严重的问题基本都修完了,1.12版终于——重新更新!
https://www.dragicland.com/forum/viewthread.php?tid=3088
接下来继续优化一些不那么致命但依然存在的BUG了
包括但不限于,望远镜获取动物不准确的问题,矿洞不刷新动物的问题,大型动物右键互动时灵时不灵的问题
好难啊,为什么到处都是BUG(X)

顺便又增加了一个新的AI,野生的立兽如果没有装备武器,又看到地上丢了武器,就会自己走过去捡起来装备
可萌了(?
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


尝试修望远镜获取实体不准确的问题,之前会不准确是因为我的望远镜判断实体的时候用的是原版的视线系统(RayTraceResult),直接将视线的距离增加,就能获取到更远的目标。
而视线系统实际上是一个锥型的,在增加距离的同时,视角的广度也会一起增加,导致经常会获取到压根不在放大后的视野里、而是位于周围、相对玩家的距离比目标更近的非目标动物。
换句话说,通过原版代码修好这个问题比较困难,压根不知道从哪里改起比较好。于是,我干脆换个思路,想想别的方法。
首先是想用原版玩家身上的 Reach_Distance 属性,这个属性影响玩家能够接触到的实体和方块的距离,原版是五个方块(也就是玩家站在原地最远可以碰到五个方块的距离),把这个数值改成200后,果然可以看到200米距离上的方块都有描边了,也就是都可以选中了。
但是……这个属性对实体无效!它只能影响方块的判定,不能影响实体啊!实体的判定距离依然还是五米左右!
没办法,只好继续另寻他法,搜索发现其他许多人也遇到过类似的问题,而他们的解决方式,就是利用方块,既然远距离方块的获取是准确的,那么就先获取远距离的方块、然后再判断方块附近的实体,就能获得远距离的实体了。
但这实际上有很大的局限性,比如视角较高、实体又比较大的话,实际取得的方块其实和实体的距离是很远的(请自行想象视角朝天看飞翔的龙,那对焦的方块都不知道飞哪儿去了),基本只有在实体都在地上跑、并且体型都很小的情况下才适用,比如原版的僵尸之类的怪物,这个思路对我的MOD并没有什么帮助。
于是我想了一个更简单粗暴的方式:使用望远镜的时候,自动朝着玩家面向的方向持续发射一个很小的、没有重力的实体,然后在实体撞击到动物的时候获取该动物的信息,显示在望远镜的界面上。更通俗的讲,就是使用望远镜的时候会发射一道激光束,然后获取被激光束打中的动物的信息。
激光望远镜,升级完成!非常精准 (?




就是看超远距离的动物需要等激光跑一会儿,稍微有个约摸一秒的延迟就是了(X)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 25#  @紅峽青燦

为啥你的望远镜画面比我实际遊玩的时候精巧又漂亮!!
所以我一直说,遇到问题都要报!因为真的很多时候你遇到的问题,我测试的时候压根就没有出现过WWWWWWWWWW
既然我没有遇到、没有复现,那我当然也就不会改(炸)WWWWWWWWW

至于望远镜……我改成了低级(?)镜子只能看到近处的(也就是上面说的五米内的)
不准确的那个还是不保留了,毕竟那是正儿八经的BUG,我们不能学原版,把BUG称作特性(炸)WWWWWWW
然后高级望远镜就是低级镜子+石英+金锭升级上去(?


另外这次还做了所有模组合成配方表的获得方式,和原版一样,获得原材料的时候,会同步获取原材料对应的配方表
这个功能需要用原版的成就系统(进度系统)来做:https://harbinger.covertdragon.team/chapter-22/
只有粗略的教程,没有找到更具体的教程,绕了点弯路,直接放个成品好了,低级望远镜(?)的配方表获取方式,为物品栏中存在铁锭或者玻璃板时自动获得(?
{
  "criteria": {
    "1": {
      "trigger": "minecraft:inventory_changed",
      "conditions": {"items": [{"item": "minecraft:glass_pane"}]}
    },
    "2": {
      "trigger": "minecraft:inventory_changed",
      "conditions": {"items": [{"item": "minecraft:iron_ingot"}]}
    }
  },
  "rewards":{
    "recipes": [
      "dragicland:tame_glass"
    ]
  },
  "requirements": [["1","2"]]
}


【发帖际遇】:天空中传来隆隆的吼声, 羽·凌风 抬头一看,一条银角烈焰龙飞过,落下了手中的宝贝,赶紧捡起来卖掉,净赚&sid=6I3CZ0 85F卡币 !

际遇事件仅作娱乐,正式设定请见【DL故事集】
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP

分享到