Courier

Courier

Courier

A player to player mail system for Bukkit Minecraft servers

by defxor



Allows creation of text note items and sending of letters to players no matter if they're online or offline. The letters are delivered by postmen at intervals specified in the config file, and letters can be stored and handled as any other item for later reading. We wanted something that not only allowed us to pass notes to each other, but also felt like it was part of the regular Minecraft environment.

We believe we succeeded.

- - -=< Latest version >=-=< Videos >=-=< Tickets >=-=< Forum >=-=< Source >=- - -

Courier in-game screenshot Framed Letter



Usage

/letter [text]
Creates a Courier Letter with the supplied text. Hold the Letter in your hands and write /letter [text] again to add more text to the Letter. Use &nl or \n to insert newlines. Multiple page Letters are supported, use right-click and left-click to turn the page.
/post [playername]
Sends the Letter held in your hands to another player, name verified to be a player on the server. Depending on the config, the received Letter will be privacy-locked to that player (can be unlocked by simply adding text to it with /letter).
/courier fees
Lists the fees, if any, that apply for sending mail or creating letters
/courier unread
Requests re-delivery of all unread mail, even if they have been delivered to you before. Courier knows the difference between a mail having been delivered and actually read, and this is meant to be used in the cases where you've managed to misplace the Letter without having read it first.
/postman
Intended for OPs only, if postman delivery happens seldom and you want to force one to appear. NOT NEEDED in actual gameplay.

To receive messages, simply poke the friendly postman when he appears or right-click him to receive the message directly into your hands or inventory.

The strings "%loc" and "%pos" will be replaced with the current X,Y,Z position in any Letters written, if surrounded by spaces.

Permissions

Quick version: Give your players courier.write, courier.send and courier.list

Long version:

courier.write
Allows players to create Letters (default: op)
courier.send
Allows players to send Letters to other players (default: op)
courier.list
Allow players to see name suggestions if there's more than one match when sending (default: op)
courier.info
Allows seeing command help, fee structure and requesting of re-delivery (default: true)
courier.theonepercent
Allows posting of mail even if you have no credits and Economy support has been activated (default: false)
courier.privacyoverride
Allows the player to read privacy locked Letters (default: false)
courier.useitemframes
Allows the player to put Letters into ItemFrames (default: true)

(For anything but the defaults a Superperms compatible permissions plugin needs to be installed)

Configuration options

Privacy.SealedEnvelope
Whether Letters that have been Posted to another player should only be possible to read by that player. If you want to change this option, please read this forum thread. (default: true)
UseFees
Whether Courier should activate and require Economy support through Vault. (default: false)
Fee.Send
The postal fee withdrawn from the player if UseFees is set to true (default: 10)
Fee.BankAccount
The Bank or Player account fees will be deposited into (default: none)
UpdateInterval
The interval between checks towards dev.bukkit.org to see if there's a new version of Courier available. A value of 0 disables. (default: 18000 seconds)
Route.InitialWait
How long will Courier wait until sending out the first postman after players have started joining the server (default: 10 seconds)
Route.NextRoute
How long between rounds. This is the maximum amount of time a delivery can take between two online players (default: 60 seconds)
Route.WalkToPlayer
Currently not functioning due to changes in Minecraft. If friendly postmen (Villager) should walk up to players or not. Unfriendly mobs (Enderman) ignore this setting and never do. (default: true)
Postman.Type
Which Minecraft Creature to use as Postman. Courier will accept all valid Creatures but only 'Enderman' and 'Villager' are supported. (default: 'Enderman'). Note: This setting is case sensitive! 'villager' does not work, 'Villager' does.
Postman.QuickDespawn
How quickly will a postman despawn after having taken damage or delivered the mail (default: 3 seconds)
Postman.Despawn
For how long will a postman stay around each round waiting for the player to take his mail (default: 20 seconds)
Postman.SpawnDistance
What's the maximum line of sight distance a postman will spawn in front of a player (default: 10 blocks)
Postman.BreakSpawnProtection
Whether Courier should try to override mobspawn protection in order to spawn its Postman (default: true)
Postman.VanishDistance
The distance a Postman will check to see if a vanished player would be betrayed by appearing within (default: 20 blocks square)
Postman.CreativeDelivery
Whether Postmen should deliver mail to Players who are in Creative mode (default: true)
Letter.ShowDate
Whether to display the date a Letter was sent or not (default: true)
Letter.FreeLetter
If players should receive free Letters or if they need to have the necessary resources (default: true)
Letter.Resources
List of resources needed if FreeLetter is set to false. Example: [CobbleStone, Paper, CobbleStone] (default: [Coal, Paper])
Letter.RequiresCrafting
Whether Courier should just deduct the resources or if players need to manually craft letters (default: false)
Letter.Frameable
Should it be possible to put Courier Letters into ItemFrames - in effect creating posters/flyers (default: true)

In addition to the above all user visible strings can be edited. Some translated configs are available in the translations folder as well in the plugin data folder. Move and rename them to 'config.yml' to use.

Trivia

As you've understood (and seen if you've looked at the in-game images) I use Maps to render Courier Letters. If you're a plugin developer and your plugin handles maps and you either want to make sure your map system isn't screwed up by Courier Letters, or maybe if you want to handle Courier Letters in a special way, you can easily identify them:

The actual Maps used by Courier to render Letters ALWAYS have their X coordinate set to 2147087904 (or INT_MAX - 395743, if you want).

The ItemStacks(Material.MAP) that point to those Maps are Enchanted with DURABILITY and the enchantment level is used as a database key to find the matching text.

Release history

(see the Changelog for detailed information)

Known issues

  • Moving Letters between slots in creative mode (/gamemode 1) causes them to become empty later (eg. after logout/login)
    • This seems to be a Bukkit issue, please do not handle Courier Letters in creative mode until this is better understood.
  • Courier does not support extended character sets, it will skip such input when writing Letters.
    • This is due to Bukkit Maps only supporting the 'old' standard Minecraft Font. If support is extended in Bukkit I will implement it into Courier as well.
  • ... and all open tickets and issues, of course.

Future development

(Not to be taken as promises!)

  • Usually the roadmap for the next version is available on the forum.
  • Allow items to be attached to mails
  • /courier list (will list offline players as well as online)
  • ... and all accepted enhancements.

Donations

I made this plugin for our own use at a private server. If you like it, and feel you want to show appreciation other than just posting a message, you can throw some bitcoins at this address: 1GA8XDDwxeSvHAbuySY9TnnBXNMqriEYcP

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of thequestingbeast thequestingbeast Jul 25, 2014 at 19:49 UTC - 0 likes

    ./courier unread seems to allow the bypass of the delevery delay so there is no wait time. Would you be able to fix this or make /courier unread a configurable perm so I can not allow people to use it?

    Myraeon

  • Avatar of Typical_Name Typical_Name Jul 05, 2014 at 21:57 UTC - 0 likes

    @defxor: Go

    Um, well, there are the issues I pmed you about, with the letters being hard to read and all.

  • Avatar of icedemond5 icedemond5 Jun 29, 2014 at 23:58 UTC - 0 likes

    would it be possible to make it where people can decode messages?

    Icedemond5 / HellSongx

  • Avatar of defxor defxor Jun 20, 2014 at 06:46 UTC - 0 likes

    @thequestingbeast: Go

    To delete a letter just drop it on the ground - it will disappear when despawning. You can also burn it in a furnace if you want to be extra sure no one is able to pick it up.

    There's not support for delays. If mass-spamming is a problem I'd suggest requiring users to either have to hold resources for creating a letter, or even requiring having them crafted.

    @MGbeenieboy: Go

    Courier is a Bukkit plugin - I don't test on Spigot (it seems to be much more error prone).

    @PrimSilver: Go

    Does it need to? :) Courier uses regular Bukkit APIs and only seldom needs updating.

  • Avatar of PrimSilver PrimSilver Jun 19, 2014 at 21:52 UTC - 0 likes

    Is this plugin going to be updated any time soon?

  • Avatar of MGbeenieboy MGbeenieboy Jun 17, 2014 at 22:22 UTC - 0 likes

    @defxor: in the beta debug build you sent me an month ago, I go an internal error occuring, everytime when I try to /post a letter. I use spigot and there are no notifications about the error in the server.log.

  • Avatar of thequestingbeast thequestingbeast Jun 16, 2014 at 20:57 UTC - 0 likes

    I would love to see a delay such as two players can't send more than 1 every 60sec or even no one can send a letter more than 1 every 60 sec.

    Also, if there was a /letterdistroy so you can delete the one your holding that would be great.

    Last edited Jun 16, 2014 by thequestingbeast: added soemthing
  • Avatar of Typical_Name Typical_Name Jun 03, 2014 at 19:29 UTC - 0 likes

    Is this plugin going to be ready for the whole "UUID" nonsense they're going to be doing in 1.8?

  • Avatar of rbos rbos Jun 03, 2014 at 00:18 UTC - 0 likes

    @defxor: Go

    Yeah.. that seems very likely. It's been popular and I've been using it a while.

    I could probably just reset it.

  • Avatar of defxor defxor Jun 01, 2014 at 20:46 UTC - 0 likes

    @rbos: Go

    Is this possibly on a server with a _huge_ Courier database? I remade the code base to use SQL instead of Yaml a long while back but the Courier developers said they were going to deprecate the SQLite support and so I never released it. I would not be surprised if the Yaml access blocks.

Facts

Date created
Dec 23, 2011
Categories
Last update
Jan 16, 2013
Development stage
Release
Language
  • enUS
License
GNU General Public License version 2 (GPLv2)
Curse link
Courier
Downloads
64,873
Recent files

Authors

Relationships

Optional dependency
Vault