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.
@Shooty_
config
Hi i have put the plugin on works but the post man (villager) keeps spawning to post it is this ment to happen
Really cool and useful plugin.
@a support for nicknames would be great - f.e. roll-playing servers(or until it is possible just do an option in config-file for not show the name, just showing the head). Ticket: http://dev.bukkit.org/server-mods/courier/tickets/100-support-for-nicknames
-> couldnĀ“t you ask the autor of the nicknameplugin, how to cooperate with this plugin? I found something: "IF you use a chat plugin such as Herochat or whatever chat plugins are out nowadays, make sure you change the chat configuration to show the display name instead of the player's actual minecraft username." from here: http://dev.bukkit.org/server-mods/nick-namer
thx!
Julia :)
@crohakon
Don't want to speak for him but I think that would be possible. I know for vanished players the mailman holds their post until they are no longer in vanish mode so I think it would be a similar situation here to just hold it until they are in "mail receive" mode. Although I have no need for this feature I think it would be a good addition if you have the time, defxor.
@defxor
I don't know if an opt out permission node would be the best way, as I can see players wanting to turn it on and off at will so they can in fact check their mail should they choose.
Would it be possible to have it be switchable in game whether they are receiving mail at the time? Just have the postman hold it until they have mail turned on?
@crohakon
I can absolutely see the interest in such an option - it would be an opt-out permission node. Thanks for the suggestion!
@o0Julia0o
I've not used nick name plugins myself - I would have to investigate how to cooperate with them before I can have an opinion on your ticket. Thanks!
Is there an option to allow players to reject the ability to get mail? Most of my players love this plugin, but a small few a protesting it. Would love an on off switch for plays to opt out!
@Shooty_
Courier already tries to override mob spawn deniers the best it can. If it doesn't work I'd urge you to point it out to the developers of the mob spawn denier plugin since they should be able to fix it by just changing the level at which they filter events (i.e, less than Highest).
This is the relevant code in Courier.
The plugin seems to don't works when world guard have mob-spawning deny, can you override ? plz :/
I used this when it was on 1.1
I dunno if enderman still deliver the mail or not... but I really liked this plugin I remember.
Ill have to re-add it to my server. Glad I saw this, brings back good memories!
Support for nicknames
What steps will reproduce the problem? use a nick-name-plugin like: http://dev.bukkit.org/server-mods/nick-namer or http://dev.bukkit.org/server-mods/nametags/tickets/32-pex-user-works-fine-admin-not or http://dev.bukkit.org/server-mods/nametags etc. & send a letter to the nickname of the player(the other name you donĀ“t know, because you only see the nickname. What is the expected output? What do you see instead? ..the letter will never arrive, because itĀ“s stored to the nickname & not to the real PLAYERNAME.
What version of Courier are you using? 1.19
What version of CraftBukkit ("Bukkit") are you using? 1.0.1-R1, dev build number etc. Bukkit craftbukkit-1.4.7-R1.0
Do you have an error log of what happened? no - itĀ“s no errer... ist locigal.
So - it would be nice, if you can make a config-file for nicknames like: NICKNAME1 = PLAYERNAME2 NICKNAME2 = PLAYERNAME1 etc.
In this config-file, the admin can write down the nicknames matching the real Playernames. So the courier(your plugin) watches first in this config if the letter has to be stored to another Name(the Playername) if the Sender posts(/post) it to the nick(because the users only know the nicks).
thx
Julia :)
Can't wait for items to be attached to mail :D Extra charge for parcel would make it even more awesome :D
@marubal21
Absolutely, although I believe the current version already works fine. I've done brief tests on a few development builds and I know others already run it on a daily basis.
Will this be updating to 1.5+
@defxor
Ok, thanks for the notice, i like using the villager over any other mob.... i posted the issue with the makers of Rebalance Villagers and see what their take on it is, worst case i'm keeping Courier, i like what it offers to the game... side note: have you considered items to also be emailed as well?
@marubal21
Hi,
Thanks for informing us. I looked through the source of Rebalance Villagers and they do indeed stop Courier from working:
There seems to be nothing I can do in Courier to solve this, sorry.
edit: But of course, you can always choose another Entity as Postman in the Courier config file :)
I believe this plugin is incompatible with Rebalance Villagers. When i removed Rebalance Villagers it was behaving as expected.
I am able to create and send the letters, but when is comes down to retrieving the letter from the postman(using a villager as postman) it just opens the trade screen and i can never get my letter. Also the postman does not de-spawn after the set time, and instead another one just spawns in, and still i can't get the letter from him either.
@Tealk123
Alright, I'm unable to reproduce the error (just tried with the latest build). I'll send you a version that shouldn't throw an exception but just log a message - check your PMs. Let me know if it works, and the exact message written to the log when it previously threw an exception.
i get the error if i use a door