# Configuration file

##########################################################################################################
# general
#--------------------------------------------------------------------------------------------------------#
# WEBSITE: https://mods.curse.com/mc-mods/minecraft/269359-tick-dynamic   <- Head here for the documentation, or if you have questions.
# ISSUE TRACKER: https://github.com/The-Fireplace/TickDynamic/issues   <- Go here if you have problems, log spam, or suggestions to improve the mod.
# 
# Slices are the way you control the time allotment to each world, and within each world, to Entities and TileEntities.
# Each tick the time for a tick(By default 50ms) will be distributed among all the worlds, according to how many slices they have.
# If you have 3 worlds, each with 100 slices, then each world will get 100/300 = ~33% of the time.
# So you can thus give the Overworld a maxSlices of 300, while giving the other two 100 each. This way the Overworld will get 60% of the time.
# 
# Of the time given to the world, this is further distributed to TileEntities and Entities according to their slices, the same way.
# TileEntities and Entities are given a portion of the time first given to the world, so their slices are only relative to each other within that world.If any group has unused time, then that time will be distributed to the remaining groups.
# So even if you give 1000 slices to TileEntities and 100 to Entities, as long as as TileEntities aren't using it's full time,
# Entities will be able to use more than 100 slices of time.
# 
# So the formula for slices to time percentage is: (singleGroupInWorld.maxSlices/combinedGroupsInWorld.maxSlices)*100
# 
# Note: maxSlices = 0 has a special meaning. It means that the group's time usage is accounted for, but not limited.
# Basically it can take all the time it needs, even if it goes above the parent maxTime, pushing its siblings down to minimumObjects.
##########################################################################################################

general {
    # How many ticks of data to use when averaging for time balancing.
    # A higher number will make it take regular spikes into account, however will make it slower to adjust to changes.
    I:averageTicks=20

    # Debug Group mapping and assignment. Will spam during world load and config reload!!!
    B:debugGroups=false

    # Debug output from time allocation and calculation. Warning: Setting this to true will cause a lot of console spam.
    # Only do it if developer or someone else asks for the output!
    B:debugTimer=false

    # The default maxSlices for a new automatically added world.
    I:defaultWorldSlicesMax=100
    B:enabled=true

    # Disables all log output to the console. Make sure this is off before providing the author with logs.
    B:nologs=false
}


##########################################################################################################
# groups
#--------------------------------------------------------------------------------------------------------#
# Groups define a list of Entities and/or TileEntities and the configuration for them.
# You can define the groups here, and they will automatically be part of every world.
# 
# If you wish to override the settings for a group in a specific world, you can simply include a group with the same name in the world,
# and then provide the new values. Any value you do not define will be read from the global group.
# So you can for example define a group for all Animal mobs, and define them to get less time than other Entities in all worlds,
# but then define them to get even less time in a certain world without having to re-define the list of Entities.
# 
# Note that the groups 'entity' and 'tileentity' are special groups. Any TileEntity or Entity which are not included in any other group,
# will be automatically included in these two groups.
##########################################################################################################

groups {

    entity {
        # Whether this group is enabled or not. If not, no Entity/TileEntity will be added to it.
        B:enabled=true

        # List of Entity/TileEntity class names(Ex: net.minecraft.tileentity.TileEntityDropper), for Entities that are to be included in this group.
        S:entityClassNames <
            
         >

        # List of Entity/Block names(Ex: Sheep / minecraft:furnace) who are to be included in this group.
        S:entityNames <
            
         >

        # Entity or TileEntity group
        S:groupType=Entity

        # Minimum number of objects to tick, independent of slices. Set to 0 to disable.
        I:minimumObjects=100

        # Minimum TPS to keep, independent of slices. Set to 0 to disable.
        D:minimumTPS=0.0

        # Minimum Time to keep(In milliseconds), independent of slices. Set to 0 to disable.
        D:minimumTime=0.0

        # List of mods to exclude. Will exclude every Entity or TileEntity from the specific mod, independent of 'entityClassNames' and 'entityNames'
        # 
        S:modId <
            
         >

        # The number of slices given to this Group
        I:slicesMax=100

        # Set the World time to the correct time for the TPS of this group.
        B:useCorrectedTime=true
    }

    players {
        # Whether this group is enabled or not. If not, no Entity/TileEntity will be added to it.
        B:enabled=true

        # List of Entity/TileEntity class names(Ex: net.minecraft.tileentity.TileEntityDropper), for Entities that are to be included in this group.
        S:entityClassNames <
            net.minecraft.entity.player.EntityPlayer
            net.minecraft.entity.player.EntityPlayerMP
         >

        # List of Entity/Block names(Ex: Sheep / minecraft:furnace) who are to be included in this group.
        S:entityNames <
            
         >

        # Entity or TileEntity group
        S:groupType=Entity

        # Minimum number of objects to tick, independent of slices. Set to 0 to disable.
        I:minimumObjects=100

        # Minimum TPS to keep, independent of slices. Set to 0 to disable.
        D:minimumTPS=0.0

        # Minimum Time to keep(In milliseconds), independent of slices. Set to 0 to disable.
        D:minimumTime=0.0

        # List of mods to exclude. Will exclude every Entity or TileEntity from the specific mod, independent of 'entityClassNames' and 'entityNames'
        # 
        S:modId <
            
         >

        # The number of slices given to this Group
        I:slicesMax=0

        # Set the World time to the correct time for the TPS of this group.
        B:useCorrectedTime=true
    }

    tileentity {
        # Whether this group is enabled or not. If not, no Entity/TileEntity will be added to it.
        B:enabled=true

        # List of Entity/TileEntity class names(Ex: net.minecraft.tileentity.TileEntityDropper), for Entities that are to be included in this group.
        S:entityClassNames <
            
         >

        # List of Entity/Block names(Ex: Sheep / minecraft:furnace) who are to be included in this group.
        S:entityNames <
            
         >

        # Entity or TileEntity group
        S:groupType=TileEntity

        # Minimum number of objects to tick, independent of slices. Set to 0 to disable.
        I:minimumObjects=100

        # Minimum TPS to keep, independent of slices. Set to 0 to disable.
        D:minimumTPS=0.0

        # Minimum Time to keep(In milliseconds), independent of slices. Set to 0 to disable.
        D:minimumTime=0.0

        # List of mods to exclude. Will exclude every Entity or TileEntity from the specific mod, independent of 'entityClassNames' and 'entityNames'
        # 
        S:modId <
            
         >

        # The number of slices given to this Group
        I:slicesMax=100

        # Set the World time to the correct time for the TPS of this group.
        B:useCorrectedTime=true
    }

}


worlds {
    # The time allotted to a tick in milliseconds. 20 Ticks per second means 50ms per tick.
    # This is the base time allotment it will use when balancing the time usage between worlds and objects.
    # You can set this to less than 50ms if you want to leave a bit of buffer time for other things, or don't want to use 100% cpu.
    I:tickTime=50

    dim0 {

        entity {
            S:groupType=Entity
            I:slicesMax=100
        }

        tileentity {
            S:groupType=TileEntity
            I:slicesMax=100
        }

    }

}


