Fixed some weird stuff I did back in the days when first writing the Packet Serialization.
This commit is contained in:
@@ -14,12 +14,14 @@ import net.minecraft.client.gui.GuiOptions;
|
|||||||
import net.minecraft.client.gui.GuiVideoSettings;
|
import net.minecraft.client.gui.GuiVideoSettings;
|
||||||
import net.minecraft.client.gui.inventory.GuiInventory;
|
import net.minecraft.client.gui.inventory.GuiInventory;
|
||||||
import net.minecraft.client.multiplayer.WorldClient;
|
import net.minecraft.client.multiplayer.WorldClient;
|
||||||
|
import net.minecraft.client.network.NetHandlerPlayClient;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.client.settings.GameSettings.Options;
|
import net.minecraft.client.settings.GameSettings.Options;
|
||||||
import net.minecraftforge.client.event.GuiOpenEvent;
|
import net.minecraftforge.client.event.GuiOpenEvent;
|
||||||
import net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent;
|
import net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent;
|
||||||
import net.minecraftforge.client.event.GuiScreenEvent.DrawScreenEvent;
|
import net.minecraftforge.client.event.GuiScreenEvent.DrawScreenEvent;
|
||||||
import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent;
|
import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent;
|
||||||
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
import net.minecraftforge.fml.common.eventhandler.Event.Result;
|
import net.minecraftforge.fml.common.eventhandler.Event.Result;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
import eu.crushedpixel.replaymod.ReplayMod;
|
import eu.crushedpixel.replaymod.ReplayMod;
|
||||||
@@ -114,6 +116,7 @@ public class GuiEventHandler {
|
|||||||
if(b.id == 1) {
|
if(b.id == 1) {
|
||||||
b.displayString = "Exit Replay";
|
b.displayString = "Exit Replay";
|
||||||
b.yPosition -= 24*2;
|
b.yPosition -= 24*2;
|
||||||
|
b.id = GuiConstants.EXIT_REPLAY_BUTTON;
|
||||||
} else if(b.id >= 5 && b.id <= 7) {
|
} else if(b.id >= 5 && b.id <= 7) {
|
||||||
event.buttonList.remove(b);
|
event.buttonList.remove(b);
|
||||||
} else if(b.id != 4) {
|
} else if(b.id != 4) {
|
||||||
@@ -161,20 +164,18 @@ public class GuiEventHandler {
|
|||||||
mc.displayGuiScreen(new GuiReplaySettings(event.gui));
|
mc.displayGuiScreen(new GuiReplaySettings(event.gui));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ReplayHandler.replayActive() && event.gui instanceof GuiIngameMenu && event.button.id == 1) {
|
if(ReplayHandler.replayActive() && event.gui instanceof GuiIngameMenu && event.button.id == GuiConstants.EXIT_REPLAY_BUTTON) {
|
||||||
|
ReplayHandler.endReplay();
|
||||||
|
|
||||||
event.button.enabled = false;
|
event.button.enabled = false;
|
||||||
|
|
||||||
mc.gameSettings.setOptionFloatValue(Options.GAMMA, ReplayHandler.getInitialGamma());
|
mc.gameSettings.setOptionFloatValue(Options.GAMMA, ReplayHandler.getInitialGamma());
|
||||||
|
|
||||||
ReplayHandler.lastExit = System.currentTimeMillis();
|
ReplayHandler.lastExit = System.currentTimeMillis();
|
||||||
|
|
||||||
/* This is already being executed by the default Exit action handling (vanilla code)
|
|
||||||
mc.theWorld.sendQuittingDisconnectingPacket();
|
mc.theWorld.sendQuittingDisconnectingPacket();
|
||||||
mc.loadWorld((WorldClient)null);
|
mc.loadWorld((WorldClient)null);
|
||||||
mc.displayGuiScreen(new GuiMainMenu());
|
mc.displayGuiScreen(new GuiMainMenu());
|
||||||
*/
|
|
||||||
|
|
||||||
ReplayHandler.endReplay();
|
|
||||||
|
|
||||||
ReplayGuiRegistry.show();
|
ReplayGuiRegistry.show();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ public class GuiReplayOverlay extends Gui {
|
|||||||
if(mc != null && mc.thePlayer != null)
|
if(mc != null && mc.thePlayer != null)
|
||||||
MinecraftTicker.runMouseKeyboardTick(mc);
|
MinecraftTicker.runMouseKeyboardTick(mc);
|
||||||
}
|
}
|
||||||
if(mc.getRenderViewEntity() == mc.thePlayer || !mc.getRenderViewEntity().isEntityAlive()
|
if((mc.getRenderViewEntity() == mc.thePlayer || !mc.getRenderViewEntity().isEntityAlive())
|
||||||
&& ReplayHandler.getCameraEntity() != null) {
|
&& ReplayHandler.getCameraEntity() != null) {
|
||||||
ReplayHandler.spectateCamera();
|
ReplayHandler.spectateCamera();
|
||||||
ReplayHandler.getCameraEntity().movePath(new Position(lastX, lastY, lastZ, lastPitch, lastYaw));
|
ReplayHandler.getCameraEntity().movePath(new Position(lastX, lastY, lastZ, lastPitch, lastYaw));
|
||||||
|
|||||||
@@ -3,13 +3,12 @@ package eu.crushedpixel.replaymod.events;
|
|||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayer.EnumStatus;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
@@ -21,18 +20,17 @@ import net.minecraft.network.play.server.S0CPacketSpawnPlayer;
|
|||||||
import net.minecraft.network.play.server.S0DPacketCollectItem;
|
import net.minecraft.network.play.server.S0DPacketCollectItem;
|
||||||
import net.minecraft.network.play.server.S12PacketEntityVelocity;
|
import net.minecraft.network.play.server.S12PacketEntityVelocity;
|
||||||
import net.minecraft.network.play.server.S13PacketDestroyEntities;
|
import net.minecraft.network.play.server.S13PacketDestroyEntities;
|
||||||
import net.minecraft.network.play.server.S1BPacketEntityAttach;
|
|
||||||
import net.minecraft.network.play.server.S14PacketEntity.S17PacketEntityLookMove;
|
import net.minecraft.network.play.server.S14PacketEntity.S17PacketEntityLookMove;
|
||||||
import net.minecraft.network.play.server.S18PacketEntityTeleport;
|
import net.minecraft.network.play.server.S18PacketEntityTeleport;
|
||||||
import net.minecraft.network.play.server.S19PacketEntityHeadLook;
|
import net.minecraft.network.play.server.S19PacketEntityHeadLook;
|
||||||
import net.minecraft.network.play.server.S19PacketEntityStatus;
|
import net.minecraft.network.play.server.S19PacketEntityStatus;
|
||||||
|
import net.minecraft.network.play.server.S1BPacketEntityAttach;
|
||||||
import net.minecraft.network.play.server.S38PacketPlayerListItem;
|
import net.minecraft.network.play.server.S38PacketPlayerListItem;
|
||||||
import net.minecraft.network.play.server.S38PacketPlayerListItem.Action;
|
import net.minecraft.network.play.server.S38PacketPlayerListItem.Action;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
||||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||||
import net.minecraftforge.event.entity.minecart.MinecartEvent;
|
|
||||||
import net.minecraftforge.event.entity.minecart.MinecartInteractEvent;
|
import net.minecraftforge.event.entity.minecart.MinecartInteractEvent;
|
||||||
import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
|
import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
|
||||||
import net.minecraftforge.event.entity.player.PlayerUseItemEvent;
|
import net.minecraftforge.event.entity.player.PlayerUseItemEvent;
|
||||||
@@ -41,6 +39,7 @@ import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemPickupEvent;
|
|||||||
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent;
|
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent;
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;
|
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;
|
||||||
import eu.crushedpixel.replaymod.recording.ConnectionEventHandler;
|
import eu.crushedpixel.replaymod.recording.ConnectionEventHandler;
|
||||||
|
import eu.crushedpixel.replaymod.reflection.MCPNames;
|
||||||
|
|
||||||
public class RecordingHandler {
|
public class RecordingHandler {
|
||||||
|
|
||||||
@@ -81,6 +80,17 @@ public class RecordingHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Field dataWatcherField;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
dataWatcherField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i"));
|
||||||
|
dataWatcherField.setAccessible(true);
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private S0CPacketSpawnPlayer spawnPlayer(EntityPlayer player) {
|
private S0CPacketSpawnPlayer spawnPlayer(EntityPlayer player) {
|
||||||
try {
|
try {
|
||||||
S0CPacketSpawnPlayer packet = new S0CPacketSpawnPlayer();
|
S0CPacketSpawnPlayer packet = new S0CPacketSpawnPlayer();
|
||||||
@@ -98,11 +108,14 @@ public class RecordingHandler {
|
|||||||
pb.writeByte((byte)((int)(player.rotationPitch * 256.0F / 360.0F)));
|
pb.writeByte((byte)((int)(player.rotationPitch * 256.0F / 360.0F)));
|
||||||
|
|
||||||
ItemStack itemstack = player.inventory.getCurrentItem();
|
ItemStack itemstack = player.inventory.getCurrentItem();
|
||||||
pb.writeInt(itemstack == null ? 0 : Item.getIdFromItem(itemstack.getItem()));
|
pb.writeShort(itemstack == null ? 0 : Item.getIdFromItem(itemstack.getItem()));
|
||||||
|
|
||||||
player.getDataWatcher().writeTo(pb);
|
player.getDataWatcher().writeTo(pb);
|
||||||
|
|
||||||
packet.readPacketData(pb);
|
packet.readPacketData(pb);
|
||||||
|
|
||||||
|
dataWatcherField.set(packet, player.getDataWatcher());
|
||||||
|
|
||||||
return packet;
|
return packet;
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public class GuiConstants {
|
|||||||
public static final int UPLOAD_TAG_INPUT = 3007;
|
public static final int UPLOAD_TAG_INPUT = 3007;
|
||||||
public static final int UPLOAD_TAG_PLACEHOLDER = 3008;
|
public static final int UPLOAD_TAG_PLACEHOLDER = 3008;
|
||||||
|
|
||||||
|
public static final int EXIT_REPLAY_BUTTON = 4001;
|
||||||
|
|
||||||
public static final int REPLAY_OPTIONS_BUTTON_ID = 8000;
|
public static final int REPLAY_OPTIONS_BUTTON_ID = 8000;
|
||||||
|
|
||||||
public static final int REPLAY_MANAGER_BUTTON_ID = 9001;
|
public static final int REPLAY_MANAGER_BUTTON_ID = 9001;
|
||||||
|
|||||||
@@ -106,25 +106,6 @@ public class PacketListener extends DataListener {
|
|||||||
//Converts the packet back to a ByteBuffer for correct saving
|
//Converts the packet back to a ByteBuffer for correct saving
|
||||||
|
|
||||||
ByteBuf bb = Unpooled.buffer();
|
ByteBuf bb = Unpooled.buffer();
|
||||||
if(packet instanceof S0FPacketSpawnMob) {
|
|
||||||
Field field_149043_l = S0FPacketSpawnMob.class.getDeclaredField(MCPNames.field("field_149043_l"));
|
|
||||||
field_149043_l.setAccessible(true);
|
|
||||||
DataWatcher l = (DataWatcher)field_149043_l.get(packet);
|
|
||||||
DataWatcher dw = new DataWatcher(null);
|
|
||||||
if(l == null) {
|
|
||||||
field_149043_l.set(packet, dw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(packet instanceof S0CPacketSpawnPlayer) {
|
|
||||||
Field field_149043_l = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i"));
|
|
||||||
field_149043_l.setAccessible(true);
|
|
||||||
DataWatcher l = (DataWatcher)field_149043_l.get(packet);
|
|
||||||
DataWatcher dw = new DataWatcher(null);
|
|
||||||
if(l == null) {
|
|
||||||
field_149043_l.set(packet, dw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
packetSerializer.encode(ctx, packet, bb);
|
packetSerializer.encode(ctx, packet, bb);
|
||||||
|
|
||||||
|
|||||||
@@ -363,6 +363,8 @@ public class ReplaySender extends ChannelInboundHandlerAdapter {
|
|||||||
private static Field playerUUIDField;
|
private static Field playerUUIDField;
|
||||||
private static Field gameProfileField;
|
private static Field gameProfileField;
|
||||||
|
|
||||||
|
//private static Field dataWatcherField;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
playerUUIDField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_179820_b"));
|
playerUUIDField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_179820_b"));
|
||||||
@@ -370,6 +372,9 @@ public class ReplaySender extends ChannelInboundHandlerAdapter {
|
|||||||
|
|
||||||
gameProfileField = S38PacketPlayerListItem.AddPlayerData.class.getDeclaredField("field_179964_d");
|
gameProfileField = S38PacketPlayerListItem.AddPlayerData.class.getDeclaredField("field_179964_d");
|
||||||
gameProfileField.setAccessible(true);
|
gameProfileField.setAccessible(true);
|
||||||
|
|
||||||
|
//dataWatcherField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i"));
|
||||||
|
//dataWatcherField.setAccessible(true);
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -473,6 +478,13 @@ public class ReplaySender extends ChannelInboundHandlerAdapter {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(p instanceof S0CPacketSpawnPlayer) {
|
||||||
|
System.out.println(dataWatcherField.get(p));
|
||||||
|
System.out.println(((S0CPacketSpawnPlayer) p).func_148944_c());
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if(p instanceof S07PacketRespawn) {
|
if(p instanceof S07PacketRespawn) {
|
||||||
allowMovement = true;
|
allowMovement = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user