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.
@Eghad2
This worried me but I'm unable to replicate your findings. I just created a new world, saw in the log that Courier claimed map_0 as its rendering map, and joined the world. I wrote a Letter, verified that it used map_0, and then crafted a map normally (8 paper + 1 compass). The new map became map_1 and renders a fully normal map.
I then tried /give:
Note: If you _shift click_ when crafting a normal map you will always get map_0.
tl;dr: I'm still of the opinion Courier does not in any way affect normal Minecraft Map behaviour .. :)
@defxor ah sorry I was a bit vague :P
will try to get a pic in a bit, but basically what i mean is,
one day i want a map. "/give eghad2 map" map shows up as "map_0" all the maps i give myself are like this crafting maps does something similar. Even upon giving or crafting more, they all show up as zero.
Hi all, mass replying again. I do hope you get notifications when I answer your posts :/
(And on a side note: We're celebrating that Courier v1.1.0 passed 2000 downloads sometime during last night!)
@KSum
There's been discussion on the Courier forum with regards to NPCs, and Citizens have indeed come up a few times. My view is that I will look into it when all base functionality has been included in Courier.
@blokzeil1
Hah that's indeed interesting :) I looked briefly at VanishNoPacket (I'm assuming that's what you use?) but they have no external API. I've also looked at the new code in Bukkit devbuilds that has to do with Vanish-functionality but don't know yet if it's something I can use.
The other way around would be for other plugins to use a (non-existent for now) Courier API to hold deliveries for a specific person. But sorry, I have no solution to that issue at the moment.
@thejedibob
Hey - and thanks for using Courier :) With regards to other punching "your" postman, in the default privacy case they cannot read the contents of the Letter, and if a Letter isn't delivered to the correct player the Postman will try to deliver it again the next round until succeeded.
I've seen servers making use of the (very intended) functionality to disable Postmen completely by not setting the courier.post permission, forcing their users to use Mailbox-functionality from other plugins. Since that already works, I'm currently torn whether I should duplicate that functionality in Courier as well.
@Eghad2
Well, that sounds problematic ;) I need more information though, maps should "work". Courier claims a single actual map the first time you start it, whether that's map_0 or map_37 simply depends on how many maps had been created in your world before. Courier then _only_ uses that map, and all Letters created point to that single map. Courier then renders different text on that one map depending on which Letter it is.
If you remove Courier, this will mean that you have a lot of MapItems in people's inventories and chests that all point to the one and the same actual map (map_0, for example), but there's no Courier there to render text. The reason that map (a Letter really, it was never a real map) will look empty is simply because it points to a location in the world that I'm quite sure will never be explored (it's really, really, far away).
However, with all that said, if you craft a new regular Minecraft map that should of course work, and it would be named "map_1", "map_2" etc.
(Also, if you re-install Courier, it should be able to find and reclaim its old map again)
Does this describe what you're seeing? Else I probably need more information.
Was hoping I could find answer elsewhere, but how come maps don't work? Even after removing plugin maps are all "map_0" and remain blank no matter where I go.
Great plugin otherwise
We just added this server on RealmCraft, www.RealmC.net; one of the worlds most popular servers. It's a great plugin!
Is there ability for the postman to auto deliver the message, rather than having to punch him? The one thing I don't like is the ability for other players to punch your postman and take your letter.
In the future a mailbox option would be incredible. There currently is a mailbox plugin, it would be great to see the enderman drop the letter in the mailbox. Maybe I could help you code it.
Cheers!
i love this! my players love you plugin! But i got some suggestions: When i am vanished sometimes and the postman came to me he betrade me.. can you do somthing on that??
Suggetion2: a command /burn post i got so somany post, I WILL BURN IT!
Any way you can make this so it gets the postman's "Type" from the Citizens plugin? That way we can use custom skins for the NPC designated as the postman.
Just a thought...
Just installed this on my server. Works as advertised! :)
@Excalibur42
Hey - thanks ;) You're correct in that with regular Bukkit I cannot do anything about the map_XX title or tooltips in the inventory. I've so far stayed away from adding more dependencies, but I might look into Spout when I consider all base functionality to be mature in Courier.
@BBF_Paco
No such functionality exists yet, but being able to have a ready made Letter sent to all new players is on my todo. Feel free to add your thoughts to a suitable issue, and place a new one if needed :)
@denxerator
Courier currently has no supported external API, sorry. I can understand that it would be interesting to add though.
@denxerator
Thanks :) And no, Courier claims a single map for its use, rendering a different text for each Letter, and touches no other maps at all. Go ahead and use! :)
If I use this plugin will the regular maps be screwed up?
Great plugin by the way, love it! Thank you.
Hi. I am made a lottery plugin, and was wondering if it was possible to send letters to offline players about whether or not whether they won or when an owner raises the pot of his lottery. Maybe even some source code please?
Awesome mod! Thank you! Can we copy a message or resend one that has already been sent?
This......is......SICK
just one question, I know it is unlikely without sput, but can you make the writing (map_
#) not be there? And possible titles for letters so when you hover over them in a chest or in your inv it'll have a title. That'll be cool cause then we can do like books.... and storage in bookshelves too?!?
Awesome!
@Sheepington101
Courier includes spawn protection override that I've tested to work with a few spawn control plugins. It will only let Courier Postmen through, not other mobs. If it doesn't work with MantaMobControl please let me know.
Courier Enderman-Postmen are completely pacified. Feel free to look them in the eyes - and the only thing that happens when you poke them is that they'll drop your Letter ;)
So will endermen not being able to spawn (MantaMobControl plugin) affect the postman? Also what happens if you hit the postman or look him in the eye.
the postman in my server don't spawn automatically. the only way they work is if the recipient uses the /Postman command
It would be cool if you add "save maps" which won't be deleted later on by your plugin. Also maybe an ingame time editor ? :P Ty for this plugin
I think it would be fun to have an actual mailbox that players have to build to receive letter mail, more instantly. Like a dispenser and the player has to put a sign on it saying [Mailbox] for it to work.
Obviously if they build it, then as an admin I also need a way to spam mail, including gifts and junk out to everyone so that everyone sees the benefit in making a mailbox :P
Dispenser also gets full and players should get a notification :P
I don't know who has the worse priorities post enderman or bukkit :D
btw did you solve that error message I posted? I been wanting to try the villager release
Would it be possible to add a way for an Admin to post a letter to everyone on the server? Like if I need information out without putting an annoying timer on a command to tell whole server I could just email every player.