Instructions

Archer - lists
-----------------------------------------------------------------

Add features for target practice with arrows on signs!

Features
-----------------------------------------------------------------

Target signs:
- Set up a sign with certain configurable content,
    which then serves as target practice for archers.
    Default lines (no spaces, small letters):
    ooooo
    ooxxxoo
    ooxxxoo
    ooooo
- Give a target a name with the fourth line ">>NAME<<", or by
    delegating to a sign attached to the same block with the
    fourth line "^^^^^" (configurable).
- Receive information about players hitting targets by chat,
    including distance off target and shooting distance.
- Only players that subscribe explicitly can receive or generate
    notifications.
- Configure various aspects, such as target center offset,
    maximum distance off target, maximum notification distance,
    cross world notification...

TODO: ADDED: Contests.

Commands and Permissions
-----------------------------------------------------------------
(command, permission, description)
- /archer reload
    archer.reload
    To reload the settings.
- /archer notify
    archer.notify
    Toggle if to take part in the notifications about hitting target signs.

TODO: ADDED: /archer contest (archer.cmd.contest.join|leave)

Shortcut permissions:

- archer.normaluser
    Allows to use /notify and contest+join|leave.
    No creation or editing of contests.

Configuration
-----------------------------------------------------------------
- target.lines: A list of 4 string entries for the lines of a target sign.
    Use ยง for color codes.
- target.trim: Disregard leading or trailing white space for comparison
    of target sign lines.
- target.strip-color: Disregard chat color for comparison of target signs.
- target.ignore-case: Disregard letter case for comparison of target signs.
- target.name.prefix|suffix: Define wrapping of fourth line for target sign
    naming, with default settings ">>Target 1<<" would be the name "Target 1".
    They can be set to "" or '' in order to not use prefix and/or suffix.
    Setting both to "" or '' would prevent naming target signs, currently.
- target.name.delegator: Fourth line indicating that a sign with target name
    in the fourth line (with prefix and/or suffix) should be looked for,
    starting of the block the hit target sign is attached to. The search
    order will be straight, then counter-clockwise.
- shooter.distance.min|max: Minimum/maximum distance that can lead to
    notifications about hitting target signs.
    Set to 0 to deactivate.
- notify.distance: Maximum distance to target sign, at which to notify
    players about hits.
    Set to 0 to deactivate.
- notify.cross-world: If to notify players that are in a differing world.
- off-target.divisor: Target accuracy is displayed up to 1000 parts of
    the maximum distance off center, the divisor lets you sort hits
    into categories of lower numbers.
- off-target.distance: Maximum distance off target.
- offset: x,y,z for target center offset.
    (x,z would not make any sense, if signs are not always placed
        in the same n-w-s-e orientation!)
- step: This is the step length for finding a more accurate hitting
    position, the arrow can be up to its speed away from target,
    as by current CraftBukkit implementation (roughly up to 3).
- verbose: If true, this will output some details about shots to
    the console.
- permissions.use: If to use superperms - if set to false,
    players can use the normal functions without permission checks.
    TODO: REMOVED: permissions.use
- players.expire-offline: Duration in minutes after which offline
    player data / notification state expire.
    Set to 0 to never expire data (until restart/reload).

TODO: Contest configuration (contests.yml).
        Sub-sections with arbitrary keys.
        Will be the same properties as with "contest edit" or
        "contest inspect", when using tab completion,
        except for name and owner (name must be set, not '*').

Method
-----------------------------------------------------------------
For target signs:
1. The player location when shooting decides about the target distance,
    of course the distance will only be calculated when hitting a target.
    (One could use the arrow spawn location, but standing in one spot,
     would now not change the distance.)
2. Internally the arrow location for hitting a block, which is passed to
    plugins can be off by roughly the speed of the arrow, so a step wise
    checking for air is done, the first non air block will be considered
    as hit.
3. If a sign with the predefined content is found:
    A correction of the exact hitting location is calculated, to get the
    location where the arrow hits the plane where the sign is attached to.