Skip to content

v3.8.2.32

Pre-release
Pre-release
Compare
Choose a tag to compare
@KnightMiner KnightMiner released this 13 May 06:40
· 95 commits to 1.19.2 since this release

Hopefully should be the last major API changes. Marking this as an alpha mostly as it needs more testing, but addons should have a lot less risk of breaking when porting to the API from this alpha.

Plate Armor rework

  • Plate armor now has 2 tool parts instead of being made in the crafting table.
  • Plating comes in four variants for helmets, chestplates, leggings, and boots and provides the majority of stats.
  • Maille has a single variant used for all 4 armor pieces. It has the same set of traits as plating but no stats.
  • Plating is made from metals (including gold!) and ceramics (seared stone, scorched stone, or obsidian).
  • Maille is made from anything valid for plating plus leather or ancient hide.
  • While maille can be created in the part builder and via casting, plating can only be created via casting. To aid this, sand casts can now be created in the part builder by placing sand in the pattern slot. This is in addition to creating them in casting tables.
  • All available materials have traits that are effective on armor, full list coming soon to the book.
  • Since golden is now added to plate via the gold material, you can no longer apply golden to plate armor.
  • Since plate can be created with overworld materials in the tinker station, its now covered in puny melting instead of fantastic foundry.

Shields

  • Plate shields are now created by casting molten metal or stone on a shield core
  • All non-composite variants of armor plating work as the casting
  • Shield cores can be made out of wood, including bamboo, nahuatl, and the new blazewood
  • Shield cores just provide traits, while shield plating provides durability, toughness, and knockback resistance
  • To reduce recipe overlap, travelers shields are now made from leather and patterns instead of copper and wood. As a result, they now use wood embellishments for the inner layer and dye the outer layer

Protection Modifier rebalance

  • All 5 protection types now use wood patterns as the base instead of obsidian panes.
  • Projectile protection is now made from iron instead of amethyst bronze.
  • Blast protection is now made from obsidian instead of emerald.
  • Projectile protection now boosts knockback resistance instead of reducing mob visibility.
  • Melee protection's secondary ability now boosts movement speed when using shields or bows instead of attack speed.
  • The emerald modifier now grants toughness instead of knockback resistance.
  • Durability reinforcements now use emerald instead of iron.

Modifiers

  • Modifier crystals and modifiers in JEI now show the modifier description in the tooltip
  • Fix a few armor modifiers applying to held modifiers when they shouldn't, such as magnetic
  • Fix double jump not working
  • Fix magnetic not triggering on bow firing
  • Fix momentum level scaling being broken

Chain removal

  • Removed chain tool material
  • For melee/harvest tools, the existing rose gold binding replaces it
  • For bows, the new rose gold bowstring replaces it. Created by casting molten rose gold on string tool parts
  • For the cool palette, the new wrought iron material variant replaces it. Wrought iron requires pouring molten glass on iron.

Book

  • Plate armor was moved to puny melting alongside travelers
  • Puny melting, mighty smelting, and fantastic foundry now have sections on armor materials. Puny melting is notably both tier 1 and 2 (since you cannot create armor without casting)
  • Encyclopedia now has 1 section per material type (melee/harvest, ranged, armor) instead of 1 per tier per type
  • Encyclopedia no longer uses advancements to unlock sections; all start unlocked. This is because after merging materials, only modifiers were left unlocking making the feature a little lack-luster
  • Material pages will n o longer show composites from themselves (e.g. casting water on copper to get oxidized copper)

Misc

  • Furnaces, brewing stands, melters, and foundries are now blacklisted from the side inventory for crafting stations and tinker stations.
  • Silky cloth is now crafted by pouring rose gold on cobwebs
  • Severing on spiders now can drop cobwebs
  • Updated slimes to work with frogs
  • Fix small tool models having z-fighting in some cases
  • Fix small tool models not processing material luminosity
  • Fix stray slimeskulls having no face texture
  • Fix platforms defaulting to waterlogged when placed with commands

API

  • Cleanup material ingredient, now supports material tags (though the change that led to this refactor ended up being reworked, so material ingredients are still not used to their potential)
  • Use data generator to create cast and tool part models since they are mostly just repetition of a texture name
  • Multiblocks (e.g. the smeltery) now store their positions in NBT relatively. This should make them friendlier to being relocated by things like structure blocks.
  • Material sprite generator now supports animated materials
  • Protection module builder now defaults to CAN_PROTECT
  • Modify damage hook no longer requires shields to be blocking, as that is almost never the case in that hook
  • Fix ordering of part sprites in the material generator being inconsistent for tool models

Models

  • Added a builder for part models for datagen
  • Tool brokenness is now handled via an item override instead of being special cased in the tool model. This should simplify modifier model code and give more flexability, though its a bit more JSON
  • Added a data generator to help make broken and blocking models for tools, since they are all the same general structure.
  • Unknown materials now render as an outline instead of solid white.
  • Tool models now pass unknown instead of null for missing materials.
  • Item display on blocks (casting, crafting station, etc.) now use custom transform types allowing you to change how they display in resource packs.

Modules

  • ModifierModule#defaultHooks moved to HookProvider#defaultHooks to make it easier to find for tools. Unfortunately static interface rules forbid that being an easy reference update.
  • Move TooltipDisplay to BasicModifier since it was weird the modifier used an enum defined in a subclass.
  • Renamed ModifierHookMap to ModuleHookMap and ModifierHook to ModuleHook for the sake of tool modules.
  • Renamed TinkerHooks to ModifierHooks, they are now registered to ModifierHooks#LOADER.

Tool Definitions

  • Now uses modules and hooks instead of a bunch of hardcoded fields. This provides a lot more flexibility as addons can more easily define custom tool behavior.
  • Notable hooks granting new functionality: volatile data, material repair and missing materials
  • Material repair for non-multipart tools is notably defined using MaterialRepairModule
  • Tool definition random material tier is now part of the default material module
  • Tool definition stat provider is now part of the material stat or part stat module.
  • With the above changes, tool definitions no longer directly contain data, its all handled by JSON.
    In the future, this set of changes may allow "global tool definitions" which add extra modules to all tools. Allows things like a global trait, a global stat multiplier, or adding behavior to existing tools.

Tool Stats

  • Material stats (additive and multipliers) are now applied at the same time as modifier stats.
  • This means a handle multiplier will now multiply modifiers, e.g. a mining speed multiplier will affect haste.
  • Goal was partly simplicity of API, but mostly just reducing the difficulty in explaining the formulas.
  • On average tools will likely be a bit stronger due to this change.
  • Its possible handles will get further changes in the future to make bow limbs and handles more consistent.
  • Modifier stat builder now supports fetching a partially built stat
  • Tool stats can now access the modifier stat builder object on final stat build.

Material Stat Types

  • Now use loadables instead of GSON for parsing, should reduce boilerplate for packet buffers and allows reusing a single class for multiple types.
  • Bowstrings and bindings are both part of StatlessMaterialStats now, attempted to deprecate the old locations but it was not always feasible.
  • Handle stats now uses a builder instead of a bunch of with methods.
  • Material stats are now handled by the stat object directly.
  • Removed MaterialStatsBuilder and IToolStatsProvider due to the above. As a result, any stat types can be combined on a tool.
  • Tools now use stat scales instead of weights for parts, which allows going above 1 in the total amount notably. See this commit for more details.

Tool context

  • No longer contains stats due to the stat rework changes above.
  • No longer contains volatile data, as that was only populated for a single hook.
  • Added a new tool stack predicate for predicates wanting that additional context.
  • All usages of ToolRebuildContext in hooks are now IToolContext

Modifiers

  • Volatile flag modifier now supports conditions, used to migrate offhanded to JSON
  • Overslime friends is now a modifier tag instead of a volatile flag
  • Overslime capacity is now a tool stat, allowing migrating overcast and overforced to JSON
  • As a result of this, overcast now multiplies overlord
  • Process loot hook now takes modifier entry as a parameter. Still not sure what I'm going to do with that one...
  • Protection enchantment subtraction is now a new module instead of part of the protection module. Reduces JSON boilerplate with repeating the enchantment settings.
  • Armor level and armor stat modules can now be used in JSON, due to a registry of standard types. This means modifiers such as haste are now defined in JSON
  • Added effect immunity module, implements mithridantism

Full Changelog: 3.7.1.155...v3.8.2.32