分享到           


故事所属系列

系列
其他
本帖最后由 羽·凌风 于 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,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

哈哈哈哈,我又学到了一个骚操作,给我的IDEA装了个AI插件!它就成了我的专属活体教程!
比如之前云洲变色补丁(?)的问题直接问他就好啦!


我选择用方块的随机刻改变方块状态,然后刷新颜色的方式来做,因为每个区块每刻都会存在随机刻方块,用这个方式变色应该是比较丝滑、又对运算负担不大的
最后成功,终于同步变色了!随着太阳升起,整个云洲都变成金色!

日落时则会整体慢慢变成红色!

感觉比之前试过的满口跑火车的镜像GPT强多了,至少说出来的代码还真能直接用,关键还不需要翻墙、也没有镜像站的每天多少句话限制

顺道做了一个新的升级版望远镜,放主手右键和望远镜用法相同,放副手可以随时获取准心处的动物信息(但没有缩放功能),基本就是一个方舟A镜的状态啦~


妈妈再也不用担心我打怪时看不到对方的血量了(X)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


整个地面跟个补丁似的青一块红一块,让我再研究一下该怎么办……

WWWWWWWWWWWWWWWWWWWWWWWWWWWW

我等不及要搬去雲州了,求修理卡頓WWWWWWWWWWW
但雲州滿地都球,只能天天吃蛋糕了(X
紅峽青燦 于 2024-4-18 22:26 补充以下内容
要是不卡,是真的很好玩啊

我等不及要去雲州,是因為雲州是空島,空島地形都是比較易守難攻的,而且比較容易破壞原版的地形或者覆蓋掉來減少生成野生動物。以前玩空島mod的時候我都會在整個島上建牆然後打動進去住在山體裡面,相當安全,要是同伴攻過來還一時找不到我在哪裡WWWWWW

感覺雖然添上也有龍,但和地面無邊無際圍城還會被野怪從外部破壞的情況比起來,空島確實很吸引人
我好想搬到一個安全的地方去不要再天天家門口有高級龍了嗚嗚嗚嗚嗚

快把萌燦抱回家!
Don’t think, just do. For the heart is an organ of fire.

TOP


觉得要是能做出云州独有的因为天气而会有很明显环境色的差别
我尝试了一下,结果比我想象的难多了
改色倒是容易,根据时间变色也可行,但难点是方块的颜色似乎只在区块存在方块状态刷新的时候才会重新加载,比如说在这个区块里放置一个新方块的时候才会加载
这就直接导致,就算我写了一个根据时间丝滑变色的方法,但方块的颜色变化依然是一卡一卡的,并且每个区块频率还不一样
我本来想做个日出日落时云洲大部分地形方块都会慢慢变成红色、再慢慢变回来,结果这个问题导致变色效果超级鬼畜,整个地面跟个补丁似的青一块红一块,让我再研究一下该怎么办……

继续汇报进度,第一只云洲物种搞定,同时增加了五只球!(?)

鸟人的套装也搞定了,并附带阿斯加德人服装经典小圆片设计(炸)

骑乘移动方式也增加了一种“滑行”,可以在一个特定材质的地形方块表面从慢到快滑行,给冰海狼和皮球用的,冰海狼是滑冰,皮球是滑沙
滑起来有一种逮虾户的快感,绝对快乐


【发帖际遇】:羽·凌风 走在大街上摔了一跤,不但没有幸运地捡到钱,反而不小心丢失了 25F卡币 。

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

TOP


所以......神明就類似於村民的移動機制,而且是免疫傷害的?
那我是不是可以用地形引誘然後把神明捉起來,就可以一直獲得加護不用大老遠去找了

哦我想要五彩繽紛是因為按你的文章我覺得云州好暗沉啊!!就到處都一片灰藍灰藍的,沒有天上人間的感覺WWW
可是你有一篇文章我記得是描述過那些云土還是樹啥的,一天中被陽光照射後變幻出非常鮮豔的除綠色之外的顏色,就讓我想到那個彩虹樹模組,覺得要是能做出云州獨有的因為天氣而會有很明顯環境色的差別,那可就太好了!

快把萌燦抱回家!
Don’t think, just do. For the heart is an organ of fire.

TOP


想不到吧,立马又有大型进度推进了
神明的基础代码、以及护石的附魔技能也完成啦!
地图上极低概率刷新体型巨大的发光动物,它们就是神明

神明除了游荡什么都不会干,不会攻击也不会受到攻击,手持任意护石朝着它们右键,就可以获取来自神明的祝福

这些技能都会是一些即实用又强力的被动,让你的宠物字面意义上的“如有神助”

好了,现在系统都差不多搞完了,真的得加劲做新模型了(XXX)


關於這個,就算我不會做mod我也聽說過,因為以前滿常玩別人做的mod,我就聽過一種說法是:「無論是甚麼mod都一定必須有石頭和土壤方塊,所有世界都必須建立在石頭上。」現在想想大概就是這種原因吧。我也看過模組開發者說想要做一個完全玻璃化的世界來致敬冰雪奇緣,但無法不建立在石頭上所以失敗了。
这个确实蛮难的,最后那个人的解决方法是把地形生成注册成一个类似方法的东西,这样Biome注册的时候就变成了加载一个方法,最后游戏内调用的时候(已经全部注册完毕之后)就能成功调用到已经注册后的地形生成方法
这思路……哪怕能想到,对JAVA代码不熟的人也写不出来啊(害怕.jpg)

树叶草地变色啥的倒是不难,因为原版群系就是用一串十进制数字来控制每个群系里草地和树叶的颜色的,只要用某种公式调整那串十进制数字代码就行了
话说为啥想要五彩缤纷啊,清爽有清爽的美啊WWWWWWWWW
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


大型進度推進啊喜聞樂見!!!!!

哪怕在总线中调整两者的注册顺序,也还是会报错说找不到自定义的SurfaceBuilder
查阅资料发现似乎是因为MC注册SurfaceBuilder的时候是强制将它放在所有注册最后才加载的,也就是说就算让Forge先加载了它,它真实起效的时候依然会是在Biome注册之后,导致Biome注册时找不到新的SurfaceBuilder只能报错

關於這個,就算我不會做mod我也聽說過,因為以前滿常玩別人做的mod,我就聽過一種說法是:「無論是甚麼mod都一定必須有石頭和土壤方塊,所有世界都必須建立在石頭上。」現在想想大概就是這種原因吧。我也看過模組開發者說想要做一個完全玻璃化的世界來致敬冰雪奇緣,但無法不建立在石頭上所以失敗了。

但你這嫖得是不是太戲劇化了一點WWWWWWWWWWWWW

雖然......有點不五彩繽紛......但我喜歡那個發光藍石
話說我以前玩過一個模組,樹葉會隨著遊戲裡的時間變色,好像叫做reinbow tree world?
就早上是紅色,接著會慢慢變成橘色黃色綠色入夜前是藍色,然後夜晚會變成全黑
相當討厭,晚上一時看不清楚會撞到樹或著爬不過去WWWWWWW

好想喊你給我發模組測試,但我現在正在跟那個該死的法規文件奮鬥......

快把萌燦抱回家!
Don’t think, just do. For the heart is an organ of fire.

TOP


本帖最后由 羽·凌风 于 2024-4-12 09:45 编辑
维度搞定了,那就继续开始做生物群系!群系的教程也不多,主要参考的这俩:
https://www.bilibili.com/read/cv28822845/
https://blog.csdn.net/Jay_fearless/article/details/120580734
因为不想做json,所以主要参考的第一个链接,注册方式则是两者结合了一下

由于云洲没有石头,而石头是主世界地面生成之后的默认方块,所以地面生成也得改
https://blog.csdn.net/Jay_fearless/article/details/120586013
但地面生成的注册就要麻烦不少,按照教程做出来,却发现注册Biome的时候不让用自定义的SurfaceBuilder,哪怕在总线中调整两者的注册顺序,也还是会报错说找不到自定义的SurfaceBuilder
查阅资料发现似乎是因为MC注册SurfaceBuilder的时候是强制将它放在所有注册最后才加载的,也就是说就算让Forge先加载了它,它真实起效的时候依然会是在Biome注册之后,导致Biome注册时找不到新的SurfaceBuilder只能报错
解决这个问题的方法特别戏剧性,我先是在Forge论坛上看到一个人和我遇到了相同的问题:
https://forums.minecraftforge.ne ... ith-surfacebuilder/
楼主自己在帖子里说他解决了这个问题,但是没具体说是咋解决的……于是我去翻他别的帖子,发现他不久之后问了一个新问题,里面把修改后的注册代码贴出来了!
https://forums.minecraftforge.ne ... es-make-game-crash/
于是,我也把这个自定义SurfaceBuilder注册的问题解决啦

最后一步是树!草和花可以用地面的,但树要做新的,这样才好看!
树的制作和生成方式找到了一个讲得很全面的教程:
木头:https://www.bilibili.com/video/BV1KF41197M2/
树:https://www.bilibili.com/video/BV1am4y1E7sj/
世界生成:https://www.bilibili.com/video/BV1mV4y1b7Se/
树比想象的容易做多了,为了多样性,做了两种树

树上还有几率结果,带果的树叶挖掉有几率掉落金苹果甚至附魔金苹果,这就是全世界最好的阳光农场的含金量啊(X)


如此一来,云洲的地形和群系生成,差不多完成了!
整体色调上层青绿、下层灰蓝,和主世界有明显的区分


还会刷一种类似萤石的发光方块,萤石是金色,云洲的这就是蓝色的


石墙木门啥的建筑方块就等下个DLC做云洲村庄的时候再做了,这轮就只做自然环境了~
那么,下一步得做新物种了,云洲特有物种往上一加,这维度就更有趣了


【发帖际遇】羽·凌风 看见现行犯立刻上前捕捉,见义勇为被刀疤警长克莱尔·地皇鼓励,获得&sid=O1KzpK 11探险经验 !

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

TOP


我要搬家去雲州
我這人就喜歡天空,但雲州在我的感覺裡,從你的文章裡看起來到處都灰白灰白泛著藍,並不漂亮WWWWWWW
求顏色鮮艷點(?)
我作為一個真正的人類(???)還是很喜歡綠色和彩色的WWWWWWWWWWWW


【发帖际遇】 紅峽青燦 正在悠閒浏览龙洋城的夜间风光,忽然青光一闪,被割破的口袋成为龙洋第一杀手留下的独一无二纪念礼物。哦不!那好像用是 98F卡币 换来的。

际遇事件仅作娱乐,正式设定请见【DL故事集】

快把萌燦抱回家!
Don’t think, just do. For the heart is an organ of fire.

TOP


经过了框框一顿查资料、找教程、学开源项目的源码,我,终于,把维度和传送都搞定了!
先放上新增维度需要用到的资料:
https://www.bilibili.com/read/cv25708152/
https://blog.csdn.net/Jay_fearless/article/details/120573322
https://www.bilibili.com/video/BV1z5411a7rH/
https://www.bilibili.com/video/BV1Gt4y1D7Wx/
https://minecraft.fandom.com/zh/ ... %E5%BA%A6/Generator
但噪声生成最后并没有用上,因为发现1.16.5版似乎是因为太老了,网上的json教程全都不适用,就算按照教程写了,运行的时候还是会报错
于是就干脆自己写了个BiomeProvider,维度json调用新的Provider,就可以跳过那些复杂的噪声参数了

同时还参考了很多也是建立了一个天空维度的老牌开源模组“天境”
https://www.mcmod.cn/class/94.html
https://github.com/The-Aether-Team/The-Aether
总之,我的云洲维度,终于也完成了!

使用白云土搭建传送门框架+任意风系魔法对门内右键,即可产生云洲传送门

进去之后和原版一样也会在对面生成一个相对应的传送门

云洲就是空岛啦,等之后把群系和特有物种都做好后,绝对漂亮

除了搭传送门,去云洲还有更简单暴力的方式:直接在主世界往天上飞就能抵达云洲,同理从云洲往下跌落也会落回主世界
有会飞的宠物就能探索啦

系统搞定,可以继续愉快地堆量了(X)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


2.10发布后,本计划继续往下开发,但是……发现网络上关于维度、群系和世界生成的教程巨少!这种涉及到高级玩法(?)的教程几乎找不到!好不容易找到点也是浅得很,全是放代码啥机制都不讲!
哎,只好先把云洲的泥土和草方块、以及草的扩散机制做好,群系和维度生成再慢慢想办法吧(X)

因为白云土有自己的特殊机制,所以需要做个单独的方块,不像原版那样每个群系都是泥土方块变色

然后红龙之后的新模型都没放,来补一个~
四种狼

六种狐狸

包括俩新物种,菜狗和羽尾兽,菜狗可爱滴捏

两种蠕虫,精神污染千眼虫 & 新人杀手血蛭,都得到了外观上的史诗级加强(X)


两种蚂蚁,按照设定新做的黑蚁变得超级像苍蝇了(XXX)

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

TOP


本以为问题差不多都搞定了,结果一测试又发现一个大BUG!那就是无论用什么方式,动物的物品栏都打不开,从1.16.5一开始就打不开!
呜呜呜,为什么总会出现这种本该第一轮就修好结果却延续了好几代的恶性BUG

排查发现,是我通过事件覆盖掉原版马的物品栏GUI时,通过硬编码字段的方式来获取GUI里的实体和物品栏,因为这两个代码在GUI里都是私有的所以无法轻易获取,这段代码在开发端可以畅通无阻地运行
  1. HorseInventoryContainer oldContainer = (HorseInventoryContainer) event.getContainer();
  2.                 AbstractHorseEntity horse = ObfuscationReflectionHelper.getPrivateValue(HorseInventoryContainer.class, oldContainer, "horse");
  3.                 IInventory horseInventory = ObfuscationReflectionHelper.getPrivateValue(HorseInventoryContainer.class, oldContainer, "horseInventory");
  4.                 if (horse instanceof AnimalDragicland && horseInventory != null) {
  5.                     player.openContainer = new AnimalInventoryContainer(player.currentWindowId, player.inventory, horseInventory, (AnimalDragicland) horse);
  6.                     player.openContainer.addListener(player);
  7.                 }
复制代码
但忽略了很重要的一点,那就是Minecraft的编码是混淆的!开发端自带反混淆,我这里可以获得"horse"这个变量没错,但在实际游戏中,由于MC源代码混淆了(变量和方法变成乱码),通过"horse"这个变量就无法获取到实体了!
因为经过混淆后,这个变量不再是"horse",而是"field_111242_f"! 1.16.5反混淆表
继续用写死字段的方式硬编码这段代码显然也不是最好的解决方式,如果能不通过字段名就获取到实体,就不会再有这个BUG了……然后我的注意力落在了那个Private上……
emmmm,我不是刚学会了一个操作private的方式嘛?于是试试在 accesstransformer.cfg 里加上实体和物品栏这俩私有变量

重新构建后能顺利使用这俩私有变量了,这样一来问题终于解决了!


希望不要再出现这种很恶性但一直都没有发现的BUG了
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


最近学到了一个全新的骚操作,来记录一下~

玩过1.16.5前两版的同志们应该知道,骑乘动物状态下的视角调整不是很丝滑、和1.12的那种摄像机直接往后延伸的感觉不一样
那是因为1.16.5控制摄像机的代码在Forge里是private的,我在调用摄像机事件的地方用不了,所以只能另想办法,在骑乘时候强行把玩家的位置拉远,营造出视野拉远的效果
但这样做会有两个BUG,一个就是视角调整不够丝滑、尤其是视角和动物平视的时候很容易看不到动物(毕竟玩家位置和动物不一定齐平),观感不佳;另一个BUG更严重,就是当动物站在墙体旁边时,玩家位置很可能会被计算到墙体里面去,造成玩家视野穿墙
但我学习冰火传说源码的时候,发现他用的正是那个private的代码,不对啊,版本都一样,没道理他能用,我就不能用

于是到处寻找这到底是怎么回事,终于在Forge的GitHub Wiki上,发现了这句话!

原来……能转啊!
官方教程:https://github.com/MinecraftForg ... lob/master/FMLAT.md
回头去冰火传说的源码里一看,果然有这个叫做AccessTransformers的东西,立即学起来
在main\resources\META-INF里新建accesstransformer.cfg文件,学冰火的样子写成这样

再去构建文件(build.gradle)里加上这个cfg文件的地址
  1. minecraft {
  2.     accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
  3. }
复制代码
重新构建后,果然,那两个private方法不再报错,可以为我所用了!


简而言之学了一个修改Forge源码可用性的方法,修复了一个困扰了好久的BUG,骑乘视角调整又可以回归舒适啦
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


本帖最后由 羽·凌风 于 2024-3-18 21:36 编辑
2快要完结了,测试员们给力吧,完结了就可以启动3啦!希望不要有太多我不会修的BUG(XXX)

继续最后一点功能的开发,终于规划好了怎么搞动物后天通过卷轴学习魔法!
简单来说就是做了个驯服动物的魔法库(?),技能界面加了一个物品栏,可以把卷轴放进去,就能直接学会这个卷轴的魔法
每只动物能学5个,学会后就能和物理招式一样随意配置到四个技能键位里了

学习超过5个技能的话,动物就会从第一个开始遗忘
驯服野生动物的时候,动物会随机自带几个野生状态会的魔法
另外既然驯服动物也有自己的魔法库了,那么驯服动物自己打架的时候就不会抽取野生状态的魔法库了,而是会从驯服库里面抽魔法来用
所以就算不能骑乘的个体,玩家也可以考虑配置一下这个魔法库,让动物自己打架的时候多用些更容易打到敌人的魔法

另外做了个新的骑乘移动方式:滑翔
浮空状态下自动缓降+向前移动,并且免疫跌落伤害

不过目前只有高山喙龙能滑翔

呼,新功能都搞完了,接下来优化、debug一轮就可以完结2了!


【发帖际遇】:天空中传来隆隆的吼声, 羽·凌风 抬头一看,一条银角烈焰龙飞过,落下了手中的宝贝,不幸正好砸在头上,花去了&sid=O1KzpK 44F卡币 医药费。

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

TOP


哦哦哦哦哦哦哦太棒了!
等我不得不跟飛機暫別的時候,就又輪到了我來測試的時候了!
好興奮,好想當個普通玩家啊
但還是應該先努力抓蟲子WWWWWWWW


【发帖际遇】紅峽青燦 看见现行犯立刻上前捕捉,见义勇为被刀疤警长克莱尔·地皇鼓励,获得赏金&sid=O1KzpK 63F卡币 !

际遇事件仅作娱乐,正式设定请见【DL故事集】

快把萌燦抱回家!
Don’t think, just do. For the heart is an organ of fire.

TOP

分享到