- 博客(82)
- 问答 (1)
- 收藏
- 关注
原创 Java学习——正则表达式
Java正则表达式实用指南 本文系统介绍了Java正则表达式的核心用法与技术要点: 核心功能 文本验证:邮箱、手机号等格式校验 文本处理:搜索提取、替换清洗、分割字符串 常用模式:数字匹配(\d)、字符集([])、边界控制(^$)、分组捕获(()) Java实现流程 编译模式:Pattern.compile() 创建匹配器:pattern.matcher() 执行匹配:matches()/find()/group() 关键技术点 元字符分类:基本、字符类、量词、分组等 限定修饰符:贪婪/惰性模式 进阶特性:
2025-06-06 16:24:21
1100
原创 Java学习笔记——异常
特性中断循环的异常继续循环的异常处理异常处理未捕获使用try-catch捕获循环行为立即终止继续执行后续迭代代码位置循环体内部循环内部的try块后续迭代不会执行正常执行适用场景需要完全终止程序的致命错误可恢复的局部错误技术实现throw无捕获throwcatch处理最佳实践:在循环中处理可能出现的异常时,优先使用内部 try-catch 结构,避免因单次迭代失败导致整个循环中断。
2025-06-06 13:50:25
1049
原创 我的世界模组开发进阶教程——渲染学(2)
类在 Minecraft 渲染系统中扮演着:中央注册中心管理所有实体/方块模型标识防止模型ID冲突渲染基础设施为模型加载提供统一接口连接模型资源与渲染器动态模型枢纽支持多种船和告示牌类型实现同一模型的变种系统层级组织系统主模型/盔甲/配件的逻辑分离复杂模型的模块化管理资源管理核心连接模型资源与资源管理系统按需加载机制的基础高效管理数百种实体模型实现复杂的模型变体系统减少模型加载的资源占用支持玩家皮肤等自定义扩展。
2025-06-04 01:23:22
478
原创 我的世界模组开发进阶教程——渲染学(1)
本文系统解析了Minecraft游戏引擎的渲染架构,重点剖析了三个核心组件:ModelPart、PoseStack和MultiBufferSource。ModelPart作为模型系统的基础单元,采用树形结构管理几何数据与变换关系;PoseStack通过矩阵堆栈实现层次化变换,支持复杂的模型动画;MultiBufferSource智能管理多种渲染类型的缓冲区,优化批处理性能。三者协同构成了高效渲染流水线:ModelPart组织模型层级,PoseStack处理空间变换,MultiBufferSource管理数据
2025-06-03 15:47:40
141
原创 我的世界模组开发——方块实体(2)
枚举定义了 Minecraft 中方块的三种基本渲染方式,它控制着方块如何在游戏世界中视觉呈现。这个简单的枚举在渲染系统中扮演着至关重要的角色。枚举虽小,但在 Minecraft 的渲染系统中扮演着核心决策者的角色:三种基本渲染策略INVISIBLE:完全跳过渲染MODEL:高效的静态渲染:支持动画的动态渲染性能优化核心区分渲染类型实现资源合理分配降低不需要渲染的方块带来的性能开销视觉效果基础支撑所有方块的视觉表现形式为动画系统提供接入点系统扩展桥梁。
2025-06-03 14:14:00
32
原创 我的世界模组开发——方块实体(1)
这是一个抽象类,不能直接实例化,需要子类继承继承自Block,是所有方块的基类实现了接口,表明该类关联方块实体提供所有带有方块实体的方块的共同行为作为方块与方块实体之间的桥梁统一处理事件传递和UI创建提供帮助方法简化ticker创建定义默认渲染行为(子类通常覆盖)这个类是Minecraft中复杂功能方块(如容器、机器、特殊交互方块)的基础架构组件,实现了方块与方块实体之间的协同工作机制。实现了类型注册与实例创建的解耦提供强类型安全保障和版本兼容性支持。
2025-06-03 12:06:57
46
原创 我的世界模组开发——实战(1)
项目1:架子床方块开发摘要 本项目要求开发一个架子床方块,主要功能如下: 结构设计:包含上下两层床(各3方块长度),中间通过梯子或楼梯连接(占用1方块),提供两种变体。 交互功能:右键睡觉与原版床行为一致,但在下界仅提示无法睡觉(避免爆炸)。 实现要点: 继承FurnitureHorizontalBlock处理水平朝向 使用BlockEntity管理睡眠状态 自定义碰撞体积适应多层结构 重写use方法实现下界安全检测 通过BlockState管理梯子/楼梯变体 代码将复用模组基类的方向控制、红石兼容等机制,
2025-06-03 10:33:19
216
原创 我的世界模组开发——方块的深入探索(1)
关于方块这一篇在第一篇文章就简单的概述了一下,这根本不够,我们还需要深入的研究关于block的代码。首先找到net.minecraft.world.level.block包下的代码,找到block这个Java类,以下是对于静态常量定义的解释。静态常量。
2025-05-28 12:48:52
46
原创 我的世界模组开发——物理学(2)
Shapes类是 Minecraft 碰撞系统的核心工具类,通过以下方式连接AABB和VoxelShape转换桥梁:将连续空间的AABB转换为离散体素网格。组合工具:提供布尔运算(并、交、差)生成复杂形状。性能枢纽:通过优化策略(如)平衡精度与效率。模组开发者可通过此类实现高度定制的碰撞逻辑,从简单的动态调整到复杂多方块结构的交互,均可高效实现。理解其内部机制有助于避免性能陷阱,并充分利用 Minecraft 的物理引擎能力。
2025-05-23 09:44:32
57
原创 我的世界模组开发——物理学(1)
本文深入探讨了《Minecraft》中的物理系统,特别是重力、碰撞体积和投掷物的物理行为。文章首先介绍了Minecraft中的重力加速度,指出不同实体和物体的重力加速度各不相同,且与现实中地球的9.8m/s²差异较大。例如,玩家和生物的重力加速度为0.08格/刻²,而掉落物、TNT、矿车等的重力加速度为0.04格/刻²。文章还讨论了如何通过模组或数据包修改Minecraft的重力,例如使用零重力模组或力场数据包。 接着,文章详细解析了Minecraft中的碰撞体积,指出碰撞体积是实体或方块在游戏中实际占据的
2025-05-22 20:46:19
202
原创 我的世界模组开发——水平方向的方块(3)
在《我的世界》中,床的实现涉及多个类的协同工作,主要包括HorizontalDirectionalBlock、BedBlock、BedPart、DyeColor、BedBlockEntity和BedRenderer。HorizontalDirectionalBlock为床提供了水平方向属性,BedBlock管理床的双格方块连接状态和交互逻辑,BedPart枚举区分床的头部和脚部,DyeColor定义床的染色选项,BedBlockEntity负责存储床的颜色数据,BedRenderer则处理床的渲染逻辑。这些
2025-05-22 19:43:24
76
原创 我的世界模组开发——具有重力的方块(2)
/ 必须声明水浸没属性// 初始化状态@Override@Override// 注册属性// 新增水浸没状态检测@Override@Override// 检测是否落入水中}else if (!});}else{@Override// 普通坠落音效。
2025-05-18 18:28:56
195
原创 我的世界模组开发进阶教程——初识方块(1)
FeatureElement 是 Minecraft 1.20+ 引入的接口,用于标记依赖特定版本或实验性功能的游戏元素(如物品、方块、实体等),通过特性标志系统动态控制内容的启用状态。其核心方法包括 requiredFeatures() 和 isEnabled(),用于检查元素所需特性标志是否被激活。BlockBehaviour 是所有方块的基类,定义了物理特性、交互逻辑和渲染规则。通过 Properties 类配置方块的静态属性,如颜色、音效和光照强度。BlockStateBase.Cache 缓存碰撞
2025-05-18 13:04:19
80
原创 我的世界模组开发——特征(2)
本文为Minecraft Forge模组开发的全流程指南,分为三个阶段:开发基础、系统深化和高阶开发。第一阶段(1-7天)包括环境搭建、基础注册和方块系统入门,重点配置mod.toml和build.gradle文件。第二阶段(7-30天)涉及事件与属性、实体与渲染,强调事件监听和实体注册。第三阶段(1-4个月)涵盖源码研究、魔改和工程化开发,建议使用Mixin和自动化构建工具。指南还提供了关键避坑提示,如AI代码验证和调试优先级,帮助开发者避免常见问题。建议配合IntelliJ的Gradle面板进行实践验证
2025-05-17 20:03:51
112
原创 我的世界模组开发进阶教程——特征(1)
类签名•功能:将特性(如树木、矿石)与其生成规则(如高度、密度)组合成预配置项•泛型参数•FC:特性配置类型,必须继承•F:特性类型,必须继承// 创建橡树配置5 // 最小高度// 注册配置化特性•联系:三者呈继承关系,扩展原版进一步细化参数。•区别:原版功能基础,BOP基类支持模组生态扩展,子类实现参数标准化。•BOP模组选择:根据树木复杂度选择基类或子类,**基础树木多用,特殊生态使用直接配置。
2025-04-02 00:49:35
104
原创 我的世界模组进阶开发教程——地形生成(2)
柏林噪声通过梯度插值与分形叠加,为《我的世界》提供了高效且自然的地形生成方案。从宏观的大陆分布到微观的岩石纹理,其算法逻辑贯穿游戏世界的每个细节,成为程序化内容生成的典范。// 第二层坐标缩放因子// 目标标准差•:对第二层噪声的输入坐标进行轻微拉伸,避免两层噪声模式重复•:标准化目标值,确保输出在[-1,1]范围| (混合高频/低频) | | (基础地形层) | | (生物群系细节) || | |v v v| 地形高度合成器 |<----| 洞穴生成器 |<----| 云层渲染器 |
2025-04-01 23:36:33
214
原创 我的世界进阶模组开发教程——地形生成(1)
•作用:预定义常用地形条件判断器•参数解析•offset:深度偏移量(如的0表示从地表开始计算)•:是否叠加地表深度(决定是否考虑动态地表厚度)•:检测位置类型(地面或天花板)是 Minecraft 地形生成的核心引擎,通过噪声分层、规则系统和生物群系扩展实现多样化的地表表现。其设计融合了动态计算(噪声驱动)、模块化规则()和性能优化(坐标绑定缓存),为开放世界游戏的地形生成提供了经典参考实现。
2025-04-01 20:45:00
351
原创 我的世界1.20.1forge模组开发进阶教程——TerraBlender
从模组开发者的视角来看,TerraBlender为Minecraft生物群系类模组的开发提供了全方位的技术支持,显著降低了开发门槛并提升了模组的质量与扩展性:对于生物群系模组开发者而言,使用TerraBlender可将开发周期缩短60%以上,同时获得更好的兼容性与扩展性。其标准化的集成方案使开发者能够专注于创意设计而非底层实现,尤其适合需要多平台发布或与其他生物群系模组联动的项目。这段代码定义了一个名为 的公共类,其主要功能是管理和操作不同类型的生物群系区域(),以下是对代码的详细解释::声明该类所
2025-04-01 15:06:34
393
原创 我的世界进阶模组开发教程——GlitchCore库(1)
名称开发者:由GlitchTech开发团队创建适用游戏版本:支持Minecraft 1.19.2及后续版本加载器支持:兼容Fabric、Forge、Quilt等多种模组加载器分类:库模组(Library Mod)标签:工具类、框架、跨平台支持@Override。
2025-04-01 11:49:03
130
原创 Java学习笔记——BiConsumer
命名规范:使用动词短语命名 BiConsumer 变量// Good// Avoid异常处理:建议封装受检异常try {组合策略:合理拆分复杂操作文档建议:为复杂 BiConsumer 添加注释/*** 处理用户订单的双参数消费者:* 参数1: 订单ID (String)* 参数2: 折扣率 (Double)* 执行逻辑: 1.校验参数 2.计算价格 3.写入数据库。
2025-04-01 08:00:00
1046
原创 我的世界1.20.1forge模组进阶教程——注册和注册表(2)
与Registry共同构成Minecraft的双层级注册系统,前者是跨注册表的访问枢纽,后者是单个注册表的功能载体。在模组开发中,理解二者的协作关系,能更高效地实现元素注册、数据查询和跨模组兼容。是 Minecraft 1.20.1 后引入的现代化注册表管理工具,通过集中式配置、错误检测和生命周期管理,显著提升了模组开发的效率和可靠性。其设计充分体现了对大规模数据驱动的支持,是构建复杂模组生态的基石。•功能:通过为每个注册表创建全局唯一标识符,如BLOCK对应/block注册表路径•实现原理。
2025-03-31 18:26:55
231
原创 我的世界1.20.1forge进阶模组教程——注册和注册表
forge能注册哪些东西呢?带着问题找答案,翻开forge的源码net.minecraftforge.registries,从源码中寻找答案以下是针对提供的类代码的详细解析,结合Minecraft Forge注册机制和Java核心特性的实现:是Minecraft Forge中用于延迟加载注册表对象的核心工具类,实现了接口,确保在注册表未准备好时安全访问对象。二、核心方法解析1. 工厂方法提供多种创建实例的方式,适应不同注册场景:• 直接绑定注册表直接关联到已知的Forge注册表,当注册表更新时
2025-03-31 16:46:41
459
原创 python学习笔记(5)
命名元组是轻量级、不可变的数据容器,适合替代字典或简单类。其核心优势在于代码可读性和内存效率,但灵活性不足。在需要动态字段或复杂行为时,可考虑数据类或自定义类。通过结合类型注解和默认值,能进一步提升开发体验。命名元组通过语义化字段名和固定结构定义,将原本隐式的顺序依赖转化为显式的字段约束,解决了普通元组因索引访问导致的顺序易错性问题。这种设计在数据传递、函数返回值、代码维护等场景中显著提升了可靠性和可读性。
2025-03-31 13:03:30
807
原创 我的世界1.20.1forge进阶模组教程——结构变体的深入研究(1)
BlockPos是 Minecraft 中处理方块位置的核心工具类,提供坐标操作、旋转、迭代等丰富功能,与Rotation类协同实现方向变换。其不可变设计确保线程安全,而子类优化了频繁修改的场景。理解其实现机制对开发Mod、分析游戏逻辑或优化性能至关重要。
2025-03-31 11:49:37
309
原创 我的世界1.20.1forge进阶模组教程——生物群系与洞穴
•作用:通过createKey方法生成一个唯一标识符(ResourceKey),指向模组内部名为的洞穴雕刻器配置。•实现细节createKey方法使用模组ID()和名称构建资源路径,确保全局唯一性。这段代码是 BOP 模组扩展 Minecraft 洞穴生成的核心配置部分,通过参数化控制洞穴的生成规则和形态,同时利用原版注册表和标签系统实现高效集成。开发者可通过调整参数(如概率、高度范围)自定义洞穴生成逻辑。
2025-03-31 00:54:03
256
原创 我的世界1.20.1forge模组进阶教程——生物群系(3)
首先映入眼帘的是关于音乐的静态常量@Nullable1. 常量定义解析•类型与修饰符:所有常量均为类型,表示它们是全局唯一的、不可修改的 Music 实例。注解:仅可为null,其他常量通过初始化,保证非空。•初始化方式:通过中的事件(如)生成对应的Music对象,可能与音频资源绑定。2. 各常量的生物群系关联常量名对应的生物群系音乐资源说明默认/未指定生物群系无特定音乐(可能回退到默认逻辑)森林(Forest)轻松的自然主题音乐沼泽(Swamp)潮湿、神秘的氛围音乐。
2025-03-31 00:15:37
274
原创 我的世界1.20.1forge进阶模组开发教程——生物群系(2)
•@Mod 注解:表明这是 Forge 模组的入口类,MOD_ID是模组唯一标识符(此处为•DeferredRegister 实例:用于延迟注册游戏元素(避免过早初始化),覆盖了生物群系、方块、实体、流体等类型。//注册生物群系//注册方块每个注册器对应游戏内的一种资源类型,通过Registries类指定注册表。这段代码是典型的大型 Minecraft 模组的入口类,通过系统化的注册和生命周期管理,将新增的生物群系、方块、实体等内容整合到游戏中。
2025-03-30 22:15:10
199
原创 python学习笔记(4)
核心特性• 唯一性:键不可重复,后赋值覆盖前者• 动态性:支持增删改操作• 高效查询:基于哈希表实现,O(1)时间复杂度查找二、字典操作详解1. 创建方式方法示例说明字面量最常用方式构造函数关键字参数创建字典推导式高效生成方式fromkeys批量初始化默认值2. 元素访问3. 修改操作4. 删除操作三、进阶特性1. 字典视图• 动态特性:视图对象实时反映字典变化• 可迭代:支持遍历操作• 集合操作:支持交、并、差
2025-03-30 10:17:56
886
原创 python学习笔记(3)——元组
Python 元组特性Java 的近似实现不可变性使用或Record固定长度自定义类或第三方库的PairTriple支持异构元素泛型 +Object类型(需手动类型检查)轻量级语法需要显式定义类或依赖库。
2025-03-29 22:53:22
950
原创 我的世界1.20.1进阶模组开发教程——序列化(4)
DoubleTag类型安全:通过继承NumericTag明确数值类型语义。性能优化:对象缓存、不可变设计、流式解析。扩展性:访问者模式支持多样化的数据处理场景。兼容性:与 Java 原生double类型和 IEEE 754 标准对齐。此代码在 Minecraft 的 NBT 系统中承担了高效存储和操作双精度浮点数的关键角色。NumericTag抽象与多态:通过抽象方法统一数值操作接口,支持多态处理。类型安全:强制子类处理类型转换的精度和范围问题。不可变性:确保线程安全和对象状态一致性。扩展性。
2025-03-28 15:10:42
74
原创 python学习笔记(2)
特性Python的for循环Java的for循环语法核心基于迭代器的隐式遍历传统循环依赖索引,增强循环依赖迭代器代码简洁性更简洁(无需索引)传统循环较冗长,增强循环类似Python功能扩展支持else子句、推导式无else,但允许复杂条件控制适用场景遍历未知长度的可迭代对象传统循环适合精确索引操作性能对大数据集略慢(解释型语言特性)传统循环在数组遍历中更快。
2025-03-28 13:13:40
821
原创 python学习笔记(1)
我相信如果我写一篇又臭又长的文章,那肯定是没人看,在这个快餐式的时代,没人能耐得住性子看完又臭又长的文章,所以就直接把我的代码放出来,然后解释代码,这样也能节省篇幅,还能达到相同的效果。
2025-03-28 11:03:48
653
原创 关于mc教程我想说两句
当前国内活跃的MC模组开发者可能不足百人,且集中在老牌模组维护领域。生态复苏需依赖Mojang更新策略调整、本土化开发工具链完善,以及社区内容消费习惯的重构。
2025-03-27 17:18:31
602
我的世界1.18人工智能插件
2022-08-30
为什么一调试我的世界插件就自动打开ZipFile.java文件
2021-08-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人