Start update to 1.13
This commit is contained in:
@@ -5,53 +5,54 @@ import com.replaymod.core.utils.Restrictions;
|
||||
import com.replaymod.recording.handler.ConnectionEventHandler;
|
||||
import com.replaymod.recording.handler.GuiHandler;
|
||||
import com.replaymod.recording.packet.PacketListener;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.util.AttributeKey;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
//#if MC>=11300
|
||||
import com.replaymod.core.versions.MCVer.Keyboard;
|
||||
//#else
|
||||
//$$ import org.lwjgl.input.Keyboard;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.EventBus;
|
||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.fml.network.NetworkRegistry;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||
//#endif
|
||||
//#else
|
||||
//$$ import cpw.mods.fml.common.Mod;
|
||||
//$$ import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
//$$ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
//$$ import cpw.mods.fml.common.eventhandler.EventBus;
|
||||
//$$ import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
//#endif
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
@Mod(modid = ReplayModRecording.MOD_ID,
|
||||
version = "@MOD_VERSION@",
|
||||
acceptedMinecraftVersions = "@MC_VERSION@",
|
||||
acceptableRemoteVersions = "*",
|
||||
//#if MC>=10800
|
||||
clientSideOnly = true,
|
||||
//#endif
|
||||
useMetadata = true)
|
||||
public class ReplayModRecording {
|
||||
public static final String MOD_ID = "replaymod-recording";
|
||||
public class ReplayModRecording extends ReplayMod.Module {
|
||||
|
||||
@Mod.Instance(MOD_ID)
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final AttributeKey<Void> ATTR_CHECKED = AttributeKey.newInstance("ReplayModRecording_checked");
|
||||
|
||||
{ instance = this; }
|
||||
public static ReplayModRecording instance;
|
||||
|
||||
private ReplayMod core;
|
||||
|
||||
private Logger logger;
|
||||
|
||||
private ConnectionEventHandler connectionEventHandler;
|
||||
|
||||
@Mod.EventHandler
|
||||
public void preInit(FMLPreInitializationEvent event) {
|
||||
logger = event.getModLog();
|
||||
core = ReplayMod.instance;
|
||||
public ReplayModRecording(ReplayMod mod) {
|
||||
core = mod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preInit(FMLPreInitializationEvent event) {
|
||||
core.getSettingsRegistry().register(Setting.class);
|
||||
|
||||
core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.marker", Keyboard.KEY_M, new Runnable() {
|
||||
@@ -66,20 +67,27 @@ public class ReplayModRecording {
|
||||
});
|
||||
}
|
||||
|
||||
@Mod.EventHandler
|
||||
@Override
|
||||
public void init(FMLInitializationEvent event) {
|
||||
EventBus bus = FML_BUS;
|
||||
bus.register(connectionEventHandler = new ConnectionEventHandler(logger, core));
|
||||
FML_BUS.register(connectionEventHandler = new ConnectionEventHandler(LOGGER, core));
|
||||
|
||||
new GuiHandler(core).register();
|
||||
|
||||
NetworkRegistry.INSTANCE.newChannel(Restrictions.PLUGIN_CHANNEL, new RestrictionsChannelHandler());
|
||||
//#if MC>=11300
|
||||
// FIXME
|
||||
//#else
|
||||
//$$ NetworkRegistry.INSTANCE.newChannel(Restrictions.PLUGIN_CHANNEL, new RestrictionsChannelHandler());
|
||||
//#endif
|
||||
}
|
||||
|
||||
@ChannelHandler.Sharable
|
||||
private static class RestrictionsChannelHandler extends ChannelDuplexHandler {}
|
||||
|
||||
public void initiateRecording(NetworkManager networkManager) {
|
||||
Channel channel = networkManager.channel();
|
||||
if (channel.pipeline().get("ReplayModReplay_replaySender") != null) return;
|
||||
if (channel.hasAttr(ATTR_CHECKED)) return;
|
||||
channel.attr(ATTR_CHECKED).set(null);
|
||||
connectionEventHandler.onConnectedToServerEvent(networkManager);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,12 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//#endif
|
||||
import static net.minecraft.client.renderer.GlStateManager.*;
|
||||
//#else
|
||||
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
//#endif
|
||||
@@ -50,9 +54,9 @@ public class GuiRecordingOverlay {
|
||||
if (settingsRegistry.get(Setting.INDICATOR)) {
|
||||
FontRenderer fontRenderer = getFontRenderer(mc);
|
||||
fontRenderer.drawString(I18n.format("replaymod.gui.recording").toUpperCase(), 30, 18 - (fontRenderer.FONT_HEIGHT / 2), 0xffffffff);
|
||||
mc.renderEngine.bindTexture(TEXTURE);
|
||||
GlStateManager.resetColor();
|
||||
GlStateManager.enableAlpha();
|
||||
bindTexture(TEXTURE);
|
||||
resetColor();
|
||||
enableAlpha();
|
||||
Gui.drawModalRectWithCustomSizedTexture(10, 10, 58, 20, 16, 16, TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,12 @@ import net.minecraft.network.NetworkManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientDisconnectionFromServerEvent;
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//$$ import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientDisconnectionFromServerEvent;
|
||||
//#endif
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.WorldType_DEBUG_ALL_BLOCK_STATES;
|
||||
//#else
|
||||
@@ -28,6 +32,8 @@ import java.io.File;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||
|
||||
/**
|
||||
* Handles connection events and initiates recording if enabled.
|
||||
*/
|
||||
@@ -36,7 +42,7 @@ public class ConnectionEventHandler {
|
||||
private static final String packetHandlerKey = "packet_handler";
|
||||
private static final String DATE_FORMAT = "yyyy_MM_dd_HH_mm_ss";
|
||||
private static final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
||||
private static final Minecraft mc = getMinecraft();
|
||||
|
||||
private final Logger logger;
|
||||
private final ReplayMod core;
|
||||
@@ -55,7 +61,11 @@ public class ConnectionEventHandler {
|
||||
boolean local = networkManager.isLocalChannel();
|
||||
if (local) {
|
||||
//#if MC>=10800
|
||||
if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType_DEBUG_ALL_BLOCK_STATES) {
|
||||
//#if MC>=11300
|
||||
if (mc.getIntegratedServer().getWorld(0).getWorldType() == WorldType_DEBUG_ALL_BLOCK_STATES) {
|
||||
//#else
|
||||
//$$ if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType_DEBUG_ALL_BLOCK_STATES) {
|
||||
//#endif
|
||||
logger.info("Debug World recording is not supported.");
|
||||
return;
|
||||
}
|
||||
@@ -74,10 +84,10 @@ public class ConnectionEventHandler {
|
||||
String worldName;
|
||||
if (local) {
|
||||
worldName = mc.getIntegratedServer().getWorldName();
|
||||
} else if (Minecraft.getMinecraft().getCurrentServerData() != null) {
|
||||
worldName = Minecraft.getMinecraft().getCurrentServerData().serverIP;
|
||||
} else if (mc.getCurrentServerData() != null) {
|
||||
worldName = mc.getCurrentServerData().serverIP;
|
||||
//#if MC>=11100
|
||||
} else if (Minecraft.getMinecraft().isConnectedToRealms()) {
|
||||
} else if (mc.isConnectedToRealms()) {
|
||||
// we can't access the server name without tapping too deep in the Realms Library
|
||||
worldName = "A Realms Server";
|
||||
//#endif
|
||||
@@ -97,7 +107,7 @@ public class ConnectionEventHandler {
|
||||
ReplayMetaData metaData = new ReplayMetaData();
|
||||
metaData.setSingleplayer(local);
|
||||
metaData.setServerName(worldName);
|
||||
metaData.setGenerator("ReplayMod v" + ReplayMod.getContainer().getVersion());
|
||||
metaData.setGenerator("ReplayMod v" + ReplayMod.instance.getVersion());
|
||||
metaData.setDate(System.currentTimeMillis());
|
||||
metaData.setMcVersion(ReplayMod.getMinecraftVersion());
|
||||
packetListener = new PacketListener(replayFile, metaData);
|
||||
@@ -116,6 +126,7 @@ public class ConnectionEventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME event not (yet?) in 1.13
|
||||
@SubscribeEvent
|
||||
public void onDisconnectedFromServerEvent(ClientDisconnectionFromServerEvent event) {
|
||||
if (packetListener != null) {
|
||||
@@ -126,6 +137,7 @@ public class ConnectionEventHandler {
|
||||
packetListener = null;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public PacketListener getPacketListener() {
|
||||
return packetListener;
|
||||
|
||||
@@ -1,34 +1,36 @@
|
||||
package com.replaymod.recording.handler;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
|
||||
//#if MC<11300
|
||||
//$$ package com.replaymod.recording.handler;
|
||||
//$$
|
||||
//$$ import io.netty.channel.ChannelHandlerContext;
|
||||
//$$ import io.netty.channel.SimpleChannelInboundHandler;
|
||||
//$$
|
||||
//#if MC>=10800
|
||||
import net.minecraftforge.fml.common.network.handshake.FMLHandshakeMessage;
|
||||
//$$ import net.minecraftforge.fml.common.network.handshake.FMLHandshakeMessage;
|
||||
//#else
|
||||
//$$ import cpw.mods.fml.common.network.handshake.FMLHandshakeMessage;
|
||||
//#endif
|
||||
|
||||
/**
|
||||
* Filters out all handshake packets that were sent for recording but must
|
||||
* not actually be handled.
|
||||
* This handler is only present when connected to the integrated server as
|
||||
* otherwise all packets must be handled.
|
||||
*
|
||||
* When in single player, the game state packets must never be handled
|
||||
* otherwise wired bugs related to semi-singletons can occur.
|
||||
* See https://bugs.replaymod.com/show_bug.cgi?id=44
|
||||
*/
|
||||
public class FMLHandshakeFilter extends SimpleChannelInboundHandler<FMLHandshakeMessage> {
|
||||
@Override
|
||||
protected void channelRead0(ChannelHandlerContext ctx, FMLHandshakeMessage msg) throws Exception {
|
||||
//$$
|
||||
//$$ /**
|
||||
//$$ * Filters out all handshake packets that were sent for recording but must
|
||||
//$$ * not actually be handled.
|
||||
//$$ * This handler is only present when connected to the integrated server as
|
||||
//$$ * otherwise all packets must be handled.
|
||||
//$$ *
|
||||
//$$ * When in single player, the game state packets must never be handled
|
||||
//$$ * otherwise wired bugs related to semi-singletons can occur.
|
||||
//$$ * See https://bugs.replaymod.com/show_bug.cgi?id=44
|
||||
//$$ */
|
||||
//$$ public class FMLHandshakeFilter extends SimpleChannelInboundHandler<FMLHandshakeMessage> {
|
||||
//$$ @Override
|
||||
//$$ protected void channelRead0(ChannelHandlerContext ctx, FMLHandshakeMessage msg) throws Exception {
|
||||
//#if MC>=10800
|
||||
if (!(msg instanceof FMLHandshakeMessage.RegistryData)) {
|
||||
//$$ if (!(msg instanceof FMLHandshakeMessage.RegistryData)) {
|
||||
//#else
|
||||
//$$ if (!(msg instanceof FMLHandshakeMessage.ModIdData)) {
|
||||
//#endif
|
||||
// Pass on everything but RegistryData messages
|
||||
ctx.fireChannelRead(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
//$$ // Pass on everything but RegistryData messages
|
||||
//$$ ctx.fireChannelRead(msg);
|
||||
//$$ }
|
||||
//$$ }
|
||||
//$$ }
|
||||
//#endif
|
||||
|
||||
@@ -17,7 +17,11 @@ import net.minecraftforge.client.event.GuiScreenEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//#endif
|
||||
//#else
|
||||
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
//#endif
|
||||
|
||||
@@ -7,11 +7,15 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.play.server.*;
|
||||
import net.minecraft.server.integrated.IntegratedServer;
|
||||
import net.minecraftforge.event.entity.minecart.MinecartInteractEvent;
|
||||
// FIXME not (yet?) 1.13 import net.minecraftforge.event.entity.minecart.MinecartInteractEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
|
||||
|
||||
//#if MC>=10904
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
//#if MC>=11300
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
//#else
|
||||
//$$ import net.minecraft.entity.EntityLiving;
|
||||
//#endif
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.network.datasync.EntityDataManager;
|
||||
import net.minecraft.util.EnumHand;
|
||||
@@ -25,7 +29,11 @@ import net.minecraft.util.math.BlockPos;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//#endif
|
||||
import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemPickupEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;
|
||||
@@ -42,7 +50,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
public class RecordingEventHandler {
|
||||
|
||||
private final Minecraft mc = Minecraft.getMinecraft();
|
||||
private final Minecraft mc = getMinecraft();
|
||||
private final PacketListener packetListener;
|
||||
|
||||
private Double lastX, lastY, lastZ;
|
||||
@@ -171,9 +179,15 @@ public class RecordingEventHandler {
|
||||
byte newPitch = (byte) ((int) (e.player.rotationPitch * 256.0F / 360.0F));
|
||||
|
||||
//#if MC>=10904
|
||||
packet = new SPacketEntity.S17PacketEntityLookMove(e.player.getEntityId(),
|
||||
//#if MC>=11300
|
||||
packet = new SPacketEntity.Move(
|
||||
//#else
|
||||
//$$ packet = new SPacketEntity.S17PacketEntityLookMove(
|
||||
//#endif
|
||||
e.player.getEntityId(),
|
||||
(short) Math.round(dx * 4096), (short) Math.round(dy * 4096), (short) Math.round(dz * 4096),
|
||||
newYaw, newPitch, e.player.onGround);
|
||||
newYaw, newPitch, e.player.onGround
|
||||
);
|
||||
//#else
|
||||
//$$ packet = new S14PacketEntity.S17PacketEntityLookMove(e.player.getEntityId(),
|
||||
//$$ (byte) Math.round(dx * 32), (byte) Math.round(dy * 32), (byte) Math.round(dz * 32),
|
||||
@@ -300,9 +314,15 @@ public class RecordingEventHandler {
|
||||
|
||||
//Leaving Ride
|
||||
|
||||
if((!player(mc).isRiding() && lastRiding != -1) ||
|
||||
(player(mc).isRiding() && lastRiding != getRidingEntity(player(mc)).getEntityId())) {
|
||||
if(!player(mc).isRiding()) {
|
||||
//#if MC>=11300
|
||||
if((!player(mc).isPassenger() && lastRiding != -1) ||
|
||||
(player(mc).isPassenger() && lastRiding != getRidingEntity(player(mc)).getEntityId())) {
|
||||
if(!player(mc).isPassenger()) {
|
||||
//#else
|
||||
//$$ if((!player(mc).isRiding() && lastRiding != -1) ||
|
||||
//$$ (player(mc).isRiding() && lastRiding != getRidingEntity(player(mc)).getEntityId())) {
|
||||
//$$ if(!player(mc).isRiding()) {
|
||||
//#endif
|
||||
lastRiding = -1;
|
||||
} else {
|
||||
lastRiding = getRidingEntity(player(mc)).getEntityId();
|
||||
@@ -331,7 +351,11 @@ public class RecordingEventHandler {
|
||||
lastActiveHand = player(mc).getActiveHand();
|
||||
EntityDataManager dataManager = new EntityDataManager(null);
|
||||
int state = (wasHandActive ? 1 : 0) | (lastActiveHand == EnumHand.OFF_HAND ? 2 : 0);
|
||||
dataManager.register(EntityLiving.HAND_STATES, (byte) state);
|
||||
//#if MC>=11300
|
||||
dataManager.register(EntityLivingBase.LIVING_FLAGS, (byte) state);
|
||||
//#else
|
||||
//$$ dataManager.register(EntityLiving.HAND_STATES, (byte) state);
|
||||
//#endif
|
||||
packetListener.save(new SPacketEntityMetadata(player(mc).getEntityId(), dataManager, true));
|
||||
}
|
||||
//#endif
|
||||
@@ -394,6 +418,7 @@ public class RecordingEventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME event not (yet?) on 1.13
|
||||
@SubscribeEvent
|
||||
public void enterMinecart(MinecartInteractEvent event) {
|
||||
try {
|
||||
@@ -418,6 +443,7 @@ public class RecordingEventHandler {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//#if MC>=10800
|
||||
public void onBlockBreakAnim(int breakerId, BlockPos pos, int progress) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
||||
// FIXME event not (yet?) in 1.13 import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
||||
//#else
|
||||
//$$ import cpw.mods.fml.common.network.FMLNetworkEvent;
|
||||
//#endif
|
||||
@@ -25,12 +25,16 @@ public abstract class MixinNetHandlerLoginClient {
|
||||
//$$ private NetworkManager field_147393_d;
|
||||
//#endif
|
||||
|
||||
/**
|
||||
* Starts the recording right before switching into PLAY state.
|
||||
* We cannot use the {@link FMLNetworkEvent.ClientConnectedToServerEvent}
|
||||
* as it only fires after the forge handshake.
|
||||
*/
|
||||
@Inject(method = "handleLoginSuccess", at=@At("HEAD"))
|
||||
//#if MC>=11300
|
||||
@Inject(method = "func_209521_a", at=@At("HEAD"))
|
||||
//#else
|
||||
//$$ /**
|
||||
//$$ * Starts the recording right before switching into PLAY state.
|
||||
//$$ * We cannot use the {@link FMLNetworkEvent.ClientConnectedToServerEvent}
|
||||
//$$ * as it only fires after the forge handshake.
|
||||
//$$ */
|
||||
//$$ @Inject(method = "handleLoginSuccess", at=@At("HEAD"))
|
||||
//#endif
|
||||
public void replayModRecording_initiateRecording(CallbackInfo cb) {
|
||||
//#if MC>=10800
|
||||
ReplayModRecording.instance.initiateRecording(networkManager);
|
||||
|
||||
@@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
//#if MC>=10800
|
||||
//#if MC>=10904
|
||||
import net.minecraft.network.play.server.SPacketPlayerListItem.Action;
|
||||
import net.minecraft.network.play.server.SPacketPlayerListItem.AddPlayerData;
|
||||
// FIXME requires RuntimeInvisParam workaround import net.minecraft.network.play.server.SPacketPlayerListItem.AddPlayerData;
|
||||
//#else
|
||||
//$$ import net.minecraft.network.play.server.S38PacketPlayerListItem.Action;
|
||||
//$$ import net.minecraft.network.play.server.S38PacketPlayerListItem.AddPlayerData;
|
||||
@@ -61,6 +61,7 @@ public abstract class MixinNetHandlerPlayClient {
|
||||
|
||||
RecordingEventHandler handler = getRecordingEventHandler();
|
||||
if (handler != null && packet.getAction() == Action.ADD_PLAYER) {
|
||||
/* FIXME see import
|
||||
for (AddPlayerData data : packet.getEntries()) {
|
||||
if (data.getProfile() == null || data.getProfile().getId() == null) continue;
|
||||
// Only add spawn packet for our own player and only if he isn't known yet
|
||||
@@ -69,6 +70,7 @@ public abstract class MixinNetHandlerPlayClient {
|
||||
handler.onPlayerJoin();
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
//#else
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/* FIXME
|
||||
package com.replaymod.recording.mixin;
|
||||
|
||||
import com.replaymod.recording.handler.FMLHandshakeFilter;
|
||||
@@ -42,6 +43,7 @@ public abstract class MixinNetworkDispatcher {
|
||||
* Injects a {@link FMLHandshakeFilter} on the client side to filter out
|
||||
* those extra, unexpected packets.
|
||||
*/
|
||||
/*
|
||||
@Inject(method = "insertIntoChannel", at=@At("HEAD"))
|
||||
public void replayModRecording_setupForLocalRecording(CallbackInfo cb) {
|
||||
// If we're in multiplayer, everything is fine as is
|
||||
@@ -73,3 +75,4 @@ public abstract class MixinNetworkDispatcher {
|
||||
}
|
||||
//#endif
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -23,10 +23,12 @@ public abstract class MixinPlayerControllerMP implements RecordingEventHandler.R
|
||||
// The new method will then play it and (if applicable) record it. (See MixinWorldClient)
|
||||
// This is necessary for the block break event (particles and sound) to be recorded. Otherwise it looks like the
|
||||
// event was emitted because of a packet (player will be null) and not as it actually was (by the player).
|
||||
/* FIXME test if this is still an issue (the call seems to be gone)
|
||||
@Redirect(method = "onPlayerDestroyBlock", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/World;playEvent(ILnet/minecraft/util/math/BlockPos;I)V"))
|
||||
public void replayModRecording_playEvent_fixed(World world, int type, BlockPos pos, int data) {
|
||||
world.playEvent(player(mc), type, pos, data);
|
||||
}
|
||||
*/
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -15,6 +15,7 @@ import net.minecraft.util.math.BlockPos;
|
||||
//#endif
|
||||
//#endif
|
||||
|
||||
/* FIXME runtimeinvisparameter
|
||||
@Mixin(RenderGlobal.class)
|
||||
public abstract class MixinRenderGlobal implements RecordingEventHandler.RecordingEventSender {
|
||||
|
||||
@@ -53,3 +54,4 @@ public abstract class MixinRenderGlobal implements RecordingEventHandler.Recordi
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.SoundEvent;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldProvider;
|
||||
import net.minecraft.world.storage.ISaveHandler;
|
||||
import net.minecraft.world.storage.WorldInfo;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
@@ -19,6 +18,12 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.world.dimension.Dimension;
|
||||
//#else
|
||||
//$$ import net.minecraft.world.WorldProvider;
|
||||
//#endif
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
@Mixin(WorldClient.class)
|
||||
@@ -26,7 +31,13 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa
|
||||
@Shadow
|
||||
private Minecraft mc;
|
||||
|
||||
protected MixinWorldClient(ISaveHandler saveHandlerIn, WorldInfo info, WorldProvider providerIn, Profiler profilerIn, boolean client) {
|
||||
protected MixinWorldClient(ISaveHandler saveHandlerIn, WorldInfo info,
|
||||
//#if MC>=11300
|
||||
Dimension providerIn,
|
||||
//#else
|
||||
//$$ WorldProvider providerIn,
|
||||
//#endif
|
||||
Profiler profilerIn, boolean client) {
|
||||
super(saveHandlerIn, info, providerIn, profilerIn, client);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ import net.minecraft.util.text.TextComponentString;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraft.network.EnumPacketDirection;
|
||||
import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
|
||||
// FIXME import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
|
||||
//#else
|
||||
//$$ import cpw.mods.fml.common.network.internal.FMLProxyPacket;
|
||||
//#endif
|
||||
@@ -49,7 +49,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
|
||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
||||
private static final Minecraft mc = getMinecraft();
|
||||
private static final Logger logger = LogManager.getLogger();
|
||||
|
||||
private final ReplayFile replayFile;
|
||||
@@ -229,6 +229,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
//#endif
|
||||
//#endif
|
||||
|
||||
/* FIXME
|
||||
if (packet instanceof FMLProxyPacket) {
|
||||
// This packet requires special handling
|
||||
//#if MC>=10800
|
||||
@@ -239,6 +240,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
super.channelRead(ctx, msg);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
save(packet);
|
||||
|
||||
@@ -358,7 +360,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
}
|
||||
|
||||
public void addMarker() {
|
||||
Entity view = getRenderViewEntity(Minecraft.getMinecraft());
|
||||
Entity view = getRenderViewEntity(mc);
|
||||
int timestamp = (int) (System.currentTimeMillis() - startTime);
|
||||
|
||||
Marker marker = new Marker();
|
||||
|
||||
@@ -9,7 +9,7 @@ import net.minecraft.client.gui.GuiYesNo;
|
||||
import net.minecraft.client.gui.GuiYesNoCallback;
|
||||
import net.minecraft.client.multiplayer.ServerData;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.client.resources.ResourcePackRepository;
|
||||
// FIXME import net.minecraft.client.resources.ResourcePackRepository;
|
||||
import net.minecraft.util.HttpUtil;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -36,8 +36,6 @@ import net.minecraft.network.NetworkManager;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.multiplayer.ServerData.ServerResourceMode;
|
||||
//$$ import net.minecraft.client.multiplayer.ServerList;
|
||||
@@ -52,12 +50,14 @@ import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
/**
|
||||
* Records resource packs and handles incoming resource pack packets during recording.
|
||||
*/
|
||||
public class ResourcePackRecorder {
|
||||
private static final Logger logger = LogManager.getLogger();
|
||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
||||
private static final Minecraft mc = getMinecraft();
|
||||
|
||||
private final ReplayFile replayFile;
|
||||
|
||||
@@ -131,11 +131,12 @@ public class ResourcePackRecorder {
|
||||
|
||||
if (url.startsWith("level://")) {
|
||||
String levelName = url.substring("level://".length());
|
||||
File savesDir = new File(mc.mcDataDir, "saves");
|
||||
File savesDir = new File(mcDataDir(mc), "saves");
|
||||
final File levelDir = new File(savesDir, levelName);
|
||||
|
||||
if (levelDir.isFile()) {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.ACCEPTED));
|
||||
/* FIXME
|
||||
Futures.addCallback(setServerResourcePack(mc.getResourcePackRepository(), levelDir), new FutureCallback<Object>() {
|
||||
@Override
|
||||
public void onSuccess(Object result) {
|
||||
@@ -148,6 +149,7 @@ public class ResourcePackRecorder {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.FAILED_DOWNLOAD));
|
||||
}
|
||||
});
|
||||
*/
|
||||
} else {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.FAILED_DOWNLOAD));
|
||||
}
|
||||
@@ -155,7 +157,7 @@ public class ResourcePackRecorder {
|
||||
final ServerData serverData = mc.getCurrentServerData();
|
||||
if (serverData != null && serverData.getResourceMode() == ServerData.ServerResourceMode.ENABLED) {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.ACCEPTED));
|
||||
downloadResourcePackFuture(requestId, url, hash);
|
||||
// FIXME downloadResourcePackFuture(requestId, url, hash);
|
||||
} else if (serverData != null && serverData.getResourceMode() != ServerData.ServerResourceMode.PROMPT) {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.DECLINED));
|
||||
} else {
|
||||
@@ -163,13 +165,17 @@ public class ResourcePackRecorder {
|
||||
//noinspection Convert2Lambda
|
||||
mc.addScheduledTask(() -> mc.displayGuiScreen(new GuiYesNo(new GuiYesNoCallback() {
|
||||
@Override
|
||||
public void confirmClicked(boolean result, int id) {
|
||||
//#if MC>=11300
|
||||
public void confirmResult(boolean result, int id) {
|
||||
//#else
|
||||
//$$ public void confirmClicked(boolean result, int id) {
|
||||
//#endif
|
||||
if (serverData != null) {
|
||||
serverData.setResourceMode(result ? ServerData.ServerResourceMode.ENABLED : ServerData.ServerResourceMode.DISABLED);
|
||||
}
|
||||
if (result) {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.ACCEPTED));
|
||||
downloadResourcePackFuture(requestId, url, hash);
|
||||
// FIXME downloadResourcePackFuture(requestId, url, hash);
|
||||
} else {
|
||||
netManager.sendPacket(makeStatusPacket(hash, Action.DECLINED));
|
||||
}
|
||||
@@ -188,6 +194,7 @@ public class ResourcePackRecorder {
|
||||
//#endif
|
||||
}
|
||||
|
||||
/* FIXME
|
||||
private void downloadResourcePackFuture(int requestId, String url, final String hash) {
|
||||
Futures.addCallback(downloadResourcePack(requestId, url, hash), new FutureCallback() {
|
||||
@Override
|
||||
@@ -370,4 +377,5 @@ public class ResourcePackRecorder {
|
||||
//$$ }
|
||||
//#endif
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user