I don't want to undersell this to you: this is the single largest update in Doormat history and it's honestly setting the bar nerve-wrackingly high for the future of this mod! I've been working on this since the beginning of 1.20.5, roughly 130 days ago. Allow me to run you through the features: I can almost guarantee at least one thing on this list will pique your interest!
Changes
Know the redstone rules I've been writing and rewriting since the beginning? Well, they now have a collective name: the Tinker Kit! It's a bit of a work-in-progress, but hopefully this will allow me to refer to it less abstractly in changelogs from now on.
The first big change is that Carpet's quasiConnectivity
rule has been made totally redundant and is now inaccessible with Doormat installed. This is because Doormat's /quasiconnectivity
command can now modify the range at which components are affected by quasi-power, just like the original setting!
Before this update, modifying a component's quasi-connectivity or update type behavior was done by running one of the counterpart commands, picking one of the preset component options. The commands still exist, but they now work based on the exact block you want to modify. This means that every trapdoor, every fence gate, every door etc. is now separated from one another! Want to quasi-power warped fence gates but not crimson ones? Run /quasiconnectivity set 1 minecraft:warped_fence_gate
! Because of this, many new components are modifiable that weren't before like redstone torches, repeaters and even mob heads. Go wild!
Oh yeah, the command syntax has changed to be much more versatile than before. Here are the new aliases, using /quasiconnectivity
as an example:
/quasiconnectivity list
(finds and displays all components' values in a list)/quasiconnectivity get <component>
(finds and displays the value assigned to the component)/quasiconnectivity set <value> all
(sets all components' values to the one specified)/quasiconnectivity set <value> <component>
(sets the component's value to the one specified)/quasiconnectivity reset all
(resets all components' values to their defaults)/quasiconnectivity reset <component>
(resets the component's value to its default)
This should allow you to feel a lot more free while messing around with the settings. Some of the command outputs have things you can click to autocomplete new commands! It really is such an advanced system now; I highly recommend seeing what you can find.
For the mod creators out there, the Tinker Kit now supports registering new blocks to the system through the use of an API. There will be an article on the wiki page within the next few weeks, so make sure to look out for that. For the mod users, the Tinker Kit will know what to do with the vast majority of modded redstone components by default, so you don't have to worry about consistency gaps.
It's worth noting at this stage that this feature is huge and there are bound to be bugs. If you find one, please file a report on GitHub.
Some old settings have now changed in some more minor ways, just to make them a bit more intuitive. You will need to re-input the values you've chosen if you've modified them, so make sure to take some notes before installing this update:
chiseledBookshelfSignalBasis
is nowchiseledBookshelfFullnessSignal
, and the enumerator options have changed:interaction
is nowfalse
fullness
is nowtrue
fullness_lerped
is nowlerped
fastLeafDecay
is nowfastLeafDecayingChance
and takes in aDouble
representing the chance per randomTick of decaying.forceGrassSpread
is nowforceGrassSpreading
.renewableCobwebs
is nowspawnersGenerateCobwebs
due to cobwebs being made renewable under the 1.21 experimental toggle.trialSpawnerSheepActivation
is nowtrialSpawnerEntityRequirement
and takes in an enumerator.zoglinsSpawnInPortals
is nowzoglinPortalSpawnChance
and takes in aDouble
representing the chance per spawn attempt that a zoglin will spawn instead of a zombified piglin.maxMinecartSpeed
has been separated intomaxMinecartSpeedLand
andmaxMinecartSpeedWater
.
Additions
Added 36 new rules! You can find more info about them in the wiki:
basaltGenProduct
blockFallingDelay
campfireRespawning
cobblestoneGenProduct
consistentWaterlogPushing
crafterSignalLerping
disableBedTooFarWarning
disableBedUnsafeWarning
disableDragonEggTeleportation
disableEndGatewayCrossing
disableMaceKnockback
disableMonsterSleepCheck
disablePrematureBlockFalling
dragonEggFallingDelay
endExitIgnoreLeaves
grassAgingChance
highlightSleepDeprivers
lazyLoadedShearSuppression
lavaFlowSpeedDefault
lavaFlowSpeedNether
moreTimeArgumentUnits
movableEnchantingTables
movableEnderChests
observerHalfDelay
obsidianFrameConversion
obsidianGenProduct
persistentRespawnAnchorCharge
powderSnowPortalBreaking
qcSuppressor
ravagersStompSnow
safeSand
sculkCatalystXpCount
snowFormsUnderLeaves
stoneGenProduct
villagersAlwaysInheritBiome
woolDesertPyramids
Added Doormat's first logger: randomTicks
! This keeps track of successful randomTicks and can even display them visually on the client! Just be careful with rendering at high random tick speeds.
Removals
It can't all be good. thornyRoseBush
has been removed due to feeling out of scope of Doormat's existing feature set. I'll see if I can weave it into a new mod somewhere down the line.
Minor Changes and Bug Fixes
- Running
/randomtick
on its own now sends a random tick to the block it's called from. - Added en_gb translations.
- #4 (reported by nickademas)
composterSideInputs
no longer crashes with Lithium. fastLeafDecayingChance
no longer creates infinite scheduled tick loops, slowing the server MSPT down to a halt (lol).- Fixed local difficulty potentially not working properly on peaceful mode when
peacefulMonsterSpawning
was enabled. barrelItemDumping
now checks if the barrel is facing down before attempting to eject items.- Fixed compact tooltips translating incorrectly on servers.
- Improved inter-mod compatibility of rules relating to fertilization.
- The overworld height validator now correctly scales with modified dimension sizes.
- Fertilizing moss blocks no longer consumes bonemeal even when the block is covered.
- Added the bad omen status effect to the
peacefulMonsterSpawning
exceptions. - Updated all compact tooltip rules to use the new ItemStack components.
Happy holidays! This update is for the same versions as the previous, but fixes a critical client-side issue when playing on a dedicated server, among other things. Even though it may seem small, I recommend you install it anyway just to save you unnecessary confusion in the future!
Fixes
- #2 (Reported by nickademas) - Entities are no longer completely immune to explosions when
consistentExplosionImmunity
is disabled. - #3 (Reported by nickademas) - Opening a fence gate or door crashes the client when playing on a dedicated server.
- 1.20.2 is no longer accepted as a valid client version for running this mod.
Minor Changes
- Reduced the number of unnecessary code warnings by adding
@SuppressWarnings
annotations to a couple of functions. PeacefulSpawningHelper.addSpawningCondition()
now uses a switch statement instead of an if-else chain.- Config file saving and loading is now generally more robust, in case one of you does something more extreme than opening a fence gate! :p
It's a good time to mention that community experience is immensely valuable when it comes to making mods as polished as possible. While developing, it's easy to get caught in a loop where you don't think to test something specific because you've already seen it tens of times before! If you encounter a bug or come up with an idea for improvement, please contact me via the GitHub issues page and I'll be sure to look into it, like I did with nickademas' reports this week. Thank you, and enjoy your holidays! - axia 🌸
This release of Doormat is happening later than I anticipated due to some unforeseen issues I ran into. However, I'd say it's worth it because this update is huge, and features the most ambitious code I have written so far!
The Wiki
Due to the size of this mod and the anticipation to bring it even further, I've hastened to create a wiki for documenting its features before it gets to a point where doing so would be an insurmountable task! You can find it on GitHub, and it supplies all the information you'll need to know for each individual setting, even going in-depth on some of the more complex ones. I hope this is useful for you!
Changes
One of the most important changes in this update is the complete removal of quasi-connectivity and update type rules from the carpet roster. Don't worry; the functionality isn't going anywhere!
Instead of each being stored in their own separate settings, quasi-connectivity and update type functionality has now been moved to two new commands: /quasiconnectivity
and /updatetype
! These function very similarly to the original rules, allowing you to configure the values for each component, find the current values for each component, and even reset them to default! Oh and, don't worry about losing your settings when you restart the world. They're all stored in a little .json file which will be read by the game at the start of your next play session!
Some rules have also been tweaked in smaller ways to make better space for my creative vision in the future. You will need to re-input the values you've chosen if you've modified them, so make sure to take some notes before installing this update:
consistentItemExplosionDamage
is nowconsistentExplosionImmunity
.insomniaDaysSinceSlept
is nowinsomniaDayCount
.renewableSporeBlossoms
is now Boolean, and theself
enumerator option has been moved into its own setting,sporeBlossomDuplication
.
Additions
Added 27 new rules! You can find more info about them in the brand new wiki:
commandQC
commandUpdateType
peacefulMonsterSpawning
alwaysHalloween
compactEnchantTooltips
compactTrimTooltips
compactTemplateTooltips
compactPotTooltips
reachAroundBridging
trialSpawnerSheepActivation
solidEntityCollision
cryingObsidianPortalFrames
fastLeafDecay
sporeBlossomDuplication
chiseledBookshelfSignalBasis
jukeboxDiscProgressSignal
copperBulbOxidationSignal
softInversion
torchBurnoutFlickerAmount
torchBurnoutTime
hopperTransferTime
retroRepeaterDelay
copperBulbDelay
composterSideInputs
redstoneOpensBarrels
barrelItemDumping
incrediblySecretSetting
Added 4 new rule categories:
TINKERING
APRIL_FOOLS
RETRO
TOOLTIP
Minor Changes and Bug Fixes
- No longer depends on Fabric API.
- Crafters and copper bulbs now have configurable quasi-connectivity and update type settings, as do barrels when
redstoneOpensBarrels
is enabled. renewableCobwebs
now works with trial spawners./randomtick
now disallows<count>
values above 4096. (Before: 32768--this was pointlessly high)- Removed an empty
/doormat
command. - Doors, dispensers and pistons now have configurable quasi-connectivity settings.
- Rewrote
forceGrassSpread
logic in order to drastically improve inter-mod compatibility and future-proofing.
Changes since 1.0.0:
- Fixed moss vegetation, mossy cobblestone and mossy stone brick features originating 1 block below where they should