Commit fe379483ea4a07c0e535f42bd772ebbf96a7bd68

Authored by Mumfrey
1 parent 7347bfef

Initial update to 1.9

Showing 62 changed files with 960 additions and 733 deletions
gradle.properties
... ... @@ -5,6 +5,6 @@ description=LiteLoader
5 5 url=http://www.liteloader.com
6 6 organization=LiteLoader
7 7 buildType=SNAPSHOT
8   -buildVersion=1.8.9
9   -mcVersion=1.8.9
10   -mcMappings=snapshot_20160204
11 8 \ No newline at end of file
  9 +buildVersion=1.9
  10 +mcVersion=1.9
  11 +mcMappings=snapshot_20160411
12 12 \ No newline at end of file
... ...
src/client/java/com/mumfrey/liteloader/ChatFilter.java
... ... @@ -2,7 +2,7 @@ package com.mumfrey.liteloader;
2 2  
3 3 import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue;
4 4  
5   -import net.minecraft.util.IChatComponent;
  5 +import net.minecraft.util.text.ITextComponent;
6 6  
7 7  
8 8 /**
... ... @@ -23,5 +23,5 @@ public interface ChatFilter extends LiteMod
23 23 *
24 24 * @return True to keep the packet, false to discard
25 25 */
26   - public abstract boolean onChat(IChatComponent chat, String message, ReturnValue<IChatComponent> newMessage);
  26 + public abstract boolean onChat(ITextComponent chat, String message, ReturnValue<ITextComponent> newMessage);
27 27 }
... ...
src/client/java/com/mumfrey/liteloader/ChatListener.java
1 1 package com.mumfrey.liteloader;
2 2  
3   -import net.minecraft.util.IChatComponent;
  3 +import net.minecraft.util.text.ITextComponent;
4 4  
5 5  
6 6 /**
... ... @@ -13,8 +13,8 @@ public interface ChatListener extends LiteMod
13 13 /**
14 14 * Handle an inbound message
15 15 *
16   - * @param chat IChatComponent parsed from the chat packet
  16 + * @param chat ITextComponent parsed from the chat packet
17 17 * @param message Chat message parsed from the chat message component
18 18 */
19   - public abstract void onChat(IChatComponent chat, String message);
  19 + public abstract void onChat(ITextComponent chat, String message);
20 20 }
... ...
src/client/java/com/mumfrey/liteloader/JoinGameListener.java
... ... @@ -2,7 +2,7 @@ package com.mumfrey.liteloader;
2 2  
3 3 import net.minecraft.client.multiplayer.ServerData;
4 4 import net.minecraft.network.INetHandler;
5   -import net.minecraft.network.play.server.S01PacketJoinGame;
  5 +import net.minecraft.network.play.server.SPacketJoinGame;
6 6  
7 7 import com.mojang.realmsclient.dto.RealmsServer;
8 8  
... ... @@ -25,5 +25,5 @@ public interface JoinGameListener extends LiteMod
25 25 * @param realmsServer If connecting to a realm, a reference to the
26 26 * RealmsServer object
27 27 */
28   - public abstract void onJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket, ServerData serverData, RealmsServer realmsServer);
  28 + public abstract void onJoinGame(INetHandler netHandler, SPacketJoinGame joinGamePacket, ServerData serverData, RealmsServer realmsServer);
29 29 }
... ...
src/client/java/com/mumfrey/liteloader/OutboundChatListener.java
1 1 package com.mumfrey.liteloader;
2 2  
3   -import net.minecraft.network.play.client.C01PacketChatMessage;
  3 +import net.minecraft.network.play.client.CPacketChatMessage;
4 4  
5 5 /**
6 6 * Interface for mods which want to monitor outbound chat
... ... @@ -16,5 +16,5 @@ public interface OutboundChatListener extends LiteMod
16 16 * @param packet
17 17 * @param message
18 18 */
19   - public abstract void onSendChatMessage(C01PacketChatMessage packet, String message);
  19 + public abstract void onSendChatMessage(CPacketChatMessage packet, String message);
20 20 }
... ...
src/client/java/com/mumfrey/liteloader/PostLoginListener.java
1 1 package com.mumfrey.liteloader;
2 2  
3 3 import net.minecraft.network.login.INetHandlerLoginClient;
4   -import net.minecraft.network.login.server.S02PacketLoginSuccess;
  4 +import net.minecraft.network.login.server.SPacketLoginSuccess;
5 5  
6 6 /**
7 7 *
... ... @@ -17,5 +17,5 @@ public interface PostLoginListener extends LiteMod
17 17 * @param netHandler
18 18 * @param packet
19 19 */
20   - public abstract void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess packet);
  20 + public abstract void onPostLogin(INetHandlerLoginClient netHandler, SPacketLoginSuccess packet);
21 21 }
... ...
src/client/java/com/mumfrey/liteloader/ScreenshotListener.java
1 1 package com.mumfrey.liteloader;
2 2  
3 3 import net.minecraft.client.shader.Framebuffer;
4   -import net.minecraft.util.IChatComponent;
  4 +import net.minecraft.util.text.ITextComponent;
5 5  
6 6 import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue;
7 7  
... ... @@ -24,5 +24,5 @@ public interface ScreenshotListener extends LiteMod
24 24 * @return FALSE to suspend further processing, or TRUE to allow processing
25 25 * to continue normally
26 26 */
27   - public boolean onSaveScreenshot(String screenshotName, int width, int height, Framebuffer fbo, ReturnValue<IChatComponent> message);
  27 + public boolean onSaveScreenshot(String screenshotName, int width, int height, Framebuffer fbo, ReturnValue<ITextComponent> message);
28 28 }
... ...
src/client/java/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
... ... @@ -9,11 +9,11 @@ import net.minecraft.network.INetHandler;
9 9 import net.minecraft.network.NetworkManager;
10 10 import net.minecraft.network.PacketBuffer;
11 11 import net.minecraft.network.login.INetHandlerLoginClient;
12   -import net.minecraft.network.login.server.S02PacketLoginSuccess;
  12 +import net.minecraft.network.login.server.SPacketLoginSuccess;
13 13 import net.minecraft.network.play.INetHandlerPlayClient;
14   -import net.minecraft.network.play.client.C17PacketCustomPayload;
15   -import net.minecraft.network.play.server.S01PacketJoinGame;
16   -import net.minecraft.network.play.server.S3FPacketCustomPayload;
  14 +import net.minecraft.network.play.client.CPacketCustomPayload;
  15 +import net.minecraft.network.play.server.SPacketJoinGame;
  16 +import net.minecraft.network.play.server.SPacketCustomPayload;
17 17  
18 18 /**
19 19 * Handler for client plugin channels
... ... @@ -26,7 +26,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
26 26 * @param netHandler
27 27 * @param loginPacket
28 28 */
29   - void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess loginPacket)
  29 + void onPostLogin(INetHandlerLoginClient netHandler, SPacketLoginSuccess loginPacket)
30 30 {
31 31 this.clearPluginChannels(netHandler);
32 32 }
... ... @@ -35,7 +35,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
35 35 * @param netHandler
36 36 * @param loginPacket
37 37 */
38   - void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket)
  38 + void onJoinGame(INetHandler netHandler, SPacketJoinGame loginPacket)
39 39 {
40 40 this.sendRegisteredPluginChannels(netHandler);
41 41 }
... ... @@ -46,7 +46,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
46 46 * @param customPayload
47 47 */
48 48 @Override
49   - public void onPluginChannelMessage(S3FPacketCustomPayload customPayload)
  49 + public void onPluginChannelMessage(SPacketCustomPayload customPayload)
50 50 {
51 51 if (customPayload != null && customPayload.getChannelName() != null)
52 52 {
... ... @@ -67,11 +67,11 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
67 67 if (netHandler instanceof INetHandlerLoginClient)
68 68 {
69 69 NetworkManager networkManager = ((IClientNetLoginHandler)netHandler).getNetMgr();
70   - networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData));
  70 + networkManager.sendPacket(new CPacketCustomPayload(CHANNEL_REGISTER, registrationData));
71 71 }
72 72 else if (netHandler instanceof INetHandlerPlayClient)
73 73 {
74   - ClientPluginChannelsClient.dispatch(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData));
  74 + ClientPluginChannelsClient.dispatch(new CPacketCustomPayload(CHANNEL_REGISTER, registrationData));
75 75 }
76 76 }
77 77  
... ... @@ -95,14 +95,14 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
95 95 throw new UnregisteredChannelException(channel);
96 96 }
97 97  
98   - C17PacketCustomPayload payload = new C17PacketCustomPayload(channel, data);
  98 + CPacketCustomPayload payload = new CPacketCustomPayload(channel, data);
99 99 return ClientPluginChannelsClient.dispatch(payload);
100 100 }
101 101  
102 102 /**
103 103 * @param payload
104 104 */
105   - static boolean dispatch(C17PacketCustomPayload payload)
  105 + static boolean dispatch(CPacketCustomPayload payload)
106 106 {
107 107 try
108 108 {
... ...
src/client/java/com/mumfrey/liteloader/client/ClientProxy.java
... ... @@ -16,7 +16,7 @@ import net.minecraft.client.renderer.entity.RenderManager;
16 16 import net.minecraft.client.shader.Framebuffer;
17 17 import net.minecraft.entity.Entity;
18 18 import net.minecraft.server.integrated.IntegratedServer;
19   -import net.minecraft.util.IChatComponent;
  19 +import net.minecraft.util.text.ITextComponent;
20 20 import net.minecraft.world.WorldSettings;
21 21  
22 22 /**
... ... @@ -165,7 +165,7 @@ public abstract class ClientProxy extends Proxy
165 165 ClientProxy.broker.onRenderTerrain(partialTicks, pass, timeSlice);
166 166 }
167 167  
168   - public static void onSaveScreenshot(CallbackInfoReturnable<IChatComponent> ci, File gameDir, String name, int width, int height,
  168 + public static void onSaveScreenshot(CallbackInfoReturnable<ITextComponent> ci, File gameDir, String name, int width, int height,
169 169 Framebuffer fbo)
170 170 {
171 171 ClientProxy.broker.onScreenshot(ci, name, width, height, fbo);
... ...
src/client/java/com/mumfrey/liteloader/client/LiteLoaderCoreProviderClient.java
... ... @@ -5,7 +5,7 @@ import net.minecraft.client.resources.IResourceManager;
5 5 import net.minecraft.client.resources.IResourcePack;
6 6 import net.minecraft.client.resources.SimpleReloadableResourceManager;
7 7 import net.minecraft.network.INetHandler;
8   -import net.minecraft.network.play.server.S01PacketJoinGame;
  8 +import net.minecraft.network.play.server.SPacketJoinGame;
9 9 import net.minecraft.world.World;
10 10  
11 11 import com.mumfrey.liteloader.api.CoreProvider;
... ... @@ -85,7 +85,7 @@ public class LiteLoaderCoreProviderClient implements CoreProvider
85 85 }
86 86  
87 87 @Override
88   - public void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket)
  88 + public void onJoinGame(INetHandler netHandler, SPacketJoinGame loginPacket)
89 89 {
90 90 }
91 91  
... ...
src/client/java/com/mumfrey/liteloader/client/LiteLoaderEventBrokerClient.java
... ... @@ -4,7 +4,20 @@ import org.lwjgl.input.Mouse;
4 4 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
5 5 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
6 6  
7   -import com.mumfrey.liteloader.*;
  7 +import com.mumfrey.liteloader.ChatRenderListener;
  8 +import com.mumfrey.liteloader.EntityRenderListener;
  9 +import com.mumfrey.liteloader.FrameBufferListener;
  10 +import com.mumfrey.liteloader.GameLoopListener;
  11 +import com.mumfrey.liteloader.HUDRenderListener;
  12 +import com.mumfrey.liteloader.InitCompleteListener;
  13 +import com.mumfrey.liteloader.OutboundChatFilter;
  14 +import com.mumfrey.liteloader.OutboundChatListener;
  15 +import com.mumfrey.liteloader.PostRenderListener;
  16 +import com.mumfrey.liteloader.PreRenderListener;
  17 +import com.mumfrey.liteloader.RenderListener;
  18 +import com.mumfrey.liteloader.ScreenshotListener;
  19 +import com.mumfrey.liteloader.Tickable;
  20 +import com.mumfrey.liteloader.ViewportListener;
8 21 import com.mumfrey.liteloader.client.overlays.IEntityRenderer;
9 22 import com.mumfrey.liteloader.client.overlays.IMinecraft;
10 23 import com.mumfrey.liteloader.common.LoadingProgress;
... ... @@ -28,10 +41,10 @@ import net.minecraft.client.resources.IResourceManager;
28 41 import net.minecraft.client.resources.IResourceManagerReloadListener;
29 42 import net.minecraft.client.shader.Framebuffer;
30 43 import net.minecraft.entity.Entity;
31   -import net.minecraft.network.play.client.C01PacketChatMessage;
  44 +import net.minecraft.network.play.client.CPacketChatMessage;
32 45 import net.minecraft.server.integrated.IntegratedServer;
33   -import net.minecraft.util.IChatComponent;
34 46 import net.minecraft.util.Timer;
  47 +import net.minecraft.util.text.ITextComponent;
35 48  
36 49 public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker<Minecraft, IntegratedServer> implements IResourceManagerReloadListener
37 50 {
... ... @@ -434,7 +447,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
434 447 * @param packet
435 448 * @param message
436 449 */
437   - void onSendChatMessage(C01PacketChatMessage packet, String message)
  450 + void onSendChatMessage(CPacketChatMessage packet, String message)
438 451 {
439 452 this.outboundChatListeners.all().onSendChatMessage(packet, message);
440 453 }
... ... @@ -522,9 +535,9 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
522 535 * @param height
523 536 * @param fbo
524 537 */
525   - void onScreenshot(CallbackInfoReturnable<IChatComponent> ci, String name, int width, int height, Framebuffer fbo)
  538 + void onScreenshot(CallbackInfoReturnable<ITextComponent> ci, String name, int width, int height, Framebuffer fbo)
526 539 {
527   - ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(ci.getReturnValue());
  540 + ReturnValue<ITextComponent> ret = new ReturnValue<ITextComponent>(ci.getReturnValue());
528 541  
529 542 if (!this.screenshotListeners.all().onSaveScreenshot(name, width, height, fbo, ret))
530 543 {
... ...
src/client/java/com/mumfrey/liteloader/client/PacketEventsClient.java
... ... @@ -21,13 +21,12 @@ import net.minecraft.client.Minecraft;
21 21 import net.minecraft.network.INetHandler;
22 22 import net.minecraft.network.Packet;
23 23 import net.minecraft.network.login.INetHandlerLoginClient;
24   -import net.minecraft.network.login.server.S02PacketLoginSuccess;
  24 +import net.minecraft.network.login.server.SPacketLoginSuccess;
25 25 import net.minecraft.network.play.INetHandlerPlayClient;
26   -import net.minecraft.network.play.server.S01PacketJoinGame;
27   -import net.minecraft.network.play.server.S02PacketChat;
28   -import net.minecraft.server.MinecraftServer;
29   -import net.minecraft.util.ChatComponentText;
30   -import net.minecraft.util.IChatComponent;
  26 +import net.minecraft.network.play.server.SPacketJoinGame;
  27 +import net.minecraft.network.play.server.SPacketChat;
  28 +import net.minecraft.util.text.TextComponentString;
  29 +import net.minecraft.util.text.ITextComponent;
31 30 import net.minecraft.util.IThreadListener;
32 31  
33 32 /**
... ... @@ -115,22 +114,23 @@ public class PacketEventsClient extends PacketEvents
115 114 @Override
116 115 protected IThreadListener getPacketContextListener(Packets.Context context)
117 116 {
  117 + Minecraft minecraft = Minecraft.getMinecraft();
118 118 if (context == Packets.Context.SERVER)
119 119 {
120   - return MinecraftServer.getServer();
  120 + return minecraft.getIntegratedServer();
121 121 }
122 122  
123   - return Minecraft.getMinecraft();
  123 + return minecraft;
124 124 }
125 125  
126 126 /* (non-Javadoc)
127 127 * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(
128 128 * com.mumfrey.liteloader.common.transformers.PacketEventInfo,
129 129 * net.minecraft.network.INetHandler,
130   - * net.minecraft.network.play.server.S01PacketJoinGame)
  130 + * net.minecraft.network.play.server.SPacketJoinGame)
131 131 */
132 132 @Override
133   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S01PacketJoinGame packet)
  133 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketJoinGame packet)
134 134 {
135 135 if (this.preJoinGame(e, netHandler, packet))
136 136 {
... ... @@ -149,7 +149,7 @@ public class PacketEventsClient extends PacketEvents
149 149 * @param packet
150 150 * @throws EventCancellationException
151 151 */
152   - private boolean preJoinGame(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S01PacketJoinGame packet) throws EventCancellationException
  152 + private boolean preJoinGame(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketJoinGame packet) throws EventCancellationException
153 153 {
154 154 if (!(netHandler instanceof INetHandlerPlayClient))
155 155 {
... ... @@ -166,7 +166,7 @@ public class PacketEventsClient extends PacketEvents
166 166 * @param netHandler
167 167 * @param packet
168 168 */
169   - private void postJoinGame(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S01PacketJoinGame packet)
  169 + private void postJoinGame(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketJoinGame packet)
170 170 {
171 171 this.joinGameListeners.all().onJoinGame(netHandler, packet, Minecraft.getMinecraft().getCurrentServerData(), PacketEventsClient.joiningRealm);
172 172 PacketEventsClient.joiningRealm = null;
... ... @@ -185,7 +185,7 @@ public class PacketEventsClient extends PacketEvents
185 185 * net.minecraft.network.login.server.S02PacketLoginSuccess)
186 186 */
187 187 @Override
188   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S02PacketLoginSuccess packet)
  188 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketLoginSuccess packet)
189 189 {
190 190 if (netHandler instanceof INetHandlerLoginClient)
191 191 {
... ... @@ -208,21 +208,21 @@ public class PacketEventsClient extends PacketEvents
208 208 * net.minecraft.network.play.server.S02PacketChat)
209 209 */
210 210 @Override
211   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S02PacketChat packet)
  211 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketChat packet)
212 212 {
213 213 if (packet.getChatComponent() == null)
214 214 {
215 215 return;
216 216 }
217 217  
218   - IChatComponent originalChat = packet.getChatComponent();
219   - IChatComponent chat = originalChat;
  218 + ITextComponent originalChat = packet.getChatComponent();
  219 + ITextComponent chat = originalChat;
220 220 String message = chat.getFormattedText();
221 221  
222 222 // Chat filters get a stab at the chat first, if any filter returns false the chat is discarded
223 223 for (ChatFilter chatFilter : this.chatFilters)
224 224 {
225   - ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>();
  225 + ReturnValue<ITextComponent> ret = new ReturnValue<ITextComponent>();
226 226  
227 227 if (chatFilter.onChat(chat, message, ret))
228 228 {
... ... @@ -231,7 +231,7 @@ public class PacketEventsClient extends PacketEvents
231 231 chat = ret.get();
232 232 if (chat == null)
233 233 {
234   - chat = new ChatComponentText("");
  234 + chat = new TextComponentString("");
235 235 }
236 236 message = chat.getFormattedText();
237 237 }
... ...
src/client/java/com/mumfrey/liteloader/client/ducks/IIntIdentityHashBiMap.java 0 โ†’ 100644
  1 +/*
  2 + * This file is part of LiteLoader.
  3 + * Copyright (C) 2012-16 Adam Mummery-Smith
  4 + * All Rights Reserved.
  5 + */
  6 +package com.mumfrey.liteloader.client.ducks;
  7 +
  8 +public interface IIntIdentityHashBiMap<V>
  9 +{
  10 + public abstract void removeObject(V object);
  11 +}
... ...
src/client/java/com/mumfrey/liteloader/client/ducks/INamespacedRegistry.java renamed to src/client/java/com/mumfrey/liteloader/client/ducks/IMutableRegistry.java
1 1 package com.mumfrey.liteloader.client.ducks;
2 2  
3   -public interface INamespacedRegistry
  3 +public interface IMutableRegistry<K, V>
4 4 {
5   - public abstract IObjectIntIdentityMap getUnderlyingMap();
  5 + public abstract V removeObjectFromRegistry(K key);
6 6 }
... ...
src/client/java/com/mumfrey/liteloader/client/ducks/IObjectIntIdentityMap.java deleted 100644 โ†’ 0
1   -package com.mumfrey.liteloader.client.ducks;
2   -
3   -import java.util.IdentityHashMap;
4   -import java.util.List;
5   -
6   -public interface IObjectIntIdentityMap
7   -{
8   - public abstract <V> IdentityHashMap<V, Integer> getIdentityMap();
9   -
10   - public abstract <V> List<V> getObjectList();
11   -}
src/client/java/com/mumfrey/liteloader/client/ducks/IRegistrySimple.java deleted 100644 โ†’ 0
1   -package com.mumfrey.liteloader.client.ducks;
2   -
3   -import java.util.Map;
4   -
5   -public interface IRegistrySimple<K, V>
6   -{
7   - public abstract Map<K, V> getRegistryObjects();
8   -}
src/client/java/com/mumfrey/liteloader/client/gui/GuiLiteLoaderPanel.java
1 1 package com.mumfrey.liteloader.client.gui;
2 2  
3 3 import static com.mumfrey.liteloader.gl.GL.*;
4   -import static net.minecraft.client.renderer.vertex.DefaultVertexFormats.*;
5 4  
6 5 import java.io.IOException;
7 6 import java.util.ArrayList;
... ... @@ -32,7 +31,7 @@ import net.minecraft.client.gui.GuiButton;
32 31 import net.minecraft.client.gui.GuiMainMenu;
33 32 import net.minecraft.client.gui.GuiScreen;
34 33 import net.minecraft.client.renderer.Tessellator;
35   -import net.minecraft.client.renderer.WorldRenderer;
  34 +import net.minecraft.client.renderer.VertexBuffer;
36 35 import net.minecraft.client.resources.I18n;
37 36 import net.minecraft.util.ResourceLocation;
38 37  
... ... @@ -790,8 +789,8 @@ public class GuiLiteLoaderPanel extends GuiScreen
790 789 glColor4f(1.0F, 1.0F, 1.0F, alpha);
791 790  
792 791 Tessellator tessellator = Tessellator.getInstance();
793   - WorldRenderer worldRenderer = tessellator.getWorldRenderer();
794   - worldRenderer.begin(GL_QUADS, POSITION_TEX);
  792 + VertexBuffer worldRenderer = tessellator.getBuffer();
  793 + worldRenderer.begin(GL_QUADS, VF_POSITION_TEX);
795 794 worldRenderer.pos(x + 0, y + height, 0).tex(u , v2).endVertex();
796 795 worldRenderer.pos(x + width, y + height, 0).tex(u2, v2).endVertex();
797 796 worldRenderer.pos(x + width, y + 0, 0).tex(u2, v ).endVertex();
... ...
src/client/java/com/mumfrey/liteloader/client/gui/startup/LoadingBar.java
1 1 package com.mumfrey.liteloader.client.gui.startup;
2 2  
3 3 import static com.mumfrey.liteloader.gl.GL.*;
4   -import static net.minecraft.client.renderer.vertex.DefaultVertexFormats.*;
5 4  
6 5 import java.awt.image.BufferedImage;
7 6 import java.io.IOException;
... ... @@ -15,7 +14,7 @@ import net.minecraft.client.Minecraft;
15 14 import net.minecraft.client.gui.FontRenderer;
16 15 import net.minecraft.client.gui.ScaledResolution;
17 16 import net.minecraft.client.renderer.Tessellator;
18   -import net.minecraft.client.renderer.WorldRenderer;
  17 +import net.minecraft.client.renderer.VertexBuffer;
19 18 import net.minecraft.client.renderer.texture.DynamicTexture;
20 19 import net.minecraft.client.renderer.texture.ITextureObject;
21 20 import net.minecraft.client.renderer.texture.TextureManager;
... ... @@ -255,13 +254,13 @@ public class LoadingBar extends LoadingProgress
255 254  
256 255 this.textureManager.bindTexture(this.textureLocation);
257 256 Tessellator tessellator = Tessellator.getInstance();
258   - WorldRenderer worldRenderer = tessellator.getWorldRenderer();
259   - worldRenderer.begin(GL_QUADS, POSITION);
  257 + VertexBuffer vertexBuffer = tessellator.getBuffer();
  258 + vertexBuffer.begin(GL_QUADS, VF_POSITION);
260 259 glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
261   - worldRenderer.pos(0.0D, scaledHeight, 0.0D).endVertex();
262   - worldRenderer.pos(scaledWidth, scaledHeight, 0.0D).endVertex();
263   - worldRenderer.pos(scaledWidth, 0.0D, 0.0D).endVertex();
264   - worldRenderer.pos(0.0D, 0.0D, 0.0D).endVertex();
  260 + vertexBuffer.pos(0.0D, scaledHeight, 0.0D).endVertex();
  261 + vertexBuffer.pos(scaledWidth, scaledHeight, 0.0D).endVertex();
  262 + vertexBuffer.pos(scaledWidth, 0.0D, 0.0D).endVertex();
  263 + vertexBuffer.pos(0.0D, 0.0D, 0.0D).endVertex();
265 264 tessellator.draw();
266 265  
267 266 glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
... ... @@ -274,11 +273,11 @@ public class LoadingBar extends LoadingProgress
274 273 int v2 = 256;
275 274  
276 275 float texMapScale = 0.00390625F;
277   - worldRenderer.begin(GL_QUADS, POSITION_TEX);
278   - worldRenderer.pos(left + 0, top + v2, 0.0D).tex((u1 + 0) * texMapScale, (v1 + v2) * texMapScale).endVertex();
279   - worldRenderer.pos(left + u2, top + v2, 0.0D).tex((u1 + u2) * texMapScale, (v1 + v2) * texMapScale).endVertex();
280   - worldRenderer.pos(left + u2, top + 0, 0.0D).tex((u1 + u2) * texMapScale, (v1 + 0) * texMapScale).endVertex();
281   - worldRenderer.pos(left + 0, top + 0, 0.0D).tex((u1 + 0) * texMapScale, (v1 + 0) * texMapScale).endVertex();
  276 + vertexBuffer.begin(GL_QUADS, VF_POSITION_TEX);
  277 + vertexBuffer.pos(left + 0, top + v2, 0.0D).tex((u1 + 0) * texMapScale, (v1 + v2) * texMapScale).endVertex();
  278 + vertexBuffer.pos(left + u2, top + v2, 0.0D).tex((u1 + u2) * texMapScale, (v1 + v2) * texMapScale).endVertex();
  279 + vertexBuffer.pos(left + u2, top + 0, 0.0D).tex((u1 + u2) * texMapScale, (v1 + 0) * texMapScale).endVertex();
  280 + vertexBuffer.pos(left + 0, top + 0, 0.0D).tex((u1 + 0) * texMapScale, (v1 + 0) * texMapScale).endVertex();
282 281 tessellator.draw();
283 282  
284 283 glEnableTexture2D();
... ... @@ -319,25 +318,25 @@ public class LoadingBar extends LoadingProgress
319 318 // tessellator.addVertex(0.0D, scaledHeight - (scaledHeight / 3), 0.0D);
320 319 // tessellator.draw();
321 320  
322   - worldRenderer.begin(GL_QUADS, POSITION);
  321 + vertexBuffer.begin(GL_QUADS, VF_POSITION);
323 322 float luma = this.barLuma / 255.0F;
324 323 glColor4f(luma, luma, luma, 0.5F);
325   - worldRenderer.pos(0.0D, scaledHeight, 0.0D).endVertex();
326   - worldRenderer.pos(0.0D + scaledWidth, scaledHeight, 0.0D).endVertex();
327   - worldRenderer.pos(0.0D + scaledWidth, scaledHeight - barHeight, 0.0D).endVertex();
328   - worldRenderer.pos(0.0D, scaledHeight - barHeight, 0.0D).endVertex();
  324 + vertexBuffer.pos(0.0D, scaledHeight, 0.0D).endVertex();
  325 + vertexBuffer.pos(0.0D + scaledWidth, scaledHeight, 0.0D).endVertex();
  326 + vertexBuffer.pos(0.0D + scaledWidth, scaledHeight - barHeight, 0.0D).endVertex();
  327 + vertexBuffer.pos(0.0D, scaledHeight - barHeight, 0.0D).endVertex();
329 328 tessellator.draw();
330 329  
331 330 barHeight -= 1;
332 331  
333   - worldRenderer.begin(GL_QUADS, POSITION_COLOR);
  332 + vertexBuffer.begin(GL_QUADS, VF_POSITION_COLOR);
334 333 float r2 = this.r2 / 255.0F;
335 334 float g2 = this.g2 / 255.0F;
336 335 float b2 = this.b2 / 255.0F;
337   - worldRenderer.pos(1.0D + barWidth * progress, scaledHeight - 1, 1.0D).color(r2, g2, b2, 1.0F).endVertex();
338   - worldRenderer.pos(1.0D + barWidth * progress, scaledHeight - barHeight, 1.0D).color(r2, g2, b2, 1.0F).endVertex();
339   - worldRenderer.pos(1.0D, scaledHeight - barHeight, 1.0D).color(0.0F, 0.0F, 0.0F, 1.0F).endVertex();
340   - worldRenderer.pos(1.0D, scaledHeight - 1, 1.0D).color(0.0F, 0.0F, 0.0F, 1.0F).endVertex();
  336 + vertexBuffer.pos(1.0D + barWidth * progress, scaledHeight - 1, 1.0D).color(r2, g2, b2, 1.0F).endVertex();
  337 + vertexBuffer.pos(1.0D + barWidth * progress, scaledHeight - barHeight, 1.0D).color(r2, g2, b2, 1.0F).endVertex();
  338 + vertexBuffer.pos(1.0D, scaledHeight - barHeight, 1.0D).color(0.0F, 0.0F, 0.0F, 1.0F).endVertex();
  339 + vertexBuffer.pos(1.0D, scaledHeight - 1, 1.0D).color(0.0F, 0.0F, 0.0F, 1.0F).endVertex();
341 340 tessellator.draw();
342 341  
343 342 glAlphaFunc(GL_GREATER, 0.1F);
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinEntityRenderer.java
... ... @@ -17,7 +17,7 @@ import net.minecraft.util.ResourceLocation;
17 17 @Mixin(EntityRenderer.class)
18 18 public abstract class MixinEntityRenderer implements IEntityRenderer
19 19 {
20   - @Shadow private static ResourceLocation[] shaderResourceLocations;
  20 + @Shadow private static ResourceLocation[] SHADERS_TEXTURES;
21 21 @Shadow private boolean useShader;
22 22 @Shadow private int shaderIndex;
23 23  
... ... @@ -139,7 +139,7 @@ public abstract class MixinEntityRenderer implements IEntityRenderer
139 139 @Override
140 140 public ResourceLocation[] getShaders()
141 141 {
142   - return MixinEntityRenderer.shaderResourceLocations;
  142 + return MixinEntityRenderer.SHADERS_TEXTURES;
143 143 }
144 144  
145 145 @Override
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinGuiIngame.java
1 1 package com.mumfrey.liteloader.client.mixin;
2 2  
  3 +import org.spongepowered.asm.mixin.Final;
3 4 import org.spongepowered.asm.mixin.Mixin;
4 5 import org.spongepowered.asm.mixin.Shadow;
5 6 import org.spongepowered.asm.mixin.injection.At;
... ... @@ -16,7 +17,7 @@ import net.minecraft.client.gui.GuiNewChat;
16 17 @Mixin(GuiIngame.class)
17 18 public abstract class MixinGuiIngame extends Gui
18 19 {
19   - @Shadow private GuiNewChat persistantChatGUI;
  20 + @Shadow @Final private GuiNewChat persistantChatGUI;
20 21  
21 22 @Inject(method = "renderGameOverlay(F)V", at = @At(
22 23 value = "INVOKE",
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinIntIdentityHashBiMap.java 0 โ†’ 100644
  1 +/*
  2 + * This file is part of LiteLoader.
  3 + * Copyright (C) 2012-16 Adam Mummery-Smith
  4 + * All Rights Reserved.
  5 + */
  6 +package com.mumfrey.liteloader.client.mixin;
  7 +
  8 +import org.spongepowered.asm.mixin.Mixin;
  9 +import org.spongepowered.asm.mixin.Shadow;
  10 +
  11 +import com.mumfrey.liteloader.client.ducks.IIntIdentityHashBiMap;
  12 +
  13 +import net.minecraft.util.IntIdentityHashBiMap;
  14 +
  15 +@Mixin(IntIdentityHashBiMap.class)
  16 +public abstract class MixinIntIdentityHashBiMap<V> implements IIntIdentityHashBiMap<V>
  17 +{
  18 + @Shadow private static final Object field_186817_a = null;
  19 + @Shadow private V[] objectArray;
  20 + @Shadow private int[] intKeys;
  21 + @Shadow private V[] intToObjects;
  22 + @Shadow private int field_186821_e;
  23 + @Shadow private int mapSize;
  24 +
  25 + @Shadow private int func_186816_b(V object, int hash)
  26 + {
  27 + return -1;
  28 + }
  29 +
  30 + @Shadow private int hashObject(V object)
  31 + {
  32 + return -1;
  33 + }
  34 +
  35 + @Override
  36 + public void removeObject(V object)
  37 + {
  38 + int index = this.func_186816_b(object, this.hashObject(object));
  39 + int intKey = this.intKeys[index];
  40 + this.objectArray[index] = null;
  41 + this.intKeys[index] = 0;
  42 + this.intToObjects[intKey] = null;
  43 + }
  44 +}
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinIntegratedServer.java
... ... @@ -6,11 +6,15 @@ import org.spongepowered.asm.mixin.injection.Inject;
6 6 import org.spongepowered.asm.mixin.injection.Surrogate;
7 7 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 8  
  9 +import com.mojang.authlib.GameProfileRepository;
  10 +import com.mojang.authlib.minecraft.MinecraftSessionService;
  11 +import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
9 12 import com.mumfrey.liteloader.client.ClientProxy;
10 13  
11 14 import net.minecraft.client.Minecraft;
12 15 import net.minecraft.server.MinecraftServer;
13 16 import net.minecraft.server.integrated.IntegratedServer;
  17 +import net.minecraft.server.management.PlayerProfileCache;
14 18 import net.minecraft.world.WorldSettings;
15 19  
16 20 @Mixin(IntegratedServer.class)
... ... @@ -18,7 +22,7 @@ public abstract class MixinIntegratedServer extends MinecraftServer
18 22 {
19 23 public MixinIntegratedServer()
20 24 {
21   - super(null, null);
  25 + super(null, null, null, null, null, null, null);
22 26 }
23 27  
24 28 @Inject(
... ... @@ -26,7 +30,8 @@ public abstract class MixinIntegratedServer extends MinecraftServer
26 30 at = @At("RETURN"),
27 31 remap = false
28 32 )
29   - private void onConstructed(Minecraft mcIn, String folderName, String worldName, WorldSettings settings, CallbackInfo ci)
  33 + private void onConstructed(Minecraft mcIn, String folderName, String worldName, WorldSettings settings, YggdrasilAuthenticationService authSrv,
  34 + MinecraftSessionService sessionSrv, GameProfileRepository profileRepo, PlayerProfileCache profileCache, CallbackInfo ci)
30 35 {
31 36 ClientProxy.onCreateIntegratedServer((IntegratedServer)(Object)this, folderName, worldName, settings);
32 37 }
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinObjectIntIdentityMap.java deleted 100644 โ†’ 0
1   -package com.mumfrey.liteloader.client.mixin;
2   -
3   -import java.util.IdentityHashMap;
4   -import java.util.List;
5   -
6   -import org.spongepowered.asm.mixin.Mixin;
7   -import org.spongepowered.asm.mixin.Shadow;
8   -
9   -import com.mumfrey.liteloader.client.ducks.IObjectIntIdentityMap;
10   -
11   -import net.minecraft.util.ObjectIntIdentityMap;
12   -
13   -@Mixin(ObjectIntIdentityMap.class)
14   -public abstract class MixinObjectIntIdentityMap<T> implements IObjectIntIdentityMap
15   -{
16   - @Shadow private IdentityHashMap<T, Integer> identityMap;
17   - @Shadow private List<T> objectList;
18   -
19   - @SuppressWarnings("unchecked")
20   - @Override
21   - public <V> IdentityHashMap<V, Integer> getIdentityMap()
22   - {
23   - return (IdentityHashMap<V, Integer>)this.identityMap;
24   - }
25   -
26   - @SuppressWarnings("unchecked")
27   - @Override
28   - public <V> List<V> getObjectList()
29   - {
30   - return (List<V>)this.objectList;
31   - }
32   -}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRegistryNamespaced.java
1 1 package com.mumfrey.liteloader.client.mixin;
2 2  
  3 +import org.spongepowered.asm.mixin.Final;
3 4 import org.spongepowered.asm.mixin.Mixin;
4 5 import org.spongepowered.asm.mixin.Shadow;
5 6  
6   -import com.mumfrey.liteloader.client.ducks.INamespacedRegistry;
7   -import com.mumfrey.liteloader.client.ducks.IObjectIntIdentityMap;
  7 +import com.mumfrey.liteloader.client.ducks.IIntIdentityHashBiMap;
8 8  
9   -import net.minecraft.util.ObjectIntIdentityMap;
10   -import net.minecraft.util.RegistryNamespaced;
11   -import net.minecraft.util.RegistrySimple;
  9 +import net.minecraft.util.IntIdentityHashBiMap;
  10 +import net.minecraft.util.registry.RegistryNamespaced;
12 11  
13 12 @Mixin(RegistryNamespaced.class)
14   -public abstract class MixinRegistryNamespaced<K, V> extends RegistrySimple<K, V> implements INamespacedRegistry
  13 +public abstract class MixinRegistryNamespaced<K, V> extends MixinRegistrySimple<K, V>
15 14 {
16   - @Shadow protected ObjectIntIdentityMap<V> underlyingIntegerMap;
17   -
  15 + @Shadow @Final protected IntIdentityHashBiMap<V> underlyingIntegerMap;
  16 +
  17 + @SuppressWarnings("unchecked")
18 18 @Override
19   - public IObjectIntIdentityMap getUnderlyingMap()
  19 + public V removeObjectFromRegistry(K key)
20 20 {
21   - return (IObjectIntIdentityMap)this.underlyingIntegerMap;
  21 + V removed = super.removeObjectFromRegistry(key);
  22 + System.err.println("====================================================================================================");
  23 + System.err.println("====================================================================================================");
  24 + System.err.println("Removed object: " + removed);
  25 + if (removed != null && this.underlyingIntegerMap instanceof IIntIdentityHashBiMap)
  26 + {
  27 + System.err.println("Removing " + removed + " from underlying int map");
  28 + ((IIntIdentityHashBiMap<V>)this.underlyingIntegerMap).removeObject(removed);
  29 + }
  30 + System.err.println("====================================================================================================");
  31 + System.err.println("====================================================================================================");
  32 + return removed;
22 33 }
23 34 }
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRegistrySimple.java
... ... @@ -2,21 +2,30 @@ package com.mumfrey.liteloader.client.mixin;
2 2  
3 3 import java.util.Map;
4 4  
  5 +import org.spongepowered.asm.mixin.Final;
5 6 import org.spongepowered.asm.mixin.Mixin;
6 7 import org.spongepowered.asm.mixin.Shadow;
7 8  
8   -import com.mumfrey.liteloader.client.ducks.IRegistrySimple;
  9 +import com.mumfrey.liteloader.client.ducks.IMutableRegistry;
9 10  
10   -import net.minecraft.util.RegistrySimple;
  11 +import net.minecraft.util.registry.RegistrySimple;
11 12  
12 13 @Mixin(RegistrySimple.class)
13   -public abstract class MixinRegistrySimple<K, V> implements IRegistrySimple<K, V>
  14 +public abstract class MixinRegistrySimple<K, V> implements IMutableRegistry<K, V>
14 15 {
15   - @Shadow protected Map<K, V> registryObjects;
  16 + @Shadow private Object[] values;
  17 + @Shadow @Final protected Map<K, V> registryObjects;
16 18  
17 19 @Override
18   - public Map<K, V> getRegistryObjects()
  20 + public V removeObjectFromRegistry(K key)
19 21 {
20   - return this.registryObjects;
  22 + System.err.println("====================================================================================================");
  23 + System.err.println("====================================================================================================");
  24 + System.err.println("removeObjectFromRegistry: " + key);
  25 + System.err.println("====================================================================================================");
  26 + System.err.println("====================================================================================================");
  27 +
  28 + this.values = null;
  29 + return this.registryObjects.remove(key);
21 30 }
22 31 }
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRenderManager.java
... ... @@ -25,7 +25,7 @@ public abstract class MixinRenderManager implements IRenderManager
25 25 return this.entityRenderMap;
26 26 }
27 27  
28   - @Redirect(method = "doRenderEntity(Lnet/minecraft/entity/Entity;DDDFFZ)Z", at = @At(
  28 + @Redirect(method = "doRenderEntity(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At(
29 29 value = "INVOKE",
30 30 target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V"
31 31 ))
... ...
src/client/java/com/mumfrey/liteloader/client/mixin/MixinScreenShotHelper.java
... ... @@ -10,22 +10,24 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
10 10 import com.mumfrey.liteloader.client.ClientProxy;
11 11  
12 12 import net.minecraft.client.shader.Framebuffer;
13   -import net.minecraft.util.IChatComponent;
  13 +import net.minecraft.util.text.ITextComponent;
14 14 import net.minecraft.util.ScreenShotHelper;
15 15  
16 16 @Mixin(ScreenShotHelper.class)
17 17 public abstract class MixinScreenShotHelper
18 18 {
19 19 @Inject(
20   - method = "saveScreenshot(Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/IChatComponent;",
  20 + method = "saveScreenshot(Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/shader/Framebuffer;)"
  21 + + "Lnet/minecraft/util/text/ITextComponent;",
21 22 at = @At(
22 23 value = "INVOKE",
23   - target = "Lnet/minecraft/client/renderer/OpenGlHelper;isFramebufferEnabled()Z",
  24 + target = "Lnet/minecraft/util/ScreenShotHelper;createScreenshot(IILnet/minecraft/client/shader/Framebuffer;)"
  25 + + "Ljava/awt/image/BufferedImage;",
24 26 ordinal = 0
25 27 ),
26 28 cancellable = true
27 29 )
28   - private static void onSaveScreenshot(File gameDir, String name, int width, int height, Framebuffer fbo, CallbackInfoReturnable<IChatComponent> ci)
  30 + private static void onSaveScreenshot(File gameDir, String name, int width, int height, Framebuffer fbo, CallbackInfoReturnable<ITextComponent> ci)
29 31 {
30 32 ClientProxy.onSaveScreenshot(ci, gameDir, name, width, height, fbo);
31 33 }
... ...
src/client/java/com/mumfrey/liteloader/gl/GL.java
... ... @@ -6,7 +6,11 @@ import java.nio.FloatBuffer;
6 6 import java.nio.IntBuffer;
7 7  
8 8 import net.minecraft.client.renderer.GlStateManager;
  9 +import net.minecraft.client.renderer.GlStateManager.CullFace;
  10 +import net.minecraft.client.renderer.GlStateManager.FogMode;
9 11 import net.minecraft.client.renderer.GlStateManager.TexGen;
  12 +import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
  13 +import net.minecraft.client.renderer.vertex.VertexFormat;
10 14  
11 15 import org.lwjgl.opengl.GL11;
12 16 import org.lwjgl.util.glu.GLU;
... ... @@ -42,6 +46,20 @@ import org.lwjgl.util.glu.GLU;
42 46 */
43 47 public class GL
44 48 {
  49 + // Vertex Formats
  50 + public static final VertexFormat VF_BLOCK = DefaultVertexFormats.BLOCK;
  51 + public static final VertexFormat VF_ITEM = DefaultVertexFormats.ITEM;
  52 + public static final VertexFormat VF_OLDMODEL_POSITION_TEX_NORMAL = DefaultVertexFormats.OLDMODEL_POSITION_TEX_NORMAL;
  53 + public static final VertexFormat VF_PARTICLE_POSITION_TEX_COLOR_LMAP = DefaultVertexFormats.PARTICLE_POSITION_TEX_COLOR_LMAP;
  54 + public static final VertexFormat VF_POSITION = DefaultVertexFormats.POSITION;
  55 + public static final VertexFormat VF_POSITION_COLOR = DefaultVertexFormats.POSITION_COLOR;
  56 + public static final VertexFormat VF_POSITION_TEX = DefaultVertexFormats.POSITION_TEX;
  57 + public static final VertexFormat VF_POSITION_NORMAL = DefaultVertexFormats.POSITION_NORMAL;
  58 + public static final VertexFormat VF_POSITION_TEX_COLOR = DefaultVertexFormats.POSITION_TEX_COLOR;
  59 + public static final VertexFormat VF_POSITION_TEX_NORMAL = DefaultVertexFormats.POSITION_TEX_NORMAL;
  60 + public static final VertexFormat VF_POSITION_TEX_LMAP_COLOR = DefaultVertexFormats.POSITION_TEX_LMAP_COLOR;
  61 + public static final VertexFormat VF_POSITION_TEX_COLOR_NORMAL = DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL;
  62 +
45 63 // GL11
46 64 public static final int GL_ACCUM = 0x100;
47 65 public static final int GL_LOAD = 0x101;
... ... @@ -943,7 +961,7 @@ public class GL
943 961 GlStateManager.disableFog();
944 962 }
945 963  
946   - public static void glSetFogMode(int mode)
  964 + public static void glSetFogMode(FogMode mode)
947 965 {
948 966 GlStateManager.setFog(mode);
949 967 }
... ... @@ -988,7 +1006,7 @@ public class GL
988 1006 GlStateManager.disableCull();
989 1007 }
990 1008  
991   - public static void glCullFace(int mode)
  1009 + public static void glCullFace(CullFace mode)
992 1010 {
993 1011 GlStateManager.cullFace(mode);
994 1012 }
... ...
src/client/java/com/mumfrey/liteloader/util/ModUtilities.java
... ... @@ -2,15 +2,15 @@ package com.mumfrey.liteloader.util;
2 2  
3 3 import java.lang.reflect.Field;
4 4 import java.lang.reflect.Modifier;
5   -import java.util.IdentityHashMap;
6   -import java.util.List;
7 5 import java.util.Map;
8 6  
9 7 import org.lwjgl.LWJGLException;
10 8 import org.lwjgl.opengl.Display;
11 9 import org.lwjgl.opengl.DisplayMode;
12 10  
13   -import com.mumfrey.liteloader.client.ducks.*;
  11 +import com.mumfrey.liteloader.client.ducks.IMutableRegistry;
  12 +import com.mumfrey.liteloader.client.ducks.IRenderManager;
  13 +import com.mumfrey.liteloader.client.ducks.ITileEntityRendererDispatcher;
14 14 import com.mumfrey.liteloader.client.overlays.IMinecraft;
15 15 import com.mumfrey.liteloader.client.util.PrivateFieldsClient;
16 16 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
... ... @@ -26,7 +26,6 @@ import net.minecraft.init.Blocks;
26 26 import net.minecraft.init.Items;
27 27 import net.minecraft.item.Item;
28 28 import net.minecraft.tileentity.TileEntity;
29   -import net.minecraft.util.RegistrySimple;
30 29 import net.minecraft.util.ResourceLocation;
31 30  
32 31 /**
... ... @@ -106,24 +105,32 @@ public abstract class ModUtilities
106 105 * @param blockName Block identifier
107 106 * @param block Block to register
108 107 * @param force Force insertion even if the operation is blocked by FMl
  108 + *
  109 + * @deprecated Register blocks directly with the registry
109 110 */
  111 + @SuppressWarnings("unchecked")
  112 + @Deprecated
110 113 public static void addBlock(int blockId, ResourceLocation blockName, Block block, boolean force)
111 114 {
112   - Block existingBlock = Block.blockRegistry.getObject(blockName);
113   -
  115 + boolean exists = Block.REGISTRY.containsKey(blockName);
  116 + Block existingBlock = Block.REGISTRY.getObject(blockName);
  117 +
114 118 try
115 119 {
116   - Block.blockRegistry.register(blockId, blockName, block);
  120 + Block.REGISTRY.register(blockId, blockName, block);
117 121 }
118 122 catch (IllegalArgumentException ex)
119 123 {
120 124 if (!force) throw new IllegalArgumentException("Could not register block '" + blockName + "', the operation was blocked by FML.", ex);
121 125  
122   - ModUtilities.removeObjectFromRegistry(Block.blockRegistry, blockName);
123   - Block.blockRegistry.register(blockId, blockName, block);
  126 + if (Block.REGISTRY instanceof IMutableRegistry)
  127 + {
  128 + ((IMutableRegistry<ResourceLocation, Block>)Block.REGISTRY).removeObjectFromRegistry(blockName);
  129 + Block.REGISTRY.register(blockId, blockName, block);
  130 + }
124 131 }
125 132  
126   - if (existingBlock != null)
  133 + if (exists)
127 134 {
128 135 try
129 136 {
... ... @@ -154,24 +161,32 @@ public abstract class ModUtilities
154 161 * @param itemName Item identifier
155 162 * @param item Item to register
156 163 * @param force Force insertion even if the operation is blocked by FMl
  164 + *
  165 + * @deprecated Register items directly with the registry
157 166 */
  167 + @SuppressWarnings("unchecked")
  168 + @Deprecated
158 169 public static void addItem(int itemId, ResourceLocation itemName, Item item, boolean force)
159 170 {
160   - Item existingItem = Item.itemRegistry.getObject(itemName);
161   -
  171 + boolean exists = Item.REGISTRY.containsKey(itemName);
  172 + Item existingItem = Item.REGISTRY.getObject(itemName);
  173 +
162 174 try
163 175 {
164   - Item.itemRegistry.register(itemId, itemName, item);
  176 + Item.REGISTRY.register(itemId, itemName, item);
165 177 }
166 178 catch (IllegalArgumentException ex)
167 179 {
168 180 if (!force) throw new IllegalArgumentException("Could not register item '" + itemName + "', the operation was blocked by FML.", ex);
169 181  
170   - ModUtilities.removeObjectFromRegistry(Block.blockRegistry, itemName);
171   - Item.itemRegistry.register(itemId, itemName, item);
  182 + if (Block.REGISTRY instanceof IMutableRegistry)
  183 + {
  184 + ((IMutableRegistry<ResourceLocation, Block>)Item.REGISTRY).removeObjectFromRegistry(itemName);
  185 + Item.REGISTRY.register(itemId, itemName, item);
  186 + }
172 187 }
173 188  
174   - if (existingItem != null)
  189 + if (exists)
175 190 {
176 191 try
177 192 {
... ... @@ -208,41 +223,6 @@ public abstract class ModUtilities
208 223 }
209 224 }
210 225  
211   - private static <K, V> V removeObjectFromRegistry(RegistrySimple<K, V> registry, K key)
212   - {
213   - if (registry == null) return null;
214   -
215   - IObjectIntIdentityMap underlyingIntegerMap = null;
216   -
217   - if (registry instanceof INamespacedRegistry)
218   - {
219   - underlyingIntegerMap = ((INamespacedRegistry)registry).getUnderlyingMap();
220   - }
221   -
222   - @SuppressWarnings("unchecked")
223   - Map<K, V> registryObjects = ((IRegistrySimple<K, V>)registry).getRegistryObjects();
224   - if (registryObjects != null)
225   - {
226   - V existingValue = registryObjects.get(key);
227   - if (existingValue != null)
228   - {
229   - registryObjects.remove(key);
230   -
231   - if (underlyingIntegerMap != null)
232   - {
233   - IdentityHashMap<V, Integer> identityMap = underlyingIntegerMap.<V>getIdentityMap();
234   - List<V> objectList = underlyingIntegerMap.<V>getObjectList();
235   - if (identityMap != null) identityMap.remove(existingValue);
236   - if (objectList != null) objectList.remove(existingValue);
237   - }
238   -
239   - return existingValue;
240   - }
241   - }
242   -
243   - return null;
244   - }
245   -
246 226 private static void setFinalStaticField(Field field, Object value)
247 227 throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException
248 228 {
... ...
src/client/resources/mixins.liteloader.client.json
... ... @@ -20,7 +20,8 @@
20 20 "MixinTileEntityRendererDispatcher",
21 21 "MixinSimpleReloadableResourceManager",
22 22 "MixinSoundHandler",
23   - "MixinGuiTextField"
  23 + "MixinGuiTextField",
  24 + "MixinIntIdentityHashBiMap"
24 25 ],
25 26 "injectors": {
26 27 "defaultRequire": 1
... ...
src/main/java/com/mumfrey/liteloader/PlayerInteractionListener.java
1 1 package com.mumfrey.liteloader;
2 2  
3 3 import net.minecraft.entity.player.EntityPlayerMP;
4   -import net.minecraft.util.BlockPos;
  4 +import net.minecraft.item.ItemStack;
  5 +import net.minecraft.util.math.BlockPos;
5 6 import net.minecraft.util.EnumFacing;
6   -import net.minecraft.util.MovingObjectPosition.MovingObjectType;
  7 +import net.minecraft.util.EnumHand;
  8 +import net.minecraft.util.math.RayTraceResult.Type;
7 9  
8 10 /**
9 11 * Interface for mods which want to observe the player's "interaction" status
... ... @@ -36,7 +38,7 @@ public interface PlayerInteractionListener extends LiteMod
36 38 * without hitting anything (eg. the player clicked the sky)
37 39 */
38 40 public abstract void onPlayerClickedAir(EntityPlayerMP player, MouseButton button, BlockPos tracePos, EnumFacing traceSideHit,
39   - MovingObjectType traceHitType);
  41 + Type traceHitType);
40 42  
41 43 /**
42 44 * Calls when the player clicks and hits a block, usually indicates that the
... ... @@ -45,8 +47,17 @@ public interface PlayerInteractionListener extends LiteMod
45 47 * to proceed, or false to cancel the action. Cancelling the action does not
46 48 * prevent further handlers from receiving the event.
47 49 *
  50 + * <p><b>Important Note:</b> <em>This event is raised <b>twice</b> for a
  51 + * given click when an <tt>OFF_HAND</tt> item is equipped and use of the
  52 + * <tt>MAIN_HAND</tt> item returns a result of type <tt>PASS</tt>.</em> For
  53 + * example if the player is holding a sword in their main hand, and a block
  54 + * in their off hand, right-clicking on a block may <tt>PASS</tt> (if the
  55 + * block is not usable) which will cause fall-through to the off hand.</p>
  56 + *
48 57 * @param player Player
49 58 * @param button Mouse button that was pressed, left = dig, right = interact
  59 + * @param hand Hand used for the operation
  60 + * @param stack ItemStack being used for the operation, <b>may be null</b>
50 61 * @param hitPos Block which was *hit*. Note that block placement will
51 62 * normally be at hitPos.offset(sideHit)
52 63 * @param sideHit Side of the block which was hit
... ... @@ -54,5 +65,15 @@ public interface PlayerInteractionListener extends LiteMod
54 65 * still inhibit the action), return false to cancel the action (other
55 66 * listeners will still be notified)
56 67 */
57   - public abstract boolean onPlayerClickedBlock(EntityPlayerMP player, MouseButton button, BlockPos hitPos, EnumFacing sideHit);
  68 + public abstract boolean onPlayerClickedBlock(EntityPlayerMP player, MouseButton button, EnumHand hand, ItemStack stack, BlockPos hitPos,
  69 + EnumFacing sideHit);
  70 +
  71 + /**
  72 + * Called when the player swaps items in hand
  73 + *
  74 + * @param player Player
  75 + * @return true to allow the action to be processed, false to cancel the
  76 + * action
  77 + */
  78 + public abstract boolean onPlayerSwapItems(EntityPlayerMP player);
58 79 }
... ...
src/main/java/com/mumfrey/liteloader/PreJoinGameListener.java
1 1 package com.mumfrey.liteloader;
2 2  
3 3 import net.minecraft.network.INetHandler;
4   -import net.minecraft.network.play.server.S01PacketJoinGame;
  4 +import net.minecraft.network.play.server.SPacketJoinGame;
5 5  
6 6  
7 7 /**
... ... @@ -20,5 +20,5 @@ public interface PreJoinGameListener extends LiteMod
20 20 * @param joinGamePacket Join game packet
21 21 * @return true to allow login to continue, false to cancel login
22 22 */
23   - public abstract boolean onPreJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket);
  23 + public abstract boolean onPreJoinGame(INetHandler netHandler, SPacketJoinGame joinGamePacket);
24 24 }
... ...
src/main/java/com/mumfrey/liteloader/ServerChatFilter.java
1 1 package com.mumfrey.liteloader;
2 2  
3 3 import net.minecraft.entity.player.EntityPlayerMP;
4   -import net.minecraft.network.play.client.C01PacketChatMessage;
  4 +import net.minecraft.network.play.client.CPacketChatMessage;
5 5  
6 6 /**
7 7 * Interface for mods which can filter inbound chat
... ... @@ -18,5 +18,5 @@ public interface ServerChatFilter extends LiteMod
18 18 * @param message Chat message
19 19 * @return True to keep the packet, false to discard
20 20 */
21   - public abstract boolean onChat(EntityPlayerMP player, C01PacketChatMessage chatPacket, String message);
  21 + public abstract boolean onChat(EntityPlayerMP player, CPacketChatMessage chatPacket, String message);
22 22 }
... ...
src/main/java/com/mumfrey/liteloader/api/CoreProvider.java
1 1 package com.mumfrey.liteloader.api;
2 2  
3 3 import net.minecraft.network.INetHandler;
4   -import net.minecraft.network.play.server.S01PacketJoinGame;
  4 +import net.minecraft.network.play.server.SPacketJoinGame;
5 5  
6 6 import com.mumfrey.liteloader.common.GameEngine;
7 7 import com.mumfrey.liteloader.core.LiteLoaderMods;
... ... @@ -59,5 +59,5 @@ public interface CoreProvider extends TickObserver, WorldObserver, ShutdownObser
59 59 * @param netHandler
60 60 * @param loginPacket
61 61 */
62   - public abstract void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket);
  62 + public abstract void onJoinGame(INetHandler netHandler, SPacketJoinGame loginPacket);
63 63 }
... ...
src/main/java/com/mumfrey/liteloader/common/ducks/IChatPacket.java
1 1 package com.mumfrey.liteloader.common.ducks;
2 2  
3   -import net.minecraft.util.IChatComponent;
  3 +import net.minecraft.util.text.ITextComponent;
4 4  
5 5 public interface IChatPacket
6 6 {
7   - public abstract IChatComponent getChatComponent();
  7 + public abstract ITextComponent getChatComponent();
8 8  
9   - public abstract void setChatComponent(IChatComponent chatComponent);
  9 + public abstract void setChatComponent(ITextComponent chatComponent);
10 10 }
... ...
src/main/java/com/mumfrey/liteloader/common/ducks/ITeleportHandler.java 0 โ†’ 100644
  1 +/*
  2 + * This file is part of LiteLoader.
  3 + * Copyright (C) 2012-16 Adam Mummery-Smith
  4 + * All Rights Reserved.
  5 + */
  6 +package com.mumfrey.liteloader.common.ducks;
  7 +
  8 +import net.minecraft.util.math.Vec3d;
  9 +
  10 +public interface ITeleportHandler
  11 +{
  12 + public abstract int beginTeleport(Vec3d location);
  13 +}
... ...
src/main/java/com/mumfrey/liteloader/common/mixin/MixinC15PacketClientSettings.java
... ... @@ -5,9 +5,9 @@ import org.spongepowered.asm.mixin.Shadow;
5 5  
6 6 import com.mumfrey.liteloader.common.ducks.IPacketClientSettings;
7 7  
8   -import net.minecraft.network.play.client.C15PacketClientSettings;
  8 +import net.minecraft.network.play.client.CPacketClientSettings;
9 9  
10   -@Mixin(C15PacketClientSettings.class)
  10 +@Mixin(CPacketClientSettings.class)
11 11 public abstract class MixinC15PacketClientSettings implements IPacketClientSettings
12 12 {
13 13 @Shadow private int view;
... ...
src/main/java/com/mumfrey/liteloader/common/mixin/MixinItemInWorldManager.java deleted 100644 โ†’ 0
1   -package com.mumfrey.liteloader.common.mixin;
2   -
3   -import org.spongepowered.asm.mixin.Mixin;
4   -import org.spongepowered.asm.mixin.injection.At;
5   -import org.spongepowered.asm.mixin.injection.Inject;
6   -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
7   -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8   -
9   -import com.mumfrey.liteloader.core.Proxy;
10   -
11   -import net.minecraft.entity.player.EntityPlayer;
12   -import net.minecraft.item.ItemStack;
13   -import net.minecraft.server.management.ItemInWorldManager;
14   -import net.minecraft.util.BlockPos;
15   -import net.minecraft.util.EnumFacing;
16   -import net.minecraft.world.World;
17   -
18   -@Mixin(ItemInWorldManager.class)
19   -public abstract class MixinItemInWorldManager
20   -{
21   - @Inject(
22   - method = "onBlockClicked(Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V",
23   - cancellable = true,
24   - at = @At("HEAD")
25   - )
26   - private void onBlockClicked(BlockPos pos, EnumFacing side, CallbackInfo ci)
27   - {
28   - Proxy.onBlockClicked(ci, (ItemInWorldManager)(Object)this, pos, side);
29   - }
30   -
31   - @Inject(
32   - method = "activateBlockOrUseItem(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;"
33   - + "Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z",
34   - cancellable = true,
35   - at = @At("HEAD")
36   - )
37   - private void onUseItem(EntityPlayer player, World worldIn, ItemStack stack, BlockPos pos, EnumFacing side, float offsetX, float offsetY,
38   - float offsetZ, CallbackInfoReturnable<Boolean> cir)
39   - {
40   - Proxy.onUseItem(cir, player, worldIn, stack, pos, side, offsetX, offsetY, offsetZ);
41   - }
42   -}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinNetHandlerPlayServer.java
... ... @@ -2,27 +2,32 @@ package com.mumfrey.liteloader.common.mixin;
2 2  
3 3 import org.objectweb.asm.Opcodes;
4 4 import org.spongepowered.asm.mixin.Mixin;
  5 +import org.spongepowered.asm.mixin.Shadow;
5 6 import org.spongepowered.asm.mixin.injection.At;
6 7 import org.spongepowered.asm.mixin.injection.At.Shift;
7 8 import org.spongepowered.asm.mixin.injection.Inject;
8   -import org.spongepowered.asm.mixin.injection.Surrogate;
9 9 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10 10 import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
11 11  
  12 +import com.mumfrey.liteloader.common.ducks.ITeleportHandler;
12 13 import com.mumfrey.liteloader.core.Proxy;
13 14  
14 15 import net.minecraft.network.NetHandlerPlayServer;
15   -import net.minecraft.network.play.client.C03PacketPlayer;
16   -import net.minecraft.network.play.client.C07PacketPlayerDigging;
17   -import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement;
18   -import net.minecraft.network.play.client.C0APacketAnimation;
  16 +import net.minecraft.network.play.client.CPacketAnimation;
  17 +import net.minecraft.network.play.client.CPacketPlayer;
  18 +import net.minecraft.network.play.client.CPacketPlayerBlockPlacement;
  19 +import net.minecraft.network.play.client.CPacketPlayerDigging;
  20 +import net.minecraft.util.math.Vec3d;
19 21 import net.minecraft.world.WorldServer;
20 22  
21 23 @Mixin(NetHandlerPlayServer.class)
22   -public abstract class MixinNetHandlerPlayServer
  24 +public abstract class MixinNetHandlerPlayServer implements ITeleportHandler
23 25 {
  26 + @Shadow private int teleportId;
  27 + @Shadow private Vec3d field_184362_y;
  28 +
24 29 @Inject(
25   - method = "processPlayerBlockPlacement(Lnet/minecraft/network/play/client/C08PacketPlayerBlockPlacement;)V",
  30 + method = "processPlayerBlockPlacement(Lnet/minecraft/network/play/client/CPacketPlayerBlockPlacement;)V",
26 31 cancellable = true,
27 32 at = @At(
28 33 value = "INVOKE",
... ... @@ -31,13 +36,13 @@ public abstract class MixinNetHandlerPlayServer
31 36 + "(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V"
32 37 )
33 38 )
34   - private void onPlaceBlock(C08PacketPlayerBlockPlacement packetIn, CallbackInfo ci)
  39 + private void onPlaceBlock(CPacketPlayerBlockPlacement packetIn, CallbackInfo ci)
35 40 {
36 41 Proxy.onPlaceBlock(ci, (NetHandlerPlayServer)(Object)this, packetIn);
37 42 }
38 43  
39 44 @Inject(
40   - method = "handleAnimation(Lnet/minecraft/network/play/client/C0APacketAnimation;)V",
  45 + method = "handleAnimation(Lnet/minecraft/network/play/client/CPacketAnimation;)V",
41 46 cancellable = true,
42 47 at = @At(
43 48 value = "INVOKE",
... ... @@ -46,13 +51,13 @@ public abstract class MixinNetHandlerPlayServer
46 51 + "(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V"
47 52 )
48 53 )
49   - private void onClickedAir(C0APacketAnimation packetIn, CallbackInfo ci)
  54 + private void onClickedAir(CPacketAnimation packetIn, CallbackInfo ci)
50 55 {
51 56 Proxy.onClickedAir(ci, (NetHandlerPlayServer)(Object)this, packetIn);
52 57 }
53 58  
54 59 @Inject(
55   - method = "processPlayerDigging(Lnet/minecraft/network/play/client/C07PacketPlayerDigging;)V",
  60 + method = "processPlayerDigging(Lnet/minecraft/network/play/client/CPacketPlayerDigging;)V",
56 61 cancellable = true,
57 62 at = @At(
58 63 value = "INVOKE",
... ... @@ -61,31 +66,37 @@ public abstract class MixinNetHandlerPlayServer
61 66 + "(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V"
62 67 )
63 68 )
64   - private void onPlayerDigging(C07PacketPlayerDigging packetIn, CallbackInfo ci)
  69 + private void onPlayerDigging(CPacketPlayerDigging packetIn, CallbackInfo ci)
65 70 {
66 71 Proxy.onPlayerDigging(ci, (NetHandlerPlayServer)(Object)this, packetIn);
67 72 }
68 73  
69 74 @Inject(
70   - method = "processPlayer(Lnet/minecraft/network/play/client/C03PacketPlayer;)V",
  75 + method = "processPlayer(Lnet/minecraft/network/play/client/CPacketPlayer;)V",
71 76 cancellable = true,
72 77 locals = LocalCapture.CAPTURE_FAILHARD,
73 78 at = @At(
74 79 value = "FIELD",
75 80 opcode = Opcodes.GETFIELD,
76 81 target = "Lnet/minecraft/entity/player/EntityPlayerMP;posY:D",
77   - ordinal = 4
  82 + ordinal = 3
78 83 )
79 84 )
80   - private void onPlayerMoved(C03PacketPlayer packetIn, CallbackInfo ci, WorldServer world, double oldPosX, double oldPosY, double oldPosZ,
81   - double deltaMoveSq, double deltaX, double deltaY, double deltaZ)
  85 + private void onPlayerMoved(CPacketPlayer packetIn, CallbackInfo ci, WorldServer world)
82 86 {
83   - Proxy.onPlayerMoved(ci, (NetHandlerPlayServer)(Object)this, packetIn, world, oldPosX, oldPosY, oldPosZ, deltaMoveSq, deltaX, deltaY, deltaZ);
  87 + Proxy.onPlayerMoved(ci, (NetHandlerPlayServer)(Object)this, packetIn, world);
84 88 }
85 89  
86   - @Surrogate
87   - private void onPlayerMoved(C03PacketPlayer packetIn, CallbackInfo ci, WorldServer world, double oldPosX, double oldPosY, double oldPosZ)
  90 + @Override
  91 + public int beginTeleport(Vec3d location)
88 92 {
89   - Proxy.onPlayerMoved(ci, (NetHandlerPlayServer)(Object)this, packetIn, world, oldPosX, oldPosY, oldPosZ);
  93 + this.field_184362_y = location;
  94 +
  95 + if (++this.teleportId == Integer.MAX_VALUE)
  96 + {
  97 + this.teleportId = 0;
  98 + }
  99 +
  100 + return this.teleportId;
90 101 }
91 102 }
... ...
src/main/java/com/mumfrey/liteloader/common/mixin/MixinPlayerInteractionManager.java 0 โ†’ 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  7 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  8 +
  9 +import com.mumfrey.liteloader.core.Proxy;
  10 +
  11 +import net.minecraft.entity.player.EntityPlayer;
  12 +import net.minecraft.item.ItemStack;
  13 +import net.minecraft.server.management.PlayerInteractionManager;
  14 +import net.minecraft.util.math.BlockPos;
  15 +import net.minecraft.util.EnumActionResult;
  16 +import net.minecraft.util.EnumFacing;
  17 +import net.minecraft.util.EnumHand;
  18 +import net.minecraft.world.World;
  19 +
  20 +@Mixin(PlayerInteractionManager.class)
  21 +public abstract class MixinPlayerInteractionManager
  22 +{
  23 + @Inject(
  24 + method = "onBlockClicked(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/EnumFacing;)V",
  25 + cancellable = true,
  26 + at = @At("HEAD")
  27 + )
  28 + private void onBlockClicked(BlockPos pos, EnumFacing side, CallbackInfo ci)
  29 + {
  30 + Proxy.onBlockClicked(ci, (PlayerInteractionManager)(Object)this, pos, side);
  31 + }
  32 +
  33 + @Inject(
  34 + method = "processRightClickBlock(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;"
  35 + + "Lnet/minecraft/util/EnumHand;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)"
  36 + + "Lnet/minecraft/util/EnumActionResult;",
  37 + cancellable = true,
  38 + at = @At("HEAD")
  39 + )
  40 + private void onRightClickBlock(EntityPlayer player, World worldIn, ItemStack stack, EnumHand hand, BlockPos pos, EnumFacing side,
  41 + float offsetX, float offsetY, float offsetZ, CallbackInfoReturnable<EnumActionResult> cir)
  42 + {
  43 + Proxy.onRightClickBlock(cir, player, worldIn, stack, hand, pos, side, offsetX, offsetY, offsetZ);
  44 + }
  45 +
  46 +// @Inject(
  47 +// method = "processRightClickBlock(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;"
  48 +// + "Lnet/minecraft/util/EnumHand;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)"
  49 +// + "Lnet/minecraft/util/EnumActionResult;",
  50 +// cancellable = true,
  51 +// at = @At("RETURN")
  52 +// )
  53 +// private void postRightClickBlock(EntityPlayer player, World worldIn, ItemStack stack, EnumHand hand, BlockPos pos, EnumFacing side,
  54 +// float offsetX, float offsetY, float offsetZ, CallbackInfoReturnable<EnumActionResult> cir)
  55 +// {
  56 +// Proxy.postRightClickBlock(cir, player, worldIn, stack, hand, pos, side, offsetX, offsetY, offsetZ);
  57 +// }
  58 +
  59 + @Inject(
  60 + method = "processRightClick(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;"
  61 + + "Lnet/minecraft/util/EnumHand;)Lnet/minecraft/util/EnumActionResult;",
  62 + cancellable = true,
  63 + at = @At("HEAD")
  64 + )
  65 + private void onRightClick(EntityPlayer player, World worldIn, ItemStack stack, EnumHand hand, CallbackInfoReturnable<EnumActionResult> cir)
  66 + {
  67 + Proxy.onRightClick(cir, player, worldIn, stack, hand);
  68 + }
  69 +}
... ...
src/main/java/com/mumfrey/liteloader/common/mixin/MixinServerConfigurationManager.java renamed to src/main/java/com/mumfrey/liteloader/common/mixin/MixinPlayerList.java
... ... @@ -13,10 +13,10 @@ import com.mumfrey.liteloader.core.Proxy;
13 13 import net.minecraft.entity.player.EntityPlayerMP;
14 14 import net.minecraft.network.NetHandlerPlayServer;
15 15 import net.minecraft.network.NetworkManager;
16   -import net.minecraft.server.management.ServerConfigurationManager;
  16 +import net.minecraft.server.management.PlayerList;
17 17  
18   -@Mixin(ServerConfigurationManager.class)
19   -public abstract class MixinServerConfigurationManager
  18 +@Mixin(PlayerList.class)
  19 +public abstract class MixinPlayerList
20 20 {
21 21 @Inject(
22 22 method = "initializeConnectionToPlayer(Lnet/minecraft/network/NetworkManager;Lnet/minecraft/entity/player/EntityPlayerMP;)V",
... ... @@ -24,26 +24,26 @@ public abstract class MixinServerConfigurationManager
24 24 )
25 25 private void onInitializePlayerConnection(NetworkManager netManager, EntityPlayerMP player, CallbackInfo ci)
26 26 {
27   - Proxy.onInitializePlayerConnection((ServerConfigurationManager)(Object)this, netManager, player);
  27 + Proxy.onInitializePlayerConnection((PlayerList)(Object)this, netManager, player);
28 28 }
29 29  
30 30 // Because, forge
31 31 @Surrogate
32 32 private void onInitializePlayerConnection(NetworkManager netManager, EntityPlayerMP player, NetHandlerPlayServer nhps, CallbackInfo ci)
33 33 {
34   - Proxy.onInitializePlayerConnection((ServerConfigurationManager)(Object)this, netManager, player);
  34 + Proxy.onInitializePlayerConnection((PlayerList)(Object)this, netManager, player);
35 35 }
36 36  
37 37 @Inject(method = "playerLoggedIn(Lnet/minecraft/entity/player/EntityPlayerMP;)V", at = @At("RETURN"))
38 38 private void onPlayerLogin(EntityPlayerMP player, CallbackInfo ci)
39 39 {
40   - Proxy.onPlayerLogin((ServerConfigurationManager)(Object)this, player);
  40 + Proxy.onPlayerLogin((PlayerList)(Object)this, player);
41 41 }
42 42  
43 43 @Inject(method = "playerLoggedOut(Lnet/minecraft/entity/player/EntityPlayerMP;)V", at = @At("RETURN"))
44 44 private void onPlayerLogout(EntityPlayerMP player, CallbackInfo ci)
45 45 {
46   - Proxy.onPlayerLogout((ServerConfigurationManager)(Object)this, player);
  46 + Proxy.onPlayerLogout((PlayerList)(Object)this, player);
47 47 }
48 48  
49 49 @Inject(
... ... @@ -53,7 +53,7 @@ public abstract class MixinServerConfigurationManager
53 53 )
54 54 private void onSpawnPlayer(GameProfile profile, CallbackInfoReturnable<EntityPlayerMP> cir)
55 55 {
56   - Proxy.onSpawnPlayer(cir, (ServerConfigurationManager)(Object)this, profile);
  56 + Proxy.onSpawnPlayer(cir, (PlayerList)(Object)this, profile);
57 57 }
58 58  
59 59 @Inject(
... ... @@ -63,6 +63,6 @@ public abstract class MixinServerConfigurationManager
63 63 )
64 64 private void onRespawnPlayer(EntityPlayerMP player, int dimension, boolean conqueredEnd, CallbackInfoReturnable<EntityPlayerMP> cir)
65 65 {
66   - Proxy.onRespawnPlayer(cir, (ServerConfigurationManager)(Object)this, player, dimension, conqueredEnd);
  66 + Proxy.onRespawnPlayer(cir, (PlayerList)(Object)this, player, dimension, conqueredEnd);
67 67 }
68 68 }
... ...
src/main/java/com/mumfrey/liteloader/common/mixin/MixinS02PacketChat.java
... ... @@ -5,22 +5,22 @@ import org.spongepowered.asm.mixin.Shadow;
5 5  
6 6 import com.mumfrey.liteloader.common.ducks.IChatPacket;
7 7  
8   -import net.minecraft.network.play.server.S02PacketChat;
9   -import net.minecraft.util.IChatComponent;
  8 +import net.minecraft.network.play.server.SPacketChat;
  9 +import net.minecraft.util.text.ITextComponent;
10 10  
11   -@Mixin(S02PacketChat.class)
  11 +@Mixin(SPacketChat.class)
12 12 public abstract class MixinS02PacketChat implements IChatPacket
13 13 {
14   - @Shadow private IChatComponent chatComponent;
  14 + @Shadow private ITextComponent chatComponent;
15 15  
16 16 @Override
17   - public IChatComponent getChatComponent()
  17 + public ITextComponent getChatComponent()
18 18 {
19 19 return this.chatComponent;
20 20 }
21 21  
22 22 @Override
23   - public void setChatComponent(IChatComponent chatComponent)
  23 + public void setChatComponent(ITextComponent chatComponent)
24 24 {
25 25 this.chatComponent = chatComponent;
26 26 }
... ...
src/main/java/com/mumfrey/liteloader/common/transformers/PacketEvent.java
1 1 package com.mumfrey.liteloader.common.transformers;
2 2  
  3 +import java.util.HashSet;
  4 +import java.util.Set;
  5 +
3 6 import org.objectweb.asm.Opcodes;
4 7 import org.objectweb.asm.tree.InsnList;
5 8 import org.objectweb.asm.tree.InsnNode;
... ... @@ -20,6 +23,8 @@ import com.mumfrey.liteloader.transformers.event.EventInfo;
20 23 */
21 24 public class PacketEvent extends Event
22 25 {
  26 + private static Set<String> names = new HashSet<String>();
  27 +
23 28 /**
24 29 * Soft index for this packet, used as a lookup for speed when determining
25 30 * handlers.
... ... @@ -28,7 +33,7 @@ public class PacketEvent extends Event
28 33  
29 34 PacketEvent(Packets packet)
30 35 {
31   - super("on" + packet.getShortName(), true, 1000);
  36 + super(PacketEvent.getPacketEventName(packet), true, 1000);
32 37 this.packetIndex = packet.getIndex();
33 38 this.verbose = false;
34 39 }
... ... @@ -62,4 +67,26 @@ public class PacketEvent extends Event
62 67  
63 68 return ctorMAXS;
64 69 }
  70 +
  71 + private static String getPacketEventName(Packets packet)
  72 + {
  73 + String baseName = "on" + packet.getShortName();
  74 + if (!PacketEvent.names.contains(baseName))
  75 + {
  76 + PacketEvent.names.add(baseName);
  77 + return baseName;
  78 + }
  79 +
  80 + for (int ordinal = 1; ordinal < 33; ordinal++)
  81 + {
  82 + String offsetName = String.format("%s#%d", baseName, ordinal);
  83 + if (!PacketEvent.names.contains(offsetName))
  84 + {
  85 + PacketEvent.names.add(offsetName);
  86 + return offsetName;
  87 + }
  88 + }
  89 +
  90 + throw new IllegalArgumentException("Too many packet events with the same name: " + baseName);
  91 + }
65 92 }
... ...
src/main/java/com/mumfrey/liteloader/core/ClientPluginChannels.java
... ... @@ -2,7 +2,7 @@ package com.mumfrey.liteloader.core;
2 2  
3 3 import net.minecraft.network.INetHandler;
4 4 import net.minecraft.network.PacketBuffer;
5   -import net.minecraft.network.play.server.S3FPacketCustomPayload;
  5 +import net.minecraft.network.play.server.SPacketCustomPayload;
6 6  
7 7 import com.mumfrey.liteloader.PluginChannelListener;
8 8 import com.mumfrey.liteloader.api.Listener;
... ... @@ -76,7 +76,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
76 76 *
77 77 * @param customPayload
78 78 */
79   - public abstract void onPluginChannelMessage(S3FPacketCustomPayload customPayload);
  79 + public abstract void onPluginChannelMessage(SPacketCustomPayload customPayload);
80 80  
81 81 /**
82 82 * @param channel
... ...
src/main/java/com/mumfrey/liteloader/core/LiteLoader.java
... ... @@ -40,7 +40,7 @@ import net.minecraft.crash.CrashReportCategory;
40 40 import net.minecraft.launchwrapper.LaunchClassLoader;
41 41 import net.minecraft.network.EnumConnectionState;
42 42 import net.minecraft.network.INetHandler;
43   -import net.minecraft.network.play.server.S01PacketJoinGame;
  43 +import net.minecraft.network.play.server.SPacketJoinGame;
44 44 import net.minecraft.profiler.Profiler;
45 45 import net.minecraft.world.World;
46 46  
... ... @@ -880,7 +880,7 @@ public final class LiteLoader
880 880 * @param netHandler
881 881 * @param loginPacket
882 882 */
883   - void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket)
  883 + void onJoinGame(INetHandler netHandler, SPacketJoinGame loginPacket)
884 884 {
885 885 if (this.permissionsManagerClient != null)
886 886 {
... ...
src/main/java/com/mumfrey/liteloader/core/LiteLoaderEventBroker.java
... ... @@ -14,6 +14,7 @@ import com.mumfrey.liteloader.api.ShutdownObserver;
14 14 import com.mumfrey.liteloader.common.GameEngine;
15 15 import com.mumfrey.liteloader.common.LoadingProgress;
16 16 import com.mumfrey.liteloader.common.ducks.IPacketClientSettings;
  17 +import com.mumfrey.liteloader.common.ducks.ITeleportHandler;
17 18 import com.mumfrey.liteloader.core.event.HandlerList;
18 19 import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp;
19 20 import com.mumfrey.liteloader.interfaces.FastIterable;
... ... @@ -25,20 +26,22 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
25 26 import net.minecraft.command.ICommandManager;
26 27 import net.minecraft.command.ServerCommandManager;
27 28 import net.minecraft.entity.player.EntityPlayerMP;
  29 +import net.minecraft.item.ItemStack;
28 30 import net.minecraft.network.NetHandlerPlayServer;
29 31 import net.minecraft.network.NetworkManager;
30   -import net.minecraft.network.play.client.C03PacketPlayer;
31   -import net.minecraft.network.play.client.C15PacketClientSettings;
32   -import net.minecraft.network.play.server.S08PacketPlayerPosLook;
33   -import net.minecraft.network.play.server.S08PacketPlayerPosLook.EnumFlags;
34   -import net.minecraft.network.play.server.S23PacketBlockChange;
  32 +import net.minecraft.network.play.client.CPacketPlayer;
  33 +import net.minecraft.network.play.client.CPacketClientSettings;
  34 +import net.minecraft.network.play.server.SPacketPlayerPosLook;
  35 +import net.minecraft.network.play.server.SPacketPlayerPosLook.EnumFlags;
  36 +import net.minecraft.network.play.server.SPacketBlockChange;
35 37 import net.minecraft.profiler.Profiler;
36 38 import net.minecraft.server.MinecraftServer;
37   -import net.minecraft.server.management.ItemInWorldManager;
38   -import net.minecraft.server.management.ServerConfigurationManager;
39   -import net.minecraft.util.BlockPos;
  39 +import net.minecraft.server.management.PlayerInteractionManager;
  40 +import net.minecraft.server.management.PlayerList;
  41 +import net.minecraft.util.math.BlockPos;
40 42 import net.minecraft.util.EnumFacing;
41   -import net.minecraft.util.MovingObjectPosition.MovingObjectType;
  43 +import net.minecraft.util.EnumHand;
  44 +import net.minecraft.util.math.RayTraceResult.Type;
42 45 import net.minecraft.world.World;
43 46 import net.minecraft.world.WorldServer;
44 47 import net.minecraft.world.WorldSettings;
... ... @@ -95,7 +98,8 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
95 98 LEFT_CLICK,
96 99 LEFT_CLICK_BLOCK,
97 100 PLACE_BLOCK_MAYBE,
98   - DIG_BLOCK_MAYBE
  101 + DIG_BLOCK_MAYBE,
  102 + DIG_BLOCK_END
99 103 }
100 104  
101 105 /**
... ... @@ -310,7 +314,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
310 314 * @param player
311 315 * @param profile
312 316 */
313   - public void onSpawnPlayer(ServerConfigurationManager scm, EntityPlayerMP player, GameProfile profile)
  317 + public void onSpawnPlayer(PlayerList scm, EntityPlayerMP player, GameProfile profile)
314 318 {
315 319 this.serverPlayerListeners.all().onPlayerConnect(player, profile);
316 320 PlayerEventState playerState = this.getPlayerState(player);
... ... @@ -321,7 +325,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
321 325 * @param scm
322 326 * @param player
323 327 */
324   - public void onPlayerLogin(ServerConfigurationManager scm, EntityPlayerMP player)
  328 + public void onPlayerLogin(PlayerList scm, EntityPlayerMP player)
325 329 {
326 330 LiteLoader.getServerPluginChannels().onPlayerJoined(player);
327 331 }
... ... @@ -331,7 +335,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
331 335 * @param netManager
332 336 * @param player
333 337 */
334   - public void onInitializePlayerConnection(ServerConfigurationManager scm, NetworkManager netManager, EntityPlayerMP player)
  338 + public void onInitializePlayerConnection(PlayerList scm, NetworkManager netManager, EntityPlayerMP player)
335 339 {
336 340 this.serverPlayerListeners.all().onPlayerLoggedIn(player);
337 341 }
... ... @@ -343,7 +347,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
343 347 * @param dimension
344 348 * @param won
345 349 */
346   - public void onRespawnPlayer(ServerConfigurationManager scm, EntityPlayerMP player, EntityPlayerMP oldPlayer, int dimension, boolean won)
  350 + public void onRespawnPlayer(PlayerList scm, EntityPlayerMP player, EntityPlayerMP oldPlayer, int dimension, boolean won)
347 351 {
348 352 this.serverPlayerListeners.all().onPlayerRespawn(player, oldPlayer, dimension, won);
349 353 }
... ... @@ -352,7 +356,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
352 356 * @param scm
353 357 * @param player
354 358 */
355   - public void onPlayerLogout(ServerConfigurationManager scm, EntityPlayerMP player)
  359 + public void onPlayerLogout(PlayerList scm, EntityPlayerMP player)
356 360 {
357 361 this.serverPlayerListeners.all().onPlayerLogout(player);
358 362 this.removePlayer(player);
... ... @@ -389,29 +393,29 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
389 393 this.serverTickListeners.all().onTick(server);
390 394 }
391 395  
392   - public boolean onPlaceBlock(NetHandlerPlayServer netHandler, EntityPlayerMP playerMP, BlockPos pos, EnumFacing facing)
  396 + public boolean onPlaceBlock(NetHandlerPlayServer netHandler, EntityPlayerMP player, EnumHand hand, BlockPos pos, EnumFacing facing)
393 397 {
394   - if (!this.onPlayerInteract(InteractType.PLACE_BLOCK_MAYBE, playerMP, pos, facing))
  398 + if (!this.onPlayerInteract(InteractType.PLACE_BLOCK_MAYBE, player, hand, player.getHeldItem(hand), pos, facing))
395 399 {
396   - S23PacketBlockChange cancellation = new S23PacketBlockChange(playerMP.worldObj, pos.offset(facing));
  400 + SPacketBlockChange cancellation = new SPacketBlockChange(player.worldObj, pos.offset(facing));
397 401 netHandler.playerEntity.playerNetServerHandler.sendPacket(cancellation);
398   - playerMP.sendContainerToPlayer(playerMP.inventoryContainer);
  402 + player.sendContainerToPlayer(player.inventoryContainer);
399 403 return false;
400 404 }
401 405  
402 406 return true;
403 407 }
404 408  
405   - public boolean onClickedAir(NetHandlerPlayServer netHandler)
  409 + public boolean onClickedAir(InteractType action, EntityPlayerMP player, EnumHand hand)
406 410 {
407   - return this.onPlayerInteract(InteractType.LEFT_CLICK, netHandler.playerEntity, null, EnumFacing.SOUTH);
  411 + return this.onPlayerInteract(action, player, hand, player.getHeldItem(hand), null, EnumFacing.SOUTH);
408 412 }
409 413  
410   - public boolean onPlayerDigging(NetHandlerPlayServer netHandler, BlockPos pos, EntityPlayerMP playerMP)
  414 + public boolean onPlayerDigging(InteractType action, EntityPlayerMP player, NetHandlerPlayServer netHandler, BlockPos pos)
411 415 {
412   - if (!this.onPlayerInteract(InteractType.DIG_BLOCK_MAYBE, playerMP, pos, EnumFacing.SOUTH))
  416 + if (!this.onPlayerInteract(action, player, EnumHand.MAIN_HAND, player.getHeldItemMainhand(), pos, EnumFacing.SOUTH))
413 417 {
414   - S23PacketBlockChange cancellation = new S23PacketBlockChange(playerMP.worldObj, pos);
  418 + SPacketBlockChange cancellation = new SPacketBlockChange(player.worldObj, pos);
415 419 netHandler.playerEntity.playerNetServerHandler.sendPacket(cancellation);
416 420 return false;
417 421 }
... ... @@ -419,80 +423,68 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
419 423 return true;
420 424 }
421 425  
422   - public boolean onUseItem(BlockPos pos, EnumFacing side, EntityPlayerMP playerMP)
  426 + public boolean onUseItem(EntityPlayerMP player, EnumHand hand, ItemStack stack, BlockPos pos, EnumFacing side)
423 427 {
424   - if (!this.onPlayerInteract(InteractType.PLACE_BLOCK_MAYBE, playerMP, pos, side))
  428 + if (!this.onPlayerInteract(InteractType.PLACE_BLOCK_MAYBE, player, hand, stack, pos, side))
425 429 {
426   - S23PacketBlockChange cancellation = new S23PacketBlockChange(playerMP.worldObj, pos);
427   - playerMP.playerNetServerHandler.sendPacket(cancellation);
  430 + SPacketBlockChange cancellation = new SPacketBlockChange(player.worldObj, pos);
  431 + player.playerNetServerHandler.sendPacket(cancellation);
428 432 return false;
429 433 }
430 434  
431 435 return true;
432 436 }
433 437  
434   - public boolean onBlockClicked(BlockPos pos, EnumFacing side, ItemInWorldManager manager)
  438 + public boolean onBlockClicked(BlockPos pos, EnumFacing side, PlayerInteractionManager manager)
435 439 {
436   - if (!this.onPlayerInteract(InteractType.LEFT_CLICK_BLOCK, manager.thisPlayerMP, pos, side))
  440 + EntityPlayerMP player = manager.thisPlayerMP;
  441 + if (!this.onPlayerInteract(InteractType.LEFT_CLICK_BLOCK, player, EnumHand.MAIN_HAND, player.getHeldItemMainhand(), pos, side))
437 442 {
438   - S23PacketBlockChange cancellation = new S23PacketBlockChange(manager.theWorld, pos);
439   - manager.thisPlayerMP.playerNetServerHandler.sendPacket(cancellation);
  443 + SPacketBlockChange cancellation = new SPacketBlockChange(manager.theWorld, pos);
  444 + player.playerNetServerHandler.sendPacket(cancellation);
440 445 return false;
441 446 }
442 447  
443 448 return true;
444 449 }
  450 +
  451 + public boolean onPlayerInteract(InteractType action, EntityPlayerMP player, EnumHand hand, ItemStack stack, BlockPos position, EnumFacing side)
  452 + {
  453 + return this.getPlayerState(player).onPlayerInteract(action, player, hand, stack, position, side);
  454 + }
445 455  
446   - public boolean onPlayerInteract(InteractType action, EntityPlayerMP player, BlockPos position, EnumFacing side)
  456 + public boolean onPlayerSwapItems(EntityPlayerMP player)
447 457 {
448   - PlayerEventState eventState = this.getPlayerState(player);
449   - return eventState.onPlayerInteract(action, player, position, side);
  458 + return this.playerInteractionListeners.all().onPlayerSwapItems(player);
450 459 }
451 460  
452   - void onPlayerClickedAir(EntityPlayerMP player, MouseButton button, BlockPos tracePos, EnumFacing traceSideHit, MovingObjectType traceHitType)
  461 + void onPlayerClickedAir(EntityPlayerMP player, MouseButton button, EnumHand hand, BlockPos tracePos, EnumFacing traceSideHit, Type traceHitType)
453 462 {
454 463 this.playerInteractionListeners.all().onPlayerClickedAir(player, button, tracePos, traceSideHit, traceHitType);
455 464 }
456 465  
457   - boolean onPlayerClickedBlock(EntityPlayerMP player, MouseButton button, BlockPos hitPos, EnumFacing sideHit)
  466 + boolean onPlayerClickedBlock(EntityPlayerMP player, MouseButton button, EnumHand hand, ItemStack stack, BlockPos hitPos, EnumFacing sideHit)
458 467 {
459   - return this.playerInteractionListeners.all().onPlayerClickedBlock(player, button, hitPos, sideHit);
  468 + return this.playerInteractionListeners.all().onPlayerClickedBlock(player, button, hand, stack, hitPos, sideHit);
460 469 }
461 470  
462   - public boolean onPlayerMove(NetHandlerPlayServer netHandler, C03PacketPlayer packet, EntityPlayerMP playerMP, WorldServer world)
  471 + public boolean onPlayerMove(NetHandlerPlayServer netHandler, CPacketPlayer packet, EntityPlayerMP player, WorldServer world)
463 472 {
464   - Position from = new Position(playerMP, true);
465   -
466   - double toX = playerMP.posX;
467   - double toY = playerMP.posY;
468   - double toZ = playerMP.posZ;
469   - float toYaw = playerMP.rotationYaw;
470   - float toPitch = playerMP.rotationPitch;
471   -
472   - if (packet.isMoving())
473   - {
474   - toX = packet.getPositionX();
475   - toY = packet.getPositionY();
476   - toZ = packet.getPositionZ();
477   - }
478   -
479   - if (packet.getRotating())
480   - {
481   - toYaw = packet.getYaw();
482   - toPitch = packet.getPitch();
483   - }
484   -
485   - Position to = new Position(toX, toY, toZ, toYaw, toPitch);
  473 + Position from = new Position(player, true);
  474 + Position to = new Position(packet.getX(player.posX), packet.getY(player.posY), packet.getZ(player.posZ),
  475 + packet.getYaw(player.rotationYaw), packet.getPitch(player.rotationPitch));
  476 +
486 477 ReturnValue<Position> pos = new ReturnValue<Position>(to);
487 478  
488   - if (!this.playerMoveListeners.all().onPlayerMove(playerMP, from, to, pos))
  479 + if (!this.playerMoveListeners.all().onPlayerMove(player, from, to, pos))
489 480 {
490   - playerMP.setPositionAndRotation(from.xCoord, from.yCoord, from.zCoord, playerMP.prevRotationYaw, playerMP.prevRotationPitch);
491   - playerMP.playerNetServerHandler.sendPacket(new S08PacketPlayerPosLook(from.xCoord, from.yCoord, from.zCoord,
492   - playerMP.prevRotationYaw, playerMP.prevRotationPitch, Collections.<EnumFlags>emptySet()));
  481 + int teleportId = ((ITeleportHandler)player.playerNetServerHandler).beginTeleport(from);
  482 + player.setPositionAndRotation(from.xCoord, from.yCoord, from.zCoord, player.prevRotationYaw, player.prevRotationPitch);
  483 + player.playerNetServerHandler.sendPacket(new SPacketPlayerPosLook(from.xCoord, from.yCoord, from.zCoord,
  484 + player.prevRotationYaw, player.prevRotationPitch, Collections.<EnumFlags>emptySet(), teleportId));
493 485 return false;
494 486 }
495   -
  487 +
496 488 if (pos.isSet())
497 489 {
498 490 Position newPos = pos.get();
... ... @@ -503,7 +495,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
503 495 return true;
504 496 }
505 497  
506   - void onPlayerSettingsReceived(EntityPlayerMP player, C15PacketClientSettings packet)
  498 + void onPlayerSettingsReceived(EntityPlayerMP player, CPacketClientSettings packet)
507 499 {
508 500 PlayerEventState playerState = this.getPlayerState(player);
509 501 playerState.setTraceDistance(((IPacketClientSettings)packet).getViewDistance());
... ...
src/main/java/com/mumfrey/liteloader/core/LiteLoaderVersion.java
... ... @@ -7,7 +7,7 @@ import java.util.Set;
7 7 * LiteLoader version table
8 8 *
9 9 * @author Adam Mummery-Smith
10   - * @version 1.8.0_00
  10 + * @version 1.9.0_00
11 11 */
12 12 public enum LiteLoaderVersion
13 13 {
... ... @@ -39,12 +39,13 @@ public enum LiteLoaderVersion
39 39 MC_1_7_10_R3(30, 1407687918, "1.7.10", "1.7.10_03", "1.7.10", "1.7.10_03"),
40 40 MC_1_7_10_R4(31, 1414368553, "1.7.10", "1.7.10_04", "1.7.10", "1.7.10_03", "1.7.10_04"),
41 41 MC_1_8_0_R0(32, 0, "1.8", "1.8.0", "1.8", "1.8.0"),
42   - MC_1_8_9_R0(34, 0, "1.8.9", "1.8.9", "1.8.9", "1.8.9");
  42 + MC_1_8_9_R0(34, 0, "1.8.9", "1.8.9", "1.8.9"),
  43 + MC_1_9_0_R0(35, 0, "1.9", "1.9.0", "1.9.0");
43 44  
44 45 /**
45 46 * Current loader version
46 47 */
47   - public static final LiteLoaderVersion CURRENT = LiteLoaderVersion.MC_1_8_9_R0;
  48 + public static final LiteLoaderVersion CURRENT = LiteLoaderVersion.MC_1_9_0_R0;
48 49  
49 50 private static final LiteLoaderUpdateSite updateSite = new LiteLoaderUpdateSite(LiteLoaderVersion.CURRENT.getMinecraftVersion(),
50 51 LiteLoaderVersion.CURRENT.getReleaseTimestamp());
... ... @@ -67,7 +68,9 @@ public enum LiteLoaderVersion
67 68 this.loaderVersion = loaderVersion;
68 69  
69 70 for (String supportedVersion : supportedVersions)
  71 + {
70 72 this.supportedVersions.add(supportedVersion);
  73 + }
71 74 }
72 75  
73 76 public int getLoaderRevision()
... ...
src/main/java/com/mumfrey/liteloader/core/PacketEvents.java
... ... @@ -6,13 +6,13 @@ import net.minecraft.entity.player.EntityPlayerMP;
6 6 import net.minecraft.network.INetHandler;
7 7 import net.minecraft.network.NetHandlerPlayServer;
8 8 import net.minecraft.network.Packet;
9   -import net.minecraft.network.login.server.S02PacketLoginSuccess;
10   -import net.minecraft.network.play.client.C01PacketChatMessage;
11   -import net.minecraft.network.play.client.C15PacketClientSettings;
12   -import net.minecraft.network.play.client.C17PacketCustomPayload;
13   -import net.minecraft.network.play.server.S01PacketJoinGame;
14   -import net.minecraft.network.play.server.S02PacketChat;
15   -import net.minecraft.network.play.server.S3FPacketCustomPayload;
  9 +import net.minecraft.network.login.server.SPacketLoginSuccess;
  10 +import net.minecraft.network.play.client.CPacketChatMessage;
  11 +import net.minecraft.network.play.client.CPacketClientSettings;
  12 +import net.minecraft.network.play.client.CPacketCustomPayload;
  13 +import net.minecraft.network.play.server.SPacketJoinGame;
  14 +import net.minecraft.network.play.server.SPacketChat;
  15 +import net.minecraft.network.play.server.SPacketCustomPayload;
16 16 import net.minecraft.util.IThreadListener;
17 17  
18 18 import com.mumfrey.liteloader.PacketHandler;
... ... @@ -58,13 +58,13 @@ public abstract class PacketEvents implements InterfaceProvider
58 58 private FastIterable<ServerChatFilter> serverChatFilters = new HandlerList<ServerChatFilter>(ServerChatFilter.class,
59 59 ReturnLogicOp.AND_BREAK_ON_FALSE);
60 60  
61   - private final int loginSuccessPacketId = Packets.S02PacketLoginSuccess.getIndex();
62   - private final int serverChatPacketId = Packets.S02PacketChat.getIndex();
63   - private final int clientChatPacketId = Packets.C01PacketChatMessage.getIndex();
64   - private final int joinGamePacketId = Packets.S01PacketJoinGame.getIndex();
65   - private final int serverPayloadPacketId = Packets.S3FPacketCustomPayload.getIndex();
66   - private final int clientPayloadPacketId = Packets.C17PacketCustomPayload.getIndex();
67   - private final int clientSettingsPacketId = Packets.C15PacketClientSettings.getIndex();
  61 + private final int loginSuccessPacketId = Packets.SPacketLoginSuccess.getIndex();
  62 + private final int serverChatPacketId = Packets.SPacketChat.getIndex();
  63 + private final int clientChatPacketId = Packets.CPacketChatMessage.getIndex();
  64 + private final int joinGamePacketId = Packets.SPacketJoinGame.getIndex();
  65 + private final int serverPayloadPacketId = Packets.SPacketCustomPayload.getIndex();
  66 + private final int clientPayloadPacketId = Packets.CPacketCustomPayload.getIndex();
  67 + private final int clientSettingsPacketId = Packets.CPacketClientSettings.getIndex();
68 68  
69 69 /**
70 70 * ctor
... ... @@ -182,7 +182,7 @@ public abstract class PacketEvents implements InterfaceProvider
182 182  
183 183 if (packetId == this.loginSuccessPacketId)
184 184 {
185   - this.handlePacket(e, netHandler, (S02PacketLoginSuccess)packet);
  185 + this.handlePacket(e, netHandler, (SPacketLoginSuccess)packet);
186 186 }
187 187 }
188 188  
... ... @@ -196,40 +196,40 @@ public abstract class PacketEvents implements InterfaceProvider
196 196 protected boolean handlePacketEvent(PacketEventInfo<Packet<?>> e, INetHandler netHandler, int packetId)
197 197 {
198 198 Packet<?> packet = e.getSource();
199   -
  199 +
200 200 if (packetId == this.serverChatPacketId)
201 201 {
202   - this.handlePacket(e, netHandler, (S02PacketChat)packet);
  202 + this.handlePacket(e, netHandler, (SPacketChat)packet);
203 203 return true;
204 204 }
205 205  
206 206 if (packetId == this.clientChatPacketId)
207 207 {
208   - this.handlePacket(e, netHandler, (C01PacketChatMessage)packet);
  208 + this.handlePacket(e, netHandler, (CPacketChatMessage)packet);
209 209 return true;
210 210 }
211 211  
212 212 if (packetId == this.joinGamePacketId)
213 213 {
214   - this.handlePacket(e, netHandler, (S01PacketJoinGame)packet);
  214 + this.handlePacket(e, netHandler, (SPacketJoinGame)packet);
215 215 return true;
216 216 }
217 217  
218 218 if (packetId == this.serverPayloadPacketId)
219 219 {
220   - this.handlePacket(e, netHandler, (S3FPacketCustomPayload)packet);
  220 + this.handlePacket(e, netHandler, (SPacketCustomPayload)packet);
221 221 return true;
222 222 }
223 223  
224 224 if (packetId == this.clientPayloadPacketId)
225 225 {
226   - this.handlePacket(e, netHandler, (C17PacketCustomPayload)packet);
  226 + this.handlePacket(e, netHandler, (CPacketCustomPayload)packet);
227 227 return true;
228 228 }
229 229  
230 230 if (packetId == this.clientSettingsPacketId)
231 231 {
232   - this.handlePacket(e, netHandler, (C15PacketClientSettings)packet);
  232 + this.handlePacket(e, netHandler, (CPacketClientSettings)packet);
233 233 return true;
234 234 }
235 235  
... ... @@ -241,7 +241,7 @@ public abstract class PacketEvents implements InterfaceProvider
241 241 * @param netHandler
242 242 * @param packet
243 243 */
244   - protected abstract void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S02PacketLoginSuccess packet);
  244 + protected abstract void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketLoginSuccess packet);
245 245  
246 246 /**
247 247 * S02PacketChat::processPacket()
... ... @@ -249,7 +249,7 @@ public abstract class PacketEvents implements InterfaceProvider
249 249 * @param netHandler
250 250 * @param packet
251 251 */
252   - protected abstract void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S02PacketChat packet);
  252 + protected abstract void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketChat packet);
253 253  
254 254 /**
255 255 * S02PacketChat::processPacket()
... ... @@ -257,7 +257,7 @@ public abstract class PacketEvents implements InterfaceProvider
257 257 * @param netHandler
258 258 * @param packet
259 259 */
260   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, C01PacketChatMessage packet)
  260 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, CPacketChatMessage packet)
261 261 {
262 262 EntityPlayerMP player = netHandler instanceof NetHandlerPlayServer ? ((NetHandlerPlayServer)netHandler).playerEntity : null;
263 263  
... ... @@ -268,12 +268,12 @@ public abstract class PacketEvents implements InterfaceProvider
268 268 }
269 269  
270 270 /**
271   - * S01PacketJoinGame::processPacket()
  271 + * SPacketJoinGame::processPacket()
272 272 *
273 273 * @param netHandler
274 274 * @param packet
275 275 */
276   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S01PacketJoinGame packet)
  276 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketJoinGame packet)
277 277 {
278 278 this.loader.onJoinGame(netHandler, packet);
279 279 }
... ... @@ -284,7 +284,7 @@ public abstract class PacketEvents implements InterfaceProvider
284 284 * @param netHandler
285 285 * @param packet
286 286 */
287   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, S3FPacketCustomPayload packet)
  287 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, SPacketCustomPayload packet)
288 288 {
289 289 LiteLoader.getClientPluginChannels().onPluginChannelMessage(packet);
290 290 }
... ... @@ -295,7 +295,7 @@ public abstract class PacketEvents implements InterfaceProvider
295 295 * @param netHandler
296 296 * @param packet
297 297 */
298   - protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, C17PacketCustomPayload packet)
  298 + protected void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, CPacketCustomPayload packet)
299 299 {
300 300 LiteLoader.getServerPluginChannels().onPluginChannelMessage(netHandler, packet);
301 301 }
... ... @@ -307,7 +307,7 @@ public abstract class PacketEvents implements InterfaceProvider
307 307 * @param netHandler
308 308 * @param packet
309 309 */
310   - private void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, C15PacketClientSettings packet)
  310 + private void handlePacket(PacketEventInfo<Packet<?>> e, INetHandler netHandler, CPacketClientSettings packet)
311 311 {
312 312 if (netHandler instanceof NetHandlerPlayServer)
313 313 {
... ...
src/main/java/com/mumfrey/liteloader/core/PlayerEventState.java
... ... @@ -3,11 +3,13 @@ package com.mumfrey.liteloader.core;
3 3 import java.lang.ref.WeakReference;
4 4  
5 5 import net.minecraft.entity.player.EntityPlayerMP;
  6 +import net.minecraft.item.ItemStack;
6 7 import net.minecraft.server.MinecraftServer;
7   -import net.minecraft.util.BlockPos;
  8 +import net.minecraft.util.math.BlockPos;
8 9 import net.minecraft.util.EnumFacing;
9   -import net.minecraft.util.MovingObjectPosition;
10   -import net.minecraft.util.MovingObjectPosition.MovingObjectType;
  10 +import net.minecraft.util.EnumHand;
  11 +import net.minecraft.util.math.RayTraceResult;
  12 +import net.minecraft.util.math.RayTraceResult.Type;
11 13  
12 14 import com.mumfrey.liteloader.PlayerInteractionListener.MouseButton;
13 15 import com.mumfrey.liteloader.core.LiteLoaderEventBroker.InteractType;
... ... @@ -27,8 +29,11 @@ public class PlayerEventState implements IEventState
27 29 private int suppressRightTicks;
28 30 private boolean leftClick;
29 31 private boolean rightClick;
  32 + private boolean digging;
  33 +
  34 + private EnumHand hand = EnumHand.MAIN_HAND;
30 35  
31   - private MovingObjectPosition hit;
  36 + private RayTraceResult hit;
32 37  
33 38 private String locale = "en_US";
34 39  
... ... @@ -73,14 +78,16 @@ public class PlayerEventState implements IEventState
73 78 @Override
74 79 public void onTick(MinecraftServer server)
75 80 {
76   - if (this.leftClick && this.suppressLeftTicks == 0)
  81 + if (this.leftClick && this.suppressLeftTicks == 0 && !this.digging)
77 82 {
78   - this.broker.onPlayerClickedAir(this.getPlayer(), MouseButton.LEFT, this.hit.getBlockPos(), this.hit.sideHit, this.hit.typeOfHit);
  83 + this.broker.onPlayerClickedAir(this.getPlayer(), MouseButton.LEFT, this.hand,
  84 + this.hit.getBlockPos(), this.hit.sideHit, this.hit.typeOfHit);
79 85 }
80 86  
81 87 if (this.rightClick && this.suppressRightTicks == 0)
82 88 {
83   - this.broker.onPlayerClickedAir(this.getPlayer(), MouseButton.RIGHT, this.hit.getBlockPos(), this.hit.sideHit, this.hit.typeOfHit);
  89 + this.broker.onPlayerClickedAir(this.getPlayer(), MouseButton.RIGHT, this.hand,
  90 + this.hit.getBlockPos(), this.hit.sideHit, this.hit.typeOfHit);
84 91 }
85 92  
86 93 if (this.suppressLeftTicks > 0) this.suppressLeftTicks--;
... ... @@ -90,18 +97,33 @@ public class PlayerEventState implements IEventState
90 97 this.rightClick = false;
91 98 }
92 99  
93   - public boolean onPlayerInteract(InteractType action, EntityPlayerMP player, BlockPos position, EnumFacing side)
  100 + public boolean onPlayerInteract(InteractType action, EntityPlayerMP player, EnumHand hand, ItemStack stack, BlockPos position, EnumFacing side)
94 101 {
  102 + if (action == InteractType.DIG_BLOCK_MAYBE && !player.isCreative())
  103 + {
  104 + this.digging = true;
  105 + }
  106 +
  107 + if (action == InteractType.DIG_BLOCK_END)
  108 + {
  109 + this.digging = false;
  110 + this.suppressLeftTicks++;
  111 + return true;
  112 + }
  113 +
95 114 this.hit = EntityUtilities.rayTraceFromEntity(player, this.traceDistance, 0.0F);
96 115  
97 116 if (action == InteractType.LEFT_CLICK)
98 117 {
99 118 this.leftClick = true;
  119 + this.hand = hand;
100 120 return true;
101 121 }
102 122  
103 123 if (action == InteractType.RIGHT_CLICK)
104 124 {
  125 + this.digging = false;
  126 + this.hand = hand;
105 127 this.rightClick = true;
106 128 return true;
107 129 }
... ... @@ -109,29 +131,34 @@ public class PlayerEventState implements IEventState
109 131 if ((action == InteractType.LEFT_CLICK_BLOCK || action == InteractType.DIG_BLOCK_MAYBE) && this.suppressLeftTicks == 0)
110 132 {
111 133 this.suppressLeftTicks += 2;
112   - return this.broker.onPlayerClickedBlock(player, MouseButton.LEFT, position, side);
  134 + return this.broker.onPlayerClickedBlock(player, MouseButton.LEFT, hand, stack, position, side);
113 135 }
114 136  
115 137 if (action == InteractType.PLACE_BLOCK_MAYBE)
116 138 {
117   - if (this.suppressRightTicks > 0)
  139 + this.digging = false;
  140 +
  141 + if (this.suppressRightTicks > 0 && (this.suppressRightTicks != 1 && hand != this.hand))
118 142 {
119 143 return true;
120 144 }
121 145  
122 146 if (position.toLong() == PlayerEventState.MISS)
123 147 {
124   - MovingObjectPosition actualHit = EntityUtilities.rayTraceFromEntity(player, player.capabilities.isCreativeMode ? 5.0 : 4.5, 0.0F);
125   - if (actualHit.typeOfHit == MovingObjectType.MISS)
  148 + RayTraceResult actualHit = EntityUtilities.rayTraceFromEntity(player, player.capabilities.isCreativeMode ? 5.0 : 4.5, 0.0F);
  149 + if (actualHit.typeOfHit == Type.MISS)
126 150 {
  151 + this.digging = false;
  152 + this.hand = hand;
127 153 this.rightClick = true;
128 154 return true;
129 155 }
130 156 }
131 157  
  158 + this.hand = hand;
132 159 this.suppressRightTicks++;
133 160 this.suppressLeftTicks++;
134   - return this.broker.onPlayerClickedBlock(player, MouseButton.RIGHT, position, side);
  161 + return this.broker.onPlayerClickedBlock(player, MouseButton.RIGHT, hand, stack, position, side);
135 162 }
136 163  
137 164 return true;
... ...
src/main/java/com/mumfrey/liteloader/core/Proxy.java
... ... @@ -4,21 +4,25 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
4 4 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
5 5  
6 6 import com.mojang.authlib.GameProfile;
  7 +import com.mumfrey.liteloader.core.LiteLoaderEventBroker.InteractType;
7 8  
8 9 import net.minecraft.entity.player.EntityPlayer;
9 10 import net.minecraft.entity.player.EntityPlayerMP;
10 11 import net.minecraft.item.ItemStack;
11 12 import net.minecraft.network.NetHandlerPlayServer;
12 13 import net.minecraft.network.NetworkManager;
13   -import net.minecraft.network.play.client.C03PacketPlayer;
14   -import net.minecraft.network.play.client.C07PacketPlayerDigging;
15   -import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement;
16   -import net.minecraft.network.play.client.C0APacketAnimation;
  14 +import net.minecraft.network.play.client.CPacketAnimation;
  15 +import net.minecraft.network.play.client.CPacketPlayer;
  16 +import net.minecraft.network.play.client.CPacketPlayerBlockPlacement;
  17 +import net.minecraft.network.play.client.CPacketPlayerDigging;
  18 +import net.minecraft.network.play.client.CPacketPlayerDigging.Action;
17 19 import net.minecraft.server.MinecraftServer;
18   -import net.minecraft.server.management.ItemInWorldManager;
19   -import net.minecraft.server.management.ServerConfigurationManager;
20   -import net.minecraft.util.BlockPos;
  20 +import net.minecraft.server.management.PlayerInteractionManager;
  21 +import net.minecraft.server.management.PlayerList;
  22 +import net.minecraft.util.EnumActionResult;
21 23 import net.minecraft.util.EnumFacing;
  24 +import net.minecraft.util.EnumHand;
  25 +import net.minecraft.util.math.BlockPos;
22 26 import net.minecraft.world.World;
23 27 import net.minecraft.world.WorldServer;
24 28  
... ... @@ -39,27 +43,27 @@ public abstract class Proxy
39 43 }
40 44 }
41 45  
42   - public static void onInitializePlayerConnection(ServerConfigurationManager source, NetworkManager netManager, EntityPlayerMP player)
  46 + public static void onInitializePlayerConnection(PlayerList source, NetworkManager netManager, EntityPlayerMP player)
43 47 {
44 48 Proxy.broker.onInitializePlayerConnection(source, netManager, player);
45 49 }
46 50  
47   - public static void onPlayerLogin(ServerConfigurationManager source, EntityPlayerMP player)
  51 + public static void onPlayerLogin(PlayerList source, EntityPlayerMP player)
48 52 {
49 53 Proxy.broker.onPlayerLogin(source, player);
50 54 }
51 55  
52   - public static void onPlayerLogout(ServerConfigurationManager source, EntityPlayerMP player)
  56 + public static void onPlayerLogout(PlayerList source, EntityPlayerMP player)
53 57 {
54 58 Proxy.broker.onPlayerLogout(source, player);
55 59 }
56 60  
57   - public static void onSpawnPlayer(CallbackInfoReturnable<EntityPlayerMP> cir, ServerConfigurationManager source, GameProfile profile)
  61 + public static void onSpawnPlayer(CallbackInfoReturnable<EntityPlayerMP> cir, PlayerList source, GameProfile profile)
58 62 {
59 63 Proxy.broker.onSpawnPlayer(source, cir.getReturnValue(), profile);
60 64 }
61 65  
62   - public static void onRespawnPlayer(CallbackInfoReturnable<EntityPlayerMP> cir, ServerConfigurationManager source, EntityPlayerMP oldPlayer,
  66 + public static void onRespawnPlayer(CallbackInfoReturnable<EntityPlayerMP> cir, PlayerList source, EntityPlayerMP oldPlayer,
63 67 int dimension, boolean won)
64 68 {
65 69 Proxy.broker.onRespawnPlayer(source, cir.getReturnValue(), oldPlayer, dimension, won);
... ... @@ -70,49 +74,87 @@ public abstract class Proxy
70 74 Proxy.broker.onServerTick(mcServer);
71 75 }
72 76  
73   - public static void onPlaceBlock(CallbackInfo ci, NetHandlerPlayServer netHandler, C08PacketPlayerBlockPlacement packet)
  77 + public static void onPlaceBlock(CallbackInfo ci, NetHandlerPlayServer netHandler, CPacketPlayerBlockPlacement packet)
74 78 {
75   - if (!Proxy.broker.onPlaceBlock(netHandler, netHandler.playerEntity, packet.getPosition(),
76   - EnumFacing.getFront(packet.getPlacedBlockDirection())))
77   - {
78   - ci.cancel();
79   - }
  79 + // Potentially not needed any more
  80 +// if (!Proxy.broker.onPlaceBlock(netHandler, netHandler.playerEntity, packet.getPosition(),
  81 +// EnumFacing.getFront(packet.getPlacedBlockDirection())))
  82 +// {
  83 +// ci.cancel();
  84 +// }
80 85 }
81 86  
82   - public static void onClickedAir(CallbackInfo ci, NetHandlerPlayServer netHandler, C0APacketAnimation packet)
  87 + public static void onClickedAir(CallbackInfo ci, NetHandlerPlayServer netHandler, CPacketAnimation packet)
83 88 {
84   - if (!Proxy.broker.onClickedAir(netHandler))
  89 + if (!Proxy.broker.onClickedAir(InteractType.LEFT_CLICK, netHandler.playerEntity, packet.getHand()))
85 90 {
86 91 ci.cancel();
87 92 }
88 93 }
89 94  
90   - public static void onPlayerDigging(CallbackInfo ci, NetHandlerPlayServer netHandler, C07PacketPlayerDigging packet)
  95 + public static void onPlayerDigging(CallbackInfo ci, NetHandlerPlayServer netHandler, CPacketPlayerDigging packet)
91 96 {
92   - if (packet.getStatus() == C07PacketPlayerDigging.Action.START_DESTROY_BLOCK)
  97 + Action action = packet.getAction();
  98 + EntityPlayerMP player = netHandler.playerEntity;
  99 + if (action == Action.START_DESTROY_BLOCK)
  100 + {
  101 + if (!Proxy.broker.onPlayerDigging(InteractType.DIG_BLOCK_MAYBE, player, netHandler, packet.getPosition()))
  102 + {
  103 + ci.cancel();
  104 + }
  105 + }
  106 + else if (action == Action.ABORT_DESTROY_BLOCK || action == Action.STOP_DESTROY_BLOCK)
  107 + {
  108 + Proxy.broker.onPlayerDigging(InteractType.DIG_BLOCK_END, player, netHandler, packet.getPosition());
  109 + }
  110 + else if (action == Action.SWAP_HELD_ITEMS)
93 111 {
94   - if (!Proxy.broker.onPlayerDigging(netHandler, packet.getPosition(), netHandler.playerEntity))
  112 + if (!Proxy.broker.onPlayerSwapItems(player))
95 113 {
96 114 ci.cancel();
97 115 }
98 116 }
99 117 }
100 118  
101   - public static void onUseItem(CallbackInfoReturnable<Boolean> ci, EntityPlayer player, World world, ItemStack itemStack, BlockPos pos,
102   - EnumFacing side, float par8, float par9, float par10)
  119 + public static void onRightClickBlock(CallbackInfoReturnable<EnumActionResult> ci, EntityPlayer player, World world, ItemStack stack,
  120 + EnumHand hand, BlockPos pos, EnumFacing side, float offsetX, float offsetY, float offsetZ)
  121 + {
  122 + if (!(player instanceof EntityPlayerMP))
  123 + {
  124 + return;
  125 + }
  126 +
  127 + if (!Proxy.broker.onUseItem((EntityPlayerMP)player, hand, stack, pos, side))
  128 + {
  129 + ci.setReturnValue(EnumActionResult.FAIL);
  130 + }
  131 + }
  132 +
  133 + public static void postRightClickBlock(CallbackInfoReturnable<EnumActionResult> cir, EntityPlayer player, World world, ItemStack stack,
  134 + EnumHand hand, BlockPos pos, EnumFacing side, float offsetX, float offsetY, float offsetZ)
  135 + {
  136 + if (!(player instanceof EntityPlayerMP))
  137 + {
  138 + return;
  139 + }
  140 +
  141 + System.err.printf("@@ postRightClickBlock: %s\n", cir.getReturnValue());
  142 + }
  143 +
  144 + public static void onRightClick(CallbackInfoReturnable<EnumActionResult> cir, EntityPlayer player, World worldIn, ItemStack stack, EnumHand hand)
103 145 {
104 146 if (!(player instanceof EntityPlayerMP))
105 147 {
106 148 return;
107 149 }
108 150  
109   - if (!Proxy.broker.onUseItem(pos, side, (EntityPlayerMP)player))
  151 + if (!Proxy.broker.onClickedAir(InteractType.RIGHT_CLICK, (EntityPlayerMP)player, hand))
110 152 {
111   - ci.setReturnValue(false);
  153 + cir.setReturnValue(EnumActionResult.FAIL);
112 154 }
113 155 }
114 156  
115   - public static void onBlockClicked(CallbackInfo ci, ItemInWorldManager manager, BlockPos pos, EnumFacing side)
  157 + public static void onBlockClicked(CallbackInfo ci, PlayerInteractionManager manager, BlockPos pos, EnumFacing side)
116 158 {
117 159 if (!Proxy.broker.onBlockClicked(pos, side, manager))
118 160 {
... ... @@ -120,7 +162,7 @@ public abstract class Proxy
120 162 }
121 163 }
122 164  
123   - public static void onPlayerMoved(CallbackInfo ci, NetHandlerPlayServer netHandler, C03PacketPlayer packet, WorldServer world, double oldPosX,
  165 + public static void onPlayerMoved(CallbackInfo ci, NetHandlerPlayServer netHandler, CPacketPlayer packet, WorldServer world, double oldPosX,
124 166 double oldPosY, double oldPosZ)
125 167 {
126 168 if (!Proxy.broker.onPlayerMove(netHandler, packet, netHandler.playerEntity, world))
... ... @@ -129,8 +171,7 @@ public abstract class Proxy
129 171 }
130 172 }
131 173  
132   - public static void onPlayerMoved(CallbackInfo ci, NetHandlerPlayServer netHandler, C03PacketPlayer packet, WorldServer world, double oldPosX,
133   - double oldPosY, double oldPosZ, double deltaMoveSq, double deltaX, double deltaY, double deltaZ)
  174 + public static void onPlayerMoved(CallbackInfo ci, NetHandlerPlayServer netHandler, CPacketPlayer packet, WorldServer world)
134 175 {
135 176 if (!Proxy.broker.onPlayerMove(netHandler, packet, netHandler.playerEntity, world))
136 177 {
... ...
src/main/java/com/mumfrey/liteloader/core/ServerPluginChannels.java
... ... @@ -4,8 +4,8 @@ import net.minecraft.entity.player.EntityPlayerMP;
4 4 import net.minecraft.network.INetHandler;
5 5 import net.minecraft.network.NetHandlerPlayServer;
6 6 import net.minecraft.network.PacketBuffer;
7   -import net.minecraft.network.play.client.C17PacketCustomPayload;
8   -import net.minecraft.network.play.server.S3FPacketCustomPayload;
  7 +import net.minecraft.network.play.client.CPacketCustomPayload;
  8 +import net.minecraft.network.play.server.SPacketCustomPayload;
9 9  
10 10 import com.mumfrey.liteloader.ServerPluginChannelListener;
11 11 import com.mumfrey.liteloader.api.Listener;
... ... @@ -99,7 +99,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
99 99 * @param netHandler
100 100 * @param customPayload
101 101 */
102   - public void onPluginChannelMessage(INetHandler netHandler, C17PacketCustomPayload customPayload)
  102 + public void onPluginChannelMessage(INetHandler netHandler, CPacketCustomPayload customPayload)
103 103 {
104 104 if (customPayload != null && customPayload.getChannelName() != null)
105 105 {
... ... @@ -195,7 +195,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
195 195 */
196 196 private void sendRegistrationData(EntityPlayerMP recipient, PacketBuffer registrationData)
197 197 {
198   - ServerPluginChannels.dispatch(recipient, new S3FPacketCustomPayload(CHANNEL_REGISTER, registrationData));
  198 + ServerPluginChannels.dispatch(recipient, new SPacketCustomPayload(CHANNEL_REGISTER, registrationData));
199 199 }
200 200  
201 201 /**
... ... @@ -237,7 +237,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
237 237 throw new UnregisteredChannelException(channel);
238 238 }
239 239  
240   - S3FPacketCustomPayload payload = new S3FPacketCustomPayload(channel, data);
  240 + SPacketCustomPayload payload = new SPacketCustomPayload(channel, data);
241 241 return ServerPluginChannels.dispatch(recipient, payload);
242 242 }
243 243  
... ... @@ -245,7 +245,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
245 245 * @param recipient
246 246 * @param payload
247 247 */
248   - static boolean dispatch(EntityPlayerMP recipient, S3FPacketCustomPayload payload)
  248 + static boolean dispatch(EntityPlayerMP recipient, SPacketCustomPayload payload)
249 249 {
250 250 try
251 251 {
... ...
src/main/java/com/mumfrey/liteloader/core/runtime/Obf.java
... ... @@ -12,7 +12,7 @@ import org.spongepowered.asm.obfuscation.SrgMethod;
12 12 * Centralised obfuscation table for LiteLoader
13 13 *
14 14 * @author Adam Mummery-Smith
15   - * TODO Obfuscation 1.8.9
  15 + * TODO Obfuscation 1.9
16 16 */
17 17 public class Obf
18 18 {
... ... @@ -38,14 +38,14 @@ public class Obf
38 38  
39 39 // Classes
40 40 // -----------------------------------------------------------------------------------------
41   - public static final Obf Minecraft = new Obf("net.minecraft.client.Minecraft", "ave" );
42   - public static final Obf EntityRenderer = new Obf("net.minecraft.client.renderer.EntityRenderer", "bfk" );
43   - public static final Obf Blocks = new Obf("net.minecraft.init.Blocks", "afi" );
  41 + public static final Obf Minecraft = new Obf("net.minecraft.client.Minecraft", "bcf" );
  42 + public static final Obf EntityRenderer = new Obf("net.minecraft.client.renderer.EntityRenderer", "bng" );
  43 + public static final Obf Blocks = new Obf("net.minecraft.init.Blocks", "aju" );
44 44 public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "b$6" );
45 45 public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "ep" );
46   - public static final Obf Items = new Obf("net.minecraft.init.Items", "zy" );
47   - public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "ny" );
48   - public static final Obf TileEntity = new Obf("net.minecraft.tileentity.TileEntity", "akw" );
  46 + public static final Obf Items = new Obf("net.minecraft.init.Items", "ads" );
  47 + public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "oo" );
  48 + public static final Obf TileEntity = new Obf("net.minecraft.tileentity.TileEntity", "apw" );
49 49  
50 50 // Fields
51 51 // -----------------------------------------------------------------------------------------
... ... @@ -54,11 +54,11 @@ public class Obf
54 54  
55 55 // Methods
56 56 // -----------------------------------------------------------------------------------------
57   - public static final Obf startGame = new Obf(Obf.Minecraft, "func_71384_a", "am" );
  57 + public static final Obf startGame = new Obf(Obf.Minecraft, "func_71384_a", "an" );
58 58 public static final Obf startSection = new Obf(Obf.Profiler, "func_76320_a", "a" );
59 59 public static final Obf endSection = new Obf(Obf.Profiler, "func_76319_b", "b" );
60 60 public static final Obf endStartSection = new Obf(Obf.Profiler, "func_76318_c", "c" );
61   - public static final Obf processPacket = new Obf(Packets.S12PacketEntityVelocity, "func_148833_a", "a" );
  61 + public static final Obf processPacket = new Obf(Packets.SPacketEntityVelocity, "func_148833_a", "a" );
62 62  
63 63 // CHECKSTYLE:ON
64 64  
... ...
src/main/java/com/mumfrey/liteloader/core/runtime/Packets.java
... ... @@ -7,7 +7,7 @@ import java.util.Map;
7 7 * Packet obfuscation table
8 8 *
9 9 * @author Adam Mummery-Smith
10   - * TODO Obfuscation 1.8.9
  10 + * TODO Obfuscation 1.9
11 11 */
12 12 public final class Packets extends Obf
13 13 {
... ... @@ -32,232 +32,246 @@ public final class Packets extends Obf
32 32  
33 33 private static Map<String, Packets> packetMap = new HashMap<String, Packets>();
34 34  
35   - public static Packets S08PacketPlayerPosLook = new Packets("net.minecraft.network.play.server.S08PacketPlayerPosLook", "fi", Context.CLIENT);
36   - public static Packets S0EPacketSpawnObject = new Packets("net.minecraft.network.play.server.S0EPacketSpawnObject", "fk", Context.CLIENT);
37   - public static Packets S11PacketSpawnExperienceOrb = new Packets("net.minecraft.network.play.server.S11PacketSpawnExperienceOrb", "fl", Context.CLIENT);
38   - public static Packets S2CPacketSpawnGlobalEntity = new Packets("net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity", "fm", Context.CLIENT);
39   - public static Packets S0FPacketSpawnMob = new Packets("net.minecraft.network.play.server.S0FPacketSpawnMob", "fn", Context.CLIENT);
40   - public static Packets S10PacketSpawnPainting = new Packets("net.minecraft.network.play.server.S10PacketSpawnPainting", "fo", Context.CLIENT);
41   - public static Packets S0CPacketSpawnPlayer = new Packets("net.minecraft.network.play.server.S0CPacketSpawnPlayer", "fp", Context.CLIENT);
42   - public static Packets S0BPacketAnimation = new Packets("net.minecraft.network.play.server.S0BPacketAnimation", "fq", Context.CLIENT);
43   - public static Packets S37PacketStatistics = new Packets("net.minecraft.network.play.server.S37PacketStatistics", "fr", Context.CLIENT);
44   - public static Packets S25PacketBlockBreakAnim = new Packets("net.minecraft.network.play.server.S25PacketBlockBreakAnim", "fs", Context.CLIENT);
45   - public static Packets S35PacketUpdateTileEntity = new Packets("net.minecraft.network.play.server.S35PacketUpdateTileEntity", "ft", Context.CLIENT);
46   - public static Packets S24PacketBlockAction = new Packets("net.minecraft.network.play.server.S24PacketBlockAction", "fu", Context.CLIENT);
47   - public static Packets S23PacketBlockChange = new Packets("net.minecraft.network.play.server.S23PacketBlockChange", "fv", Context.CLIENT);
48   - public static Packets S41PacketServerDifficulty = new Packets("net.minecraft.network.play.server.S41PacketServerDifficulty", "fw", Context.CLIENT);
49   - public static Packets S3APacketTabComplete = new Packets("net.minecraft.network.play.server.S3APacketTabComplete", "fx", Context.CLIENT);
50   - public static Packets S02PacketChat = new Packets("net.minecraft.network.play.server.S02PacketChat", "fy", Context.CLIENT);
51   - public static Packets S22PacketMultiBlockChange = new Packets("net.minecraft.network.play.server.S22PacketMultiBlockChange", "fz", Context.CLIENT);
52   - public static Packets S32PacketConfirmTransaction = new Packets("net.minecraft.network.play.server.S32PacketConfirmTransaction", "ga", Context.CLIENT);
53   - public static Packets S2EPacketCloseWindow = new Packets("net.minecraft.network.play.server.S2EPacketCloseWindow", "gb", Context.CLIENT);
54   - public static Packets S2DPacketOpenWindow = new Packets("net.minecraft.network.play.server.S2DPacketOpenWindow", "gc", Context.CLIENT);
55   - public static Packets S30PacketWindowItems = new Packets("net.minecraft.network.play.server.S30PacketWindowItems", "gd", Context.CLIENT);
56   - public static Packets S31PacketWindowProperty = new Packets("net.minecraft.network.play.server.S31PacketWindowProperty", "ge", Context.CLIENT);
57   - public static Packets S2FPacketSetSlot = new Packets("net.minecraft.network.play.server.S2FPacketSetSlot", "gf", Context.CLIENT);
58   - public static Packets S3FPacketCustomPayload = new Packets("net.minecraft.network.play.server.S3FPacketCustomPayload", "gg", Context.CLIENT);
59   - public static Packets S40PacketDisconnect = new Packets("net.minecraft.network.play.server.S40PacketDisconnect", "gh", Context.CLIENT);
60   - public static Packets S19PacketEntityStatus = new Packets("net.minecraft.network.play.server.S19PacketEntityStatus", "gi", Context.CLIENT);
61   - public static Packets S49PacketUpdateEntityNBT = new Packets("net.minecraft.network.play.server.S49PacketUpdateEntityNBT", "gj", Context.CLIENT);
62   - public static Packets S27PacketExplosion = new Packets("net.minecraft.network.play.server.S27PacketExplosion", "gk", Context.CLIENT);
63   - public static Packets S46PacketSetCompressionLevel = new Packets("net.minecraft.network.play.server.S46PacketSetCompressionLevel", "gl", Context.CLIENT);
64   - public static Packets S2BPacketChangeGameState = new Packets("net.minecraft.network.play.server.S2BPacketChangeGameState", "gm", Context.CLIENT);
65   - public static Packets S00PacketKeepAlive = new Packets("net.minecraft.network.play.server.S00PacketKeepAlive", "gn", Context.CLIENT);
66   - public static Packets S21PacketChunkData = new Packets("net.minecraft.network.play.server.S21PacketChunkData", "go", Context.CLIENT);
67   - public static Packets S26PacketMapChunkBulk = new Packets("net.minecraft.network.play.server.S26PacketMapChunkBulk", "gp", Context.CLIENT);
68   - public static Packets S28PacketEffect = new Packets("net.minecraft.network.play.server.S28PacketEffect", "gq", Context.CLIENT);
69   - public static Packets S2APacketParticles = new Packets("net.minecraft.network.play.server.S2APacketParticles", "gr", Context.CLIENT);
70   - public static Packets S29PacketSoundEffect = new Packets("net.minecraft.network.play.server.S29PacketSoundEffect", "gs", Context.CLIENT);
71   - public static Packets S01PacketJoinGame = new Packets("net.minecraft.network.play.server.S01PacketJoinGame", "gt", Context.CLIENT);
72   - public static Packets S34PacketMaps = new Packets("net.minecraft.network.play.server.S34PacketMaps", "gu", Context.CLIENT);
73   - public static Packets S14PacketEntity = new Packets("net.minecraft.network.play.server.S14PacketEntity", "gv", Context.CLIENT);
74   - public static Packets S15PacketEntityRelMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S15PacketEntityRelMove", "gv$a", Context.CLIENT);
75   - public static Packets S17PacketEntityLookMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S17PacketEntityLookMove", "gv$b", Context.CLIENT);
76   - public static Packets S16PacketEntityLook = new Packets("net.minecraft.network.play.server.S14PacketEntity$S16PacketEntityLook", "gv$c", Context.CLIENT);
77   - public static Packets S36PacketSignEditorOpen = new Packets("net.minecraft.network.play.server.S36PacketSignEditorOpen", "gw", Context.CLIENT);
78   - public static Packets S39PacketPlayerAbilities = new Packets("net.minecraft.network.play.server.S39PacketPlayerAbilities", "gx", Context.CLIENT);
79   - public static Packets S42PacketCombatEvent = new Packets("net.minecraft.network.play.server.S42PacketCombatEvent", "gy", Context.CLIENT);
80   - public static Packets S38PacketPlayerListItem = new Packets("net.minecraft.network.play.server.S38PacketPlayerListItem", "gz", Context.CLIENT);
81   - public static Packets S0APacketUseBed = new Packets("net.minecraft.network.play.server.S0APacketUseBed", "ha", Context.CLIENT);
82   - public static Packets S13PacketDestroyEntities = new Packets("net.minecraft.network.play.server.S13PacketDestroyEntities", "hb", Context.CLIENT);
83   - public static Packets S1EPacketRemoveEntityEffect = new Packets("net.minecraft.network.play.server.S1EPacketRemoveEntityEffect", "hc", Context.CLIENT);
84   - public static Packets S48PacketResourcePackSend = new Packets("net.minecraft.network.play.server.S48PacketResourcePackSend", "hd", Context.CLIENT);
85   - public static Packets S07PacketRespawn = new Packets("net.minecraft.network.play.server.S07PacketRespawn", "he", Context.CLIENT);
86   - public static Packets S19PacketEntityHeadLook = new Packets("net.minecraft.network.play.server.S19PacketEntityHeadLook", "hf", Context.CLIENT);
87   - public static Packets S44PacketWorldBorder = new Packets("net.minecraft.network.play.server.S44PacketWorldBorder", "hg", Context.CLIENT);
88   - public static Packets S43PacketCamera = new Packets("net.minecraft.network.play.server.S43PacketCamera", "hh", Context.CLIENT);
89   - public static Packets S09PacketHeldItemChange = new Packets("net.minecraft.network.play.server.S09PacketHeldItemChange", "hi", Context.CLIENT);
90   - public static Packets S3DPacketDisplayScoreboard = new Packets("net.minecraft.network.play.server.S3DPacketDisplayScoreboard", "hj", Context.CLIENT);
91   - public static Packets S1CPacketEntityMetadata = new Packets("net.minecraft.network.play.server.S1CPacketEntityMetadata", "hk", Context.CLIENT);
92   - public static Packets S1BPacketEntityAttach = new Packets("net.minecraft.network.play.server.S1BPacketEntityAttach", "hl", Context.CLIENT);
93   - public static Packets S12PacketEntityVelocity = new Packets("net.minecraft.network.play.server.S12PacketEntityVelocity", "hm", Context.CLIENT);
94   - public static Packets S04PacketEntityEquipment = new Packets("net.minecraft.network.play.server.S04PacketEntityEquipment", "hn", Context.CLIENT);
95   - public static Packets S1FPacketSetExperience = new Packets("net.minecraft.network.play.server.S1FPacketSetExperience", "ho", Context.CLIENT);
96   - public static Packets S06PacketUpdateHealth = new Packets("net.minecraft.network.play.server.S06PacketUpdateHealth", "hp", Context.CLIENT);
97   - public static Packets S3BPacketScoreboardObjective = new Packets("net.minecraft.network.play.server.S3BPacketScoreboardObjective", "hq", Context.CLIENT);
98   - public static Packets S3EPacketTeams = new Packets("net.minecraft.network.play.server.S3EPacketTeams", "hr", Context.CLIENT);
99   - public static Packets S3CPacketUpdateScore = new Packets("net.minecraft.network.play.server.S3CPacketUpdateScore", "hs", Context.CLIENT);
100   - public static Packets S05PacketSpawnPosition = new Packets("net.minecraft.network.play.server.S05PacketSpawnPosition", "ht", Context.CLIENT);
101   - public static Packets S03PacketTimeUpdate = new Packets("net.minecraft.network.play.server.S03PacketTimeUpdate", "hu", Context.CLIENT);
102   - public static Packets S45PacketTitle = new Packets("net.minecraft.network.play.server.S45PacketTitle", "hv", Context.CLIENT);
103   - public static Packets S33PacketUpdateSign = new Packets("net.minecraft.network.play.server.S33PacketUpdateSign", "hw", Context.CLIENT);
104   - public static Packets S47PacketPlayerListHeaderFooter = new Packets("net.minecraft.network.play.server.S47PacketPlayerListHeaderFooter", "hx", Context.CLIENT);
105   - public static Packets S0DPacketCollectItem = new Packets("net.minecraft.network.play.server.S0DPacketCollectItem", "hy", Context.CLIENT);
106   - public static Packets S18PacketEntityTeleport = new Packets("net.minecraft.network.play.server.S18PacketEntityTeleport", "hz", Context.CLIENT);
107   - public static Packets S20PacketEntityProperties = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties", "ia", Context.CLIENT);
108   - public static Packets S1DPacketEntityEffect = new Packets("net.minecraft.network.play.server.S1DPacketEntityEffect", "ib", Context.CLIENT);
109   - public static Packets C14PacketTabComplete = new Packets("net.minecraft.network.play.client.C14PacketTabComplete", "id", Context.SERVER);
110   - public static Packets C01PacketChatMessage = new Packets("net.minecraft.network.play.client.C01PacketChatMessage", "ie", Context.SERVER);
111   - public static Packets C16PacketClientStatus = new Packets("net.minecraft.network.play.client.C16PacketClientStatus", "ig", Context.SERVER);
112   - public static Packets C15PacketClientSettings = new Packets("net.minecraft.network.play.client.C15PacketClientSettings", "ih", Context.SERVER);
113   - public static Packets C0FPacketConfirmTransaction = new Packets("net.minecraft.network.play.client.C0FPacketConfirmTransaction", "ii", Context.SERVER);
114   - public static Packets C11PacketEnchantItem = new Packets("net.minecraft.network.play.client.C11PacketEnchantItem", "ij", Context.SERVER);
115   - public static Packets C0EPacketClickWindow = new Packets("net.minecraft.network.play.client.C0EPacketClickWindow", "ik", Context.SERVER);
116   - public static Packets C0DPacketCloseWindow = new Packets("net.minecraft.network.play.client.C0DPacketCloseWindow", "il", Context.SERVER);
117   - public static Packets C17PacketCustomPayload = new Packets("net.minecraft.network.play.client.C17PacketCustomPayload", "im", Context.SERVER);
118   - public static Packets C02PacketUseEntity = new Packets("net.minecraft.network.play.client.C02PacketUseEntity", "in", Context.SERVER);
119   - public static Packets C00PacketKeepAlive = new Packets("net.minecraft.network.play.client.C00PacketKeepAlive", "io", Context.SERVER);
120   - public static Packets C03PacketPlayer = new Packets("net.minecraft.network.play.client.C03PacketPlayer", "ip", Context.SERVER);
121   - public static Packets C04PacketPlayerPosition = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition", "ip$a", Context.SERVER);
122   - public static Packets C06PacketPlayerPosLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook", "ip$b", Context.SERVER);
123   - public static Packets C05PacketPlayerLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C05PacketPlayerLook", "ip$c", Context.SERVER);
124   - public static Packets C13PacketPlayerAbilities = new Packets("net.minecraft.network.play.client.C13PacketPlayerAbilities", "iq", Context.SERVER);
125   - public static Packets C07PacketPlayerDigging = new Packets("net.minecraft.network.play.client.C07PacketPlayerDigging", "ir", Context.SERVER);
126   - public static Packets C0BPacketEntityAction = new Packets("net.minecraft.network.play.client.C0BPacketEntityAction", "is", Context.SERVER);
127   - public static Packets C0CPacketInput = new Packets("net.minecraft.network.play.client.C0CPacketInput", "it", Context.SERVER);
128   - public static Packets C19PacketResourcePackStatus = new Packets("net.minecraft.network.play.client.C19PacketResourcePackStatus", "iu", Context.SERVER);
129   - public static Packets C09PacketHeldItemChange = new Packets("net.minecraft.network.play.client.C09PacketHeldItemChange", "iv", Context.SERVER);
130   - public static Packets C10PacketCreativeInventoryAction = new Packets("net.minecraft.network.play.client.C10PacketCreativeInventoryAction", "iw", Context.SERVER);
131   - public static Packets C12PacketUpdateSign = new Packets("net.minecraft.network.play.client.C12PacketUpdateSign", "ix", Context.SERVER);
132   - public static Packets C0APacketAnimation = new Packets("net.minecraft.network.play.client.C0APacketAnimation", "iy", Context.SERVER);
133   - public static Packets C18PacketSpectate = new Packets("net.minecraft.network.play.client.C18PacketSpectate", "iz", Context.SERVER);
134   - public static Packets C08PacketPlayerBlockPlacement = new Packets("net.minecraft.network.play.client.C08PacketPlayerBlockPlacement", "ja", Context.SERVER);
135   - public static Packets C00Handshake = new Packets("net.minecraft.network.handshake.client.C00Handshake", "jc", Context.SERVER);
136   - public static Packets S02PacketLoginSuccess = new Packets("net.minecraft.network.login.server.S02PacketLoginSuccess", "jg", Context.CLIENT);
137   - public static Packets S01PacketEncryptionRequest = new Packets("net.minecraft.network.login.server.S01PacketEncryptionRequest", "jh", Context.CLIENT);
138   - public static Packets S03PacketEnableCompression = new Packets("net.minecraft.network.login.server.S03PacketEnableCompression", "ji", Context.CLIENT);
139   - public static Packets S00PacketDisconnect = new Packets("net.minecraft.network.login.server.S00PacketDisconnect", "jj", Context.CLIENT);
140   - public static Packets C00PacketLoginStart = new Packets("net.minecraft.network.login.client.C00PacketLoginStart", "jl", Context.SERVER);
141   - public static Packets C01PacketEncryptionResponse = new Packets("net.minecraft.network.login.client.C01PacketEncryptionResponse", "jm", Context.SERVER);
142   - public static Packets S01PacketPong = new Packets("net.minecraft.network.status.server.S01PacketPong", "jq", Context.CLIENT);
143   - public static Packets S00PacketServerInfo = new Packets("net.minecraft.network.status.server.S00PacketServerInfo", "jr", Context.CLIENT);
144   - public static Packets C01PacketPing = new Packets("net.minecraft.network.status.client.C01PacketPing", "ju", Context.SERVER);
145   - public static Packets C00PacketServerQuery = new Packets("net.minecraft.network.status.client.C00PacketServerQuery", "jv", Context.SERVER);
  35 + public static Packets SPacketSpawnObject = new Packets("net/minecraft/network/play/server/SPacketSpawnObject", "fj", Context.CLIENT);
  36 + public static Packets SPacketSpawnExperienceOrb = new Packets("net/minecraft/network/play/server/SPacketSpawnExperienceOrb", "fk", Context.CLIENT);
  37 + public static Packets SPacketSpawnGlobalEntity = new Packets("net/minecraft/network/play/server/SPacketSpawnGlobalEntity", "fl", Context.CLIENT);
  38 + public static Packets SPacketSpawnMob = new Packets("net/minecraft/network/play/server/SPacketSpawnMob", "fm", Context.CLIENT);
  39 + public static Packets SPacketSpawnPainting = new Packets("net/minecraft/network/play/server/SPacketSpawnPainting", "fn", Context.CLIENT);
  40 + public static Packets SPacketSpawnPlayer = new Packets("net/minecraft/network/play/server/SPacketSpawnPlayer", "fo", Context.CLIENT);
  41 + public static Packets SPacketAnimation = new Packets("net/minecraft/network/play/server/SPacketAnimation", "fp", Context.CLIENT);
  42 + public static Packets SPacketStatistics = new Packets("net/minecraft/network/play/server/SPacketStatistics", "fq", Context.CLIENT);
  43 + public static Packets SPacketBlockBreakAnim = new Packets("net/minecraft/network/play/server/SPacketBlockBreakAnim", "fr", Context.CLIENT);
  44 + public static Packets SPacketUpdateTileEntity = new Packets("net/minecraft/network/play/server/SPacketUpdateTileEntity", "fs", Context.CLIENT);
  45 + public static Packets SPacketBlockAction = new Packets("net/minecraft/network/play/server/SPacketBlockAction", "ft", Context.CLIENT);
  46 + public static Packets SPacketBlockChange = new Packets("net/minecraft/network/play/server/SPacketBlockChange", "fu", Context.CLIENT);
  47 + public static Packets SPacketUpdateEntityNBT = new Packets("net/minecraft/network/play/server/SPacketUpdateEntityNBT", "fv", Context.CLIENT);
  48 + public static Packets SPacketServerDifficulty = new Packets("net/minecraft/network/play/server/SPacketServerDifficulty", "fw", Context.CLIENT);
  49 + public static Packets SPacketTabComplete = new Packets("net/minecraft/network/play/server/SPacketTabComplete", "fx", Context.CLIENT);
  50 + public static Packets SPacketChat = new Packets("net/minecraft/network/play/server/SPacketChat", "fy", Context.CLIENT);
  51 + public static Packets SPacketMultiBlockChange = new Packets("net/minecraft/network/play/server/SPacketMultiBlockChange", "fz", Context.CLIENT);
  52 + public static Packets SPacketConfirmTransaction = new Packets("net/minecraft/network/play/server/SPacketConfirmTransaction", "ga", Context.CLIENT);
  53 + public static Packets SPacketCloseWindow = new Packets("net/minecraft/network/play/server/SPacketCloseWindow", "gb", Context.CLIENT);
  54 + public static Packets SPacketOpenWindow = new Packets("net/minecraft/network/play/server/SPacketOpenWindow", "gc", Context.CLIENT);
  55 + public static Packets SPacketWindowItems = new Packets("net/minecraft/network/play/server/SPacketWindowItems", "gd", Context.CLIENT);
  56 + public static Packets SPacketWindowProperty = new Packets("net/minecraft/network/play/server/SPacketWindowProperty", "ge", Context.CLIENT);
  57 + public static Packets SPacketSetSlot = new Packets("net/minecraft/network/play/server/SPacketSetSlot", "gf", Context.CLIENT);
  58 + public static Packets SPacketCooldown = new Packets("net/minecraft/network/play/server/SPacketCooldown", "gg", Context.CLIENT);
  59 + public static Packets SPacketCustomPayload = new Packets("net/minecraft/network/play/server/SPacketCustomPayload", "gh", Context.CLIENT);
  60 + public static Packets SPacketCustomSound = new Packets("net/minecraft/network/play/server/SPacketCustomSound", "gi", Context.CLIENT);
  61 + public static Packets SPacketDisconnectPlay = new Packets("net/minecraft/network/play/server/SPacketDisconnect", "gj", Context.CLIENT);
  62 + public static Packets SPacketEntityStatus = new Packets("net/minecraft/network/play/server/SPacketEntityStatus", "gk", Context.CLIENT);
  63 + public static Packets SPacketExplosion = new Packets("net/minecraft/network/play/server/SPacketExplosion", "gl", Context.CLIENT);
  64 + public static Packets SPacketUnloadChunk = new Packets("net/minecraft/network/play/server/SPacketUnloadChunk", "gm", Context.CLIENT);
  65 + public static Packets SPacketChangeGameState = new Packets("net/minecraft/network/play/server/SPacketChangeGameState", "gn", Context.CLIENT);
  66 + public static Packets SPacketKeepAlive = new Packets("net/minecraft/network/play/server/SPacketKeepAlive", "go", Context.CLIENT);
  67 + public static Packets SPacketChunkData = new Packets("net/minecraft/network/play/server/SPacketChunkData", "gp", Context.CLIENT);
  68 + public static Packets SPacketEffect = new Packets("net/minecraft/network/play/server/SPacketEffect", "gq", Context.CLIENT);
  69 + public static Packets SPacketParticles = new Packets("net/minecraft/network/play/server/SPacketParticles", "gr", Context.CLIENT);
  70 + public static Packets SPacketJoinGame = new Packets("net/minecraft/network/play/server/SPacketJoinGame", "gs", Context.CLIENT);
  71 + public static Packets SPacketMaps = new Packets("net/minecraft/network/play/server/SPacketMaps", "gt", Context.CLIENT);
  72 + public static Packets SPacketEntity = new Packets("net/minecraft/network/play/server/SPacketEntity", "gu", Context.CLIENT);
  73 + public static Packets S15PacketEntityRelMove = new Packets("net/minecraft/network/play/server/SPacketEntity$S15PacketEntityRelMove", "gu$a", Context.CLIENT);
  74 + public static Packets S17PacketEntityLookMove = new Packets("net/minecraft/network/play/server/SPacketEntity$S17PacketEntityLookMove", "gu$b", Context.CLIENT);
  75 + public static Packets S16PacketEntityLook = new Packets("net/minecraft/network/play/server/SPacketEntity$S16PacketEntityLook", "gu$c", Context.CLIENT);
  76 + public static Packets SPacketMoveVehicle = new Packets("net/minecraft/network/play/server/SPacketMoveVehicle", "gv", Context.CLIENT);
  77 + public static Packets SPacketSignEditorOpen = new Packets("net/minecraft/network/play/server/SPacketSignEditorOpen", "gw", Context.CLIENT);
  78 + public static Packets SPacketPlayerAbilities = new Packets("net/minecraft/network/play/server/SPacketPlayerAbilities", "gx", Context.CLIENT);
  79 + public static Packets SPacketCombatEvent = new Packets("net/minecraft/network/play/server/SPacketCombatEvent", "gy", Context.CLIENT);
  80 + public static Packets SPacketPlayerListItem = new Packets("net/minecraft/network/play/server/SPacketPlayerListItem", "gz", Context.CLIENT);
  81 + public static Packets SPacketPlayerPosLook = new Packets("net/minecraft/network/play/server/SPacketPlayerPosLook", "ha", Context.CLIENT);
  82 + public static Packets SPacketUseBed = new Packets("net/minecraft/network/play/server/SPacketUseBed", "hb", Context.CLIENT);
  83 + public static Packets SPacketDestroyEntities = new Packets("net/minecraft/network/play/server/SPacketDestroyEntities", "hc", Context.CLIENT);
  84 + public static Packets SPacketRemoveEntityEffect = new Packets("net/minecraft/network/play/server/SPacketRemoveEntityEffect", "hd", Context.CLIENT);
  85 + public static Packets SPacketResourcePackSend = new Packets("net/minecraft/network/play/server/SPacketResourcePackSend", "he", Context.CLIENT);
  86 + public static Packets SPacketRespawn = new Packets("net/minecraft/network/play/server/SPacketRespawn", "hf", Context.CLIENT);
  87 + public static Packets SPacketEntityHeadLook = new Packets("net/minecraft/network/play/server/SPacketEntityHeadLook", "hg", Context.CLIENT);
  88 + public static Packets SPacketWorldBorder = new Packets("net/minecraft/network/play/server/SPacketWorldBorder", "hh", Context.CLIENT);
  89 + public static Packets SPacketCamera = new Packets("net/minecraft/network/play/server/SPacketCamera", "hi", Context.CLIENT);
  90 + public static Packets SPacketHeldItemChange = new Packets("net/minecraft/network/play/server/SPacketHeldItemChange", "hj", Context.CLIENT);
  91 + public static Packets SPacketDisplayObjective = new Packets("net/minecraft/network/play/server/SPacketDisplayObjective", "hk", Context.CLIENT);
  92 + public static Packets SPacketEntityMetadata = new Packets("net/minecraft/network/play/server/SPacketEntityMetadata", "hl", Context.CLIENT);
  93 + public static Packets SPacketEntityAttach = new Packets("net/minecraft/network/play/server/SPacketEntityAttach", "hm", Context.CLIENT);
  94 + public static Packets SPacketEntityVelocity = new Packets("net/minecraft/network/play/server/SPacketEntityVelocity", "hn", Context.CLIENT);
  95 + public static Packets C00Handshake = new Packets("net/minecraft/network/handshake/client/C00Handshake", "jj", Context.SERVER);
  96 + public static Packets SPacketEntityEquipment = new Packets("net/minecraft/network/play/server/SPacketEntityEquipment", "ho", Context.CLIENT);
  97 + public static Packets SPacketSetExperience = new Packets("net/minecraft/network/play/server/SPacketSetExperience", "hp", Context.CLIENT);
  98 + public static Packets SPacketUpdateHealth = new Packets("net/minecraft/network/play/server/SPacketUpdateHealth", "hq", Context.CLIENT);
  99 + public static Packets SPacketScoreboardObjective = new Packets("net/minecraft/network/play/server/SPacketScoreboardObjective", "hr", Context.CLIENT);
  100 + public static Packets SPacketSetPassengers = new Packets("net/minecraft/network/play/server/SPacketSetPassengers", "hs", Context.CLIENT);
  101 + public static Packets SPacketTeams = new Packets("net/minecraft/network/play/server/SPacketTeams", "ht", Context.CLIENT);
  102 + public static Packets SPacketUpdateScore = new Packets("net/minecraft/network/play/server/SPacketUpdateScore", "hu", Context.CLIENT);
  103 + public static Packets SPacketSpawnPosition = new Packets("net/minecraft/network/play/server/SPacketSpawnPosition", "hv", Context.CLIENT);
  104 + public static Packets SPacketTimeUpdate = new Packets("net/minecraft/network/play/server/SPacketTimeUpdate", "hw", Context.CLIENT);
  105 + public static Packets SPacketTitle = new Packets("net/minecraft/network/play/server/SPacketTitle", "hx", Context.CLIENT);
  106 + public static Packets SPacketUpdateSign = new Packets("net/minecraft/network/play/server/SPacketUpdateSign", "hy", Context.CLIENT);
  107 + public static Packets SPacketSoundEffect = new Packets("net/minecraft/network/play/server/SPacketSoundEffect", "hz", Context.CLIENT);
  108 + public static Packets SPacketPlayerListHeaderFooter = new Packets("net/minecraft/network/play/server/SPacketPlayerListHeaderFooter", "ia", Context.CLIENT);
  109 + public static Packets SPacketCollectItem = new Packets("net/minecraft/network/play/server/SPacketCollectItem", "ib", Context.CLIENT);
  110 + public static Packets SPacketEntityTeleport = new Packets("net/minecraft/network/play/server/SPacketEntityTeleport", "ic", Context.CLIENT);
  111 + public static Packets SPacketEntityProperties = new Packets("net/minecraft/network/play/server/SPacketEntityProperties", "id", Context.CLIENT);
  112 + public static Packets SPacketEntityEffect = new Packets("net/minecraft/network/play/server/SPacketEntityEffect", "ie", Context.CLIENT);
  113 + public static Packets CPacketConfirmTeleport = new Packets("net/minecraft/network/play/client/CPacketConfirmTeleport", "ih", Context.SERVER);
  114 + public static Packets CPacketTabComplete = new Packets("net/minecraft/network/play/client/CPacketTabComplete", "ii", Context.SERVER);
  115 + public static Packets CPacketChatMessage = new Packets("net/minecraft/network/play/client/CPacketChatMessage", "ij", Context.SERVER);
  116 + public static Packets CPacketClientStatus = new Packets("net/minecraft/network/play/client/CPacketClientStatus", "ik", Context.SERVER);
  117 + public static Packets CPacketClientSettings = new Packets("net/minecraft/network/play/client/CPacketClientSettings", "il", Context.SERVER);
  118 + public static Packets CPacketConfirmTransaction = new Packets("net/minecraft/network/play/client/CPacketConfirmTransaction", "im", Context.SERVER);
  119 + public static Packets CPacketEnchantItem = new Packets("net/minecraft/network/play/client/CPacketEnchantItem", "in", Context.SERVER);
  120 + public static Packets CPacketClickWindow = new Packets("net/minecraft/network/play/client/CPacketClickWindow", "io", Context.SERVER);
  121 + public static Packets CPacketCloseWindow = new Packets("net/minecraft/network/play/client/CPacketCloseWindow", "ip", Context.SERVER);
  122 + public static Packets CPacketCustomPayload = new Packets("net/minecraft/network/play/client/CPacketCustomPayload", "iq", Context.SERVER);
  123 + public static Packets CPacketUseEntity = new Packets("net/minecraft/network/play/client/CPacketUseEntity", "ir", Context.SERVER);
  124 + public static Packets CPacketKeepAlive = new Packets("net/minecraft/network/play/client/CPacketKeepAlive", "is", Context.SERVER);
  125 + public static Packets CPacketPlayer = new Packets("net/minecraft/network/play/client/CPacketPlayer", "it", Context.SERVER);
  126 + public static Packets C04PacketPlayerPosition = new Packets("net/minecraft/network/play/client/CPacketPlayer$C04PacketPlayerPosition", "it$a", Context.SERVER);
  127 + public static Packets C06PacketPlayerPosLook = new Packets("net/minecraft/network/play/client/CPacketPlayer$C06PacketPlayerPosLook", "it$b", Context.SERVER);
  128 + public static Packets C05PacketPlayerLook = new Packets("net/minecraft/network/play/client/CPacketPlayer$C05PacketPlayerLook", "it$c", Context.SERVER);
  129 + public static Packets CPacketVehicleMove = new Packets("net/minecraft/network/play/client/CPacketVehicleMove", "iu", Context.SERVER);
  130 + public static Packets CPacketSteerBoat = new Packets("net/minecraft/network/play/client/CPacketSteerBoat", "iv", Context.SERVER);
  131 + public static Packets CPacketPlayerAbilities = new Packets("net/minecraft/network/play/client/CPacketPlayerAbilities", "iw", Context.SERVER);
  132 + public static Packets CPacketPlayerDigging = new Packets("net/minecraft/network/play/client/CPacketPlayerDigging", "ix", Context.SERVER);
  133 + public static Packets CPacketEntityAction = new Packets("net/minecraft/network/play/client/CPacketEntityAction", "iy", Context.SERVER);
  134 + public static Packets CPacketInput = new Packets("net/minecraft/network/play/client/CPacketInput", "iz", Context.SERVER);
  135 + public static Packets CPacketResourcePackStatus = new Packets("net/minecraft/network/play/client/CPacketResourcePackStatus", "ja", Context.SERVER);
  136 + public static Packets CPacketHeldItemChange = new Packets("net/minecraft/network/play/client/CPacketHeldItemChange", "jb", Context.SERVER);
  137 + public static Packets CPacketCreativeInventoryAction = new Packets("net/minecraft/network/play/client/CPacketCreativeInventoryAction", "jc", Context.SERVER);
  138 + public static Packets CPacketUpdateSign = new Packets("net/minecraft/network/play/client/CPacketUpdateSign", "jd", Context.SERVER);
  139 + public static Packets CPacketAnimation = new Packets("net/minecraft/network/play/client/CPacketAnimation", "je", Context.SERVER);
  140 + public static Packets CPacketSpectate = new Packets("net/minecraft/network/play/client/CPacketSpectate", "jf", Context.SERVER);
  141 + public static Packets CPacketPlayerTryUseItem = new Packets("net/minecraft/network/play/client/CPacketPlayerTryUseItem", "jg", Context.SERVER);
  142 + public static Packets CPacketPlayerBlockPlacement = new Packets("net/minecraft/network/play/client/CPacketPlayerBlockPlacement", "jh", Context.SERVER);
  143 + public static Packets SPacketLoginSuccess = new Packets("net/minecraft/network/login/server/SPacketLoginSuccess", "jn", Context.CLIENT);
  144 + public static Packets SPacketEncryptionRequest = new Packets("net/minecraft/network/login/server/SPacketEncryptionRequest", "jo", Context.CLIENT);
  145 + public static Packets SPacketEnableCompression = new Packets("net/minecraft/network/login/server/SPacketEnableCompression", "jp", Context.CLIENT);
  146 + public static Packets SPacketDisconnectLogin = new Packets("net/minecraft/network/login/server/SPacketDisconnect", "jq", Context.CLIENT);
  147 + public static Packets CPacketLoginStart = new Packets("net/minecraft/network/login/client/CPacketLoginStart", "js", Context.SERVER);
  148 + public static Packets CPacketEncryptionResponse = new Packets("net/minecraft/network/login/client/CPacketEncryptionResponse", "jt", Context.SERVER);
  149 + public static Packets SPacketPong = new Packets("net/minecraft/network/status/server/SPacketPong", "jx", Context.CLIENT);
  150 + public static Packets SPacketServerInfo = new Packets("net/minecraft/network/status/server/SPacketServerInfo", "jy", Context.CLIENT);
  151 + public static Packets CPacketPing = new Packets("net/minecraft/network/status/client/CPacketPing", "kb", Context.SERVER);
  152 + public static Packets CPacketServerQuery = new Packets("net/minecraft/network/status/client/CPacketServerQuery", "kc", Context.SERVER);
146 153  
147 154 // CHECKSTYLE:ON
148 155  
149 156 public static final Packets[] packets = new Packets[] {
150   - S08PacketPlayerPosLook,
151   - S0EPacketSpawnObject,
152   - S11PacketSpawnExperienceOrb,
153   - S2CPacketSpawnGlobalEntity,
154   - S0FPacketSpawnMob,
155   - S10PacketSpawnPainting,
156   - S0CPacketSpawnPlayer,
157   - S0BPacketAnimation,
158   - S37PacketStatistics,
159   - S25PacketBlockBreakAnim,
160   - S35PacketUpdateTileEntity,
161   - S24PacketBlockAction,
162   - S23PacketBlockChange,
163   - S41PacketServerDifficulty,
164   - S3APacketTabComplete,
165   - S02PacketChat,
166   - S22PacketMultiBlockChange,
167   - S32PacketConfirmTransaction,
168   - S2EPacketCloseWindow,
169   - S2DPacketOpenWindow,
170   - S30PacketWindowItems,
171   - S31PacketWindowProperty,
172   - S2FPacketSetSlot,
173   - S3FPacketCustomPayload,
174   - S40PacketDisconnect,
175   - S19PacketEntityStatus,
176   - S49PacketUpdateEntityNBT,
177   - S27PacketExplosion,
178   - S46PacketSetCompressionLevel,
179   - S2BPacketChangeGameState,
180   - S00PacketKeepAlive,
181   - S21PacketChunkData,
182   - S26PacketMapChunkBulk,
183   - S28PacketEffect,
184   - S2APacketParticles,
185   - S29PacketSoundEffect,
186   - S01PacketJoinGame,
187   - S34PacketMaps,
188   - S14PacketEntity,
  157 + SPacketSpawnObject,
  158 + SPacketSpawnExperienceOrb,
  159 + SPacketSpawnGlobalEntity,
  160 + SPacketSpawnMob,
  161 + SPacketSpawnPainting,
  162 + SPacketSpawnPlayer,
  163 + SPacketAnimation,
  164 + SPacketStatistics,
  165 + SPacketBlockBreakAnim,
  166 + SPacketUpdateTileEntity,
  167 + SPacketBlockAction,
  168 + SPacketBlockChange,
  169 + SPacketUpdateEntityNBT,
  170 + SPacketServerDifficulty,
  171 + SPacketTabComplete,
  172 + SPacketChat,
  173 + SPacketMultiBlockChange,
  174 + SPacketConfirmTransaction,
  175 + SPacketCloseWindow,
  176 + SPacketOpenWindow,
  177 + SPacketWindowItems,
  178 + SPacketWindowProperty,
  179 + SPacketSetSlot,
  180 + SPacketCooldown,
  181 + SPacketCustomPayload,
  182 + SPacketCustomSound,
  183 + SPacketDisconnectPlay,
  184 + SPacketEntityStatus,
  185 + SPacketExplosion,
  186 + SPacketUnloadChunk,
  187 + SPacketChangeGameState,
  188 + SPacketKeepAlive,
  189 + SPacketChunkData,
  190 + SPacketEffect,
  191 + SPacketParticles,
  192 + SPacketJoinGame,
  193 + SPacketMaps,
  194 + SPacketEntity,
189 195 S15PacketEntityRelMove,
190 196 S17PacketEntityLookMove,
191 197 S16PacketEntityLook,
192   - S36PacketSignEditorOpen,
193   - S39PacketPlayerAbilities,
194   - S42PacketCombatEvent,
195   - S38PacketPlayerListItem,
196   - S0APacketUseBed,
197   - S13PacketDestroyEntities,
198   - S1EPacketRemoveEntityEffect,
199   - S48PacketResourcePackSend,
200   - S07PacketRespawn,
201   - S19PacketEntityHeadLook,
202   - S44PacketWorldBorder,
203   - S43PacketCamera,
204   - S09PacketHeldItemChange,
205   - S3DPacketDisplayScoreboard,
206   - S1CPacketEntityMetadata,
207   - S1BPacketEntityAttach,
208   - S12PacketEntityVelocity,
209   - S04PacketEntityEquipment,
210   - S1FPacketSetExperience,
211   - S06PacketUpdateHealth,
212   - S3BPacketScoreboardObjective,
213   - S3EPacketTeams,
214   - S3CPacketUpdateScore,
215   - S05PacketSpawnPosition,
216   - S03PacketTimeUpdate,
217   - S45PacketTitle,
218   - S33PacketUpdateSign,
219   - S47PacketPlayerListHeaderFooter,
220   - S0DPacketCollectItem,
221   - S18PacketEntityTeleport,
222   - S20PacketEntityProperties,
223   - S1DPacketEntityEffect,
224   - C14PacketTabComplete,
225   - C01PacketChatMessage,
226   - C16PacketClientStatus,
227   - C15PacketClientSettings,
228   - C0FPacketConfirmTransaction,
229   - C11PacketEnchantItem,
230   - C0EPacketClickWindow,
231   - C0DPacketCloseWindow,
232   - C17PacketCustomPayload,
233   - C02PacketUseEntity,
234   - C00PacketKeepAlive,
235   - C03PacketPlayer,
  198 + SPacketMoveVehicle,
  199 + SPacketSignEditorOpen,
  200 + SPacketPlayerAbilities,
  201 + SPacketCombatEvent,
  202 + SPacketPlayerListItem,
  203 + SPacketPlayerPosLook,
  204 + SPacketUseBed,
  205 + SPacketDestroyEntities,
  206 + SPacketRemoveEntityEffect,
  207 + SPacketResourcePackSend,
  208 + SPacketRespawn,
  209 + SPacketEntityHeadLook,
  210 + SPacketWorldBorder,
  211 + SPacketCamera,
  212 + SPacketHeldItemChange,
  213 + SPacketDisplayObjective,
  214 + SPacketEntityMetadata,
  215 + SPacketEntityAttach,
  216 + SPacketEntityVelocity,
  217 + C00Handshake,
  218 + SPacketEntityEquipment,
  219 + SPacketSetExperience,
  220 + SPacketUpdateHealth,
  221 + SPacketScoreboardObjective,
  222 + SPacketSetPassengers,
  223 + SPacketTeams,
  224 + SPacketUpdateScore,
  225 + SPacketSpawnPosition,
  226 + SPacketTimeUpdate,
  227 + SPacketTitle,
  228 + SPacketUpdateSign,
  229 + SPacketSoundEffect,
  230 + SPacketPlayerListHeaderFooter,
  231 + SPacketCollectItem,
  232 + SPacketEntityTeleport,
  233 + SPacketEntityProperties,
  234 + SPacketEntityEffect,
  235 + CPacketConfirmTeleport,
  236 + CPacketTabComplete,
  237 + CPacketChatMessage,
  238 + CPacketClientStatus,
  239 + CPacketClientSettings,
  240 + CPacketConfirmTransaction,
  241 + CPacketEnchantItem,
  242 + CPacketClickWindow,
  243 + CPacketCloseWindow,
  244 + CPacketCustomPayload,
  245 + CPacketUseEntity,
  246 + CPacketKeepAlive,
  247 + CPacketPlayer,
236 248 C04PacketPlayerPosition,
237 249 C06PacketPlayerPosLook,
238 250 C05PacketPlayerLook,
239   - C13PacketPlayerAbilities,
240   - C07PacketPlayerDigging,
241   - C0BPacketEntityAction,
242   - C0CPacketInput,
243   - C19PacketResourcePackStatus,
244   - C09PacketHeldItemChange,
245   - C10PacketCreativeInventoryAction,
246   - C12PacketUpdateSign,
247   - C0APacketAnimation,
248   - C18PacketSpectate,
249   - C08PacketPlayerBlockPlacement,
250   - C00Handshake,
251   - S02PacketLoginSuccess,
252   - S01PacketEncryptionRequest,
253   - S03PacketEnableCompression,
254   - S00PacketDisconnect,
255   - C00PacketLoginStart,
256   - C01PacketEncryptionResponse,
257   - S01PacketPong,
258   - S00PacketServerInfo,
259   - C01PacketPing,
260   - C00PacketServerQuery,
  251 + CPacketVehicleMove,
  252 + CPacketSteerBoat,
  253 + CPacketPlayerAbilities,
  254 + CPacketPlayerDigging,
  255 + CPacketEntityAction,
  256 + CPacketInput,
  257 + CPacketResourcePackStatus,
  258 + CPacketHeldItemChange,
  259 + CPacketCreativeInventoryAction,
  260 + CPacketUpdateSign,
  261 + CPacketAnimation,
  262 + CPacketSpectate,
  263 + CPacketPlayerTryUseItem,
  264 + CPacketPlayerBlockPlacement,
  265 + SPacketLoginSuccess,
  266 + SPacketEncryptionRequest,
  267 + SPacketEnableCompression,
  268 + SPacketDisconnectLogin,
  269 + CPacketLoginStart,
  270 + CPacketEncryptionResponse,
  271 + SPacketPong,
  272 + SPacketServerInfo,
  273 + CPacketPing,
  274 + CPacketServerQuery,
261 275 };
262 276  
263 277 private static int nextPacketIndex;
... ... @@ -270,9 +284,9 @@ public final class Packets extends Obf
270 284  
271 285 private Packets(String seargeName, String obfName, Context context)
272 286 {
273   - super(seargeName, obfName);
274   -
275   - this.shortName = seargeName.substring(Math.max(seargeName.lastIndexOf('.'), seargeName.lastIndexOf('$')) + 1);
  287 + super(seargeName.replace('/', '.'), obfName);
  288 +
  289 + this.shortName = Packets.getShortName(seargeName);
276 290 this.index = Packets.nextPacketIndex++;
277 291 Packets.packetMap.put(this.shortName, this);
278 292 this.context = context;
... ... @@ -318,4 +332,11 @@ public final class Packets extends Obf
318 332 {
319 333 return Packets.packetMap.get(name);
320 334 }
  335 +
  336 + private static String getShortName(String className)
  337 + {
  338 + String simpleName = className.substring(Math.max(className.lastIndexOf('/'), className.lastIndexOf('$')) + 1);
  339 + String baseName = simpleName.replaceAll("^[CS]([0-9A-F]{2})?Packet", "");
  340 + return baseName + "Packet";
  341 + }
321 342 }
... ...
src/main/java/com/mumfrey/liteloader/launch/LiteLoaderTweaker.java
... ... @@ -33,8 +33,8 @@ public class LiteLoaderTweaker implements ITweaker
33 33 public static final int ENV_TYPE_CLIENT = 0;
34 34 public static final int ENV_TYPE_DEDICATEDSERVER = 1;
35 35  
36   - // TODO Version - 1.8.9
37   - public static final String VERSION = "1.8.9";
  36 + // TODO Version - 1.9
  37 + public static final String VERSION = "1.9";
38 38  
39 39 protected static final String bootstrapClassName = "com.mumfrey.liteloader.core.LiteLoaderBootstrap";
40 40  
... ...
src/main/java/com/mumfrey/liteloader/permissions/PermissionsManagerClient.java
... ... @@ -14,7 +14,7 @@ import java.util.TreeSet;
14 14 import net.eq2online.permissions.ReplicatedPermissionsContainer;
15 15 import net.minecraft.network.INetHandler;
16 16 import net.minecraft.network.PacketBuffer;
17   -import net.minecraft.network.play.server.S01PacketJoinGame;
  17 +import net.minecraft.network.play.server.SPacketJoinGame;
18 18  
19 19 import com.mumfrey.liteloader.LiteMod;
20 20 import com.mumfrey.liteloader.Permissible;
... ... @@ -185,7 +185,7 @@ public final class PermissionsManagerClient implements PermissionsManager, Plugi
185 185 this.registeredClientPermissions.put(mod, new TreeSet<String>());
186 186 }
187 187  
188   - public void onJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket)
  188 + public void onJoinGame(INetHandler netHandler, SPacketJoinGame joinGamePacket)
189 189 {
190 190 this.clearServerPermissions();
191 191 this.scheduleRefresh();
... ... @@ -207,7 +207,9 @@ public final class PermissionsManagerClient implements PermissionsManager, Plugi
207 207 this.serverPermissions.clear();
208 208  
209 209 for (Permissible permissible : this.permissibles)
  210 + {
210 211 permissible.onPermissionsCleared(this);
  212 + }
211 213 }
212 214  
213 215 /**
... ... @@ -216,7 +218,9 @@ public final class PermissionsManagerClient implements PermissionsManager, Plugi
216 218 protected void sendPermissionQueries()
217 219 {
218 220 for (Permissible mod : this.registeredClientMods.values())
  221 + {
219 222 this.sendPermissionQuery(mod);
  223 + }
220 224 }
221 225  
222 226 /**
... ...
src/main/java/com/mumfrey/liteloader/transformers/event/EventTransformer.java
... ... @@ -27,7 +27,6 @@ import com.mumfrey.liteloader.transformers.ClassTransformer;
27 27 import com.mumfrey.liteloader.transformers.ObfProvider;
28 28 import com.mumfrey.liteloader.transformers.access.AccessorTransformer;
29 29 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
30   -import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity;
31 30  
32 31 /**
33 32 * EventTransformer is the spiritual successor to the
... ... @@ -379,8 +378,7 @@ public final class EventTransformer extends ClassTransformer
379 378 {
380 379 Event head = injection.getHead();
381 380  
382   - Verbosity verbosity = head.isVerbose() ? Verbosity.NORMAL : Verbosity.VERBOSE;
383   - LiteLoaderLogger.info(verbosity, "Injecting %s[x%d] in %s in %s", head.getName(), injection.size(), method.name,
  381 + LiteLoaderLogger.debug("Injecting %s[x%d] in %s in %s", head.getName(), injection.size(), method.name,
384 382 ClassTransformer.getSimpleClassName(classNode));
385 383  
386 384 MethodNode handler = head.inject(injectionPoint, injection.isCancellable(), this.globalEventID, injection.captureLocals(),
... ...
src/main/java/com/mumfrey/liteloader/util/ChatUtilities.java
... ... @@ -2,10 +2,10 @@ package com.mumfrey.liteloader.util;
2 2  
3 3 import java.util.List;
4 4  
5   -import net.minecraft.util.ChatComponentText;
6   -import net.minecraft.util.ChatStyle;
7   -import net.minecraft.util.EnumChatFormatting;
8   -import net.minecraft.util.IChatComponent;
  5 +import net.minecraft.util.text.ITextComponent;
  6 +import net.minecraft.util.text.Style;
  7 +import net.minecraft.util.text.TextComponentString;
  8 +import net.minecraft.util.text.TextFormatting;
9 9  
10 10 /**
11 11 * Utility functions for chat
... ... @@ -20,7 +20,7 @@ public abstract class ChatUtilities
20 20 {
21 21 StringBuilder formattingCodes = new StringBuilder();
22 22  
23   - for (EnumChatFormatting chatFormat : EnumChatFormatting.values())
  23 + for (TextFormatting chatFormat : TextFormatting.values())
24 24 {
25 25 formattingCodes.append(chatFormat.toString().charAt(1));
26 26 }
... ... @@ -36,13 +36,13 @@ public abstract class ChatUtilities
36 36 * @param code Code
37 37 * @return chat style
38 38 */
39   - public static ChatStyle getChatStyleFromCode(char code)
  39 + public static Style getChatStyleFromCode(char code)
40 40 {
41 41 int pos = ChatUtilities.formattingCodeLookup.indexOf(code);
42 42 if (pos < 0) return null;
43   - EnumChatFormatting format = EnumChatFormatting.values()[pos];
  43 + TextFormatting format = TextFormatting.values()[pos];
44 44  
45   - ChatStyle style = new ChatStyle();
  45 + Style style = new Style();
46 46 if (format.isColor())
47 47 {
48 48 style.setColor(format);
... ... @@ -67,12 +67,12 @@ public abstract class ChatUtilities
67 67 * Convert a component containing text formatted with legacy codes to a
68 68 * native ChatComponent structure.
69 69 */
70   - public static IChatComponent convertLegacyCodes(IChatComponent chat)
  70 + public static ITextComponent convertLegacyCodes(ITextComponent chat)
71 71 {
72 72 return ChatUtilities.covertCodesInPlace(chat);
73 73 }
74 74  
75   - private static List<IChatComponent> covertCodesInPlace(List<IChatComponent> siblings)
  75 + private static List<ITextComponent> covertCodesInPlace(List<ITextComponent> siblings)
76 76 {
77 77 for (int index = 0; index < siblings.size(); index++)
78 78 {
... ... @@ -82,21 +82,21 @@ public abstract class ChatUtilities
82 82 return siblings;
83 83 }
84 84  
85   - private static IChatComponent covertCodesInPlace(IChatComponent component)
  85 + private static ITextComponent covertCodesInPlace(ITextComponent component)
86 86 {
87   - IChatComponent newComponent = null;
88   - if (component instanceof ChatComponentText)
  87 + ITextComponent newComponent = null;
  88 + if (component instanceof TextComponentString)
89 89 {
90   - ChatComponentText textComponent = (ChatComponentText)component;
91   - ChatStyle style = textComponent.getChatStyle();
92   - String text = textComponent.getChatComponentText_TextValue();
  90 + TextComponentString textComponent = (TextComponentString)component;
  91 + Style style = textComponent.getStyle();
  92 + String text = textComponent.getFormattedText();
93 93  
94 94 int pos = text.indexOf('\247');
95 95 while (pos > -1 && text != null)
96 96 {
97 97 if (pos < text.length() - 1)
98 98 {
99   - IChatComponent head = new ChatComponentText(pos > 0 ? text.substring(0, pos) : "").setChatStyle(style);
  99 + ITextComponent head = new TextComponentString(pos > 0 ? text.substring(0, pos) : "").setStyle(style);
100 100 style = ChatUtilities.getChatStyleFromCode(text.charAt(pos + 1));
101 101 text = text.substring(pos + 2);
102 102 newComponent = (newComponent == null) ? head : newComponent.appendSibling(head);
... ... @@ -110,7 +110,7 @@ public abstract class ChatUtilities
110 110  
111 111 if (text != null)
112 112 {
113   - IChatComponent tail = new ChatComponentText(text).setChatStyle(style);
  113 + ITextComponent tail = new TextComponentString(text).setStyle(style);
114 114 newComponent = (newComponent == null) ? tail : newComponent.appendSibling(tail);
115 115 }
116 116 }
... ... @@ -121,7 +121,7 @@ public abstract class ChatUtilities
121 121 return component;
122 122 }
123 123  
124   - for (IChatComponent oldSibling : ChatUtilities.covertCodesInPlace((List<IChatComponent>)component.getSiblings()))
  124 + for (ITextComponent oldSibling : ChatUtilities.covertCodesInPlace((List<ITextComponent>)component.getSiblings()))
125 125 {
126 126 newComponent.appendSibling(oldSibling);
127 127 }
... ...
src/main/java/com/mumfrey/liteloader/util/EntityUtilities.java
1 1 package com.mumfrey.liteloader.util;
2 2  
3 3 import net.minecraft.entity.Entity;
4   -import net.minecraft.util.MovingObjectPosition;
5   -import net.minecraft.util.Vec3;
  4 +import net.minecraft.util.math.RayTraceResult;
  5 +import net.minecraft.util.math.Vec3d;
6 6  
7 7 public abstract class EntityUtilities
8 8 {
9   - public static MovingObjectPosition rayTraceFromEntity(Entity entity, double traceDistance, float partialTicks)
  9 + public static RayTraceResult rayTraceFromEntity(Entity entity, double traceDistance, float partialTicks)
10 10 {
11   - Vec3 var4 = EntityUtilities.getPositionEyes(entity, partialTicks);
12   - Vec3 var5 = entity.getLook(partialTicks);
13   - Vec3 var6 = var4.addVector(var5.xCoord * traceDistance, var5.yCoord * traceDistance, var5.zCoord * traceDistance);
  11 + Vec3d var4 = EntityUtilities.getPositionEyes(entity, partialTicks);
  12 + Vec3d var5 = entity.getLook(partialTicks);
  13 + Vec3d var6 = var4.addVector(var5.xCoord * traceDistance, var5.yCoord * traceDistance, var5.zCoord * traceDistance);
14 14 return entity.worldObj.rayTraceBlocks(var4, var6, false, false, true);
15 15 }
16 16  
17   - public static Vec3 getPositionEyes(Entity entity, float partialTicks)
  17 + public static Vec3d getPositionEyes(Entity entity, float partialTicks)
18 18 {
19 19 if (partialTicks == 1.0F)
20 20 {
21   - return new Vec3(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ);
  21 + return new Vec3d(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ);
22 22 }
23 23  
24 24 double interpX = entity.prevPosX + (entity.posX - entity.prevPosX) * partialTicks;
25 25 double interpY = entity.prevPosY + (entity.posY - entity.prevPosY) * partialTicks + entity.getEyeHeight();
26 26 double interpZ = entity.prevPosZ + (entity.posZ - entity.prevPosZ) * partialTicks;
27   - return new Vec3(interpX, interpY, interpZ);
  27 + return new Vec3d(interpX, interpY, interpZ);
28 28 }
29 29 }
... ...
src/main/java/com/mumfrey/liteloader/util/Input.java
... ... @@ -2,7 +2,7 @@ package com.mumfrey.liteloader.util;
2 2  
3 3 import net.minecraft.client.settings.KeyBinding;
4 4 import net.minecraft.network.INetHandler;
5   -import net.minecraft.network.play.server.S01PacketJoinGame;
  5 +import net.minecraft.network.play.server.SPacketJoinGame;
6 6 import net.minecraft.world.World;
7 7  
8 8 import com.mumfrey.liteloader.api.CoreProvider;
... ... @@ -77,7 +77,7 @@ public abstract class Input implements CoreProvider
77 77 }
78 78  
79 79 @Override
80   - public void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket)
  80 + public void onJoinGame(INetHandler netHandler, SPacketJoinGame loginPacket)
81 81 {
82 82 }
83 83  
... ...
src/main/java/com/mumfrey/liteloader/util/ObfuscationUtilities.java
... ... @@ -3,7 +3,7 @@ package com.mumfrey.liteloader.util;
3 3 import net.minecraft.launchwrapper.IClassTransformer;
4 4 import net.minecraft.launchwrapper.Launch;
5 5 import net.minecraft.server.MinecraftServer;
6   -import net.minecraft.util.BlockPos;
  6 +import net.minecraft.util.math.BlockPos;
7 7  
8 8 import com.mumfrey.liteloader.core.runtime.Obf;
9 9  
... ...
src/main/java/com/mumfrey/liteloader/util/Position.java
1 1 package com.mumfrey.liteloader.util;
2 2  
3 3 import net.minecraft.entity.Entity;
4   -import net.minecraft.util.Vec3;
  4 +import net.minecraft.util.math.Vec3d;
5 5  
6 6 /**
7 7 * A 3D vector position with rotation as well
8 8 *
9 9 * @author Adam Mummery-Smith
10 10 */
11   -public class Position extends Vec3
  11 +public class Position extends Vec3d
12 12 {
13 13 public final float yaw;
14 14  
... ...
src/main/resources/mixins.liteloader.core.json
... ... @@ -5,9 +5,9 @@
5 5 "refmap": "mixins.liteloader.core.refmap.json",
6 6 "mixins": [
7 7 "MixinMinecraftServer",
8   - "MixinServerConfigurationManager",
  8 + "MixinPlayerList",
9 9 "MixinNetHandlerPlayServer",
10   - "MixinItemInWorldManager",
  10 + "MixinPlayerInteractionManager",
11 11 "MixinC15PacketClientSettings",
12 12 "MixinS02PacketChat"
13 13 ],
... ...