RealisticChat
MYCRAFTisbest and POSITION OPEN's RealisticChat - realistic local chat!
FORMERLY
-----------------
CakeMushroom's RealisticChat - realistic local chat! |
a collaboration of cakenggt and mushroomhostage |
-----------------
DONATORS:
Godpuppet2 - $20USD TOP DONATOR
TheOnlyShad0w - $10USD
RealisticChat 3.0- released, now with better 1.4 support
Features:
- Local chat
- Yelling
- Whispering
- Bullhorns
- Ear trumpets
- Walkie-talkies
- Smartphones
Basic Usage
Talk normally. You'll only be able to clearly hear other players within 25 meters.
Beyond 25 up to 50 meters, chat will break up: letters will randomly drop from your messages, with increasing probability the greater the distance.
To reach someone further away, you can yell. For example: "*help!*" adds 10 m. Multiple exclamation marks will make you yell louder: "*help!!!!*" adds 500 m. Yelling will also make garbled messages clearer. However, yelling comes at the cost of decreasing your food level!
If you want to talk to people very close by but hide your chat from others further away, you can decrease your chat range by whispering, for example: "*(lets go)*". Only players within 10 m will be able to hear your whispering, and only those within 5 m will be able to hear you clearly.
Advanced Usage
To further increase your chat range, speak while holding a bullhorn (diamond). This will double your range within a conical region in front of you, just like a real bullhorn (or megaphone). Bullhorns can be used in conjunction with yelling. Additionally, players hearing messages from bullhorns will recognize the direction it is coming from. You can use this ability for [acoustic location](http://en.wikipedia.org/wiki/Acoustic_location) if you get lost.
For stealthily listening in for covert operations, wear an ear trumpet. A precursor from the 1600s to the modern hearing aid, the [ear trumpet](http://en.wikipedia.org/wiki/Ear_trumpet) can increase your hearing range significantly, but has no effect on your speaking range, allowing you to eavesdrop on enemy bases from a safe distance while talking casually as normal with your partners in crime. Craft it in the shape of a helmet with a diamond in the center, out of wooden planks (+100 m), leather (+150 m), or iron (+400 m), then wear it on your head as armor for improved hearing. It has the same durability as a Golden Helmet.
For long-range communication, use a walkie talkie (compass). Hold the compass in your *hand* and speak as normal, and your voice will be clearly transmitted through the device up to 1000 meters (and break up beyond 1000 meters, up to 2000 meters) to other players holding a compass anywhere in their *hotbar*. Walkie Talkies are especially useful for keeping in touch with other players while travelling.
For private one-to-one communication, use a smartphone (clock). Hold the clock in your *hand*, and use speak into it the name of a player you want to call. Its high-tech *voice activated calling* capabilities will cause the device to ring up the player, giving them at most 4 times until they pickup by switching to the phone. Once the call is established anything said will also be transferred over the air to the other player. You can hang up the call by moving your hand to another item. (Note that other players can overhear you if they are nearby, just as if you are talking normally, so be sure to go somewhere far away or use whispering if you really want your conversation to be private, but this feature can be disabled if desired, see below). Smartphones are still experimental, please report any problems or suggested enhancements.
All distances, items, and other parameters are configurable to your liking; see below.
Commands
None
Configuration
speakingRangeMeters (50.0): Maximum distance between players to allow any chat message to be received, under normal conditions. Note that the message may be garbled at longer distances, see below.
garbleRangeDivisor (2.0): Fraction of speakingRangeDistance after which the chat is garbled (letters randomly dropped with increasing probability further away). For example, 2.0 means beyond 1/2.0 = half of the maximum hearing range (default 50/2 = 25 m), chat will be garbled.
garblePartialChance (0.10): When a character is about to be dropped due to garbling, use this probability to determine if the character should instead be dimmed (colored chatDimMessageColor), representing a barely audible piece of the message. Set to 1.0 to always dim letters instead of dropping, or 0.0 to disable dimming entirely.
garbleAllDroppedMessage (~~): Message replacement to display if you were unlucky enough for your entire message to be garbled. Set to null to disable replacement.
chatLineFormat (%1$s: %2$s): The format of the chat line to be shown to the player. The first argument is replaced with the player's display name, and the second with the message text. For the traditional chat display, try "<%1$s> %2$s", or to hide player names for anonymous chat, use just "%2$s".
chatSpokenPlayerColor (YELLOW): Color of player name shown to a player when they themselves speak.
chatHeardPlayerColor (GREEN): Color of player name of speech heard from other players.
chatMessageColor (WHITE): Color of chat messages.
chatDimMessageColor (DARK\_GRAY): Color of partially-received characters, garbled by garblePartialChance. Set to "MAGIC" for an interesting effect.
yellMax (4): Maximum exclamation marks allowed at end of message to increase yelling level. To disable yelling entirely, set to 0.
yell.#.hunger (1, 2, 4, 20): Hunger (in half-drumsticks) depleted for each yelling level (number of trailing exclamation marks). 20 depletes all hunger.
yell.#.rangeIncrease (10.0, 50.0, 100.0, 500.0): Range increase in meters, beyond the normal range, for each yelling level.
whisperRangeDecrease (40.0): Distance to decrease the chat range when whispering (parenthesized chat). For example, 40.0 will decrease the normal 50.0 range to 10.0 meters maximum. The garble range divisor still applies, so (by default) only those 10.0/2 = 5.0 meters away will hear you clearly.
bullhornEnable (true): Enable or disable bullhorns.
bullhornItem (diamond): The hand-held item to use to represent bullhorns.
bullhornFactor (2.0): Multiply chat range by this value when player is holding a bullhorn (diamond).
bullhornWidthDegrees (70.0): Width of the bullhorn conical region in front of the player, in degrees. 70 is the default Minecraft field-of-view.
bullhornChatLineFormat ("%1$s [%3$s]: %2$s"): Messages received from bullhorns will be formatted using this format string, with the third field replaced by the compass direction from where the message was received. See also chatLineFormat.
earTrumpetEnable (true): Enable or disable ear trumpets.
earTrumpetEnableCrafting (true): Enable or disable crafting of ear trumpets.
earTrumpet.#.rangeIncrease (100.0, 150.0, 400.0): Hearing range increase for each of the tiers of ear trumpets. The wearer will be able to hear (but not speak) up to this increased range.
walkieEnable (true): Enable or disable walkie talkies.
walkieItem (compass): The hand-held item to use to represent walkie talkies.
walkieRangeMeters (2000.0): The maximum range of walkie talkies. Note that near the end of this range, messages will be garbled depending on walkieGarbleDivisor.
walkieGarbleDivisor (2.0): Fraction of walkieRangeMeters after which the transmissions are garbled. Using the defaults, beyond 2000.0/2 = 1000 m the messages will break up, and from 0 - 1000 m, messages will be clear.
walkieChatLineFormat ("[walkie] %1$s: %2$s"): Messages received from walkie-talkies will be formatted using this format string. See also chatLineFormat.
walkieHearLocally (true): When talking into a walkie-walkie, allow other people nearby to overhear you. This adds realism since you'll have to whisper or go away from other players to have a private conversation, but can show doubled messages if the player you're talking to on teh walkie is near enough to hear you locally as well. If false, the message will only be sent into the walkie-talkie, not to nearby users.
globalPrefix ('/g '): Messages beginning this prefix will be delivered globally, regardless of local chat restrictions. You can either use a command (examples: '/g ' or '/s '), or a prefix in normal chat (example: '@'). Set to null to disable.
globalChatLineFormat ("[global] %1$s: %2$s"): Messages sent using /g will be formatted using this format string. See also chatLineFormat.
smartphoneEnable (true): Enable smartphones.
smartphoneItem (watch): Item to use to represent a smartphone.
smartphoneChatLineFormat ("[cell] %1$s: %2$s"): Messages received from smartphones will be formatted using this format string. See also chatLineFormat.
smartphoneHearLocally (true): When talking into a smartphone, allow other people nearby to overhear you. See also walkieHearLocally.
smartphoneRings (4): Number of times to ring smartphone when calling a player before they answer.
Permissions
All permissions default to true.
realisticchat.yell: Allows you to yell
realisticchat.whisper: Allows you to whisper
realisticchat.bullhorn: Allows you to speak into bullhorns
realisticchat.eartrumpet: Allows you to wear ear trumpets and hear better
realisticchat.walkie.talk: Allows you to talk into walkie-talkies
realisticchat.walkie.hear: Allows you to hear from walkie-talkies
realisticchat.smartphone.call: Allows you to place calls with your smartphone
realisticchat.smartphone.answer: Allows you to answer calls with your smartphone
Comming Soon:
- Op override (adding perms to allow Ops to hear and be heard by all)
- World Comminicator (diamond hoe, It works everywhere, you will probably need something to power it)
- Pager (iron ingot, it just tells u the name of the person who contacted you by ether pager or phone)
- Home Phone (made of an iron block and if within an area of it, a ring message will be heard and right clicking it will pick it up (ect))
- Newb message (a customizable message sent to first time players to describe the server and how the chat works)
- Maybe Cell tower (configured block) and phone lines (string)??
- Maybe Outlets (Phones need to be charged)??
- anything else?
Im trying to use this for a Fantasy RP server, the distance garble feature is purely brilliant.
It would be great if you could implement channels into this. IE a /shout instead of the exclamation marks. A /whisper. Mod Channels and more format/colour customization for them. If this had that, I would use this 100% and nothing else.
ATM im trying to find another chat plugin that wont interfere with realistic chat, that allows me to add /shout and /whisper with ranges... its a nightmare! lol...
Cheers!
@fuzyfeet
I will create a config option to use the power or not and to config items will be added at some point after
@gustebeast
It will be controlled with a command, don't worry
I like many of the upcoming features, but can you make sure that some (like the power needed) are optional? I asked before if we could use item id and data values for the different items that would help a lot (like when using MoreMaterials or the like) but while mushroomhostage said it can be done, it never was. Also being able to set several items for each device (i.e.: walkieItem: book, book and quill)?
Thanks
@MYCRAFTisbest
For the op hear all, please make it not default to op, make it a seperate permission. I am an op and I dont want to hear everyones personal conversations
Well i already started to add an op hear all/heard by all mode thing and a first join message for players
the walkie talkie will have channels eventually
the phones work if its in one of your 9 main inventory spots and i am working on a bluetooth similar to the ear horn but for use with the phone. You will need a phone with you and a bluetooth on
as for formatting, i will see what i can do as my main concearn is keeping my more popular plugins up to date but i will make this when i get the chance
Glad to hear this is under new developement! Here are some suggestions for ways to improve the plugin...
Formatting
Lets face it, almost everyone uses some sort of chat formatting plugin these days. EssentialsChat being the most common. Those chat plugins offer lots of nice features like per-group formats and lots of custom tags. This plugin should be able to play nicely with those chat formatting plugins. After looking through many local chat plugins I found one that does formatting perfectly. Its called Local Chat and it's close to perfect. It formats in a seperate config file and you can add per-world formats simply by creating a new config file called <world>.yml. The format options allow you to attach as many commands/prefixes you want to a chat type (/g, /s, and /global all send the message as a global message) and the best part is how it works when essentialschat is also installed. Instead of forcing a whole chat line it only forces a custom prefix so the output ends up like this, "[G] <essentials chat>". The hard part comes in with the message format. If you leave the chat up to essentials, you lose the a lot of nice features like chat garbling. The ideal option would be to have the prefix, essentials format, and somehow the garbled chat too. As for how to do all this stuff, thats up to you :)
Smart Phones
You should get the phone ring even if the watch isnt in your hand. Currently, no1 can call you unless you are actually holding the phone. It would be much better if people could call you when you have a clock somewhere in your inventory. It would ring and then to pick you would select the watch. Possible format could be "[Cell] <essentials format>" Preferably when you are on the phone all outside chat would be blocked off so you can hear the person you are talking to.
Walky-Talkies
In real life, walky-talkies have multiple channels for chat, so why not implement it in the plugin too! You can cycle through walky channels by simply right clicking with the compass (maybe channels 1-9). When you talk, only people holding a walky-talky on that channel can hear you. For formatting, maybe the prefix "[W-#] <essentials format>" where # is the channel number. Preferably the walky-talky would also block out outside chat so you could focus on the people you want to talk to.
No One Hears You
I get a lot of new people joining that end up screaming in local chat things like "WHY WONT ANYONE HELP ME!!!" all because they dont know that nobody can hear them. Thats why I really like the "No One Hears You" message. Basically, no matter what chat you are using (walky, phone, local) if no one can hear what you typed, it tells the player "No One Hears You". Preferably this would be configurable in case someone wanted to add a "... To type global, use /g" or something similar.
Concluding
I know its a lot to do, but hopefully you will implement at least one of these ideas. I think every one of these ideas would add to the usefulness of this plugin, and thus its worth trying a few out. Finally, I would just like to thank you again for taking on this plugin. It's a great project, and it's worth being continued.
@jasper580
The reason ear trumpet doesnt have a chat line format is because it doesn't have a chat line.
It only increases sound from other players chating
What did u have in mind
@ the devs: is there something like earTrumpetChatLineFormat in the config? If not, can you make it???
I would like to take this plugin over assuming the other authors won't
(I couldn't quite understand MCP but i definatly can work with the Bukkit API and this is around my skill level)
I am always disconnecting from the server when I try to talk, crash while talking on chat.
Is there a way that smartphones will require to build some kind of cell tower infrastructure first? Like some kind of towers with antennas that have certain range and you have to be within signal range and cell tower can interconnect to create network? Maybe noteblock as base iron fence as antenna and iron blocks from sides on top for 90 degree directional signal boost, and taller the antenna the better the signal? Something like other mods use radio beacon for instance.
A message keeps repeating in the log
2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> kiinho: vou tomar cafe 2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> Picoreta: vou tomar cafe 2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> cookies7458: vou tomar cafe 2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> Dostya: vou tomar cafe 2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> Bruxogum: vou tomar cafe 2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> extremefllow_13: vou tomar cafe 2012-08-13 08:39:41 [INFO] [RealisticChat] (global) kiinho -> sscleitonss: vou tomar cafe
Perfect Plugin
HOw can is set the plugin? In ingame chat?
Any possibly of adding emotes and custom global channels. I would rather have one chat plugin and if you had these two abilities then I wouldn't. I want to have admin and ooc (out-of-character) channels.
Emotes would be the same as talking (range, etc) but be formatted would be different.
Edit: also would it be possible to set multipal items as walki-talkies and cellphones? On my server I plan on having cellphones be magical items, but different magical traditions would use different items.
For some reason, walkie talkies dont work for me. I dont have any console erros whatsoever, Ive tried different items also. Doesnt work. Period.
@mushroomhostage
Mods can give items their own ID, but plugins like Spout that add custom items use flint (318) as the base and the damage value as the ID (318:1234)...
This will probably be a moot point once the Mod API comes out, but who knows how long that it (since 1.3 is API free)...
@sagethor
Should work with modded items.. at least its working for someone else (@NeonJ below). Try entering the item Material name, for example, item ID 7260 would be "X7260" which depending on your mods may be Railcraft's "Signal Tuner" item.
@fuzyfeet
Not currently possible, perhaps could be added, but note you can already set modded item IDs – just not with damage values. Most items I've seen from mods have their own item IDs and don't use subtypes.. given that there are 32000 item IDs available, I see why mods usually just add new IDs instead of use damage values :). But if there is a need, custom damage values for the items could certainly be added.
@fuzyfeet
I second that. I'm wanting to use this with Tekkit, but the inability to set the item as a non Vanilla one prevents me from doing so.