= 创作分享 =
编程开发
[CT]开发日志
墨言魂靈

[CT]开发日志

墨言魂靈 于 2023-5-24 14:31 ( 1年前 ) [复制链接] [显示全部楼层] [打印]
3708 11
Amaruq·Illaujaq
InkSoul 发表于 2023-6-5 23:48
由于总所周知的Forge注册难问题,所以CT打算重新制作一个基于nbt的“数据值”系统。
这样不仅可以节约注册 ...

优先考虑能跑就行肯定是坏的,过分的语法糖和根本不用语法糖只会增加阅读难度,语法糖不细化也会导致很多细节问题。
高版本的Forge的延迟注册确实蛮烦的,但是也不是没办法做分类设计和生成器制造。每次提到生成器就有种ASM的冲动,或许真的越接近底层越有安全感罢(?

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 09:38:00 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 09:56
但我不会整啊……
最开始的确是因为Forge的问题,但现在似乎是能不能完成的问题了……
Fabric的香草注册方 ...

保证你要注册的内容能够在ItemRegister被注册到总线前都在静态变量池中可用,不可以在注册到总线后再注册或者先注册ItemRegister再注册物品这样。换句话说就是因为这个注册是惰性的,只要静态池内可用且不提前调用基本上不太会有大问题这样...  最好的办法就是写到一个类里,会被统一申明。

Fabric的香草注册确实很棒,低版本上来完全没有不适应(


清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 10:06:46 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 10:12
我当时的实现是这样的:public static final DeferredRegister MATERIAL_BLOCKS = DeferredRegister.creat ...

为什么注册发生在客户端启动事件里... 以及注册物品至少是服务端上x
客户端概念是游戏的两个线程中的主线程,加入世界的时候会开始分主线程客户端和子线程服务端,而Forge的注册发生在游戏启动的时候... 在Minecraft 1.7.10的时候确实是用FMLInitializationEvent系的事件来呼叫启动注册,但是高版本会直接实例化@Mod注解的类,直接分那个@Mod类的构造方法里注册就好。

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 10:22:47 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 10:26
啊?我当时竟然没有注意到Client?
(好吧,那是我眼睛的问题了)
但模型生成怎么解决

模型?高版本不都是Json控制了咩(
你是说DataGenerator那些咩?如果是完全用工厂生成器产出物品的话就只能考虑手写或者借助Gson+自己记物品名称来实现了(X
不然把要用的物品集合到一起通过Registry.getObject()一系列方法从注册表里拿到物品之后物品名放到一个CopyOnWriteArrayList + 多线程整理,用Gson一字排开保证拿到的名称的准确性后借助Gson自己写DataGenerator也不是不行就是了,除了怎么看都是曲线救国(逃

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 10:34:44 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 10:46
但物品一多起来就要出事啊(可能整个Mod全是json贡献的大小【见CT的旧开发帖中的源代码,代码量不多,dat ...

这可没办法阿,食谱和物品贴图都得用Json管理x
模型还是建议Json吧,如果不是要做动画需求的话BlockBench的Json模型兼容性好

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 10:50:57 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 11:06
配方可以直接写代码里啊(参考迷之炖菜),原版也有模型是内置的啊(参考标准方块)……

如果没有办法解 ...

特殊合成食谱这种理论上会比用Json麻烦一些,但是可以做的事情也会多一些就是了。
如果设备的食谱也都写代码里的话只会给兼容性打折。

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 11:38:55 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 11:59
Quilt有提供内置json配方的库,Fabric也有移植的RIP,Forge……。
虽然我本来就不打算兼容数据包()
...

SpecialRecipe<IRecipe>, Forge的轮子是够用的

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 12:25:38 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 12:49
1.19.4好像没了,只找到一个net.minecraft.data.recipes.SpecialRecipeBuilder……(并且没有被调用过) ...

看看https://www.mcmod.cn/class/2943.html的三明治的实现吧

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 12:51:18 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-7 12:57
映射不一样啊……(他的映射是Yarn,我用的是Mojang……【之前纯Quilt版本为了用Porting-Lib改了映射,现 ...

可以逝世x

清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-7 13:02:06 | 显示全部楼层

回复 | 举报

Amaruq·Illaujaq
InkSoul 发表于 2023-6-8 08:14
好像发现了什么:net.minecraft.client.renderer.ItemModelShaper中有一个register方法……

很显然这是用于烘焙模型的,如果你希望用它取代自拟的元数据... 你定制这些元数据不是用来批量注册物品的咩?这和渲染模型没有任何关系吧,以及为物品添加模型是可以直接使用json的,就像方块一样。渲染Obj的话貌似是只能方块?没试过在物品中渲染为Obj。



清晨的凤梨闻起来真棒!闻起来就像凤梨一样!
发表于 2023-6-8 20:07:24 | 显示全部楼层

回复 | 举报

12下一页
百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表