分享到           

本帖最后由 羽·凌风 于 2023-4-27 21:02 编辑
开始修洞穴刷新,这还真不容易测试和找错,因为洞穴里刷新了,我也看不见!(X)
于是给创造模式的望远镜增加了个类似方舟A镜的发光效果,然后发现……
地下刷了蜘蛛!真恶心!灌丛蛛果然就是白额高脚蛛plus!(X)

修改了一下动物数量上限的检测方式,把洞穴动物的部分去掉,这样洞穴刷新本来限制就很大,再限制数量就基本刷不出来了
然后,成功刷出来了一个地底猴子!(?

为了方便测试,地下刷出来动物会在地上生成一个钻石块,方便看到刷在哪里的,当然,这个“特性”在正式版里会删掉(炸


既然做到洞穴刷新,再来继续更新一波洞穴里最常刷的鬼族小动物,颚鬼三兄弟!




还有一个丰富海洋生态的珊瑚!不是方块,而是动物属性的珊瑚,会打人的那种 (???


【发帖际遇】:羽·凌风 走在大街上摔了一跤,竟然发现地上躺着 22F卡币 ,赶紧捡起来!

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

TOP


本帖最后由 羽·凌风 于 2023-9-22 09:06 编辑
同志们,我又回来继续更新啦!
现在开始整比较复杂的大工程了,字面意义上的“大”:准备翻新几种巨型动物的模型和动画了!
但在翻新模型之前,首先需要做一个优化:
MOD里动物的血量是相当魔幻的,尤其是大型动物常会有50+、甚至100+的血量,这血量如果用原版的显示方式,就会占据不少屏幕,也不好看

所以优化一下,改成动物的血量直接显示成血条,同时把饱食度也显示出来,显示位置在人物属性上方,和人物一样左边血量右边饱食度,这样血量再多也好看了


接下来,走龙和烈焰龙的模型已经做好了,该做更复杂的动画和技能AI了
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


回复 29#  @大熊星座

不敢不敢,BUG太多就发布的话……会被骂的
所以……还是想……尽量在完善一点吧,至少等我手上这波明星物种的几种大型龙做好 (?)


然后做大型龙的时候,发现优化问题还是很严峻,大型龙动画比较长,延迟卡顿就会非常明显,还是得继续优化一下延迟和动画的问题
一边做优化顺便在一边做点新BUG小东西(?)





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

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

TOP


发帖证明我有在努力优化,没有偷懒!(?)
目前终于把大型走龙的大量技能都做好了,有多大量呢?四种立龙科(骨顶龙、火棘龙、爪暴龙和大地走龙)总共做了9个物理攻击动作、3个魔法攻击动作,其中还包括物种限定的攻击动作,以及部位破坏后的攻击失败动作
所以之后上线后大家一定要多去被他们杀一杀,绝对值得体验哦!(炸)





然后做好模型和动画后,测试斗兽的时候却发现了一个十分玄幻的大问题,那就是我测试之前做的各种动物斗兽都很正常很丝滑,测试骨顶龙的时候也很丝滑,可剩下三种龙只要一出场后台就疯狂汇报Can't keep up!卡顿,画面也卡得不忍直视,斗兽更是压根抖不起来,攻击动画都播完了对面还没有受到伤害的那种
这可是翻新模型后的第一种大型怪,就发生如此恶性BUG可不行啊,于是用力(?)排查了好几天,终于定位到了这单纯是大型实体碰撞箱太大了导致的卡顿!把碰撞箱做小就瞬间丝滑了!
emmmmm,MC的源代码优化到底有什么毛病(X)
但原版的渲染范围又是和碰撞箱相关联的,举个例子就是当画面视线离开实体的碰撞箱时,实体就不会渲染,所以遇到像有长尾巴长脖子的龙这种实体,如果碰撞箱太小,就会很容易出现头和尾巴在画面中闪现的问题
这也是以前困扰过我的问题,所以之前才会把大型怪的碰撞箱设置得那么巨大(但实际上由于我写了类似末影龙的小碰撞箱,所以大碰撞箱其实是没有碰撞功能的)
不过今天我发现了一个用于单独控制渲染范围的代码 getRenderBoundingBox(),所以这个问题也可以得到解决了!就算把实体的碰撞箱做得很小,只要把这个渲染的范围设大点,也不会导致模型在画面中闪现!
总之今天解决了一个关于大型怪的很严重的优化BUG,高兴得我发了个进度(X),以后游戏会比之前更丝滑一些了,距离新更新又更近了一步! (?)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


最近刚做了大型龙的模型更新,手累,不想做新模型,那就来写点新功能吧
这次尝试来把看起来就很难搞的部落系统给做了

功能大概就是添加一个【部落之书】道具,使用道具时自动新建一个以自己为名的部落,跟方舟一样
然后部落界面UI分为三块内容,玩家列表、宠物列表和部落日志(显示谁谁谁死于谁谁谁之类的(X)
参考原版创造模式物品栏的标签写法,啃了两天,成功把前两块内容搞定啦
可以显示出当前部落中的人员,如果人太多显示不下,就会出现向下箭头用于翻页


之后再继续做点界面优化,玩家界面要怎么弄还没有想好,但宠物界面肯定是可以做的更漂亮的(?)
但部落日志要怎么做还没有头绪,我这个部落直接借用了原版 Team(组队)和 Scoreboard(计分板)的内容,但原版代码里并没有记录长字段的功能,只能看看有没有什么办法迂回一下了
或者日志只记录一次游戏的内容,下线后清空,也不是不行(?)
羽·凌风 于 2023-11-20 20:51 补充以下内容
宠物界面美化完成
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


既然现在越来越熟练做UI了,那么顺道把驯养动物的属性界面也美化一下(?)
血量和饱食度显示的更直观


同时食性的位置加上了附近是否有食槽的显示,有食槽又有食物就会显示彩色的食槽图案


有食槽但是没有食物,就会显示灰色图案
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


本帖最后由 羽·凌风 于 2023-11-23 22:26 编辑
今日进度,做出了部落相关的建筑方块:部落旗帜!
emmm,就是一个好看的旗子(X)

还可以通过染料改变颜色

还可以控制摆放的朝向

当然右键点击还有打开部落界面的功能

之后考虑再加上信标的功能好了,可以在很远的距离看到回家的路那种(?)

用Geckolib做的带动画的方块,制作方式还挺麻烦的,做个笔记好了~
制作动态方块的流程和Geckolib的官方教程基本一致:https://github.com/bernie-g/geck ... -Blocks-(Geckolib3)
但官方教程是高版本的,对于1.12版的话,注册方式有些差异
首先1.12版需要继承的方块实体方法是 TileEntity,不是 BlockEntity
然后注册的时候方块实体的注册方法是
  1. GameRegistry.registerTileEntity(TribeFlagTile.class, new ResourceLocation(Dragicland.MOD_ID, "tribe_flag_tile"));
复制代码
位置放在注册其他实体(比如生物)的地方即可
然后注册方块实体的渲染的方法是
  1. ClientRegistry.bindTileEntitySpecialRenderer(TribeFlagTile.class, new RenderTirbeFlag());
复制代码
这里需要注意,不要放在Geckolib自带ExampleMOD的那个位置!直接把这句放在注册Block的地方就行了,不要放在监听 FMLPreInitializationEvent 事件的地方,不知道为什么,反正我监听事件加载不出来!给我卡了好久 (X)
如此一来带动画的方块就OK了!
放置朝向则是给Block继承一下原版就有面向的方块(比如箱子)就行了,能偷懒就没必要重新造轮子(X)

还有一点需要注意的是,方块实体的 writeToNBT 和 readFromNBT 方法(存档和读档)是默认只在服务端加载的
也就是说如果你要用它储存客户端需要的变量(比如我这里的旗帜颜色)的话,就会发现退出游戏重进后这个数据会在客户端丢失,修改过后的颜色会变回默认的状态
在 TileEntity 里面加两个方法,给客户端也传递存档的值就OK了
  1.     public NBTTagCompound getUpdateTag() {
  2.         return this.writeToNBT(new NBTTagCompound());
  3.     }
  4.     public SPacketUpdateTileEntity getUpdatePacket() {
  5.         return new SPacketUpdateTileEntity(this.pos, 11, this.getUpdateTag());
  6.     }
复制代码
唔,我的生物实体也遇到了类似的问题,用 NBT 保存的装备也会在重新加载游戏后的客户端上显示不出来,需要通过打开生物背包的方式同步数据后才会在客户端上加载出来
但是生物实体上好像没有找到类似的方法,看来要仿造这个 SPacketUpdateTileEntity 写个实体生物版的了
羽·凌风 于 2023-11-23 22:23 补充以下内容
唔,我的生物实体也遇到了类似的问题,用 NBT 保存的装备也会在重新加载游戏后的客户端上显示不出来,需要通过打开生物背包的方式同步数据后才会在客户端上加载出来
但是生物实体上好像没有找到类似的方法,看来要仿造这个 SPacketUpdateTileEntity 写个实体生物版的了

今天把这个问题解决了!
先是尝试写个生物实体版的 SPacketUpdateTileEntity,没成功,Packet的注册方式完全不会(X)
于是尝试借用原版的代码,发现一个控制原版生物实体装备通信的 SPacketEntityEquipment,这东西似乎也是用来控制骷髅和僵尸这些怪物的装备和武器的
但是用
  1. ((WorldServer)this.world).getEntityTracker().sendToTracking(this, new SPacketEntityEquipment(this.getEntityId(), entityequipmentslot, itemstack));
复制代码
进行通信发现并没有卵用,不知道为什么这一句明明成功运行了,但是修改装备的 setItemStackToSlot 却没有运行
只好寻找其他办法,遂发现原版自己在父类 EntityLivingBase 里就会使用 SPacketEntityEquipment,那么我其实可以直接利用这一点,不需要单独再去通信一遍
于是查阅发现 SPacketEntityEquipment 会将生物的装备(护甲)和手持道具进行通信,解决方案这就来了!
首先在实体储存的时候把我的生物的鞍具和装备储存到人形怪的装备位上去
顺道一提我的生物继承的是原版马的代码,所以储存装备用的是物品栏,而不是装备栏,为了方便和原版马的右键界面对接,这个部分还是不改为好(?)
  1. super.setItemStackToSlot(EntityEquipmentSlot.CHEST, this.getSaddle());
  2.         super.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, this.getAmulet());
复制代码
然后原版代码在使用 SPacketEntityEquipment 的时候,就会自动帮我加载到可以修改装备的 setItemStackToSlot 代码上去,于是我就再修改一下这里
  1.     public void setItemStackToSlot(EntityEquipmentSlot slotIn, ItemStack stack) {
  2.         // 清空原版装备栏,避免卡顿或中途修改装备造成冲突
  3.         super.setItemStackToSlot(slotIn, ItemStack.EMPTY);
  4.         // 将装备栏物品转换为物品栏物品
  5.         if (this.world.isRemote) {
  6.             if (slotIn == EntityEquipmentSlot.CHEST)
  7.                 this.getHorseChest().setInventorySlotContents(0, stack);
  8.             if (slotIn == EntityEquipmentSlot.MAINHAND)
  9.                 this.getHorseChest().setInventorySlotContents(1, stack);
  10.         }
  11.     }
复制代码
如此一来,就搞定了!给动物带上装备后,退出游戏、重新加载后,装备依然可以直接看到,而不需要打开动物的物品栏一次才能正常同步了!
这样以后做更多更复杂的装备就更轻松了,而且因为我把鞍具也放进了这个代码里,也就是说我可以尝试做点带有新功能的鞍具了
模仿怪猎MOD的功能性鞍具和晶石系统指日可待!(XXX)
展开以显示更多内容
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


本来开开心心玩着游戏唱着歌,我的移动硬盘突然就坏掉惹,哎,把部落旗帜的图案画完吧(X)

基础图案,直接就按七种属性来画了,用MOD熟肉切换


然后九个种族的所有形态分类都有一个图案









那么多图案,总有一款适合你!

本来一开始的计划不是做旗帜,而是做雕塑,每一个种族形态分类都给一个独立模型的……emmmm,还好最后没有采用这个计划(炸)WWWWWW
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


继续一点美化,给食槽增加了三大类食物的显示,如果食槽中存在相应的食物,就会在模型上展示出来

因为涉及到数据同步,所以又需要教程和笔记:https://teamcovertdragon.github. ... le-entity-sync.html
唔,数据同步太难了

部落道具(添加成员和移出成员)还在奋战中,这东西怎么那么难啊,关键是相关功能的教程完全找不到
实在不行还是和之前一样先放弃这个功能吧(XXX)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


本帖最后由 羽·凌风 于 2023-12-7 15:10 编辑
尝试了很久搞部落组队功能,原本计划使用原版的计分板功能来实现,结果测试了很久很久,发现计分板只能在服务端修改,而多人模式下非主机玩家是没有权限修改服务端(主机玩家的数据)的!
这也就意味着,在多人模式下,只有主机可以操纵部落,无论是添加成员还是踢出成员的功能,都只有主机玩家可以使用,其他玩家是没有权限使用的
这样对于仿方舟游戏肯定是不行的,一个服务器上需要有多个部落同时存在,怎么可以只有主机(服主)有权限编辑部落呢?
于是,利用原版计分板的想法只能放弃

我只能想想别的方式来实现这个功能,有什么办法可以不利用原版的计分板,实现禁止宠物友伤、以及同部落坐骑共享的功能呢?
我想到了我新做的部落旗帜!作为一个存在于地图上,并且客户端和服务端都会加载的方块实体,完全可以通过它来迂回地实现这个功能啊!
具体解决方案就是,不再使用计分板来储存部落信息了,而是利用部落旗帜!当玩家把旗帜放在地图上时,旗帜会储存它的主人是谁
然后当系统需要判断这个玩家是否有组队时,就直接判断旗帜周边是否还有其他玩家的旗帜,如果有,那周围旗帜的主人就是这个玩家的盟友(组队队员)!
简单来说就是,只要几个玩家把旗帜放在一起,就自动组队了!破坏旗帜,自然也就相当于退出了这个组队!(同时在方块破坏的地方写一句只有主人可以破坏旗帜就不怕别人捣乱了)


这个“在一起”的判定距离为同一水平面内10格,应该足够正常游戏使用了~
然后给旗帜加一个强制区块加载的功能,就算玩家距离家园天远也能获取到家里的旗帜位置和组队信息,就行了!
完美!

顺便动物模型翻新方面新增萌萌哒山雀(还有恐怖的爆炸黑鸦(X)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


继续做MOD,现在做的就是下次凑齐十条更新内容后更新的内容了
增加了一个小型动物的功能:肩宠……不对,这叫头宠!(?
所有非纯水生和非立兽状态的小型成年动物都可以捡起来放在头上,提供一些功能,比如草兔这些伪装大师可以提供额外的伪装加成(?



请选择你喜欢的帽子吧!(X)
羽·凌风 于 2023-12-10 13:57 补充以下内容
模型也继续更新,八种(?)鼠类都更上了!


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

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

TOP


继续做点微小(?)的优化,因为发现我写的玩家魔法属性会被原版的药水状态挡住,所以修改一下生存模式物品栏,把药水状态的显示和魔法属性的显示分开了


对没错,那个伪装大师药水状态也是新增的东西,现在学会了写状态,可以增加很多有趣的状态了
羽·凌风 于 2023-12-11 19:11 补充以下内容
宠物信息界面也和人物界面一样加上状态显示了

很好,物品储存done、新建状态done、状态显示done,可以开始做刷刷刷晶石系统了
羽·凌风 于 2023-12-12 11:55 补充以下内容
说做就做,下一步,护石!


物品、储存、属性加成,全都已经完成!
获取方式嘛,就靠打BOSS吧,下一步开始做BOSS
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


准备更2.6,一直在内测修BUG,好久没贴改模进度了(X)

上次没贴的穴鼠,啊!———


两种凤鸟完成


三种鹿完成,啊这个全新的鹿角,不能挂在墙上好可惜啊(炸)




两种鲨鱼火鲨和钳鲨也搞定,然后发现还有一大堆鲨鱼都没有加入游戏(X)



【发帖际遇】:羽·凌风 走在大街上摔了一跤,竟然发现地上躺着 15F卡币 ,赶紧捡起来!

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

TOP


更好2.6之后,开始做 DLC 2 最终也是最重头的内容了,动物图鉴!
图鉴会显示全部动物的信息、并且简单介绍一下MOD动物的玩法,现在MOD体量越来越大越来越复杂,这东西就很有必要了!
总之先把界面设计好,动物相关的全部数据自动显示,我永远都喜欢自动加载自动显示(X)



上面的“动物基础信息”就是教程,这就不能自动生成了,得自己写(X)
嚯,我敢说光是这个图鉴,在MC MOD里就绝对是优质的存在!(炸)

本来一开始打算用立绘图,但放进MC里像素太粗糙了,立绘图并不会比那个小图清晰到哪里去,最后就选择了用模型图,感觉效果非常好!


看看,多可爱啊!!!

因为这个物品对游戏前期非常重要,所以加入初始奖励箱子

修改原版初始奖励箱子的办法:https://forge-documentation-cn.r ... /items/loot_tables/
这个操作比预想的简单得多,啊要是其他功能都有那么简单就好了(X)

接下来尝试看做做通过望远镜、击杀和驯服开图鉴,这么多图鉴当然要一开始全灰、然后一个个开更有成就感啦
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


今日进度,之前说要一个个开词条和图鉴,打算使用进度的方式来储存,毕竟用原版的东西不太需要考虑通信的问题,要方便一些
总之学会了添加进度

也学会在GUI里调用进度数据,玩家获得进度后才解锁相应的词条


虽然感觉用这个方式,之后写图鉴会需要写大量的进度,有点累(XXX)
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP

分享到