Changes
Commits from 1.21.1-1.1.2 to 1.21.1-1.2.0:
- Release Spartan Weaponry 1.2.0 fixes (3ca751e)
- Fix constantan weapon trait tag (81c1f21)
- Fix throwable melee weapon pickup (73cfa82)
- Refresh project documentation (3ad17d4)
- Fix throwing weapon survival pickup (ae48ff5)
- Extract weapon runtime helpers (88445e3)
- Run formatter on Java 21 (b2a716d)
- Normalize Java formatting and item group views (f1fdd43)
- Improve weapon maintenance structure (7610c3c)
Changelog
[1.0.7] - 2026-03-17
Fixed
- Dimension Portal Crash: Fixed
IllegalStateException: Cannot encode empty ItemStackcrash when any projectile entity (arrows, throwing weapons, bolts) enters a dimension portal (Nether, End, Aether, etc.). Root cause:AbstractArrow.addAdditionalSaveData()would callsave()on an empty pickup ItemStack during dimension transitions. - 维度传送门崩溃: 修复了任何投射物实体(箭矢、投掷武器、弩箭)进入维度传送门(下界、末地、天境等)时
IllegalStateException: Cannot encode empty ItemStack崩溃。根本原因:AbstractArrow.addAdditionalSaveData()在维度转换时对空的 pickup ItemStack 调用save()。 - Bolt Persistence: Fixed bolts losing their type (copper, diamond, netherite, etc.) after chunk unload/reload —
DATA_BOLTwas never saved to or loaded from NBT. - 弩箭持久化: 修复了弩箭在区块卸载/重载后丢失类型(铜、钻石、下界合金等)的问题 —
DATA_BOLT从未写入/读取 NBT。
Changelog
[1.0.5] - 2026-03-04
Fixed
- Dedicated Server Crash: Fixed a critical crash on dedicated servers caused by client-only class references (
Screen,ConfigurationScreen,IConfigScreenFactory) in the common mod entry pointModSpartanWeaponry. These classes are stripped byRuntimeDistCleaneron servers, causingNoClassDefFoundError. - 专用服务器崩溃: 修复了因主模组入口
ModSpartanWeaponry中引用了客户端专属类(Screen、ConfigurationScreen、IConfigScreenFactory)而导致专用服务器崩溃的严重问题。这些类在服务器端被RuntimeDistCleaner移除,导致NoClassDefFoundError。 - CuriosHelper.Client on Server: Added
FMLEnvironment.dist.isClient()guard to preventCuriosHelper.Client::registerReloadListenerfrom being called on dedicated servers. - CuriosHelper.Client 服务端问题: 添加了
FMLEnvironment.dist.isClient()检查,防止在专用服务器上调用CuriosHelper.Client::registerReloadListener。
Changed
- Config Screen Registration: Moved config screen extension point registration from
ModSpartanWeaponrytoClientHelper.registerConfigScreen(), properly guarded behind a dist check. - 配置界面注册: 将配置界面扩展点注册从
ModSpartanWeaponry移至ClientHelper.registerConfigScreen(),并用物理端检查正确保护。 - Missing Translations (en_us.json): Added 105 missing translation keys including all wooden weapon variants, throwing knives, boomerangs, javelins, tomahawks, quiver upgrade kits, and tipped projectile effects.
- 缺失翻译 (en_us.json): 补充了 105 个缺失的翻译 key,包括所有木质武器变体、飞刀、回旋镖、标枪、印第安战斧、箭袋升级包和药水箭头效果。
- Missing Translations (zh_cn.json): Added 14 missing translation keys including parrying dagger variants, quiver compartment tooltips, and lightweight trait.
- 缺失翻译 (zh_cn.json): 补充了 14 个缺失的翻译 key,包括格挡匕首变体、箭袋隔层提示和轻量化特性。
Changelog
[1.0.4] - 2026-02-08
Fixed
- Loyalty Enchantment Bug: Fixed throwing weapons (and throwable melee weapons) losing ALL enchantments after being returned via the Loyalty enchantment. Root cause:
removeEnchantments()inThrowingWeaponEntitywas stripping all enchantments on block hit, pickup, and item drop. The method has been removed entirely; duplication is prevented by the existing AmmoUsed merge system. - 忠诚附魔 Bug: 修复了可投掷武器(及带有投掷特性的近战武器)在通过忠诚附魔回收后丢失所有附魔效果的问题。根本原因:
ThrowingWeaponEntity中的removeEnchantments()会在命中方块、拾取和掉落时清除所有附魔。该方法已被完全移除,物品复制由现有的 AmmoUsed 合并系统防止。 - Entity Persistence: ThrowingWeaponEntity now correctly saves/loads weapon data (
DATA_WEAPON) and loyalty return level (DATA_RETURN) in NBT, preventing weapon loss after chunk unload/reload. - 实体持久化: ThrowingWeaponEntity 现在正确地在 NBT 中保存/加载武器数据和忠诚返回等级,防止区块卸载/重载后武器丢失。
- Non-merge Pickup Path: Fixed
attemptCatch()incorrectly addingNBT_AMMO_USEDtag to non-ThrowingWeaponItem weapons (e.g., melee weapons with Throwable trait), which would cause enchantment loss on subsequent throws. - 非合并拾取路径: 修复了
attemptCatch()错误地向非 ThrowingWeaponItem 武器(如带投掷特性的近战武器)添加NBT_AMMO_USED标签的问题,该问题会导致后续投掷时附魔丢失。
Added
- Config Screen: Added in-game configuration screen for client settings (crosshair options, HUD alignment, integration toggles). Accessible via NeoForge mod list → Config button.
- 配置界面: 添加了客户端设置的游戏内配置界面(准星选项、HUD 对齐、联动开关)。可通过 NeoForge 模组列表 → 配置按钮访问。
Changelog
[1.0.2] - 2026-02-07
Changed
- Mod ID Update: Changed from
spartanweaponryunofficialtospartan_weaponry_unofficial(using underscores) to comply with Minecraft modding naming conventions. - Version Number: Updated to 1.0.2.
Added
- Strengthened Weapon Naming: Longbows and heavy crossbows created through the addon API now automatically have the
_strengthenedsuffix:- Longbow:
longbow_{material}_strengthened(e.g.,longbow_diamond_strengthened) - Heavy Crossbow:
heavy_crossbow_{material}_strengthened(e.g.,heavy_crossbow_iron_strengthened)
- Longbow:
- Localization Updates: Updated all 7 language translation files to support the new naming format.
Fixed
- Model Generation System: Fixed and improved texture path conversion logic in
ModelGenerator.java, supporting automatic conversion for all 18 material types. - Data Generation: Resolved data generation failures caused by mismatches between weapon registration names and texture file names.
- Data Namespace References: Updated 506 namespace references in data and assets JSON files from old to new Mod ID format.
Technical Changes
- Refactored the
WeaponItemsRangedconstructor inModItems.javato add strengthened weapon suffix logic. - Extended the material list in
ModelGenerator.javato cover all vanilla and mod-added material types. - Renamed resource directory structure to match the new Mod ID (
assets/spartan_weaponry_unofficialanddata/spartan_weaponry_unofficial). - Updated API documentation and resource pack development guide to reflect the naming changes.
- Batch updated all namespace references in:
- 489 data JSON files (tags, enchantments, recipes, loot tables, advancements)
- 17 assets JSON files (models)
Breaking Changes
⚠️ Incompatible with Old Save Files: Due to the Mod ID change, items from previous versions will be lost after updating. It is recommended to use this version in new worlds.
[1.0.2] - 2026-02-07
Changed
- Mod ID 更新: 从
spartanweaponryunofficial更改为spartan_weaponry_unofficial(使用下划线),以符合 Minecraft 模组命名规范。 - 版本号: 更新到 1.0.2。
Added
- 强化武器命名: 通过附加 API 创建的长弓和重型十字弩现在自动添加
_strengthened后缀:- 长弓:
longbow_{material}_strengthened(例如:longbow_diamond_strengthened) - 重型十字弓:
heavy_crossbow_{material}_strengthened(例如:heavy_crossbow_iron_strengthened)
- 长弓:
- 本地化更新: 更新了所有 7 种语言的翻译文件以支持新的命名格式。
Fixed
- 模型生成系统: 修复并改进了
ModelGenerator.java中的纹理路径转换逻辑,支持所有 18 种材料的自动转换。 - 数据生成: 解决了武器注册名与纹理文件名不匹配导致的数据生成失败问题。
- 数据命名空间引用: 更新了 data 和 assets JSON 文件中的 506 处命名空间引用,从旧格式更新为新的 Mod ID 格式。
Technical Changes
- 重构了
ModItems.java中的WeaponItemsRanged构造函数,添加了强化武器后缀逻辑。 - 扩展了
ModelGenerator.java中的材料列表,覆盖原版和模组添加的所有材料类型。 - 重命名了资源目录结构以匹配新的 Mod ID (
assets/spartan_weaponry_unofficial和data/spartan_weaponry_unofficial)。 - 更新了 API 文档和资源包开发指南以反映命名变更。
- 批量更新了所有命名空间引用:
- 489 个 data JSON 文件(tags、enchantments、recipes、loot tables、advancements)
- 17 个 assets JSON 文件(models)
Breaking Changes
⚠️ 不兼容旧版本存档: 由于 Mod ID 变更,旧版本的物品在更新后会丢失。建议在新世界中使用此版本。
Changelog
Apotheosis Mod Compatibility Fixes
-
Fixed the issue where Battle Axes cannot be placed in the Reforging Table: Added
SWORD_DIGto theItemAbilityset ofBATTLEAXE, allowing it to be recognized as a melee weapon by Apotheosis while retaining its original axe functionalities (stripping bark, removing copper patina, and de-waxing). -
Fixed the issue where other weapons cannot be placed in the Reforging Table: Added the
SWORD_DIGability to all melee weapons and thrown weapons, including:-
Melee Weapons: Dagger, Parrying Dagger, Sword, Rapier, Saber, Katana, Greatsword, Club, Gauntlets, War Hammer, Lucerne Hammer, Spear, Halberd, Pike, Lance, Flail, Naginata, Quarterstaff, Scythe
-
Thrown Weapons: Throwing Knife, Battle Axe, Javelin, Boomerang
-
Sweep Attack Mechanics Overhaul (Sweep)
-
**Modified **
PlayerMixin.java: Restored and rewrote the interception logic forEnchantmentHelper.getSweepingDamageRatio. -
New Calculation Formula: Final Sweep Damage = Weapon Base Damage × Sweep Trait Multiplier (e.g., 8.5 × 0.75 = 6.375).
-
**Updated Sweep Multiplier Definitions in **
WeaponTraits.java:-
SWEEP_1: 25% (0.25f) -
SWEEP_2: 50% (0.50f) -
SWEEP_3: 75% (0.75f) - Corresponds to the original "Sweeping Edge III" effect.
-
Attack Range (Reach) Adjustments
-
**Added New Trait Levels in **
WeaponTraits.java:-
REACH_1_5: +1.5 Blocks (Magnitude 6.5f) -
REACH_2_5: +2.5 Blocks (Magnitude 7.5f)
-
-
**Updated **
ModWeaponTraitTagsProvider.java: Adjusted attack range bonuses for various weapons (added to the original base values):-
+1.0 Block Increase:
-
Scythe: 0 -> +1.0 (
REACH_1) -
Javelin: 0 -> +1.0 (
REACH_1) -
Quarterstaff: 0 -> +1.0 (
REACH_1) -
Lance: +1.0 -> +2.0 (
REACH_2) -
Spear: +1.0 -> +2.0 (
REACH_2)
-
-
+0.5 Block Increase:
-
Pike: +2.0 -> +2.5 (
REACH_2_5) -
Halberd: +1.0 -> +1.5 (
REACH_1_5) -
Glaive: +1.0 -> +1.5 (
REACH_1_5)
-
-
更新日志
Apotheosis 模组兼容性修复
-
修复战斧无法放入重铸台的问题:为
BATTLEAXE的ItemAbility集合添加了SWORD_DIG,使其能被 Apotheosis 识别为近战武器,同时保留原有的斧头功能(剥树皮、刮铜锈、去蜡)。 -
修复其他武器无法放入重铸台的问题:为所有近战武器和投掷武器添加了
SWORD_DIG能力,包括: -
近战武器:匕首、格挡匕首、剑、刺剑、军刀、武士刀、巨剑、棍棒、拳套、战锤、锤矛、长矛、戟、长枪、骑枪、链枷、薙刀、棍棒、镰刀
-
投掷武器:飞刀、战斧、标枪、回旋镖
横扫攻击机制重构(Sweep)
-
PlayerMixin.java**修改 **:恢复并重构了EnchantmentHelper.getSweepingDamageRatio的拦截逻辑。 -
新增计算公式:最终横扫伤害 = 武器基础伤害 × 横扫特质倍率(示例:8.5 × 0.75 = 6.375)。
-
WeaponTraits.java更新 中的横扫倍率定义:SWEEP_1: 25% (0.25f) -
SWEEP_2: 50% (0.50f) -
SWEEP_3: 75% (0.75f) - 对应原版“横扫之刃III”效果。
攻击范围(Reach)调整
-
WeaponTraits.java在 中新增特质等级:REACH_1_5: +1.5 格(量级 6.5f) -
REACH_2_5: +2.5 格(量级 7.5f)
ModWeaponTraitTagsProvider.java **更新 **:调整了各类武器的攻击范围加成(在原有基础值上增加):
+1.0 格提升:
镰刀:0 → +1.0(REACH_1)
标枪:0 → +1.0(REACH_1)
棍棒:0 → +1.0(REACH_1)
骑枪:+1.0 → +2.0(REACH_2)
长矛:+1.0 → +2.0(REACH_2)
+0.5 格提升:
长枪:+2.0 → +2.5(REACH_2_5)
戟:+1.0 → +1.5(REACH_1_5)
薙刀:+1.0 → +1.5(REACH_1_5)

