3.8.0.14 for 1.19.2
Pre-release
Pre-release
Obligatory Alpha Warning
This build is an alpha. Alpha means things might break. Specific points:
- We will do our best to prevent worlds from breaking, but make backups of worlds just in case.
- Do not include this build in a modpack unless you plan to stick around on 1.19.2 long enough for us to get a stable release out. We don't want to constantly get reports of issues we have long since fixed because a modpack did not make a stable experience.
- If you are an addon author, know we make no API stability guarantees until we make a beta. Check out the Roadmap for specifics on what we plan to change. Feel free to ask on our discord if you have any questions on updating.
Specific changes in this build are below.
Blood rework
After thinking it over for awhile, blood does not really have a good place in TiC 3. Originally in TiC 1, blood was a slime substitute with a few funny plans, but mostly was a placeholder for future content that never got implemented. TiC 3 has so many ways of obtaining slime that a slime substitute is less necessary, and most of its plans were scrapped.
- Removed blood slime variant, including the blood block, blood balls, congealed slime, and the blood fluid.
- The fallback for mob melting is now liquid soul (also obtained from melting soul sand). Figured 1 underutalized fluid is better than 2.
- Blood embellishments still exist, crafted using bloodshroom planks. Other slimy planks craft the appropriate embellishment.
- Blood cake now uses honey in place of blood, providing much nicer flavor.
- Piggybackpacks are now crafted using skyslime on a saddle.
- Blood foliage (such as bloodshrooms) is unaffected, except getting the word "slimy" replaced with "bloody".
- Blazing blood is also unaffected by this change.
Meat soup
- Edible animals such as cows, pigs, rabbits, fish, and sheep melt into meat soup instead of blood.
- Can be poured into wooden bowls to use as a food, or used with modifiers such as slurping.
- Since its just farm animals, there are no downsides to eating it unlike blood.
- Used in alloying pig iron alongside honey and iron.
Venombone
- Replaces bloodbone as we need blood for bloodbone
- Created by pouring venom (from melting spiders and spider eyes) on bone or bone tool parts.
- Stats are the same as bloodbone used to be, putting it in tier 2 melee.
- Trait boosts damage when poisoned, higher levels of poison grant more damage.
- Consider drinking liquid venom, which grants poison and strength.
- Raging (bloodbones trait) will return on a different material in the future.
Smeltery
- Ducts (the filtered drain) are crafted using gold instead of cobalt. This is to free up cobalt for use in the sublimery (and allow earlier access to filtered drains).
Tools
- Added magma embellishement from magma blocks and magma cream.
- Added mangrove as a new wood variant
- Strong bones and boon of sssss will no longer function if cheated onto a non-helmet. before they partly functioned but some features required helmets.
- Removed slime slings, they were replaced by flinging, springing, bonking, and warping (from 1.18). Apply to a slime staff for the most comparable experience.
- Fix conditional mining speed module not checking the holder condition (affects airborne trait)
- Fix being able to cast water on oxidized copper to make oxidized copper
- Fix tank module serializer having the wrong default keys
- Fix extra ingredients in tool recipes being ignored in the tinker station under some circumstances
- Fix feather falling not being marked as an incremental modifier
- Fix part builder not always updating the material value when materials change
Slime Staff aesthetics
- Slime staffs no longer receive metal embellishments.
- Instead, they receive wood embellishments using 2 planks and a pattern, which changes the wood variant of the handle.
- Dyeing now changes the color of the crystal (previously was the handle).
- The metal band is now the part of the texture which remains the same regardless of embellishments and dyeing (was the crystal before).
- This should overall allow better matching your staff look to the modifier thematics, and also sets up wood embellishments for future content.
World
- Added ichor cake, it is currently uncraftable but that will change in the future.
- Skyslime islands no longer spawn with congealed earth slime in the lakes, instead having just congealed skyslime.
- Blood islands no longer spawn with congealed blood, instead having just congealed ichor. The lakes also now have magma blocks at the bottom.
- Removed the earthslime mob, it only existed to work around a Minecraft limitation that prevented us from spawning vanilla slimes on the islands. Forge has a new API that fixed that. Only change in behavior is vanilla slimes cannot spawn with armor.
Emberbark
- The end slime island trees have been revamped
- Trees are now styled after mangrove trees, meaning leaves no longer drop saplings, but can be bonemealed to grow "propagules".
- Trees also notably will grow enberbark roots under the stem, which can grow though congealed slime making slimy enderbark roots.
- Slimy enderbark roots can also be created by casting slime onto enderbark roots, and can be used as a slime dirt alternative. They may get more uses in the future.
- Enderbark is now used to craft enderslime staffs, and works as a slimewood material variant.
Datapacks and resource packs
- Fluid ingredients referring to static fluids now use the key
fluid
instead ofname
for consistency with item ingredients and fluid stacks. - Use
no-load
data key to stop sections with no data file from erroring. Apparently this was a problem on 1.18 but it did not produce visible errors? - And, Or, Any, and Inverted predicates are now registered under
mantle
instead oftconstruct
for all types. - Defaulting fields in JSON will now often not include the default in our provided resources (e.g. most uses of
mantle:any
) - Ore melting recipes can now specify ore rate types of
default
(same behavior in byproduct as not specifying) andnone
(no boost on the fluid or byproduct from ore config). Note if you are just going tonone
ordefault
everything, you might as well not use the ore loader.
Tools
- Modifier requirements are now defined in the modifier JSON instead of the recipe JSON. Recipes that just wanted a lower level of themselves are defined using the new min level field.
- Modifier recipes no longer have a output level, instead restricting to 1. This was done as it caused issues with incremental modifiers and modifier removal when higher than 1, and was never used in our content.
- Removed
tconstruct:tool
predicate in favor of the improvedtconstruct:tool_stack
predicate. - Simplify JSON for variables: mining speed, melee damage, and conditional stats all automatically have access to tool variables now. Mining speed now automatically has access to conditional stat variables.
Tags
- Moved
tconstruct/modifiable/melee_or_harvest
totconstruct/modifiable/loot_capable_tool
as all recipe usages got switched to compound ingredients (as we wanted more fine grained control between unarmed and ranged also wanting many modifiers). You probably should migrate to fine grained control instead of the loot tag unless doing loot. - Removed
tconstruct:tooltips/water
as we did not end up encountering any other bottleable water variants, the default behavior handles buckets and milibuckets.
Models
- Fallback textures for large tool models with no parts are now
large_tool
andlarge_broken
instead oftool_large
andtool_broken
- Replaced
CopperCanModel
withFluidContainerModel
. Its basically a specialized version of forge's fluid container model, ditching covers (which we don't need) but handling fluid stacks and static fluid tints. - Moved fluid textures from
textures/block/fluid/
totextures/fluid
and organized into folders. - Fluid textures are now controlled by files in
mantle/fluid_texture/
instead of the block model, means JSON exists for powdered snow and potion fluids now. - Bow and crossbow charging states are now under
tconstruct:charge
andtconstruct:charging
instead of the pull IDs. This is for consistency with non-bows.
Worldgen
- Slime islands are now registered in JSON, this allows modifying them or adding your own islands more easily.
- Cobalt ore and geodes are now registered in JSON, meaning their config options were removed. Forge has documentation on how this registration works which is applicable to modpack makers.
Books
- Fix tool pages in materials and you loading from the wrong folder
- Fix book index links not working for sections with modifiers in multiple groups
- Fix tooltip overlap on material pages
API and technical
- Added
ModifierHookProvider
, interface to create modules that don't serialize to JSON. It just adds default hooks so you don't have to manually specify them in the module map builder. - Added
BasicModifier
, extraction of the base class forComposableModifier
which includes a builder for registering a modifier with modules statically. - Added modifier priority command, to list all modifiers, the hooks they implement, and their priority value. Useful for ensuring hooks run in the right order.
- Moved modifier usage command from
/tconstruct modifier_usage
to/tconstruct report modifier_usage
. Partly for organization, partly to make tab completion on/tconstruct modifiers
easier. - Datagen now sorts the keys due to a change Mojang made. This may cause some files with trivial updates when you regenerate data.
- Casting recipes now pass their serializer in as a constructor parameter to handle basin/table recipes instead of using subclasses and factory methods.
- Ditch various registry migrations, including materials, items, fluids, etc. from 1.16 and 1.18 features. We assume if you are updating, you are updating from the latest 1.18 build.
- Migrate many serializers to the new Mantle Loadable API
- Seared and scorched blocks no longer have block entities when not in a smeltery structure unless they were using it for other data (e.g. tanks for the fluid). This makes them a bit faster on world load/save when used for decoration.
- Fix spilling fluid packet not setting handled, which for some dumb reason is something you have to do even though there is no case you would not.
Models
MaterialRenderInfo.TintedSprite
now contains emissivity (renamed luminosity).- Simplify quad getting on
MaterialModel
, notably meansToolModel
should create fewer quads during model baking. - Added
BakedUniqueGuiModel
, common logic betweenTankModel
andToolModel
. There is a more advanced version in forge though its very bulky to construct. - Models no longer stitch the fallback texture if they have a unique texture. Likely will have no impact on addons as fallbacks are only used if the unique texture is missing, but maybe someone was doing something weird.
- Fix race condition between material render info and tool/tool part models.
Tools
- Removed tool modifier slot migration from the old NBT format, you should only update from recent 1.18 builds.
Modifiers
- Added
CureOnRemovalModifier
, common logic between a couple slimeskull traits. IncrementalArmorLevelModifier
,ScaledArmorLevelModifier
, andTotalArmorLevelModule
were migrated to eitherArmorStatModule
orArmorLevelModule
, based on your goal.InteractionModifier
was migrated into the existingShowOffhandModule
HasteModifier#HASTE
is now a percentage boost instead of the total haste level.- Added default value to
ModifierPredicate
- Enchantment modifiers now take advantage of the new forge hook. This means they will be available to other mods looking for enchantments, and they will no longer overwrite enchantment NBT.
- Looting hook and enchantment hook now have an armor hook that contains slot context, instead of reusing the tool hook.
- Fix mob effect module serializing target condition to
entity
instead oftarget
. - Fix conditional melee damage module not serializing attacker condition.
- Removed
FAST_USE_ITEM
flag, as the toolstat exists. - Removed
IncrementalModifier#getScaledLevel
asModifier#getEffectiveLevel
exists. - Removed the non-chargeable variant of "General Interaction" hooks, you are now required to use the chargeable variant which has been renamed to
GENERAL_INTERACT
. This simplifies implementation notably by removing the return on the finished using methods. - Removed capability variant of drawspeed, since we moved to a NBT variant. See bows for an example of how to use the new method.
- Removed
TankModifier
, useTankModule
instead. Note some helpers were ditched as they were just less efficient ways of manually working with the tank. - Removed old module API (that is,
Modifier#getModule(Class<T>)
). - Removed all methods on modifier that have been migrated to a modifier hook or another form. With the exception of
processLoot
, remaining methods are not getting migrated to hooks. - Removed all modifier classes for modifiers migrated to JSON
Utility relocation/renaming
- Many deprecated constructors/methods were removed, check for an alternative with different paramters.
- Many classes where repackaged, notably modifier hooks. A reimport may be needed for static usages/custom modules but the functionality should still be there.
TooltipKey and
SafeClientAccess` were moved to Mantle.IJsonPredicate
was moved to Mantle, this notably means the IDs for many predicates are now under Mantle.ModifierUtil
: Looting and harvest enchantment static helpers were moved to the related modifier hook interface.ToolDamageUtil
: Removed durability display hooks as they exist in the durability display interfaceValidatedResult
was replaced withRecipeResult<ItemStack>
, though some usages were migrated to nullable components as they did not use the result.TagNotEmptyLootCondition
->TagEmptyLootCondition
StatPredicate
->StatInRangePredicate