Commit Graph

319 Commits

Author SHA1 Message Date
Kristian S. Stangeland
240df9dc7a Complicated feature - auto-compilation of structure modifier.
Using ASM we can automatically generate a faster structure modifier
that doesn't use reflection to read or write public fields.

Note that because the compilation itself is a bit slow (10 ms++), 
we have to create a background compilation thread. Future work:
 * Disable the thread if it's idle after 60 seconds.
 * Don't recreate the thread when the server reloads.
2012-09-27 03:24:34 +02:00
Kristian S. Stangeland
90970d1b9b Ensure that server operators are informed about incompatibility. 2012-09-26 06:00:26 +02:00
Kristian S. Stangeland
9efb85e7c3 Handle 1.3 correctly. 2012-09-26 04:06:10 +02:00
Kristian S. Stangeland
22f2f45d1e Added support for a hook method that can intercept map chunk packets. 2012-09-26 03:31:59 +02:00
Kristian S. Stangeland
e04a78fc04 Added yet another player hook method.
This method works by injecting into the NetServerHandler object
of a player. That way, we can also intercept map chunk packets.
2012-09-26 02:26:44 +02:00
Kristian S. Stangeland
9e402a3ab4 Added a "canInject" property in the injectors. 2012-09-26 02:01:44 +02:00
Kristian S. Stangeland
d8b300e3a6 Try to get the local player object if possible. 2012-09-25 23:10:08 +02:00
Kristian S. Stangeland
e0c03186c3 Add support for Java serialization of PacketEvent. It might be useful. 2012-09-25 23:09:02 +02:00
Kristian S. Stangeland
7f69c0204d Added a bit of commentary. 2012-09-25 17:13:23 +02:00
Kristian S. Stangeland
8839c03948 Fixed a number of simple bugs discovered by FindBugs. 2012-09-20 18:35:45 +02:00
Kristian S. Stangeland
3899704774 Merge pull request #1 from mbax/mbax
TagAPI is compatible as of version 1.7
2012-09-19 11:00:18 -07:00
mbax
9ad6dcb41c TagAPI is compatible as of version 1.7 2012-09-19 13:47:38 -04:00
Kristian S. Stangeland
54242debaa Made structure modifiers more overridable. 2012-09-19 19:25:11 +02:00
Kristian S. Stangeland
10e5508c8a Updating JavaDoc to include sync/async information. 2012-09-19 03:49:49 +02:00
Kristian S. Stangeland
f232823820 Merge branch 'master' into gh-pages 2012-09-19 03:49:04 +02:00
Kristian S. Stangeland
bc7b395889 Adding desperately needed async/sync documentation. 2012-09-19 03:48:46 +02:00
Kristian S. Stangeland
a76e5835fd Regenerated JavaDoc. 2012-09-18 18:41:24 +02:00
Kristian S. Stangeland
cdcb7ce656 Merge branch 'master' into gh-pages 2012-09-18 18:40:48 +02:00
Kristian S. Stangeland
77376a2fa3 Make the Bukkit unwrapper use the actual return type. 2012-09-18 18:37:11 +02:00
Kristian S. Stangeland
99b9dc90ae Adding the new javadoc. 2012-09-18 17:27:59 +02:00
Kristian S. Stangeland
cd9fa1cdf6 Fixing documentation. 2012-09-18 17:20:48 +02:00
Kristian S. Stangeland
ad6fbae5d6 Incrementing to version 1.1.0 2012-09-18 17:17:20 +02:00
Kristian S. Stangeland
8f9939f65c Added the ability to refresh the apperance of entities and players. 2012-09-18 16:30:46 +02:00
Kristian S. Stangeland
3783328cb1 Forgot to convert the types to NMS. 2012-09-18 02:16:11 +02:00
Kristian S. Stangeland
140edabb4e Fixed packet constructor and tons of other bugs. 2012-09-18 02:04:26 +02:00
Kristian S. Stangeland
ffbaed283a Improved the API slightly. 2012-09-18 00:01:02 +02:00
Kristian S. Stangeland
e5beca4ea5 And the PacketConstructor class itself. 2012-09-17 22:59:41 +02:00
Kristian S. Stangeland
fb15ee1b22 Adding packet constructors.
This should simplify a lot of code.
2012-09-17 22:59:20 +02:00
Kristian S. Stangeland
7a60c5aac7 Made the server registry static. 2012-09-17 16:40:08 +02:00
Kristian S. Stangeland
f74a6e9832 Made the packet ids static and thus usable in a switch statement. 2012-09-17 16:38:26 +02:00
Kristian S. Stangeland
381484fc5d Adding a simple packet registry. 2012-09-17 16:21:15 +02:00
Kristian S. Stangeland
455ffca63f Adding a entity structure modifier. 2012-09-17 01:34:10 +02:00
Kristian S. Stangeland
286e1159e9 Made certain classes private. No need to expose them to the API. 2012-09-16 03:18:58 +02:00
Kristian S. Stangeland
62d9afd1d1 Readme spelling. 2012-09-16 02:43:31 +02:00
Kristian S. Stangeland
59a3ba82b8 Changed formating again. Added different levels. 2012-09-16 02:27:33 +02:00
Kristian S. Stangeland
adb57e2bf3 Fixed readme formating somewhat. 2012-09-16 02:22:34 +02:00
Kristian S. Stangeland
798d734ba9 Adding readme. 2012-09-16 02:17:38 +02:00
Kristian S. Stangeland
b299886b62 Fixed the old server listener. 2012-09-16 02:07:18 +02:00
Kristian S. Stangeland
913ff7eed1 Removed pointless imports. 2012-09-16 01:41:08 +02:00
Kristian S. Stangeland
d04a666bc5 Readded a lighter version of network object injector.
This version only supports CraftBukkit 1.3.0 and later.
2012-09-15 23:07:14 +02:00
Kristian S. Stangeland
bdfbfa47c8 The NetworkObjectInjector is too unstable, so we'll remove it. 2012-09-15 20:10:35 +02:00
Kristian S. Stangeland
57c720681a Made the object injector somewhat workable. 2012-09-15 20:09:34 +02:00
Kristian S. Stangeland
7e28aefb75 Moved the instance generator to a separate package.
In addition, added a new injection method. It's still not
finalized, and may get removed in the end.
2012-09-15 19:12:59 +02:00
Kristian S. Stangeland
aa2dcefa0d Added two different player injection hooks, for compatibility with
TagAPI.
2012-09-15 13:47:14 +02:00
Kristian S. Stangeland
616213924b Refactored the SortedCopyOnWriteArray out into a separate package.
Made it extend the java.util.Collection interface.
2012-09-15 13:07:44 +02:00
Kristian S. Stangeland
fffa3881dd We won't try to fix TagAPI. Instead, we'll warn the users. 2012-09-15 02:39:38 +02:00
Kristian S. Stangeland
85f7360109 Refactored the hacked array list out of the player injector. 2012-09-15 01:58:13 +02:00
Kristian S. Stangeland
f2effab907 Improved documentation in a few places. 2012-09-15 01:04:08 +02:00
Kristian S. Stangeland
4505e31965 Prevented concurrency issues.
The SortedCopyOnWriteArray didn't wrap the iterator() in a
unmodifiable iterator. In addition, ConcurrentListenerMultimap
incorrectly used the iterator to remove objects from this Array. 

Added a "remove(T value)" method that is thread-safe.
2012-09-14 22:33:15 +02:00
Kristian S. Stangeland
88dcf0cb32 Improved API and performance.
API changes:
 * The PacketListener now uses a "ListeningWhitelist" class 
   to report which packet ids it wishes to listen in on for
   either the client or the server. This makes it possible to 
   use your plugin class as the listener more easily.
   
 * Added a priority system similar to Bukkit events.
   
Performance changes:
 * Create and maintain a separate list of listeners for each packet
   ID. This uses slightly more memory, but is far more efficient. 
   Especially in light of the priority system.

In addition, the listener lists are (hopefully) concurrent. They're
optimized for read-access, however. Adding or removing a listener
is a O(n) operation.
2012-09-14 19:12:08 +02:00