- 博客(93)
- 问答 (1)
- 收藏
- 关注
原创 java学习——泛型
public class ClassName<T1, T2, ..., Tn> { // T1, T2... 是类型参数// 在类内部可以使用 T1, T2 等作为类型// ... 其他使用 T1, T2 的方法Box<T>Pair<K, V>Node<E>。Java 泛型是提升代码质量(特别是类型安全和清晰度)的强大工具,也是现代 Java 开发(尤其集合框架)的基石。其核心在于参数化类型和编译时类型检查。虽然类型擦除。
2025-06-15 02:23:29
381
原创 渲染学进阶内容——机械动力的渲染系统(2)
这篇来研究一下实例 是 Flywheel 渲染引擎中的 GPU实例句柄 接口,它提供了对底层渲染实例的直接控制能力。这个接口是**实例化渲染(Instanced Rendering)**系统的核心操作接口,与之前讨论的 在渲染流程中处于不同层级。包含包含抽象业务层底层技术层方块实体渲染逻辑动画更新生命周期管理GPU实例状态InstanceHandle显存控制渲染管线交互InstanceHandle1Visual接口InstanceHandle2管理更新删除操作控制查询1. 抽象层级不同:业务逻辑层
2025-06-14 16:06:57
3
原创 渲染进阶内容——机械动力的渲染(1)
这个类是 Flywheel 渲染引擎的核心实体层组件,专门处理**方块实体(BlockEntity)**的渲染逻辑。作为视觉模型与游戏逻辑之间的桥梁,它提供了一套优化框架,让模组开发者能够高效实现复杂的方块实体渲染效果(如机械动画、流体交互等)。fill:#333;stroke:1;fill:none;important;important;important;important;important;important;important;important;important;important;
2025-06-14 14:16:41
6
原创 我的世界进阶模组开发教程——屏幕和菜单(1)
维度层级服务端/逻辑层客户端/表现层职责物品操作逻辑/状态同步UI渲染/输入处理核心字段槽位列表/状态ID渲染坐标/悬停槽位关键方法交互流程接收指令→处理→同步采集输入→发送→渲染反馈设计模式状态机/观察者模式模板方法/命令模式协作流程玩家在Screen点击槽位Screen发送clicked()消息给MenuMenu执行物品操作Menu广播状态变化Screen接收变化并重渲染性能优化Menu:状态差分检测(减少网络流量)Screen:预测渲染(carriedItem)
2025-06-13 16:23:29
416
原创 我的世界模组开发——开发机械动力附属模组(3)
Create机械动力系统深度解析 摘要: Create模组的机械动力系统通过多层架构实现了工业级自动化功能。核心组件包括: 机械基础模块: AbstractEncasedShaftBlock提供标准化的封装传动轴逻辑,支持智能轴向适配和活塞交互 KineticBlockEntityRenderer实现高性能机械渲染,采用Flywheel引擎优化和物理精确的旋转算法 自动化合成系统: MechanicalCrafterBlockEntity管理多方块协同合成,支持6种状态的工作流程 CrafterHelper
2025-06-13 12:22:49
33
原创 我的世界进阶模组开发教程——开发机械动力附属模组(2)
本文解析了Create模组的核心API设计,重点包括:1. SchematicRequirementRegistries类提供原理图物品需求的自定义注册系统,通过三个注册表(方块/实体/方块实体)实现灵活的放置需求计算。2. DisplaySource/DisplayTarget构成显示链接系统的两端,前者负责数据格式化,后者处理终端渲染,支持双模显示和安全数据传输。3. CreateBuiltInRegistries作为模组注册表管理中心,定义了11种核心注册类型,采用生命周期管理和Mixin集成策略。
2025-06-12 20:36:31
299
原创 我的世界进阶模组开发教程——制作机械动力附属模组
摘要: Create是Minecraft的机械动力模组,其代码结构分为多个关键模块: 数据生成系统:通过CreateRecipeProvider基类实现配方自动化生成,支持多步骤序列化装配配方(SequencedAssemblyRecipeGen),采用建造者模式链式调用; 注册管理:CreateRegistrate扩展了Registrate库,统一管理方块、流体、实体等注册,集成标签页分类和工具提示定制; 伤害系统:DamageTypeTagGen为机械伤害(如钻头、风扇火焰)定义原版兼容的标签; 客户端
2025-06-11 21:48:07
174
原创 渲染学进阶内容——模型
UVPair精准定位:将抽象纹理坐标具象化为(u,v)数值对动态适配:通过texScale实现纹理区域弹性伸缩数据不可变final字段保证模型构建过程的线程安全作为模型系统的“纹理坐标 DNA”,它与共同构成了 Minecraft 模型从数据定义到 GPU 渲染的完整链路。@Override// 橙色基础渲染 (RGB: 1.0, 0.5, 0.0)// 金字塔底座(16x16x1)
2025-06-10 17:15:20
152
原创 渲染学进阶内容——joml库
代码组件技术意义应用优化点序列化版本控制,避免兼容性问题跨环境部署稳定性元素命名mXY直观表示矩阵行列结构简化坐标变换计算properties位掩码快速判断矩阵特性分支优化(如求逆/乘法)单位矩阵初始化提供变换计算的基准状态减少冗余赋值操作此设计通过显式属性标记和内存预计算,显著提升了图形运算效率,同时确保序列化可靠性。优化策略技术实现性能提升属性检测通过properties位掩码识别矩阵类型减少90%+无效计算仿射优化跳过固定行计算减少25%计算量。
2025-06-10 12:39:20
23
原创 我的世界进阶模组开发教程——渲染学(4)
Oculus 是“引擎盖下的技工”:它修改了渲染管线,使得光影着色器能够在优化的 Forge 环境中运行。依赖 Rubidium/Embeddium:没有它们提供的优化基础,Oculus 无法高效工作(甚至无法工作)。光影包是“蓝图”:光影包包含具体的 GLSL 代码,定义了水怎么反光、云怎么飘、阴影怎么投射等所有视觉效果。Oculus 负责读取并执行这些蓝图。路径兼容:光影包通常放在文件夹,与 OptiFine 一致,方便玩家迁移。。
2025-06-09 15:09:43
174
原创 我的世界进阶模组开发教程——渲染学(3)
Override// 扩展父类实现// 添加特殊装饰// 在拴绳上添加装饰物// 计算拴绳中点// 渲染装饰物// ... 渲染装饰几何 ...是 Minecraft 生物渲染的关键实现:核心功能生物主体渲染特殊生物元素处理(拴绳)名称标签逻辑渲染技术PoseStack 变换应用MultiBufferSource 管理高级几何生成算法优化策略条件渲染减少开销批处理优化数学优化加速计算扩展点为模组提供渲染挂钩。
2025-06-09 14:23:15
34
原创 Java学习——正则表达式
Java正则表达式实用指南 本文系统介绍了Java正则表达式的核心用法与技术要点: 核心功能 文本验证:邮箱、手机号等格式校验 文本处理:搜索提取、替换清洗、分割字符串 常用模式:数字匹配(\d)、字符集([])、边界控制(^$)、分组捕获(()) Java实现流程 编译模式:Pattern.compile() 创建匹配器:pattern.matcher() 执行匹配:matches()/find()/group() 关键技术点 元字符分类:基本、字符类、量词、分组等 限定修饰符:贪婪/惰性模式 进阶特性:
2025-06-06 16:24:21
1467
原创 Java学习笔记——异常
特性中断循环的异常继续循环的异常处理异常处理未捕获使用try-catch捕获循环行为立即终止继续执行后续迭代代码位置循环体内部循环内部的try块后续迭代不会执行正常执行适用场景需要完全终止程序的致命错误可恢复的局部错误技术实现throw无捕获throwcatch处理最佳实践:在循环中处理可能出现的异常时,优先使用内部 try-catch 结构,避免因单次迭代失败导致整个循环中断。
2025-06-06 13:50:25
1067
原创 我的世界模组开发进阶教程——渲染学(2)
类在 Minecraft 渲染系统中扮演着:中央注册中心管理所有实体/方块模型标识防止模型ID冲突渲染基础设施为模型加载提供统一接口连接模型资源与渲染器动态模型枢纽支持多种船和告示牌类型实现同一模型的变种系统层级组织系统主模型/盔甲/配件的逻辑分离复杂模型的模块化管理资源管理核心连接模型资源与资源管理系统按需加载机制的基础高效管理数百种实体模型实现复杂的模型变体系统减少模型加载的资源占用支持玩家皮肤等自定义扩展。
2025-06-04 01:23:22
495
原创 我的世界模组开发进阶教程——渲染学(1)
本文系统解析了Minecraft游戏引擎的渲染架构,重点剖析了三个核心组件:ModelPart、PoseStack和MultiBufferSource。ModelPart作为模型系统的基础单元,采用树形结构管理几何数据与变换关系;PoseStack通过矩阵堆栈实现层次化变换,支持复杂的模型动画;MultiBufferSource智能管理多种渲染类型的缓冲区,优化批处理性能。三者协同构成了高效渲染流水线:ModelPart组织模型层级,PoseStack处理空间变换,MultiBufferSource管理数据
2025-06-03 15:47:40
151
原创 我的世界模组开发——方块实体(2)
枚举定义了 Minecraft 中方块的三种基本渲染方式,它控制着方块如何在游戏世界中视觉呈现。这个简单的枚举在渲染系统中扮演着至关重要的角色。枚举虽小,但在 Minecraft 的渲染系统中扮演着核心决策者的角色:三种基本渲染策略INVISIBLE:完全跳过渲染MODEL:高效的静态渲染:支持动画的动态渲染性能优化核心区分渲染类型实现资源合理分配降低不需要渲染的方块带来的性能开销视觉效果基础支撑所有方块的视觉表现形式为动画系统提供接入点系统扩展桥梁。
2025-06-03 14:14:00
50
原创 我的世界模组开发——方块实体(1)
这是一个抽象类,不能直接实例化,需要子类继承继承自Block,是所有方块的基类实现了接口,表明该类关联方块实体提供所有带有方块实体的方块的共同行为作为方块与方块实体之间的桥梁统一处理事件传递和UI创建提供帮助方法简化ticker创建定义默认渲染行为(子类通常覆盖)这个类是Minecraft中复杂功能方块(如容器、机器、特殊交互方块)的基础架构组件,实现了方块与方块实体之间的协同工作机制。实现了类型注册与实例创建的解耦提供强类型安全保障和版本兼容性支持。
2025-06-03 12:06:57
55
原创 我的世界模组开发——实战(1)
项目1:架子床方块开发摘要 本项目要求开发一个架子床方块,主要功能如下: 结构设计:包含上下两层床(各3方块长度),中间通过梯子或楼梯连接(占用1方块),提供两种变体。 交互功能:右键睡觉与原版床行为一致,但在下界仅提示无法睡觉(避免爆炸)。 实现要点: 继承FurnitureHorizontalBlock处理水平朝向 使用BlockEntity管理睡眠状态 自定义碰撞体积适应多层结构 重写use方法实现下界安全检测 通过BlockState管理梯子/楼梯变体 代码将复用模组基类的方向控制、红石兼容等机制,
2025-06-03 10:33:19
231
原创 我的世界模组开发——方块的深入探索(1)
关于方块这一篇在第一篇文章就简单的概述了一下,这根本不够,我们还需要深入的研究关于block的代码。首先找到net.minecraft.world.level.block包下的代码,找到block这个Java类,以下是对于静态常量定义的解释。静态常量。
2025-05-28 12:48:52
52
原创 我的世界模组开发——物理学(2)
Shapes类是 Minecraft 碰撞系统的核心工具类,通过以下方式连接AABB和VoxelShape转换桥梁:将连续空间的AABB转换为离散体素网格。组合工具:提供布尔运算(并、交、差)生成复杂形状。性能枢纽:通过优化策略(如)平衡精度与效率。模组开发者可通过此类实现高度定制的碰撞逻辑,从简单的动态调整到复杂多方块结构的交互,均可高效实现。理解其内部机制有助于避免性能陷阱,并充分利用 Minecraft 的物理引擎能力。
2025-05-23 09:44:32
65
原创 我的世界模组开发——物理学(1)
本文深入探讨了《Minecraft》中的物理系统,特别是重力、碰撞体积和投掷物的物理行为。文章首先介绍了Minecraft中的重力加速度,指出不同实体和物体的重力加速度各不相同,且与现实中地球的9.8m/s²差异较大。例如,玩家和生物的重力加速度为0.08格/刻²,而掉落物、TNT、矿车等的重力加速度为0.04格/刻²。文章还讨论了如何通过模组或数据包修改Minecraft的重力,例如使用零重力模组或力场数据包。 接着,文章详细解析了Minecraft中的碰撞体积,指出碰撞体积是实体或方块在游戏中实际占据的
2025-05-22 20:46:19
209
原创 我的世界模组开发——水平方向的方块(3)
在《我的世界》中,床的实现涉及多个类的协同工作,主要包括HorizontalDirectionalBlock、BedBlock、BedPart、DyeColor、BedBlockEntity和BedRenderer。HorizontalDirectionalBlock为床提供了水平方向属性,BedBlock管理床的双格方块连接状态和交互逻辑,BedPart枚举区分床的头部和脚部,DyeColor定义床的染色选项,BedBlockEntity负责存储床的颜色数据,BedRenderer则处理床的渲染逻辑。这些
2025-05-22 19:43:24
86
原创 我的世界模组开发——具有重力的方块(2)
/ 必须声明水浸没属性// 初始化状态@Override@Override// 注册属性// 新增水浸没状态检测@Override@Override// 检测是否落入水中}else if (!});}else{@Override// 普通坠落音效。
2025-05-18 18:28:56
200
原创 我的世界模组开发进阶教程——初识方块(1)
FeatureElement 是 Minecraft 1.20+ 引入的接口,用于标记依赖特定版本或实验性功能的游戏元素(如物品、方块、实体等),通过特性标志系统动态控制内容的启用状态。其核心方法包括 requiredFeatures() 和 isEnabled(),用于检查元素所需特性标志是否被激活。BlockBehaviour 是所有方块的基类,定义了物理特性、交互逻辑和渲染规则。通过 Properties 类配置方块的静态属性,如颜色、音效和光照强度。BlockStateBase.Cache 缓存碰撞
2025-05-18 13:04:19
91
原创 我的世界模组开发——特征(2)
本文为Minecraft Forge模组开发的全流程指南,分为三个阶段:开发基础、系统深化和高阶开发。第一阶段(1-7天)包括环境搭建、基础注册和方块系统入门,重点配置mod.toml和build.gradle文件。第二阶段(7-30天)涉及事件与属性、实体与渲染,强调事件监听和实体注册。第三阶段(1-4个月)涵盖源码研究、魔改和工程化开发,建议使用Mixin和自动化构建工具。指南还提供了关键避坑提示,如AI代码验证和调试优先级,帮助开发者避免常见问题。建议配合IntelliJ的Gradle面板进行实践验证
2025-05-17 20:03:51
115
原创 我的世界模组开发进阶教程——特征(1)
类签名•功能:将特性(如树木、矿石)与其生成规则(如高度、密度)组合成预配置项•泛型参数•FC:特性配置类型,必须继承•F:特性类型,必须继承// 创建橡树配置5 // 最小高度// 注册配置化特性•联系:三者呈继承关系,扩展原版进一步细化参数。•区别:原版功能基础,BOP基类支持模组生态扩展,子类实现参数标准化。•BOP模组选择:根据树木复杂度选择基类或子类,**基础树木多用,特殊生态使用直接配置。
2025-04-02 00:49:35
106
原创 我的世界模组进阶开发教程——地形生成(2)
柏林噪声通过梯度插值与分形叠加,为《我的世界》提供了高效且自然的地形生成方案。从宏观的大陆分布到微观的岩石纹理,其算法逻辑贯穿游戏世界的每个细节,成为程序化内容生成的典范。// 第二层坐标缩放因子// 目标标准差•:对第二层噪声的输入坐标进行轻微拉伸,避免两层噪声模式重复•:标准化目标值,确保输出在[-1,1]范围| (混合高频/低频) | | (基础地形层) | | (生物群系细节) || | |v v v| 地形高度合成器 |<----| 洞穴生成器 |<----| 云层渲染器 |
2025-04-01 23:36:33
224
原创 我的世界进阶模组开发教程——地形生成(1)
•作用:预定义常用地形条件判断器•参数解析•offset:深度偏移量(如的0表示从地表开始计算)•:是否叠加地表深度(决定是否考虑动态地表厚度)•:检测位置类型(地面或天花板)是 Minecraft 地形生成的核心引擎,通过噪声分层、规则系统和生物群系扩展实现多样化的地表表现。其设计融合了动态计算(噪声驱动)、模块化规则()和性能优化(坐标绑定缓存),为开放世界游戏的地形生成提供了经典参考实现。
2025-04-01 20:45:00
363
原创 我的世界1.20.1forge模组开发进阶教程——TerraBlender
从模组开发者的视角来看,TerraBlender为Minecraft生物群系类模组的开发提供了全方位的技术支持,显著降低了开发门槛并提升了模组的质量与扩展性:对于生物群系模组开发者而言,使用TerraBlender可将开发周期缩短60%以上,同时获得更好的兼容性与扩展性。其标准化的集成方案使开发者能够专注于创意设计而非底层实现,尤其适合需要多平台发布或与其他生物群系模组联动的项目。这段代码定义了一个名为 的公共类,其主要功能是管理和操作不同类型的生物群系区域(),以下是对代码的详细解释::声明该类所
2025-04-01 15:06:34
397
原创 我的世界进阶模组开发教程——GlitchCore库(1)
名称开发者:由GlitchTech开发团队创建适用游戏版本:支持Minecraft 1.19.2及后续版本加载器支持:兼容Fabric、Forge、Quilt等多种模组加载器分类:库模组(Library Mod)标签:工具类、框架、跨平台支持@Override。
2025-04-01 11:49:03
139
原创 Java学习笔记——BiConsumer
命名规范:使用动词短语命名 BiConsumer 变量// Good// Avoid异常处理:建议封装受检异常try {组合策略:合理拆分复杂操作文档建议:为复杂 BiConsumer 添加注释/*** 处理用户订单的双参数消费者:* 参数1: 订单ID (String)* 参数2: 折扣率 (Double)* 执行逻辑: 1.校验参数 2.计算价格 3.写入数据库。
2025-04-01 08:00:00
1050
原创 我的世界1.20.1forge模组进阶教程——注册和注册表(2)
与Registry共同构成Minecraft的双层级注册系统,前者是跨注册表的访问枢纽,后者是单个注册表的功能载体。在模组开发中,理解二者的协作关系,能更高效地实现元素注册、数据查询和跨模组兼容。是 Minecraft 1.20.1 后引入的现代化注册表管理工具,通过集中式配置、错误检测和生命周期管理,显著提升了模组开发的效率和可靠性。其设计充分体现了对大规模数据驱动的支持,是构建复杂模组生态的基石。•功能:通过为每个注册表创建全局唯一标识符,如BLOCK对应/block注册表路径•实现原理。
2025-03-31 18:26:55
246
原创 我的世界1.20.1forge进阶模组教程——注册和注册表
forge能注册哪些东西呢?带着问题找答案,翻开forge的源码net.minecraftforge.registries,从源码中寻找答案以下是针对提供的类代码的详细解析,结合Minecraft Forge注册机制和Java核心特性的实现:是Minecraft Forge中用于延迟加载注册表对象的核心工具类,实现了接口,确保在注册表未准备好时安全访问对象。二、核心方法解析1. 工厂方法提供多种创建实例的方式,适应不同注册场景:• 直接绑定注册表直接关联到已知的Forge注册表,当注册表更新时
2025-03-31 16:46:41
466
原创 python学习笔记(5)
命名元组是轻量级、不可变的数据容器,适合替代字典或简单类。其核心优势在于代码可读性和内存效率,但灵活性不足。在需要动态字段或复杂行为时,可考虑数据类或自定义类。通过结合类型注解和默认值,能进一步提升开发体验。命名元组通过语义化字段名和固定结构定义,将原本隐式的顺序依赖转化为显式的字段约束,解决了普通元组因索引访问导致的顺序易错性问题。这种设计在数据传递、函数返回值、代码维护等场景中显著提升了可靠性和可读性。
2025-03-31 13:03:30
804
原创 我的世界1.20.1forge进阶模组教程——结构变体的深入研究(1)
BlockPos是 Minecraft 中处理方块位置的核心工具类,提供坐标操作、旋转、迭代等丰富功能,与Rotation类协同实现方向变换。其不可变设计确保线程安全,而子类优化了频繁修改的场景。理解其实现机制对开发Mod、分析游戏逻辑或优化性能至关重要。
2025-03-31 11:49:37
312
原创 我的世界1.20.1forge进阶模组教程——生物群系与洞穴
•作用:通过createKey方法生成一个唯一标识符(ResourceKey),指向模组内部名为的洞穴雕刻器配置。•实现细节createKey方法使用模组ID()和名称构建资源路径,确保全局唯一性。这段代码是 BOP 模组扩展 Minecraft 洞穴生成的核心配置部分,通过参数化控制洞穴的生成规则和形态,同时利用原版注册表和标签系统实现高效集成。开发者可通过调整参数(如概率、高度范围)自定义洞穴生成逻辑。
2025-03-31 00:54:03
266
我的世界1.18人工智能插件
2022-08-30
为什么一调试我的世界插件就自动打开ZipFile.java文件
2021-08-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人