Commit cf1835dfa72436fdcd82ebbcd002563503241e29
1 parent
30261f75
add handling to deal with packet object thread marshalling
Showing
3 changed files
with
164 additions
and
113 deletions
java/client/com/mumfrey/liteloader/client/PacketEventsClient.java
| ... | ... | @@ -8,8 +8,10 @@ import net.minecraft.network.login.server.S02PacketLoginSuccess; |
| 8 | 8 | import net.minecraft.network.play.INetHandlerPlayClient; |
| 9 | 9 | import net.minecraft.network.play.server.S01PacketJoinGame; |
| 10 | 10 | import net.minecraft.network.play.server.S02PacketChat; |
| 11 | +import net.minecraft.server.MinecraftServer; | |
| 11 | 12 | import net.minecraft.util.ChatComponentText; |
| 12 | 13 | import net.minecraft.util.IChatComponent; |
| 14 | +import net.minecraft.util.IThreadListener; | |
| 13 | 15 | |
| 14 | 16 | import com.mojang.realmsclient.RealmsMainScreen; |
| 15 | 17 | import com.mojang.realmsclient.dto.RealmsServer; |
| ... | ... | @@ -20,13 +22,14 @@ import com.mumfrey.liteloader.PostLoginListener; |
| 20 | 22 | import com.mumfrey.liteloader.PreJoinGameListener; |
| 21 | 23 | import com.mumfrey.liteloader.common.transformers.PacketEventInfo; |
| 22 | 24 | import com.mumfrey.liteloader.core.ClientPluginChannels; |
| 23 | -import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
| 24 | 25 | import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; |
| 25 | 26 | import com.mumfrey.liteloader.core.LiteLoader; |
| 27 | +import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
| 26 | 28 | import com.mumfrey.liteloader.core.PacketEvents; |
| 27 | 29 | import com.mumfrey.liteloader.core.event.EventCancellationException; |
| 28 | 30 | import com.mumfrey.liteloader.core.event.HandlerList; |
| 29 | 31 | import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; |
| 32 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
| 30 | 33 | import com.mumfrey.liteloader.interfaces.FastIterableDeque; |
| 31 | 34 | import com.mumfrey.liteloader.transformers.event.EventInfo; |
| 32 | 35 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
| ... | ... | @@ -109,6 +112,17 @@ public class PacketEventsClient extends PacketEvents |
| 109 | 112 | { |
| 110 | 113 | PacketEventsClient.joiningRealm = server; |
| 111 | 114 | } |
| 115 | + | |
| 116 | + @Override | |
| 117 | + protected IThreadListener getPacketContextListener(Packets.Context context) | |
| 118 | + { | |
| 119 | + if (context == Packets.Context.SERVER) | |
| 120 | + { | |
| 121 | + return MinecraftServer.getServer(); | |
| 122 | + } | |
| 123 | + | |
| 124 | + return Minecraft.getMinecraft(); | |
| 125 | + } | |
| 112 | 126 | |
| 113 | 127 | /* (non-Javadoc) |
| 114 | 128 | * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.play.server.S01PacketJoinGame) | ... | ... |
java/common/com/mumfrey/liteloader/core/PacketEvents.java
| ... | ... | @@ -12,6 +12,7 @@ import net.minecraft.network.play.client.C17PacketCustomPayload; |
| 12 | 12 | import net.minecraft.network.play.server.S01PacketJoinGame; |
| 13 | 13 | import net.minecraft.network.play.server.S02PacketChat; |
| 14 | 14 | import net.minecraft.network.play.server.S3FPacketCustomPayload; |
| 15 | +import net.minecraft.util.IThreadListener; | |
| 15 | 16 | |
| 16 | 17 | import com.mumfrey.liteloader.PacketHandler; |
| 17 | 18 | import com.mumfrey.liteloader.ServerChatFilter; |
| ... | ... | @@ -119,6 +120,13 @@ public abstract class PacketEvents implements InterfaceProvider |
| 119 | 120 | |
| 120 | 121 | private void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, int packetId) |
| 121 | 122 | { |
| 123 | + Packets packetInfo = Packets.packets[e.getPacketId()]; | |
| 124 | + IThreadListener threadListener = this.getPacketContextListener(packetInfo.getContext()); | |
| 125 | + if (threadListener != null && !threadListener.isCallingFromMinecraftThread()) | |
| 126 | + { | |
| 127 | + return; | |
| 128 | + } | |
| 129 | + | |
| 122 | 130 | if (this.handlePacketEvent(e, netHandler, packetId) || this.packetHandlers[packetId] == null || e.isCancelled()) |
| 123 | 131 | { |
| 124 | 132 | return; |
| ... | ... | @@ -133,6 +141,13 @@ public abstract class PacketEvents implements InterfaceProvider |
| 133 | 141 | } |
| 134 | 142 | |
| 135 | 143 | /** |
| 144 | + * | |
| 145 | + * @param context | |
| 146 | + * @return | |
| 147 | + */ | |
| 148 | + protected abstract IThreadListener getPacketContextListener(Packets.Context context); | |
| 149 | + | |
| 150 | + /** | |
| 136 | 151 | * @param e |
| 137 | 152 | * @param netHandler |
| 138 | 153 | * @param packetId | ... | ... |
java/common/com/mumfrey/liteloader/core/runtime/Packets.java
| ... | ... | @@ -11,119 +11,133 @@ import java.util.Map; |
| 11 | 11 | */ |
| 12 | 12 | public class Packets extends Obf |
| 13 | 13 | { |
| 14 | + /** | |
| 15 | + * Since we need to catch and deal with the fact that a packet is first marshalled across threads via PacketThreadUtil, we | |
| 16 | + * will need to know which owner object to check against the current thread in order to detect when the packet instance is being | |
| 17 | + * processed by the main message loop. The Context object describes in which context (client or server) that a particular packet | |
| 18 | + * will be processed in on the <em>receiving</em> end, and thus which object to check threading against. | |
| 19 | + * | |
| 20 | + * @author Adam Mummery-Smith | |
| 21 | + */ | |
| 22 | + public enum Context | |
| 23 | + { | |
| 24 | + CLIENT, | |
| 25 | + SERVER | |
| 26 | + } | |
| 27 | + | |
| 14 | 28 | private static Map<String, Packets> packetMap = new HashMap<String, Packets>(); |
| 15 | 29 | |
| 16 | - public static Packets S08PacketPlayerPosLook = new Packets("net.minecraft.network.play.server.S08PacketPlayerPosLook", "ii"); | |
| 17 | - public static Packets S0EPacketSpawnObject = new Packets("net.minecraft.network.play.server.S0EPacketSpawnObject", "il"); | |
| 18 | - public static Packets S11PacketSpawnExperienceOrb = new Packets("net.minecraft.network.play.server.S11PacketSpawnExperienceOrb", "im"); | |
| 19 | - public static Packets S2CPacketSpawnGlobalEntity = new Packets("net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity", "in"); | |
| 20 | - public static Packets S0FPacketSpawnMob = new Packets("net.minecraft.network.play.server.S0FPacketSpawnMob", "io"); | |
| 21 | - public static Packets S10PacketSpawnPainting = new Packets("net.minecraft.network.play.server.S10PacketSpawnPainting", "ip"); | |
| 22 | - public static Packets S0CPacketSpawnPlayer = new Packets("net.minecraft.network.play.server.S0CPacketSpawnPlayer", "iq"); | |
| 23 | - public static Packets S0BPacketAnimation = new Packets("net.minecraft.network.play.server.S0BPacketAnimation", "ir"); | |
| 24 | - public static Packets S37PacketStatistics = new Packets("net.minecraft.network.play.server.S37PacketStatistics", "is"); | |
| 25 | - public static Packets S25PacketBlockBreakAnim = new Packets("net.minecraft.network.play.server.S25PacketBlockBreakAnim", "it"); | |
| 26 | - public static Packets S35PacketUpdateTileEntity = new Packets("net.minecraft.network.play.server.S35PacketUpdateTileEntity", "iu"); | |
| 27 | - public static Packets S24PacketBlockAction = new Packets("net.minecraft.network.play.server.S24PacketBlockAction", "iv"); | |
| 28 | - public static Packets S23PacketBlockChange = new Packets("net.minecraft.network.play.server.S23PacketBlockChange", "iw"); | |
| 29 | - public static Packets S41PacketServerDifficulty = new Packets("net.minecraft.network.play.server.S41PacketServerDifficulty", "ix"); | |
| 30 | - public static Packets S3APacketTabComplete = new Packets("net.minecraft.network.play.server.S3APacketTabComplete", "iy"); | |
| 31 | - public static Packets S02PacketChat = new Packets("net.minecraft.network.play.server.S02PacketChat", "iz"); | |
| 32 | - public static Packets S22PacketMultiBlockChange = new Packets("net.minecraft.network.play.server.S22PacketMultiBlockChange", "ja"); | |
| 33 | - public static Packets S32PacketConfirmTransaction = new Packets("net.minecraft.network.play.server.S32PacketConfirmTransaction", "jc"); | |
| 34 | - public static Packets S2EPacketCloseWindow = new Packets("net.minecraft.network.play.server.S2EPacketCloseWindow", "jd"); | |
| 35 | - public static Packets S2DPacketOpenWindow = new Packets("net.minecraft.network.play.server.S2DPacketOpenWindow", "je"); | |
| 36 | - public static Packets S30PacketWindowItems = new Packets("net.minecraft.network.play.server.S30PacketWindowItems", "jf"); | |
| 37 | - public static Packets S31PacketWindowProperty = new Packets("net.minecraft.network.play.server.S31PacketWindowProperty", "jg"); | |
| 38 | - public static Packets S2FPacketSetSlot = new Packets("net.minecraft.network.play.server.S2FPacketSetSlot", "jh"); | |
| 39 | - public static Packets S3FPacketCustomPayload = new Packets("net.minecraft.network.play.server.S3FPacketCustomPayload", "ji"); | |
| 40 | - public static Packets S40PacketDisconnect = new Packets("net.minecraft.network.play.server.S40PacketDisconnect", "jj"); | |
| 41 | - public static Packets S19PacketEntityStatus = new Packets("net.minecraft.network.play.server.S19PacketEntityStatus", "jk"); | |
| 42 | - public static Packets S49PacketUpdateEntityNBT = new Packets("net.minecraft.network.play.server.S49PacketUpdateEntityNBT", "jl"); | |
| 43 | - public static Packets S27PacketExplosion = new Packets("net.minecraft.network.play.server.S27PacketExplosion", "jm"); | |
| 44 | - public static Packets S46PacketSetCompressionLevel = new Packets("net.minecraft.network.play.server.S46PacketSetCompressionLevel", "jn"); | |
| 45 | - public static Packets S2BPacketChangeGameState = new Packets("net.minecraft.network.play.server.S2BPacketChangeGameState", "jo"); | |
| 46 | - public static Packets S00PacketKeepAlive = new Packets("net.minecraft.network.play.server.S00PacketKeepAlive", "jp"); | |
| 47 | - public static Packets S21PacketChunkData = new Packets("net.minecraft.network.play.server.S21PacketChunkData", "jq"); | |
| 48 | - public static Packets S26PacketMapChunkBulk = new Packets("net.minecraft.network.play.server.S26PacketMapChunkBulk", "js"); | |
| 49 | - public static Packets S28PacketEffect = new Packets("net.minecraft.network.play.server.S28PacketEffect", "jt"); | |
| 50 | - public static Packets S2APacketParticles = new Packets("net.minecraft.network.play.server.S2APacketParticles", "ju"); | |
| 51 | - public static Packets S29PacketSoundEffect = new Packets("net.minecraft.network.play.server.S29PacketSoundEffect", "jv"); | |
| 52 | - public static Packets S01PacketJoinGame = new Packets("net.minecraft.network.play.server.S01PacketJoinGame", "jw"); | |
| 53 | - public static Packets S34PacketMaps = new Packets("net.minecraft.network.play.server.S34PacketMaps", "jx"); | |
| 54 | - public static Packets S14PacketEntity = new Packets("net.minecraft.network.play.server.S14PacketEntity", "jy"); | |
| 55 | - public static Packets S15PacketEntityRelMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S15PacketEntityRelMove", "jz"); | |
| 56 | - public static Packets S17PacketEntityLookMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S17PacketEntityLookMove", "ka"); | |
| 57 | - public static Packets S16PacketEntityLook = new Packets("net.minecraft.network.play.server.S14PacketEntity$S16PacketEntityLook", "kb"); | |
| 58 | - public static Packets S36PacketSignEditorOpen = new Packets("net.minecraft.network.play.server.S36PacketSignEditorOpen", "kc"); | |
| 59 | - public static Packets S39PacketPlayerAbilities = new Packets("net.minecraft.network.play.server.S39PacketPlayerAbilities", "kd"); | |
| 60 | - public static Packets S42PacketCombatEvent = new Packets("net.minecraft.network.play.server.S42PacketCombatEvent", "ke"); | |
| 61 | - public static Packets S38PacketPlayerListItem = new Packets("net.minecraft.network.play.server.S38PacketPlayerListItem", "kh"); | |
| 62 | - public static Packets S0APacketUseBed = new Packets("net.minecraft.network.play.server.S0APacketUseBed", "kl"); | |
| 63 | - public static Packets S13PacketDestroyEntities = new Packets("net.minecraft.network.play.server.S13PacketDestroyEntities", "km"); | |
| 64 | - public static Packets S1EPacketRemoveEntityEffect = new Packets("net.minecraft.network.play.server.S1EPacketRemoveEntityEffect", "kn"); | |
| 65 | - public static Packets S48PacketResourcePackSend = new Packets("net.minecraft.network.play.server.S48PacketResourcePackSend", "ko"); | |
| 66 | - public static Packets S07PacketRespawn = new Packets("net.minecraft.network.play.server.S07PacketRespawn", "kp"); | |
| 67 | - public static Packets S19PacketEntityHeadLook = new Packets("net.minecraft.network.play.server.S19PacketEntityHeadLook", "kq"); | |
| 68 | - public static Packets S44PacketWorldBorder = new Packets("net.minecraft.network.play.server.S44PacketWorldBorder", "kr"); | |
| 69 | - public static Packets S43PacketCamera = new Packets("net.minecraft.network.play.server.S43PacketCamera", "ku"); | |
| 70 | - public static Packets S09PacketHeldItemChange = new Packets("net.minecraft.network.play.server.S09PacketHeldItemChange", "kv"); | |
| 71 | - public static Packets S3DPacketDisplayScoreboard = new Packets("net.minecraft.network.play.server.S3DPacketDisplayScoreboard", "kw"); | |
| 72 | - public static Packets S1CPacketEntityMetadata = new Packets("net.minecraft.network.play.server.S1CPacketEntityMetadata", "kx"); | |
| 73 | - public static Packets S1BPacketEntityAttach = new Packets("net.minecraft.network.play.server.S1BPacketEntityAttach", "ky"); | |
| 74 | - public static Packets S12PacketEntityVelocity = new Packets("net.minecraft.network.play.server.S12PacketEntityVelocity", "kz"); | |
| 75 | - public static Packets S04PacketEntityEquipment = new Packets("net.minecraft.network.play.server.S04PacketEntityEquipment", "la"); | |
| 76 | - public static Packets S1FPacketSetExperience = new Packets("net.minecraft.network.play.server.S1FPacketSetExperience", "lb"); | |
| 77 | - public static Packets S06PacketUpdateHealth = new Packets("net.minecraft.network.play.server.S06PacketUpdateHealth", "lc"); | |
| 78 | - public static Packets S3BPacketScoreboardObjective = new Packets("net.minecraft.network.play.server.S3BPacketScoreboardObjective", "ld"); | |
| 79 | - public static Packets S3EPacketTeams = new Packets("net.minecraft.network.play.server.S3EPacketTeams", "le"); | |
| 80 | - public static Packets S3CPacketUpdateScore = new Packets("net.minecraft.network.play.server.S3CPacketUpdateScore", "lf"); | |
| 81 | - public static Packets S05PacketSpawnPosition = new Packets("net.minecraft.network.play.server.S05PacketSpawnPosition", "lh"); | |
| 82 | - public static Packets S03PacketTimeUpdate = new Packets("net.minecraft.network.play.server.S03PacketTimeUpdate", "li"); | |
| 83 | - public static Packets S45PacketTitle = new Packets("net.minecraft.network.play.server.S45PacketTitle", "lj"); | |
| 84 | - public static Packets S33PacketUpdateSign = new Packets("net.minecraft.network.play.server.S33PacketUpdateSign", "ll"); | |
| 85 | - public static Packets S47PacketPlayerListHeaderFooter = new Packets("net.minecraft.network.play.server.S47PacketPlayerListHeaderFooter", "lm"); | |
| 86 | - public static Packets S0DPacketCollectItem = new Packets("net.minecraft.network.play.server.S0DPacketCollectItem", "ln"); | |
| 87 | - public static Packets S18PacketEntityTeleport = new Packets("net.minecraft.network.play.server.S18PacketEntityTeleport", "lo"); | |
| 88 | - public static Packets S20PacketEntityProperties = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties", "lp"); | |
| 89 | - public static Packets S1DPacketEntityEffect = new Packets("net.minecraft.network.play.server.S1DPacketEntityEffect", "lr"); | |
| 90 | - public static Packets C14PacketTabComplete = new Packets("net.minecraft.network.play.client.C14PacketTabComplete", "lt"); | |
| 91 | - public static Packets C01PacketChatMessage = new Packets("net.minecraft.network.play.client.C01PacketChatMessage", "lu"); | |
| 92 | - public static Packets C16PacketClientStatus = new Packets("net.minecraft.network.play.client.C16PacketClientStatus", "lv"); | |
| 93 | - public static Packets C15PacketClientSettings = new Packets("net.minecraft.network.play.client.C15PacketClientSettings", "lx"); | |
| 94 | - public static Packets C0FPacketConfirmTransaction = new Packets("net.minecraft.network.play.client.C0FPacketConfirmTransaction", "ly"); | |
| 95 | - public static Packets C11PacketEnchantItem = new Packets("net.minecraft.network.play.client.C11PacketEnchantItem", "lz"); | |
| 96 | - public static Packets C0EPacketClickWindow = new Packets("net.minecraft.network.play.client.C0EPacketClickWindow", "ma"); | |
| 97 | - public static Packets C0DPacketCloseWindow = new Packets("net.minecraft.network.play.client.C0DPacketCloseWindow", "mb"); | |
| 98 | - public static Packets C17PacketCustomPayload = new Packets("net.minecraft.network.play.client.C17PacketCustomPayload", "mc"); | |
| 99 | - public static Packets C02PacketUseEntity = new Packets("net.minecraft.network.play.client.C02PacketUseEntity", "md"); | |
| 100 | - public static Packets C00PacketKeepAlive = new Packets("net.minecraft.network.play.client.C00PacketKeepAlive", "mf"); | |
| 101 | - public static Packets C03PacketPlayer = new Packets("net.minecraft.network.play.client.C03PacketPlayer", "mg"); | |
| 102 | - public static Packets C04PacketPlayerPosition = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition", "mh"); | |
| 103 | - public static Packets C06PacketPlayerPosLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook", "mi"); | |
| 104 | - public static Packets C05PacketPlayerLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C05PacketPlayerLook", "mj"); | |
| 105 | - public static Packets C13PacketPlayerAbilities = new Packets("net.minecraft.network.play.client.C13PacketPlayerAbilities", "mk"); | |
| 106 | - public static Packets C07PacketPlayerDigging = new Packets("net.minecraft.network.play.client.C07PacketPlayerDigging", "ml"); | |
| 107 | - public static Packets C0BPacketEntityAction = new Packets("net.minecraft.network.play.client.C0BPacketEntityAction", "mn"); | |
| 108 | - public static Packets C0CPacketInput = new Packets("net.minecraft.network.play.client.C0CPacketInput", "mp"); | |
| 109 | - public static Packets C19PacketResourcePackStatus = new Packets("net.minecraft.network.play.client.C19PacketResourcePackStatus", "mq"); | |
| 110 | - public static Packets C09PacketHeldItemChange = new Packets("net.minecraft.network.play.client.C09PacketHeldItemChange", "ms"); | |
| 111 | - public static Packets C10PacketCreativeInventoryAction = new Packets("net.minecraft.network.play.client.C10PacketCreativeInventoryAction", "mt"); | |
| 112 | - public static Packets C12PacketUpdateSign = new Packets("net.minecraft.network.play.client.C12PacketUpdateSign", "mu"); | |
| 113 | - public static Packets C0APacketAnimation = new Packets("net.minecraft.network.play.client.C0APacketAnimation", "mv"); | |
| 114 | - public static Packets C18PacketSpectate = new Packets("net.minecraft.network.play.client.C18PacketSpectate", "mw"); | |
| 115 | - public static Packets C08PacketPlayerBlockPlacement = new Packets("net.minecraft.network.play.client.C08PacketPlayerBlockPlacement", "mx"); | |
| 116 | - public static Packets C00Handshake = new Packets("net.minecraft.network.handshake.client.C00Handshake", "mz"); | |
| 117 | - public static Packets S02PacketLoginSuccess = new Packets("net.minecraft.network.login.server.S02PacketLoginSuccess", "nd"); | |
| 118 | - public static Packets S01PacketEncryptionRequest = new Packets("net.minecraft.network.login.server.S01PacketEncryptionRequest", "ne"); | |
| 119 | - public static Packets S03PacketEnableCompression = new Packets("net.minecraft.network.login.server.S03PacketEnableCompression", "nf"); | |
| 120 | - public static Packets S00PacketDisconnect = new Packets("net.minecraft.network.login.server.S00PacketDisconnect", "ng"); | |
| 121 | - public static Packets C00PacketLoginStart = new Packets("net.minecraft.network.login.client.C00PacketLoginStart", "ni"); | |
| 122 | - public static Packets C01PacketEncryptionResponse = new Packets("net.minecraft.network.login.client.C01PacketEncryptionResponse", "nj"); | |
| 123 | - public static Packets S01PacketPong = new Packets("net.minecraft.network.status.server.S01PacketPong", "nn"); | |
| 124 | - public static Packets S00PacketServerInfo = new Packets("net.minecraft.network.status.server.S00PacketServerInfo", "no"); | |
| 125 | - public static Packets C01PacketPing = new Packets("net.minecraft.network.status.client.C01PacketPing", "nw"); | |
| 126 | - public static Packets C00PacketServerQuery = new Packets("net.minecraft.network.status.client.C00PacketServerQuery", "nx"); | |
| 30 | + public static Packets S08PacketPlayerPosLook = new Packets("net.minecraft.network.play.server.S08PacketPlayerPosLook", "ii", Context.CLIENT); | |
| 31 | + public static Packets S0EPacketSpawnObject = new Packets("net.minecraft.network.play.server.S0EPacketSpawnObject", "il", Context.CLIENT); | |
| 32 | + public static Packets S11PacketSpawnExperienceOrb = new Packets("net.minecraft.network.play.server.S11PacketSpawnExperienceOrb", "im", Context.CLIENT); | |
| 33 | + public static Packets S2CPacketSpawnGlobalEntity = new Packets("net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity", "in", Context.CLIENT); | |
| 34 | + public static Packets S0FPacketSpawnMob = new Packets("net.minecraft.network.play.server.S0FPacketSpawnMob", "io", Context.CLIENT); | |
| 35 | + public static Packets S10PacketSpawnPainting = new Packets("net.minecraft.network.play.server.S10PacketSpawnPainting", "ip", Context.CLIENT); | |
| 36 | + public static Packets S0CPacketSpawnPlayer = new Packets("net.minecraft.network.play.server.S0CPacketSpawnPlayer", "iq", Context.CLIENT); | |
| 37 | + public static Packets S0BPacketAnimation = new Packets("net.minecraft.network.play.server.S0BPacketAnimation", "ir", Context.CLIENT); | |
| 38 | + public static Packets S37PacketStatistics = new Packets("net.minecraft.network.play.server.S37PacketStatistics", "is", Context.CLIENT); | |
| 39 | + public static Packets S25PacketBlockBreakAnim = new Packets("net.minecraft.network.play.server.S25PacketBlockBreakAnim", "it", Context.CLIENT); | |
| 40 | + public static Packets S35PacketUpdateTileEntity = new Packets("net.minecraft.network.play.server.S35PacketUpdateTileEntity", "iu", Context.CLIENT); | |
| 41 | + public static Packets S24PacketBlockAction = new Packets("net.minecraft.network.play.server.S24PacketBlockAction", "iv", Context.CLIENT); | |
| 42 | + public static Packets S23PacketBlockChange = new Packets("net.minecraft.network.play.server.S23PacketBlockChange", "iw", Context.CLIENT); | |
| 43 | + public static Packets S41PacketServerDifficulty = new Packets("net.minecraft.network.play.server.S41PacketServerDifficulty", "ix", Context.CLIENT); | |
| 44 | + public static Packets S3APacketTabComplete = new Packets("net.minecraft.network.play.server.S3APacketTabComplete", "iy", Context.CLIENT); | |
| 45 | + public static Packets S02PacketChat = new Packets("net.minecraft.network.play.server.S02PacketChat", "iz", Context.CLIENT); | |
| 46 | + public static Packets S22PacketMultiBlockChange = new Packets("net.minecraft.network.play.server.S22PacketMultiBlockChange", "ja", Context.CLIENT); | |
| 47 | + public static Packets S32PacketConfirmTransaction = new Packets("net.minecraft.network.play.server.S32PacketConfirmTransaction", "jc", Context.CLIENT); | |
| 48 | + public static Packets S2EPacketCloseWindow = new Packets("net.minecraft.network.play.server.S2EPacketCloseWindow", "jd", Context.CLIENT); | |
| 49 | + public static Packets S2DPacketOpenWindow = new Packets("net.minecraft.network.play.server.S2DPacketOpenWindow", "je", Context.CLIENT); | |
| 50 | + public static Packets S30PacketWindowItems = new Packets("net.minecraft.network.play.server.S30PacketWindowItems", "jf", Context.CLIENT); | |
| 51 | + public static Packets S31PacketWindowProperty = new Packets("net.minecraft.network.play.server.S31PacketWindowProperty", "jg", Context.CLIENT); | |
| 52 | + public static Packets S2FPacketSetSlot = new Packets("net.minecraft.network.play.server.S2FPacketSetSlot", "jh", Context.CLIENT); | |
| 53 | + public static Packets S3FPacketCustomPayload = new Packets("net.minecraft.network.play.server.S3FPacketCustomPayload", "ji", Context.CLIENT); | |
| 54 | + public static Packets S40PacketDisconnect = new Packets("net.minecraft.network.play.server.S40PacketDisconnect", "jj", Context.CLIENT); | |
| 55 | + public static Packets S19PacketEntityStatus = new Packets("net.minecraft.network.play.server.S19PacketEntityStatus", "jk", Context.CLIENT); | |
| 56 | + public static Packets S49PacketUpdateEntityNBT = new Packets("net.minecraft.network.play.server.S49PacketUpdateEntityNBT", "jl", Context.CLIENT); | |
| 57 | + public static Packets S27PacketExplosion = new Packets("net.minecraft.network.play.server.S27PacketExplosion", "jm", Context.CLIENT); | |
| 58 | + public static Packets S46PacketSetCompressionLevel = new Packets("net.minecraft.network.play.server.S46PacketSetCompressionLevel", "jn", Context.CLIENT); | |
| 59 | + public static Packets S2BPacketChangeGameState = new Packets("net.minecraft.network.play.server.S2BPacketChangeGameState", "jo", Context.CLIENT); | |
| 60 | + public static Packets S00PacketKeepAlive = new Packets("net.minecraft.network.play.server.S00PacketKeepAlive", "jp", Context.CLIENT); | |
| 61 | + public static Packets S21PacketChunkData = new Packets("net.minecraft.network.play.server.S21PacketChunkData", "jq", Context.CLIENT); | |
| 62 | + public static Packets S26PacketMapChunkBulk = new Packets("net.minecraft.network.play.server.S26PacketMapChunkBulk", "js", Context.CLIENT); | |
| 63 | + public static Packets S28PacketEffect = new Packets("net.minecraft.network.play.server.S28PacketEffect", "jt", Context.CLIENT); | |
| 64 | + public static Packets S2APacketParticles = new Packets("net.minecraft.network.play.server.S2APacketParticles", "ju", Context.CLIENT); | |
| 65 | + public static Packets S29PacketSoundEffect = new Packets("net.minecraft.network.play.server.S29PacketSoundEffect", "jv", Context.CLIENT); | |
| 66 | + public static Packets S01PacketJoinGame = new Packets("net.minecraft.network.play.server.S01PacketJoinGame", "jw", Context.CLIENT); | |
| 67 | + public static Packets S34PacketMaps = new Packets("net.minecraft.network.play.server.S34PacketMaps", "jx", Context.CLIENT); | |
| 68 | + public static Packets S14PacketEntity = new Packets("net.minecraft.network.play.server.S14PacketEntity", "jy", Context.CLIENT); | |
| 69 | + public static Packets S15PacketEntityRelMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S15PacketEntityRelMove", "jz", Context.CLIENT); | |
| 70 | + public static Packets S17PacketEntityLookMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S17PacketEntityLookMove", "ka", Context.CLIENT); | |
| 71 | + public static Packets S16PacketEntityLook = new Packets("net.minecraft.network.play.server.S14PacketEntity$S16PacketEntityLook", "kb", Context.CLIENT); | |
| 72 | + public static Packets S36PacketSignEditorOpen = new Packets("net.minecraft.network.play.server.S36PacketSignEditorOpen", "kc", Context.CLIENT); | |
| 73 | + public static Packets S39PacketPlayerAbilities = new Packets("net.minecraft.network.play.server.S39PacketPlayerAbilities", "kd", Context.CLIENT); | |
| 74 | + public static Packets S42PacketCombatEvent = new Packets("net.minecraft.network.play.server.S42PacketCombatEvent", "ke", Context.CLIENT); | |
| 75 | + public static Packets S38PacketPlayerListItem = new Packets("net.minecraft.network.play.server.S38PacketPlayerListItem", "kh", Context.CLIENT); | |
| 76 | + public static Packets S0APacketUseBed = new Packets("net.minecraft.network.play.server.S0APacketUseBed", "kl", Context.CLIENT); | |
| 77 | + public static Packets S13PacketDestroyEntities = new Packets("net.minecraft.network.play.server.S13PacketDestroyEntities", "km", Context.CLIENT); | |
| 78 | + public static Packets S1EPacketRemoveEntityEffect = new Packets("net.minecraft.network.play.server.S1EPacketRemoveEntityEffect", "kn", Context.CLIENT); | |
| 79 | + public static Packets S48PacketResourcePackSend = new Packets("net.minecraft.network.play.server.S48PacketResourcePackSend", "ko", Context.CLIENT); | |
| 80 | + public static Packets S07PacketRespawn = new Packets("net.minecraft.network.play.server.S07PacketRespawn", "kp", Context.CLIENT); | |
| 81 | + public static Packets S19PacketEntityHeadLook = new Packets("net.minecraft.network.play.server.S19PacketEntityHeadLook", "kq", Context.CLIENT); | |
| 82 | + public static Packets S44PacketWorldBorder = new Packets("net.minecraft.network.play.server.S44PacketWorldBorder", "kr", Context.CLIENT); | |
| 83 | + public static Packets S43PacketCamera = new Packets("net.minecraft.network.play.server.S43PacketCamera", "ku", Context.CLIENT); | |
| 84 | + public static Packets S09PacketHeldItemChange = new Packets("net.minecraft.network.play.server.S09PacketHeldItemChange", "kv", Context.CLIENT); | |
| 85 | + public static Packets S3DPacketDisplayScoreboard = new Packets("net.minecraft.network.play.server.S3DPacketDisplayScoreboard", "kw", Context.CLIENT); | |
| 86 | + public static Packets S1CPacketEntityMetadata = new Packets("net.minecraft.network.play.server.S1CPacketEntityMetadata", "kx", Context.CLIENT); | |
| 87 | + public static Packets S1BPacketEntityAttach = new Packets("net.minecraft.network.play.server.S1BPacketEntityAttach", "ky", Context.CLIENT); | |
| 88 | + public static Packets S12PacketEntityVelocity = new Packets("net.minecraft.network.play.server.S12PacketEntityVelocity", "kz", Context.CLIENT); | |
| 89 | + public static Packets S04PacketEntityEquipment = new Packets("net.minecraft.network.play.server.S04PacketEntityEquipment", "la", Context.CLIENT); | |
| 90 | + public static Packets S1FPacketSetExperience = new Packets("net.minecraft.network.play.server.S1FPacketSetExperience", "lb", Context.CLIENT); | |
| 91 | + public static Packets S06PacketUpdateHealth = new Packets("net.minecraft.network.play.server.S06PacketUpdateHealth", "lc", Context.CLIENT); | |
| 92 | + public static Packets S3BPacketScoreboardObjective = new Packets("net.minecraft.network.play.server.S3BPacketScoreboardObjective", "ld", Context.CLIENT); | |
| 93 | + public static Packets S3EPacketTeams = new Packets("net.minecraft.network.play.server.S3EPacketTeams", "le", Context.CLIENT); | |
| 94 | + public static Packets S3CPacketUpdateScore = new Packets("net.minecraft.network.play.server.S3CPacketUpdateScore", "lf", Context.CLIENT); | |
| 95 | + public static Packets S05PacketSpawnPosition = new Packets("net.minecraft.network.play.server.S05PacketSpawnPosition", "lh", Context.CLIENT); | |
| 96 | + public static Packets S03PacketTimeUpdate = new Packets("net.minecraft.network.play.server.S03PacketTimeUpdate", "li", Context.CLIENT); | |
| 97 | + public static Packets S45PacketTitle = new Packets("net.minecraft.network.play.server.S45PacketTitle", "lj", Context.CLIENT); | |
| 98 | + public static Packets S33PacketUpdateSign = new Packets("net.minecraft.network.play.server.S33PacketUpdateSign", "ll", Context.CLIENT); | |
| 99 | + public static Packets S47PacketPlayerListHeaderFooter = new Packets("net.minecraft.network.play.server.S47PacketPlayerListHeaderFooter", "lm", Context.CLIENT); | |
| 100 | + public static Packets S0DPacketCollectItem = new Packets("net.minecraft.network.play.server.S0DPacketCollectItem", "ln", Context.CLIENT); | |
| 101 | + public static Packets S18PacketEntityTeleport = new Packets("net.minecraft.network.play.server.S18PacketEntityTeleport", "lo", Context.CLIENT); | |
| 102 | + public static Packets S20PacketEntityProperties = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties", "lp", Context.CLIENT); | |
| 103 | + public static Packets S1DPacketEntityEffect = new Packets("net.minecraft.network.play.server.S1DPacketEntityEffect", "lr", Context.CLIENT); | |
| 104 | + public static Packets C14PacketTabComplete = new Packets("net.minecraft.network.play.client.C14PacketTabComplete", "lt", Context.SERVER); | |
| 105 | + public static Packets C01PacketChatMessage = new Packets("net.minecraft.network.play.client.C01PacketChatMessage", "lu", Context.SERVER); | |
| 106 | + public static Packets C16PacketClientStatus = new Packets("net.minecraft.network.play.client.C16PacketClientStatus", "lv", Context.SERVER); | |
| 107 | + public static Packets C15PacketClientSettings = new Packets("net.minecraft.network.play.client.C15PacketClientSettings", "lx", Context.SERVER); | |
| 108 | + public static Packets C0FPacketConfirmTransaction = new Packets("net.minecraft.network.play.client.C0FPacketConfirmTransaction", "ly", Context.SERVER); | |
| 109 | + public static Packets C11PacketEnchantItem = new Packets("net.minecraft.network.play.client.C11PacketEnchantItem", "lz", Context.SERVER); | |
| 110 | + public static Packets C0EPacketClickWindow = new Packets("net.minecraft.network.play.client.C0EPacketClickWindow", "ma", Context.SERVER); | |
| 111 | + public static Packets C0DPacketCloseWindow = new Packets("net.minecraft.network.play.client.C0DPacketCloseWindow", "mb", Context.SERVER); | |
| 112 | + public static Packets C17PacketCustomPayload = new Packets("net.minecraft.network.play.client.C17PacketCustomPayload", "mc", Context.SERVER); | |
| 113 | + public static Packets C02PacketUseEntity = new Packets("net.minecraft.network.play.client.C02PacketUseEntity", "md", Context.SERVER); | |
| 114 | + public static Packets C00PacketKeepAlive = new Packets("net.minecraft.network.play.client.C00PacketKeepAlive", "mf", Context.SERVER); | |
| 115 | + public static Packets C03PacketPlayer = new Packets("net.minecraft.network.play.client.C03PacketPlayer", "mg", Context.SERVER); | |
| 116 | + public static Packets C04PacketPlayerPosition = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition", "mh", Context.SERVER); | |
| 117 | + public static Packets C06PacketPlayerPosLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook", "mi", Context.SERVER); | |
| 118 | + public static Packets C05PacketPlayerLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C05PacketPlayerLook", "mj", Context.SERVER); | |
| 119 | + public static Packets C13PacketPlayerAbilities = new Packets("net.minecraft.network.play.client.C13PacketPlayerAbilities", "mk", Context.SERVER); | |
| 120 | + public static Packets C07PacketPlayerDigging = new Packets("net.minecraft.network.play.client.C07PacketPlayerDigging", "ml", Context.SERVER); | |
| 121 | + public static Packets C0BPacketEntityAction = new Packets("net.minecraft.network.play.client.C0BPacketEntityAction", "mn", Context.SERVER); | |
| 122 | + public static Packets C0CPacketInput = new Packets("net.minecraft.network.play.client.C0CPacketInput", "mp", Context.SERVER); | |
| 123 | + public static Packets C19PacketResourcePackStatus = new Packets("net.minecraft.network.play.client.C19PacketResourcePackStatus", "mq", Context.SERVER); | |
| 124 | + public static Packets C09PacketHeldItemChange = new Packets("net.minecraft.network.play.client.C09PacketHeldItemChange", "ms", Context.SERVER); | |
| 125 | + public static Packets C10PacketCreativeInventoryAction = new Packets("net.minecraft.network.play.client.C10PacketCreativeInventoryAction", "mt", Context.SERVER); | |
| 126 | + public static Packets C12PacketUpdateSign = new Packets("net.minecraft.network.play.client.C12PacketUpdateSign", "mu", Context.SERVER); | |
| 127 | + public static Packets C0APacketAnimation = new Packets("net.minecraft.network.play.client.C0APacketAnimation", "mv", Context.SERVER); | |
| 128 | + public static Packets C18PacketSpectate = new Packets("net.minecraft.network.play.client.C18PacketSpectate", "mw", Context.SERVER); | |
| 129 | + public static Packets C08PacketPlayerBlockPlacement = new Packets("net.minecraft.network.play.client.C08PacketPlayerBlockPlacement", "mx", Context.SERVER); | |
| 130 | + public static Packets C00Handshake = new Packets("net.minecraft.network.handshake.client.C00Handshake", "mz", Context.SERVER); | |
| 131 | + public static Packets S02PacketLoginSuccess = new Packets("net.minecraft.network.login.server.S02PacketLoginSuccess", "nd", Context.CLIENT); | |
| 132 | + public static Packets S01PacketEncryptionRequest = new Packets("net.minecraft.network.login.server.S01PacketEncryptionRequest", "ne", Context.CLIENT); | |
| 133 | + public static Packets S03PacketEnableCompression = new Packets("net.minecraft.network.login.server.S03PacketEnableCompression", "nf", Context.CLIENT); | |
| 134 | + public static Packets S00PacketDisconnect = new Packets("net.minecraft.network.login.server.S00PacketDisconnect", "ng", Context.CLIENT); | |
| 135 | + public static Packets C00PacketLoginStart = new Packets("net.minecraft.network.login.client.C00PacketLoginStart", "ni", Context.SERVER); | |
| 136 | + public static Packets C01PacketEncryptionResponse = new Packets("net.minecraft.network.login.client.C01PacketEncryptionResponse", "nj", Context.SERVER); | |
| 137 | + public static Packets S01PacketPong = new Packets("net.minecraft.network.status.server.S01PacketPong", "nn", Context.CLIENT); | |
| 138 | + public static Packets S00PacketServerInfo = new Packets("net.minecraft.network.status.server.S00PacketServerInfo", "no", Context.CLIENT); | |
| 139 | + public static Packets C01PacketPing = new Packets("net.minecraft.network.status.client.C01PacketPing", "nw", Context.SERVER); | |
| 140 | + public static Packets C00PacketServerQuery = new Packets("net.minecraft.network.status.client.C00PacketServerQuery", "nx", Context.SERVER); | |
| 127 | 141 | |
| 128 | 142 | public static final Packets[] packets = new Packets[] { |
| 129 | 143 | S08PacketPlayerPosLook, |
| ... | ... | @@ -245,13 +259,16 @@ public class Packets extends Obf |
| 245 | 259 | |
| 246 | 260 | private final int index; |
| 247 | 261 | |
| 248 | - private Packets(String seargeName, String obfName) | |
| 262 | + private final Context context; | |
| 263 | + | |
| 264 | + private Packets(String seargeName, String obfName, Context context) | |
| 249 | 265 | { |
| 250 | 266 | super(seargeName, obfName); |
| 251 | 267 | |
| 252 | 268 | this.shortName = seargeName.substring(Math.max(seargeName.lastIndexOf('.'), seargeName.lastIndexOf('$')) + 1); |
| 253 | 269 | this.index = Packets.nextPacketIndex++; |
| 254 | 270 | Packets.packetMap.put(this.shortName, this); |
| 271 | + this.context = context; | |
| 255 | 272 | } |
| 256 | 273 | |
| 257 | 274 | public int getIndex() |
| ... | ... | @@ -263,6 +280,11 @@ public class Packets extends Obf |
| 263 | 280 | { |
| 264 | 281 | return this.shortName; |
| 265 | 282 | } |
| 283 | + | |
| 284 | + public Context getContext() | |
| 285 | + { | |
| 286 | + return this.context; | |
| 287 | + } | |
| 266 | 288 | |
| 267 | 289 | public static int indexOf(String packetClassName) |
| 268 | 290 | { | ... | ... |