va_postal vers 2.78 1.4.5-R02

Details

  • Filename
    va_postal_278_1_4_5.jar
  • Uploaded by
  • Uploaded
    Jan 15, 2013
  • Size
    353.30 KB
  • Downloads
    506
  • MD5
    788aa517317e87424842905d0b848dba

Supported Bukkit Versions

  • CB 1.4.5-R0.2

Changelog

Versiom 2.78

Issue where shipment mailed at a post office not properly received into system, fixed.

Dispatcher heartbeat put on a Asynchronous thread.

New config.yml setting: 'prevent_all_npc_despawn' prevents non-Postal NPC's from despawning. These are Citizen2, player type NPC's.

General code clean up and optimization.

Versiom 2.76

Formally set (and validate) maximum name lengths of post_office, town and player to 15 to match the maximum line length of a sign. Formerly, and a bit informal and not validated, the name length has been declared 14 characters. A player name may actually be 16 characters, as permitted by Minecraft. All of the Postal routines and data storage have been updated to allow for this slightly longer possibility. Postal simply drops the last character of a player name if it is 16 characters and assumes that there will not be any more than one unique completion of similar 16 character names missing the last character.

Postal log now occupies slot 0 of a Postal chest. This new assumption allows Postal to readily find the log without iterating through the entire chest. The postal log format has changed, and the saving of full logs to postal archives has stopped. The new postal log format is one page only instead of 50 pages. The time stamp order has changed from the last stamp going at the end of the book to it being the first. The set of stamps shown on the first page are ordered newest to oldest.

The new postal log location, the new, one page format along with the recent sign id of Postal chests provides a more efficient infrastructure, a hybrid of the sign/book/chest data object and the hierarchical data structure in a yaml format. Much code optimization using this new infrastructure has taken place.

Postal, once per startup, cleans out Postal chests of anything that is not a written book. Obsolete files such as old postal logs and postal archives are also removed.

New mail notification to address owners has been expanded to include a message when the player joins. All owned addresses are scanned for unread mail, and reported. New mail notification on Postal chests has been changed from a redstone torch in front of the mailbox, to highlighting the first line on the Postal sign with red.

Versiom 2.6

New advanced mailbox detection and labeling system. Once a mailbox is identified by Postal a detailed sign is posted on the front of the mailbox. Postal always looks for a signed chest first. If the sign details match the chest is used. If the signed mailbox is not found, Postal falls back on proximity and/or postal log confirmation. This is a far more efficient method of mailbox detection, and serves to clearly identify mailboxes to the player as well.

Shipments are sign identified as such, making their overall roll in the Postal system clearer.

New mail indicator has been changed. Formerly new mail was indicated by a redstone torch placed in front of the mailbox. This has been changed to the top line of the mail sign turning red. It is normally green, and returns to green once a chest with new mail is opened.

Preemptive mail handling has been expanded to include the PostMaster, or Central postal system servicing local post offices. This replaces the former round-robin, central scheduler and is designed to keep mail moving along efficiently as the number of post offices continue to increase.

Versiom 2.5

Global searching. /tlist and /plist have been expanded to facilitate global searching by address name or player name. All three of these commands are fully functional in game, or on the console.

/tlist will now take a search parameter. This command will still behave as it always has and alphabetically list the town names without a parameter. The quantity of towns is assumed to always be of a length not requiring any more than an alphabetized list for quick reference. If given a parameter /tlist will now, recursively, search each town on the server for addresses matching the search parameter and list them. '/tlist *' will list, alphabetically, every address on the server.

/alist is not effected. It will still attempt to complete a town name and list all the addresses in the town, or display town names close to the search parameter.

/plist will still quickly list players names that have been on the server matching the search parameter. However, if the search parameter is enough to uniquely complete a player name, Postal will globally search all of the postal towns and addresses for player ownership. Any Post office or town owned by the matching player name will be listed.

Player teleporter problem fixed. Player sometimes arrived before the world blocks did and allowed the player to fall until the blocks showed up. This may be caused by the target being in an unloaded chunk, or a simple timing issue between player and block appearance. The solution seems to be to call for chunk load while delaying player slightly. An additional reality check by Postal verifies actual player position after teleport, and follow up with habitability check and final reposition if needed.

Uniform components have been moved to 'config.yml' for both the postmaster and local postman. Item id's are required and will be checked for validity. Invalid id's will default to nothing.

New statistics holders for the post office portion of the dispatcher, called the queue. cem_time is stamped each time the post office is visited by the postmaster. cen_count keeps a running count of visits. cen_interval holds the time in seconds between visits.

Item shipping implemented with the addition of three, new player commands. /package, /accept and /refuse. /package <town> <address> [player] creates a shipping label for the chest the player is standing next to. The shipping label contains a complete list of the items and quantities in the chest. A copy is placed in the player's hand, and another copy is placed in the chest. This shipping label may be treated like any other addressed, mailable book. It may be re-addressed with /addr or /att. To ship the chest the shipping label is simply placed in a designated mailbox. When it is picked up by the postman, the chest will vanish and be in the postal system.

On delivery, the recipient may /accept the shipment or /refuse it. To accept, the recipient, with the shipping label in hand, walks to where the chest should be placed and enters the /accept command. The shipment will appear directly in front of the player. Chests will automatically stack if there is already one there.

To refuse a shipment the player simply enters /refuse with the shipping label in hand. The shipment will be immediately returned to the sender. It will appear exactly where the sender packed it, or stacked if there is another chest has been placed there since it was shipped.

A personal message may be included in the compiled shipping label by including a written book titled 'statement' in the chest to be shipped. The text in this book will be included after the line item details of the chest contents. This book will also be replaced by the formal shipping label.

Versiom 2.1

Improvements to hot route editing using the new route closing capability.

Four new commands, console and player to control the open/close status of post office and routes. /openlocal, /openaddr, /closelocal, /closeaddr. Changes made by these commands remain effective until Postal is restarted. Even though a local post office is closed the Postmaster is still servicing it. Books may still be mailed at the post office and they will be processed normally. Mail may also be picked up at the closed post office. It just won't be delivered to residences, nor will mail be picked up at residences. These new commands require administrative privileges or ownership rights to use.

New scheduling control. Post offices may be opened and closed, hot. Individual routes may be similarly controlled. Provides increased resolution for in-game, console or outside control. This allows all routes to be individually controlled. This will have a place in the coming economy implementation as well as provide a way for other apps to influence the Postal dispatching. There is a new set of commands detailed above.

new 'config.yml' settings 'Join_message' and 'Residence_cool_ticks'. 'Join_message' is the message the players see when joining. Accepts standard color codes, and variable %player% expands to the name of the player joining. May be set to ' ' to skip message entirely. 'Residence_cool_ticks' is the amount of time, in ticks the postman pauses at each residence on his round.

Menu displayed when entering 'postal' reorganized to provide a more relevant list of commands based on the players permissions or ownership. There are now three distinct menus; player, owner and admin. Players get a menu designed for them. Any player that owns a route or post office will get the owner's menu. Admins get the full list.

Added '/first', '/mid' and '/last' commands to waypoint editor. Use to quickly position player along a route.

Bug in 'postal cstalk' fixed. The wrong spawn location was being reported. The actual, recorded location was correct, however.

Three new settings in 'config.yml': 'Postman_cool_sec', 'Central_cool_sec', 'Heart_beat_ticks'. 'Postman_cool_sec' is used to configure the amount of time, in seconds, the postman stays in the post office in between routes. 'Central_cool_sec' is the amount of time the postmaster stays at each post office during his rounds.

'Heart_beat_ticks' is the Postal heart beat interval. Anything entered by the user in this field will be used as a starting point for Postal. Postal calibrates itself and saves the calculated result there.

Dispatcher layout in 'config.yml' has been reorganized and slightly refactored. Interval field has been added for future use.

Static chunks are no longer stored in 'config.yml' They are now held in a memory array.

Postal now scans all residential mailboxes for outgoing mail when it starts up,or is restarted. Postal also listens for new mail and expedites the route with new mail. However, when the Postal is restarted it rebuilds the dispatcher from scratch and starts all routes from the top. Expedited routes containing mail were lost during the rebuild resulting in the temporary loss of the preemptive mail-handling of the system. Scanning residential mailboxes as it re-builds the dispatcher restores waiting mail to the top of the queue.

Three more 'config.yml' strings: Chat_onroute, Chat_postoffice and Chat_collision. What the NPC says during the implied contact. Variable %player% in the string will be expanded to the player name making contact. These strings accept the standard '$' color codes.

/alist command now displays the time it takes for the postman to walk each route.

Added two more 'config.yml' switches; 'allow_monster_spawn' and 'chunk_overlap'. The first switch, when set to 'false' (default), will prevent monsters from spawning along postal routes, post offices and residences serviced by the post office. This is, technically, the chunks monitored by the Postal chunk manager. The chunk overlap switch makes it possible to expand the managed area if desired. The default is 0, the minimum required by the postal system to function. The maximum is 10. New console command 'postal chunks' displays the size of the chunk pool. It complements the chunk overlap switch as a way to view the effect of different values.

Versiom 1.9

Recent feature added to dependency Citizens2 had the NPC's despawn when near any chunks that were unloaded. This typically happens when live players leave an area. The Postal watchdog was compensating for this by nudging the NPC's back to existence. Now, if a postal worker is targeted by such a despawn instruction, the event is canceled. There are no more route interruptions caused by the simple absence of live witnesses.

Route editor. This editor has been modified to be more like the Citizens2 path editor by implementing both mouse buttons. Left click marks a waypoint, right click undoes the last waypoint. Further, double clicking on the final waypoint block exits the editor. The editor will not mark the same block more than once in a row. Click the same block as many times as you want, it will only record once. Double click it and you exit the editor with that last block as the end of the route. Typing difficult commands in the waypoint editor is no longer necessary. A new command processor dedicated to the person in the route editor is in place. Even though the new mouse navigation eliminates the need to type any commands while editing, they are still available, and no longer require the preface: '/setroute'. Instead of '/setroute exit', it is now just '/exit'. The same is true for /new and /undo. The route editor will not allow any other interaction other than route editing while in the editor, nor will it let you forget that you are in the editor. It will also exit automatically if the user quits while in an editing session.

Redstone dust is now used to highlight waypoints while in the route editor. When editing an existing route, existing waypoints are highlited, and the player is teleported to the last waypoint. Right clicking near the end waypoint removes it without moving the player, /undo removes it and advances the player to the new, route end. Right click as you are laying forward waypoints and you will get a distance reading relative to the last waypoint behind you. Double (left) clicking the final waypoint exits the editor and removes the waypoint highlighting.

Listeners have been reorganized and consolidated. The only listeners normally left on are for inventory (mail) control and management, and player interaction - item and chest security. Listeners used for route editing are only on when in use. They are turned off when exiting the route editor.

Sign identification of mailbox chests. Was changed from a simple [mail] label to a more specific [address_name] label on version 1.8 The id algorithm was relaxed slightly to accommodate names longer than a sign line will permit. The text between the brackets may be less than the full length of the name, as long as it matches, case insensitive. The two brackets are mandatory. It is not unusual for there to be other copies of the address name nearby. The brackets serve to distinguish it as a mailbox designator.

Both ends of a route have definitions that can seem slightly ambiguous or confusing. Routes start at the local post office with waypoint 0, the postman's first step. The route ends in front of the mailbox at the residence. This has the highest waypoint number. While there are the two route endpoints indicating where the local post office is, as well as the residence location, there are also separate, and independent designations that are very similar; /setlocal, and /setaddr.

This ambiguity on the residence end has already been addressed by automatically synchronizing the /setaddr location with the final waypoint set using /setroute. /setaddr may not be invoked after a route is defined, therefore eliminating any possible re-set errors later on. /setaddr has as it's main purpose, the careful and deliberate naming of a new address and approximate location, and is the admin's tool. /setroute is the primary tool used by a owner/resident, and remains flexible, allowing the resident to be blissfully unaware of any of these location distinctions. Nor anyone else, for that matter (except the developer).

Back to the post office end of a route. It was still possible to screw up the route system by re-setting the local post office location erroneously after a set of routes for it is in place. The fix was easy enough - just reset it correctly. The post office end is more complicated than the residence end because it is common to all of the routes. You can't move the post office without redoing all of the routes it services. So, this has been tightened up to protect us from ourselves. /setlocal may still be used to reset the formal location for the local post office, but the user is not allowed to screw things up anymore. The location defined by /setlocal is the spot where postman stands in between routes. It should be near waypoint 0 for each and every route connected to the post office. /setlocal now verifies that the new position is close enough to each route start, or it won't allow the change. It will tell you why, however. It might be just one errant route causing a problem. It is also a diagnostic tool.

New command /showroute, both player and console. Usage is '/showroute <town> <address>' Use it to highlight waypoints on a route with redstone dust. The waypoints remain highlighted for a minute or so, and them are cleared.

New console monitor toggle cstalk. Useage: 'postal cstalk'. Use to monitor the regular chest seeking activity by the npc's Shows what was found, selected and why.

Fixed bug with the schedule promoter. When using /setroute to create a new route it will automatically push the schedule of that route forward so the edited changes may be immediately observed. /setroute is also used to create new routes. New routes are not live until the next Postal restart. The schedule promoter was not checking to see if the route was active before trying to promote it, causing a fault.

New command confirm mechanism affecting most of the commands, player and console. When invoking a command, the user is now presented with a message indicating specifically what it is going to do. And, the user is asked to enter a '/' to confirm. Postal does extensive command completion in an endeavor to minimize user typing. Just a few letters of a name may expand to a complete, 16 character name if Postal can determine uniqueness. This confirm mechanism makes it possible to take full advantage of Postal name completing.

Versiom 1.8

Fixed bug caused by undo'ing past waypoint 0 using /setroute. Attempting to undo past the first waypoint now automatically invokes the equivalent of '/setroute new'

Fixed minor bug when placing a redstone torch, new-mail indicator in front of a chest that already had one. Caused subsequent placements to unattended chest to litter area with unplaced torches.

Require Postal to be stopped before allowing post office or address deletion. No longer uses name completion for town or address names when deleting. Requires names to be typed out, completely and accurately, although not case sensitive.

Change 'postal expedite' command to straight 'expedite', both player and console.

New command 'plist <string match>' It lists player names matching a search string, case insensitive. It compliments existing commands /tlist and /alist to help players address and direct mail efficiently. Postal commands such as /addr, /att, /owneraddr and /ownerlocal that may use live player names, use the same name completion methods for the player parameter.

Existing commands, not implemented /owneraddr and /ownerlocal are now implemented. These are used to establish, or define player ownership of specific addresses or local post offices. These commands also remove ownership designation when 'none' is used as the player parameter. They also provide a general association of a specific player to specific address(es). For example, mail sent to an address to the attention of 'current resident' may still be associated with a player if the address belongs to a player. The player can be informed of the delivery, and there are economy options that will eventually come into play. Post offices can be private, or public enterprises.

/tlist and /alist expanded to include owner info along side town and address names.

Mail delivery status looks for address ownership if addressed mail is not sent to a specific player's attention (/att). Address owners are advised of 'current resident' mail delivered to their address.

Mail delivery format changed to indicate sender and recipient as author and title. Original character case retained. May be seen when mouse'd over in mailbox, without selecting or opening book. Mail formerly showed the original, signed-book title and author when NPC delivered.

A Postal Log is now maintained in the post office chests as well as residence chests. This aids in the identification of all official, Postal chests and reduces overall complexity.

Chest protection. Mailbox chests, identifiable as a chest with a postal log, may only be removed or destroyed by an op, player with 'postal.admin' permission, owner of the post office it is serviced by, or owner of the address it belongs to.

Chest access. Anyone may look in a mailbox chest and observe written books. The sender and recipient is plainly visible when mouse'd over, but nothing else.

The '/postal admin' command turns off Postal security listeners. It has been changed from a toggle on/off switch to a timer. When invoked, it quietly turns the security off for 60 seconds. This affects all users on the server.

Mail access: When sent to the attention of a player, any address: May only be accessed by that player, the sender, address owner, 'postal.inspector', or op/postal.admin. When sent to 'current resident' and the address is owned: May only be accessed by the address owner, the sender, 'postal.inspector', or op/postal.admin. When sent to 'current resident' and the address is not owned, or a Server address: May be accessed by anyone.

Standard permission nodes are implemented. A node for each command. Detailed in plugin.yml

Chest detection. When scanning for a chest to use at the post office, the postman will favor a chest with a sign near it with the name of the post local office on it, in brackets, case insensitive. Ie: [Bay_View] Formerly, the postman just looked for '[mail]' on it. The same change has been made on residential chests used as mailboxes. Make sure it is picked first by putting a sign near it ie: [301_Vine_Ave]. This will help further distinguish individual mailboxes in densely populated ares. As a reminder, signs by chests are completely optional.

Privileges of ownership. Besides access to to mail and basic control of the mailbox, ownership provides the ability to change and maintain existing routes to both address and post office owners with '/setroute'. Post office owners have access to the '/expedite' command for routes serviced by their post office. Address owners have access to '/gotoaddr' to be able to teleport to address(es) they own, possibly places where only a trusted courier is allowed. Of course these commands have their own permission nodes for the server administrator to do with as seen fit. But the contextual, owner-elevated permissions are in place.

Versiom 1.75

Fixed a minor command line bug and added docs for last new command /postal expedite'.

New softdepend on Vault for permissions. Will default to Bukkit permissions if no compatible permission manager found via Vault, or otherwise. Vault will serve to hook future economy support when implemented.

New permission node 'postal.admin' implemented. Equivalent to op for administrative use. Intended as temporary support for servers without ops. This is the start of the formal permissions system.

Close or lock route being edited if it is in a live editing session (/setroute). The edited route will be automatically expedited after the edit for observation.

Fix player teleporter to place player on ground rather than a block or two high.

Defined and implement precise postmen positions. /setlocal is where the local postman stands in between routes. Waypoint 0, the first waypoint on the way to an address, is the first step away from his standing position. The postmaster also uses this /setlocal location. He along with the postman uses it as the starting point for locating the post office chest. The postmaster finds the exact front of the chest to teleport to while the postman, as positioned by the route designer using /setlocal, is generally a few blocks away behind his desk or partition.

On the residence end; /setaddr, which is only used once during the route creation process, is synchronized with the last waypoint of /setroute. This is automatic. The purpose of /setaddr is to aid in the accurate naming of routes. Hopefully, it will be easier to remember that /setaddr must have its second parameter, the name of the address, correct and full. /setroute expects both of its parameters to exist, and will attempt to complete them to save typing. Both of these commands refer to the mailbox location. Ideally, this should be the front of the mailbox. The idea is to make it easy for residents to change their mailbox location while making it possible for server administrators separate route creation from route maintenance. Only the very end of a route needs to be modified to change a mailbox location and that is where /setroute starts when editing an existing route. While it is simple to redefine a mailbox location, the postman will still find it if it is within 10 blocks of the last waypoint.

Note: none of the above should affect existing routes. It does make refinement possible, however.

Changed stamped player names, both author and recipient, to retain original character case in mailed books. Name completion and searching is as it always was - not case sensitive in Postal commands. Effects both /addr and /att This completes the required infrastructure making it possible to link live player names to mailed books. Both sender and recipient. The next paragraph is an example of what is now possible. The main use will be one of player ownership of routes and local post offices and automatic control over who is allowed to view mail items sent to the attention of a specific player.

Mail progress announcements. Changed 'postal mtalk' from boolean on/off to 0/1/2. Setting '0' stops all progress announcements. Setting '1', the default, informs only the recipient that mail has been delivered to his/her attention, at the address it was sent to. Setting '2' broadcasts all mail movement.

Postman NPC checks for the occurrence of more than one postal log in a mailbox. If true, any redundant, correct logs are deleted. Incorrect logs are deleted. Route changes sometimes cause cross-linked mailboxes resulting in the postman, temporarily, servicing the wrong mailbox. The postman tried to correct the problem with a new postal log, but left the old one. The issue was easily corrected, but now automatic.

Versiom 1.71

Implemented 'speed' in config.yml to scale overall walkspeed of NPC's floating point 0.5 - 2.0

new command 'postal speed', both console and player to facilitate speed adjustment while server is up.

tweaked door navigation.

adjusted dynamic speed table

Versiom 1.72

new command 'postal expedite' both console and player. Allows op to push a specific route schedule forward.

console: 'postal talk' automatically turns quiet off

Deal with the unusual situation where a waypoint needed by the NPC is deleted while editing a route, live.

Remove dynamic waypoint attempted at residence. This is now obsolete since /setroute now synchronizes the last route waypoint with the residence location. Allowing them to be set independently makes it possible to create incorrect routing, difficult to diagnose. Any problem finding a residence mailbox is quickly solved using /setroute to re-set the last waypoint or two.

More work on dynamic speed control. Increased table resolution. Capped off slowest at 0.4 These values should correlate with standard Citizen2 speeds when 'postal speed' is set to 1.0 Actual NPC speed will be the average between the last waypoint segment and the current segment multiplied by the 'postal speed' scaling factor.

switch (distance) { case 0: speed_factor = 0.40f; break; case 1: speed_factor = 0.40f; break; case 2: speed_factor = 0.45f; break; case 3: speed_factor = 0.50f; break; case 4: speed_factor = 0.55f; break; case 5: speed_factor = 0.60f; break; case 6: speed_factor = 0.65f; break; case 7: speed_factor = 0.70f; break; case 8: speed_factor = 0.75f; break; case 9: speed_factor = 0.80f; break; case 10: speed_factor = 0.85f; break; case 11: speed_factor = 0.90f; break; case 12: speed_factor = 0.95f; break; default: speed_factor = 0.999f; }