# Configuration file

##########################################################################################################
# backported features
#--------------------------------------------------------------------------------------------------------#
# Backports that can typically only have a clean implementation with mixins.
##########################################################################################################

"backported features" {
    # Adjusts the attenuation distance of certain sounds. This needs to be a separate mixin due to the way it works.
    # Currently changes portal abience, and beacon ambience to have an attenuation distance of 8 blocks away, instead of 16.
    # Modified Client Classes: net.minecraft.client.audio.SoundManager [default: true]
    B:adjustedAttenuation=true

    # Experimental: avoid dropping items when closing an inventory, like in modern versions.
    # Modified Classes: net.minecraft.entity.player.EntityPlayerMP [default: false]
    B:avoidDroppingItemsWhenClosing=false

    # A port of Back in Slime, similar to how the elytra is a port of Backlytra. Allows pistons to interact with slime blocks. The original author of this is DonBruce64: https://legacy.curseforge.com/minecraft/mc-mods/back-in-slime-slime-blocks-for-1-7.
    # Modified Classes: net.minecraft.block.BlockPistonBase [default: true]
    B:betterPistons=true

    # Allows some blocks without tile entities (e.g. composters) to interact with hoppers. May still not interact with modded pipes.
    # Modified Classes: net.minecraft.tileentity.TileEntityHopper [default: true]
    B:blockHopperInteraction=true

    # Makes beds bouncy. Should work with most modded beds. For continuity disabling this also disables EFR beds being bouncy.
    # Modified Classes: net.minecraft.block.BlockBed [default: true]
    B:bouncyBeds=true

    # In 1.14+, when breaking a block, the block break particles stay within the outline, instead of always occupying the whole block space.
    # Mofified Client Classes: net.minecraft.client.particle.EffectRenderer [default: true]
    B:boundedBlockBreakingParticles=true

    # Grass block sides are colored in the player's inventory
    # Modified Client Classes: net.minecraft.client.renderer.RenderBlocks [default: true]
    B:colorGrassBlockItemSides=true

    # When greater than 1, boosts creative flight speed when sprinting, like in newer versions [range: 1.0 ~ 4.0, default: 2.0]
    S:creativeFlightSpeedModifier=2.0

    # Spawns a particle under falling blocks like sand or gravel that are suspended mid-air.
    # Modified Classes: net.minecraft.block.BlockFalling [default: true]
    B:dustUnderFallingBlocks=true

    # Add the doWeatherCycle game rule from 1.11+ [default: true]
    B:enableDoWeatherCycle=true

    # A port of Backlytra with various fixes. The original author of this is unascribed: https://legacy.curseforge.com/minecraft/mc-mods/backlytra
    # If you're getting crash related to the DataWatcher, try changing "elytraDataWatcherFlag" in functions.cfg and don't open an issue if changing that value fixes it.
    # Modified Classes: net.minecraft.entity.EntityLivingBase net.minecraft.entity.player.EntityPlayer net.minecraft.entity.EntityTrackerEntry net.minecraft.network.NetHandlerPlayServer
    # Modified Client Classes: net.minecraft.client.entity.AbstractClientPlayer net.minecraft.client.entity.EntityPlayerSP net.minecraft.client.model.ModelBiped net.minecraft.client.renderer.entity.RenderPlayer
    # Modified Mod Classes: thaumcraft.common.lib.events.EventHandlerEntity [default: true]
    B:enableElytra=true

    # When enabled, the 1.15+ elytra takeoff logic is used, when disabled, the 1.9-1.14 elytra takeoff logic is used. [default: true]
    B:enableNewElytraTakeoffLogic=true

    # Modified Classes: net.minecraft.world.World net.minecraft.world.WorldServer [default: true]
    B:enableObservers=true

    # You nappa, you get slappa [default: true]
    B:enablePlayersSleepingPecentageGamerule=true

    # Add the randomTickSpeed game rule from 1.8+ [default: true]
    B:enableRandomTickSpeed=true

    # VERY EXPERIMENTAL!
    # Modified Classes: net.minecraft.world.WorldSettings.GameType net.minecraft.entity.Entity net.minecraft.world.World net.minecraft.entity.player.EntityPlayer net.minecraft.network.NetHandlerPlayServer net.minecraft.entity.player.InventoryPlayer net.minecraft.inventory.ContainerChest
    # Modified Client Classes: net.minecraft.client.renderer.EntityRenderer net.minecraft.entity.player.EntityPlayer net.minecraft.client.renderer.WorldRenderer [default: true]
    B:enableSpectatorMode=true

    # Makes the End Portal block (the actual portal, not the frame) have an item icon, proper hitbox and will not instantly destroy itself in other dimensions.
    # Modified classes: net.minecraft.block.BlockEndPortal [default: true]
    B:endPortalFix=true

    # Makes vanilla fences connect to modded ones of the same material. Might have connection issue with mods that don't reference BlockFence super code.
    # Modified classes: net.minecraft.block.BlockFence net.minecraft.block.BlockWall [default: true]
    B:fenceWallConnectFix=true

    # Some items such as Netherite will not burn in fire and will float to the surface of lava. [default: true]
    B:fireproofItems=true

    # Allows ability to place buttons on the floor and ceiling. Note: Due to metadata limits, they won't rotate to face the player like how they were made to in more modern versions.
    # Modified Classes: net.minecraft.block.BlockButton [default: true]
    B:floorCeilingButtons=true

    # Allows vanilla furnaces to have crackling sounds.
    # Modified Client Classes: net.minecraft.block.BlockFurnace [default: true]
    B:furnaceCrackle=true

    # Sounds for hoes tilling farmland.
    # Modified Classes: net.minecraft.item.ItemHoe [default: true]
    B:hoeTilling=true

    # Trapdoors that are clapped open against a block with a ladder below them can be climbed up as if they themselves were a ladder. Also expands the ladder hitbox to match the width of trapdoors.
    # Modified Classes: net.minecraft.block.BlockLadder net.minecraft.block.BlockTrapdoor [default: true]
    B:ladderTrapdoors=true

    # Allows beacon ambience to play for beacons. Should include most modded beacons.
    # Modified Classes: net.minecraft.tileentity.TileEntityBeacon [default: true]
    B:newBeaconSounds=true

    # Allows an enchantment sound to play on the vanilla enchantment table, and possibly a few modded ones...? This option does nothing to the Et Futurum Requiem enchantment tables.
    # Modified Classes: net.minecraft.inventory.ContainerEnchantment [default: true]
    B:newEnchantingSounds=true

    # New sounds for throwing an eye of ender, and for them breaking or dropping.
    # Modified Classes: net.minecraft.entity.item.EntityEnderEye net.minecraft.item.ItemEnderEye [default: true]
    B:newEnderEyeSounds=true

    # New sounds for casting and reeling in fishing rods.
    # Modified Classes: net.minecraft.item.ItemFishingRod [default: true]
    B:newFishingRodSounds=true

    # Damage sounds for walking into a berry bush, drowning or burning
    # Modified Classes: net.minecraft.entity.player.EntityPlayer net.minecraft.client.entity.EntityClientPlayerMP [default: true]
    B:newHurtSounds=true

    # New sounds for the witch, snow golem, squid and wither skeleton. [default: true]
    B:newMobSounds=true

    # Fires an event after a tree generates, mainly for beehives to accurately know where most trees are. For now this option is disabled if bees are disabled.
    # Modified Classes: net.minecraft.world.gen.feature.WorldGenAbstractTree [default: true]
    B:postTreeGenEvent=true

    # Is not a new block, but rather a mixin for fire. Allows fire to stay ignited on soul soil. Does double damage when standing in it, and does not spread to other blocks.
    # Even if this is off fire can still stay ignited on soul soil, but do be mindful that fire will spread from soul soil if this option is disabled.
    # Modified Classes: net.minecraft.block.BlockFire net.minecraft.entity.Entity
    # Modified Client Classes: net.minecraft.client.renderer.RenderBlocks [default: true]
    B:soulFire=true

    # Panes [Iron Bars, Glass Panes, etc] are changed to a single post if they are not connected to any other blocks
    # Modified Classes: net.minecraft.block.BlockPane
    # Modified Client Classes: net.minecraft.client.renderer.RenderBlocks [default: true]
    B:thinPanes=true
}


##########################################################################################################
# fixes
#--------------------------------------------------------------------------------------------------------#
# Fixes to vanilla issues which are necessary for backports.
##########################################################################################################

fixes {
    # Prevents arrows from falling off of blocks too easily
    # Modified classes: net.minecraft.entity.EntityArrow [default: true]
    B:arrowFallingFix=true

    # Fixes EntityThrowable entities not calling onEntityCollidedWithBlock, causing them to not trigger target blocks or chime amethyst.
    # Modified classes: net.minecraft.entity.projectile.EntityThrowable [default: true]
    B:collidedThrowableFix=true

    # Fixes flower pots having several restrictions limiting what they'll render inside of them. Required for crimson roots or azalea to render correctly in the flower pot, among other custom blocks.
    # Modified Client Classes: net.minecraft.client.renderer.RenderBlock [default: true]
    B:flowerPotFixes=true

    # Fixes enchantments with only one possible level displaying a level in their name. E.G. "Silk Touch I" becomes "Silk Touch".
    # Modified Classes: net.minecraft.enchantment.Enchantment [default: true]
    B:hideSingleLevelEnchants=true

    # Makes the player able to step up even if a block would be above their head at the destination.
    # Modified classes: net.minecraft.entity.Entity [default: true]
    B:stepHeightFix=true
}


