Commit Graph

296 Commits

Author SHA1 Message Date
Byteflux 0b6c6c3725 Configurable tickNextTickListCap bypass for redstone 2015-04-18 14:53:02 -05:00
Byteflux 69337ef9ee Fix remove-unloaded.enderpearls option not being respected 2015-04-18 14:48:55 -05:00
Byteflux 8bd77dff5a Add FallingBlock source location API 2015-04-18 14:46:35 -05:00
Zach Brown 83fc0d21e7 Rebuild patches 2015-04-16 15:38:30 -05:00
Zach Brown e62cf21c8f Rebuild patches 2015-04-13 15:48:16 -05:00
Zach Brown 9a77c8ec95 Always tick falling blocks - Exclude from EAR 2015-04-10 18:07:59 -05:00
Zach Brown 232c6f8387 Patch rebuild 2015-04-08 22:47:58 -05:00
Zach Brown 0091c86379 Rebuild patch 2015-04-06 17:29:04 -05:00
Roman Alexander 5a49816bef How about we actually make that tickNextTickList cap configurable
*glances at Z*
2015-03-24 18:28:50 -05:00
Zach Brown 7cbda258cc Allow users to configure the tickNextTickList cap 2015-03-23 14:40:52 -05:00
Zach Brown d22f14e933 Rebuild patches 2015-03-23 14:23:25 -05:00
Zach Brown f1c39a0f62 Remove patch that kept the player on world changes 2015-03-20 21:39:37 -05:00
Zach Brown 6be3dc0d50 Rebuild Patches 2015-03-19 19:41:36 -05:00
Zach Brown ad93cd940f Rebuild patches 2015-03-09 16:02:50 -05:00
Zach Brown 78fa2af57a Update PaperSpigot to Minecraft 1.8.3 2015-03-08 05:17:04 -05:00
Zach Brown 9b05d00764 Check online mode before converting and renaming player data 2015-03-05 15:30:48 -06:00
Zach Brown e9ce2f6a10 Rebuild Patches 2015-02-28 00:43:40 -06:00
Zach Brown 9cb1661979 Manually bump the config version since git won't 2015-02-23 16:59:00 -06:00
Zach Brown d28dd3edbd PaperSpigot TNT Changes
Brought our multiple TNT change patches into a single patch and
configuraiton section.
You /will/ need to update your configs, sorry.

Adds additional configuration and features as well.
2015-02-23 16:36:47 -06:00
Zach Brown d871bd8d00 (Temporarily?) Disable Spigot's TE changes in favor of our own
Pending proper benchmarks and a potential rewrite, this appears to be a
good short-term solution
2015-02-22 02:38:45 -06:00
Zach Brown b2f0432d2e Rebuild patches 2015-02-22 00:43:08 -06:00
Zach Brown a1b0dffb19 Remove upstream-pulled patch 2015-02-14 20:16:45 -06:00
Zach 2ab5f7ada3 Make Enderman drop the block they're holding when they die 2015-02-13 14:50:25 -06:00
Bestle 70205b2b3a Despawn items outside EAR activation range 2015-02-13 14:34:02 -06:00
Zach f856100e66 Rebuild patches for upstream changes 2015-02-13 14:24:02 -06:00
Zach bf99f9b97d Rebuild a patch 2015-02-06 09:06:09 -06:00
Zach ddb3f1daa3 Rebuild a few patches 2015-02-04 15:31:08 -06:00
Zach 3d0e742fab Rebuild patches for upstream changes 2015-02-03 17:53:51 -06:00
Zach Brown b22a02ec14 Rebuild patches 2015-02-02 16:10:54 -06:00
Zach 965e98f6e2 Rebuild patches 2015-01-31 00:00:35 -06:00
Zach Brown 51d8a94236 Add configurable top of nether void damage patch 2015-01-29 15:42:25 -06:00
Zach Brown bd4f1bb35b Remove the broken teleport passenger vehicle with player patch 2015-01-29 15:42:00 -06:00
Zach Brown 3c6c540486 Fix patch usernames and emails 2015-01-29 15:25:50 -06:00
Zach Brown e4f8f0793e Remove patch that was pulled upstream 2015-01-25 02:08:21 -06:00
Zach Brown 6776612919 Fix certain mobs crashing the server from MobSpawners 2015-01-18 12:43:42 -06:00
Zach Brown c6b30147f0 Rebuild patches 2015-01-13 15:20:59 -06:00
Zach Brown 2405e7c169 Rebuild patches for upstream changes 2015-01-12 11:21:32 -06:00
Zach Brown b7ea61e56b Fix parent warning in PaperSpigot-API... and rebuild other patches 2015-01-11 01:10:11 -06:00
Zach Brown 788b857ddd Rebuild patch for upstream update 2015-01-08 21:53:39 -06:00
Zach Brown 6c95b61fd5 Rebuild patches for upstream changes 2015-01-06 22:13:40 -06:00
Zach Brown 6ae735e2e3 Rebuild our patches for upstream changes 2015-01-04 20:30:07 -06:00
Howaner 3fba354aa5 Fix kick messages 2015-01-03 18:26:19 -06:00
Zach Brown 8f0aaf3411 Fix block placement in the invisible players patch
Thanks Mojang...
2015-01-03 17:35:46 -06:00
Aikar cf5eecc1e1 Prevent tile entity and entity based crashes 2014-12-22 15:13:48 -06:00
gsand 5ed916c971 [00:50:57] <Clippy> wait, actually I need to do additional testing, just
remove it
[00:51:09] <Clippy> ;(
[00:51:17] * Clippy opens mcp
[00:51:22] <Z750> ._.
2014-12-21 00:53:33 -06:00
gsand 7ead09d18c [00:32:19] <Clippy> I goofed, forgive meeeee! ;____; 2014-12-21 00:48:14 -06:00
gsand 52b0f26ce8 Allow the first spawn location "fuzziness" to be configured 2014-12-20 19:22:56 -06:00
Aikar 5460c17f8a Do not allow negative count itemstacks (infinite itemstacks)
Should work around quite a few issues and this
'feature' is relatively worthless anyway
2014-12-19 16:37:05 -06:00
Zach Brown ed8119ad4d Rebuild our patches for upstream changes 2014-12-18 17:35:10 -06:00
Zach Brown eb71958f5c Remove unnecessary patch 2014-12-14 16:26:48 -06:00
Zach Brown 11b53f20cf Rebuild our patches for upstream changes 2014-12-14 16:25:11 -06:00
Zach Brown b532dbb6ce Rebuild patches for upstream changes 2014-12-12 22:52:49 -06:00
Zach Brown b07fd9dae8 Rebuild our patches for upstream changes 2014-12-10 22:26:46 -06:00
Zach Brown 0004ccb0f6 Missed a comment in chest sound patch 2014-12-07 22:57:26 -06:00
Zach Brown 2c4fcfbf9f Improve chest sound handling patch 2014-12-07 14:52:19 -06:00
Zach Brown 6618287b5c Update our patches for upstream changes 2014-12-07 13:29:55 -06:00
Byteflux 62b112be14 Use the servers built in UUID map for player lookups 2014-12-07 13:29:07 -06:00
Zach Brown ff120ea055 Add a constructor for setting both the header and the footer to PacketPlayOutPlayerListHeaderFooter 2014-12-05 22:47:37 -06:00
Zach Brown 4b79813cf3 Clean up some of our patches
Remove unused torch placement config option
Remove ambiguity in invisible players patch
2014-12-05 22:28:08 -06:00
Zach Brown 137dfd0b4f Update our patches for Spigot changes 2014-12-05 22:25:23 -06:00
Zach Brown 1d8cdd7bf5 Rebuild our patches 2014-12-03 18:15:12 -06:00
Zach Brown 9d7fbd476f Update our patches for the latest changes
/ver is no longer useless! Meaninful version tracking yay!
2014-12-02 00:45:25 -06:00
Aikar 2a326d9446 Add TNT source location API 2014-11-30 22:58:51 -06:00
Zach Brown 4e29dfb788 Improvements to teleport with passenger vehicle 2014-11-30 22:35:33 -06:00
Zach Brown 718ed221b4 Fix an improperly updated patch file 2014-11-30 20:09:09 -06:00
Byteflux 991a3fa2b6 Allow specified ItemStacks to retain their invalid data 2014-11-30 19:00:00 -06:00
Zach Brown 99e3002266 Regen our patches 2014-11-30 16:21:39 -06:00
Byteflux 5826b0b98a Configurable TNT water movement 2014-11-29 23:15:12 -08:00
Zach Brown 169193fee6 Regen Patches for CraftBukkit updates 2014-11-29 13:23:36 -06:00
Zach Brown 28718b4c25 Update 2014-11-29 02:13:12 -06:00
Zach Brown 1c49ff69f4 Update Spigot's Patches round 2?
The hell happened here.
:
Fix Build 2339ac14a8e
Regen the patches 89d3fcbdfaf

This new system breaks a lot :(
2014-11-28 18:06:26 -06:00
Zach Brown b547153ec6 Fix a mistake in Teleport w/ passenger/vehicle patch
Along with restoring authorship to the original writer
2014-11-28 16:30:20 -06:00
Zach Brown de86706b70 Update PaperSpigot to Minecraft 1.8 2014-11-28 15:01:21 -06:00
Aikar b697c4d506 Add Async Chunk Load API 2014-11-28 14:19:09 -06:00
Zach Brown a5069ae74d Random space is most certainly not best space 2014-11-28 14:19:09 -06:00
Zach Brown edf1a20dcd Replace non-picky rails with non-picky torches
Issues with rails colliding with hitboxes on fences
non-picky torches can be placed on stained glass on 1.8+ clients only (client-side limitation)
2014-11-28 14:19:09 -06:00
Zach Brown b6b3d84943 Minor configuration code formatting 2014-11-28 14:19:09 -06:00
Zach Brown 20973ffd0f Make certain game mechanics configurable
Boat drops and rail placement at this time
2014-11-28 14:19:09 -06:00
Aikar 25c5c2cb16 Implement performance improvements from the EMC-CraftBukkit fork
See the individual patch files for more details
2014-11-28 14:19:09 -06:00
Byteflux c615aa649b Fix PaperSpigot entity removal in unloaded chunks 2014-11-28 14:19:09 -06:00
Zach Brown 4555490e4b Remove 1.8 blocks/items patches
For those interested in these features, you can continue to use these patches in your own builds or use a plugin, such as Carbon, to add them
2014-11-28 14:19:09 -06:00
Byteflux 2a92d3a54a Update with more Spigot binary patches 2014-11-28 14:19:09 -06:00
Byteflux 9ef798aa90 Backwards compatible PacketPlayOutEntityTeleport constructor 2014-11-28 14:19:09 -06:00
Zach Brown 0326076342 Redo protocol warning message 2014-11-28 14:19:08 -06:00
Byteflux 1a6b7c9d79 Update with latest patches from upstream SpigotMC 2014-11-28 14:19:08 -06:00
Zach Brown 39893976b4 Re-add SportBukkit visual offset fix
Looks to be entirely unrelated to the visual issues being seen

Revert "Remove SportBukkit visual offset fix, may cause issues with certain cannons"

This reverts commit 1156e17179492f530ced9a91a2db0ee32f6bf0e9.
2014-11-28 14:19:08 -06:00
Zach Brown 09d8de02ad Fix slime block sounds 2014-11-28 14:19:08 -06:00
Zach Brown 6916d318a4 Remove SportBukkit visual offset fix, may cause issues with certain cannons 2014-11-28 14:19:08 -06:00
Zach Brown b543551365 Don't register standing or wall banner, and daylight detector inverted
Cause client crashes, likely because they arent ticking yet
2014-11-28 14:19:08 -06:00
Zach Brown c1d8afce9b Don't allow 1.8 clients to join...
they crash when encountering 1.8 blocks/items/etc
2014-11-28 14:19:08 -06:00
Zach Brown 798eced7fc Add SportBukkit fix for visually offset entities 2014-11-28 14:19:08 -06:00
Zach Brown e60db6a306 Add a few 1.8 features/blocks/items/whatever 2014-11-28 14:19:08 -06:00
Zach Brown 15b553bed3 Update from upstream SpigotMC
Fix double plants having the incorrect top half SpigotMC/Spigot@377b69d787
Fix boats thinking that they were always on land for 1.8 clients SpigotMC/Spigot@4a083f819e
Correct the action used in updateGamemode. this isn't used by the ser... SpigotMC/Spigot@face904a9a
Allow the updated version of protocollib to be enabled SpigotMC/Spigot@4614a615cc
2014-11-28 14:19:07 -06:00
Minecrell 85eb25863a Fix ProtocolLib compatibility 2014-11-28 14:19:07 -06:00
Zach Brown 72142b3f8d Rebuild patches after merge 2014-11-28 14:19:07 -06:00
Zach Brown 1827f089f2 Remove accidentally committed patch file 2014-11-28 14:19:07 -06:00
Dmck2b 9c68e2eb9f Work around for blocking rail duplication 2014-11-28 14:19:07 -06:00
Zach Brown a245892c3c Remove brewing stands from the TE optimizations as well
Possible conflict with CB wall time patches?
2014-11-28 14:19:07 -06:00
Zach Brown 14ac97ad60 Configurable strength and weakness effect modifiers 2014-11-28 14:19:06 -06:00
Zach Brown ab9af61cbf Show PaperSpigot in protocol warning 2014-09-01 14:41:47 -05:00
Zach Brown 495c399ff4 Add Spigot's 1.8 protocol patch - Update from upstream
Add support for Minecraft 1.8.x SpigotMC/Spigot@b15ae91145
Skip loading of ProtocolLib SpigotMC/Spigot@508ec8f573
Apply the block fix to block change packets SpigotMC/Spigot@b9349e416d
Blacklist Orebfuscator as well. SpigotMC/Spigot@b2ba105762
2014-09-01 14:11:02 -05:00
Zach Brown 1f10a97d0d Temporary fix for broken furnaces on certain servers 2014-08-30 14:25:03 -05:00
Zach Brown 134a563b5f Remove specific entities that fly through unloaded chunks 2014-08-29 20:38:35 -05:00
Zach Brown c777f40058 Update from upstream SpigotMC
Add unbreakable API to item meta SpigotMC/Spigot@b1af008222
Configure how often EntityHangings calculate if they should die. SpigotMC/Spigot@ac6e1fc32d
Copy ItemStacks in DataWatcher to prevent ConcurrentModificationExcep… SpigotMC/Spigot@2af28ffbd1
Add the spigot.yml into the timings paste SpigotMC/Spigot@d61f38bd58

Note: This commit moves the entity-hanging tick into Spigot's spigot.yml and out of our paper.yml
2014-08-25 16:33:18 -05:00
Aikar c803f4dde1 Implement optimized Tile Entity ticking 2014-08-24 21:20:12 -05:00
Zach Brown f7bb4ad8a3 Update from upstream SpigotMC
Included Commits:
Update IRC channel to irc.spi.gt SpigotMC/Spigot@a791c555e7
Remove inv close patch for now SpigotMC/Spigot@a3abb3bea9
Limit TNT Detonations per tick SpigotMC/Spigot@8f9c601aed
Use sane default config values SpigotMC/Spigot@1cbbb9b62e

These commits were not included as they were quickly reverted:
Only close if we are actually placing a block SpigotMC/Spigot@ea0b1b2d67
Revert for the above SpigotMC/Spigot@28faa0bd20
Add isUnbreakable and setUnbreakable to ItemMeta. Also fixes a bug wh... SpigotMC/Spigot@32e6d74a5f
Revert for the above SpigotMC/Spigot@4b5a26b11c
2014-08-24 02:40:45 -05:00
Byteflux 825584d02f Remove invalid mob spawner tile entities 2014-08-19 14:53:38 -05:00
Zach Brown 33cf47c75b Remove Metrics
People seem fairly mixed on it, and we just don't need 'em
2014-08-19 14:27:57 -05:00
Zach Brown 5342c92587 Show 'PaperSpigot' in client crashes, server lists, and Mojang Stats 2014-08-19 14:26:33 -05:00
Zach Brown 5b4bc3081a Update from upstream SpigotMC
Upstream merge (we must go deeper) SpigotMC/Spigot@1e7bc383c3
2014-08-18 10:43:17 -05:00
Zach Brown f88a3838c0 Don't tick enderchests either 2014-08-17 17:15:18 -05:00
Zach Brown a4647a8a71 Update from upstream SpigotMC
Fix empty `ench` tags being wiped by the meta system SpigotMC/Spigot@cc9a1a417f
Add Hunger Config Values SpigotMC/Spigot@2cd515e224
Make debug logging togglable SpigotMC/Spigot@d31b1d616f

Spigot has implemented a system of hunger exhaustion similar to ours, as such a lot of config values have been moved there.
Our exhaustion patch has been trimmed and only a few values for exhaustion remain in paper.yml, the others now sit in spigot.yml
2014-08-17 16:47:36 -05:00
Zach Brown 57ec3d64be Temporarily remove optimized tile entity code
Potential CME's and issues with pistons, we'll work through this on a separate branch and re-add it when appropriate
2014-08-13 16:50:24 -05:00
Zach Brown 31d35e76ac Update TileEntity optimizations (again again) ...
hopefully less often now
2014-08-11 23:07:39 -05:00
Aikar 169c67aaa0 Update with latest TileEntity optimization changes 2014-08-11 21:57:37 -05:00
Zach Brown 0b8246dbb7 Move chest sound handling out of the tick loop...
and set them not to tick
2014-08-11 19:36:08 -05:00
Aikar 2542c10a85 Optimize TileEntity Ticking
Re-organizes the servers TileEntity Tick List to be bucketed by type.

This allows the server to skip buckets of Tile Entities that is known to
not have any tick function (half of them), skipping time spent iterating
them and checking if they are valid and in a loaded chunk. In other words,
a lot of "meta" time wasted on tile entities that would never do anything anyways.

This change also adds control into the interval of every TileEntity, giving
the server owner control on how fast a TileEntity ticks, slowing it down if they must
(Such as chest), to improve performance.
2014-08-11 16:05:29 -05:00
Zach Brown 174855f19d Update from upstream SpigotMC
Part revert to fix (0) in place of file name SpigotMC/Spigot@2fbc1f2704
Fix the last PR SpigotMC/Spigot@b2199df3f7
2014-08-11 15:49:06 -05:00
Zach Brown 552e1c5afd Remove 0026-Don-t-tick-chests, we'll be slightly changing our implementation 2014-08-11 15:45:57 -05:00
Zach Brown 3727c00bdd Update from upstream SpigotMC
Abridged: Force close player inventories when they move/interact
This prevents modified clients from using the 2x2 crafting square as permanent storage

Force Close Inventory On Move SpigotMC/Spigot@db78a70788
Only close once, if needed SpigotMC/Spigot@b652de8e7f
Move to interact event closing SpigotMC/Spigot@b5378850d3
Disregard arm swings - racy SpigotMC/Spigot@f86634e280
2014-08-10 00:21:18 -05:00
Suddenly 0eb966c2a9 Treat this.c as an element, not an extra object 2014-08-09 19:25:24 -05:00
Zach Brown ce389c461f Remove link to CB PR as its causing a lot of unneeded spam 2014-08-09 18:12:13 -05:00
drXor d95ac585d4 Configurable hanging tick
EntityHangings make a somewhat extensive calculation ever 100 ticks to check if they should die (obstruction etc). This patch makes this magic number configurable, allowing server owners to pick how often they want EntityHangings (e.g. ItemFrames) to tick. Higher values may provide a performance boost for Hanging-heavy servers.
2014-08-09 17:28:09 -05:00
Jedediah Smith 9fdc6b05f9 Add player affects spawning API
Test plugin here: https://github.com/Zbob750/AffectsSpawning
I believe this originated with SportBukkit, slightly modified for our (and potentially upstream's) usage
2014-08-08 23:27:47 -05:00
Zach Brown 8e365012c0 Update from upstream SpigotMC
Upstream Merge (Bukkit + CraftBukkit) SpigotMC/Spigot@da20125dab
Plug WorldMap Memory Leak SpigotMC/Spigot@da20125dab
2014-08-08 17:15:42 -05:00
Jedediah Smith 86f789adb4 Center TNT sample grid points
Makes TNT calculations more accurate, among other things
2014-08-07 23:14:51 -05:00
Zach Brown 2253110c8e Revert "Fix TNT directional bias"
Restores our earlier and supposedly working TNT directional bias fix
We will contiune to work through the specifics of the the issue in a separate branch
This reverts commit 2449df7cdf.
2014-08-07 14:18:11 -05:00
Jedediah Smith 2449df7cdf Fix TNT directional bias
Shift the sample points so they are centered on the entity, eliminating the directional bias of the explosion force
2014-08-06 18:23:28 -05:00
Zach Brown b657ae7456 Cleanup our patches 2014-08-05 18:45:22 -05:00
Zach Brown 557a65eb3c Update CraftBukkit 2014-08-04 15:11:38 -05:00
Byteflux 8c8c10cefa Configurable speed for water flowing over lava
Higher values = Slower water movement = better performance
http://hastebin.com/axuzaralas.vhdl
2014-08-03 21:23:45 -05:00
Dmck2b f054884c39 Don't log debug information 2014-08-03 21:05:27 -05:00
Byteflux aeead930a1 Better nerf for TNT Cannons ...
Drops the item
Applies to all Falling Block Entities
2014-07-30 03:35:32 -05:00
Zach Brown 7d802ab493 Temporarily remove the better water lighting updates patch while we ensure there are no performance or implementation issues
Specifically around non-water fluids
2014-07-30 02:44:36 -05:00
Iceee 37d9d3a11e Apply the better water lighting updates patch to receding water as well 2014-07-28 02:48:03 -05:00
Zach Brown 94071f2c32 Remove configurable AI target selector delay patch 2014-07-27 21:50:06 -05:00
Zach Brown 398f6983bd Update from upstream SpigotMC
Make "moved too quickly" limit configurable SpigotMC/Spigot@99a0a640e8
Undeprecate Player#updateInventory()V SpigotMC/Spigot@5c32e1cb48
Fetch complete profile for skull items, similarly to TileEntitySkull. SpigotMC/Spigot@33d758773e
Move getDouble into the Spigot Configuration patch SpigotMC/Spigot@b5dd202af1
Add missing particle to particle API SpigotMC/Spigot@273c64bbad
Log debug levels to the log file. SpigotMC/Spigot@348eae75f4
Fix PlayerItemDamageEvent (we already had this #badupstreamrelations) SpigotMC/Spigot@e207ea23cd
Move hopper patch to top for PR180 SpigotMC/Spigot@abb775108d
Don't be so spammy on Java 6 SpigotMC/Spigot@5abb82b1ca
Apply NBTReadLimiter to more things SpigotMC/Spigot@408944e9f5
2014-07-27 14:20:28 -05:00
Zach Brown a7f1e7efd5 Fix PlayerItemDamageEvent
Hopefully a temporary patch as I've already submitted it to SpigotMC
But I kinda wanna use the event now so... Here we are
2014-07-24 22:29:15 -05:00
Zach Brown 7dd671146d Update from upstream SpigotMC
Don't use Bukkit.getLogger as the CraftServer isn't loaded at this point SpigotMC/Spigot@5c48793ecf
Modify the block placement limit to allow for the odd random packet or two SpigotMC/Spigot@7768676ae2
2014-07-24 22:21:57 -05:00
Iceee c768de882c Fix lag caused by water lighting updates
Before: http://aikar.co/timings.php?url=7842564
After: http://aikar.co/timings.php?url=7842536
2014-07-23 10:54:24 -05:00
Zach Brown f07313c43f Fix random position generator's tendency to move north-west
Fixes the issue of mobs constantly going North-West in pens and other areas
backported from 1.8
2014-07-22 22:04:05 -05:00
Zach Brown 5cfd799cff Fix incorrect API version on startup 2014-07-22 20:16:50 -05:00
Zach Brown 4aef5602d5 Update from upstream SpigotMC
Remove defensive copy in EAR SpigotMC/Spigot@f1ba1f6c07
Make "moved wrongly limit" configurable SpigotMC/Spigot@f7ab380e16
Fix null Tile Entity Worlds (we already had this) SpigotMC/Spigot@b271cdbfa0
Fix slow tab complete for some commands SpigotMC/Spigot@f3b7952c73
Only suggest ops to deop and remove whitelist add case entirely SpigotMC/Spigot@0e1fcfbe70
Allow tab complete for /whitelist add SpigotMC/Spigot@27f8aa22bd
2014-07-22 15:25:09 -05:00
Zach Brown 62371c5dc0 Fix minecraft-server dependencies in poms 2014-07-22 14:50:06 -05:00
Zach Brown a23a026713 Support all projectiles in the invisible players patch
also cleans up the code a bit
2014-07-21 18:52:19 -05:00
Zach Brown 7b0c576798 Restructure PaperSpigot as a new set of modules
Allows us much greater control over the Spigot portion of the code
and makes us more "proper"
Credit to @Dmck2b for originally passing the idea along a while back
2014-07-21 15:46:54 -05:00