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.
@Ethrock
Btw, thanks for reminding me to take another look at why the letters still render "striped" (slow). I'm quite sure I can force them to render all in one go, it's actually just an oversight on my part. I'll schedule it to be fixed in v1.1.9.
@DarthBrady
I'm just happy you got it sorted :) Thanks!
@defxor
Thank you so Much! that worked perfectly. The problem was i was not putting the letter in m hands before adding more text.
Also I'd like to say I love this plugin! you do great work!
@DarthBrady
Type /letter text, and then - with that letter in your hands, type /letter moretext. It should append the new text to the letter you're already holding.
(That's how the example was done)
@defxor
Thanks, but I seem to still be missing something here. I tried that, and it just makes a new letter every time. all i want to do is make a single letter that has as many characters as are in the example screenshot above, which I cannot. what am I doing wrong? is there some chat field size plugin or syntax or something I am missing?
@DarthBrady
You use /letter, followed by /letter, followed by /letter - as many times as you want :D
regards, defxor
@defxor: I need help with this plugin. Could you please tell me why when I try to create a letter with the /letter command, I don't have enough space to type the letter? (i think i am limited to 100 characters)
For Example: look at the 2nd screenshot on this page with the "Rules" posted as an example. If I try to reproduce the exact same letter in my game, I can only type half of it before I run out of space (to be exact, I run out of characters on the word "other" in the 2nd rule on the letter)
I have been looking for several hours searching everything I can across both chat and plugins, I can find absolutely nothing, how can I use more than 100 characters like in the examples?
@Ethrock
Hi,
The striped rendering is unfortunate, I agree. However, I do think there is a difference between a letter and a book just like in the real world ;) Using Maps also gives me complete freedom (not really exploited yet) in what to render. Expect colouring to show up in the near future.
With regards to multiple mail, yes, that has indeed been one of the most requested features since Courier's first release. I unfortunately got side tracked when creating a new database system which meant it hasn't been completed yet.
@Ethrock
resolved delivery times issue and login post issue.
Is it possible to have the letters be in books or something better than maps? Maps have the initial page generation B/S and this occurs each time you 'flip pages'.
Also, can a method of posting a single letter to multiple users be added, IE so admins can send out info to all users?
Is there a way to have a postman that is always present, that stands in a post station where players can go then and pick up their postage, as well as wandering post men? How does one influence the time frame wherein a postman appears, I didn't spot that in the configuration.
Can we have it set so that postmen automatically visit players with post when they log in?
All:
There are currently one
twobug reports on Courier v1.1.8 that I'm unable to reproduce in testing - if you suffer from either of these issues I need you write tickets or add information to the existing tickets to help us find the cause. I'm currently assuming these cases are very rare but I will prioritise them anyway since (I think) Courier is known for being rather bug free ;)Postman do not deliver mail to players in Creative mode, even though the CreativeDelivery setting in config is set to true.edit: The creative mode delivery issue went away on its own. I will consider it to have been a random fluctuation in space-time if no additional reports show up.
I'm using CB 1.4.6 R0.1 with Courier v1.1.8 and it's working great aside from one thing. It appears that in creative mode we still cannot receive letters even though CreativeDelivery is set to true in the config. It gives us the message "Postman has a letter to deliver but is not allowed in this area". Those of us who are Op'd can just do /postman and it's okay but for non op members it's difficult for them they gotta leave creative mode and go to survival to receive post.
Other than that small issue, everything is working great.
Happy New Years everyone!
As you might've seen Courier v1.1.8 has just been released. This is one of the more major updates I've done to Courier in a long time - and it's due to a combination of your great suggestions and the Bukkit API finally making it possible.
I'm hoping crafting of parchments is something everyone running an RP server will enjoy - realism has always been my goal with Courier. I also know that the possibility to have postal fees put into an economy account will make it easer to create closed economies.
ItemMeta - 'Lore' - is a recent Bukkit API addition that made it possible for me to put some info about the current letter when you're hovering over them in the inventory. No more having to get Letters first before being able to see which one it was :)
And finally, but maybe the most interesting addition of them all, you can now insert Letters into ItemFrames and the text will persist (even current page!) ;) This should make it very easy to have long rule and contest descriptions in-game for busy servers - as well as for more decorative texts put on houses and other objects.
Enjoy! Although if the rumoured enchantment-loss in 1.4.6-R0.2 turns out to be true please enjoy on R0.1 or 1.4.5 for the time being ;)
PS: Server admins - while not as good as a proper API - if you stop your server first you can edit the text matching your Framed Letters in Courier's messages.yml and thus update many different such flyers with a minimum of effort.
@PvtJelo
Thanks for letting us know how you solved it - I actually did not know using numbered IDs worked ;)
Courier expects to find the names (and apparently IDs) of Materials. Looking at the Bukkit API it seems the other solution would've been Ink_Sack (and possibly InkSack, I think the matching strips underscores if needed).
defxor, what do I have to fill in if I want an Inc Sac as resource? I tried
Ignore, fixed it by typing in 351 (ID of Ink Sac)
@diannetea
Yes. Creative is disabled by default from v1.1.7 - but both in the v1.1.7+ and the beta v1.1.8 (see forum for both) you can change it in the config file to get the previous behaviour though.
I might've underestimated the amount of people who used Courier without problems in Creative. The only reports I got was that it didn't work well at all. I'm considering changing back the default setting in v1.1.8 final.
ahh yeah I always am, is this a recent change?
@diannetea
Are you in creative mode? Courier by default does not deliver to players in creative mode due to issues with Letters losing their content when changing slots. You can use the v1.1.7 test version, or the beta release of v1.1.8, and select to deliver to creative mode in the config file. See this forum thread.
If that doesn't solve it, please let me know :)
I am continually getting the message "A Postman has mail for you but was not allowed in this place." no matter where I am.
:(
Merry Xmas all!
I've scrambled to get a beta version of v1.1.8 ready for those of you who are comfortable in trying less-than-fully tested stuff ;) See the image above about Framed Letters and read this forum thread.
/defxor
@defxor
Thank you!