Zach Brown
2c501cabe6
More involved workaround for vehicle event cancellation
2016-04-22 17:01:28 -05:00
Zach Brown
1ed12cfca6
Fix EntityDismountEvent and VehicleExitEvent cancellation
...
Perhaps "workaround" would be the better term
2016-04-22 15:45:22 -05:00
Riley Park
a1de1619c6
Arrow pickup rule API
2016-04-22 00:07:16 -07:00
Zach Brown
ebff483051
EntityHealthRegain isFastRegen API
2016-04-22 01:48:49 -05:00
Zach Brown
c385ec89b5
Merge pull request #212 from willies952002/feature/permReload
...
Also Reload Plugin-Defined Permissions
2016-04-22 00:58:32 -05:00
Zach Brown
08cfefeb50
Update upstream CB and rebuild
2016-04-20 11:58:49 -05:00
willies952002
9762849407
Also Reload Plugin Defined Permissions
...
Closes https://github.com/PaperMC/Paper/issues/210
2016-04-19 17:29:33 -04:00
Zach Brown
2197b74f38
Re-add PlayerLocaleChangeEvent implementation
...
Apparently this was missed at some point, likely during the 1.9 update"
2016-04-19 14:24:55 -05:00
Zach Brown
dea3485028
Remove non-zero BlockIterator block and Loading chunks earlier in player TP patches
...
Allowing only non-zero BlockIterators breaks an API contract explicitly allowing them
(*eyeroll*)
And loading chunks earlier in the TP patch did not resolve the original issue, and now
that it is resolved, shouldn't actually provide any tangible benefits
2016-04-18 09:40:58 -05:00
Aikar
d306bc67aa
Prevent Fire from loading chunks
...
This causes the nether to spam unload/reload chunks, plus overall
bad behavior.
2016-04-17 17:28:16 -04:00
Zach Brown
f44524249f
Don't check velocities on Projectiles
...
Closes GH-217
2016-04-17 13:32:19 -05:00
Aikar
06e483502f
Configurable RCON IP address to bind to
2016-04-16 00:46:01 -04:00
Aikar
d46f2997c2
Allow capping number of attempts at spawning mobs
...
By default, this logic would loop endlessly trying to fill the world
with entities until it hits the worlds spawn.
This patch will cap the # of attempts to so that the tick does not spend
extra long time on mob spawning
2016-04-15 22:35:03 -04:00
Aikar
75eb8243f7
Ensure we actually removed entity from chunk before decrementing counts
...
If a plugin hacks into NMS and triggers entity removal, it could
result in an entity being attempted to remove from the chunk twice.
The 2nd pass will return false, as it did not find the entity in the list.
We should not touch entity counts if the entity was not removed, to avoid
going negative.
2016-04-15 21:31:12 -04:00
Zach Brown
d42782457e
Check the block water mobs spawn in, not the block under
2016-04-15 15:49:39 -05:00
Aikar
82c08cfbda
Fix Bugs with Spigot Mob Spawn Logic - Fixes #138
...
Spigot drastically altered vanilla mob spawn logic and caused a few issues.
1) Used only spawnable chunks vs entire world for entity counting, resulting in ignoring
other entities in the world, and causing the world to go over its intended limit.
Specially with servers using smaller mob spawn ranges than view distance, as well as affects spawning API
2) Spigot was using 16x16 division instead of vanilla 17x17 division.
Issues got worse in 1.9 due to more chunks being loaded due to 1.9 changes, that fall out
of the monster spawn radius.
This patch returns mob counting to use all loaded chunks, and 17x17 division.
2016-04-14 21:03:57 -04:00
Zach Brown
19eb02cab0
Revert "Only check for async callers, do not remove potentially used variables"
...
This reverts commit 271e7c5cb4
.
2016-04-14 19:26:57 -05:00
Zach Brown
9f0a7201a1
Water mobs should only spawn in the water
...
Closes GH-199
2016-04-14 17:49:11 -05:00
Zach Brown
271e7c5cb4
Only check for async callers, do not remove potentially used variables
...
Potentially resolves GH-138
2016-04-14 16:48:52 -05:00
Zach Brown
92d86e55ed
Merge pull request #205 from kashike/feature/handshake
...
Add handshake event
2016-04-13 23:10:34 -05:00
Riley Park
30175bcf9d
Add handshake event to allow plugins to handle client handshaking logic themselves
2016-04-13 20:23:07 -07:00
Zach Brown
567224a84c
Update bungeecord chat API graduations
2016-04-13 22:18:46 -05:00
Zach Brown
0472876995
Re-add Configurable Player Collision
...
Nothing to see here, move along
2016-04-13 02:11:40 -04:00
Jedediah Smith
1f9d65d57c
Fix some players not being kicked on shutdown
...
Closes GH-8
2016-04-13 16:02:59 -05:00
Jedediah Smith
4588a80cdc
Update SB's affectsSpawning API to use filters
...
Closes GH-169
2016-04-13 15:57:34 -05:00
Aikar
1fc2eb982f
Configurable Player Collision - Resolves #161
2016-04-13 02:11:40 -04:00
Aikar
2e00b8d691
Don't tick Skulls - unused code - Fixes #202
2016-04-13 00:32:05 -04:00
Aikar
bfdc936100
Remove unused World Tile Entity List
...
Massive hit to performance and it is completely unnecessary.
2016-04-13 00:27:38 -04:00
Aikar
e0b057c30f
Update PlayerConnection for all teleportation of players
...
Previous fix for SPIGOT-1903 only applied to world changes, but many other
cases of players been teleporting can cause that same bug. So call it any time
setPosition is called to ensure we never falsely trigger "moved too quickly"
And this commit may be considered evil to some people.
2016-04-12 23:26:42 -04:00
Zach Brown
14f6bee0a1
Update upstream
2016-04-12 11:31:54 -05:00
Aikar
87deb42c1c
update MCUtil.cmpFromMessage to use proper JSON
2016-04-11 01:06:28 -04:00
Aikar
b602d093ec
SPIGOT-1903: Update PlayerConnection on world change - Fixes #120
2016-04-10 22:36:56 -04:00
Zach Brown
348469459d
Ugly workaround for SPIGOT-1915 & GH-114
...
Closes GH-114
2016-04-10 03:24:54 -05:00
Zach Brown
88d2d15bb4
Apply the Ensure inv drag is in bounds patch properly
...
Closes GH-174
2016-04-09 21:33:29 -05:00
Zach Brown
5cbb907ff1
Can't expect others to follow formatting if I don't
2016-04-09 13:54:47 -05:00
Zach Brown
b605f1f95f
Backport a memory cleanup change from 16w14a
2016-04-09 13:48:06 -05:00
Zach Brown
c7bdf516da
Update upstreams and rebuild
2016-04-08 17:24:26 -05:00
Zach Brown
d6b1996ab3
Simplify vanilla scoreboard nickname coloring patch
...
Closes GH-195
2016-04-07 17:31:06 -05:00
Zach Brown
b9f596b8d2
Add basic support for using vanilla style, world-based, scoreboard name coloring
...
Closes GH-188
2016-04-06 01:10:26 -05:00
Aikar
1223fcc8bb
Include Redstone Torches in the redstone physics event optimization
2016-04-05 23:20:46 -04:00
Aikar
a161d480b4
Remove Debug checks from DataBits
...
These are super hot and causing noticeable hits
Before: http://i.imgur.com/nQsMzAE.png
After: http://i.imgur.com/nJ46crB.png
2016-04-05 21:55:07 -04:00
Aikar
48ba10bc77
Re-add fastutil map to Chunk map. Amaranth confirmed its faster by 3x
2016-04-05 20:43:11 -04:00
Aikar
0726de949b
Fix Nether/End world unloading spawn chunks - Fixes #92
2016-04-05 19:53:30 -04:00
Zach Brown
3506f09ca7
Update upstream and rebuild
2016-04-04 09:53:03 -05:00
Aikar
56de8ba1a4
fix keep spawn loaded config
2016-04-03 23:08:13 -04:00
Aikar
f718f4dbd7
Fix errorneous call of EntityDismountEvent
2016-04-03 19:11:25 -04:00
Aikar
3c0a1bcc25
Fix Cancelling BlockPlaceEvent triggering physics
2016-04-03 17:49:31 -04:00
Aikar
57b915a706
Configurable Keep Spawn Loaded range per world
...
This lets you disable it for some worlds and lower it for others.
2016-04-03 17:34:15 -04:00
Aikar
746d46f6bb
Configurable Grass Spread Tick Rate
...
Raise this value to make grass spread slower. Set to 0 to turn off grass spreading all together.
2016-04-03 16:29:39 -04:00
Riley Park
7fa8b081c4
Fix reducedDebugInfo not initialized on client
2016-04-03 05:08:46 -05:00
Zach Brown
d7c909b5cb
Merge branch 'feature/unknown-use' of https://github.com/kashike/Paper into kashike-feature/unknown-use
2016-04-03 04:52:36 -05:00
Zach Brown
9fe95d850e
Mark chunk as active if ChunkUnloadEvent is cancelled
...
Potentially related to GH-169
2016-04-03 02:02:00 -05:00
Zach Brown
b6e39d3f5c
We don't need to go fast anymore
2016-04-03 02:00:35 -05:00
Riley Park
67ec2cd957
Add PlayerUseUnknownEntityEvent
2016-04-02 18:10:38 -07:00
Aikar
9fcb513a2e
Update upstream
2016-04-01 22:08:40 -04:00
DemonWav
3125accf7d
<~Z750> sex it up for me
2016-04-01 01:54:53 -05:00
Zach Brown
d89da5a2ad
gottagofast
2016-04-01 01:33:12 -05:00
Aikar
e5d103dd3f
improve implementation of chunk access patch
2016-04-01 00:35:44 -04:00
Aikar
0706403fa6
Fix pom to be compile instead of provided for fastutil
2016-04-01 00:35:21 -04:00
Aikar
1ac9958e8b
Move fastutil from a patch file to a library, and improve EAR
2016-04-01 00:18:18 -04:00
Aikar
a4d29fef6a
Remove Long2ObjectHashMap for Chunks
...
Speaking with Amaranth, his point of his implementation was that most
of the lookups are on loaded chunks, so that code is optimized for that case.
While Long2Object should be faster as a general purpose map,
for MC uses, Amaranth's version should be faster. Will try to benchmark
the 2 at some future.
2016-03-31 21:45:30 -04:00
Aikar
809051d050
Fix isEdgeOfChunk check for MCUtils
2016-03-31 21:43:37 -04:00
Aikar
775169422d
Update upstream for memory leak patch
2016-03-31 21:43:21 -04:00
Aikar
baf8797e8f
Do not load chunks for light checks
...
Should only happen for blocks on the edge that uses neighbors light level
(certain blocks). In that case, there will be 3-4 other neighbors to get a light level from.
2016-03-31 19:29:06 -04:00
Aikar
8b77debaf3
Fix Massive Memory Leak
...
Pathfinder objects are storing references to ChunkCache's, and never cleaning up.
These ChunkCache's then leak other entity objects. Those entity objects then have leaks to their
own chunk cache. A recursive problem....
Clean up the ChunkCache reference after it is done being used.
2016-03-31 19:08:27 -04:00
Zach Brown
a01a25ff57
Missed diff, unused config entry, general cleanup
...
cc GH-170
2016-03-30 22:55:46 -05:00
Aikar
4e89e1f0c7
add null check to getEntity API
2016-03-30 21:56:07 -04:00
Aikar
9fc220ea02
Use paperclip.properties so CI can work
2016-03-30 21:27:13 -04:00
Aikar
f16d938497
Paper 1.9.2 Update
2016-03-30 20:50:23 -04:00
Aikar
fb94038453
Use FastUtil Long/Int HashMap's
...
For DataWatcher, swap out plain Integer key HashMap for a Int2ObjectOpenHashMap
For ChunkProviderServer, swap out CB's custom LongHashMap with Long2ObjectOpenHashMap
These collections are super fast as seen
http://java-performance.info/hashmap-overview-jdk-fastutil-goldman-sachs-hppc-koloboke-trove-january-2015/
2016-03-30 02:10:27 -04:00
Zach Brown
50811b1ca5
Skip dead entities in getEntity(UUID) API
2016-03-30 09:41:12 -05:00
DemonWav
443a949bac
Add getEntity by UUID API
2016-03-30 01:20:36 -05:00
Zach Brown
3a4b55aa5d
Put this patch in the patches folder, so it's actually used
2016-03-29 13:56:19 -05:00
Antony Riley
4b5902de92
Sanitise RegionFileCache and make cache size configurable.
2016-03-29 08:27:14 +03:00
Fabse
2a3cfd15eb
Add a workaround for bugged Minecart drop names
2016-03-28 00:52:36 +02:00
Aikar
88ef71592b
Remove, not invalidate, Metadata on reload
...
Objects loaded over different class loaders are not the same. Nasty dragons lie here.
Also clean up the previous patch to no longer butcher imports.
2016-03-28 22:43:05 -04:00
Aikar
553319f958
Prevent Waterflow BlockFromToEvent from loading chunks
...
Many protection plugins would unintentionally trigger chunk loads
by calling .getToBlock() on an unloaded chunk, killing performance.
Simply skip the event call. as CraftBukkit blocks changing the block
of unloaded chunks anyways.
This keeps behavior consistent, vs inconsistent flowing based on plugin triggered loads.
2016-03-28 22:04:43 -04:00
Aikar
2b55c92307
EntityPathfindEvent
...
Fires when an Entity decides to start moving to a location.
This is not the same as a move event. This only fires when an entity chooses
to start moving to a location, and allows cancelling that pathfind.
Additionally, only get is supported for now. Unsure if changing target location
is safe to do.
2016-03-28 21:24:45 -04:00
Aikar
0623a754d8
Add MCUtils helper
...
This will be used by my next commit. But trying to get the build going
since CI blew up
2016-03-28 21:01:42 -04:00
Aikar
1180a5dd87
And AddTo is a different event than RemoveFrom
2016-03-28 20:58:42 -04:00
Aikar
dab09d46bc
Actually fire those events
2016-03-28 20:57:15 -04:00
Aikar
9148dbbf4a
Configurable Chunk Inhabited Timer
...
Vanilla stores how long a chunk has been active on a server, and dynamically scales some
aspects of vanilla gameplay to this factor.
For people who want all chunks to be treated equally, you can disable the timer.
2016-03-28 20:47:46 -04:00
Aikar
a661a1737f
Entity AddTo/RemoveFrom World Events
...
These events will give plugins a reliable way to track every entity that is added
or removed from a world, so that one may always ensure they are in a desired state.
2016-03-28 20:33:10 -04:00
Aikar
2e4f0cb627
Option to disable BlockPhysicsEvent for Redstone
...
Not sure of any reason a plugin would need to act on a Physics event
for redstone. There is a BlockRedstoneEvent that plugins can also use
for accessing redstone activity.
Defaulting this to false will provide substantial performance improvement
by saving millions of event calls on redstone heavy servers.
2016-03-28 19:57:13 -04:00
Zach Brown
51c738e817
Don't set spawn world in PlayerInitialSpawnEvent
...
Fixes GH-85 and GH-157
2016-03-28 13:00:44 -05:00
Zach Brown
010e7652b3
Fix player tab list API
2016-03-28 10:41:04 -05:00
Zach Brown
587aaefcc4
Update upstream B/CB/Spigot and rebuild
2016-03-27 20:48:50 -05:00
Zach Brown
4634458d72
Check async spawn chunk check, remove unused variables, GH-159
2016-03-27 20:31:23 -05:00
DemonWav
4e5569e6cd
Add same infi-loop fix to other identical block of code I missed earlier
2016-03-27 05:42:02 -05:00
Zach Brown
8ec0ce4b89
Merge pull request #153 from kashike/feature/slot
...
Access items by EquipmentSlot
2016-03-27 02:24:12 -05:00
Zach Brown
1109dc8d70
Update upstream and rebuild
2016-03-27 01:38:58 -05:00
Riley Park
d880c248bf
Access items by EquipmentSlot
2016-03-26 22:23:42 -07:00
DemonWav
92aa154184
Prevent possible infinite loop in BlockPosition iterator
2016-03-26 21:38:36 -05:00
Gabscap
3ed9c2917e
Load chunk before player teleport - Fixes #147
2016-03-26 18:45:15 +01:00
Zach Brown
32ac0a9a4b
Pull in ArrowPickupItemEvent and legacy dataconverter fix from SportBukkit
2016-03-26 03:38:02 -05:00
Zach Brown
95adcf7863
Merge upstream changes and rebuild patches
2016-03-25 18:21:38 -05:00
Byteflux
5532826f02
Entity#getOrigin() should return a cloned Location
2016-03-25 09:39:37 -07:00
Byteflux
fc3f55ddc8
Always try to load entity origin location from new NBT tag
2016-03-25 09:32:09 -07:00
Byteflux
bcc957e753
Add Entity Origin API
...
This replaces the TNT and Falling Block Source Location API with a more
general purpose API that works with all entities.
2016-03-25 02:02:35 -07:00
Zach Brown
eb5c119269
Re-add TileEntity removal list, fix build
2016-03-25 02:50:56 -05:00
Byteflux
cadf65501b
Fix timings config being removed by another patch
2016-03-24 23:46:53 -07:00
Byteflux
dd60ba4869
Add Lighting Queue
...
The lighting queue spreads out the processing of light updates across
multiple ticks based on how much free time the server has left at the end
of the tick.
2016-03-24 23:38:38 -07:00
Byteflux
fc2341a996
Relocate Timings v2 patch
2016-03-24 21:59:37 -07:00
Byteflux
d242dca587
Fix decompile errors in mc-dev imports patch
2016-03-24 19:57:01 -07:00
Gabscap
8fa4818d1b
rebuild
2016-03-25 02:23:23 +01:00
Zach Brown
926ba9a3bb
Update upstream B/CB
...
Remove patch 0099: Pulled into upstream CraftBukkit
2016-03-24 01:39:29 -05:00
Aikar
6f4bf57aa0
remove blockstate cache patch
2016-03-23 21:19:45 -04:00
Zach Brown
d1afdd87f4
Clean up title and tab list patch
...
Remember kids, the Ballmer peak is hard to hit https://xkcd.com/323/
Finally fixes #126 and #94 (I tested, it does, please, really, promise)
2016-03-23 01:05:09 -05:00
Aikar
7ab893447a
Optimize isValidLocation for inlining - Resolves #123
2016-03-22 23:44:46 -04:00
Aikar
97e083b9b0
Setting the cache is important to access a cache
2016-03-22 23:44:35 -04:00
Zach Brown
fb05841421
How does typing work?
...
Closes GH-125
2016-03-22 14:55:42 -05:00
Zach Brown
71d9f402d5
Configurable spawn chances for skeleton horses
...
Closes feature request GH-111
2016-03-22 12:07:16 -05:00
Aikar
95b9e1e6f2
Optimize Chunk Access
...
getting a loaded chunk is one of the most hottest pieces of code in the game.
Often, getChunkAt is called for the same chunk multiple times in a row, often
from getType();
Optimize this look up by using a Last Access cache.
2016-03-22 01:46:32 -04:00
Aikar
87ebc85c3c
Don't teleport dead entities
...
Had some issue with this in past, and this is the vanilla logic.
Potentially an old CB change that's no longer needed.
2016-03-22 00:56:09 -04:00
Aikar
bd75ff8b5b
Use a Shared Random for Entities
...
Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created.
2016-03-22 00:36:20 -04:00
Gabscap
100cd60c65
Add "Waving banner workaround"
2016-03-21 15:34:09 +01:00
Aikar
d24502015a
Make Chunk IO Thread Base count configurable
2016-03-21 23:51:58 -04:00
Aikar
37afe5e662
Fix skull cache case bug
...
missing cache hits on players with uppercase letters in name
2016-03-21 23:38:24 -04:00
Aikar
8abad348b6
Cache BlockState for Blocks
...
Improve performance for many plugins that call .getState() multiple
times for things like signs that have to "build" sign data.
2016-03-21 23:38:19 -04:00
Aikar
ae95189944
Another attempt at unload queue, including EAR improvements.
...
should be fully working now as I pretty much fell back to existing
methods so anything touching the unloadQueue set should behave correctly.
And maintained NMS Reflection safe change too
2016-03-21 22:51:14 -04:00
Aikar
9300f163fd
fix rebuild patches and rebuild current patches
2016-03-21 20:46:54 -04:00
Daniel Ennis
4916cd2551
Merge pull request #91 from willies952002/feature/permReload
...
Allow Reloading of Custom Permissions - resolves #49
2016-03-21 20:24:27 -04:00
Zach Brown
044d463764
Use singleton in Village class to work around null issue that evades
2016-03-21 10:28:45 -05:00
Zach Brown
d4ba72a83f
Support offline mode from the whitelist command
...
Closes GH-79
2016-03-21 00:53:32 -05:00
Zach Brown
71f8b70f10
Also handle original end case that spawned the issue
...
Final commit for GH-96 if there's any justine in the world
2016-03-20 23:15:37 -05:00
Zach Brown
c0d5c00a34
Merge pull request #118 from Techcable/fix/spigot-title-compatibility
...
Fix backwards compatibility with spigot title api
2016-03-20 22:53:57 -05:00
Techcable
acad27e9e7
Fix backwards compatibility with spigot title api
...
I shouldn't have assumed their api was anything other but a thin (and incomplete) wrapper over the packets.
Fixes #94
2016-03-20 20:45:13 -07:00
Zach Brown
614aee73bc
Only mark player as invulnerable if they're actually changing worlds
...
Fixes GH-96
2016-03-20 22:38:31 -05:00
Zach Brown
84b79f3f41
Only mark player as invulnerable if they're going to the end
...
cc GH-96
2016-03-20 19:44:49 -05:00
Daniel Ennis
1098519c4d
Catch Async PlayerChunkMap operations - Fixes #113
2016-03-20 15:24:24 -04:00
Aikar
6acff7d61d
Disable Chunk Unload Queue Patch for now
2016-03-20 00:53:34 -04:00
Aikar
0b26bbd451
handle NaN health/absorb values and repair bad data
...
Undoes damage from Damage API bugs
2016-03-20 00:35:02 -04:00
Aikar
db0f31134f
Improve chunk unload queue to maintain some previous expectations
...
While the previous logic was logically correct, some CB API's before
would request a chunk without removing it from the unload queue.
While this is logically wrong, some plugins seem to be causing unload issues.
This change will make anything using that one API that use to not remove from
queue, no longer remove from queue.
Hopefully other activities on the server will touch the chunk if it REALLY is in use.
2016-03-20 00:13:20 -04:00
Zach Brown
a424df3323
Update upstream and rebuild patches
2016-03-19 20:20:25 -05:00
Zach Brown
85451753d1
Remove patch pulled upstream and rebuild patches
2016-03-19 17:52:09 -05:00
William
13587006dc
Allow Reloading of Custom Permissions
...
Add the ability to reload the custom permissions file by doing "/reload permissions"
Implements Feature Request: https://github.com/PaperMC/Paper/issues/49
2016-03-19 16:19:00 -04:00
Riley Park
0a9d183bd4
Set health before death event
2016-03-19 10:12:30 -07:00
Riley Park
6d01d7f9ea
Custom replacement for eaten items
2016-03-19 09:57:19 -07:00
Aikar
d1c4507c9c
Fixes #95 - Vanilla bug with Villages
2016-03-19 15:21:39 -04:00
Zach Brown
67a3d9cb57
Merge pull request #101 from DemonWav/master
...
Revert Spigot changes to blocking damage code
/me glances at imports
/me will fix later
2016-03-19 12:25:22 -05:00
DemonWav
4e7056af65
Revert Spigot changes to blocking code, fix issue where entities cannot die
2016-03-19 12:20:27 -05:00
Aikar
7efe31a331
Fix chunk unload issues - Resolves #97
2016-03-19 11:29:46 -04:00
Aikar
bb82a8a401
forgot to rebuild after last light change, another fix
2016-03-19 10:57:22 -04:00
Aikar
e59f9ab2e6
fix light level check on monsters
2016-03-19 10:45:28 -04:00
Aikar
d72abafa8f
Optimized Light Level Comparisons
...
Use an optimized method to test if a block position meets a desired light level.
This method benefits from returning as soon as the desired light level matches.
Also Optimize Grass more
2016-03-18 23:55:31 -04:00
Zach Brown
eaccfc64b2
Re-add comment to navigation patch
2016-03-18 21:41:50 -05:00
Zach Brown
3727b119f2
Update upstream and rebuild patches
2016-03-18 21:37:58 -05:00
Zach Brown
659c43c6f3
Fix furnace cook time bug
2016-03-18 21:32:31 -05:00
Zach Brown
c7fec9299a
Make spawner nerfed mobs float AI toggleable
...
closes GH-57
2016-03-18 21:10:20 -05:00
Zach Brown
29dccccac4
Force potion effect application in BeaconEffectEvent
2016-03-18 20:45:22 -05:00