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.
craftbukkit 1.5.1 #2700 Gold and Yellow color displays in incorrect way.
@defxor
build 2694, but i update every day i have install this build today
2688 was the build i get the error the first time
@Tealk123
Alright. From the error it seems you run a v1.5 development build - just let me know the build number and I'll look into it.
@defxor
i get a spaam of this error in the log, but i do nothig with paintings or framed letters.
i have only paintings and framed letters on walls but i do nothing with it but i get the error all time
@Tealk123
That's painting and not a framed Courier Letter, right? I did a brief test on Bukkit 1.5 development build but I only tested "Courier stuff". Thanks for the comment, I'm not sure whether that's a Bukkit error not actually but it's likely I would be able to avoid it.
if i put up a painting i get this error
2013-03-20 20:17:35 [SEVERE] Could not pass event PlayerInteractEvent to Courier v1.1.9
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
at org.bukkit.craftbukkit.v1_5_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:181)
at org.bukkit.craftbukkit.v1_5_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:151)
at net.minecraft.server.v1_5_R1.PlayerConnection.a(PlayerConnection.java:615)
at net.minecraft.server.v1_5_R1.Packet15Place.handle(SourceFile:58)
at net.minecraft.server.v1_5_R1.Packet15Place$$EnhancerByCGLIB$$a32a9d0e.CGLIB$handle$0(<generated>)
at net.minecraft.server.v1_5_R1.Packet15Place$$EnhancerByCGLIB$$a32a9d0e$$FastClassByCGLIB$$a69fce86.invoke(<generated>)
at com.comphenix.net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.comphenix.protocol.injector.packet.ReadPacketModifier.intercept(ReadPacketModifier.java:98)
at net.minecraft.server.v1_5_R1.Packet15Place$$EnhancerByCGLIB$$a32a9d0e.handle(<generated>)
at net.minecraft.server.v1_5_R1.NetworkManager.b(NetworkManager.java:292)
at net.minecraft.server.v1_5_R1.PlayerConnection.d(PlayerConnection.java:113)
at net.minecraft.server.v1_5_R1.ServerConnection.b(SourceFile:35)
at net.minecraft.server.v1_5_R1.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_5_R1.MinecraftServer.r(MinecraftServer.java:580)
at net.minecraft.server.v1_5_R1.DedicatedServer.r(DedicatedServer.java:225)
at net.minecraft.server.v1_5_R1.MinecraftServer.q(MinecraftServer.java:476)
at net.minecraft.server.v1_5_R1.MinecraftServer.run(MinecraftServer.java:409)
at net.minecraft.server.v1_5_R1.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.NullPointerException
at se.troed.plugin.Courier.CourierEventListener.onPlayerInteract(CourierEventListener.java:84)
at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 21 more
This Plugin is amazing! Thank you so much!
@piritacraft
Are you in creative mode when you do this (/gm 1)? I had the same problem but all I had to do was switch to survival mode (/gm 0) and then the letters were showing up again.
Great plugin, I have multiple worlds running on one server with Multiverse Core and I was wondering if you will be supporting this type of config? I really only want this plugin to work in one of my worlds....
NEVER MIND... I see that mail works across worlds and that works for me!!!
Thanks again for this great plugin!!
Hey, I really like this plugin, maybe you can add support for Formatting codes? like: §k Obfuscated §l Bold §m Strikethrough §n Underline §o Italic §r Reset
@piritacraft
Hi! I assume you mean letters in ItemFrames? I don't know of any reason why they wouldn't show up - but it's pretty new functionality and anything can happen. To be able to investigate the problem I really need you to write up as much information as you can on how to make it happen (including other plugins that possibly could interfere) in a ticket.
sometimes the image on the frame do not appears.
An incompatibility has been identified between Courier and Guilds where Courier would simply never become enabled on server start (yet still give out non functional letters if used). An updated version of Guilds will fix the problem.
Thanks to Aralax for the report and helping out with testing :)
@Aralax
Thanks for the report! Unfortunately I'm unable to replicate it on my test servers. I've had success before with problems that only show up on few (or one .. ) servers by asking for the Courier folder and the contents of world/data (which is where maps are stored, I don't need the full world) though - if that's possible for you to zip up and send me.
Basically Courier does some trickery to make sure that it only uses a single real map, and there seems to be some edge cases where Courier believes it has claimed a map for itself and yet it doesn't manage to render to it. That seems to be what you're seeing.
I'd love to investigate the problem - please send me a PM with your email adress and I'll contact you for the files I need to (hopefully) replicate it.
This plug-in looks amazing, it's exactly what I was looking for! Great job! However, the 1.4.7 version appears to be broken:
Whenever I or one of my players use /letter [message], we are given a blank, enchanted map, which shows the position of players like a real map. The enchantment, so far, has always been Unbreaking II, and the message that we entered is also displayed as an enchantment (i.e. it shows up in the tooltip right below the Unbreaking enchantment).
Any idea what might be causing this? I haven't changed anything in the config yet, as I wanted to test the plug-in first. I'm using a few other plug-ins (all updated to 1.4.7, of course): WorldEdit, BookPress, More Actions and Guilds, but I doubt any of those are interfering with Courier.
@141deltaNERF12
I've made a quick test and it seems so. Thank you :)
Hey guys it does work on 1.4.7 thanks for the awesome plugin defxor keep up the good work :)
o.k., nice to hear, dexfor :) thx again for this beautiful mod
@diannetea
Admin possibility to send letters (called Parcels) to everyone as well as automatically delivered to new players only when they join the server for the first time will be available in v1.2.0.
Could you add an admin ability to send a letter to EVERYONE?