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 >=- - -
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
- 2015-05-14: v1.2.1 uploaded
- 2015-05-09: v1.2.0 uploaded
- 2013-01-16: v1.1.9 uploaded
- 2012-12-30: v1.1.8 uploaded
- 2012-12-20: v1.1.7 uploaded
- 2012-03-04: v1.1.6 uploaded
- 2012-02-25: v1.1.5 uploaded
- 2012-02-13: v1.1.1 uploaded
- 2012-01-31: v1.1.0 uploaded
- 2012-01-15: v1.0.0 uploaded
- 2012-01-02: v0.9.6 uploaded
- 2011-12-30: v0.9.5 uploaded
- 2011-12-27: v0.9.2 uploaded
- 2011-12-26: v0.9.1 uploaded
- 2011-12-23: v0.9.0 uploaded. This page created.
(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
This plugin is looking for a new maintainer. The original author does not play Minecraft any longer. The update to Minecraft v1.8 could only be made thanks to a pull request having been made at Github. Do not expect any future development until a new maintainer can be found.
hey, one thing that would be fun with this is to make it so that when you deliver a message, an enderman spawns holding a map, and then runs off in the direct of the player to deliever it to them. when he gets there he drops the paper and then tp's off to some other random place
EDIT: sorry, didnt realize that it already DID that. which is pretty awesome, i might add. so then, my second suggestion is make it so that you can send blocks, and also make the block the enderman carries configurable
@defxor
I appreciate you interrupting your project plan to make this R5-compatible! Now I can mark this one off my list. Thank you!
All: I've just uploaded v1.1.5. Due to changes that will come in the next version of Bukkit, 1.1-R5, I had to release a compatible version of Courier quickly. You will not be able to use Courier v1.1.1 together with Bukkit v1.1-R5. However, you can safely use Courier v1.1.5 with Bukkit v1.1-R4. Sorry for the confusion, but the Bukkit team is cleaning out a lot of old code which forces this release.
Since I'm not a fan of installing new versions of plugins without getting something for the trouble I quickly back ported one of the things I had planned for v1.2.0 to v1.1.5 instead - the ability to in config specify which resources are needed to create a Letter. This is by default turned off so as to not change existing behavior, but I know a lot of you have requested this functionality.
Unfortunately, since I wanted this R5-compatible version out as quickly as possible, I'm relying on my own code review to be "tested enough". Please get back to me immediately if you run into problems.
Hey Defxor,
Thanks for the help. Switching to R4 bukkit solved our problem with player/mob interaction. I'll let you know if there are any further issues we have. Thanks!
@seiby
Great, I hope it will work. Due to changes in Bukkit APIs the requirement to match Courier builds towards Bukkit builds according to the release info is pretty much mandatory. Eg. Courier v1.1.0 works with R3 and v1.1.1 works with R4.
(And for R5 I will release a v1.1.2 or v1.1.5 depending on much development I have time to back port)
Running R3 at the moment. I'll do an upgrade tomorrow and see if that fixes it. Thanks for the suggestion!
When done I'll post a status update for anybody else who's curious.
@seiby
That doesn't sound good. What version of Bukkit are you using? There is an issue with the R5 devbuilds that could be the cause of something very much like it - if so, go back to R4. If not I will probably need to send you a build with debug messages on to find out more.
(In code, it sounds as if something is blocking all player->creature interaction - but I haven't heard about a plugin that does)
@mikesaidhello
It will be available in Courier v1.2.0.
Hey Defxor! I've run into an issue with the plugin where everything works good, except the postmen are not able to deliver a letter to players. They stand there bumping into you, but no interaction (right clicking) or punching / stabbing works. This is happening for both OPs and non-OPs.
Ideally this plugin is great for the type of server I'm running. We've got global chat disabled so this would be the only method of long distance communication.
If you have any idea why postmen don't ever deliver letters, I'd be most appreciative. Thanks!
We have the following plugins installed:
Thanks for the feedback, just one more question though. Is it possible to have an automatic message for new players? :D
All: I'm hoping for Bukkit 1.1-R5 to not appear in the next day or so, that'll give me time to selectively back port a few things from the planned v1.2.0 release to this update instead. And just so you know, I still have way too few beta testers ... new functionality will simply take longer to appear because of it :(
@mikesaidhello
Of course :)
@uncovery
Not yet, but it's planned functionality for future versions.
@ursak
Postage charges, fully recipe configurable in config, is coming in v1.2.0 :) As to sending items it's likely to come later as well, but is currently not planned. Similar plugins already exist and I only want to duplicate others if it really fits well into Courier.
@uncovery
Such a Letter would have no sender, which is used by Courier internally in a few places. You can create a ticket if you want, and we can see if it's functionality that others would like to see as well.
@Nuinethir
Hey and thanks for the questions! :)
If I keep writing without doing &nl, will it automatically route to the next line if it goes off the page?
Is it possible to write letters to several people or even simpler to everyone in a group?
Would love if you could not only choose to charge for every letter with money (as you already can do) but also if you could add in the config a way so that you could make it need you holding something to be able to write.
I love the plugin. It's awesome, but I'd like a way to config it so that you need to hold a piece of paper to be able to write a letter. :)
EDIT: Just my mind going in circles messing me up here, but would it be possible to expand this plugin to be able to send stuff to other players instead of letters? Something like if you hold a block of stone and type /post <player> it sends the block to him?
Again, just my mind giving me all these ideas ^^
Since creative mode is not working properly, can you make a config option that prevents delivery in certain worlds? Like that one can restrict it to survival worlds...
Would it be possible to send a letter from the console?
I would like to replace Essentials' very basic mail feature with this surprisingly awesome plugin. I have quite a few questions for things I have not seen or might have missed...
Thanks much for answering any or all of these questions! I am starting a new server and want to make the experience as fun as possible and I have a good feeling that this will be a huge bonus! :)
All: I was quite sure Courier would not need to be updated for Bukkit 1.1-R5 which is an update in which they will remove a lot of legacy code. However, I just tested and it turns out I was wrong. I will thus push an update to Courier shortly but the only new thing will be that it runs with R5. Sorry for that, work on v1.2.0 is progressing on a separate branch.
@tomori_peti
Yeah we all want our umlauts ;) Unfortunately the Map font in Bukkit is not the same as the font support for the command line and chat window - and until more fonts are added to the Map Font API there's not much I can do. Granted, that font _does_ contain all those chars but I'm not able to get my own umlauts (Swedish) displayed properly on Mac at least.
@eddine67
Are you possible running an R5 devbuild and not seeing the console? It's either that or another plugin is canceling the right-click on the Postman.
When the postman comes, I do the right-clic, but nothing happens...
Please add support for UTF 8 characters. I need these characters: ö ü ó ú á é í ű Thanks
Hey,
can you make a permission node so people can be blocked from send mail to specific users or groups? Such as
People who try to send a mail to a blocked person should receive an error message saying that the email cannot be sent to that person.