Get replay module compiling on 1.13
This commit is contained in:
@@ -8,6 +8,7 @@ import com.replaymod.core.handler.MainMenuHandler;
|
|||||||
import com.replaymod.core.utils.OpenGLUtils;
|
import com.replaymod.core.utils.OpenGLUtils;
|
||||||
import com.replaymod.core.versions.MCVer;
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.recording.ReplayModRecording;
|
import com.replaymod.recording.ReplayModRecording;
|
||||||
|
import com.replaymod.replay.ReplayModReplay;
|
||||||
import com.replaymod.replaystudio.util.I18n;
|
import com.replaymod.replaystudio.util.I18n;
|
||||||
import de.johni0702.minecraft.gui.container.GuiScreen;
|
import de.johni0702.minecraft.gui.container.GuiScreen;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -138,6 +139,7 @@ public class ReplayMod {
|
|||||||
private final List<Module> modules = new ArrayList<>();
|
private final List<Module> modules = new ArrayList<>();
|
||||||
{
|
{
|
||||||
modules.add(new ReplayModRecording(this));
|
modules.add(new ReplayModRecording(this));
|
||||||
|
modules.add(new ReplayModReplay(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyBindingRegistry getKeyBindingRegistry() {
|
public KeyBindingRegistry getKeyBindingRegistry() {
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ import net.minecraftforge.common.MinecraftForge;
|
|||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
import com.replaymod.core.utils.WrappedTimer;
|
import com.replaymod.core.utils.WrappedTimer;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -49,7 +53,11 @@ import net.minecraft.util.text.ITextComponent;
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#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.TickEvent;
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
@@ -185,7 +193,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
/**
|
/**
|
||||||
* The minecraft instance.
|
* The minecraft instance.
|
||||||
*/
|
*/
|
||||||
protected Minecraft mc = Minecraft.getMinecraft();
|
protected Minecraft mc = getMinecraft();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The total length of this replay in milliseconds.
|
* The total length of this replay in milliseconds.
|
||||||
@@ -265,7 +273,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a fake {@link Minecraft#getSystemTime()} value that respects slowdown/speedup/pause and works in both,
|
* Return a fake system tile in milliseconds value that respects slowdown/speedup/pause and works in both,
|
||||||
* sync and async mode.
|
* sync and async mode.
|
||||||
* Note: For sync mode this returns the last value passed to {@link #sendPacketsTill(int)}.
|
* Note: For sync mode this returns the last value passed to {@link #sendPacketsTill(int)}.
|
||||||
* @return The timestamp in milliseconds since the start of the replay
|
* @return The timestamp in milliseconds since the start of the replay
|
||||||
@@ -308,7 +316,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
if (world(mc) != null) {
|
if (world(mc) != null) {
|
||||||
for (EntityPlayer playerEntity : playerEntities(world(mc))) {
|
for (EntityPlayer playerEntity : playerEntities(world(mc))) {
|
||||||
if (!playerEntity.addedToChunk && playerEntity instanceof EntityOtherPlayerMP) {
|
if (!playerEntity.addedToChunk && playerEntity instanceof EntityOtherPlayerMP) {
|
||||||
playerEntity.onLivingUpdate();
|
// FIXME playerEntity.onLivingUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -361,7 +369,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
World world = world(mc);
|
World world = world(mc);
|
||||||
for (int i = 0; i < world.loadedEntityList.size(); ++i) {
|
for (int i = 0; i < world.loadedEntityList.size(); ++i) {
|
||||||
Entity entity = loadedEntityList(world).get(i);
|
Entity entity = loadedEntityList(world).get(i);
|
||||||
if (entity.isDead) {
|
//#if MC>=11300
|
||||||
|
if (entity.removed) {
|
||||||
|
//#else
|
||||||
|
//$$ if (entity.isDead) {
|
||||||
|
//#endif
|
||||||
int chunkX = entity.chunkCoordX;
|
int chunkX = entity.chunkCoordX;
|
||||||
int chunkY = entity.chunkCoordZ;
|
int chunkY = entity.chunkCoordZ;
|
||||||
|
|
||||||
@@ -370,7 +382,12 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
//#else
|
//#else
|
||||||
//$$ if (entity.addedToChunk && world.getChunkProvider().chunkExists(chunkX, chunkY)) {
|
//$$ if (entity.addedToChunk && world.getChunkProvider().chunkExists(chunkX, chunkY)) {
|
||||||
//#endif
|
//#endif
|
||||||
world.getChunkFromChunkCoords(chunkX, chunkY).removeEntity(entity);
|
//#if MC>=11300
|
||||||
|
//#else
|
||||||
|
world.getChunk(chunkX, chunkY).removeEntity(entity);
|
||||||
|
//#else
|
||||||
|
//$$ world.getChunkFromChunkCoords(chunkX, chunkY).removeEntity(entity);
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
world.loadedEntityList.remove(i--);
|
world.loadedEntityList.remove(i--);
|
||||||
@@ -418,11 +435,15 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
//$$ if (p instanceof S3FPacketCustomPayload) {
|
//$$ if (p instanceof S3FPacketCustomPayload) {
|
||||||
//$$ S3FPacketCustomPayload packet = (S3FPacketCustomPayload) p;
|
//$$ S3FPacketCustomPayload packet = (S3FPacketCustomPayload) p;
|
||||||
//#endif
|
//#endif
|
||||||
|
//#if MC>=11300
|
||||||
|
ResourceLocation channelName = packet.getChannelName();
|
||||||
|
//#else
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
String channelName = packet.getChannelName();
|
//$$ String channelName = packet.getChannelName();
|
||||||
//#else
|
//#else
|
||||||
//$$ String channelName = packet.func_149169_c();
|
//$$ String channelName = packet.func_149169_c();
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
if (Restrictions.PLUGIN_CHANNEL.equals(channelName)) {
|
if (Restrictions.PLUGIN_CHANNEL.equals(channelName)) {
|
||||||
final String unknown = replayHandler.getRestrictions().handle(packet);
|
final String unknown = replayHandler.getRestrictions().handle(packet);
|
||||||
if (unknown == null) {
|
if (unknown == null) {
|
||||||
@@ -459,7 +480,13 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
//$$ IChatComponent reason = ((S40PacketDisconnect) p).func_149165_c();
|
//$$ IChatComponent reason = ((S40PacketDisconnect) p).func_149165_c();
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
if ("Please update to view this replay.".equals(reason.getUnformattedText())) {
|
//#if MC>=11300
|
||||||
|
// FIXME or is it getString?
|
||||||
|
String message = reason.getUnformattedComponentText();
|
||||||
|
//#else
|
||||||
|
//$$ String message = reason.getUnformattedText();
|
||||||
|
//#endif
|
||||||
|
if ("Please update to view this replay.".equals(message)) {
|
||||||
// This version of the mod supports replay restrictions so we are allowed
|
// This version of the mod supports replay restrictions so we are allowed
|
||||||
// to remove this packet.
|
// to remove this packet.
|
||||||
return null;
|
return null;
|
||||||
@@ -475,6 +502,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
//$$ if (p instanceof S3FPacketCustomPayload) {
|
//$$ if (p instanceof S3FPacketCustomPayload) {
|
||||||
//$$ S3FPacketCustomPayload packet = (S3FPacketCustomPayload) p;
|
//$$ S3FPacketCustomPayload packet = (S3FPacketCustomPayload) p;
|
||||||
//#endif
|
//#endif
|
||||||
|
/* FIXME
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
String channelName = packet.getChannelName();
|
String channelName = packet.getChannelName();
|
||||||
//#else
|
//#else
|
||||||
@@ -483,6 +511,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
if ("MC|BOpen".equals(channelName)) {
|
if ("MC|BOpen".equals(channelName)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,7 +543,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
IOUtils.copy(replayFile.getResourcePack(hash).get(), new FileOutputStream(file));
|
IOUtils.copy(replayFile.getResourcePack(hash).get(), new FileOutputStream(file));
|
||||||
}
|
}
|
||||||
setServerResourcePack(mc.getResourcePackRepository(), file);
|
// FIXME setServerResourcePack(mc.getResourcePackRepository(), file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -540,7 +569,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
int dimension = packet.getDimension();
|
int dimension = packet.getDimension();
|
||||||
EnumDifficulty difficulty = packet.getDifficulty();
|
EnumDifficulty difficulty = packet.getDifficulty();
|
||||||
int maxPlayers = packet.getMaxPlayers();
|
//#if MC>=11300
|
||||||
|
int maxPlayers = 0;// FIXME needs AT packet.maxPlayers;
|
||||||
|
//#else
|
||||||
|
//$$ int maxPlayers = packet.getMaxPlayers();
|
||||||
|
//#endif
|
||||||
WorldType worldType = packet.getWorldType();
|
WorldType worldType = packet.getWorldType();
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
@@ -1064,7 +1097,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
// Needs to be called at least 4 times thanks to
|
// Needs to be called at least 4 times thanks to
|
||||||
// EntityOtherPlayerMP#otherPlayerMPPosRotationIncrements (max vanilla value is 3)
|
// EntityOtherPlayerMP#otherPlayerMPPosRotationIncrements (max vanilla value is 3)
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
entity.onUpdate();
|
//#if MC>=11300
|
||||||
|
entity.tick();
|
||||||
|
//#else
|
||||||
|
//$$ entity.onUpdate();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether the entity has left the chunk
|
// Check whether the entity has left the chunk
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* FIXME
|
||||||
package com.replaymod.replay;
|
package com.replaymod.replay;
|
||||||
|
|
||||||
import com.replaymod.core.utils.WrappedTimer;
|
import com.replaymod.core.utils.WrappedTimer;
|
||||||
@@ -264,3 +265,4 @@ public class InputReplayTimer extends WrappedTimer {
|
|||||||
//$$ public static class RunScheduledTasks extends Event {}
|
//$$ public static class RunScheduledTasks extends Event {}
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|||||||
@@ -38,6 +38,12 @@ public class NoGuiScreenshot {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
int frameWidth = mc.mainWindow.getFramebufferWidth(), frameHeight = mc.mainWindow.getFramebufferHeight();
|
||||||
|
//#else
|
||||||
|
//$$ int frameWidth = mc.displayWidth, frameHeight = mc.displayHeight;
|
||||||
|
//#endif
|
||||||
|
|
||||||
final boolean guiHidden = mc.gameSettings.hideGUI;
|
final boolean guiHidden = mc.gameSettings.hideGUI;
|
||||||
try {
|
try {
|
||||||
mc.gameSettings.hideGUI = true;
|
mc.gameSettings.hideGUI = true;
|
||||||
@@ -57,7 +63,7 @@ public class NoGuiScreenshot {
|
|||||||
mc.getFramebuffer().unbindFramebuffer();
|
mc.getFramebuffer().unbindFramebuffer();
|
||||||
GlStateManager.popMatrix();
|
GlStateManager.popMatrix();
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight);
|
mc.getFramebuffer().framebufferRender(frameWidth, frameHeight);
|
||||||
GlStateManager.popMatrix();
|
GlStateManager.popMatrix();
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
future.setException(t);
|
future.setException(t);
|
||||||
@@ -73,7 +79,7 @@ public class NoGuiScreenshot {
|
|||||||
// disk for better maintainability
|
// disk for better maintainability
|
||||||
File tmpFolder = Files.createTempDir();
|
File tmpFolder = Files.createTempDir();
|
||||||
try {
|
try {
|
||||||
ScreenShotHelper.saveScreenshot(tmpFolder, "tmp", mc.displayWidth, mc.displayHeight, mc.getFramebuffer());
|
ScreenShotHelper.saveScreenshot(tmpFolder, "tmp", frameWidth, frameHeight, mc.getFramebuffer());
|
||||||
File screenshotFile = new File(tmpFolder, "screenshots/tmp");
|
File screenshotFile = new File(tmpFolder, "screenshots/tmp");
|
||||||
BufferedImage image = ImageIO.read(screenshotFile);
|
BufferedImage image = ImageIO.read(screenshotFile);
|
||||||
int imageWidth = image.getWidth();
|
int imageWidth = image.getWidth();
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ import net.minecraft.network.EnumConnectionState;
|
|||||||
import net.minecraft.network.EnumPacketDirection;
|
import net.minecraft.network.EnumPacketDirection;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.network.PacketBuffer;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@@ -85,11 +84,18 @@ import java.util.function.Consumer;
|
|||||||
import java.util.zip.Deflater;
|
import java.util.zip.Deflater;
|
||||||
import java.util.zip.Inflater;
|
import java.util.zip.Inflater;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
import com.replaymod.core.utils.WrappedTimer;
|
import com.replaymod.core.utils.WrappedTimer;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
import static com.replaymod.core.versions.MCVer.FML_BUS;
|
import static com.replaymod.core.versions.MCVer.FML_BUS;
|
||||||
|
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||||
import static com.replaymod.replay.ReplayModReplay.LOGGER;
|
import static com.replaymod.replay.ReplayModReplay.LOGGER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -104,7 +110,7 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
|
|||||||
private static final String CACHE_INDEX_ENTRY = "quickModeCacheIndex.bin";
|
private static final String CACHE_INDEX_ENTRY = "quickModeCacheIndex.bin";
|
||||||
private static final int CACHE_VERSION = 0;
|
private static final int CACHE_VERSION = 0;
|
||||||
|
|
||||||
private final Minecraft mc = Minecraft.getMinecraft();
|
private final Minecraft mc = getMinecraft();
|
||||||
|
|
||||||
private final ReplayModReplay mod;
|
private final ReplayModReplay mod;
|
||||||
private final ReplayFile replayFile;
|
private final ReplayFile replayFile;
|
||||||
@@ -980,8 +986,13 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
|
|||||||
for (BlockChange blockChange : blockChanges) {
|
for (BlockChange blockChange : blockChanges) {
|
||||||
NetUtil.writePosition(cacheOut, blockChange.pos);
|
NetUtil.writePosition(cacheOut, blockChange.pos);
|
||||||
index += 8;
|
index += 8;
|
||||||
index += writeVarInt(cacheOut, blockChange.from.getId() << 4 | blockChange.from.getData() & 15);
|
//#if MC>=11300
|
||||||
index += writeVarInt(cacheOut, blockChange.to.getId() << 4 | blockChange.to.getData() & 15);
|
index += writeVarInt(cacheOut, blockChange.from.getId());
|
||||||
|
index += writeVarInt(cacheOut, blockChange.to.getId());
|
||||||
|
//#else
|
||||||
|
//$$ index += writeVarInt(cacheOut, blockChange.from.getId() << 4 | blockChange.from.getData() & 15);
|
||||||
|
//$$ index += writeVarInt(cacheOut, blockChange.to.getId() << 4 | blockChange.to.getData() & 15);
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,19 +21,25 @@ import de.johni0702.minecraft.gui.popup.AbstractGuiPopup;
|
|||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.embedded.EmbeddedChannel;
|
import io.netty.channel.embedded.EmbeddedChannel;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.EntityOtherPlayerMP;
|
|
||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.client.gui.ScaledResolution;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.crash.CrashReport;
|
import net.minecraft.crash.CrashReport;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.network.NetworkManager;
|
import net.minecraft.network.NetworkManager;
|
||||||
import org.lwjgl.opengl.Display;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.client.MainWindow;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.client.entity.EntityOtherPlayerMP;
|
||||||
|
//$$ import net.minecraft.client.gui.ScaledResolution;
|
||||||
|
//$$ import org.lwjgl.opengl.Display;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC<10904
|
//#if MC<10904
|
||||||
//$$ import de.johni0702.minecraft.gui.element.GuiLabel;
|
//$$ import de.johni0702.minecraft.gui.element.GuiLabel;
|
||||||
//$$ import de.johni0702.minecraft.gui.popup.GuiInfoPopup;
|
//$$ import de.johni0702.minecraft.gui.popup.GuiInfoPopup;
|
||||||
@@ -41,11 +47,16 @@ import java.util.*;
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import net.minecraft.client.network.NetHandlerPlayClient;
|
|
||||||
import net.minecraft.network.EnumPacketDirection;
|
import net.minecraft.network.EnumPacketDirection;
|
||||||
import net.minecraftforge.fml.client.FMLClientHandler;
|
//#if MC>=11300
|
||||||
import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher;
|
import net.minecraft.client.network.NetHandlerLoginClient;
|
||||||
|
import net.minecraftforge.fml.network.NetworkHooks;
|
||||||
|
//#else
|
||||||
|
//$$ import com.mojang.authlib.GameProfile;
|
||||||
|
//$$ import net.minecraft.client.network.NetHandlerPlayClient;
|
||||||
|
//$$ import net.minecraftforge.fml.client.FMLClientHandler;
|
||||||
|
//$$ import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher;
|
||||||
|
//#endif
|
||||||
|
|
||||||
import static net.minecraft.client.renderer.GlStateManager.*;
|
import static net.minecraft.client.renderer.GlStateManager.*;
|
||||||
//#else
|
//#else
|
||||||
@@ -73,7 +84,7 @@ import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
|||||||
|
|
||||||
public class ReplayHandler {
|
public class ReplayHandler {
|
||||||
|
|
||||||
private static Minecraft mc = Minecraft.getMinecraft();
|
private static Minecraft mc = getMinecraft();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The file currently being played.
|
* The file currently being played.
|
||||||
@@ -146,7 +157,11 @@ public class ReplayHandler {
|
|||||||
|
|
||||||
// Force re-creation of camera entity by unloading the previous world
|
// Force re-creation of camera entity by unloading the previous world
|
||||||
mc.addScheduledTask(() -> {
|
mc.addScheduledTask(() -> {
|
||||||
mc.setIngameNotInFocus();
|
//#if MC>=11300
|
||||||
|
mc.mouseHelper.ungrabMouse();
|
||||||
|
//#else
|
||||||
|
//$$ mc.setIngameNotInFocus();
|
||||||
|
//#endif
|
||||||
mc.loadWorld(null);
|
mc.loadWorld(null);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -171,7 +186,11 @@ public class ReplayHandler {
|
|||||||
channel.close().awaitUninterruptibly();
|
channel.close().awaitUninterruptibly();
|
||||||
|
|
||||||
if (player(mc) instanceof CameraEntity) {
|
if (player(mc) instanceof CameraEntity) {
|
||||||
player(mc).setDead();
|
//#if MC>=11300
|
||||||
|
player(mc).remove();
|
||||||
|
//#else
|
||||||
|
//$$ player(mc).setDead();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (world(mc) != null) {
|
if (world(mc) != null) {
|
||||||
@@ -207,21 +226,32 @@ public class ReplayHandler {
|
|||||||
t.printStackTrace();
|
t.printStackTrace();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
NetHandlerPlayClient netHandlerPlayClient =
|
//#if MC>=11300
|
||||||
new NetHandlerPlayClient(mc, null, networkManager, new GameProfile(UUID.randomUUID(), "Player"));
|
|
||||||
networkManager.setNetHandler(netHandlerPlayClient);
|
|
||||||
FMLClientHandler.instance().setPlayClient(netHandlerPlayClient);
|
|
||||||
|
|
||||||
//#if MC>=11200
|
|
||||||
channel = new EmbeddedChannel();
|
channel = new EmbeddedChannel();
|
||||||
NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager);
|
|
||||||
channel.attr(NetworkDispatcher.FML_DISPATCHER).set(networkDispatcher);
|
|
||||||
|
|
||||||
channel.pipeline().addFirst("ReplayModReplay_replaySender", fullReplaySender);
|
channel.pipeline().addFirst("ReplayModReplay_replaySender", fullReplaySender);
|
||||||
channel.pipeline().addFirst("ReplayModReplay_quickReplaySender", quickReplaySender);
|
channel.pipeline().addFirst("ReplayModReplay_quickReplaySender", quickReplaySender);
|
||||||
channel.pipeline().addLast("packet_handler", networkManager);
|
channel.pipeline().addLast("packet_handler", networkManager);
|
||||||
channel.pipeline().fireChannelActive();
|
channel.pipeline().fireChannelActive();
|
||||||
networkDispatcher.clientToServerHandshake();
|
|
||||||
|
networkManager.setNetHandler(new NetHandlerLoginClient(networkManager, mc, null, it -> {}));
|
||||||
|
NetworkHooks.registerClientLoginChannel(networkManager);
|
||||||
|
//#else
|
||||||
|
//$$ NetHandlerPlayClient netHandlerPlayClient =
|
||||||
|
//$$ new NetHandlerPlayClient(mc, null, networkManager, new GameProfile(UUID.randomUUID(), "Player"));
|
||||||
|
//$$ networkManager.setNetHandler(netHandlerPlayClient);
|
||||||
|
//$$ FMLClientHandler.instance().setPlayClient(netHandlerPlayClient);
|
||||||
|
//$$
|
||||||
|
//#if MC>=11200
|
||||||
|
//$$ channel = new EmbeddedChannel();
|
||||||
|
//$$ NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager);
|
||||||
|
//$$ channel.attr(NetworkDispatcher.FML_DISPATCHER).set(networkDispatcher);
|
||||||
|
//$$
|
||||||
|
//$$ channel.pipeline().addFirst("ReplayModReplay_replaySender", fullReplaySender);
|
||||||
|
//$$ channel.pipeline().addFirst("ReplayModReplay_quickReplaySender", quickReplaySender);
|
||||||
|
//$$ channel.pipeline().addLast("packet_handler", networkManager);
|
||||||
|
//$$ channel.pipeline().fireChannelActive();
|
||||||
|
//$$ networkDispatcher.clientToServerHandshake();
|
||||||
//#else
|
//#else
|
||||||
//$$ channel = new EmbeddedChannel(networkManager);
|
//$$ channel = new EmbeddedChannel(networkManager);
|
||||||
//$$ NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager);
|
//$$ NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager);
|
||||||
@@ -234,6 +264,7 @@ public class ReplayHandler {
|
|||||||
//$$ channel.pipeline().addAfter("ReplayModReplay_replaySender", "fml:packet_handler", networkDispatcher);
|
//$$ channel.pipeline().addAfter("ReplayModReplay_replaySender", "fml:packet_handler", networkDispatcher);
|
||||||
//$$ channel.pipeline().fireChannelActive();
|
//$$ channel.pipeline().fireChannelActive();
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ NetworkManager networkManager = new NetworkManager(true) {
|
//$$ NetworkManager networkManager = new NetworkManager(true) {
|
||||||
//$$ @Override
|
//$$ @Override
|
||||||
@@ -520,12 +551,7 @@ public class ReplayHandler {
|
|||||||
|
|
||||||
// Update all entity positions (especially prev/lastTick values)
|
// Update all entity positions (especially prev/lastTick values)
|
||||||
for (Entity entity : loadedEntityList(world(mc))) {
|
for (Entity entity : loadedEntityList(world(mc))) {
|
||||||
if (entity instanceof EntityOtherPlayerMP) {
|
skipTeleportInterpolation(entity);
|
||||||
EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity;
|
|
||||||
e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ);
|
|
||||||
e.rotationYaw = (float) e.otherPlayerMPYaw;
|
|
||||||
e.rotationPitch = (float) e.otherPlayerMPPitch;
|
|
||||||
}
|
|
||||||
entity.lastTickPosX = entity.prevPosX = entity.posX;
|
entity.lastTickPosX = entity.prevPosX = entity.posX;
|
||||||
entity.lastTickPosY = entity.prevPosY = entity.posY;
|
entity.lastTickPosY = entity.prevPosY = entity.posY;
|
||||||
entity.lastTickPosZ = entity.prevPosZ = entity.posZ;
|
entity.lastTickPosZ = entity.prevPosZ = entity.posZ;
|
||||||
@@ -534,23 +560,22 @@ public class ReplayHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run previous tick
|
// Run previous tick
|
||||||
try {
|
//#if MC>=11300
|
||||||
mc.runTick();
|
mc.runTick();
|
||||||
} catch (IOException e) {
|
//#else
|
||||||
throw new RuntimeException(e);
|
//$$ try {
|
||||||
}
|
//$$ mc.runTick();
|
||||||
|
//$$ } catch (IOException e) {
|
||||||
|
//$$ throw new RuntimeException(e);
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
|
|
||||||
// Jump to target tick
|
// Jump to target tick
|
||||||
quickReplaySender.sendPacketsTill(targetTime);
|
quickReplaySender.sendPacketsTill(targetTime);
|
||||||
|
|
||||||
// Immediately apply player teleport interpolation
|
// Immediately apply player teleport interpolation
|
||||||
for (Entity entity : loadedEntityList(world(mc))) {
|
for (Entity entity : loadedEntityList(world(mc))) {
|
||||||
if (entity instanceof EntityOtherPlayerMP) {
|
skipTeleportInterpolation(entity);
|
||||||
EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity;
|
|
||||||
e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ);
|
|
||||||
e.rotationYaw = (float) e.otherPlayerMPYaw;
|
|
||||||
e.rotationPitch = (float) e.otherPlayerMPPitch;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -583,7 +608,11 @@ public class ReplayHandler {
|
|||||||
// Render our please-wait-screen
|
// Render our please-wait-screen
|
||||||
GuiScreen guiScreen = new GuiScreen() {
|
GuiScreen guiScreen = new GuiScreen() {
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
//#if MC>=11300
|
||||||
|
public void render(int mouseX, int mouseY, float partialTicks) {
|
||||||
|
//#else
|
||||||
|
//$$ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||||
|
//#endif
|
||||||
drawBackground(0);
|
drawBackground(0);
|
||||||
drawCenteredString(getFontRenderer(mc), I18n.format("replaymod.gui.pleasewait"),
|
drawCenteredString(getFontRenderer(mc), I18n.format("replaymod.gui.pleasewait"),
|
||||||
width / 2, height / 2, 0xffffffff);
|
width / 2, height / 2, 0xffffffff);
|
||||||
@@ -598,47 +627,68 @@ public class ReplayHandler {
|
|||||||
clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
enableTexture2D();
|
enableTexture2D();
|
||||||
mc.getFramebuffer().bindFramebuffer(true);
|
mc.getFramebuffer().bindFramebuffer(true);
|
||||||
mc.entityRenderer.setupOverlayRendering();
|
//#if MC>=11300
|
||||||
|
mc.mainWindow.setupOverlayRendering();
|
||||||
|
//#else
|
||||||
|
//$$ mc.entityRenderer.setupOverlayRendering();
|
||||||
|
//#endif
|
||||||
|
|
||||||
ScaledResolution resolution = newScaledResolution(mc);
|
//#if MC>=11300
|
||||||
|
MainWindow
|
||||||
|
//#else
|
||||||
|
//$$ ScaledResolution
|
||||||
|
//#endif
|
||||||
|
resolution = newScaledResolution(mc);
|
||||||
guiScreen.setWorldAndResolution(mc, resolution.getScaledWidth(), resolution.getScaledHeight());
|
guiScreen.setWorldAndResolution(mc, resolution.getScaledWidth(), resolution.getScaledHeight());
|
||||||
guiScreen.drawScreen(0, 0, 0);
|
//#if MC>=11300
|
||||||
|
guiScreen.render(0, 0, 0);
|
||||||
|
//#else
|
||||||
|
//$$ guiScreen.drawScreen(0, 0, 0);
|
||||||
|
//#endif
|
||||||
|
|
||||||
mc.getFramebuffer().unbindFramebuffer();
|
mc.getFramebuffer().unbindFramebuffer();
|
||||||
popMatrix();
|
popMatrix();
|
||||||
pushMatrix();
|
pushMatrix();
|
||||||
mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight);
|
//#if MC>=11300
|
||||||
|
mc.getFramebuffer().framebufferRender(mc.mainWindow.getFramebufferWidth(), mc.mainWindow.getFramebufferHeight());
|
||||||
|
//#else
|
||||||
|
//$$ mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight);
|
||||||
|
//#endif
|
||||||
popMatrix();
|
popMatrix();
|
||||||
|
|
||||||
Display.update();
|
//#if MC>=11300
|
||||||
|
mc.mainWindow.update(true);
|
||||||
|
//#else
|
||||||
|
//$$ Display.update();
|
||||||
|
//#endif
|
||||||
|
|
||||||
// Send the packets
|
// Send the packets
|
||||||
replaySender.sendPacketsTill(targetTime);
|
replaySender.sendPacketsTill(targetTime);
|
||||||
replaySender.setAsyncMode(true);
|
replaySender.setAsyncMode(true);
|
||||||
replaySender.setReplaySpeed(0);
|
replaySender.setReplaySpeed(0);
|
||||||
|
|
||||||
getConnection(mc).getNetworkManager().processReceivedPackets();
|
getConnection(mc).getNetworkManager()
|
||||||
|
//#if MC>=11300
|
||||||
|
.tick();
|
||||||
|
//#else
|
||||||
|
//$$ .processReceivedPackets();
|
||||||
|
//#endif
|
||||||
for (Entity entity : loadedEntityList(world(mc))) {
|
for (Entity entity : loadedEntityList(world(mc))) {
|
||||||
if (entity instanceof EntityOtherPlayerMP) {
|
skipTeleportInterpolation(entity);
|
||||||
EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity;
|
|
||||||
e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ);
|
|
||||||
e.rotationYaw = (float) e.otherPlayerMPYaw;
|
|
||||||
e.rotationPitch = (float) e.otherPlayerMPPitch;
|
|
||||||
}
|
|
||||||
entity.lastTickPosX = entity.prevPosX = entity.posX;
|
entity.lastTickPosX = entity.prevPosX = entity.posX;
|
||||||
entity.lastTickPosY = entity.prevPosY = entity.posY;
|
entity.lastTickPosY = entity.prevPosY = entity.posY;
|
||||||
entity.lastTickPosZ = entity.prevPosZ = entity.posZ;
|
entity.lastTickPosZ = entity.prevPosZ = entity.posZ;
|
||||||
entity.prevRotationYaw = entity.rotationYaw;
|
entity.prevRotationYaw = entity.rotationYaw;
|
||||||
entity.prevRotationPitch = entity.rotationPitch;
|
entity.prevRotationPitch = entity.rotationPitch;
|
||||||
}
|
}
|
||||||
//#if MC>=10800
|
//#if MC>=10800 && MC<11300
|
||||||
try {
|
//$$ try {
|
||||||
mc.runTick();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace(); // This should never be thrown but whatever
|
|
||||||
}
|
|
||||||
//#else
|
|
||||||
//$$ mc.runTick();
|
//$$ mc.runTick();
|
||||||
|
//$$ } catch (IOException e) {
|
||||||
|
//$$ e.printStackTrace(); // This should never be thrown but whatever
|
||||||
|
//$$ }
|
||||||
|
//#else
|
||||||
|
mc.runTick();
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//finally, updating the camera's position (which is not done by the sync jumping)
|
//finally, updating the camera's position (which is not done by the sync jumping)
|
||||||
@@ -649,4 +699,23 @@ public class ReplayHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void skipTeleportInterpolation(Entity entity) {
|
||||||
|
//#if MC>=11300
|
||||||
|
if (entity instanceof EntityLivingBase) {
|
||||||
|
EntityLivingBase e = (EntityLivingBase) entity;
|
||||||
|
// FIXME
|
||||||
|
// e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ);
|
||||||
|
// e.rotationYaw = (float) e.otherPlayerMPYaw;
|
||||||
|
// e.rotationPitch = (float) e.otherPlayerMPPitch;
|
||||||
|
}
|
||||||
|
//#else
|
||||||
|
//$$ if (entity instanceof EntityOtherPlayerMP) {
|
||||||
|
//$$ EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity;
|
||||||
|
//$$ e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ);
|
||||||
|
//$$ e.rotationYaw = (float) e.otherPlayerMPYaw;
|
||||||
|
//$$ e.rotationPitch = (float) e.otherPlayerMPPitch;
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.google.common.util.concurrent.Futures;
|
|||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import com.replaymod.core.ReplayMod;
|
import com.replaymod.core.ReplayMod;
|
||||||
import com.replaymod.core.utils.ModCompat;
|
import com.replaymod.core.utils.ModCompat;
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.replay.camera.CameraController;
|
import com.replaymod.replay.camera.CameraController;
|
||||||
import com.replaymod.replay.camera.CameraControllerRegistry;
|
import com.replaymod.replay.camera.CameraControllerRegistry;
|
||||||
import com.replaymod.replay.camera.CameraEntity;
|
import com.replaymod.replay.camera.CameraEntity;
|
||||||
@@ -19,16 +20,20 @@ import com.replaymod.replaystudio.replay.ReplayFile;
|
|||||||
import com.replaymod.replaystudio.replay.ZipReplayFile;
|
import com.replaymod.replaystudio.replay.ZipReplayFile;
|
||||||
import com.replaymod.replaystudio.studio.ReplayStudio;
|
import com.replaymod.replaystudio.studio.ReplayStudio;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
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
|
//#if MC>=10800
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.Mod;
|
|
||||||
//$$ import cpw.mods.fml.common.event.FMLInitializationEvent;
|
//$$ import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||||
//$$ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
//$$ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
||||||
//$$ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
//$$ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||||
@@ -40,25 +45,16 @@ import java.io.IOException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Mod(modid = ReplayModReplay.MOD_ID,
|
public class ReplayModReplay extends ReplayMod.Module {
|
||||||
version = "@MOD_VERSION@",
|
|
||||||
acceptedMinecraftVersions = "@MC_VERSION@",
|
|
||||||
acceptableRemoteVersions = "*",
|
|
||||||
//#if MC>=10800
|
|
||||||
clientSideOnly = true,
|
|
||||||
//#endif
|
|
||||||
useMetadata = true)
|
|
||||||
public class ReplayModReplay {
|
|
||||||
public static final String MOD_ID = "replaymod-replay";
|
|
||||||
|
|
||||||
@Mod.Instance(MOD_ID)
|
{ instance = this; }
|
||||||
public static ReplayModReplay instance;
|
public static ReplayModReplay instance;
|
||||||
|
|
||||||
private ReplayMod core;
|
private ReplayMod core;
|
||||||
|
|
||||||
private final CameraControllerRegistry cameraControllerRegistry = new CameraControllerRegistry();
|
private final CameraControllerRegistry cameraControllerRegistry = new CameraControllerRegistry();
|
||||||
|
|
||||||
public static Logger LOGGER;
|
public static Logger LOGGER = LogManager.getLogger();
|
||||||
|
|
||||||
protected ReplayHandler replayHandler;
|
protected ReplayHandler replayHandler;
|
||||||
|
|
||||||
@@ -66,14 +62,15 @@ public class ReplayModReplay {
|
|||||||
return replayHandler;
|
return replayHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
public ReplayModReplay(ReplayMod core) {
|
||||||
public void preInit(FMLPreInitializationEvent event) {
|
this.core = core;
|
||||||
LOGGER = event.getModLog();
|
}
|
||||||
core = ReplayMod.instance;
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void preInit(FMLPreInitializationEvent event) {
|
||||||
core.getSettingsRegistry().register(Setting.class);
|
core.getSettingsRegistry().register(Setting.class);
|
||||||
|
|
||||||
core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.marker", Keyboard.KEY_M, new Runnable() {
|
core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.marker", MCVer.Keyboard.KEY_M, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (replayHandler != null ) {
|
if (replayHandler != null ) {
|
||||||
@@ -109,7 +106,7 @@ public class ReplayModReplay {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (replayHandler != null) {
|
if (replayHandler != null) {
|
||||||
Minecraft mc = Minecraft.getMinecraft();
|
Minecraft mc = MCVer.getMinecraft();
|
||||||
ListenableFuture<NoGuiScreenshot> future = NoGuiScreenshot.take(mc, 1280, 720);
|
ListenableFuture<NoGuiScreenshot> future = NoGuiScreenshot.take(mc, 1280, 720);
|
||||||
Futures.addCallback(future, new FutureCallback<NoGuiScreenshot>() {
|
Futures.addCallback(future, new FutureCallback<NoGuiScreenshot>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -181,15 +178,15 @@ public class ReplayModReplay {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Override
|
||||||
public void init(FMLInitializationEvent event) {
|
public void init(FMLInitializationEvent event) {
|
||||||
Minecraft mc = core.getMinecraft();
|
Minecraft mc = core.getMinecraft();
|
||||||
mc.timer = new InputReplayTimer(mc.timer, this);
|
// FIXME mc.timer = new InputReplayTimer(mc.timer, this);
|
||||||
|
|
||||||
new GuiHandler(this).register();
|
new GuiHandler(this).register();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Override
|
||||||
public void postInit(FMLPostInitializationEvent event) {
|
public void postInit(FMLPostInitializationEvent event) {
|
||||||
Setting.CAMERA.setChoices(new ArrayList<>(cameraControllerRegistry.getControllers()));
|
Setting.CAMERA.setChoices(new ArrayList<>(cameraControllerRegistry.getControllers()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.replaymod.replay;
|
|||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
|
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||||
|
|
||||||
public interface ReplaySender {
|
public interface ReplaySender {
|
||||||
int currentTimeStamp();
|
int currentTimeStamp();
|
||||||
|
|
||||||
@@ -10,7 +12,7 @@ public interface ReplaySender {
|
|||||||
* @return {@code true} if it is paused, {@code false} otherwise
|
* @return {@code true} if it is paused, {@code false} otherwise
|
||||||
*/
|
*/
|
||||||
public default boolean paused() {
|
public default boolean paused() {
|
||||||
Minecraft mc = Minecraft.getMinecraft();
|
Minecraft mc = getMinecraft();
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
return mc.timer.tickLength == Float.POSITIVE_INFINITY;
|
return mc.timer.tickLength == Float.POSITIVE_INFINITY;
|
||||||
//#else
|
//#else
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.replaymod.replay.camera;
|
|||||||
import com.replaymod.core.ReplayMod;
|
import com.replaymod.core.ReplayMod;
|
||||||
import com.replaymod.core.events.SettingsChangedEvent;
|
import com.replaymod.core.events.SettingsChangedEvent;
|
||||||
import com.replaymod.core.utils.Utils;
|
import com.replaymod.core.utils.Utils;
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.replay.ReplayModReplay;
|
import com.replaymod.replay.ReplayModReplay;
|
||||||
import com.replaymod.replay.Setting;
|
import com.replaymod.replay.Setting;
|
||||||
import com.replaymod.replay.events.ReplayChatMessageEvent;
|
import com.replaymod.replay.events.ReplayChatMessageEvent;
|
||||||
@@ -26,10 +27,18 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
|||||||
import net.minecraftforge.client.event.RenderHandEvent;
|
import net.minecraftforge.client.event.RenderHandEvent;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.util.math.RayTraceFluidMode;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
import net.minecraft.stats.RecipeBook;
|
//#if MC>=11300
|
||||||
|
import net.minecraft.client.util.RecipeBookClient;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.stats.RecipeBook;
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
import net.minecraft.stats.StatisticsManager;
|
import net.minecraft.stats.StatisticsManager;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
@@ -45,9 +54,14 @@ import net.minecraft.util.text.ITextComponent;
|
|||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
import net.minecraft.client.entity.EntityPlayerSP;
|
||||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraftforge.eventbus.api.EventPriority;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.EventPriority;
|
//$$ import cpw.mods.fml.common.eventhandler.EventPriority;
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
@@ -97,9 +111,13 @@ public class CameraEntity
|
|||||||
*/
|
*/
|
||||||
private final EventHandler eventHandler = new EventHandler();
|
private final EventHandler eventHandler = new EventHandler();
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBookClient recipeBookClient) {
|
||||||
|
super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBookClient);
|
||||||
|
//#else
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) {
|
//$$ public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) {
|
||||||
super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBook);
|
//$$ super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBook);
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
//$$ public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager) {
|
//$$ public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager) {
|
||||||
@@ -113,6 +131,7 @@ public class CameraEntity
|
|||||||
//$$ super(mcIn, worldIn, session, netHandlerPlayClient, statFileWriter);
|
//$$ super(mcIn, worldIn, session, netHandlerPlayClient, statFileWriter);
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
FORGE_BUS.register(eventHandler);
|
FORGE_BUS.register(eventHandler);
|
||||||
FML_BUS.register(eventHandler);
|
FML_BUS.register(eventHandler);
|
||||||
@@ -196,7 +215,11 @@ public class CameraEntity
|
|||||||
|
|
||||||
private void updateBoundingBox() {
|
private void updateBoundingBox() {
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
setEntityBoundingBox(new AxisAlignedBB(
|
//#if MC>=11300
|
||||||
|
setBoundingBox(new AxisAlignedBB(
|
||||||
|
//#else
|
||||||
|
//$$ setEntityBoundingBox(new AxisAlignedBB(
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ this.boundingBox.setBB(AxisAlignedBB.getBoundingBox(
|
//$$ this.boundingBox.setBB(AxisAlignedBB.getBoundingBox(
|
||||||
//#endif
|
//#endif
|
||||||
@@ -205,7 +228,11 @@ public class CameraEntity
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate() {
|
//#if MC>=11300
|
||||||
|
public void tick() {
|
||||||
|
//#else
|
||||||
|
//$$ public void onUpdate() {
|
||||||
|
//#endif
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
Entity view = getRenderViewEntity(mc);
|
Entity view = getRenderViewEntity(mc);
|
||||||
//#else
|
//#else
|
||||||
@@ -262,10 +289,12 @@ public class CameraEntity
|
|||||||
return falseUnlessSpectating(Entity::isEntityInsideOpaqueBlock); // Make sure no suffocation overlay is rendered
|
return falseUnlessSpectating(Entity::isEntityInsideOpaqueBlock); // Make sure no suffocation overlay is rendered
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME
|
||||||
@Override
|
@Override
|
||||||
public boolean isInsideOfMaterial(Material materialIn) {
|
public boolean isInsideOfMaterial(Material materialIn) {
|
||||||
return falseUnlessSpectating(e -> e.isInsideOfMaterial(materialIn)); // Make sure no overlays are rendered
|
return falseUnlessSpectating(e -> e.isInsideOfMaterial(materialIn)); // Make sure no overlays are rendered
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
@Override
|
@Override
|
||||||
@@ -405,19 +434,33 @@ public class CameraEntity
|
|||||||
return super.isHandActive();
|
return super.isHandActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
@Override
|
@Override
|
||||||
public RayTraceResult rayTrace(double p_174822_1_, float p_174822_3_) {
|
public RayTraceResult rayTrace(double blockReachDistance, float partialTicks, RayTraceFluidMode p_174822_4_) {
|
||||||
RayTraceResult pos = super.rayTrace(p_174822_1_, 1f);
|
RayTraceResult pos = super.rayTrace(blockReachDistance, partialTicks, p_174822_4_);
|
||||||
|
|
||||||
// Make sure we can never look at blocks (-> no outline)
|
// Make sure we can never look at blocks (-> no outline)
|
||||||
if(pos != null && pos.typeOfHit == RayTraceResult.Type.BLOCK) {
|
if(pos != null && pos.type == RayTraceResult.Type.BLOCK) {
|
||||||
pos.typeOfHit = RayTraceResult.Type.MISS;
|
pos.type = RayTraceResult.Type.MISS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
//#else
|
//#else
|
||||||
//$$ @Override
|
//$$ @Override
|
||||||
|
//$$ public RayTraceResult rayTrace(double p_174822_1_, float p_174822_3_) {
|
||||||
|
//$$ RayTraceResult pos = super.rayTrace(p_174822_1_, 1f);
|
||||||
|
//$$
|
||||||
|
//$$ // Make sure we can never look at blocks (-> no outline)
|
||||||
|
//$$ if(pos != null && pos.typeOfHit == RayTraceResult.Type.BLOCK) {
|
||||||
|
//$$ pos.typeOfHit = RayTraceResult.Type.MISS;
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ return pos;
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
|
//#else
|
||||||
|
//$$ @Override
|
||||||
//$$ public MovingObjectPosition rayTrace(double p_174822_1_, float p_174822_3_) {
|
//$$ public MovingObjectPosition rayTrace(double p_174822_1_, float p_174822_3_) {
|
||||||
//$$ MovingObjectPosition pos = super.rayTrace(p_174822_1_, 1f);
|
//$$ MovingObjectPosition pos = super.rayTrace(p_174822_1_, 1f);
|
||||||
//$$
|
//$$
|
||||||
@@ -430,15 +473,22 @@ public class CameraEntity
|
|||||||
//$$ }
|
//$$ }
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
/* FIXME
|
||||||
@Override
|
@Override
|
||||||
public void openGui(Object mod, int modGuiId, World world, int x, int y, int z) {
|
public void openGui(Object mod, int modGuiId, World world, int x, int y, int z) {
|
||||||
// Do not open any block GUIs for the camera entities
|
// Do not open any block GUIs for the camera entities
|
||||||
// Note: Vanilla GUIs are filtered out on a packet level, this only applies to mod GUIs
|
// Note: Vanilla GUIs are filtered out on a packet level, this only applies to mod GUIs
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDead() {
|
//#if MC>=11300
|
||||||
super.setDead();
|
public void remove() {
|
||||||
|
super.remove();
|
||||||
|
//#else
|
||||||
|
//$$ public void setDead() {
|
||||||
|
//$$ super.setDead();
|
||||||
|
//#endif
|
||||||
FORGE_BUS.unregister(eventHandler);
|
FORGE_BUS.unregister(eventHandler);
|
||||||
FML_BUS.unregister(eventHandler);
|
FML_BUS.unregister(eventHandler);
|
||||||
}
|
}
|
||||||
@@ -530,11 +580,11 @@ public class CameraEntity
|
|||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void preCrosshairRender(RenderGameOverlayEvent.Pre event) {
|
public void preCrosshairRender(RenderGameOverlayEvent.Pre event) {
|
||||||
// The crosshair should only render if targeted entity can actually be spectated
|
// The crosshair should only render if targeted entity can actually be spectated
|
||||||
if (getType(event) == RenderGameOverlayEvent.ElementType.CROSSHAIRS) {
|
if (MCVer.getType(event) == RenderGameOverlayEvent.ElementType.CROSSHAIRS) {
|
||||||
event.setCanceled(!canSpectate(mc.pointedEntity));
|
event.setCanceled(!canSpectate(mc.pointedEntity));
|
||||||
}
|
}
|
||||||
// Hotbar should never be rendered
|
// Hotbar should never be rendered
|
||||||
if (getType(event) == RenderGameOverlayEvent.ElementType.HOTBAR) {
|
if (MCVer.getType(event) == RenderGameOverlayEvent.ElementType.HOTBAR) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -568,12 +618,14 @@ public class CameraEntity
|
|||||||
lastHandRendered = player;
|
lastHandRendered = player;
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
|
/* FIXME needs AT
|
||||||
mc.entityRenderer.itemRenderer.prevEquippedProgressMainHand = 1;
|
mc.entityRenderer.itemRenderer.prevEquippedProgressMainHand = 1;
|
||||||
mc.entityRenderer.itemRenderer.prevEquippedProgressOffHand = 1;
|
mc.entityRenderer.itemRenderer.prevEquippedProgressOffHand = 1;
|
||||||
mc.entityRenderer.itemRenderer.equippedProgressMainHand = 1;
|
mc.entityRenderer.itemRenderer.equippedProgressMainHand = 1;
|
||||||
mc.entityRenderer.itemRenderer.equippedProgressOffHand = 1;
|
mc.entityRenderer.itemRenderer.equippedProgressOffHand = 1;
|
||||||
mc.entityRenderer.itemRenderer.itemStackMainHand = player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND);
|
mc.entityRenderer.itemRenderer.itemStackMainHand = player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND);
|
||||||
mc.entityRenderer.itemRenderer.itemStackOffHand = player.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND);
|
mc.entityRenderer.itemRenderer.itemStackOffHand = player.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND);
|
||||||
|
*/
|
||||||
//#else
|
//#else
|
||||||
//$$ mc.entityRenderer.itemRenderer.prevEquippedProgress = 1;
|
//$$ mc.entityRenderer.itemRenderer.prevEquippedProgress = 1;
|
||||||
//$$ mc.entityRenderer.itemRenderer.equippedProgress = 1;
|
//$$ mc.entityRenderer.itemRenderer.equippedProgress = 1;
|
||||||
@@ -605,7 +657,7 @@ public class CameraEntity
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void preRenderGameOverlay(RenderGameOverlayEvent.Pre event) {
|
public void preRenderGameOverlay(RenderGameOverlayEvent.Pre event) {
|
||||||
switch (getType(event)) {
|
switch (MCVer.getType(event)) {
|
||||||
case ALL:
|
case ALL:
|
||||||
heldItemTooltipsWasTrue = mc.gameSettings.heldItemTooltips;
|
heldItemTooltipsWasTrue = mc.gameSettings.heldItemTooltips;
|
||||||
mc.gameSettings.heldItemTooltips = false;
|
mc.gameSettings.heldItemTooltips = false;
|
||||||
@@ -641,7 +693,7 @@ public class CameraEntity
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void postRenderGameOverlay(RenderGameOverlayEvent.Post event) {
|
public void postRenderGameOverlay(RenderGameOverlayEvent.Post event) {
|
||||||
if (getType(event) != RenderGameOverlayEvent.ElementType.ALL) return;
|
if (MCVer.getType(event) != RenderGameOverlayEvent.ElementType.ALL) return;
|
||||||
mc.gameSettings.heldItemTooltips = heldItemTooltipsWasTrue;
|
mc.gameSettings.heldItemTooltips = heldItemTooltipsWasTrue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
package com.replaymod.replay.camera;
|
package com.replaymod.replay.camera;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.settings.KeyBinding;
|
import net.minecraft.client.settings.KeyBinding;
|
||||||
import org.lwjgl.Sys;
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
import javax.vecmath.Vector3f;
|
||||||
|
|
||||||
import static com.replaymod.core.versions.MCVer.*;
|
import static com.replaymod.core.versions.MCVer.*;
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ public class ClassicCameraController implements CameraController {
|
|||||||
private Vector3f direction;
|
private Vector3f direction;
|
||||||
private Vector3f dirBefore;
|
private Vector3f dirBefore;
|
||||||
private double motion;
|
private double motion;
|
||||||
private long lastCall = Sys.getTime();
|
private long lastCall = System.currentTimeMillis();
|
||||||
|
|
||||||
private boolean speedup = false;
|
private boolean speedup = false;
|
||||||
|
|
||||||
@@ -34,7 +33,7 @@ public class ClassicCameraController implements CameraController {
|
|||||||
public void update(float partialTicksPassed) {
|
public void update(float partialTicksPassed) {
|
||||||
boolean forward = false, backward = false, left = false, right = false, up = false, down = false;
|
boolean forward = false, backward = false, left = false, right = false, up = false, down = false;
|
||||||
speedup = false;
|
speedup = false;
|
||||||
for(KeyBinding kb : Minecraft.getMinecraft().gameSettings.keyBindings) {
|
for(KeyBinding kb : getMinecraft().gameSettings.keyBindings) {
|
||||||
if(!isKeyDown(kb)) continue;
|
if(!isKeyDown(kb)) continue;
|
||||||
if(kb.getKeyDescription().equals("key.forward")) {
|
if(kb.getKeyDescription().equals("key.forward")) {
|
||||||
forward = true;
|
forward = true;
|
||||||
@@ -109,7 +108,7 @@ public class ClassicCameraController implements CameraController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateMovement() {
|
private void updateMovement() {
|
||||||
long frac = Sys.getTime() - lastCall;
|
long frac = System.currentTimeMillis() - lastCall;
|
||||||
|
|
||||||
if(frac == 0) return;
|
if(frac == 0) return;
|
||||||
|
|
||||||
@@ -124,13 +123,14 @@ public class ClassicCameraController implements CameraController {
|
|||||||
|
|
||||||
motion = Math.min(motion, MAX_SPEED);
|
motion = Math.min(motion, MAX_SPEED);
|
||||||
|
|
||||||
lastCall = Sys.getTime();
|
lastCall = System.currentTimeMillis();
|
||||||
|
|
||||||
if(direction == null || direction.lengthSquared() == 0 || motion < THRESHOLD) {
|
if(direction == null || direction.lengthSquared() == 0 || motion < THRESHOLD) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3f movement = direction.normalise(null);
|
Vector3f movement = new Vector3f(direction);
|
||||||
|
movement.normalize();
|
||||||
double factor = motion * (frac / 1000D);
|
double factor = motion * (frac / 1000D);
|
||||||
|
|
||||||
camera.moveCamera(movement.x * factor, movement.y * factor, movement.z * factor);
|
camera.moveCamera(movement.x * factor, movement.y * factor, movement.z * factor);
|
||||||
@@ -162,7 +162,9 @@ public class ClassicCameraController implements CameraController {
|
|||||||
Vector3f dbf = direction;
|
Vector3f dbf = direction;
|
||||||
|
|
||||||
if(dirBefore != null) {
|
if(dirBefore != null) {
|
||||||
direction = Vector3f.add(direction, dirBefore.normalise(null), null);
|
dirBefore.normalize();
|
||||||
|
dirBefore.add(direction);
|
||||||
|
direction = dirBefore;
|
||||||
}
|
}
|
||||||
|
|
||||||
dirBefore = dbf;
|
dirBefore = dbf;
|
||||||
|
|||||||
@@ -6,7 +6,12 @@ import net.minecraft.client.Minecraft;
|
|||||||
import net.minecraft.client.settings.KeyBinding;
|
import net.minecraft.client.settings.KeyBinding;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import org.lwjgl.input.Mouse;
|
|
||||||
|
//#if MC>=11300
|
||||||
|
// FIXME
|
||||||
|
//#else
|
||||||
|
//$$ import org.lwjgl.input.Mouse;
|
||||||
|
//#endif
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -18,7 +23,7 @@ public class SpectatorCameraController implements CameraController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(float partialTicksPassed) {
|
public void update(float partialTicksPassed) {
|
||||||
Minecraft mc = Minecraft.getMinecraft();
|
Minecraft mc = getMinecraft();
|
||||||
if (mc.gameSettings.keyBindSneak.isPressed()) {
|
if (mc.gameSettings.keyBindSneak.isPressed()) {
|
||||||
ReplayModReplay.instance.getReplayHandler().spectateCamera();
|
ReplayModReplay.instance.getReplayHandler().spectateCamera();
|
||||||
}
|
}
|
||||||
@@ -31,7 +36,11 @@ public class SpectatorCameraController implements CameraController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Prevent mouse movement
|
// Prevent mouse movement
|
||||||
Mouse.updateCursor();
|
//#if MC>=11300
|
||||||
|
// FIXME
|
||||||
|
//#else
|
||||||
|
//$$ Mouse.updateCursor();
|
||||||
|
//#endif
|
||||||
|
|
||||||
// Always make sure the camera is in the exact same spot as the spectated entity
|
// Always make sure the camera is in the exact same spot as the spectated entity
|
||||||
// This is necessary as some rendering code for the hand doesn't respect the view entity
|
// This is necessary as some rendering code for the hand doesn't respect the view entity
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
package com.replaymod.replay.camera;
|
package com.replaymod.replay.camera;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.settings.GameSettings;
|
|
||||||
import net.minecraft.client.settings.KeyBinding;
|
import net.minecraft.client.settings.KeyBinding;
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.client.GameSettings;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.client.settings.GameSettings;
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
import javax.vecmath.Vector3f;
|
||||||
|
|
||||||
import static com.replaymod.core.versions.MCVer.*;
|
import static com.replaymod.core.versions.MCVer.*;
|
||||||
|
|
||||||
@@ -42,11 +48,11 @@ public class VanillaCameraController implements CameraController {
|
|||||||
Vector3f direction = new Vector3f(0, 0, 0);
|
Vector3f direction = new Vector3f(0, 0, 0);
|
||||||
for (int i = 0; i < 6; i++) { // First, get movement direction depending on keys pressed
|
for (int i = 0; i < 6; i++) { // First, get movement direction depending on keys pressed
|
||||||
if (isKeyDown(bindings[i])) {
|
if (isKeyDown(bindings[i])) {
|
||||||
Vector3f.add(direction, DIRECTIONS[i], direction);
|
direction.add(DIRECTIONS[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (direction.length() == 0) return;
|
if (direction.length() == 0) return;
|
||||||
direction.normalise(direction); // Normalize, so we don't move quicker if we hold down multiple keys
|
direction.normalize(); // Normalize, so we don't move quicker if we hold down multiple keys
|
||||||
double yawRadians = Math.toRadians(camera.rotationYaw);
|
double yawRadians = Math.toRadians(camera.rotationYaw);
|
||||||
float yawSin = (float) Math.sin(yawRadians), yawCos = (float) Math.cos(yawRadians);
|
float yawSin = (float) Math.sin(yawRadians), yawCos = (float) Math.cos(yawRadians);
|
||||||
// Rotate by yaw
|
// Rotate by yaw
|
||||||
|
|||||||
@@ -5,8 +5,13 @@ import lombok.Getter;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraftforge.fml.common.eventhandler.Cancelable;
|
//#if MC>=11300
|
||||||
import net.minecraftforge.fml.common.eventhandler.Event;
|
import net.minecraftforge.eventbus.api.Cancelable;
|
||||||
|
import net.minecraftforge.eventbus.api.Event;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.Cancelable;
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.Cancelable;
|
//$$ import cpw.mods.fml.common.eventhandler.Cancelable;
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ import lombok.Getter;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraftforge.fml.common.eventhandler.Event;
|
//#if MC>=11300
|
||||||
|
import net.minecraftforge.eventbus.api.Event;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
package com.replaymod.replay.events;
|
package com.replaymod.replay.events;
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraftforge.fml.common.eventhandler.Cancelable;
|
//#if MC>=11300
|
||||||
import net.minecraftforge.fml.common.eventhandler.Event;
|
import net.minecraftforge.eventbus.api.Cancelable;
|
||||||
|
import net.minecraftforge.eventbus.api.Event;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.Cancelable;
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.Cancelable;
|
//$$ import cpw.mods.fml.common.eventhandler.Cancelable;
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ import lombok.Getter;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraftforge.fml.common.eventhandler.Event;
|
//#if MC>=11300
|
||||||
|
import net.minecraftforge.eventbus.api.Event;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
//$$ import cpw.mods.fml.common.eventhandler.Event;
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -12,8 +12,13 @@ import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
|||||||
import de.johni0702.minecraft.gui.popup.AbstractGuiPopup;
|
import de.johni0702.minecraft.gui.popup.AbstractGuiPopup;
|
||||||
import de.johni0702.minecraft.gui.utils.Colors;
|
import de.johni0702.minecraft.gui.utils.Colors;
|
||||||
import com.replaymod.replaystudio.data.Marker;
|
import com.replaymod.replaystudio.data.Marker;
|
||||||
import org.lwjgl.input.Keyboard;
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
|
||||||
import org.lwjgl.util.ReadablePoint;
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import com.replaymod.core.versions.MCVer.Keyboard;
|
||||||
|
//#else
|
||||||
|
//$$ import org.lwjgl.input.Keyboard;
|
||||||
|
//#endif
|
||||||
|
|
||||||
public class GuiEditMarkerPopup extends AbstractGuiPopup<GuiEditMarkerPopup> implements Typeable {
|
public class GuiEditMarkerPopup extends AbstractGuiPopup<GuiEditMarkerPopup> implements Typeable {
|
||||||
private static GuiNumberField newGuiNumberField() {
|
private static GuiNumberField newGuiNumberField() {
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import de.johni0702.minecraft.gui.GuiRenderer;
|
|||||||
import de.johni0702.minecraft.gui.RenderInfo;
|
import de.johni0702.minecraft.gui.RenderInfo;
|
||||||
import de.johni0702.minecraft.gui.element.advanced.AbstractGuiTimeline;
|
import de.johni0702.minecraft.gui.element.advanced.AbstractGuiTimeline;
|
||||||
import de.johni0702.minecraft.gui.function.Draggable;
|
import de.johni0702.minecraft.gui.function.Draggable;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.Point;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import org.lwjgl.util.Point;
|
|
||||||
import org.lwjgl.util.ReadableDimension;
|
|
||||||
import org.lwjgl.util.ReadablePoint;
|
|
||||||
|
|
||||||
import static de.johni0702.minecraft.gui.utils.Utils.clamp;
|
import static de.johni0702.minecraft.gui.utils.Utils.clamp;
|
||||||
|
|
||||||
|
|||||||
@@ -14,15 +14,24 @@ import de.johni0702.minecraft.gui.element.GuiTooltip;
|
|||||||
import de.johni0702.minecraft.gui.element.advanced.IGuiTimeline;
|
import de.johni0702.minecraft.gui.element.advanced.IGuiTimeline;
|
||||||
import de.johni0702.minecraft.gui.layout.CustomLayout;
|
import de.johni0702.minecraft.gui.layout.CustomLayout;
|
||||||
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
|
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.WritablePoint;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.client.settings.GameSettings;
|
|
||||||
import org.lwjgl.input.Keyboard;
|
//#if MC>=11300
|
||||||
import org.lwjgl.util.ReadableDimension;
|
import net.minecraft.client.GameSettings;
|
||||||
import org.lwjgl.util.ReadablePoint;
|
//#else
|
||||||
import org.lwjgl.util.WritablePoint;
|
//$$ import net.minecraft.client.settings.GameSettings;
|
||||||
|
//$$ import org.lwjgl.input.Keyboard;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#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.InputEvent;
|
import net.minecraftforge.fml.common.gameevent.InputEvent;
|
||||||
//#else
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
@@ -160,12 +169,14 @@ public class GuiReplayOverlay extends AbstractGuiOverlay<GuiReplayOverlay> {
|
|||||||
setMouseVisible(true);
|
setMouseVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* FIXME
|
||||||
if (Keyboard.getEventKeyState()) {
|
if (Keyboard.getEventKeyState()) {
|
||||||
// Handle the F1 key binding while the overlay is opened as a gui screen
|
// Handle the F1 key binding while the overlay is opened as a gui screen
|
||||||
if (isMouseVisible() && Keyboard.getEventKey() == Keyboard.KEY_F1) {
|
if (isMouseVisible() && Keyboard.getEventKey() == Keyboard.KEY_F1) {
|
||||||
gameSettings.hideGUI = !gameSettings.hideGUI;
|
gameSettings.hideGUI = !gameSettings.hideGUI;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.replaymod.core.ReplayMod;
|
|||||||
import com.replaymod.core.SettingsRegistry;
|
import com.replaymod.core.SettingsRegistry;
|
||||||
import com.replaymod.core.gui.GuiReplaySettings;
|
import com.replaymod.core.gui.GuiReplaySettings;
|
||||||
import com.replaymod.core.utils.Utils;
|
import com.replaymod.core.utils.Utils;
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.replay.ReplayModReplay;
|
import com.replaymod.replay.ReplayModReplay;
|
||||||
import com.replaymod.replay.Setting;
|
import com.replaymod.replay.Setting;
|
||||||
import com.replaymod.replaystudio.replay.ReplayFile;
|
import com.replaymod.replaystudio.replay.ReplayFile;
|
||||||
@@ -31,24 +32,24 @@ import de.johni0702.minecraft.gui.popup.AbstractGuiPopup;
|
|||||||
import de.johni0702.minecraft.gui.popup.GuiYesNoPopup;
|
import de.johni0702.minecraft.gui.popup.GuiYesNoPopup;
|
||||||
import de.johni0702.minecraft.gui.utils.Colors;
|
import de.johni0702.minecraft.gui.utils.Colors;
|
||||||
import de.johni0702.minecraft.gui.utils.Consumer;
|
import de.johni0702.minecraft.gui.utils.Consumer;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.client.gui.GuiErrorScreen;
|
import net.minecraft.client.gui.GuiErrorScreen;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.crash.CrashReport;
|
import net.minecraft.crash.CrashReport;
|
||||||
import net.minecraft.util.ReportedException;
|
|
||||||
import net.minecraft.util.Util;
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOCase;
|
import org.apache.commons.io.IOCase;
|
||||||
import org.apache.commons.io.filefilter.SuffixFileFilter;
|
import org.apache.commons.io.filefilter.SuffixFileFilter;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.lwjgl.Sys;
|
|
||||||
import org.lwjgl.input.Keyboard;
|
|
||||||
import org.lwjgl.util.Dimension;
|
|
||||||
import org.lwjgl.util.ReadableDimension;
|
|
||||||
import org.lwjgl.util.ReadablePoint;
|
|
||||||
|
|
||||||
import java.awt.*;
|
//#if MC>=11300
|
||||||
|
import com.replaymod.core.versions.MCVer.Keyboard;
|
||||||
|
//#else
|
||||||
|
//$$ import org.lwjgl.input.Keyboard;
|
||||||
|
//#endif
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileFilter;
|
import java.io.FileFilter;
|
||||||
@@ -57,6 +58,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import static com.replaymod.replay.ReplayModReplay.LOGGER;
|
import static com.replaymod.replay.ReplayModReplay.LOGGER;
|
||||||
|
import static com.replaymod.core.versions.MCVer.*;
|
||||||
|
|
||||||
public class GuiReplayViewer extends GuiScreen {
|
public class GuiReplayViewer extends GuiScreen {
|
||||||
private final ReplayModReplay mod;
|
private final ReplayModReplay mod;
|
||||||
@@ -93,29 +95,8 @@ public class GuiReplayViewer extends GuiScreen {
|
|||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
File folder = mod.getCore().getReplayFolder();
|
File folder = mod.getCore().getReplayFolder();
|
||||||
String path = folder.getAbsolutePath();
|
|
||||||
|
|
||||||
// First try OS specific methods
|
MCVer.openFile(folder);
|
||||||
try {
|
|
||||||
switch (Util.getOSType()) {
|
|
||||||
case WINDOWS:
|
|
||||||
Runtime.getRuntime().exec(String.format("cmd.exe /C start \"Open file\" \"%s\"", path));
|
|
||||||
return;
|
|
||||||
case OSX:
|
|
||||||
Runtime.getRuntime().exec(new String[]{"/usr/bin/open", path});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
LogManager.getLogger().error("Cannot open file", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise try to java way
|
|
||||||
try {
|
|
||||||
Desktop.getDesktop().browse(folder.toURI());
|
|
||||||
} catch (Throwable throwable) {
|
|
||||||
// And if all fails, lwjgl
|
|
||||||
Sys.openURL("file://" + path);
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
mod.getLogger().error("Cannot open file", e);
|
mod.getLogger().error("Cannot open file", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.replaymod.replay.handler;
|
package com.replaymod.replay.handler;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.replay.ReplayModReplay;
|
import com.replaymod.replay.ReplayModReplay;
|
||||||
import com.replaymod.replay.gui.screen.GuiReplayViewer;
|
import com.replaymod.replay.gui.screen.GuiReplayViewer;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
@@ -11,7 +12,11 @@ import net.minecraft.client.resources.I18n;
|
|||||||
import net.minecraftforge.client.event.GuiScreenEvent;
|
import net.minecraftforge.client.event.GuiScreenEvent;
|
||||||
|
|
||||||
//#if MC>=10800
|
//#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
|
//#else
|
||||||
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -32,7 +37,7 @@ public class GuiHandler {
|
|||||||
private static final int BUTTON_REPLAY_VIEWER = 17890234;
|
private static final int BUTTON_REPLAY_VIEWER = 17890234;
|
||||||
private static final int BUTTON_EXIT_REPLAY = 17890235;
|
private static final int BUTTON_EXIT_REPLAY = 17890235;
|
||||||
|
|
||||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
private static final Minecraft mc = MCVer.getMinecraft();
|
||||||
|
|
||||||
private final ReplayModReplay mod;
|
private final ReplayModReplay mod;
|
||||||
|
|
||||||
@@ -130,7 +135,7 @@ public class GuiHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GuiButton button = new GuiButton(BUTTON_REPLAY_VIEWER, getGui(event).width / 2 - 100,
|
GuiButton button = new GuiButton(BUTTON_REPLAY_VIEWER, getGui(event).width / 2 - 100,
|
||||||
getGui(event).height / 4 + 10 + 3 * 24, I18n.format("replaymod.gui.replayviewer"));
|
getGui(event).height / 4 + 10 + 3 * 24, I18n.format("replaymod.gui.replayviewer")){};
|
||||||
button.width = button.width / 2 - 2;
|
button.width = button.width / 2 - 2;
|
||||||
getButtonList(event).add(button);
|
getButtonList(event).add(button);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
package com.replaymod.replay.mixin;
|
package com.replaymod.replay.mixin;
|
||||||
|
|
||||||
import com.replaymod.replay.camera.CameraEntity;
|
import com.replaymod.replay.camera.CameraEntity;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.gui.GuiSpectator;
|
import net.minecraft.client.gui.GuiSpectator;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
@@ -20,7 +19,7 @@ public abstract class MixinGuiSpectator {
|
|||||||
//#endif
|
//#endif
|
||||||
public void isInReplay(int i, CallbackInfo ci) {
|
public void isInReplay(int i, CallbackInfo ci) {
|
||||||
// Prevent spectator gui from opening while in a replay
|
// Prevent spectator gui from opening while in a replay
|
||||||
if (player(Minecraft.getMinecraft()) instanceof CameraEntity) {
|
if (player(getMinecraft()) instanceof CameraEntity) {
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,11 @@ import java.util.Queue;
|
|||||||
@Mixin(ParticleManager.class)
|
@Mixin(ParticleManager.class)
|
||||||
public abstract class MixinParticleManager {
|
public abstract class MixinParticleManager {
|
||||||
@Shadow
|
@Shadow
|
||||||
private Queue<Particle> queueEntityFX;
|
//#if MC>=11300
|
||||||
|
private Queue<Particle> queue;
|
||||||
|
//#else
|
||||||
|
//$$ private Queue<Particle> queueEntityFX;
|
||||||
|
//#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method additionally clears the queue of particles to be added when the world is changed.
|
* This method additionally clears the queue of particles to be added when the world is changed.
|
||||||
@@ -27,7 +31,11 @@ public abstract class MixinParticleManager {
|
|||||||
*/
|
*/
|
||||||
@Inject(method = "clearEffects", at = @At("HEAD"))
|
@Inject(method = "clearEffects", at = @At("HEAD"))
|
||||||
public void replayModReplay_clearParticleQueue(World world, CallbackInfo ci) {
|
public void replayModReplay_clearParticleQueue(World world, CallbackInfo ci) {
|
||||||
queueEntityFX.clear();
|
//#if MC>=11300
|
||||||
|
queue.clear();
|
||||||
|
//#else
|
||||||
|
//$$ queueEntityFX.clear();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -13,7 +13,11 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
|||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
import net.minecraft.stats.RecipeBook;
|
//#if MC>=11300
|
||||||
|
import net.minecraft.client.util.RecipeBookClient;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.stats.RecipeBook;
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.stats.StatisticsManager;
|
import net.minecraft.stats.StatisticsManager;
|
||||||
@@ -44,10 +48,16 @@ public abstract class MixinPlayerControllerMP {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
@Inject(method = "func_192830_a", at=@At("HEAD"), cancellable = true)
|
@Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true)
|
||||||
private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBook recipeBook, CallbackInfoReturnable<EntityPlayerSP> ci) {
|
private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBookClient recipeBookClient, CallbackInfoReturnable<EntityPlayerSP> ci) {
|
||||||
if (ReplayModReplay.instance.getReplayHandler() != null) {
|
if (ReplayModReplay.instance.getReplayHandler() != null) {
|
||||||
ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBook));
|
ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBookClient));
|
||||||
|
//#else
|
||||||
|
//#if MC>=11200
|
||||||
|
//$$ @Inject(method = "func_192830_a", at=@At("HEAD"), cancellable = true)
|
||||||
|
//$$ private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBook recipeBook, CallbackInfoReturnable<EntityPlayerSP> ci) {
|
||||||
|
//$$ if (ReplayModReplay.instance.getReplayHandler() != null) {
|
||||||
|
//$$ ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBook));
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
//$$ @Inject(method = "createClientPlayer", at=@At("HEAD"), cancellable = true)
|
//$$ @Inject(method = "createClientPlayer", at=@At("HEAD"), cancellable = true)
|
||||||
@@ -67,13 +77,18 @@ public abstract class MixinPlayerControllerMP {
|
|||||||
//$$ ci.setReturnValue(new CameraEntity(mc, worldIn, mc.getSession(), netClientHandler, statFileWriter));
|
//$$ ci.setReturnValue(new CameraEntity(mc, worldIn, mc.getSession(), netClientHandler, statFileWriter));
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
@Inject(method = "isSpectator", at=@At("HEAD"), cancellable = true)
|
//#if MC>=11300
|
||||||
|
@Inject(method = "isSpectatorMode", at=@At("HEAD"), cancellable = true)
|
||||||
|
//#else
|
||||||
|
//$$ @Inject(method = "isSpectator", at=@At("HEAD"), cancellable = true)
|
||||||
|
//#endif
|
||||||
private void replayModReplay_isSpectator(CallbackInfoReturnable<Boolean> ci) {
|
private void replayModReplay_isSpectator(CallbackInfoReturnable<Boolean> ci) {
|
||||||
if (player(mc) instanceof CameraEntity) { // this check should in theory not be required
|
if (player(mc) instanceof CameraEntity) { // this check should in theory not be required
|
||||||
ci.setReturnValue(player(mc).isSpectator());
|
ci.setReturnValue(player(mc).isSpectator());
|
||||||
|
|||||||
@@ -2,25 +2,42 @@ package com.replaymod.replay.mixin;
|
|||||||
|
|
||||||
import com.replaymod.replay.ReplayHandler;
|
import com.replaymod.replay.ReplayHandler;
|
||||||
import com.replaymod.replay.ReplayModReplay;
|
import com.replaymod.replay.ReplayModReplay;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.client.renderer.ItemRenderer;
|
||||||
|
import net.minecraft.util.Util;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.client.Minecraft;
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.client.renderer.RenderItem;
|
//$$ import net.minecraft.client.renderer.RenderItem;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.renderer.entity.RenderItem;
|
//$$ import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
|
|
||||||
@Mixin(RenderItem.class)
|
//#if MC>=11300
|
||||||
|
@Mixin(ItemRenderer.class)
|
||||||
|
//#else
|
||||||
|
//$$ @Mixin(RenderItem.class)
|
||||||
|
//#endif
|
||||||
public class MixinRenderItem {
|
public class MixinRenderItem {
|
||||||
@Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
//#if MC>=11300
|
||||||
private long getEnchantmentTime() {
|
@Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J"))
|
||||||
|
//#else
|
||||||
|
//$$ @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
||||||
|
//#endif
|
||||||
|
private static long getEnchantmentTime() {
|
||||||
ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler();
|
ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler();
|
||||||
if (replayHandler != null) {
|
if (replayHandler != null) {
|
||||||
return replayHandler.getReplaySender().currentTimeStamp();
|
return replayHandler.getReplaySender().currentTimeStamp();
|
||||||
}
|
}
|
||||||
return Minecraft.getSystemTime();
|
//#if MC>=11300
|
||||||
|
return Util.milliTime();
|
||||||
|
//#else
|
||||||
|
//$$ return Minecraft.getSystemTime();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.replaymod.replay.mixin;
|
package com.replaymod.replay.mixin;
|
||||||
|
|
||||||
import com.replaymod.replay.camera.CameraEntity;
|
import com.replaymod.replay.camera.CameraEntity;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -26,7 +25,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
|||||||
public abstract class MixinRenderLivingBase {
|
public abstract class MixinRenderLivingBase {
|
||||||
@Inject(method = "canRenderName", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "canRenderName", at = @At("HEAD"), cancellable = true)
|
||||||
private void replayModReplay_canRenderInvisibleName(EntityLivingBase entity, CallbackInfoReturnable<Boolean> ci) {
|
private void replayModReplay_canRenderInvisibleName(EntityLivingBase entity, CallbackInfoReturnable<Boolean> ci) {
|
||||||
EntityPlayer thePlayer = player(Minecraft.getMinecraft());
|
EntityPlayer thePlayer = player(getMinecraft());
|
||||||
if (thePlayer instanceof CameraEntity && entity.isInvisible()) {
|
if (thePlayer instanceof CameraEntity && entity.isInvisible()) {
|
||||||
ci.setReturnValue(false);
|
ci.setReturnValue(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.replaymod.replay.mixin;
|
|||||||
|
|
||||||
import net.minecraft.client.gui.FontRenderer;
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
import net.minecraft.client.settings.GameSettings;
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.passive.EntityAnimal;
|
import net.minecraft.entity.passive.EntityAnimal;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -13,6 +12,12 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.client.GameSettings;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.client.settings.GameSettings;
|
||||||
|
//#endif
|
||||||
|
|
||||||
@Mixin(RenderManager.class)
|
@Mixin(RenderManager.class)
|
||||||
public class MixinRenderManager {
|
public class MixinRenderManager {
|
||||||
@Shadow
|
@Shadow
|
||||||
|
|||||||
@@ -2,11 +2,16 @@ package com.replaymod.replay.mixin;
|
|||||||
|
|
||||||
import com.replaymod.replay.ReplayHandler;
|
import com.replaymod.replay.ReplayHandler;
|
||||||
import com.replaymod.replay.ReplayModReplay;
|
import com.replaymod.replay.ReplayModReplay;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
|
//#if MC>=11300
|
||||||
|
import net.minecraft.util.Util;
|
||||||
|
//#else
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer;
|
||||||
//#else
|
//#else
|
||||||
@@ -19,8 +24,11 @@ import net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer;
|
|||||||
//$$ @Mixin(RenderEndPortal.class)
|
//$$ @Mixin(RenderEndPortal.class)
|
||||||
//#endif
|
//#endif
|
||||||
public class MixinTileEntityEndPortalRenderer {
|
public class MixinTileEntityEndPortalRenderer {
|
||||||
|
//#if MC>=11300
|
||||||
|
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J"))
|
||||||
|
//#else
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
@Redirect(method = "renderTileEntityAt", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
//$$ @Redirect(method = "renderTileEntityAt", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
//$$ @Redirect(method = "func_180544_a", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
//$$ @Redirect(method = "func_180544_a", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
||||||
@@ -28,11 +36,16 @@ public class MixinTileEntityEndPortalRenderer {
|
|||||||
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
private long replayModReplay_getEnchantmentTime() {
|
//#endif
|
||||||
|
private static long replayModReplay_getEnchantmentTime() {
|
||||||
ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler();
|
ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler();
|
||||||
if (replayHandler != null) {
|
if (replayHandler != null) {
|
||||||
return replayHandler.getReplaySender().currentTimeStamp();
|
return replayHandler.getReplaySender().currentTimeStamp();
|
||||||
}
|
}
|
||||||
return Minecraft.getSystemTime();
|
//#if MC>=11300
|
||||||
|
return Util.milliTime();
|
||||||
|
//#else
|
||||||
|
//$$ return Minecraft.getSystemTime();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,7 +273,6 @@ sourceSets {
|
|||||||
exclude 'com/replaymod/online'
|
exclude 'com/replaymod/online'
|
||||||
exclude 'com/replaymod/pathing'
|
exclude 'com/replaymod/pathing'
|
||||||
exclude 'com/replaymod/render'
|
exclude 'com/replaymod/render'
|
||||||
exclude 'com/replaymod/replay'
|
|
||||||
exclude 'com/replaymod/restrictions'
|
exclude 'com/replaymod/restrictions'
|
||||||
exclude 'com/replaymod/simplepathing'
|
exclude 'com/replaymod/simplepathing'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user