cnpcplus-3.1.0-1.12.2Forge.jar
Curse Maven Snippet
What's new
CNPCplus-Fix 3.1.0 (1.12.2 Forge)
New Features & Improvements
🎵 Bard BGM Improvements
-
Fixed and optimized the Bard BGM distance-based stopping system.
-
Restored the original meaning of the "Stop playing beyond closing distance" option:
- When enabled, the current Bard music will stop when the player moves beyond the configured distance.
- When disabled, already-playing Bard music will not be stopped by distance.
-
Bard volume is now controlled only by the Master Volume and Bard volume sliders.
-
Bard BGM is no longer affected by the Music or Jukebox/Note Blocks volume sliders.
-
Fixed an issue where the Bard volume slider could be overwritten by the Music slider when entering a world.
-
Changing the Bard volume slider now immediately updates currently playing Bard channels without modifying other volume settings.
-
When multiple Bards are nearby, the closer Bard will still have playback priority.
✨ Dedicated Particle Script APIs
Added dedicated script APIs for three special particle types:
spawnDustParticlespawnBlockParticlespawnItemParticle
These particles can now be spawned directly from scripts without executing commands.
Supported script objects include NPCs, players, script blocks, script doors, and script items.
NPC / Player
spawnDustParticle(red, green, blue, scale, x, y, z, dx, dy, dz, speed, count)
spawnBlockParticle(blockId, x, y, z, dx, dy, dz, speed, count)
spawnItemParticle(itemId, x, y, z, dx, dy, dz, speed, count)
Script Block / Script Door
block.spawnDustParticle(red, green, blue, scale, x, y, z, dx, dy, dz, speed, count)
block.spawnBlockParticle(blockId, x, y, z, dx, dy, dz, speed, count)
block.spawnItemParticle(itemId, x, y, z, dx, dy, dz, speed, count)
door.spawnDustParticle(red, green, blue, scale, x, y, z, dx, dy, dz, speed, count)
door.spawnBlockParticle(blockId, x, y, z, dx, dy, dz, speed, count)
door.spawnItemParticle(itemId, x, y, z, dx, dy, dz, speed, count)
Script Item
Script items must explicitly receive an IPlayer parameter so the particle can be spawned in the correct world:
item.spawnDustParticle(player, red, green, blue, scale, x, y, z, dx, dy, dz, speed, count)
item.spawnBlockParticle(player, blockId, x, y, z, dx, dy, dz, speed, count)
item.spawnItemParticle(player, itemId, x, y, z, dx, dy, dz, speed, count)
blockIdanditemIduse registry names such asminecraft:stoneandminecraft:diamond.- Block particles use
BLOCK_CRACK. - Item particles use
ITEM_CRACK. - Dust particles use
REDSTONE. - Item particles use the item's default damage value (
0). - Invalid block or item IDs will report an error such as "Unknown block" or "Unknown item" without crashing the server.
🏃 NPC Movement Speed
- NPC movement speed now supports floating-point values.
- The minimum speed has been reduced from 1 → 0.01.
- The maximum remains 10 for compatibility.
- The NPC movement speed field now accepts decimal values such as
0.01,0.25,1.5, and5.75. - Ground and flying movement now use the precise floating-point speed value.
- Existing NPCs remain compatible with previous saves.
- Original integer
MoveSpeed/Speedvalues are preserved, while CNPCplus-Fix stores additional precision in its own save data.
⚔️ Mercenary Dismissal
- Added a "Dismiss" button to the player-facing interface for NPCs with the Mercenary profession.
- The button is available in the player's interaction interface and does not require opening the NPC editor.
- Dismissal is handled through a dedicated server-side packet with ownership validation.
- Players can now directly dismiss their hired Mercenary NPCs.
🌑 NPC Model Shadow Improvements
- Fixed an issue where the ground shadow of NPCs using other entity models was calculated from the NPC's collision box width.
- Other models now use the shadow radius defined by their original model renderer, scaled according to the CNPC model size.
- Improved shadow rendering for models such as Iron Golems, npcGolem, and entity models from other mods.
- This change does not modify existing attack swing animation or SpartanWeaponry compatibility fixes.
🔮 Summoner Profession Fixes
-
Fixed an issue where the summon index could be advanced twice during sequential summoning.
-
Sequential summoning now correctly follows the configured order:
- Summon 1 → 2 → 3 → 4 → 5 → 6
-
Fixed the previous behavior where only Summon 1, 3, 5, etc. could be used.
-
Simultaneous and random summoning modes are unaffected.
-
Summoner profession slot buttons can now display the name of the corresponding summon.
中文
🎵 吟游诗人 BGM 优化
-
修复并优化了吟游诗人 BGM 的距离关闭系统。
-
恢复“超过关闭距离时停止播放”选项的原本语义:
- 开启时,玩家超过关闭距离后,当前吟游诗人的音乐会停止。
- 关闭时,已经开始播放的吟游诗人音乐不会因距离而停止。
-
吟游诗人的音量现在仅受主音量和吟游诗人音量滑块控制。
-
不再受到音乐或唱片机/音符盒音量滑块影响。
-
修复进入世界时吟游诗人音量滑块可能被音乐滑块覆盖的问题。
-
拖动吟游诗人音量滑块时,会立即刷新正在播放的吟游诗人音频,不会修改其他音量设置。
-
当附近存在多个吟游诗人时,仍然优先播放距离玩家更近的吟游诗人。
✨ 专用脚本粒子 API
为三种特殊粒子新增了专用脚本 API:
spawnDustParticlespawnBlockParticlespawnItemParticle
现在可以直接通过脚本生成这些粒子,不再需要通过脚本执行指令。
支持 NPC、玩家、脚本方块、脚本门和脚本物品使用。
NPC / 玩家
spawnDustParticle(红, 绿, 蓝, 大小, x, y, z, dx, dy, dz, 速度, 数量)
spawnBlockParticle(方块ID, x, y, z, dx, dy, dz, 速度, 数量)
spawnItemParticle(物品ID, x, y, z, dx, dy, dz, 速度, 数量)
脚本方块 / 脚本门
block.spawnDustParticle(红, 绿, 蓝, 大小, x, y, z, dx, dy, dz, 速度, 数量)
block.spawnBlockParticle(方块ID, x, y, z, dx, dy, dz, 速度, 数量)
block.spawnItemParticle(物品ID, x, y, z, dx, dy, dz, 速度, 数量)
door.spawnDustParticle(红, 绿, 蓝, 大小, x, y, z, dx, dy, dz, 速度, 数量)
door.spawnBlockParticle(方块ID, x, y, z, dx, dy, dz, 速度, 数量)
door.spawnItemParticle(物品ID, x, y, z, dx, dy, dz, 速度, 数量)
脚本物品
由于脚本物品本身没有固定的世界和坐标,因此需要显式传入 IPlayer:
item.spawnDustParticle(player, 红, 绿, 蓝, 大小, x, y, z, dx, dy, dz, 速度, 数量)
item.spawnBlockParticle(player, 方块ID, x, y, z, dx, dy, dz, 速度, 数量)
item.spawnItemParticle(player, 物品ID, x, y, z, dx, dy, dz, 速度, 数量)
blockId和itemId使用注册名,例如minecraft:stone、minecraft:diamond。- 方块粒子使用
BLOCK_CRACK。 - 物品粒子使用
ITEM_CRACK。 - 红尘粒子使用
REDSTONE。 - 物品粒子使用物品默认损伤值
0。 - 使用不存在的方块或物品 ID 时,会报告 "Unknown block" 或 "Unknown item" 等错误,但不会导致服务器崩溃。
🏃 NPC 移动速度
- NPC 移动速度现在支持浮点数。
- 最低移动速度从 1 降低至 0.01。
- 最高速度仍保持为 10,以保证原有兼容性。
- NPC 移动速度输入框现在可以填写
0.01、0.25、1.5、5.75等小数。 - 地面移动和飞行移动现在均使用精确的浮点速度值。
- 旧 NPC 存档保持兼容。
- 原有整数
MoveSpeed/Speed数据仍会保留,同时由 CNPCplus-Fix 使用额外的数据保存小数精度。
⚔️ 雇佣兵解雇
- 为雇佣兵职业的 NPC,在玩家交互界面中新增 “解雇”按钮。
- 该按钮位于玩家界面中,不需要进入 NPC 编辑界面。
- 解雇操作通过独立的服务端数据包处理,并进行雇佣关系验证。
- 玩家现在可以直接解雇自己雇佣的雇佣兵 NPC。
🌑 NPC 模型阴影优化
- 修复其他实体模型 NPC 的地面阴影按照 NPC 碰撞箱宽度绘制的问题。
- 现在会使用原模型渲染器定义的阴影半径,并根据 CNPC 模型大小进行缩放。
- 改善铁傀儡、
npcGolem以及其他模组实体模型的阴影显示。 - 此修改不会影响已有的攻击挥手动画修复以及 SpartanWeaponry 兼容修复。
🔮 召唤师职业修复
-
修复顺次召唤时召唤索引被连续偏移两次的问题。
-
顺次召唤现在会按照正确顺序执行:
- 召唤 1 → 2 → 3 → 4 → 5 → 6
-
修复之前只能使用召唤 1、3、5……的问题。
-
同时召唤和随机召唤模式不受影响。
-
召唤师职业对应槽位的按钮现在可以显示对应召唤物的名称。
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

