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.
loving this plugin! Is working with Spigot 1.12.2.
In reply to Forge_User_02764350:
In reply to arrbos:
I am working on a rewrite of this plugin for 1.13 and 1.14. So far it can do the basics of this plugin, and I'm adding more features slowly. It isn't much but it does work if you wanted a replacement. Here is the link: CourierNew on Spigot
@thequestingbeast @defxor
We had the same problem, our letters didnt show anything. The problem was, that we tried to save the maps in our mainworld like before the update to 1.8.8.. During 1.7.9., our mainworld=spawnworld. But with 1.8.8, we created a new spawn world. We needed to transfer the maps to the Spawnworld data and then it worked. Maybe this helps you, too. :)
I love this plugin But it cannot use Chinese
Thank you we love this plugin on our server!
I cam seeking some help. The link to the resource list is not working and I was wondering if any in the community knew the tag needed to use black ink as resource needed for letters.
Thank you in advanced.
C.o.p Staff.
@Thyrin
Many thanks for that info - as you indicate there I see no immediate ways to work around that issue.
With 1.8 Mojang made the minecraft client cache the canvas of a particular map (based on map id) on world change, causing it to cease updating thereafter until relogging. This affects vanilla minecraft as well. I've made a more detailed ticket here: https://github.com/troed/Courier/issues/14
@TanderMME
Last time I checked there was no support for non-Latin characters in Minecraft/Bukkit for rendering to Maps and Courier can only use what's available. If anyone else wants to check whether that has changed during the last few years I would absolutely merge a pull request :)
(It's MinecraftFont.Font that's used)
@thequestingbeast
If you look inside your plugins/Courier folder, in the file messages.yml, is the actual letter content there?
The only way I can help if it is is to send you a version with debug printouts available to see what Courier does under the hood.
@defxor
I went from 1.1.9 to 1.2.1 and all the letters now show the preview in your inventory and look enchanted, but holding them has nothing to be seen.
@defxor
hi, I'm from Russia, I would like the support of the Russian language, just if you write in the letter text in Russian, there's just nothing is displayed.
@thequestingbeast
Hi,
It should not happen. From which version are you upgrading and how do you do the upgrade? Nothing has changed in how Courier reads its database in the v1.8 upgrade versions.
When I update to the 1.8 versions old letters can no longer be read. Is this something I am doing or can it be avoided?
@Si7VdeR
Hi,
Yeah there was a change made in Bukkit a long time ago that means the text on maps in item frames begin at the very first pixel. Unfortunately it's not solvable in Courier - the "only" solution is to edit the graphics for the item frame (included in the .jar) to remove the paper-ish border completely.
regards, defxor
Hi,
I just got back from a long holiday and I see you made some updates. Looks fancy ! I tested the plugin and everything seems to work fine. The problem I could find is putting the letter on an itemframe the text is a bit too far to the left. So the beginning of a sentance can't be seen and there is a big gap between the last word of a line and the right corner of the letter. Not sure if you can fix that but otherwise the plugin is working perfectly. Tomorrow I am gonna test the fees (I don't have time right now).
@defxor
Thank you. I did submit a ticket, so hopefully some light can be shed on what is occurring. Besides this bug, by the way, courier works really well. Everyone enjoys using it and even writes nonsense to their friends just to be able to write and receive letters.
@Blue___Moon
It's very difficult to have an informed opinion without having debugged it. It sounds as if the content written to the internal database is cached, but I have neither a good understanding of why it would happen nor any suggestions on how it can be fixed. I'd suggest you open up a ticket and at least document what type of server you run, the number of users, for how long you've been running Courier etc so that others might be able to add more information as well.
Additionally I could create a debug build of Courier (with lots of debug output) for you.
I appear to be having what I think is a bug. I'm posting it here because maybe it's my own doing, but sometimes players will compose letters and no matter what they compose, the letter will contain something they sent before. When this person receives a letter, they get that same message. So for example: Person A sends a letter that says, "wassup?". They draft more letters but for some reason they all say "wassup?". Letters they receive all say, "wassup?". No errors to speak of in the console and it strangely resolves itself given some time- about a day or so. Is this a bug or my doing?
@defxor
YES!!! Thank you to you and all contributors for bringing this back! :D
Small suggestion/request: Would there be a way for owners/ops to mass send mail to all players? It would kind of be nice to send a letter with rules and info to new players or something.
Courier v1.2.1 has just been released. If you haven't had any errors when /post:ing or when loading chunks (the errors might be more common on Spigot compared to Bukkit) then there's no rush to update.