From 5e36547aa2a03c32c60d05662e77d4444ba2e4c9 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Tue, 9 Oct 2012 00:07:40 +0200 Subject: [PATCH 01/16] Give automatically created worker threads sensible names. --- .../protocol/async/AsyncListenerHandler.java | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java index 87c09e26..0859738c 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java @@ -9,9 +9,11 @@ import java.util.logging.Level; import org.bukkit.plugin.Plugin; +import com.comphenix.protocol.events.ListeningWhitelist; import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketListener; +import com.google.common.base.Joiner; /** * Represents a handler for an asynchronous event. @@ -206,7 +208,47 @@ public class AsyncListenerHandler { if (cancelled) throw new IllegalStateException("Cannot start a worker when the listener is closing."); - filterManager.scheduleAsyncTask(listener.getPlugin(), getListenerLoop()); + final AsyncRunnable listenerLoop = getListenerLoop(); + + filterManager.scheduleAsyncTask(listener.getPlugin(), new Runnable() { + @Override + public void run() { + String workerName = getFriendlyWorkerName(listenerLoop.getID()); + + // Add the friendly worker name + Thread.currentThread().setName(workerName); + listenerLoop.run(); + } + }); + } + + /** + * Create a friendly thread name using the following convention: + *

+ *     Protocol Worker {id} - {plugin} - [recv: {packets}, send: {packets}] + *

+ * @param id - the worker ID. + * @return A friendly thread name. + */ + public String getFriendlyWorkerName(int id) { + return String.format("Protocol Worker #%s - %s - [recv: %s, send: %s]", + id, + PacketAdapter.getPluginName(listener), + fromWhitelist(listener.getReceivingWhitelist()), + fromWhitelist(listener.getSendingWhitelist()) + ); + } + + /** + * Convert the given whitelist to a comma-separated list of packet IDs. + * @param whitelist - the whitelist. + * @return A comma separated list of packet IDs in the whitelist, or the emtpy string. + */ + private String fromWhitelist(ListeningWhitelist whitelist) { + if (whitelist == null) + return ""; + else + return Joiner.on(", ").join(whitelist.getWhitelist()); } /** From 2b90acf53e8eeb49903e32e4d18e68096b4a0bf6 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Tue, 9 Oct 2012 16:48:55 +0200 Subject: [PATCH 02/16] Ensure that non-CraftBukkit item stacks are correctly converted. --- .../protocol/events/PacketContainer.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketContainer.java b/ProtocolLib/src/com/comphenix/protocol/events/PacketContainer.java index 34bd0a49..ce949ecf 100644 --- a/ProtocolLib/src/com/comphenix/protocol/events/PacketContainer.java +++ b/ProtocolLib/src/com/comphenix/protocol/events/PacketContainer.java @@ -145,7 +145,7 @@ public class PacketContainer implements Serializable { // Convert from and to the Bukkit wrapper return structureModifier.withType(net.minecraft.server.ItemStack.class, new EquivalentConverter() { public Object getGeneric(ItemStack specific) { - return ((CraftItemStack) specific).getHandle(); + return toStackNMS(specific); } @Override @@ -175,7 +175,7 @@ public class PacketContainer implements Serializable { // Unwrap every item for (int i = 0; i < result.length; i++) { - result[i] = ((CraftItemStack) specific[i]).getHandle(); + result[i] = toStackNMS(specific[i]); } return result; } @@ -199,6 +199,20 @@ public class PacketContainer implements Serializable { }); } + /** + * Convert an item stack to the NMS equivalent. + * @param stack - Bukkit stack to convert. + * @return A bukkit stack. + */ + private net.minecraft.server.ItemStack toStackNMS(ItemStack stack) { + // We must be prepared for an object that simply implements ItemStcak + if (stack instanceof CraftItemStack) { + return ((CraftItemStack) stack).getHandle(); + } else { + return (new CraftItemStack(stack)).getHandle(); + } + } + /** * Retrieves a read/write structure for the world type enum. *

From cecab6a169c0d1c94c93cda9a0f3d7a538efb4d0 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Tue, 9 Oct 2012 17:41:37 +0200 Subject: [PATCH 03/16] Unwrap collections in the packet constructor. --- .../protocol/injector/PacketConstructor.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java index 135e7eb2..73d6c160 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java @@ -3,6 +3,7 @@ package com.comphenix.protocol.injector; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -11,6 +12,7 @@ import net.minecraft.server.Packet; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.reflect.FieldAccessException; +import com.comphenix.protocol.reflect.instances.DefaultInstances; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -178,9 +180,15 @@ public class PacketConstructor { private static Map, Method> cache = new ConcurrentHashMap, Method>(); + @SuppressWarnings("unchecked") @Override public Object unwrapItem(Object wrappedObject) { + // Special case + if (wrappedObject instanceof Collection) { + return handleCollection((Collection) wrappedObject); + } + Class currentClass = wrappedObject.getClass(); Method cachedMethod = initializeCache(currentClass); @@ -202,6 +210,24 @@ public class PacketConstructor { } } + private Object handleCollection(Collection wrappedObject) { + + @SuppressWarnings("unchecked") + Collection copy = DefaultInstances.DEFAULT.getDefault(wrappedObject.getClass()); + + if (copy != null) { + // Unwrap every element + for (Object element : wrappedObject) { + copy.add(unwrapItem(element)); + } + return copy; + + } else { + // Impossible + return null; + } + } + private Method initializeCache(Class type) { // See if we're already determined this From f8bd36bf3cf0ce5b7bffb1922a0cc406d258e786 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Tue, 9 Oct 2012 22:37:33 +0200 Subject: [PATCH 04/16] Added the ability to enumerate IntEnums. --- .../src/com/comphenix/protocol/reflect/IntEnum.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/IntEnum.java b/ProtocolLib/src/com/comphenix/protocol/reflect/IntEnum.java index a367dc9a..cb5cfb44 100644 --- a/ProtocolLib/src/com/comphenix/protocol/reflect/IntEnum.java +++ b/ProtocolLib/src/com/comphenix/protocol/reflect/IntEnum.java @@ -1,6 +1,7 @@ package com.comphenix.protocol.reflect; import java.lang.reflect.Field; +import java.util.Set; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; @@ -76,4 +77,12 @@ public class IntEnum { public String getDeclaredName(Integer id) { return members.get(id); } + + /** + * Retrieve the ID of every registered member. + * @return Enumeration of every value. + */ + public Set values() { + return members.keySet(); + } } From 6053b9e64bbad2f3f1ba23b698f2359c3dd53256 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 02:41:34 +0200 Subject: [PATCH 05/16] Added the ability to determine if any client or server packet is valid. Also, added a warning when a plugin attempts to listen for a packet ID that doesn't exist in the current Minecraft version. --- .../src/com/comphenix/protocol/Packets.java | 42 ++++++++++ .../protocol/injector/MinecraftRegistry.java | 79 ++++++++++++++++++- .../injector/PacketFilterManager.java | 72 +++++++++++++++-- .../protocol/injector/PacketInjector.java | 4 + 4 files changed, 188 insertions(+), 9 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/Packets.java b/ProtocolLib/src/com/comphenix/protocol/Packets.java index 587d0fdd..6532150f 100644 --- a/ProtocolLib/src/com/comphenix/protocol/Packets.java +++ b/ProtocolLib/src/com/comphenix/protocol/Packets.java @@ -1,5 +1,9 @@ package com.comphenix.protocol; +import java.util.Set; + +import com.comphenix.protocol.injector.PacketFilterManager; +import com.comphenix.protocol.reflect.FieldAccessException; import com.comphenix.protocol.reflect.IntEnum; /** @@ -92,6 +96,25 @@ public final class Packets { return INSTANCE; } + /** + * Determine if the given packet is a valid server packet in the current version of Minecraft. + * @param packetID - the packet to test. + * @return TRUE if this packet is supported, FALSE otherwise. + * @throws FieldAccessException If we're unable to retrieve the server packet data from Minecraft. + */ + public static boolean isSupported(int packetID) throws FieldAccessException { + return PacketFilterManager.getServerPackets().contains(packetID); + } + + /** + * Retrieve every client packet the current version of Minecraft is aware of. + * @return Every supported server packet. + * @throws FieldAccessException If we're unable to retrieve the server packet data from Minecraft. + */ + public static Set getSupported() throws FieldAccessException { + return PacketFilterManager.getServerPackets(); + } + // We only allow a single instance of this class private Server() { super(); @@ -146,6 +169,25 @@ public final class Packets { return INSTANCE; } + /** + * Determine if the given packet is a valid client packet in the current version of Minecraft. + * @param packetID - the packet to test. + * @return TRUE if this packet is supported, FALSE otherwise. + * @throws FieldAccessException If we're unable to retrieve the client packet data from Minecraft. + */ + public static boolean isSupported(int packetID) throws FieldAccessException { + return PacketFilterManager.getClientPackets().contains(packetID); + } + + /** + * Retrieve every client packet the current version of Minecraft is aware of. + * @return Every supported client packet. + * @throws FieldAccessException If we're unable to retrieve the client packet data from Minecraft. + */ + public static Set getSupported() throws FieldAccessException { + return PacketFilterManager.getClientPackets(); + } + // Like above private Client() { super(); diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/MinecraftRegistry.java b/ProtocolLib/src/com/comphenix/protocol/injector/MinecraftRegistry.java index 2e372e1e..34930aee 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/MinecraftRegistry.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/MinecraftRegistry.java @@ -19,13 +19,17 @@ package com.comphenix.protocol.injector; import java.lang.reflect.Field; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Set; import net.minecraft.server.Packet; +import com.comphenix.protocol.reflect.FieldAccessException; import com.comphenix.protocol.reflect.FieldUtils; import com.comphenix.protocol.reflect.FuzzyReflection; import com.google.common.base.Objects; +import com.google.common.collect.ImmutableSet; /** * Static registries in Minecraft. @@ -35,9 +39,16 @@ import com.google.common.base.Objects; @SuppressWarnings("rawtypes") class MinecraftRegistry { + // Fuzzy reflection + private static FuzzyReflection packetRegistry; + // The packet class to packet ID translator private static Map packetToID; + // Whether or not certain packets are sent by the client or the server + private static Set serverPackets; + private static Set clientPackets; + // New proxy values private static Map overwrittenPackets = new HashMap(); @@ -49,7 +60,7 @@ class MinecraftRegistry { // Initialize it, if we haven't already if (packetToID == null) { try { - Field packetsField = FuzzyReflection.fromClass(Packet.class, true).getFieldByType("packetsField", Map.class); + Field packetsField = getPacketRegistry().getFieldByType("packetsField", Map.class); packetToID = (Map) FieldUtils.readStaticField(packetsField, true); } catch (IllegalAccessException e) { @@ -60,14 +71,80 @@ class MinecraftRegistry { return packetToID; } + /** + * Retrieve the cached fuzzy reflection instance allowing access to the packet registry. + * @return Reflected packet registry. + */ + private static FuzzyReflection getPacketRegistry() { + if (packetRegistry == null) + packetRegistry = FuzzyReflection.fromClass(Packet.class, true); + return packetRegistry; + } + + /** + * Retrieve the injected proxy classes handlig each packet ID. + * @return Injected classes. + */ public static Map getOverwrittenPackets() { return overwrittenPackets; } + /** + * Retrieve the vanilla classes handling each packet ID. + * @return Vanilla classes. + */ public static Map getPreviousPackets() { return previousValues; } + /** + * Retrieve every known and supported server packet. + * @return An immutable set of every known server packet. + * @throws FieldAccessException If we're unable to retrieve the server packet data from Minecraft. + */ + public static Set getServerPackets() throws FieldAccessException { + initializeSets(); + return serverPackets; + } + + /** + * Retrieve every known and supported client packet. + * @return An immutable set of every known client packet. + * @throws FieldAccessException If we're unable to retrieve the client packet data from Minecraft. + */ + public static Set getClientPackets() throws FieldAccessException { + initializeSets(); + return clientPackets; + } + + @SuppressWarnings("unchecked") + private static void initializeSets() throws FieldAccessException { + if (serverPackets == null || clientPackets == null) { + List sets = getPacketRegistry().getFieldListByType(Set.class); + + try { + if (sets.size() > 1) { + serverPackets = (Set) FieldUtils.readStaticField(sets.get(0), true); + clientPackets = (Set) FieldUtils.readStaticField(sets.get(1), true); + + // Impossible + if (serverPackets == null || clientPackets == null) + throw new FieldAccessException("Packet sets are in an illegal state."); + + // NEVER allow callers to modify the underlying sets + serverPackets = ImmutableSet.copyOf(serverPackets); + clientPackets = ImmutableSet.copyOf(clientPackets); + + } else { + throw new FieldAccessException("Cannot retrieve packet client/server sets."); + } + + } catch (IllegalAccessException e) { + throw new FieldAccessException("Cannot access field.", e); + } + } + } + /** * Retrieves the correct packet class from a given packet ID. * @param packetID - the packet ID. diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java index 7a1c612d..fc9db4e0 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java @@ -107,6 +107,11 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok // The async packet handler private AsyncFilterManager asyncFilterManager; + // Valid server and client packets + private Set serverPackets; + private Set clientPackets; + + /** * Only create instances of this class if protocol lib is disabled. */ @@ -123,6 +128,15 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok this.playerInjection = new PlayerInjectionHandler(classLoader, logger, this, server); this.packetInjector = new PacketInjector(classLoader, this, playerInjection); this.asyncFilterManager = new AsyncFilterManager(logger, server.getScheduler(), this); + + // Attempt to load the list of server and client packets + try { + this.serverPackets = MinecraftRegistry.getServerPackets(); + this.clientPackets = MinecraftRegistry.getClientPackets(); + } catch (FieldAccessException e) { + logger.log(Level.WARNING, "Cannot load server and client packet list.", e); + } + } catch (IllegalAccessException e) { logger.log(Level.SEVERE, "Unable to initialize packet injector.", e); } @@ -180,7 +194,7 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok if (hasSending) { verifyWhitelist(listener, sending); sendingListeners.addListener(listener, sending); - enablePacketFilters(ConnectionSide.SERVER_SIDE, sending.getWhitelist()); + enablePacketFilters(listener, ConnectionSide.SERVER_SIDE, sending.getWhitelist()); // Make sure this is possible playerInjection.checkListener(listener); @@ -188,7 +202,7 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok if (hasReceiving) { verifyWhitelist(listener, receiving); recievedListeners.addListener(listener, receiving); - enablePacketFilters(ConnectionSide.CLIENT_SIDE, receiving.getWhitelist()); + enablePacketFilters(listener, ConnectionSide.CLIENT_SIDE, receiving.getWhitelist()); } // Inform our injected hooks @@ -304,18 +318,39 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok *

* Note that all packets are disabled by default. * + * @param listener - the listener that requested to enable these filters. * @param side - which side the event will arrive from. * @param packets - the packet id(s). */ - private void enablePacketFilters(ConnectionSide side, Iterable packets) { + private void enablePacketFilters(PacketListener listener, ConnectionSide side, Iterable packets) { if (side == null) throw new IllegalArgumentException("side cannot be NULL."); + + // Note the difference between unsupported and valid. + // Every packet ID between and including 0 - 255 is valid, but only a subset is supported. for (int packetID : packets) { - if (side.isForServer()) - playerInjection.addPacketHandler(packetID); - if (side.isForClient() && packetInjector != null) - packetInjector.addPacketHandler(packetID); + // Only register server packets that are actually supported by Minecraft + if (side.isForServer()) { + if (serverPackets != null && serverPackets.contains(packetID)) + playerInjection.addPacketHandler(packetID); + else + logger.warning(String.format( + "[%s] Unsupported server packet ID in current Minecraft version: %s", + PacketAdapter.getPluginName(listener), packetID + )); + } + + // As above, only for client packets + if (side.isForClient() && packetInjector != null) { + if (clientPackets != null && clientPackets.contains(packetID)) + packetInjector.addPacketHandler(packetID); + else + logger.warning(String.format( + "[%s] Unsupported client packet ID in current Minecraft version: %s", + PacketAdapter.getPluginName(listener), packetID + )); + } } } @@ -560,7 +595,25 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok e.printStackTrace(); } } - + + /** + * Retrieve every known and supported server packet. + * @return An immutable set of every known server packet. + * @throws FieldAccessException If we're unable to retrieve the server packet data from Minecraft. + */ + public static Set getServerPackets() throws FieldAccessException { + return MinecraftRegistry.getServerPackets(); + } + + /** + * Retrieve every known and supported client packet. + * @return An immutable set of every known client packet. + * @throws FieldAccessException If we're unable to retrieve the client packet data from Minecraft. + */ + public static Set getClientPackets() throws FieldAccessException { + return MinecraftRegistry.getClientPackets(); + } + /** * Retrieves the current plugin class loader. * @return Class loader. @@ -574,6 +627,9 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok return hasClosed; } + /** + * Called when ProtocolLib is closing. + */ public void close() { // Guard if (hasClosed) diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketInjector.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketInjector.java index 9e042885..ee1e98de 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketInjector.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketInjector.java @@ -117,6 +117,10 @@ class PacketInjector { Map registry = MinecraftRegistry.getPacketToID(); Class old = MinecraftRegistry.getPacketClassFromID(packetID); + // If this packet is not known + if (old == null) { + throw new IllegalStateException("Packet ID " + packetID + " is not a valid packet ID in this version."); + } // Check for previous injections if (!old.getName().startsWith("net.minecraft.")) { throw new IllegalStateException("Packet " + packetID + " has already been injected."); From eb328c41e8b745bbb26e9cee3b831d6a753384ee Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 02:48:24 +0200 Subject: [PATCH 06/16] Increase the player listener to MONITOR. --- .../comphenix/protocol/injector/PacketFilterManager.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java index fc9db4e0..3df0c483 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java @@ -475,18 +475,17 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok try { manager.registerEvents(new Listener() { - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerJoin(PlayerJoinEvent event) { playerInjection.injectPlayer(event.getPlayer()); } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerQuit(PlayerQuitEvent event) { playerInjection.uninjectPlayer(event.getPlayer()); } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPluginDisabled(PluginDisableEvent event) { // Clean up in case the plugin forgets if (event.getPlugin() != plugin) { @@ -522,7 +521,7 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok Class eventPriority = loader.loadClass("org.bukkit.event.Event$Priority"); // Get the priority - Object priorityNormal = Enum.valueOf(eventPriority, "Highest"); + Object priorityNormal = Enum.valueOf(eventPriority, "Monitor"); // Get event types Object playerJoinType = Enum.valueOf(eventTypes, "PLAYER_JOIN"); From 20792aa09ab16ab63f1695ca40d14e511f00bdf8 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 02:50:27 +0200 Subject: [PATCH 07/16] Reorder injection hooks. We put the network manager hook to the bottom as it's the least likely version to be compatible with other plugins. --- .../protocol/injector/PacketFilterManager.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java index 3df0c483..14e2d620 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java @@ -61,13 +61,6 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok * @author Kristian */ public enum PlayerInjectHooks { - /** - * Override the packet queue lists in NetworkHandler. - *

- * Cannot intercept MapChunk packets. - */ - NETWORK_HANDLER_FIELDS, - /** * Override the network handler object itself. Only works in 1.3. *

@@ -75,6 +68,13 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok */ NETWORK_MANAGER_OBJECT, + /** + * Override the packet queue lists in NetworkHandler. + *

+ * Cannot intercept MapChunk packets. + */ + NETWORK_HANDLER_FIELDS, + /** * Override the server handler object. Versatile, but a tad slower. */ From 7ed0bc82dd609e827b659666a6f314590f1e757d Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 04:41:07 +0200 Subject: [PATCH 08/16] Make it possible for threads to delay packet transmission. Threads can now increment a shared counter indicating that a packet should not be transmitted after the default packet listener processing. This can be useful if a packet listener needs information from additional packets before it can complete. Packet listeners that whish to use this method begin by calling incrementPacketDelay(). It is then responsible for calling signalPacketTransmission() when it's done waiting. All processing on PacketEvents outside packet listeners must be synchronized with getProcessingLock(). --- .../protocol/AsynchronousManager.java | 10 +++- .../protocol/async/AsyncFilterManager.java | 21 +++++-- .../protocol/async/AsyncListenerHandler.java | 16 +++-- .../comphenix/protocol/async/AsyncMarker.java | 58 ++++++++++++++++++- .../protocol/async/PacketProcessingQueue.java | 5 +- .../protocol/async/PacketSendingQueue.java | 2 +- 6 files changed, 98 insertions(+), 14 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java b/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java index 55d75f99..9929b6be 100644 --- a/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java @@ -15,7 +15,6 @@ import com.comphenix.protocol.events.PacketListener; * @author Kristian */ public interface AsynchronousManager { - /** * Registers an asynchronous packet handler. *

@@ -74,4 +73,13 @@ public interface AsynchronousManager { * Remove listeners, close threads and transmit every delayed packet. */ public abstract void cleanupAll(); + + /** + * Signal that a packet is ready to be transmitted. + *

+ * This should only be called if {@link com.comphenix.protocol.async.AsyncMarker#incrementProcessingDelay() AsyncMarker.incrementProcessingDelay()} + * has been called previously. + * @param packet - packet to signal. + */ + public abstract void signalPacketTransmission(PacketEvent packet); } \ No newline at end of file diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java index ecc841d0..6a3ce7ca 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java @@ -256,14 +256,27 @@ public class AsyncFilterManager implements AsynchronousManager { serverQueue.cleanupAll(); } + @Override + public void signalPacketTransmission(PacketEvent packet) { + signalPacketTransmission(packet, onMainThread()); + } + /** * Signal that a packet is ready to be transmitted. * @param packet - packet to signal. + * @param onMainThread - whether or not this method was run by the main thread. */ - public void signalPacketUpdate(PacketEvent packet) { - getSendingQueue(packet).signalPacketUpdate(packet, onMainThread()); + private void signalPacketTransmission(PacketEvent packet, boolean onMainThread) { + if (packet.getAsyncMarker() == null) + throw new IllegalArgumentException( + "A sync packet cannot be transmitted by the asynchronous manager."); + + // Only send if the packet is ready + if (packet.getAsyncMarker().decrementProcessingDelay() == 0) { + getSendingQueue(packet).signalPacketUpdate(packet, onMainThread); + } } - + /** * Retrieve the sending queue this packet belongs to. * @param packet - the packet. @@ -277,7 +290,7 @@ public class AsyncFilterManager implements AsynchronousManager { * Signal that a packet has finished processing. * @param packet - packet to signal. */ - public void signalProcessingDone(PacketEvent packet) { + public void signalFreeProcessingSlot(PacketEvent packet) { getProcessingQueue(packet).signalProcessingDone(); } diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java index 0859738c..86950c40 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java @@ -371,10 +371,12 @@ public class AsyncListenerHandler { marker.setListenerHandler(this); marker.setWorkerID(workerID); - if (packet.isServerPacket()) - listener.onPacketSending(packet); - else - listener.onPacketReceiving(packet); + synchronized (marker.getProcessingLock()) { + if (packet.isServerPacket()) + listener.onPacketSending(packet); + else + listener.onPacketReceiving(packet); + } } catch (Throwable e) { // Minecraft doesn't want your Exception. @@ -393,8 +395,10 @@ public class AsyncListenerHandler { } // There are no more listeners - queue the packet for transmission - filterManager.signalPacketUpdate(packet); - filterManager.signalProcessingDone(packet); + filterManager.signalFreeProcessingSlot(packet); + + // Note that listeners can opt to delay the packet transmission + filterManager.signalPacketTransmission(packet); } } catch (InterruptedException e) { diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java index a5e15f0e..be1d0ff9 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java @@ -6,6 +6,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Iterator; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import net.minecraft.server.Packet; @@ -61,12 +62,18 @@ public class AsyncMarker implements Serializable, Comparable { // Whether or not the packet has been processed by the listeners private volatile boolean processed; + // Whether or not to delay processing + private AtomicInteger processingDelay = new AtomicInteger(); + // Whether or not the packet has been sent private volatile boolean transmitted; // Whether or not the asynchronous processing itself should be cancelled private volatile boolean asyncCancelled; + // Used to synchronize processing on the shared PacketEvent + private Object processingLock = new Object(); + // Used to identify the asynchronous worker private AsyncListenerHandler listenerHandler; private int workerID; @@ -178,6 +185,55 @@ public class AsyncMarker implements Serializable, Comparable { this.processed = processed; } + /** + * Increment the number of times this packet must be signalled as done before its transmitted. + *

+ * This is useful if an asynchronous listener is waiting for further information before the + * packet can be sent to the user. A packet listener MUST eventually call signalPacketUpdate, + * even if the packet is cancelled, after this method is called. + *

+ * It is recommended that processing outside a packet listener is wrapped in a synchronized block + * using the {@link #getProcessingLock()} method. + *

+ * To decrement the processing delay, call signalPacketUpdate. A thread that calls this method + * multiple times must call signalPacketUpdate at least that many times. + * @return The new processing delay. + */ + public int incrementProcessingDelay() { + return processingDelay.incrementAndGet(); + } + + /** + * Decrement the number of times this packet must be signalled as done before it's transmitted. + * @return The new processing delay. If zero, the packet should be sent. + */ + int decrementProcessingDelay() { + return processingDelay.decrementAndGet(); + } + + /** + * Retrieve the number of times a packet must be signalled to be done before it's sent. + * @return Number of processing delays. + */ + public int getProcessingDelay() { + return processingDelay.get(); + } + + /** + * Processing lock used to synchronize access to the parent PacketEvent and PacketContainer. + *

+ * This lock is automatically acquired for every asynchronous packet listener. It should only be + * used to synchronize access to a PacketEvent if it's processing has been delayed. + * @return A processing lock. + */ + public Object getProcessingLock() { + return processingLock; + } + + public void setProcessingLock(Object processingLock) { + this.processingLock = processingLock; + } + /** * Retrieve whether or not this packet has already been sent. * @return TRUE if it has been sent before, FALSE otherwise. @@ -276,7 +332,7 @@ public class AsyncMarker implements Serializable, Comparable { * @param event - the packet to send. * @throws IOException If the packet couldn't be sent. */ - public void sendPacket(PacketEvent event) throws IOException { + void sendPacket(PacketEvent event) throws IOException { try { if (event.isServerPacket()) { packetStream.sendServerPacket(event.getPlayer(), event.getPacket(), false); diff --git a/ProtocolLib/src/com/comphenix/protocol/async/PacketProcessingQueue.java b/ProtocolLib/src/com/comphenix/protocol/async/PacketProcessingQueue.java index 08ab06ad..ea660076 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/PacketProcessingQueue.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/PacketProcessingQueue.java @@ -100,6 +100,8 @@ class PacketProcessingQueue extends AbstractConcurrentListenerMultimap> list = getListener(packet.getPacketID()); + marker.incrementProcessingDelay(); + // Yes, removing the marker will cause the chain to stop if (list != null) { Iterator> iterator = list.iterator(); @@ -112,7 +114,8 @@ class PacketProcessingQueue extends AbstractConcurrentListenerMultimap Date: Wed, 10 Oct 2012 05:42:45 +0200 Subject: [PATCH 09/16] Honor the sending index when the packet has finished processing. --- .../protocol/async/AsyncFilterManager.java | 14 ++- .../comphenix/protocol/async/AsyncMarker.java | 40 +++++++- .../protocol/async/PacketEventHolder.java | 10 +- .../protocol/async/PacketSendingQueue.java | 16 +++- .../protocol/injector/BukkitUnwrapper.java | 96 +++++++++++++++++++ .../protocol/injector/EntityUtilities.java | 1 - .../protocol/injector/PacketConstructor.java | 90 ++--------------- 7 files changed, 174 insertions(+), 93 deletions(-) create mode 100644 ProtocolLib/src/com/comphenix/protocol/injector/BukkitUnwrapper.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java index 6a3ce7ca..f7933f0d 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java @@ -180,14 +180,18 @@ public class AsyncFilterManager implements AsynchronousManager { * @param syncPacket - synchronous packet event. * @param asyncMarker - the asynchronous marker to use. */ - public void enqueueSyncPacket(PacketEvent syncPacket, AsyncMarker asyncMarker) { + public synchronized void enqueueSyncPacket(PacketEvent syncPacket, AsyncMarker asyncMarker) { PacketEvent newEvent = PacketEvent.fromSynchronous(syncPacket, asyncMarker); + if (asyncMarker.isQueued() || asyncMarker.isTransmitted()) + throw new IllegalArgumentException("Cannot queue a packet that has already been queued."); + // Start the process getSendingQueue(syncPacket).enqueue(newEvent); // We know this is occuring on the main thread, so pass TRUE getProcessingQueue(syncPacket).enqueue(newEvent, true); + asyncMarker.setQueuedSendingIndex(asyncMarker.getNewSendingIndex()); } @Override @@ -267,12 +271,16 @@ public class AsyncFilterManager implements AsynchronousManager { * @param onMainThread - whether or not this method was run by the main thread. */ private void signalPacketTransmission(PacketEvent packet, boolean onMainThread) { - if (packet.getAsyncMarker() == null) + AsyncMarker marker = packet.getAsyncMarker(); + if (marker == null) throw new IllegalArgumentException( "A sync packet cannot be transmitted by the asynchronous manager."); + if (!marker.isQueued()) + throw new IllegalArgumentException( + "A packet must have been queued before it can be transmitted."); // Only send if the packet is ready - if (packet.getAsyncMarker().decrementProcessingDelay() == 0) { + if (marker.decrementProcessingDelay() == 0) { getSendingQueue(packet).signalPacketUpdate(packet, onMainThread); } } diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java index be1d0ff9..9bd6e6bd 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java @@ -59,18 +59,21 @@ public class AsyncMarker implements Serializable, Comparable { private long originalSendingIndex; private long newSendingIndex; + // Used to determine if a packet must be reordered in the sending queue + private Long queuedSendingIndex; + // Whether or not the packet has been processed by the listeners private volatile boolean processed; - // Whether or not to delay processing - private AtomicInteger processingDelay = new AtomicInteger(); - // Whether or not the packet has been sent private volatile boolean transmitted; // Whether or not the asynchronous processing itself should be cancelled private volatile boolean asyncCancelled; + // Whether or not to delay processing + private AtomicInteger processingDelay = new AtomicInteger(); + // Used to synchronize processing on the shared PacketEvent private Object processingLock = new Object(); @@ -189,7 +192,8 @@ public class AsyncMarker implements Serializable, Comparable { * Increment the number of times this packet must be signalled as done before its transmitted. *

* This is useful if an asynchronous listener is waiting for further information before the - * packet can be sent to the user. A packet listener MUST eventually call signalPacketUpdate, + * packet can be sent to the user. A packet listener MUST eventually call + * {@link AsyncFilterManager#signalPacketTransmission(PacketEvent)}, * even if the packet is cancelled, after this method is called. *

* It is recommended that processing outside a packet listener is wrapped in a synchronized block @@ -219,6 +223,30 @@ public class AsyncMarker implements Serializable, Comparable { return processingDelay.get(); } + /** + * Whether or not this packet is or has been queued for processing. + * @return TRUE if it has, FALSE otherwise. + */ + public boolean isQueued() { + return queuedSendingIndex != null; + } + + /** + * Retrieve the sending index when the packet was queued. + * @return Queued sending index. + */ + public long getQueuedSendingIndex() { + return queuedSendingIndex != null ? queuedSendingIndex : 0; + } + + /** + * Set the sending index when the packet was queued. + * @param queuedSendingIndex - sending index. + */ + void setQueuedSendingIndex(Long queuedSendingIndex) { + this.queuedSendingIndex = queuedSendingIndex; + } + /** * Processing lock used to synchronize access to the parent PacketEvent and PacketContainer. *

@@ -269,6 +297,10 @@ public class AsyncMarker implements Serializable, Comparable { /** * Set whether or not the asynchronous handling should be cancelled. + *

+ * This is only relevant during the synchronous processing. Asynchronous + * listeners should use the normal cancel-field to cancel a PacketEvent. + * * @param asyncCancelled - TRUE to cancel it, FALSE otherwise. */ public void setAsyncCancelled(boolean asyncCancelled) { diff --git a/ProtocolLib/src/com/comphenix/protocol/async/PacketEventHolder.java b/ProtocolLib/src/com/comphenix/protocol/async/PacketEventHolder.java index 429d5caf..36cc7eec 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/PacketEventHolder.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/PacketEventHolder.java @@ -12,13 +12,17 @@ import com.google.common.collect.ComparisonChain; class PacketEventHolder implements Comparable { private PacketEvent event; - + private long sendingIndex = 0; + /** * A wrapper that ensures the packet event is ordered by sending index. * @param event - packet event to wrap. */ public PacketEventHolder(PacketEvent event) { this.event = Preconditions.checkNotNull(event, "Event must be non-null"); + + if (event.getAsyncMarker() != null) + this.sendingIndex = event.getAsyncMarker().getNewSendingIndex(); } /** @@ -31,10 +35,8 @@ class PacketEventHolder implements Comparable { @Override public int compareTo(PacketEventHolder other) { - AsyncMarker marker = other != null ? other.getEvent().getAsyncMarker() : null; - return ComparisonChain.start(). - compare(event.getAsyncMarker(), marker). + compare(sendingIndex, other.sendingIndex). result(); } } diff --git a/ProtocolLib/src/com/comphenix/protocol/async/PacketSendingQueue.java b/ProtocolLib/src/com/comphenix/protocol/async/PacketSendingQueue.java index e7fd318f..c90f5b9d 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/PacketSendingQueue.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/PacketSendingQueue.java @@ -55,8 +55,22 @@ class PacketSendingQueue { * @param onMainThread - whether or not this is occuring on the main thread. */ public synchronized void signalPacketUpdate(PacketEvent packetUpdated, boolean onMainThread) { + + AsyncMarker marker = packetUpdated.getAsyncMarker(); + + // Should we reorder the event? + if (marker.getQueuedSendingIndex() != marker.getNewSendingIndex()) { + PacketEvent copy = PacketEvent.fromSynchronous(packetUpdated, marker); + + // "Cancel" the original event + packetUpdated.setCancelled(true); + + // Enqueue the copy with the new sending index + enqueue(copy); + } + // Mark this packet as finished - packetUpdated.getAsyncMarker().setProcessed(true); + marker.setProcessed(true); trySendPackets(onMainThread); } diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/BukkitUnwrapper.java b/ProtocolLib/src/com/comphenix/protocol/injector/BukkitUnwrapper.java new file mode 100644 index 00000000..aaf8ecf8 --- /dev/null +++ b/ProtocolLib/src/com/comphenix/protocol/injector/BukkitUnwrapper.java @@ -0,0 +1,96 @@ +package com.comphenix.protocol.injector; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import com.comphenix.protocol.injector.PacketConstructor.Unwrapper; +import com.comphenix.protocol.reflect.instances.DefaultInstances; + +/** + * Represents an object capable of converting wrapped Bukkit objects into NMS objects. + *

+ * Typical conversions include: + *

    + *
  • org.bukkit.entity.Player -> net.minecraft.server.EntityPlayer
  • + *
  • org.bukkit.World -> net.minecraft.server.WorldServer
  • + *
+ * + * @author Kristian + */ +public class BukkitUnwrapper implements Unwrapper { + + private static Map, Method> cache = new ConcurrentHashMap, Method>(); + + @SuppressWarnings("unchecked") + @Override + public Object unwrapItem(Object wrappedObject) { + + // Special case + if (wrappedObject instanceof Collection) { + return handleCollection((Collection) wrappedObject); + } + + Class currentClass = wrappedObject.getClass(); + Method cachedMethod = initializeCache(currentClass); + + try { + // Retrieve the handle + if (cachedMethod != null) + return cachedMethod.invoke(wrappedObject); + else + return null; + + } catch (IllegalArgumentException e) { + // Impossible + return null; + } catch (IllegalAccessException e) { + return null; + } catch (InvocationTargetException e) { + // This is REALLY bad + throw new RuntimeException("Minecraft error.", e); + } + } + + private Object handleCollection(Collection wrappedObject) { + + @SuppressWarnings("unchecked") + Collection copy = DefaultInstances.DEFAULT.getDefault(wrappedObject.getClass()); + + if (copy != null) { + // Unwrap every element + for (Object element : wrappedObject) { + copy.add(unwrapItem(element)); + } + return copy; + + } else { + // Impossible + return null; + } + } + + private Method initializeCache(Class type) { + + // See if we're already determined this + if (cache.containsKey(type)) { + // We will never remove from the cache, so this ought to be thread safe + return cache.get(type); + } + + try { + Method find = type.getMethod("getHandle"); + + // It's thread safe, as getMethod should return the same handle + cache.put(type, find); + return find; + + } catch (SecurityException e) { + return null; + } catch (NoSuchMethodException e) { + return null; + } + } +} diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/EntityUtilities.java b/ProtocolLib/src/com/comphenix/protocol/injector/EntityUtilities.java index e3c4a2c9..3b73f761 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/EntityUtilities.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/EntityUtilities.java @@ -15,7 +15,6 @@ import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; -import com.comphenix.protocol.injector.PacketConstructor.BukkitUnwrapper; import com.comphenix.protocol.reflect.FieldAccessException; import com.comphenix.protocol.reflect.FieldUtils; import com.comphenix.protocol.reflect.FuzzyReflection; diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java index 73d6c160..c25b863b 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java @@ -2,17 +2,12 @@ package com.comphenix.protocol.injector; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Collection; import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import net.minecraft.server.Packet; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.reflect.FieldAccessException; -import com.comphenix.protocol.reflect.instances.DefaultInstances; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -176,82 +171,17 @@ public class PacketConstructor { return false; } - public static class BukkitUnwrapper implements Unwrapper { - - private static Map, Method> cache = new ConcurrentHashMap, Method>(); - - @SuppressWarnings("unchecked") - @Override - public Object unwrapItem(Object wrappedObject) { - - // Special case - if (wrappedObject instanceof Collection) { - return handleCollection((Collection) wrappedObject); - } - - Class currentClass = wrappedObject.getClass(); - Method cachedMethod = initializeCache(currentClass); - - try { - // Retrieve the handle - if (cachedMethod != null) - return cachedMethod.invoke(wrappedObject); - else - return null; - - } catch (IllegalArgumentException e) { - // Impossible - return null; - } catch (IllegalAccessException e) { - return null; - } catch (InvocationTargetException e) { - // This is REALLY bad - throw new RuntimeException("Minecraft error.", e); - } - } - - private Object handleCollection(Collection wrappedObject) { - - @SuppressWarnings("unchecked") - Collection copy = DefaultInstances.DEFAULT.getDefault(wrappedObject.getClass()); - - if (copy != null) { - // Unwrap every element - for (Object element : wrappedObject) { - copy.add(unwrapItem(element)); - } - return copy; - - } else { - // Impossible - return null; - } - } - - private Method initializeCache(Class type) { - - // See if we're already determined this - if (cache.containsKey(type)) { - // We will never remove from the cache, so this ought to be thread safe - return cache.get(type); - } - - try { - Method find = type.getMethod("getHandle"); - - // It's thread safe, as getMethod should return the same handle - cache.put(type, find); - return find; - - } catch (SecurityException e) { - return null; - } catch (NoSuchMethodException e) { - return null; - } - } - } - + /** + * Represents a unwrapper for a constructor parameter. + * + * @author Kristian + */ public static interface Unwrapper { + /** + * Convert the given wrapped object to the equivalent net.minecraft.server object. + * @param wrappedObject - wrapped object. + * @return The net.minecraft.server object. + */ public Object unwrapItem(Object wrappedObject); } } From 17b7526fe9f448f3995228b77833fe6ab0e21ca3 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 06:00:42 +0200 Subject: [PATCH 10/16] Set the queued index before enqueuing, not after. --- .../src/com/comphenix/protocol/async/AsyncFilterManager.java | 3 ++- .../src/com/comphenix/protocol/injector/ListenerInvoker.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java index f7933f0d..bda4082d 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java @@ -186,12 +186,13 @@ public class AsyncFilterManager implements AsynchronousManager { if (asyncMarker.isQueued() || asyncMarker.isTransmitted()) throw new IllegalArgumentException("Cannot queue a packet that has already been queued."); + asyncMarker.setQueuedSendingIndex(asyncMarker.getNewSendingIndex()); + // Start the process getSendingQueue(syncPacket).enqueue(newEvent); // We know this is occuring on the main thread, so pass TRUE getProcessingQueue(syncPacket).enqueue(newEvent, true); - asyncMarker.setQueuedSendingIndex(asyncMarker.getNewSendingIndex()); } @Override diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/ListenerInvoker.java b/ProtocolLib/src/com/comphenix/protocol/injector/ListenerInvoker.java index e5bc0e4b..e3b6eaee 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/ListenerInvoker.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/ListenerInvoker.java @@ -4,6 +4,11 @@ import net.minecraft.server.Packet; import com.comphenix.protocol.events.PacketEvent; +/** + * Represents an object that initiate the packet listeners. + * + * @author Kristian + */ public interface ListenerInvoker { /** From 4301dc6525fb6596bddb75a4dc915d090103d734 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 07:16:01 +0200 Subject: [PATCH 11/16] Add the ability to customize the worker threads. --- .../com/comphenix/protocol/Application.java | 5 ++ .../comphenix/protocol/ProtocolLibrary.java | 5 ++ .../protocol/async/AsyncListenerHandler.java | 55 +++++++++++++++++-- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/Application.java b/ProtocolLib/src/com/comphenix/protocol/Application.java index 1ba08ce7..a4ef1376 100644 --- a/ProtocolLib/src/com/comphenix/protocol/Application.java +++ b/ProtocolLib/src/com/comphenix/protocol/Application.java @@ -17,6 +17,11 @@ package com.comphenix.protocol; +/** + * Ignore this class. + * + * @author Kristian + */ public class Application { public static void main(String[] args) { // For now, though we might consider making a proper application diff --git a/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java b/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java index 1b8a7132..ad2dab81 100644 --- a/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java +++ b/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java @@ -30,6 +30,11 @@ import com.comphenix.protocol.injector.PacketFilterManager; import com.comphenix.protocol.metrics.Statistics; import com.comphenix.protocol.reflect.compiler.BackgroundCompiler; +/** + * The main entry point for ProtocolLib. + * + * @author Kristian + */ public class ProtocolLibrary extends JavaPlugin { // There should only be one protocol manager, so we'll make it static diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java index 86950c40..7983c2e5 100644 --- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java +++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java @@ -13,6 +13,7 @@ import com.comphenix.protocol.events.ListeningWhitelist; import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketListener; +import com.google.common.base.Function; import com.google.common.base.Joiner; /** @@ -53,7 +54,7 @@ public class AsyncListenerHandler { // List of queued packets private ArrayBlockingQueue queuedPackets = new ArrayBlockingQueue(DEFAULT_CAPACITY); - + // List of cancelled tasks private final Set stoppedTasks = new HashSet(); private final Object stopLock = new Object(); @@ -200,7 +201,7 @@ public class AsyncListenerHandler { } /** - * Start a singler worker thread handling the asynchronous. + * Start a singler worker thread handling the asynchronous listener. */ public synchronized void start() { if (listener.getPlugin() == null) @@ -213,11 +214,55 @@ public class AsyncListenerHandler { filterManager.scheduleAsyncTask(listener.getPlugin(), new Runnable() { @Override public void run() { - String workerName = getFriendlyWorkerName(listenerLoop.getID()); + Thread thread = Thread.currentThread(); + String previousName = thread.getName(); + String workerName = getFriendlyWorkerName(listenerLoop.getID()); + // Add the friendly worker name - Thread.currentThread().setName(workerName); + thread.setName(workerName); listenerLoop.run(); + thread.setName(previousName); + } + }); + } + + /** + * Start a singler worker thread handling the asynchronous listener. + *

+ * This method is intended to allow callers to customize the thread priority + * before the worker loop is actually called. This is simpler than to + * schedule the worker threads manually. + *


+	 * listenerHandler.start(new Function<AsyncRunnable, Void>() {
+	 *     @Override
+	 *     public Void apply(@Nullable AsyncRunnable workerLoop) {
+	 *         Thread thread = Thread.currentThread();
+	 *         int prevPriority = thread.getPriority();
+	 *	       
+	 *         thread.setPriority(Thread.MIN_PRIORITY);
+	 *         workerLoop.run();
+	 *         thread.setPriority(prevPriority);
+	 *         return null;
+	 *     }
+	 *   });
+	 * }
+	 * 
+ * @param executor - a method that will execute the given listener loop. + */ + public synchronized void start(Function executor) { + if (listener.getPlugin() == null) + throw new IllegalArgumentException("Cannot start task without a valid plugin."); + if (cancelled) + throw new IllegalStateException("Cannot start a worker when the listener is closing."); + + final AsyncRunnable listenerLoop = getListenerLoop(); + final Function delegateCopy = executor; + + filterManager.scheduleAsyncTask(listener.getPlugin(), new Runnable() { + @Override + public void run() { + delegateCopy.apply(listenerLoop); } }); } @@ -300,7 +345,7 @@ public class AsyncListenerHandler { stop(); // May happen if another thread is doing something similar to "setWorkers" - if ((System.currentTimeMillis() - time) > 1000) + if ((System.currentTimeMillis() - time) > 50) throw new RuntimeException("Failed to set worker count."); } } From 5bda655f399c6906822757611564ac4fd4c33c13 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 21:35:55 +0200 Subject: [PATCH 12/16] Switching to Maven instead of Ant. --- ProtocolLib/.classpath | 19 ++-- ProtocolLib/.gitignore | 1 + ProtocolLib/.project | 6 ++ .../.settings/org.eclipse.jdt.core.prefs | 1 + .../.settings/org.eclipse.m2e.core.prefs | 4 + ProtocolLib/Java.xml | 14 --- ProtocolLib/dependency-reduced-pom.xml | 88 +++++++++++++++++ ProtocolLib/lib/cglib-nodep-2.2.3.jar | Bin 322553 -> 0 bytes ProtocolLib/pom.xml | 90 ++++++++++++++++++ .../com/comphenix/protocol/Application.java | 0 .../protocol/AsynchronousManager.java | 0 .../com/comphenix/protocol/PacketStream.java | 0 .../java}/com/comphenix/protocol/Packets.java | 0 .../comphenix/protocol/ProtocolLibrary.java | 0 .../comphenix/protocol/ProtocolManager.java | 0 .../protocol/async/AsyncFilterManager.java | 0 .../protocol/async/AsyncListenerHandler.java | 0 .../comphenix/protocol/async/AsyncMarker.java | 0 .../protocol/async/AsyncRunnable.java | 0 .../protocol/async/NullPacketListener.java | 0 .../protocol/async/PacketEventHolder.java | 0 .../protocol/async/PacketProcessingQueue.java | 0 .../protocol/async/PacketSendingQueue.java | 0 .../protocol/async/Synchronization.java | 0 .../AbstractConcurrentListenerMultimap.java | 0 .../concurrency/SortedCopyOnWriteArray.java | 0 .../protocol/events/ConnectionSide.java | 0 .../protocol/events/ListenerPriority.java | 0 .../protocol/events/ListeningWhitelist.java | 0 .../protocol/events/PacketAdapter.java | 0 .../protocol/events/PacketContainer.java | 0 .../protocol/events/PacketEvent.java | 0 .../protocol/events/PacketListener.java | 0 .../events/SerializedOfflinePlayer.java | 0 .../protocol/injector/BukkitUnwrapper.java | 0 .../protocol/injector/EntityUtilities.java | 0 .../protocol/injector/ListenerInvoker.java | 0 .../protocol/injector/MinecraftRegistry.java | 0 .../protocol/injector/PacketConstructor.java | 0 .../injector/PacketFilterManager.java | 0 .../protocol/injector/PacketInjector.java | 0 .../injector/PlayerLoggedOutException.java | 0 .../injector/PrioritizedListener.java | 0 .../protocol/injector/ReadPacketModifier.java | 0 .../injector/SortedPacketListenerList.java | 0 .../protocol/injector/StructureCache.java | 0 .../injector/player/InjectedArrayList.java | 0 .../player/InjectedServerConnection.java | 0 .../injector/player/NetworkFieldInjector.java | 0 .../player/NetworkObjectInjector.java | 0 .../player/NetworkServerInjector.java | 0 .../player/PlayerInjectionHandler.java | 0 .../injector/player/PlayerInjector.java | 0 .../injector/player/ReplacedArrayList.java | 0 .../comphenix/protocol/metrics/Metrics.java | 0 .../protocol/metrics/Statistics.java | 0 .../protocol/reflect/EquivalentConverter.java | 0 .../reflect/FieldAccessException.java | 0 .../protocol/reflect/FieldUtils.java | 0 .../protocol/reflect/FuzzyReflection.java | 0 .../comphenix/protocol/reflect/IntEnum.java | 0 .../protocol/reflect/MethodUtils.java | 0 .../protocol/reflect/ObjectCloner.java | 0 .../protocol/reflect/PrimitiveUtils.java | 0 .../protocol/reflect/StructureModifier.java | 0 .../protocol/reflect/VolatileField.java | 0 .../reflect/compiler/BackgroundCompiler.java | 0 .../reflect/compiler/BoxingHelper.java | 0 .../reflect/compiler/CompileListener.java | 0 .../compiler/CompiledStructureModifier.java | 0 .../reflect/compiler/MethodDescriptor.java | 0 .../reflect/compiler/StructureCompiler.java | 0 .../instances/CollectionGenerator.java | 0 .../reflect/instances/DefaultInstances.java | 0 .../reflect/instances/ExistingGenerator.java | 0 .../reflect/instances/InstanceProvider.java | 0 .../reflect/instances/PrimitiveGenerator.java | 0 ProtocolLib/src/{ => main/java}/plugin.yml | 2 +- .../injector/SortedCopyOnWriteArrayTest.java | 0 .../reflect/StructureModifierTest.java | 0 80 files changed, 202 insertions(+), 23 deletions(-) create mode 100644 ProtocolLib/.gitignore create mode 100644 ProtocolLib/.settings/org.eclipse.m2e.core.prefs delete mode 100644 ProtocolLib/Java.xml create mode 100644 ProtocolLib/dependency-reduced-pom.xml delete mode 100644 ProtocolLib/lib/cglib-nodep-2.2.3.jar create mode 100644 ProtocolLib/pom.xml rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/Application.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/AsynchronousManager.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/PacketStream.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/Packets.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/ProtocolLibrary.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/ProtocolManager.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/AsyncFilterManager.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/AsyncListenerHandler.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/AsyncMarker.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/AsyncRunnable.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/NullPacketListener.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/PacketEventHolder.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/PacketProcessingQueue.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/PacketSendingQueue.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/async/Synchronization.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/ConnectionSide.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/ListenerPriority.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/ListeningWhitelist.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/PacketAdapter.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/PacketContainer.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/PacketEvent.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/PacketListener.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/events/SerializedOfflinePlayer.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/BukkitUnwrapper.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/EntityUtilities.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/ListenerInvoker.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/MinecraftRegistry.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/PacketConstructor.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/PacketFilterManager.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/PacketInjector.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/PlayerLoggedOutException.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/PrioritizedListener.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/ReadPacketModifier.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/SortedPacketListenerList.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/StructureCache.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/InjectedArrayList.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/InjectedServerConnection.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/NetworkFieldInjector.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/NetworkObjectInjector.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/NetworkServerInjector.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/PlayerInjector.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/injector/player/ReplacedArrayList.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/metrics/Metrics.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/metrics/Statistics.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/EquivalentConverter.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/FieldAccessException.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/FieldUtils.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/FuzzyReflection.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/IntEnum.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/MethodUtils.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/ObjectCloner.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/PrimitiveUtils.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/StructureModifier.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/VolatileField.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/compiler/BoxingHelper.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/compiler/CompileListener.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/compiler/StructureCompiler.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/instances/CollectionGenerator.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/instances/DefaultInstances.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/instances/ExistingGenerator.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/instances/InstanceProvider.java (100%) rename ProtocolLib/src/{ => main/java}/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java (100%) rename ProtocolLib/src/{ => main/java}/plugin.yml (86%) rename ProtocolLib/{test => src/test/java}/com/comphenix/protocol/injector/SortedCopyOnWriteArrayTest.java (100%) rename ProtocolLib/{test => src/test/java}/com/comphenix/protocol/reflect/StructureModifierTest.java (100%) diff --git a/ProtocolLib/.classpath b/ProtocolLib/.classpath index 0bc481ca..34437de1 100644 --- a/ProtocolLib/.classpath +++ b/ProtocolLib/.classpath @@ -1,14 +1,17 @@ - - - - + + + + - + - - - + + + + + + diff --git a/ProtocolLib/.gitignore b/ProtocolLib/.gitignore new file mode 100644 index 00000000..9f970225 --- /dev/null +++ b/ProtocolLib/.gitignore @@ -0,0 +1 @@ +target/ \ No newline at end of file diff --git a/ProtocolLib/.project b/ProtocolLib/.project index dd7e4061..43010533 100644 --- a/ProtocolLib/.project +++ b/ProtocolLib/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature diff --git a/ProtocolLib/.settings/org.eclipse.jdt.core.prefs b/ProtocolLib/.settings/org.eclipse.jdt.core.prefs index 54e493c0..6428c680 100644 --- a/ProtocolLib/.settings/org.eclipse.jdt.core.prefs +++ b/ProtocolLib/.settings/org.eclipse.jdt.core.prefs @@ -8,4 +8,5 @@ org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.6 diff --git a/ProtocolLib/.settings/org.eclipse.m2e.core.prefs b/ProtocolLib/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 00000000..14b697b7 --- /dev/null +++ b/ProtocolLib/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/ProtocolLib/Java.xml b/ProtocolLib/Java.xml deleted file mode 100644 index 33c14105..00000000 --- a/ProtocolLib/Java.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/ProtocolLib/dependency-reduced-pom.xml b/ProtocolLib/dependency-reduced-pom.xml new file mode 100644 index 00000000..ba0ecaa6 --- /dev/null +++ b/ProtocolLib/dependency-reduced-pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + com.comphenix.ProtocolLib + ProtocolLib + ProtocolLib + 1.3.1 + Provides read/write access to the Minecraft protocol. + http://dev.bukkit.org/server-mods/protocollib/ + + + GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + http://www.gnu.org/licenses/gpl-2.0.txt + repo + + + + scm:git:git://github.com/aadnk/ProtocolLib.git + scm:git:git@github.com:aadnk/ProtocolLib.git + https://github.com/aadnk/ProtocolLib + + + src/main/java + src/test/java + + + src/main/java + + **/*.java + + + + + + maven-shade-plugin + 2.0 + + + package + + shade + + + + + org.bukkit:craftbukkit + junit:junit + + + + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + + + + org.bukkit + craftbukkit + 1.3.2-R1.1-SNAPSHOT + compile + + + junit + junit + 4.10 + test + + + hamcrest-core + org.hamcrest + + + + + + UTF-8 + + + diff --git a/ProtocolLib/lib/cglib-nodep-2.2.3.jar b/ProtocolLib/lib/cglib-nodep-2.2.3.jar deleted file mode 100644 index 35d6d7c3a7ca43f0ae689b7c3a6dc23d634d8261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322553 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

t5F98xhQSCAl$ZNh@m^~%^&qm(I46;{T8pF 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≠k%tX{hE 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

}YC(x|Y>cy=YIvng*b@QTyS6&!cl-fTFt} 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 z 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 diff --git a/ProtocolLib/pom.xml b/ProtocolLib/pom.xml new file mode 100644 index 00000000..8e2cc4fe --- /dev/null +++ b/ProtocolLib/pom.xml @@ -0,0 +1,90 @@ + + 4.0.0 + com.comphenix.ProtocolLib + ProtocolLib + 1.3.1 + Provides read/write access to the Minecraft protocol. + + + UTF-8 + + + + src/main/java + src/test/java + + + src/main/java + + **/*.java + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.0 + + + package + + shade + + + + + org.bukkit:craftbukkit + junit:junit + + + + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + + http://dev.bukkit.org/server-mods/protocollib/ + ProtocolLib + + + scm:git:git://github.com/aadnk/ProtocolLib.git + scm:git:git@github.com:aadnk/ProtocolLib.git + https://github.com/aadnk/ProtocolLib + + + + + GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + http://www.gnu.org/licenses/gpl-2.0.txt + repo + + + + + + cglib + cglib-nodep + 2.2.2 + + + org.bukkit + craftbukkit + 1.3.2-R1.1-SNAPSHOT + + + junit + junit + 4.10 + test + + + \ No newline at end of file diff --git a/ProtocolLib/src/com/comphenix/protocol/Application.java b/ProtocolLib/src/main/java/com/comphenix/protocol/Application.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/Application.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/Application.java diff --git a/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/AsynchronousManager.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/AsynchronousManager.java diff --git a/ProtocolLib/src/com/comphenix/protocol/PacketStream.java b/ProtocolLib/src/main/java/com/comphenix/protocol/PacketStream.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/PacketStream.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/PacketStream.java diff --git a/ProtocolLib/src/com/comphenix/protocol/Packets.java b/ProtocolLib/src/main/java/com/comphenix/protocol/Packets.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/Packets.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/Packets.java diff --git a/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java b/ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolLibrary.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolLibrary.java diff --git a/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolManager.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolManager.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/AsyncListenerHandler.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/AsyncMarker.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncRunnable.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncRunnable.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/AsyncRunnable.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncRunnable.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/NullPacketListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/NullPacketListener.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/NullPacketListener.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/NullPacketListener.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/PacketEventHolder.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketEventHolder.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/PacketEventHolder.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketEventHolder.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/PacketProcessingQueue.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketProcessingQueue.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/PacketProcessingQueue.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketProcessingQueue.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/PacketSendingQueue.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/PacketSendingQueue.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java diff --git a/ProtocolLib/src/com/comphenix/protocol/async/Synchronization.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/Synchronization.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/async/Synchronization.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/async/Synchronization.java diff --git a/ProtocolLib/src/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java b/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java diff --git a/ProtocolLib/src/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java b/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/ConnectionSide.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/ConnectionSide.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/ConnectionSide.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/ConnectionSide.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/ListenerPriority.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/ListenerPriority.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/ListenerPriority.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/ListenerPriority.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/ListeningWhitelist.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/ListeningWhitelist.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/ListeningWhitelist.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/ListeningWhitelist.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketAdapter.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketAdapter.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/PacketAdapter.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketAdapter.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketContainer.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketContainer.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/PacketContainer.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketContainer.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketEvent.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketEvent.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/PacketEvent.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketEvent.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketListener.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/PacketListener.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketListener.java diff --git a/ProtocolLib/src/com/comphenix/protocol/events/SerializedOfflinePlayer.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/events/SerializedOfflinePlayer.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/BukkitUnwrapper.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/BukkitUnwrapper.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/BukkitUnwrapper.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/BukkitUnwrapper.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/EntityUtilities.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/EntityUtilities.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/ListenerInvoker.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/ListenerInvoker.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/ListenerInvoker.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/ListenerInvoker.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/MinecraftRegistry.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/MinecraftRegistry.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/MinecraftRegistry.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/MinecraftRegistry.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketConstructor.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/PacketConstructor.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketConstructor.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketFilterManager.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketFilterManager.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketInjector.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/PacketInjector.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketInjector.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PlayerLoggedOutException.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PlayerLoggedOutException.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/PlayerLoggedOutException.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/PlayerLoggedOutException.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PrioritizedListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PrioritizedListener.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/PrioritizedListener.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/PrioritizedListener.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/ReadPacketModifier.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/ReadPacketModifier.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/ReadPacketModifier.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/ReadPacketModifier.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/SortedPacketListenerList.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/SortedPacketListenerList.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/SortedPacketListenerList.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/SortedPacketListenerList.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/StructureCache.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/StructureCache.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/StructureCache.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/StructureCache.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/InjectedArrayList.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedArrayList.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/InjectedArrayList.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedArrayList.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/InjectedServerConnection.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedServerConnection.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/InjectedServerConnection.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedServerConnection.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/NetworkFieldInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkFieldInjector.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/NetworkFieldInjector.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkFieldInjector.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/NetworkObjectInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkObjectInjector.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/NetworkObjectInjector.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkObjectInjector.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/NetworkServerInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkServerInjector.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/NetworkServerInjector.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkServerInjector.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/PlayerInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjector.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/PlayerInjector.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjector.java diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/player/ReplacedArrayList.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/ReplacedArrayList.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/injector/player/ReplacedArrayList.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/ReplacedArrayList.java diff --git a/ProtocolLib/src/com/comphenix/protocol/metrics/Metrics.java b/ProtocolLib/src/main/java/com/comphenix/protocol/metrics/Metrics.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/metrics/Metrics.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/metrics/Metrics.java diff --git a/ProtocolLib/src/com/comphenix/protocol/metrics/Statistics.java b/ProtocolLib/src/main/java/com/comphenix/protocol/metrics/Statistics.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/metrics/Statistics.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/metrics/Statistics.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/EquivalentConverter.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/EquivalentConverter.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/EquivalentConverter.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/EquivalentConverter.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/FieldAccessException.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/FieldAccessException.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/FieldAccessException.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/FieldAccessException.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/FieldUtils.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/FieldUtils.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/FieldUtils.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/FieldUtils.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/FuzzyReflection.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/FuzzyReflection.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/FuzzyReflection.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/FuzzyReflection.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/IntEnum.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/IntEnum.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/IntEnum.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/IntEnum.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/MethodUtils.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/MethodUtils.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/MethodUtils.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/MethodUtils.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/ObjectCloner.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectCloner.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/ObjectCloner.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectCloner.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/PrimitiveUtils.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/PrimitiveUtils.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/PrimitiveUtils.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/PrimitiveUtils.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/StructureModifier.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/StructureModifier.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/StructureModifier.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/StructureModifier.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/VolatileField.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/VolatileField.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/VolatileField.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/VolatileField.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/compiler/BoxingHelper.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BoxingHelper.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/compiler/BoxingHelper.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BoxingHelper.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/compiler/CompileListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompileListener.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/compiler/CompileListener.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompileListener.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/compiler/StructureCompiler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/StructureCompiler.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/compiler/StructureCompiler.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/StructureCompiler.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/instances/CollectionGenerator.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/CollectionGenerator.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/instances/CollectionGenerator.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/CollectionGenerator.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/instances/DefaultInstances.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/DefaultInstances.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/instances/DefaultInstances.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/DefaultInstances.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/instances/ExistingGenerator.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/ExistingGenerator.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/instances/ExistingGenerator.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/ExistingGenerator.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/instances/InstanceProvider.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/InstanceProvider.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/instances/InstanceProvider.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/InstanceProvider.java diff --git a/ProtocolLib/src/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java similarity index 100% rename from ProtocolLib/src/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java rename to ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java diff --git a/ProtocolLib/src/plugin.yml b/ProtocolLib/src/main/java/plugin.yml similarity index 86% rename from ProtocolLib/src/plugin.yml rename to ProtocolLib/src/main/java/plugin.yml index 3901dcf0..4386cbc8 100644 --- a/ProtocolLib/src/plugin.yml +++ b/ProtocolLib/src/main/java/plugin.yml @@ -1,5 +1,5 @@ name: ProtocolLib -version: 1.3.0 +version: 1.3.1 description: Provides read/write access to the Minecraft protocol. author: Comphenix website: http://www.comphenix.net/ProtocolLib diff --git a/ProtocolLib/test/com/comphenix/protocol/injector/SortedCopyOnWriteArrayTest.java b/ProtocolLib/src/test/java/com/comphenix/protocol/injector/SortedCopyOnWriteArrayTest.java similarity index 100% rename from ProtocolLib/test/com/comphenix/protocol/injector/SortedCopyOnWriteArrayTest.java rename to ProtocolLib/src/test/java/com/comphenix/protocol/injector/SortedCopyOnWriteArrayTest.java diff --git a/ProtocolLib/test/com/comphenix/protocol/reflect/StructureModifierTest.java b/ProtocolLib/src/test/java/com/comphenix/protocol/reflect/StructureModifierTest.java similarity index 100% rename from ProtocolLib/test/com/comphenix/protocol/reflect/StructureModifierTest.java rename to ProtocolLib/src/test/java/com/comphenix/protocol/reflect/StructureModifierTest.java From dc75f34e11b96c9a00dbc1be62d5851d56b4a2ef Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 22:12:29 +0200 Subject: [PATCH 13/16] Add a warning message for lost packets. --- ItemDisguise/.classpath | 2 +- .../com/comphenix/protocol/async/PacketSendingQueue.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ItemDisguise/.classpath b/ItemDisguise/.classpath index b4cf4f7f..24f68324 100644 --- a/ItemDisguise/.classpath +++ b/ItemDisguise/.classpath @@ -3,6 +3,6 @@ - + diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java index c90f5b9d..8c947c90 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java @@ -9,6 +9,7 @@ import java.util.concurrent.PriorityBlockingQueue; import org.bukkit.entity.Player; import com.comphenix.protocol.events.PacketEvent; +import com.comphenix.protocol.injector.PlayerLoggedOutException; import com.comphenix.protocol.reflect.FieldAccessException; /** @@ -184,6 +185,12 @@ class PacketSendingQueue { if (marker != null && !marker.isTransmitted()) { marker.sendPacket(event); } + + } catch (PlayerLoggedOutException e) { + System.out.println(String.format( + "Warning: Dropped packet index %s of ID %s", + marker.getOriginalSendingIndex(), event.getPacketID() + )); } catch (IOException e) { // Just print the error From 8d3c1de9b95b9fa74b5aa2921100ad63e3435621 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Wed, 10 Oct 2012 22:18:11 +0200 Subject: [PATCH 14/16] Adding GPL v2 license information to every file. --- License.txt | 339 ++++++++++++++++++ .../protocol/AsynchronousManager.java | 17 + .../com/comphenix/protocol/PacketStream.java | 17 + .../java/com/comphenix/protocol/Packets.java | 17 + .../protocol/async/AsyncFilterManager.java | 17 + .../protocol/async/AsyncListenerHandler.java | 17 + .../comphenix/protocol/async/AsyncMarker.java | 17 + .../protocol/async/AsyncRunnable.java | 17 + .../protocol/async/NullPacketListener.java | 17 + .../protocol/async/PacketEventHolder.java | 17 + .../protocol/async/PacketProcessingQueue.java | 17 + .../protocol/async/PacketSendingQueue.java | 17 + .../protocol/async/Synchronization.java | 17 + .../AbstractConcurrentListenerMultimap.java | 17 + .../concurrency/SortedCopyOnWriteArray.java | 17 + .../events/SerializedOfflinePlayer.java | 17 + .../protocol/injector/BukkitUnwrapper.java | 17 + .../protocol/injector/EntityUtilities.java | 17 + .../protocol/injector/ListenerInvoker.java | 17 + .../protocol/injector/PacketConstructor.java | 17 + .../injector/PlayerLoggedOutException.java | 17 + .../injector/PrioritizedListener.java | 17 + .../injector/SortedPacketListenerList.java | 17 + .../injector/player/InjectedArrayList.java | 17 + .../player/InjectedServerConnection.java | 17 + .../injector/player/NetworkFieldInjector.java | 17 + .../player/NetworkObjectInjector.java | 17 + .../player/NetworkServerInjector.java | 17 + .../player/PlayerInjectionHandler.java | 17 + .../injector/player/ReplacedArrayList.java | 17 + .../comphenix/protocol/reflect/IntEnum.java | 17 + .../protocol/reflect/ObjectCloner.java | 17 + .../reflect/compiler/BackgroundCompiler.java | 17 + .../reflect/compiler/BoxingHelper.java | 17 + .../reflect/compiler/CompileListener.java | 17 + .../compiler/CompiledStructureModifier.java | 17 + .../reflect/compiler/MethodDescriptor.java | 17 + .../reflect/compiler/StructureCompiler.java | 17 + .../instances/CollectionGenerator.java | 17 + .../reflect/instances/ExistingGenerator.java | 17 + .../reflect/instances/InstanceProvider.java | 17 + .../reflect/instances/PrimitiveGenerator.java | 17 + 42 files changed, 1036 insertions(+) create mode 100644 License.txt diff --git a/License.txt b/License.txt new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/License.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/AsynchronousManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/AsynchronousManager.java index 9929b6be..bd8ac97d 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/AsynchronousManager.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/AsynchronousManager.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol; import java.util.Set; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/PacketStream.java b/ProtocolLib/src/main/java/com/comphenix/protocol/PacketStream.java index 464f6f5c..fbffae75 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/PacketStream.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/PacketStream.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol; import java.lang.reflect.InvocationTargetException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/Packets.java b/ProtocolLib/src/main/java/com/comphenix/protocol/Packets.java index 6532150f..3b2fa253 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/Packets.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/Packets.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol; import java.util.Set; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java index bda4082d..959700a1 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import java.util.Collection; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java index 7983c2e5..4f601ece 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import java.util.HashSet; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java index 9bd6e6bd..ec3aa894 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import java.io.IOException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncRunnable.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncRunnable.java index 2c0004d9..aeb2c0be 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncRunnable.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncRunnable.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; /** diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/NullPacketListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/NullPacketListener.java index d02559d3..8a358fad 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/NullPacketListener.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/NullPacketListener.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import org.bukkit.plugin.Plugin; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketEventHolder.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketEventHolder.java index 36cc7eec..8504157f 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketEventHolder.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketEventHolder.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import com.comphenix.protocol.events.PacketEvent; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketProcessingQueue.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketProcessingQueue.java index ea660076..1f49df99 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketProcessingQueue.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketProcessingQueue.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import java.util.Collection; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java index 8c947c90..59233b94 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/PacketSendingQueue.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import java.io.IOException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/Synchronization.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/Synchronization.java index 71e949e7..7504090d 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/Synchronization.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/Synchronization.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.async; import java.io.Serializable; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java b/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java index 00741fe2..c2da28f3 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/AbstractConcurrentListenerMultimap.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.concurrency; import java.util.ArrayList; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java b/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java index 87d69a44..b32cf0a8 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/concurrency/SortedCopyOnWriteArray.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.concurrency; import java.util.ArrayList; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java index 4e222e57..9d593835 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.events; import java.io.IOException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/BukkitUnwrapper.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/BukkitUnwrapper.java index aaf8ecf8..6ca4d332 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/BukkitUnwrapper.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/BukkitUnwrapper.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; import java.lang.reflect.InvocationTargetException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java index 3b73f761..7eb4041b 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; import java.lang.reflect.Constructor; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/ListenerInvoker.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/ListenerInvoker.java index e3b6eaee..e38edcf2 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/ListenerInvoker.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/ListenerInvoker.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; import net.minecraft.server.Packet; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketConstructor.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketConstructor.java index c25b863b..da7a1c0b 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketConstructor.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketConstructor.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; import java.lang.reflect.Constructor; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PlayerLoggedOutException.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PlayerLoggedOutException.java index 5cdd569a..db5ccfe5 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PlayerLoggedOutException.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PlayerLoggedOutException.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; /** diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PrioritizedListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PrioritizedListener.java index 2d971206..844c34e5 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PrioritizedListener.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PrioritizedListener.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; import com.comphenix.protocol.events.ListenerPriority; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/SortedPacketListenerList.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/SortedPacketListenerList.java index 7ff8cddd..2440147e 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/SortedPacketListenerList.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/SortedPacketListenerList.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector; import java.util.Collection; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedArrayList.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedArrayList.java index 4562d2c5..69496fcd 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedArrayList.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedArrayList.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.lang.reflect.InvocationTargetException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedServerConnection.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedServerConnection.java index 4ed76815..7f6878ce 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedServerConnection.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/InjectedServerConnection.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.lang.reflect.Field; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkFieldInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkFieldInjector.java index 35395725..7ab5d1d6 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkFieldInjector.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkFieldInjector.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.lang.reflect.Field; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkObjectInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkObjectInjector.java index 6d6bba12..bbd6bd74 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkObjectInjector.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkObjectInjector.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.lang.reflect.InvocationTargetException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkServerInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkServerInjector.java index 72de1223..0daa0786 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkServerInjector.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/NetworkServerInjector.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.lang.reflect.InvocationTargetException; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java index da50fdee..6bb66dc0 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjectionHandler.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.io.DataInputStream; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/ReplacedArrayList.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/ReplacedArrayList.java index ed239f3c..ec076e29 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/ReplacedArrayList.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/ReplacedArrayList.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.injector.player; import java.util.Collection; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/IntEnum.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/IntEnum.java index cb5cfb44..3e3baa5d 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/IntEnum.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/IntEnum.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect; import java.lang.reflect.Field; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectCloner.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectCloner.java index e64c32a8..9ed86545 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectCloner.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/ObjectCloner.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect; import java.util.concurrent.ConcurrentHashMap; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java index 61a42d48..dfc0eb2a 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BackgroundCompiler.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.compiler; import java.util.Map; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BoxingHelper.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BoxingHelper.java index 06d043a1..401516d8 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BoxingHelper.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/BoxingHelper.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.compiler; import net.sf.cglib.asm.*; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompileListener.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompileListener.java index 5ab92978..c8d5f806 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompileListener.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompileListener.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.compiler; import com.comphenix.protocol.reflect.StructureModifier; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java index d96236f7..510f26ba 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/CompiledStructureModifier.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.compiler; import java.lang.reflect.Field; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java index b1aa1260..7aad74a5 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/MethodDescriptor.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.compiler; import java.util.HashMap; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/StructureCompiler.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/StructureCompiler.java index 24477dff..9c7ce883 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/StructureCompiler.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/compiler/StructureCompiler.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.compiler; import java.lang.reflect.Field; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/CollectionGenerator.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/CollectionGenerator.java index c7fe4de7..3efc0ae5 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/CollectionGenerator.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/CollectionGenerator.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.instances; import java.util.ArrayList; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/ExistingGenerator.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/ExistingGenerator.java index d183ad95..d5e13a10 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/ExistingGenerator.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/ExistingGenerator.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.instances; import java.lang.reflect.Field; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/InstanceProvider.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/InstanceProvider.java index 98775af7..09c42db3 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/InstanceProvider.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/InstanceProvider.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.instances; import javax.annotation.Nullable; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java index c569ad16..5ff4529a 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/reflect/instances/PrimitiveGenerator.java @@ -1,3 +1,20 @@ +/* + * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. + * Copyright (C) 2012 Kristian S. Stangeland + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + */ + package com.comphenix.protocol.reflect.instances; import java.lang.reflect.Array; From b4d0c4a36d0b4ad25c468fce12be8b17f8585ca3 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Thu, 11 Oct 2012 02:17:45 +0200 Subject: [PATCH 15/16] Prepare POM for possibly being on the public maven repository. --- ProtocolLib/.classpath | 4 +- ProtocolLib/dependency-reduced-pom.xml | 61 +++++++++++++++++++- ProtocolLib/pom.xml | 79 +++++++++++++++++++++++++- 3 files changed, 140 insertions(+), 4 deletions(-) diff --git a/ProtocolLib/.classpath b/ProtocolLib/.classpath index 34437de1..4134d657 100644 --- a/ProtocolLib/.classpath +++ b/ProtocolLib/.classpath @@ -1,7 +1,7 @@ - - + + diff --git a/ProtocolLib/dependency-reduced-pom.xml b/ProtocolLib/dependency-reduced-pom.xml index ba0ecaa6..85e35949 100644 --- a/ProtocolLib/dependency-reduced-pom.xml +++ b/ProtocolLib/dependency-reduced-pom.xml @@ -1,12 +1,25 @@ 4.0.0 - com.comphenix.ProtocolLib + com.comphenix.protocol ProtocolLib ProtocolLib 1.3.1 Provides read/write access to the Minecraft protocol. http://dev.bukkit.org/server-mods/protocollib/ + + + aadnk + Kristian S. Stangeland + kr_stang@hotmail.com + http://comphenix.net/ + + developer + maintainer + + 1 + + GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 @@ -61,6 +74,52 @@ + + + release-sign-artifacts + + + + maven-source-plugin + 2.2 + + + attach-sources + + jar + + + + + + maven-javadoc-plugin + 2.9 + + + attach-javadocs + + jar + + + + + + maven-gpg-plugin + 1.4 + + + sign-artifacts + verify + + sign + + + + + + + + org.bukkit diff --git a/ProtocolLib/pom.xml b/ProtocolLib/pom.xml index 8e2cc4fe..361f1663 100644 --- a/ProtocolLib/pom.xml +++ b/ProtocolLib/pom.xml @@ -1,8 +1,9 @@ 4.0.0 - com.comphenix.ProtocolLib + com.comphenix.protocol ProtocolLib 1.3.1 + jar Provides read/write access to the Minecraft protocol. @@ -20,6 +21,7 @@ + org.apache.maven.plugins @@ -42,6 +44,7 @@ + maven-compiler-plugin 2.3.2 @@ -52,6 +55,66 @@ + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2 + + + attach-sources + + jar + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9 + + + attach-javadocs + + jar + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.4 + + + sign-artifacts + verify + + sign + + + + + + + + + + http://dev.bukkit.org/server-mods/protocollib/ ProtocolLib @@ -69,6 +132,20 @@ + + + aadnk + Kristian S. Stangeland + kr_stang@hotmail.com + http://comphenix.net/ + + developer + maintainer + + 1 + + + cglib From 707b4511cea96889d6f91881a6e14eef9da3a5a8 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Thu, 11 Oct 2012 02:56:45 +0200 Subject: [PATCH 16/16] Add repository information to POM. --- ProtocolLib/dependency-reduced-pom.xml | 6 ++++++ ProtocolLib/pom.xml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/ProtocolLib/dependency-reduced-pom.xml b/ProtocolLib/dependency-reduced-pom.xml index 85e35949..ae2475b5 100644 --- a/ProtocolLib/dependency-reduced-pom.xml +++ b/ProtocolLib/dependency-reduced-pom.xml @@ -1,5 +1,11 @@ + + oss-parent + org.sonatype.oss + 7 + ../pom.xml/pom.xml + 4.0.0 com.comphenix.protocol ProtocolLib diff --git a/ProtocolLib/pom.xml b/ProtocolLib/pom.xml index 361f1663..70c59606 100644 --- a/ProtocolLib/pom.xml +++ b/ProtocolLib/pom.xml @@ -10,6 +10,12 @@ UTF-8 + + org.sonatype.oss + oss-parent + 7 + + src/main/java src/test/java