diff --git a/README.md b/README.md
index a05f2b8e..d9f32cc9 100644
--- a/README.md
+++ b/README.md
@@ -30,55 +30,9 @@ The `master` branch is solely to be used for the `version.json` file that contai
used by the clients to check for updates of this mod.
### The Preprocessor
-To support multiple Minecraft versions with the ReplayMod, a [JCP](https://github.com/raydac/java-comment-preprocessor)-inspired preprocessor is used:
-```java
- //#if MC>=11200
- // This is the block for MC >= 1.12.0
- category.addDetail(name, callable::call);
- //#else
- //$$ // This is the block for MC < 1.12.0
- //$$ category.setDetail(name, callable::call);
- //#endif
-```
-Any comments starting with `//$$` will automatically be introduced / removed based on the surrounding condition(s).
-Normal comments are left untouched. The `//#else` branch is optional.
-
-Conditions can be nested arbitrarily but their indention shall always be equal to the indention of the code at the `//#if` line.
-The `//$$` shall be aligned with the inner-most `//#if`.
-```java
- //#if MC>=10904
- public CPacketResourcePackStatus makeStatusPacket(String hash, Action action) {
- //#if MC>=11002
- return new CPacketResourcePackStatus(action);
- //#else
- //$$ return new CPacketResourcePackStatus(hash, action);
- //#endif
- }
- //#else
- //$$ public C19PacketResourcePackStatus makeStatusPacket(String hash, Action action) {
- //$$ return new C19PacketResourcePackStatus(hash, action);
- //$$ }
- //#endif
-```
-Code for the more recent MC version shall be placed in the first branch of the if-else-construct.
-Version-dependent import statements shall be placed separately from and after all other imports.
-Common version dependent code (including the fml and forge event bus) are available as static methods/fields in the `MCVer` class.
-
-The source code in `src/main` is generally for the most recent Minecraft version and is automatically passed through the
-preprocessor when any of the other versions are built (gradle projects `:1.8`, `:1.8.9`, etc.).
-Do **NOT** edit any of the code in `versions/$MCVERSION/build/` as it is automatically generated and will be overwritten without warning.
-
-You can change the version of the code in `src/main` if you wish to develop/debug with another version of Minecraft:
-```bash
-./gradle :1.9.4:setCoreVersion # switches all sources in src/main to 1.9.4
-```
-If you do so, you'll also have to refresh the project in your IDE.
-
-Make sure to switch back to the most recent branch before committing!
-Care should also be taken that switching to a different branch and back doesn't introduce any uncommitted changes (e.g. due to different indention, especially in case of nested conditions).
-
-Some files may use the same preprocessor with different keywords.
-If required, more file extensions and keywords can be added in the `preprocess` block of the `versions/common.gradle` script.
+To support multiple Minecraft versions with the ReplayMod, a [JCP](https://github.com/raydac/java-comment-preprocessor)-inspired preprocessor is used.
+It has by now acquired a lot more sophisticated features to make it as noninvasive as possible.
+Please read the [preprocessor's README](https://github.com/ReplayMod/preprocessor/blob/master/README.md) to understand how it works.
### Versioning
The ReplayMod uses the versioning scheme outlined [here](http://mcforge.readthedocs.io/en/latest/conventions/versioning/)
diff --git a/build.gradle b/build.gradle
index e103e23f..38d975af 100644
--- a/build.gradle
+++ b/build.gradle
@@ -102,6 +102,8 @@ preprocess {
".vert": PreprocessTask.DEFAULT_KEYWORDS,
".frag": PreprocessTask.DEFAULT_KEYWORDS,
])
+
+ patternAnnotation.set("com.replaymod.gradle.remap.Pattern")
}
def mcVersionStr = "${(int)(mcVersion/10000)}.${(int)(mcVersion/100)%100}" + (mcVersion%100==0 ? '' : ".${mcVersion%100}")
diff --git a/root.gradle.kts b/root.gradle.kts
index 88e23880..07a56fa3 100755
--- a/root.gradle.kts
+++ b/root.gradle.kts
@@ -3,7 +3,7 @@ import java.io.ByteArrayOutputStream
plugins {
id("fabric-loom") version "0.5-SNAPSHOT" apply false
- id("com.replaymod.preprocess") version "7c4f90e"
+ id("com.replaymod.preprocess") version "3d85a00"
id("com.github.hierynomus.license") version "0.15.0"
}
diff --git a/src/main/java/com/replaymod/compat/shaders/ShaderBeginRender.java b/src/main/java/com/replaymod/compat/shaders/ShaderBeginRender.java
index fd7048be..8a782e8b 100644
--- a/src/main/java/com/replaymod/compat/shaders/ShaderBeginRender.java
+++ b/src/main/java/com/replaymod/compat/shaders/ShaderBeginRender.java
@@ -8,8 +8,6 @@ import net.minecraft.client.MinecraftClient;
import java.lang.reflect.InvocationTargetException;
-import static com.replaymod.core.versions.MCVer.getRenderPartialTicks;
-
public class ShaderBeginRender extends EventRegistrations {
private final MinecraftClient mc = MinecraftClient.getInstance();
@@ -36,7 +34,7 @@ public class ShaderBeginRender extends EventRegistrations {
//#if MC>=11400
mc.gameRenderer.getCamera(),
//#endif
- getRenderPartialTicks(), 0);
+ mc.getTickDelta(), 0);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
diff --git a/src/main/java/com/replaymod/core/KeyBindingRegistry.java b/src/main/java/com/replaymod/core/KeyBindingRegistry.java
index 9884c9c6..6223717c 100644
--- a/src/main/java/com/replaymod/core/KeyBindingRegistry.java
+++ b/src/main/java/com/replaymod/core/KeyBindingRegistry.java
@@ -7,7 +7,6 @@ import com.replaymod.core.mixin.KeyBindingAccessor;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import com.replaymod.core.events.KeyBindingEventCallback;
import com.replaymod.core.events.KeyEventCallback;
-import com.replaymod.core.versions.MCVer;
import net.minecraft.client.options.KeyBinding;
import net.minecraft.util.crash.CrashReport;
import net.minecraft.util.crash.CrashReportSection;
@@ -121,8 +120,8 @@ public class KeyBindingRegistry extends EventRegistrations {
} catch (Throwable cause) {
CrashReport crashReport = CrashReport.create(cause, "Handling Key Binding");
CrashReportSection category = crashReport.addElement("Key Binding");
- MCVer.addDetail(category, "Key Binding", () -> binding.name);
- MCVer.addDetail(category, "Handler", runnable::toString);
+ category.add("Key Binding", () -> binding.name);
+ category.add("Handler", runnable::toString);
throw new CrashException(crashReport);
}
}
@@ -139,8 +138,8 @@ public class KeyBindingRegistry extends EventRegistrations {
} catch (Throwable cause) {
CrashReport crashReport = CrashReport.create(cause, "Handling Raw Key Binding");
CrashReportSection category = crashReport.addElement("Key Binding");
- MCVer.addDetail(category, "Key Code", () -> "" + keyCode);
- MCVer.addDetail(category, "Handler", handler::toString);
+ category.add("Key Code", () -> "" + keyCode);
+ category.add("Handler", handler::toString);
throw new CrashException(crashReport);
}
}
@@ -161,7 +160,12 @@ public class KeyBindingRegistry extends EventRegistrations {
}
public String getBoundKey() {
- return MCVer.getBoundKey(keyBinding);
+ try {
+ return keyBinding.getBoundKeyLocalizedText().getString();
+ } catch (ArrayIndexOutOfBoundsException e) {
+ // Apparently windows likes to press strange keys, see https://www.replaymod.com/forum/thread/55
+ return "Unknown";
+ }
}
public boolean isBound() {
diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java
index ba1805b2..99a78700 100644
--- a/src/main/java/com/replaymod/core/ReplayMod.java
+++ b/src/main/java/com/replaymod/core/ReplayMod.java
@@ -22,15 +22,15 @@ import com.replaymod.simplepathing.ReplayModSimplePathing;
import de.johni0702.minecraft.gui.container.GuiScreen;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.options.Option;
-import net.minecraft.util.Identifier;
import net.minecraft.resource.DirectoryResourcePack;
-import net.minecraft.text.Text;
-import net.minecraft.text.Style;
import net.minecraft.text.LiteralText;
+import net.minecraft.text.Style;
+import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Formatting;
-import org.apache.commons.io.FilenameUtils;
+import net.minecraft.util.Identifier;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
import java.io.ByteArrayInputStream;
import java.io.File;
@@ -355,6 +355,14 @@ public class ReplayMod implements Module, Scheduler {
return backend.getVersion();
}
+ public String getMinecraftVersion() {
+ return backend.getMinecraftVersion();
+ }
+
+ public boolean isModLoaded(String id) {
+ return backend.isModLoaded(id);
+ }
+
public MinecraftClient getMinecraft() {
return mc;
}
diff --git a/src/main/java/com/replaymod/core/ReplayModBackend.java b/src/main/java/com/replaymod/core/ReplayModBackend.java
index 826f10f9..d6313852 100644
--- a/src/main/java/com/replaymod/core/ReplayModBackend.java
+++ b/src/main/java/com/replaymod/core/ReplayModBackend.java
@@ -18,4 +18,12 @@ public class ReplayModBackend implements ClientModInitializer {
.orElseThrow(IllegalStateException::new)
.getMetadata().getVersion().toString();
}
+
+ public String getMinecraftVersion() {
+ return mod.getMinecraft().getGame().getVersion().getName();
+ }
+
+ public boolean isModLoaded(String id) {
+ return FabricLoader.getInstance().isModLoaded(id.toLowerCase());
+ }
}
diff --git a/src/main/java/com/replaymod/core/utils/Restrictions.java b/src/main/java/com/replaymod/core/utils/Restrictions.java
index 02c3eb3e..359eaf77 100644
--- a/src/main/java/com/replaymod/core/utils/Restrictions.java
+++ b/src/main/java/com/replaymod/core/utils/Restrictions.java
@@ -10,8 +10,6 @@ import net.minecraft.util.Identifier;
//$$ import io.netty.buffer.Unpooled;
//#endif
-import static com.replaymod.core.versions.MCVer.readString;
-
/**
* Restrictions set by the server,
* @see Replay Restrictions Gist
@@ -34,7 +32,7 @@ public class Restrictions {
//$$ PacketBuffer buffer = new PacketBuffer(Unpooled.wrappedBuffer(packet.func_149168_d()));
//#endif
while (buffer.isReadable()) {
- String name = readString(buffer, 64);
+ String name = buffer.readString(64);
boolean active = buffer.readBoolean();
// if ("no_xray".equals(name)) {
// noXray = active;
diff --git a/src/main/java/com/replaymod/core/versions/BufferBuilder.java b/src/main/java/com/replaymod/core/versions/BufferBuilder.java
new file mode 100644
index 00000000..743815c4
--- /dev/null
+++ b/src/main/java/com/replaymod/core/versions/BufferBuilder.java
@@ -0,0 +1 @@
+// 1.7.10 and below
diff --git a/src/main/java/com/replaymod/core/versions/GLFW.java b/src/main/java/com/replaymod/core/versions/GLFW.java
new file mode 100644
index 00000000..fca4cd6c
--- /dev/null
+++ b/src/main/java/com/replaymod/core/versions/GLFW.java
@@ -0,0 +1 @@
+// 1.12.2 and below
diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java
index 854c4a8f..73b77d47 100644
--- a/src/main/java/com/replaymod/core/versions/MCVer.java
+++ b/src/main/java/com/replaymod/core/versions/MCVer.java
@@ -1,45 +1,19 @@
package com.replaymod.core.versions;
import com.replaymod.core.mixin.GuiScreenAccessor;
-import com.replaymod.core.mixin.MinecraftAccessor;
-import com.replaymod.render.mixin.MainWindowAccessor;
import com.replaymod.replaystudio.protocol.PacketTypeRegistry;
import com.replaymod.replaystudio.us.myles.ViaVersion.api.protocol.ProtocolVersion;
import com.replaymod.replaystudio.us.myles.ViaVersion.packets.State;
-import de.johni0702.minecraft.gui.utils.NonNull;
-import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.options.KeyBinding;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.client.render.Tessellator;
-import net.minecraft.client.render.entity.EntityRenderDispatcher;
-import net.minecraft.client.model.ModelPart;
-import net.minecraft.util.crash.CrashReportSection;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.network.PacketByteBuf;
-import net.minecraft.util.Identifier;
import net.minecraft.util.Util;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.world.World;
-import net.minecraft.world.chunk.WorldChunk;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
//#if MC>=11600
import net.minecraft.resource.ResourcePackSource;
//#endif
-//#if MC>=11500
-import net.minecraft.client.model.ModelPart.Cuboid;
-import java.util.ArrayList;
-//#else
-//$$ import net.minecraft.client.model.Box;
-//#endif
-
//#if MC>=11400
-import com.replaymod.core.mixin.AbstractButtonWidgetAccessor;
+import com.replaymod.render.mixin.MainWindowAccessor;
import net.minecraft.SharedConstants;
import net.minecraft.client.gl.Framebuffer;
import net.minecraft.client.gui.widget.ButtonWidget;
@@ -62,20 +36,14 @@ import net.minecraft.text.TranslatableText;
//#if FABRIC>=1
//#else
-//$$ import net.minecraft.entity.LivingEntity;
-//$$ import net.minecraftforge.client.event.GuiScreenEvent;
-//$$ import net.minecraftforge.client.event.RenderGameOverlayEvent;
-//$$ import net.minecraftforge.client.event.RenderLivingEvent;
//$$ import net.minecraftforge.common.MinecraftForge;
//$$ import net.minecraftforge.eventbus.api.IEventBus;
//#endif
//#if MC>=11400
-import net.minecraft.client.util.Window;
import net.minecraft.client.util.InputUtil;
import org.lwjgl.glfw.GLFW;
//#else
-//$$ import net.minecraft.client.gui.ScaledResolution;
//$$ import net.minecraft.client.resources.ResourcePackRepository;
//$$ import net.minecraftforge.fml.client.FMLClientHandler;
//$$ import org.apache.logging.log4j.LogManager;
@@ -84,28 +52,18 @@ import org.lwjgl.glfw.GLFW;
//$$ import java.io.IOException;
//#endif
-//#if MC>=11400
-import net.minecraft.client.sound.PositionedSoundInstance;
-//#else
-//$$ import net.minecraft.client.audio.PositionedSoundRecord;
-//#endif
-
//#if MC>=10904
import com.replaymod.render.blend.mixin.ParticleAccessor;
import net.minecraft.client.particle.Particle;
-import net.minecraft.sound.SoundEvent;
import net.minecraft.util.math.Vec3d;
//#endif
//#if MC>=10809
-import net.minecraft.client.render.VertexFormats;
//#else
//$$ import net.minecraftforge.fml.common.FMLCommonHandler;
//#endif
//#if MC>=10800
-import net.minecraft.client.render.BufferBuilder;
-import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormatElement;
//#if MC<11500
@@ -113,28 +71,17 @@ import net.minecraft.client.render.VertexFormatElement;
//#endif
//#else
//$$ import com.replaymod.core.mixin.ResourcePackRepositoryAccessor;
-//$$ import com.google.common.util.concurrent.Futures;
//$$ import io.netty.handler.codec.DecoderException;
+//$$ import net.minecraft.client.renderer.entity.RenderManager;
//$$ import net.minecraft.client.resources.FileResourcePack;
+//$$ import net.minecraft.network.PacketBuffer;
//$$
//$$ import static org.lwjgl.opengl.GL11.*;
//#endif
-//#if FABRIC>=1
-import net.fabricmc.loader.api.FabricLoader;
-//#else
-//#if MC>=11400
-//$$ import net.minecraftforge.fml.ModList;
-//#else
-//$$ import net.minecraftforge.fml.common.Loader;
-//#endif
-//#endif
-
import java.io.File;
import java.net.URI;
-import java.util.Collection;
import java.util.List;
-import java.util.concurrent.Callable;
import java.util.function.Consumer;
import java.util.Optional;
@@ -142,8 +89,6 @@ import java.util.Optional;
* Abstraction over things that have changed between different MC versions.
*/
public class MCVer {
- private static Logger LOGGER = LogManager.getLogger();
-
//#if FABRIC<=0
//$$ public static IEventBus FORGE_BUS = MinecraftForge.EVENT_BUS;
//#if MC>=10809
@@ -153,18 +98,6 @@ public class MCVer {
//#endif
//#endif
- public static boolean isModLoaded(String id) {
- //#if FABRIC>=1
- return FabricLoader.getInstance().isModLoaded(id.toLowerCase());
- //#else
- //#if MC>=11400
- //$$ return ModList.get().isLoaded(id.toLowerCase());
- //#else
- //$$ return Loader.isModLoaded(id);
- //#endif
- //#endif
- }
-
public static int getProtocolVersion() {
//#if MC>=11400
return SharedConstants.getGameVersion().getProtocolVersion();
@@ -180,38 +113,6 @@ public class MCVer {
);
}
- public static String getMinecraftVersion() {
- //#if MC>=11400
- return getMinecraft().getGame().getVersion().getName();
- //#else
- //$$ return Loader.MC_VERSION;
- //#endif
- }
-
- public static void addDetail(CrashReportSection category, String name, Callable callable) {
- //#if MC>=10904
- //#if MC>=11200
- category.add(name, callable::call);
- //#else
- //$$ category.setDetail(name, callable::call);
- //#endif
- //#else
- //$$ category.addCrashSectionCallable(name, callable);
- //#endif
- }
-
- public static Dimension getMainWindowSize(MinecraftClient mc) {
- return new Dimension(
- //#if MC>=11400
- getWindow(mc).getFramebufferWidth(),
- getWindow(mc).getFramebufferHeight()
- //#else
- //$$ mc.displayWidth,
- //$$ mc.displayHeight
- //#endif
- );
- }
-
public static void resizeMainWindow(MinecraftClient mc, int width, int height) {
//#if MC>=11400
Framebuffer fb = mc.getFramebuffer();
@@ -219,7 +120,7 @@ public class MCVer {
fb.resize(width, height, false);
}
//noinspection ConstantConditions
- MainWindowAccessor mainWindow = (MainWindowAccessor) (Object) getWindow(mc);
+ MainWindowAccessor mainWindow = (MainWindowAccessor) (Object) mc.getWindow();
mainWindow.setFramebufferWidth(width);
mainWindow.setFramebufferHeight(height);
//#if MC>=11500
@@ -232,263 +133,13 @@ public class MCVer {
//#endif
}
- public static double Entity_getX(Entity entity) {
- //#if MC>=11500
- return entity.getX();
- //#else
- //$$ return entity.x;
- //#endif
- }
-
- public static double Entity_getY(Entity entity) {
- //#if MC>=11500
- return entity.getY();
- //#else
- //$$ return entity.y;
- //#endif
- }
-
- public static double Entity_getZ(Entity entity) {
- //#if MC>=11500
- return entity.getZ();
- //#else
- //$$ return entity.z;
- //#endif
- }
-
- public static void Entity_setPos(Entity entity, double x, double y, double z) {
- //#if MC>=11500
- entity.setPos(x, y, z);
- //#else
- //$$ entity.x = x;
- //$$ entity.y = y;
- //$$ entity.z = z;
- //#endif
- }
-
- //#if MC>=11400
- public static void width(AbstractButtonWidget button, int value) {
- button.setWidth(value);
- }
-
- public static int width(AbstractButtonWidget button) {
- return button.getWidth();
- }
-
- public static int height(AbstractButtonWidget button) {
- return ((AbstractButtonWidgetAccessor) button).getHeight();
- }
- //#else
- //$$ public static void width(GuiButton button, int value) {
- //$$ button.width = value;
- //$$ }
- //$$
- //$$ public static int width(GuiButton button) {
- //$$ return button.width;
- //$$ }
- //$$
- //$$ public static int height(GuiButton button) {
- //$$ return button.height;
- //$$ }
- //#endif
-
- //#if FABRIC<=0
- //#if MC>=11400
- //$$ public static void addButton(GuiScreenEvent.InitGuiEvent event, Widget button) {
- //$$ event.addWidget(button);
- //$$ }
- //$$
- //$$ public static void removeButton(GuiScreenEvent.InitGuiEvent event, Widget button) {
- //$$ event.removeWidget(button);
- //$$ }
- //$$
- //$$ public static List getButtonList(GuiScreenEvent.InitGuiEvent event) {
- //$$ return event.getWidgetList();
- //$$ }
- //$$
- //$$ public static Widget getButton(GuiScreenEvent.ActionPerformedEvent event) {
- //$$ return event.getButton();
- //$$ }
- //#else
- //$$ public static void addButton(GuiScreenEvent.InitGuiEvent event, GuiButton button) {
- //#if MC>=11400
- //$$ event.addButton(button);
- //#else
- //$$ getButtonList(event).add(button);
- //#endif
- //$$ }
- //$$
- //$$ public static void removeButton(GuiScreenEvent.InitGuiEvent event, GuiButton button) {
- //#if MC>=11400
- //$$ event.removeButton(button);
- //#else
- //$$ getButtonList(event).remove(button);
- //#endif
- //$$ }
- //$$
- //$$ @SuppressWarnings("unchecked")
- //$$ public static List getButtonList(GuiScreenEvent.InitGuiEvent event) {
- //#if MC>=10904
- //$$ return event.getButtonList();
- //#else
- //$$ return event.buttonList;
- //#endif
- //$$ }
- //$$
- //$$ public static GuiButton getButton(GuiScreenEvent.ActionPerformedEvent event) {
- //#if MC>=10904
- //$$ return event.getButton();
- //#else
- //$$ return event.button;
- //#endif
- //$$ }
- //#endif
- //$$
- //$$ public static Screen getGui(GuiScreenEvent event) {
- //#if MC>=10904
- //$$ return event.getGui();
- //#else
- //$$ return event.gui;
- //#endif
- //$$ }
- //$$
- //$$ public static LivingEntity getEntity(RenderLivingEvent event) {
- //#if MC>=10904
- //$$ return event.getEntity();
- //#else
- //$$ return event.entity;
- //#endif
- //$$ }
- //#endif
-
- public static String readString(PacketByteBuf buffer, int max) {
- //#if MC>=10800
- return buffer.readString(max);
- //#else
- //$$ try {
- //$$ return buffer.readStringFromBuffer(max);
- //$$ } catch (IOException e) {
- //$$ throw new DecoderException(e);
- //$$ }
- //#endif
- }
-
- //#if FABRIC<=0
- //$$ public static RenderGameOverlayEvent.ElementType getType(RenderGameOverlayEvent event) {
- //#if MC>=10904
- //$$ return event.getType();
- //#else
- //$$ return event.type;
- //#endif
- //$$ }
- //#endif
-
- //#if MC>=10800
- public static Entity getRenderViewEntity(MinecraftClient mc) {
- return mc.getCameraEntity();
- }
- //#else
- //$$ public static EntityLivingBase getRenderViewEntity(Minecraft mc) {
- //$$ return mc.renderViewEntity;
- //$$ }
- //#endif
-
- //#if MC>=10800
- public static void setRenderViewEntity(MinecraftClient mc, Entity entity) {
- mc.setCameraEntity(entity);
- }
- //#else
- //$$ public static void setRenderViewEntity(Minecraft mc, EntityLivingBase entity) {
- //$$ mc.renderViewEntity = entity;
- //$$ }
- //#endif
-
- public static Entity getRiddenEntity(Entity ridden) {
- //#if MC>=10904
- return ridden.getVehicle();
- //#else
- //$$ return ridden.ridingEntity;
- //#endif
- }
-
- public static Iterable loadedEntityList(ClientWorld world) {
- //#if MC>=11400
- return world.getEntities();
- //#else
- //$$ return world.loadedEntityList;
- //#endif
- }
-
- @SuppressWarnings("unchecked")
- public static Collection[] getEntityLists(WorldChunk chunk) {
- //#if MC>=10800
- return chunk.getEntitySectionArray();
- //#else
- //$$ return chunk.entityLists;
- //#endif
- }
-
- @SuppressWarnings("unchecked")
- //#if MC>=11500
- public static List cubeList(ModelPart modelRenderer) {
- return new ArrayList<>(); // FIXME 1.15
- }
- //#else
- //$$ public static List cubeList(ModelPart modelRenderer) {
- //$$ return modelRenderer.boxes;
- //$$ }
- //#endif
-
- @SuppressWarnings("unchecked")
- public static List playerEntities(World world) {
- //#if MC>=11400
- return (List) world.getPlayers();
- //#else
- //$$ return world.playerEntities;
- //#endif
- }
-
- public static boolean isOnMainThread() {
- //#if MC>=11400
- return getMinecraft().isOnThread();
- //#else
- //$$ return getMinecraft().isCallingFromMinecraftThread();
- //#endif
- }
-
- public static void scheduleOnMainThread(Runnable runnable) {
- //#if MC>=11400
- getMinecraft().send(runnable);
- //#else
- //$$ getMinecraft().addScheduledTask(runnable);
- //#endif
- }
-
- //#if MC>=11400
- public static @NonNull Window getWindow(MinecraftClient mc) {
- //#if MC>=11500
- return mc.getWindow();
- //#else
- //$$ return mc.window;
- //#endif
- }
- //#else
- //$$ public static @NonNull MainWindowAccessor getWindow(Minecraft mc) {
- //$$ return (MainWindowAccessor) mc;
- //$$ }
- //#endif
-
- //#if MC>=11400
- public static Window newScaledResolution(MinecraftClient mc) {
- return getWindow(mc);
- }
- //#else
- //$$ public static ScaledResolution newScaledResolution(Minecraft mc) {
- //#if MC>=10809
- //$$ return new ScaledResolution(mc);
- //#else
- //$$ return new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
- //#endif
+ //#if MC<10800
+ //$$ public static String tryReadString(PacketBuffer buffer, int max) {
+ //$$ try {
+ //$$ return buffer.readStringFromBuffer(max);
+ //$$ } catch (IOException e) {
+ //$$ throw new DecoderException(e);
+ //$$ }
//$$ }
//#endif
@@ -549,69 +200,6 @@ public class MCVer {
//#endif
}
- //#if MC>=10800
- public static BufferBuilder Tessellator_getBufferBuilder() {
- return Tessellator.getInstance().getBuffer();
- }
- //#else
- //$$ public static Tessellator Tessellator_getBufferBuilder() {
- //$$ return Tessellator.instance;
- //$$ }
- //#endif
-
- public static void BufferBuilder_beginPosCol(int mode) {
- Tessellator_getBufferBuilder().begin(
- mode
- //#if MC>=10809
- , VertexFormats.POSITION_COLOR
- //#endif
- );
- }
-
- public static void BufferBuilder_addPosCol(double x, double y, double z, int r, int g, int b, int a) {
- //#if MC>=10809
- Tessellator_getBufferBuilder().vertex(x, y, z).color(r, g, b, a).next();
- //#else
- //$$ Tessellator_getBufferBuilder().setColorRGBA(r, g, b, a);
- //$$ Tessellator_getBufferBuilder().addVertex(x, y, z);
- //#endif
- }
-
- public static void BufferBuilder_beginPosTex(int mode) {
- Tessellator_getBufferBuilder().begin(
- mode
- //#if MC>=10809
- , VertexFormats.POSITION_TEXTURE
- //#endif
- );
- }
-
- public static void BufferBuilder_addPosTex(double x, double y, double z, float u, float v) {
- //#if MC>=10809
- Tessellator_getBufferBuilder().vertex(x, y, z).texture(u, v).next();
- //#else
- //$$ Tessellator_getBufferBuilder().addVertexWithUV(x, y, z, u, v);
- //#endif
- }
-
- public static void BufferBuilder_beginPosTexCol(int mode) {
- Tessellator_getBufferBuilder().begin(
- mode
- //#if MC>=10809
- , VertexFormats.POSITION_TEXTURE_COLOR
- //#endif
- );
- }
-
- public static void BufferBuilder_addPosTexCol(double x, double y, double z, float u, float v, int r, int g, int b, int a) {
- //#if MC>=10809
- Tessellator_getBufferBuilder().vertex(x, y, z).texture(u, v).color(r, g, b, a).next();
- //#else
- //$$ Tessellator_getBufferBuilder().setColorRGBA(r, g, b, a);
- //$$ Tessellator_getBufferBuilder().addVertexWithUV(x, y, z, u, v);
- //#endif
- }
-
//#if MC>=10800
@SuppressWarnings("unchecked")
public static List getElements(VertexFormat vertexFormat) {
@@ -619,30 +207,16 @@ public class MCVer {
}
//#endif
- public static Tessellator Tessellator_getInstance() {
- //#if MC>=10800
- return Tessellator.getInstance();
- //#else
- //$$ return Tessellator.instance;
- //#endif
- }
-
- public static EntityRenderDispatcher getRenderManager() {
- //#if MC>=10800
- return getMinecraft().getEntityRenderDispatcher();
- //#else
- //$$ return RenderManager.instance;
- //#endif
- }
+ //#if MC<10800
+ //$$ public static RenderManager getRenderManager(@SuppressWarnings("unused") Minecraft mc) {
+ //$$ return RenderManager.instance;
+ //$$ }
+ //#endif
public static MinecraftClient getMinecraft() {
return MinecraftClient.getInstance();
}
- public static float getRenderPartialTicks() {
- return ((MinecraftAccessor) getMinecraft()).getTimer().tickDelta;
- }
-
public static void addButton(
Screen screen,
//#if MC>=11400
@@ -719,26 +293,6 @@ public class MCVer {
//#endif
}
- public static void bindTexture(Identifier texture) {
- //#if MC>=11500
- getMinecraft().getTextureManager().bindTexture(texture);
- //#else
- //#if MC>=11400
- //$$ getMinecraft().getTextureManager().bindTexture(texture);
- //#else
- //$$ getMinecraft().renderEngine.bindTexture(texture);
- //#endif
- //#endif
- }
-
- public static float cos(float val) {
- return MathHelper.cos(val);
- }
-
- public static float sin(float val) {
- return MathHelper.sin(val);
- }
-
//#if MC>=10904
// TODO: this can be inlined once https://github.com/SpongePowered/Mixin/issues/305 is fixed
public static Vec3d getPosition(Particle particle, float partialTicks) {
@@ -781,51 +335,20 @@ public class MCVer {
}
public static void openURL(URI url) {
- //#if MC>=11400
//#if MC>=11400
Util.getOperatingSystem().open(url);
//#else
- //$$ Util.getOSType().openURI(url);
- //#endif
- //#else
//$$ try {
//$$ Desktop.getDesktop().browse(url);
//$$ } catch (Throwable e) {
- //$$ LOGGER.error("Failed to open URL: ", e);
+ //$$ LogManager.getLogger().error("Failed to open URL: ", e);
//$$ }
//#endif
}
- public static String getBoundKey(KeyBinding keyBinding) {
- try {
- //#if MC>=11600
- return keyBinding.getBoundKeyLocalizedText().getString();
- //#else
- //#if MC>=11400
- //$$ return keyBinding.getLocalizedName();
- //#else
- //$$ return Keyboard.getKeyName(keyBinding.getKeyCode());
- //#endif
- //#endif
- } catch (ArrayIndexOutOfBoundsException e) {
- // Apparently windows likes to press strange keys, see https://www.replaymod.com/forum/thread/55
- return "Unknown";
- }
- }
-
- public static void playSound(Identifier sound) {
- getMinecraft().getSoundManager().play(
- //#if MC>=11400
- PositionedSoundInstance.master(new SoundEvent(sound), 1.0F)
- //#elseif MC>=10904
- //$$ PositionedSoundRecord.getMasterRecord(new SoundEvent(sound), 1.0F)
- //#elseif MC>=10800
- //$$ PositionedSoundRecord.create(sound, 1.0F)
- //#else
- //$$ PositionedSoundRecord.createPositionedSoundRecord(sound, 1.0F)
- //#endif
- );
- }
+ //#if MC<10900
+ //$$ public static class SoundEvent {}
+ //#endif
//#if MC>=11400
private static Boolean hasOptifine;
diff --git a/src/main/java/com/replaymod/core/versions/Patterns.java b/src/main/java/com/replaymod/core/versions/Patterns.java
new file mode 100644
index 00000000..65570e88
--- /dev/null
+++ b/src/main/java/com/replaymod/core/versions/Patterns.java
@@ -0,0 +1,376 @@
+package com.replaymod.core.versions;
+
+import com.replaymod.gradle.remap.Pattern;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.options.KeyBinding;
+import net.minecraft.client.texture.TextureManager;
+import net.minecraft.client.world.ClientWorld;
+import net.minecraft.client.render.Tessellator;
+import net.minecraft.client.render.entity.EntityRenderDispatcher;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.util.crash.CrashReportSection;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.network.PacketByteBuf;
+import net.minecraft.util.Identifier;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.WorldChunk;
+
+//#if MC>=11400
+import net.minecraft.client.gui.widget.AbstractButtonWidget;
+import net.minecraft.client.util.Window;
+//#else
+//$$ import net.minecraft.client.gui.GuiButton;
+//#endif
+
+//#if MC>=10904
+import net.minecraft.sound.SoundEvent;
+import net.minecraft.util.crash.CrashCallable;
+//#else
+//$$ import java.util.concurrent.Callable;
+//#endif
+
+//#if MC>=10809
+import net.minecraft.client.render.VertexFormats;
+//#else
+//#endif
+
+//#if MC>=10800
+import net.minecraft.client.render.BufferBuilder;
+//#else
+//$$ import net.minecraft.entity.EntityLivingBase;
+//#endif
+
+import java.util.Collection;
+import java.util.List;
+
+class Patterns {
+ //#if MC>=10904
+ @Pattern
+ private static void addCrashCallable(CrashReportSection category, String name, CrashCallable callable) {
+ //#if MC>=11200
+ category.add(name, callable);
+ //#else
+ //$$ category.setDetail(name, callable);
+ //#endif
+ }
+ //#else
+ //$$ @Pattern
+ //$$ private static void addCrashCallable(CrashReportCategory category, String name, Callable callable) {
+ //$$ category.addCrashSectionCallable(name, callable);
+ //$$ }
+ //#endif
+
+ @Pattern
+ private static double Entity_getX(Entity entity) {
+ //#if MC>=11500
+ return entity.getX();
+ //#else
+ //$$ return entity.x;
+ //#endif
+ }
+
+ @Pattern
+ private static double Entity_getY(Entity entity) {
+ //#if MC>=11500
+ return entity.getY();
+ //#else
+ //$$ return entity.y;
+ //#endif
+ }
+
+ @Pattern
+ private static double Entity_getZ(Entity entity) {
+ //#if MC>=11500
+ return entity.getZ();
+ //#else
+ //$$ return entity.z;
+ //#endif
+ }
+
+ @Pattern
+ private static void Entity_setPos(Entity entity, double x, double y, double z) {
+ //#if MC>=11500
+ entity.setPos(x, y, z);
+ //#else
+ //$$ { net.minecraft.entity.Entity self = entity; self.x = x; self.y = y; self.z = z; }
+ //#endif
+ }
+
+ //#if MC>=11400
+ @Pattern
+ private static void setWidth(AbstractButtonWidget button, int value) {
+ button.setWidth(value);
+ }
+
+ @Pattern
+ private static int getWidth(AbstractButtonWidget button) {
+ return button.getWidth();
+ }
+
+ @Pattern
+ private static int getHeight(AbstractButtonWidget button) {
+ //#if MC>=11600
+ return button.getHeight();
+ //#else
+ //$$ return ((com.replaymod.core.mixin.AbstractButtonWidgetAccessor) button).getHeight();
+ //#endif
+ }
+ //#else
+ //$$ @Pattern
+ //$$ private static void setWidth(GuiButton button, int value) {
+ //$$ button.width = value;
+ //$$ }
+ //$$
+ //$$ @Pattern
+ //$$ private static int getWidth(GuiButton button) {
+ //$$ return button.width;
+ //$$ }
+ //$$
+ //$$ @Pattern
+ //$$ private static int getHeight(GuiButton button) {
+ //$$ return button.height;
+ //$$ }
+ //#endif
+
+ @Pattern
+ private static String readString(PacketByteBuf buffer, int max) {
+ //#if MC>=10800
+ return buffer.readString(max);
+ //#else
+ //$$ return com.replaymod.core.versions.MCVer.tryReadString(buffer, max);
+ //#endif
+ }
+
+ @Pattern
+ //#if MC>=10800
+ private static Entity getRenderViewEntity(MinecraftClient mc) {
+ return mc.getCameraEntity();
+ }
+ //#else
+ //$$ private static EntityLivingBase getRenderViewEntity(Minecraft mc) {
+ //$$ return mc.renderViewEntity;
+ //$$ }
+ //#endif
+
+ @Pattern
+ //#if MC>=10800
+ private static void setRenderViewEntity(MinecraftClient mc, Entity entity) {
+ mc.setCameraEntity(entity);
+ }
+ //#else
+ //$$ private static void setRenderViewEntity(Minecraft mc, EntityLivingBase entity) {
+ //$$ mc.renderViewEntity = entity;
+ //$$ }
+ //#endif
+
+ @Pattern
+ private static Entity getVehicle(Entity passenger) {
+ //#if MC>=10904
+ return passenger.getVehicle();
+ //#else
+ //$$ return passenger.ridingEntity;
+ //#endif
+ }
+
+ @Pattern
+ private static Iterable loadedEntityList(ClientWorld world) {
+ //#if MC>=11400
+ return world.getEntities();
+ //#else
+ //#if MC>=10809
+ //$$ return world.loadedEntityList;
+ //#else
+ //$$ return ((java.util.List) world.loadedEntityList);
+ //#endif
+ //#endif
+ }
+
+ @Pattern
+ private static Collection[] getEntitySectionArray(WorldChunk chunk) {
+ //#if MC>=10800
+ return chunk.getEntitySectionArray();
+ //#else
+ //$$ return chunk.entityLists;
+ //#endif
+ }
+
+ @Pattern
+ private static List extends PlayerEntity> playerEntities(World world) {
+ //#if MC>=11400
+ return world.getPlayers();
+ //#elseif MC>=10809
+ //$$ return world.playerEntities;
+ //#else
+ //$$ return ((List extends net.minecraft.entity.player.EntityPlayer>) world.playerEntities);
+ //#endif
+ }
+
+ @Pattern
+ private static boolean isOnMainThread(MinecraftClient mc) {
+ //#if MC>=11400
+ return mc.isOnThread();
+ //#else
+ //$$ return mc.isCallingFromMinecraftThread();
+ //#endif
+ }
+
+ @Pattern
+ private static void scheduleOnMainThread(MinecraftClient mc, Runnable runnable) {
+ //#if MC>=11400
+ mc.send(runnable);
+ //#else
+ //$$ mc.addScheduledTask(runnable);
+ //#endif
+ }
+
+ @Pattern
+ private static Window getWindow(MinecraftClient mc) {
+ //#if MC>=11500
+ return mc.getWindow();
+ //#elseif MC>=11400
+ //$$ return mc.window;
+ //#else
+ //$$ return new com.replaymod.core.versions.Window(mc);
+ //#endif
+ }
+
+ @Pattern
+ private static BufferBuilder Tessellator_getBuffer(Tessellator tessellator) {
+ //#if MC>=10800
+ return tessellator.getBuffer();
+ //#else
+ //$$ return new BufferBuilder(tessellator);
+ //#endif
+ }
+
+ @Pattern
+ private static void BufferBuilder_beginPosCol(BufferBuilder buffer, int mode) {
+ //#if MC>=10809
+ buffer.begin(mode, VertexFormats.POSITION_COLOR);
+ //#else
+ //$$ buffer.startDrawing(mode /* POSITION_COLOR */);
+ //#endif
+ }
+
+ @Pattern
+ private static void BufferBuilder_addPosCol(BufferBuilder buffer, double x, double y, double z, int r, int g, int b, int a) {
+ //#if MC>=10809
+ buffer.vertex(x, y, z).color(r, g, b, a).next();
+ //#else
+ //$$ { WorldRenderer $buffer = buffer; double $x = x; double $y = y; double $z = z; $buffer.setColorRGBA(r, g, b, a); $buffer.addVertex($x, $y, $z); }
+ //#endif
+ }
+
+ @Pattern
+ private static void BufferBuilder_beginPosTex(BufferBuilder buffer, int mode) {
+ //#if MC>=10809
+ buffer.begin(mode, VertexFormats.POSITION_TEXTURE);
+ //#else
+ //$$ buffer.startDrawing(mode /* POSITION_TEXTURE */);
+ //#endif
+ }
+
+ @Pattern
+ private static void BufferBuilder_addPosTex(BufferBuilder buffer, double x, double y, double z, float u, float v) {
+ //#if MC>=10809
+ buffer.vertex(x, y, z).texture(u, v).next();
+ //#else
+ //$$ buffer.addVertexWithUV(x, y, z, u, v);
+ //#endif
+ }
+
+ @Pattern
+ private static void BufferBuilder_beginPosTexCol(BufferBuilder buffer, int mode) {
+ //#if MC>=10809
+ buffer.begin(mode, VertexFormats.POSITION_TEXTURE_COLOR);
+ //#else
+ //$$ buffer.startDrawing(mode /* POSITION_TEXTURE_COLOR */);
+ //#endif
+ }
+
+ @Pattern
+ private static void BufferBuilder_addPosTexCol(BufferBuilder buffer, double x, double y, double z, float u, float v, int r, int g, int b, int a) {
+ //#if MC>=10809
+ buffer.vertex(x, y, z).texture(u, v).color(r, g, b, a).next();
+ //#else
+ //$$ { WorldRenderer $buffer = buffer; double $x = x; double $y = y; double $z = z; float $u = u; float $v = v; $buffer.setColorRGBA(r, g, b, a); $buffer.addVertexWithUV($x, $y, $z, $u, $v); }
+ //#endif
+ }
+
+ @Pattern
+ private static Tessellator Tessellator_getInstance() {
+ //#if MC>=10800
+ return Tessellator.getInstance();
+ //#else
+ //$$ return Tessellator.instance;
+ //#endif
+ }
+
+ @Pattern
+ private static EntityRenderDispatcher getEntityRenderDispatcher(MinecraftClient mc) {
+ //#if MC>=10800
+ return mc.getEntityRenderDispatcher();
+ //#else
+ //$$ return com.replaymod.core.versions.MCVer.getRenderManager(mc);
+ //#endif
+ }
+
+ @Pattern
+ private static float getCameraYaw(EntityRenderDispatcher dispatcher) {
+ //#if MC>=11500
+ return dispatcher.camera.getYaw();
+ //#else
+ //$$ return dispatcher.cameraYaw;
+ //#endif
+ }
+
+ @Pattern
+ private static float getCameraPitch(EntityRenderDispatcher dispatcher) {
+ //#if MC>=11500
+ return dispatcher.camera.getPitch();
+ //#else
+ //$$ return dispatcher.cameraPitch;
+ //#endif
+ }
+
+ @Pattern
+ private static float getRenderPartialTicks(MinecraftClient mc) {
+ //#if MC>=10900
+ return mc.getTickDelta();
+ //#else
+ //$$ return ((com.replaymod.core.mixin.MinecraftAccessor) mc).getTimer().renderPartialTicks;
+ //#endif
+ }
+
+ @Pattern
+ private static TextureManager getTextureManager(MinecraftClient mc) {
+ //#if MC>=11400
+ return mc.getTextureManager();
+ //#else
+ //$$ return mc.renderEngine;
+ //#endif
+ }
+
+ @Pattern
+ private static String getBoundKeyName(KeyBinding keyBinding) {
+ //#if MC>=11600
+ return keyBinding.getBoundKeyLocalizedText().getString();
+ //#elseif MC>=11400
+ //$$ return keyBinding.getLocalizedName();
+ //#else
+ //$$ return org.lwjgl.input.Keyboard.getKeyName(keyBinding.getKeyCode());
+ //#endif
+ }
+
+ @Pattern
+ private static PositionedSoundInstance master(Identifier sound, float pitch) {
+ //#if MC>=10900
+ return PositionedSoundInstance.master(new SoundEvent(sound), pitch);
+ //#elseif MC>=10800
+ //$$ return PositionedSoundRecord.create(sound, pitch);
+ //#else
+ //$$ return PositionedSoundRecord.createPositionedSoundRecord(sound, pitch);
+ //#endif
+ }
+}
diff --git a/src/main/java/com/replaymod/core/versions/Window.java b/src/main/java/com/replaymod/core/versions/Window.java
new file mode 100644
index 00000000..fca4cd6c
--- /dev/null
+++ b/src/main/java/com/replaymod/core/versions/Window.java
@@ -0,0 +1 @@
+// 1.12.2 and below
diff --git a/src/main/java/com/replaymod/core/versions/forge/Patterns.java b/src/main/java/com/replaymod/core/versions/forge/Patterns.java
new file mode 100644
index 00000000..6b1e174a
--- /dev/null
+++ b/src/main/java/com/replaymod/core/versions/forge/Patterns.java
@@ -0,0 +1 @@
+// 1.12.2 and before
diff --git a/src/main/java/com/replaymod/extras/OpenEyeExtra.java b/src/main/java/com/replaymod/extras/OpenEyeExtra.java
index 9c7b6941..688c3e9b 100644
--- a/src/main/java/com/replaymod/extras/OpenEyeExtra.java
+++ b/src/main/java/com/replaymod/extras/OpenEyeExtra.java
@@ -28,20 +28,20 @@ import static com.replaymod.core.utils.Utils.SSL_SOCKET_FACTORY;
import static com.replaymod.extras.ReplayModExtras.LOGGER;
public class OpenEyeExtra implements Extra {
- private static final String DOWNLOAD_URL = "https://www.replaymod.com/dl/openeye/" + MCVer.getMinecraftVersion();
-
+ private URL url;
private ReplayMod mod;
@Override
public void register(ReplayMod mod) throws Exception {
this.mod = mod;
+ this.url = new URL("https://www.replaymod.com/dl/openeye/" + mod.getMinecraftVersion());
- boolean isOpenEyeLoaded = MCVer.isModLoaded("OpenEye");
+ boolean isOpenEyeLoaded = mod.isModLoaded("OpenEye");
if (!isOpenEyeLoaded && mod.getSettingsRegistry().get(Setting.ASK_FOR_OPEN_EYE)) {
new Thread(() -> {
try {
LOGGER.trace("Checking for OpenEye availability");
- HttpsURLConnection connection = (HttpsURLConnection) new URL(DOWNLOAD_URL).openConnection();
+ HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(SSL_SOCKET_FACTORY);
connection.setRequestMethod("HEAD");
connection.connect();
@@ -86,10 +86,10 @@ public class OpenEyeExtra implements Extra {
GuiPopup popup = new GuiPopup(OfferGui.this);
new Thread(() -> {
try {
- File targetFile = new File(mod.getMinecraft().runDirectory, "mods/" + MCVer.getMinecraftVersion() + "/OpenEye.jar");
+ File targetFile = new File(mod.getMinecraft().runDirectory, "mods/" + mod.getMinecraftVersion() + "/OpenEye.jar");
FileUtils.forceMkdir(targetFile.getParentFile());
- HttpsURLConnection connection = (HttpsURLConnection) new URL(DOWNLOAD_URL).openConnection();
+ HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(SSL_SOCKET_FACTORY);
ReadableByteChannel in = Channels.newChannel(connection.getInputStream());
FileChannel out = new FileOutputStream(targetFile).getChannel();
diff --git a/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java b/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java
index 54e8d01f..0f38c79d 100644
--- a/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java
+++ b/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java
@@ -9,10 +9,9 @@ import com.replaymod.render.rendering.Pipelines;
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.util.Window;
import net.minecraft.util.crash.CrashReport;
-import static com.replaymod.core.versions.MCVer.getMainWindowSize;
-import static com.replaymod.core.versions.MCVer.getRenderPartialTicks;
import static com.replaymod.core.versions.MCVer.resizeMainWindow;
public class ScreenshotRenderer implements RenderInfo {
@@ -29,7 +28,9 @@ public class ScreenshotRenderer implements RenderInfo {
public boolean renderScreenshot() throws Throwable {
try {
- Dimension sizeBefore = getMainWindowSize(mc);
+ Window window = mc.getWindow();
+ int widthBefore = window.getFramebufferWidth();
+ int heightBefore = window.getFramebufferHeight();
boolean hideGUIBefore = mc.options.hudHidden;
mc.options.hudHidden = true;
@@ -46,7 +47,7 @@ public class ScreenshotRenderer implements RenderInfo {
clrg.uninstall();
mc.options.hudHidden = hideGUIBefore;
- resizeMainWindow(mc, sizeBefore.getWidth(), sizeBefore.getHeight());
+ resizeMainWindow(mc, widthBefore, heightBefore);
return true;
} catch (OutOfMemoryError e) {
e.printStackTrace();
@@ -75,7 +76,7 @@ public class ScreenshotRenderer implements RenderInfo {
@Override
public float updateForNextFrame() {
framesDone++;
- return getRenderPartialTicks();
+ return mc.getTickDelta();
}
@Override
diff --git a/src/main/java/com/replaymod/extras/playeroverview/PlayerOverview.java b/src/main/java/com/replaymod/extras/playeroverview/PlayerOverview.java
index 6152e5e3..d5ecb0be 100644
--- a/src/main/java/com/replaymod/extras/playeroverview/PlayerOverview.java
+++ b/src/main/java/com/replaymod/extras/playeroverview/PlayerOverview.java
@@ -117,7 +117,7 @@ public class PlayerOverview extends EventRegistrations implements Extra {
{ on(PreRenderHandCallback.EVENT, this::shouldHideHand); }
private boolean shouldHideHand() {
- Entity view = getRenderViewEntity(module.getCore().getMinecraft());
+ Entity view = module.getCore().getMinecraft().getCameraEntity();
return view != null && isHidden(view.getUuid());
}
diff --git a/src/main/java/com/replaymod/gradle/remap/Pattern.java b/src/main/java/com/replaymod/gradle/remap/Pattern.java
new file mode 100644
index 00000000..c57f51a3
--- /dev/null
+++ b/src/main/java/com/replaymod/gradle/remap/Pattern.java
@@ -0,0 +1,11 @@
+package com.replaymod.gradle.remap;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.METHOD)
+public @interface Pattern {
+}
diff --git a/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java b/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java
index 8ed65093..06783108 100644
--- a/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java
+++ b/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java
@@ -13,7 +13,6 @@ import net.minecraft.client.util.math.MatrixStack;
import static com.replaymod.core.ReplayMod.TEXTURE;
import static com.replaymod.core.ReplayMod.TEXTURE_SIZE;
-import static com.replaymod.core.versions.MCVer.*;
import static com.mojang.blaze3d.platform.GlStateManager.*;
/**
@@ -44,7 +43,7 @@ public class GuiRecordingOverlay extends EventRegistrations {
stack,
//#endif
text.toUpperCase(), 30, 18 - (fontRenderer.fontHeight / 2), 0xffffffff);
- bindTexture(TEXTURE);
+ mc.getTextureManager().bindTexture(TEXTURE);
enableAlphaTest();
GuiRenderer renderer = new MinecraftGuiRenderer(stack);
renderer.drawTexturedRect(10, 10, 58, 20, 16, 16, 16, 16, TEXTURE_SIZE, TEXTURE_SIZE);
diff --git a/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java b/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java
index 4c638f50..0e90c7eb 100644
--- a/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java
+++ b/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java
@@ -138,7 +138,7 @@ public class ConnectionEventHandler {
metaData.setCustomServerName(serverName);
metaData.setGenerator("ReplayMod v" + ReplayMod.instance.getVersion());
metaData.setDate(System.currentTimeMillis());
- metaData.setMcVersion(MCVer.getMinecraftVersion());
+ metaData.setMcVersion(ReplayMod.instance.getMinecraftVersion());
packetListener = new PacketListener(core, outputPath, replayFile, metaData);
Channel channel = ((NetworkManagerAccessor) networkManager).getChannel();
channel.pipeline().addBefore(packetHandlerKey, "replay_recorder", packetListener);
diff --git a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java
index 40c6eefe..a04cbee6 100644
--- a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java
+++ b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java
@@ -7,6 +7,7 @@ import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
+import net.minecraft.entity.Entity;
import net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket;
import net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket;
import net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket;
@@ -146,9 +147,9 @@ public class RecordingEventHandler extends EventRegistrations {
boolean force = false;
if(lastX == null || lastY == null || lastZ == null) {
force = true;
- lastX = Entity_getX(player);
- lastY = Entity_getY(player);
- lastZ = Entity_getZ(player);
+ lastX = player.getX();
+ lastY = player.getY();
+ lastZ = player.getZ();
}
ticksSinceLastCorrection++;
@@ -157,13 +158,13 @@ public class RecordingEventHandler extends EventRegistrations {
force = true;
}
- double dx = Entity_getX(player) - lastX;
- double dy = Entity_getY(player) - lastY;
- double dz = Entity_getZ(player) - lastZ;
+ double dx = player.getX() - lastX;
+ double dy = player.getY() - lastY;
+ double dz = player.getZ() - lastZ;
- lastX = Entity_getX(player);
- lastY = Entity_getY(player);
- lastZ = Entity_getZ(player);
+ lastX = player.getX();
+ lastY = player.getY();
+ lastZ = player.getZ();
Packet packet;
if (force || Math.abs(dx) > 8.0 || Math.abs(dy) > 8.0 || Math.abs(dz) > 8.0) {
@@ -309,18 +310,16 @@ public class RecordingEventHandler extends EventRegistrations {
//Leaving Ride
- if((!player.isRiding() && lastRiding != -1) ||
- (player.isRiding() && lastRiding != getRiddenEntity(player).getEntityId())) {
- if(!player.isRiding()) {
- lastRiding = -1;
- } else {
- lastRiding = getRiddenEntity(player).getEntityId();
- }
+ Entity vehicle = player.getVehicle();
+ int vehicleId = vehicle == null ? -1 : vehicle.getEntityId();
+ if (lastRiding != vehicleId) {
+ lastRiding = vehicleId;
packetListener.save(new EntityAttachS2CPacket(
//#if MC<10904
//$$ 0,
//#endif
- player, getRiddenEntity(player)
+ player,
+ vehicle
));
}
diff --git a/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java b/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java
index 2212424c..8c1841fc 100644
--- a/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java
+++ b/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java
@@ -57,7 +57,7 @@ public abstract class MixinNetHandlerPlayClient {
//$$ @Inject(method = "handlePlayerListItem", at=@At("HEAD"))
//#endif
public void recordOwnJoin(PlayerListS2CPacket packet, CallbackInfo ci) {
- if (!MCVer.isOnMainThread()) return;
+ if (!mcStatic.isOnThread()) return;
if (mcStatic.player == null) return;
RecordingEventHandler handler = getRecordingEventHandler();
diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java
index 83f573cd..78dd21ec 100644
--- a/src/main/java/com/replaymod/recording/packet/PacketListener.java
+++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java
@@ -163,8 +163,8 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
// to happen on the main thread so we can guarantee correct ordering of inbound and inject packets.
// Otherwise, injected packets may end up further down the packet stream than they were supposed to and other
// inbound packets which may rely on the injected packet would behave incorrectly when played back.
- if (!MCVer.isOnMainThread()) {
- MCVer.scheduleOnMainThread(() -> save(packet));
+ if (!mc.isOnThread()) {
+ mc.send(() -> save(packet));
return;
}
try {
@@ -488,15 +488,15 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
}
public void addMarker(String name, int timestamp) {
- Entity view = getRenderViewEntity(mc);
+ Entity view = mc.getCameraEntity();
Marker marker = new Marker();
marker.setName(name);
marker.setTime(timestamp);
if (view != null) {
- marker.setX(Entity_getX(view));
- marker.setY(Entity_getY(view));
- marker.setZ(Entity_getZ(view));
+ marker.setX(view.getX());
+ marker.setY(view.getY());
+ marker.setZ(view.getZ());
marker.setYaw(view.yaw);
marker.setPitch(view.pitch);
}
diff --git a/src/main/java/com/replaymod/render/FFmpegWriter.java b/src/main/java/com/replaymod/render/FFmpegWriter.java
index c0067e3a..f4e1381c 100644
--- a/src/main/java/com/replaymod/render/FFmpegWriter.java
+++ b/src/main/java/com/replaymod/render/FFmpegWriter.java
@@ -126,8 +126,8 @@ public class FFmpegWriter implements FrameConsumer {
}
CrashReport report = CrashReport.create(t, "Exporting frame");
CrashReportSection exportDetails = report.addElement("Export details");
- MCVer.addDetail(exportDetails, "Export command", settings::getExportCommand);
- MCVer.addDetail(exportDetails, "Export args", commandArgs::toString);
+ exportDetails.add("Export command", settings::getExportCommand);
+ exportDetails.add("Export args", commandArgs::toString);
MCVer.getMinecraft().setCrashReport(report);
} finally {
channels.values().forEach(it -> ByteBufferPool.release(it.getByteBuffer()));
diff --git a/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java b/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java
index 1047a78b..d9db73ee 100644
--- a/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java
+++ b/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java
@@ -1,6 +1,5 @@
package com.replaymod.render.blend;
-import com.replaymod.core.versions.MCVer;
import com.replaymod.render.capturer.RenderInfo;
import com.replaymod.render.capturer.WorldRenderer;
import com.replaymod.render.frame.BitmapFrame;
@@ -8,6 +7,7 @@ import com.replaymod.render.rendering.Channel;
import com.replaymod.render.rendering.FrameCapturer;
import com.replaymod.render.utils.ByteBufferPool;
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
+import net.minecraft.client.MinecraftClient;
import java.io.IOException;
import java.util.Collections;
@@ -37,7 +37,7 @@ public class BlendFrameCapturer implements FrameCapturer {
renderInfo.updateForNextFrame();
BlendState.getState().preFrame(framesDone);
- worldRenderer.renderWorld(MCVer.getRenderPartialTicks(), null);
+ worldRenderer.renderWorld(MinecraftClient.getInstance().getTickDelta(), null);
BlendState.getState().postFrame(framesDone);
BitmapFrame frame = new BitmapFrame(framesDone++, new Dimension(0, 0), 0, ByteBufferPool.allocate(0));
diff --git a/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java b/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java
index ebf38b75..49dba018 100644
--- a/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java
+++ b/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java
@@ -9,6 +9,7 @@ import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormatElement;
+import net.minecraft.client.render.VertexFormats;
import org.lwjgl.opengl.GL11;
//#if MC>=11500
@@ -82,7 +83,7 @@ public class BlendMeshBuilder
if (!wellBehaved) {
// In case the calling code finishes with Tessellator.getInstance().draw()
- BufferBuilder_beginPosTexCol(mode);
+ Tessellator.getInstance().getBuffer().begin(mode, VertexFormats.POSITION_TEXTURE_COLOR);
}
//#if MC>=10809
diff --git a/src/main/java/com/replaymod/render/blend/BlendState.java b/src/main/java/com/replaymod/render/blend/BlendState.java
index 0b3333b7..0ef4a29b 100644
--- a/src/main/java/com/replaymod/render/blend/BlendState.java
+++ b/src/main/java/com/replaymod/render/blend/BlendState.java
@@ -88,7 +88,7 @@ public class BlendState implements Exporter {
} catch (IOException e) {
CrashReport report = CrashReport.create(e, "Setup of blend exporter");
CrashReportSection category = report.addElement("Exporter");
- addDetail(category, "Exporter", exporter::toString);
+ category.add("Exporter", exporter::toString);
throw new CrashException(report);
}
}
@@ -102,7 +102,7 @@ public class BlendState implements Exporter {
} catch (IOException e) {
CrashReport report = CrashReport.create(e, "Tear down of blend exporter");
CrashReportSection category = report.addElement("Exporter");
- addDetail(category, "Exporter", exporter::toString);
+ category.add("Exporter", exporter::toString);
throw new CrashException(report);
}
}
@@ -139,8 +139,8 @@ public class BlendState implements Exporter {
} catch (IOException e) {
CrashReport report = CrashReport.create(e, "Pre frame of blend exporter");
CrashReportSection category = report.addElement("Exporter");
- addDetail(category, "Exporter", exporter::toString);
- addDetail(category, "Frame", () -> String.valueOf(frame));
+ category.add("Exporter", exporter::toString);
+ category.add("Frame", () -> String.valueOf(frame));
throw new CrashException(report);
}
}
@@ -154,8 +154,8 @@ public class BlendState implements Exporter {
} catch (IOException e) {
CrashReport report = CrashReport.create(e, "Post frame of blend exporter");
CrashReportSection category = report.addElement("Exporter");
- addDetail(category, "Exporter", exporter::toString);
- addDetail(category, "Frame", () -> String.valueOf(frame));
+ category.add("Exporter", exporter::toString);
+ category.add("Frame", () -> String.valueOf(frame));
throw new CrashException(report);
}
}
diff --git a/src/main/java/com/replaymod/render/blend/exporters/ModelRendererExporter.java b/src/main/java/com/replaymod/render/blend/exporters/ModelRendererExporter.java
index 909e7c6e..2320f236 100644
--- a/src/main/java/com/replaymod/render/blend/exporters/ModelRendererExporter.java
+++ b/src/main/java/com/replaymod/render/blend/exporters/ModelRendererExporter.java
@@ -21,7 +21,6 @@ import net.minecraft.client.model.ModelPart;
import java.io.IOException;
-import static com.replaymod.core.versions.MCVer.*;
import static com.replaymod.render.blend.Util.isGlTextureMatrixIdentity;
public class ModelRendererExporter implements Exporter {
@@ -86,11 +85,13 @@ public class ModelRendererExporter implements Exporter {
DMesh mesh = new DMesh();
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
//#if MC>=11500
- for (Cuboid box : cubeList(model)) {
- // FIXME 1.15
- }
+ // FIXME 1.15
+ //#elseif MC>=10809
+ //$$ for (Box box : model.boxes) {
+ //$$ box.render(builder, scale);
+ //$$ }
//#else
- //$$ for (Box box : cubeList(model)) {
+ //$$ for (ModelBox box : (java.util.List) model.cubeList) {
//$$ box.render(builder, scale);
//$$ }
//#endif
diff --git a/src/main/java/com/replaymod/render/gui/GuiExportFailed.java b/src/main/java/com/replaymod/render/gui/GuiExportFailed.java
index b3a8a702..de5e9c0e 100644
--- a/src/main/java/com/replaymod/render/gui/GuiExportFailed.java
+++ b/src/main/java/com/replaymod/render/gui/GuiExportFailed.java
@@ -19,7 +19,6 @@ import net.minecraft.util.crash.CrashException;
import java.util.Arrays;
import java.util.function.Consumer;
-import static com.replaymod.core.versions.MCVer.addDetail;
import static com.replaymod.render.ReplayModRender.LOGGER;
public class GuiExportFailed extends GuiScreen {
@@ -33,8 +32,8 @@ public class GuiExportFailed extends GuiScreen {
// If they haven't, then this is probably a faulty ffmpeg installation and there's nothing we can do
CrashReport crashReport = CrashReport.create(e, "Exporting video");
CrashReportSection details = crashReport.addElement("Export details");
- addDetail(details, "Settings", settings::toString);
- addDetail(details, "FFmpeg log", e::getLog);
+ details.add("Settings", settings::toString);
+ details.add("FFmpeg log", e::getLog);
throw new CrashException(crashReport);
} else {
// If they have, ask them whether it was intentional
diff --git a/src/main/java/com/replaymod/render/mixin/MixinCamera.java b/src/main/java/com/replaymod/render/mixin/MixinCamera.java
index 63044901..126c3278 100644
--- a/src/main/java/com/replaymod/render/mixin/MixinCamera.java
+++ b/src/main/java/com/replaymod/render/mixin/MixinCamera.java
@@ -59,7 +59,7 @@ public abstract class MixinCamera {
) {
if (getHandler() != null) {
//#if MC<11400
- //$$ Entity entity = getRenderViewEntity(getMinecraft());
+ //$$ Entity entity = getMinecraft().getRenderViewEntity();
//#endif
orgYaw = entity.yaw;
orgPitch = entity.pitch;
@@ -79,7 +79,7 @@ public abstract class MixinCamera {
//#endif
if (getHandler() != null) {
//#if MC<11400
- //$$ Entity entity = getRenderViewEntity(getMinecraft());
+ //$$ Entity entity = getMinecraft().getRenderViewEntity();
//#endif
RenderSettings settings = getHandler().getSettings();
if (settings.isStabilizeYaw()) {
@@ -117,7 +117,7 @@ public abstract class MixinCamera {
) {
if (getHandler() != null) {
//#if MC<11400
- //$$ Entity entity = getRenderViewEntity(getMinecraft());
+ //$$ Entity entity = getMinecraft().getRenderViewEntity();
//#endif
entity.yaw = orgYaw;
entity.pitch = orgPitch;
diff --git a/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java b/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java
index b82e5be6..ddf431ea 100644
--- a/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java
+++ b/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java
@@ -117,7 +117,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
}
//#else
//$$ } else {
- //$$ Entity currentEntity = getRenderViewEntity(MCVer.getMinecraft());
+ //$$ Entity currentEntity = this.mc.getRenderViewEntity();
//$$ if (currentEntity instanceof EntityPlayer && !(currentEntity instanceof CameraEntity)) {
//$$ if (renderPass == 2) { // Need to update render pass
//$$ renderPass = replayModRender_handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
diff --git a/src/main/java/com/replaymod/render/rendering/Pipeline.java b/src/main/java/com/replaymod/render/rendering/Pipeline.java
index 23c22895..cf7f057d 100644
--- a/src/main/java/com/replaymod/render/rendering/Pipeline.java
+++ b/src/main/java/com/replaymod/render/rendering/Pipeline.java
@@ -6,14 +6,9 @@ import com.replaymod.render.capturer.WorldRenderer;
import com.replaymod.render.frame.BitmapFrame;
import com.replaymod.render.processor.GlToAbsoluteDepthProcessor;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.util.crash.CrashReport;
import net.minecraft.util.crash.CrashException;
-
-//#if MC>=11400
+import net.minecraft.util.crash.CrashReport;
import org.lwjgl.glfw.GLFW;
-//#else
-//$$ import org.lwjgl.opengl.Display;
-//#endif
import java.util.HashMap;
import java.util.Map;
@@ -23,9 +18,6 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import static com.replaymod.core.versions.MCVer.getMinecraft;
-//#if MC>=11400
-import static com.replaymod.core.versions.MCVer.getWindow;
-//#endif
public class Pipeline implements Runnable {
@@ -72,11 +64,7 @@ public class Pipeline implements Runnable {
MinecraftClient mc = MCVer.getMinecraft();
while (!capturer.isDone() && !abort) {
- //#if MC>=11400
- if (GLFW.glfwWindowShouldClose(getWindow(mc).getHandle()) || ((MinecraftAccessor) mc).getCrashReporter() != null) {
- //#else
- //$$ if (Display.isCloseRequested() || ((MinecraftAccessor) mc).getCrashReporter() != null) {
- //#endif
+ if (GLFW.glfwWindowShouldClose(mc.getWindow().getHandle()) || ((MinecraftAccessor) mc).getCrashReporter() != null) {
processService.shutdown();
return;
}
diff --git a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java
index a265e245..4db4a2fc 100644
--- a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java
+++ b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java
@@ -30,10 +30,14 @@ import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
import net.minecraft.client.MinecraftClient;
import com.mojang.blaze3d.platform.GLX;
import net.minecraft.client.gl.Framebuffer;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.client.util.Window;
+import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
import net.minecraft.util.crash.CrashException;
import net.minecraft.sound.SoundCategory;
import net.minecraft.client.render.RenderTickCounter;
+import org.lwjgl.glfw.GLFW;
//#if MC>=11600
import net.minecraft.client.util.math.MatrixStack;
@@ -41,20 +45,16 @@ import net.minecraft.client.util.math.MatrixStack;
//#if MC>=11500
import com.mojang.blaze3d.systems.RenderSystem;
-import net.minecraft.client.util.Window;
import org.lwjgl.opengl.GL11;
//#endif
//#if MC>=11400
import com.replaymod.render.EXRWriter;
import net.minecraft.client.gui.screen.Screen;
-import org.lwjgl.glfw.GLFW;
import java.util.concurrent.CompletableFuture;
//#else
-//$$ import net.minecraft.client.gui.ScaledResolution;
//$$ import org.lwjgl.input.Mouse;
//$$ import org.lwjgl.opengl.Display;
-//$$ import static com.replaymod.core.versions.MCVer.newScaledResolution;
//#endif
//#if MC>=10800
@@ -80,6 +80,7 @@ import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
public class VideoRenderer implements RenderInfo {
+ private static final Identifier SOUND_RENDER_SUCCESS = new Identifier("replaymod", "render_success");
private final MinecraftClient mc = MCVer.getMinecraft();
private final RenderSettings settings;
private final ReplayHandler replayHandler;
@@ -232,7 +233,7 @@ public class VideoRenderer implements RenderInfo {
@Override
public float updateForNextFrame() {
// because the jGui lib uses Minecraft's displayWidth and displayHeight values, update these temporarily
- MainWindowAccessor acc = (MainWindowAccessor) (Object) getWindow(mc);
+ MainWindowAccessor acc = (MainWindowAccessor) (Object) mc.getWindow();
int displayWidthBefore = acc.getFramebufferWidth();
int displayHeightBefore = acc.getFramebufferHeight();
acc.setFramebufferWidth(displayWidth);
@@ -351,10 +352,7 @@ public class VideoRenderer implements RenderInfo {
updateDisplaySize();
- //#if MC<=10809
- //$$ ScaledResolution scaled = newScaledResolution(mc);
- //$$ gui.toMinecraft().setWorldAndResolution(mc, scaled.getScaledWidth(), scaled.getScaledHeight());
- //#endif
+ gui.toMinecraft().init(mc, mc.getWindow().getScaledWidth(), mc.getWindow().getScaledHeight());
forceChunkLoadingHook = new ForceChunkLoadingHook(mc.worldRenderer);
@@ -401,7 +399,7 @@ public class VideoRenderer implements RenderInfo {
}
}
- MCVer.playSound(new Identifier("replaymod", "render_success"));
+ mc.getSoundManager().play(PositionedSoundInstance.master(new SoundEvent(SOUND_RENDER_SUCCESS), 1));
try {
if (!hasFailed() && ffmpegWriter != null) {
@@ -464,12 +462,9 @@ public class VideoRenderer implements RenderInfo {
}
public boolean drawGui() {
+ Window window = mc.getWindow();
do {
- //#if MC>=11400
- if (GLFW.glfwWindowShouldClose(getWindow(mc).getHandle()) || ((MinecraftAccessor) mc).getCrashReporter() != null) {
- //#else
- //$$ if (Display.isCloseRequested() || ((MinecraftAccessor) mc).getCrashReporter() != null) {
- //#endif
+ if (GLFW.glfwWindowShouldClose(window.getHandle()) || ((MinecraftAccessor) mc).getCrashReporter() != null) {
return false;
}
@@ -497,7 +492,6 @@ public class VideoRenderer implements RenderInfo {
guiFramebuffer.beginWrite(true);
//#if MC>=11500
- Window window = getWindow(mc);
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
RenderSystem.matrixMode(GL11.GL_PROJECTION);
RenderSystem.loadIdentity();
@@ -507,7 +501,7 @@ public class VideoRenderer implements RenderInfo {
RenderSystem.translatef(0, 0, -2000);
//#else
//#if MC>=11400
- //$$ getWindow(mc).method_4493(
+ //$$ window.method_4493(
//#if MC>=11400
//$$ false
//#endif
@@ -517,12 +511,7 @@ public class VideoRenderer implements RenderInfo {
//#endif
//#endif
- //#if MC>=11400
- gui.toMinecraft().init(mc, getWindow(mc).getScaledWidth(), getWindow(mc).getScaledHeight());
- //#else
- //$$ ScaledResolution scaled = newScaledResolution(mc);
- //$$ gui.toMinecraft().setWorldAndResolution(mc, scaled.getScaledWidth(), scaled.getScaledHeight());
- //#endif
+ gui.toMinecraft().init(mc, window.getScaledWidth(), window.getScaledHeight());
// Events are polled on 1.13+ in mainWindow.update which is called later
//#if MC<11400
@@ -540,8 +529,8 @@ public class VideoRenderer implements RenderInfo {
//#endif
//#if MC>=11400
- int mouseX = (int) mc.mouse.getX() * getWindow(mc).getScaledWidth() / displayWidth;
- int mouseY = (int) mc.mouse.getY() * getWindow(mc).getScaledHeight() / displayHeight;
+ int mouseX = (int) mc.mouse.getX() * window.getScaledWidth() / displayWidth;
+ int mouseY = (int) mc.mouse.getY() * window.getScaledHeight() / displayHeight;
if (mc.overlay != null) {
Screen orgScreen = mc.currentScreen;
@@ -564,8 +553,8 @@ public class VideoRenderer implements RenderInfo {
mouseX, mouseY, 0);
}
//#else
- //$$ int mouseX = Mouse.getX() * scaled.getScaledWidth() / mc.displayWidth;
- //$$ int mouseY = scaled.getScaledHeight() - Mouse.getY() * scaled.getScaledHeight() / mc.displayHeight - 1;
+ //$$ int mouseX = Mouse.getX() * window.getScaledWidth() / mc.displayWidth;
+ //$$ int mouseY = window.getScaledHeight() - Mouse.getY() * window.getScaledHeight() / mc.displayHeight - 1;
//$$
//$$ gui.toMinecraft().updateScreen();
//$$ gui.toMinecraft().drawScreen(mouseX, mouseY, 0);
@@ -578,10 +567,10 @@ public class VideoRenderer implements RenderInfo {
popMatrix();
//#if MC>=11500
- getWindow(mc).swapBuffers();
+ window.swapBuffers();
//#else
//#if MC>=11400
- //$$ getWindow(mc).setFullscreen(false);
+ //$$ window.setFullscreen(false);
//#else
//$$ // if not in high performance mode, update the gui size if screen size changed
//$$ // otherwise just swap the progress gui to screen
@@ -611,13 +600,8 @@ public class VideoRenderer implements RenderInfo {
}
private boolean displaySizeChanged() {
- //#if MC>=11400
- int realWidth = getWindow(mc).getWidth();
- int realHeight = getWindow(mc).getHeight();
- //#else
- //$$ int realWidth = Display.getWidth();
- //$$ int realHeight = Display.getHeight();
- //#endif
+ int realWidth = mc.getWindow().getWidth();
+ int realHeight = mc.getWindow().getHeight();
if (realWidth == 0 || realHeight == 0) {
// These can be zero on Windows if minimized.
// Creating zero-sized framebuffers however will throw an error, so we never want to switch to zero values.
@@ -627,13 +611,8 @@ public class VideoRenderer implements RenderInfo {
}
private void updateDisplaySize() {
- //#if MC>=11400
- displayWidth = getWindow(mc).getWidth();
- displayHeight = getWindow(mc).getHeight();
- //#else
- //$$ displayWidth = Display.getWidth();
- //$$ displayHeight = Display.getHeight();
- //#endif
+ displayWidth = mc.getWindow().getWidth();
+ displayHeight = mc.getWindow().getHeight();
}
public int getFramesDone() {
diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java
index bb760016..99b4c31a 100644
--- a/src/main/java/com/replaymod/replay/FullReplaySender.java
+++ b/src/main/java/com/replaymod/replay/FullReplaySender.java
@@ -367,7 +367,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
// To counteract this, we need to manually update it's position if it hasn't been added
// to any chunk yet.
if (mc.world != null) {
- for (PlayerEntity playerEntity : playerEntities(mc.world)) {
+ for (PlayerEntity playerEntity : mc.world.getPlayers()) {
if (!playerEntity.updateNeeded && playerEntity instanceof OtherClientPlayerEntity) {
playerEntity.tickMovement();
}
@@ -417,7 +417,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
// Note: Not sure if it's still required but there's this really handy method anyway
world.finishRemovingEntities();
//#else
- //$$ Iterator iter = loadedEntityList(world).iterator();
+ //$$ Iterator iter = world.loadedEntityList.iterator();
//$$ while (iter.hasNext()) {
//$$ Entity entity = iter.next();
//$$ if (entity.isDead) {
@@ -455,10 +455,10 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
}
}
};
- if (MCVer.isOnMainThread()) {
+ if (mc.isOnThread()) {
doLightUpdates.run();
} else {
- MCVer.scheduleOnMainThread(doLightUpdates);
+ mc.send(doLightUpdates);
}
}
//#endif
@@ -742,8 +742,8 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
//#endif
if(cent != null) {
- if(!allowMovement && !((Math.abs(Entity_getX(cent) - ppl.getX()) > TP_DISTANCE_LIMIT) ||
- (Math.abs(Entity_getZ(cent) - ppl.getZ()) > TP_DISTANCE_LIMIT))) {
+ if(!allowMovement && !((Math.abs(cent.getX() - ppl.getX()) > TP_DISTANCE_LIMIT) ||
+ (Math.abs(cent.getZ() - ppl.getZ()) > TP_DISTANCE_LIMIT))) {
return null;
} else {
allowMovement = false;
@@ -754,7 +754,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
@Override
@SuppressWarnings("unchecked")
public void run() {
- if (mc.world == null || !isOnMainThread()) {
+ if (mc.world == null || !mc.isOnThread()) {
ReplayMod.instance.runLater(this);
return;
}
@@ -1171,7 +1171,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
//#endif
List entitiesInChunk = new ArrayList<>();
// Gather all entities in that chunk
- for (Collection entityList : getEntityLists(chunk)) {
+ for (Collection entityList : chunk.getEntitySectionArray()) {
entitiesInChunk.addAll(entityList);
}
for (Entity entity : entitiesInChunk) {
@@ -1189,9 +1189,9 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
// Check whether the entity has left the chunk
//#if MC>=11404
- int chunkX = MathHelper.floor(Entity_getX(entity) / 16);
- int chunkY = MathHelper.floor(Entity_getY(entity) / 16);
- int chunkZ = MathHelper.floor(Entity_getZ(entity) / 16);
+ int chunkX = MathHelper.floor(entity.getX() / 16);
+ int chunkY = MathHelper.floor(entity.getY() / 16);
+ int chunkZ = MathHelper.floor(entity.getZ() / 16);
if (entity.chunkX != chunkX || entity.chunkY != chunkY || entity.chunkZ != chunkZ) {
if (entity.updateNeeded) {
// Entity has left the chunk
diff --git a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java
index c438144b..5345c2bc 100644
--- a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java
+++ b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java
@@ -3,7 +3,6 @@ package com.replaymod.replay;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.replaymod.core.ReplayMod;
-import com.replaymod.core.versions.MCVer;
import de.johni0702.minecraft.gui.versions.Image;
import net.minecraft.client.MinecraftClient;
import com.mojang.blaze3d.platform.GlStateManager;
@@ -13,10 +12,6 @@ import net.minecraft.client.util.ScreenshotUtils;
import net.minecraft.client.util.math.MatrixStack;
//#endif
-//#if MC>=11400
-import static com.replaymod.core.versions.MCVer.getWindow;
-//#endif
-
//#if MC<11400
//$$ import com.google.common.io.Files;
//$$ import org.apache.commons.io.FileUtils;
@@ -55,11 +50,8 @@ public class NoGuiScreenshot {
return;
}
- //#if MC>=11400
- int frameWidth = getWindow(mc).getFramebufferWidth(), frameHeight = getWindow(mc).getFramebufferHeight();
- //#else
- //$$ int frameWidth = mc.displayWidth, frameHeight = mc.displayHeight;
- //#endif
+ int frameWidth = mc.getWindow().getFramebufferWidth();
+ int frameHeight = mc.getWindow().getFramebufferHeight();
final boolean guiHidden = mc.options.hudHidden;
try {
@@ -76,16 +68,17 @@ public class NoGuiScreenshot {
mc.getFramebuffer().beginWrite(true);
GlStateManager.enableTexture();
+ float tickDelta = mc.getTickDelta();
//#if MC>=11500
- mc.gameRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime(), new MatrixStack());
+ mc.gameRenderer.renderWorld(tickDelta, System.nanoTime(), new MatrixStack());
//#else
//#if MC>=11400
- //$$ mc.gameRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime());
+ //$$ mc.gameRenderer.renderWorld(tickDelta, System.nanoTime());
//#else
//#if MC>=10809
- //$$ mc.entityRenderer.updateCameraAndRender(MCVer.getRenderPartialTicks(), System.nanoTime());
+ //$$ mc.entityRenderer.updateCameraAndRender(tickDelta, System.nanoTime());
//#else
- //$$ mc.entityRenderer.updateCameraAndRender(MCVer.getRenderPartialTicks());
+ //$$ mc.entityRenderer.updateCameraAndRender(tickDelta);
//#endif
//#endif
//#endif
diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java
index 6669145a..bddee69a 100644
--- a/src/main/java/com/replaymod/replay/ReplayHandler.java
+++ b/src/main/java/com/replaymod/replay/ReplayHandler.java
@@ -31,6 +31,7 @@ import io.netty.channel.embedded.EmbeddedChannel;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.DownloadingTerrainScreen;
import net.minecraft.client.network.ClientLoginNetworkHandler;
+import net.minecraft.client.util.Window;
import net.minecraft.util.crash.CrashReport;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
@@ -50,12 +51,10 @@ import org.lwjgl.opengl.GL11;
//#if MC>=11400
import com.replaymod.replay.mixin.EntityLivingBaseAccessor;
-import net.minecraft.client.util.Window;
import net.minecraft.entity.LivingEntity;
//#else
//$$ import com.replaymod.replay.mixin.EntityOtherPlayerMPAccessor;
//$$ import net.minecraft.client.entity.EntityOtherPlayerMP;
-//$$ import net.minecraft.client.gui.ScaledResolution;
//$$ import org.lwjgl.opengl.Display;
//#endif
@@ -148,7 +147,7 @@ public class ReplayHandler {
private UUID spectating;
public ReplayHandler(ReplayFile replayFile, boolean asyncMode) throws IOException {
- Preconditions.checkState(isOnMainThread(), "Must be called from Minecraft thread.");
+ Preconditions.checkState(mc.isOnThread(), "Must be called from Minecraft thread.");
this.replayFile = replayFile;
replayDuration = replayFile.getMetaData().getDuration();
@@ -171,7 +170,7 @@ public class ReplayHandler {
}
void restartedReplay() {
- Preconditions.checkState(isOnMainThread(), "Must be called from Minecraft thread.");
+ Preconditions.checkState(mc.isOnThread(), "Must be called from Minecraft thread.");
channel.close();
@@ -197,7 +196,7 @@ public class ReplayHandler {
}
public void endReplay() throws IOException {
- Preconditions.checkState(isOnMainThread(), "Must be called from Minecraft thread.");
+ Preconditions.checkState(mc.isOnThread(), "Must be called from Minecraft thread.");
ReplayClosingCallback.EVENT.invoker().replayClosing(this);
@@ -246,7 +245,7 @@ public class ReplayHandler {
}
private void setup() {
- Preconditions.checkState(isOnMainThread(), "Must be called from Minecraft thread.");
+ Preconditions.checkState(mc.isOnThread(), "Must be called from Minecraft thread.");
//#if MC>=11100
mc.inGameHud.getChatHud().clear(false);
@@ -403,7 +402,7 @@ public class ReplayHandler {
CameraEntity cam = getCameraEntity();
if (cam != null) {
- targetCameraPosition = new Location(Entity_getX(cam), Entity_getY(cam), Entity_getZ(cam), cam.yaw, cam.pitch);
+ targetCameraPosition = new Location(cam.getX(), cam.getY(), cam.getZ(), cam.yaw, cam.pitch);
} else {
targetCameraPosition = null;
}
@@ -486,8 +485,8 @@ public class ReplayHandler {
cameraEntity.setCameraController(new SpectatorCameraController(cameraEntity));
}
- if (getRenderViewEntity(mc) != e) {
- setRenderViewEntity(mc, e);
+ if (mc.getCameraEntity() != e) {
+ mc.setCameraEntity(e);
cameraEntity.setCameraPosRot(e);
}
}
@@ -505,7 +504,7 @@ public class ReplayHandler {
* @return {@code true} if the camera is the view entity, {@code false} otherwise
*/
public boolean isCameraView() {
- return mc.player instanceof CameraEntity && mc.player == getRenderViewEntity(mc);
+ return mc.player instanceof CameraEntity && mc.player == mc.getCameraEntity();
}
/**
@@ -539,11 +538,11 @@ public class ReplayHandler {
}
// Update all entity positions (especially prev/lastTick values)
- for (Entity entity : loadedEntityList(mc.world)) {
+ for (Entity entity : mc.world.getEntities()) {
skipTeleportInterpolation(entity);
- entity.lastRenderX = entity.prevX = Entity_getX(entity);
- entity.lastRenderY = entity.prevY = Entity_getY(entity);
- entity.lastRenderZ = entity.prevZ = Entity_getZ(entity);
+ entity.lastRenderX = entity.prevX = entity.getX();
+ entity.lastRenderY = entity.prevY = entity.getY();
+ entity.lastRenderZ = entity.prevZ = entity.getZ();
entity.prevYaw = entity.yaw;
entity.prevPitch = entity.pitch;
}
@@ -563,7 +562,7 @@ public class ReplayHandler {
quickReplaySender.sendPacketsTill(targetTime);
// Immediately apply player teleport interpolation
- for (Entity entity : loadedEntityList(mc.world)) {
+ for (Entity entity : mc.world.getEntities()) {
skipTeleportInterpolation(entity);
}
return;
@@ -582,7 +581,7 @@ public class ReplayHandler {
if (retainCameraPosition) {
CameraEntity cam = getCameraEntity();
if (cam != null) {
- targetCameraPosition = new Location(Entity_getX(cam), Entity_getY(cam), Entity_getZ(cam),
+ targetCameraPosition = new Location(cam.getX(), cam.getY(), cam.getZ(),
cam.yaw, cam.pitch);
} else {
targetCameraPosition = null;
@@ -612,8 +611,8 @@ public class ReplayHandler {
);
enableTexture();
mc.getFramebuffer().beginWrite(true);
+ Window window = mc.getWindow();
//#if MC>=11500
- Window window = getWindow(mc);
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
RenderSystem.matrixMode(GL11.GL_PROJECTION);
RenderSystem.loadIdentity();
@@ -623,23 +622,13 @@ public class ReplayHandler {
RenderSystem.translatef(0, 0, -2000);
//#else
//#if MC>=11400
- //$$ getWindow(mc).method_4493(true);
- //#else
- //#if MC>=11400
- //$$ mc.mainWindow.setupOverlayRendering();
+ //$$ window.method_4493(true);
//#else
//$$ mc.entityRenderer.setupOverlayRendering();
//#endif
//#endif
- //#endif
- //#if MC>=11400
- Window
- //#else
- //$$ ScaledResolution
- //#endif
- resolution = newScaledResolution(mc);
- guiScreen.toMinecraft().init(mc, resolution.getScaledWidth(), resolution.getScaledHeight());
+ guiScreen.toMinecraft().init(mc, window.getScaledWidth(), window.getScaledHeight());
//#if MC>=11600
guiScreen.toMinecraft().render(new MatrixStack(), 0, 0, 0);
//#else
@@ -654,18 +643,14 @@ public class ReplayHandler {
mc.getFramebuffer().endWrite();
popMatrix();
pushMatrix();
- //#if MC>=11400
- mc.getFramebuffer().draw(getWindow(mc).getFramebufferWidth(), getWindow(mc).getFramebufferHeight());
- //#else
- //$$ mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight);
- //#endif
+ mc.getFramebuffer().draw(mc.getWindow().getFramebufferWidth(), mc.getWindow().getFramebufferHeight());
popMatrix();
//#if MC>=11500
- getWindow(mc).swapBuffers();
+ mc.getWindow().swapBuffers();
//#else
//#if MC>=11400
- //$$ getWindow(mc).setFullscreen(true);
+ //$$ mc.window.setFullscreen(true);
//#else
//$$ Display.update();
//#endif
@@ -691,11 +676,11 @@ public class ReplayHandler {
//#else
//$$ .processReceivedPackets();
//#endif
- for (Entity entity : loadedEntityList(mc.world)) {
+ for (Entity entity : mc.world.getEntities()) {
skipTeleportInterpolation(entity);
- entity.lastRenderX = entity.prevX = Entity_getX(entity);
- entity.lastRenderY = entity.prevY = Entity_getY(entity);
- entity.lastRenderZ = entity.prevZ = Entity_getZ(entity);
+ entity.lastRenderX = entity.prevX = entity.getX();
+ entity.lastRenderY = entity.prevY = entity.getY();
+ entity.lastRenderZ = entity.prevZ = entity.getZ();
entity.prevYaw = entity.yaw;
entity.prevPitch = entity.pitch;
}
diff --git a/src/main/java/com/replaymod/replay/ReplayModReplay.java b/src/main/java/com/replaymod/replay/ReplayModReplay.java
index 0fd60a70..8d4e050c 100644
--- a/src/main/java/com/replaymod/replay/ReplayModReplay.java
+++ b/src/main/java/com/replaymod/replay/ReplayModReplay.java
@@ -32,8 +32,6 @@ import java.io.File;
import java.io.IOException;
import java.util.Optional;
-import static com.replaymod.core.versions.MCVer.*;
-
public class ReplayModReplay implements Module {
{ instance = this; }
@@ -68,9 +66,9 @@ public class ReplayModReplay implements Module {
if (camera != null) {
Marker marker = new Marker();
marker.setTime(replayHandler.getReplaySender().currentTimeStamp());
- marker.setX(Entity_getX(camera));
- marker.setY(Entity_getY(camera));
- marker.setZ(Entity_getZ(camera));
+ marker.setX(camera.getX());
+ marker.setY(camera.getY());
+ marker.setZ(camera.getZ());
marker.setYaw(camera.yaw);
marker.setPitch(camera.pitch);
marker.setRoll(camera.roll);
diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java
index 31151cac..e5bd3b1f 100644
--- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java
+++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java
@@ -31,7 +31,6 @@ import net.minecraft.util.math.Box;
//#if FABRIC>=1
//#else
-//$$ import com.replaymod.core.versions.MCVer;
//$$ import net.minecraftforge.client.event.EntityViewRenderEvent;
//$$ import net.minecraftforge.client.event.RenderGameOverlayEvent;
//$$ import net.minecraftforge.common.MinecraftForge;
@@ -185,7 +184,7 @@ public class CameraEntity
* @param z Delta in Z direction
*/
public void moveCamera(double x, double y, double z) {
- setCameraPosition(Entity_getX(this) + x, Entity_getY(this) + y, Entity_getZ(this) + z);
+ setCameraPosition(this.getX() + x, this.getY() + y, this.getZ() + z);
}
/**
@@ -198,7 +197,7 @@ public class CameraEntity
this.lastRenderX = this.prevX = x;
this.lastRenderY = this.prevY = y;
this.lastRenderZ = this.prevZ = z;
- Entity_setPos(this, x, y, z);
+ this.setPos(x, y, z);
updateBoundingBox();
}
@@ -239,7 +238,7 @@ public class CameraEntity
this.prevZ = to.prevZ;
this.prevYaw = to.prevYaw;
this.prevPitch = to.prevPitch;
- Entity_setPos(this, Entity_getX(to), Entity_getY(to), Entity_getZ(to));
+ this.setPos(to.getX(), to.getY(), to.getZ());
this.yaw = to.yaw;
this.pitch = to.pitch;
this.lastRenderX = to.lastRenderX;
@@ -258,17 +257,18 @@ public class CameraEntity
//#else
//$$ this.boundingBox.setBB(AxisAlignedBB.getBoundingBox(
//#endif
- Entity_getX(this) - width / 2, Entity_getY(this), Entity_getZ(this) - width / 2,
- Entity_getX(this) + width / 2, Entity_getY(this) + height, Entity_getZ(this) + width / 2));
+ this.getX() - width / 2, this.getY(), this.getZ() - width / 2,
+ this.getX() + width / 2, this.getY() + height, this.getZ() + width / 2));
}
@Override
public void tick() {
//#if MC>=10800
- Entity view = getRenderViewEntity(this.client);
+ Entity view =
//#else
- //$$ EntityLivingBase view = getRenderViewEntity(this.mc);
+ //$$ EntityLivingBase view =
//#endif
+ this.client.getCameraEntity();
if (view != null) {
// Make sure we're always spectating the right entity
// This is important if the spectated player respawns as their
@@ -284,9 +284,9 @@ public class CameraEntity
}
view = this.world.getPlayerByUuid(spectating);
if (view != null) {
- setRenderViewEntity(this.client, view);
+ this.client.setCameraEntity(view);
} else {
- setRenderViewEntity(this.client, this);
+ this.client.setCameraEntity(this);
return;
}
}
@@ -309,7 +309,7 @@ public class CameraEntity
@Override
public void setRotation(float yaw, float pitch) {
- if (getRenderViewEntity(this.client) == this) {
+ if (this.client.getCameraEntity() == this) {
// Only update camera rotation when the camera is the view
super.setRotation(yaw, pitch);
}
@@ -357,7 +357,7 @@ public class CameraEntity
}
private boolean falseUnlessSpectating(Function property) {
- Entity view = getRenderViewEntity(this.client);
+ Entity view = this.client.getCameraEntity();
if (view != null && view != this) {
return property.apply(view);
}
@@ -407,7 +407,7 @@ public class CameraEntity
//#if MC>=10800
@Override
public float getSpeed() {
- Entity view = getRenderViewEntity(this.client);
+ Entity view = this.client.getCameraEntity();
if (view != this && view instanceof AbstractClientPlayerEntity) {
return ((AbstractClientPlayerEntity) view).getSpeed();
}
@@ -422,7 +422,7 @@ public class CameraEntity
@Override
public boolean isInvisible() {
- Entity view = getRenderViewEntity(this.client);
+ Entity view = this.client.getCameraEntity();
if (view != this) {
return view.isInvisible();
}
@@ -431,7 +431,7 @@ public class CameraEntity
@Override
public Identifier getSkinTexture() {
- Entity view = getRenderViewEntity(this.client);
+ Entity view = this.client.getCameraEntity();
if (view != this && view instanceof PlayerEntity) {
return Utils.getResourceLocationForPlayerUUID(view.getUuid());
}
@@ -450,7 +450,7 @@ public class CameraEntity
@Override
public boolean isPartVisible(PlayerModelPart modelPart) {
- Entity view = getRenderViewEntity(this.client);
+ Entity view = this.client.getCameraEntity();
if (view != this && view instanceof PlayerEntity) {
return ((PlayerEntity) view).isPartVisible(modelPart);
}
@@ -460,7 +460,7 @@ public class CameraEntity
@Override
public float getHandSwingProgress(float renderPartialTicks) {
- Entity view = getRenderViewEntity(this.client);
+ Entity view = this.client.getCameraEntity();
if (view != this && view instanceof PlayerEntity) {
return ((PlayerEntity) view).getHandSwingProgress(renderPartialTicks);
}
@@ -705,7 +705,7 @@ public class CameraEntity
{ on(PreRenderHandCallback.EVENT, this::onRenderHand); }
private boolean onRenderHand() {
// Unless we are spectating another player, don't render our hand
- Entity view = getRenderViewEntity(mc);
+ Entity view = mc.getCameraEntity();
if (view == CameraEntity.this || !(view instanceof PlayerEntity)) {
return true; // cancel hand rendering
} else {
@@ -761,7 +761,7 @@ public class CameraEntity
//#else
//$$ @SubscribeEvent
//$$ public void preRenderGameOverlay(RenderGameOverlayEvent.Pre event) {
- //$$ switch (MCVer.getType(event)) {
+ //$$ switch (event.getType()) {
//$$ case ALL:
//$$ heldItemTooltipsWasTrue = mc.gameSettings.heldItemTooltips;
//$$ mc.gameSettings.heldItemTooltips = false;
@@ -797,7 +797,7 @@ public class CameraEntity
//$$
//$$ @SubscribeEvent
//$$ public void postRenderGameOverlay(RenderGameOverlayEvent.Post event) {
- //$$ if (MCVer.getType(event) != RenderGameOverlayEvent.ElementType.ALL) return;
+ //$$ if (event.getType() != RenderGameOverlayEvent.ElementType.ALL) return;
//$$ mc.gameSettings.heldItemTooltips = heldItemTooltipsWasTrue;
//$$ }
//#endif
diff --git a/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java b/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java
index 9e0c02f7..316b4e25 100644
--- a/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java
+++ b/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java
@@ -1,9 +1,11 @@
package com.replaymod.replay.camera;
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.client.options.KeyBinding;
-import static com.replaymod.core.versions.MCVer.*;
+import static net.minecraft.util.math.MathHelper.cos;
+import static net.minecraft.util.math.MathHelper.sin;
// TODO: Marius is responsible for this. Please, someone clean it up.
public class ClassicCameraController implements CameraController {
@@ -32,7 +34,7 @@ public class ClassicCameraController implements CameraController {
public void update(float partialTicksPassed) {
boolean forward = false, backward = false, left = false, right = false, up = false, down = false;
speedup = false;
- for(KeyBinding kb : getMinecraft().options.keysAll) {
+ for(KeyBinding kb : MinecraftClient.getInstance().options.keysAll) {
if(!kb.isPressed()) continue;
if(kb.getTranslationKey().equals("key.forward")) {
forward = true;
diff --git a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java
index faf15be6..30a15018 100644
--- a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java
+++ b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java
@@ -52,9 +52,9 @@ public class SpectatorCameraController implements CameraController {
// 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
// and always uses mc.thePlayer
- Entity view = getRenderViewEntity(mc);
+ Entity view = mc.getCameraEntity();
if (view != null && view != camera) {
- camera.setCameraPosRot(getRenderViewEntity(mc));
+ camera.setCameraPosRot(mc.getCameraEntity());
// If it's a player, also 'steal' its inventory so the rendering code knows what item to render
if (view instanceof PlayerEntity) {
PlayerEntity viewPlayer = (PlayerEntity) view;
diff --git a/src/main/java/com/replaymod/replay/handler/GuiHandler.java b/src/main/java/com/replaymod/replay/handler/GuiHandler.java
index e727134c..af8f67ff 100644
--- a/src/main/java/com/replaymod/replay/handler/GuiHandler.java
+++ b/src/main/java/com/replaymod/replay/handler/GuiHandler.java
@@ -113,8 +113,8 @@ public class GuiHandler extends EventRegistrations {
BUTTON_EXIT_REPLAY,
b.x,
b.y,
- width(b),
- height(b),
+ b.getWidth(),
+ b.getHeight(),
"replaymod.gui.exit",
this::onButton
));
@@ -133,9 +133,9 @@ public class GuiHandler extends EventRegistrations {
//#if MC>=11400
} else if (id.equals(BUTTON_OPTIONS)) {
//#if MC>=11400
- width(b, 204);
+ b.setWidth(204);
//#else
- //$$ width(b, 200);
+ //$$ b.width = 200
//#endif
//#endif
}
@@ -147,7 +147,7 @@ public class GuiHandler extends EventRegistrations {
}
if (achievements != null && stats != null) {
moveAllButtonsInRect(buttonList,
- achievements.x, stats.x + width(stats),
+ achievements.x, stats.x + stats.getWidth(),
achievements.y, Integer.MAX_VALUE,
-24);
}
@@ -185,8 +185,8 @@ public class GuiHandler extends EventRegistrations {
int moveBy
) {
buttons.stream()
- .filter(button -> button.x <= xEnd && button.x + width(button) >= xStart)
- .filter(button -> button.y <= yEnd && button.y + height(button) >= yStart)
+ .filter(button -> button.x <= xEnd && button.x + button.getWidth() >= xStart)
+ .filter(button -> button.y <= yEnd && button.y + button.getHeight() >= yStart)
.forEach(button -> button.y += moveBy);
}
@@ -261,8 +261,8 @@ public class GuiHandler extends EventRegistrations {
//#else
//$$ @SubscribeEvent
//$$ public void onButton(GuiScreenEvent.ActionPerformedEvent.Pre event) {
- //$$ GuiScreen guiScreen = getGui(event);
- //$$ GuiButton button = getButton(event);
+ //$$ GuiScreen guiScreen = event.getGui();
+ //$$ GuiButton button = event.getButton();
//#endif
if(!button.active) return;
diff --git a/src/main/java/com/replaymod/simplepathing/SPTimeline.java b/src/main/java/com/replaymod/simplepathing/SPTimeline.java
index 6a035759..561122d4 100644
--- a/src/main/java/com/replaymod/simplepathing/SPTimeline.java
+++ b/src/main/java/com/replaymod/simplepathing/SPTimeline.java
@@ -49,7 +49,6 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import static com.replaymod.core.versions.MCVer.*;
import static com.replaymod.replaystudio.pathing.change.RemoveKeyframe.create;
import static com.replaymod.simplepathing.ReplayModSimplePathing.LOGGER;
@@ -674,7 +673,7 @@ public class SPTimeline implements PathingRegistry {
} catch (IOException e) {
CrashReport crash = CrashReport.create(e, "Serializing interpolator");
CrashReportSection category = crash.addElement("Serializing interpolator");
- addDetail(category, "Interpolator", interpolator::toString);
+ category.add("Interpolator", interpolator::toString);
throw new CrashException(crash);
}
@@ -689,7 +688,7 @@ public class SPTimeline implements PathingRegistry {
} catch (IOException e) {
CrashReport crash = CrashReport.create(e, "De-serializing interpolator");
CrashReportSection category = crash.addElement("De-serializing interpolator");
- addDetail(category, "Interpolator", json::toString);
+ category.add("Interpolator", json::toString);
throw new CrashException(crash);
}
}
diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java b/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java
index ece93360..784e5a10 100644
--- a/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java
+++ b/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java
@@ -18,6 +18,9 @@ import com.replaymod.simplepathing.SPTimeline.SPPath;
import de.johni0702.minecraft.gui.GuiRenderer;
import de.johni0702.minecraft.gui.element.advanced.AbstractGuiTimeline;
import de.johni0702.minecraft.gui.function.Draggable;
+import net.minecraft.client.render.BufferBuilder;
+import net.minecraft.client.render.Tessellator;
+import net.minecraft.client.render.VertexFormats;
import org.apache.commons.lang3.tuple.Pair;
import de.johni0702.minecraft.gui.utils.lwjgl.Point;
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
@@ -27,10 +30,6 @@ import org.lwjgl.opengl.GL11;
import java.util.Comparator;
import java.util.Optional;
-import static com.replaymod.core.versions.MCVer.BufferBuilder_addPosCol;
-import static com.replaymod.core.versions.MCVer.BufferBuilder_beginPosCol;
-import static com.replaymod.core.versions.MCVer.Tessellator_getInstance;
-
public class GuiKeyframeTimeline extends AbstractGuiTimeline implements Draggable {
protected static final int KEYFRAME_SIZE = 5;
protected static final int KEYFRAME_TEXTURE_X = 74;
@@ -142,55 +141,61 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline> 24 & 0xff,
color >> 16 & 0xff,
color >> 8 & 0xff,
color & 0xff
- );
+ ).next();
// Draw vertically over the replay timeline, including its bottom border
- BufferBuilder_addPosCol(
+ buffer.vertex(
replayTimelineLeft + positionXReplayTimeline,
replayTimelineBottom,
- 0,
+ 0
+ ).color(
color >> 24 & 0xff,
color >> 16 & 0xff,
color >> 8 & 0xff,
color & 0xff
- );
+ ).next();
// Now for the important part: connecting to the keyframe timeline
- BufferBuilder_addPosCol(
+ buffer.vertex(
keyframeTimelineLeft + positionXKeyframeTimeline,
keyframeTimelineTop,
- 0,
+ 0
+ ).color(
color >> 24 & 0xff,
color >> 16 & 0xff,
color >> 8 & 0xff,
color & 0xff
- );
+ ).next();
// And finally another vertical bit (the timeline is already crammed enough, so only the border)
- BufferBuilder_addPosCol(
+ buffer.vertex(
keyframeTimelineLeft + positionXKeyframeTimeline,
keyframeTimelineTop + BORDER_TOP,
- 0,
+ 0
+ ).color(
color >> 24 & 0xff,
color >> 16 & 0xff,
color >> 8 & 0xff,
color & 0xff
- );
+ ).next();
GL11.glEnable(GL11.GL_LINE_SMOOTH);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glPushAttrib(GL11.GL_SCISSOR_BIT);
GL11.glDisable(GL11.GL_SCISSOR_TEST);
GL11.glLineWidth(1);
- Tessellator_getInstance().draw();
+ tessellator.draw();
GL11.glPopAttrib();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_LINE_SMOOTH);
diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java b/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java
index 54eb6529..cdce5a51 100644
--- a/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java
+++ b/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java
@@ -644,9 +644,9 @@ public class GuiPathing {
CameraEntity camera = replayHandler.getCameraEntity();
int spectatedId = -1;
if (!replayHandler.isCameraView() && !neverSpectator) {
- spectatedId = getRenderViewEntity(replayHandler.getOverlay().getMinecraft()).getEntityId();
+ spectatedId = replayHandler.getOverlay().getMinecraft().getCameraEntity().getEntityId();
}
- timeline.addPositionKeyframe(time, Entity_getX(camera), Entity_getY(camera), Entity_getZ(camera),
+ timeline.addPositionKeyframe(time, camera.getX(), camera.getY(), camera.getZ(),
camera.yaw, camera.pitch, camera.roll, spectatedId);
mod.setSelected(path, time);
}
diff --git a/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java b/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java
index 450d853e..4aa42bb0 100644
--- a/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java
+++ b/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java
@@ -19,6 +19,9 @@ import com.replaymod.simplepathing.SPTimeline;
import com.replaymod.simplepathing.gui.GuiPathing;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.render.BufferBuilder;
+import net.minecraft.client.render.Tessellator;
+import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.util.Identifier;
@@ -34,7 +37,6 @@ import java.util.Comparator;
import java.util.Optional;
import static com.replaymod.core.ReplayMod.TEXTURE;
-import static com.replaymod.core.versions.MCVer.*;
public class PathPreviewRenderer extends EventRegistrations {
private static final Identifier CAMERA_HEAD = new Identifier("replaymod", "camera_head.png");
@@ -56,7 +58,7 @@ public class PathPreviewRenderer extends EventRegistrations {
private void renderCameraPath(MatrixStack matrixStack) {
if (!replayHandler.getReplaySender().isAsyncMode() || mc.options.hudHidden) return;
- Entity view = getRenderViewEntity(mc);
+ Entity view = mc.getCameraEntity();
if (view == null) return;
GuiPathing guiPathing = mod.getGuiPathing();
@@ -75,14 +77,15 @@ public class PathPreviewRenderer extends EventRegistrations {
int renderDistanceSquared = renderDistance * renderDistance;
Triple viewPos = Triple.of(
- Entity_getX(view),
+ view.getX(),
+ view.getY()
//#if MC>=10800 && MC<11500
//$$ // Eye height is subtracted to make path appear higher (at eye height) than it actually is (at foot height)
- //$$ Entity_getY(view) - view.getStandingEyeHeight(),
+ //$$ - view.getStandingEyeHeight(),
//#else
- Entity_getY(view),
+ ,
//#endif
- Entity_getZ(view)
+ view.getZ()
);
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
@@ -212,36 +215,40 @@ public class PathPreviewRenderer extends EventRegistrations {
if (distanceSquared(view, pos1) > renderDistanceSquared) return;
if (distanceSquared(view, pos2) > renderDistanceSquared) return;
- BufferBuilder_beginPosCol(GL11.GL_LINES);
+ Tessellator tessellator = Tessellator.getInstance();
+ BufferBuilder buffer = tessellator.getBuffer();
+ buffer.begin(GL11.GL_LINES, VertexFormats.POSITION_COLOR);
- BufferBuilder_addPosCol(
+ buffer.vertex(
pos1.getLeft() - view.getLeft(),
pos1.getMiddle() - view.getMiddle(),
- pos1.getRight() - view.getRight(),
+ pos1.getRight() - view.getRight()
+ ).color(
color >> 16 & 0xff,
color >> 8 & 0xff,
color & 0xff,
255
- );
- BufferBuilder_addPosCol(
+ ).next();
+ buffer.vertex(
pos2.getLeft() - view.getLeft(),
pos2.getMiddle() - view.getMiddle(),
- pos2.getRight() - view.getRight(),
+ pos2.getRight() - view.getRight()
+ ).color(
color >> 16 & 0xff,
color >> 8 & 0xff,
color & 0xff,
255
- );
+ ).next();
GL11.glLineWidth(3);
- Tessellator_getInstance().draw();
+ tessellator.draw();
}
private void drawPoint(Triple view,
Triple pos,
Keyframe keyframe) {
- MCVer.bindTexture(TEXTURE);
+ mc.getTextureManager().bindTexture(TEXTURE);
float posX = 80f / ReplayMod.TEXTURE_SIZE;
float posY = 0f;
@@ -260,12 +267,14 @@ public class PathPreviewRenderer extends EventRegistrations {
float maxX = 0.5f;
float maxY = 0.5f;
- BufferBuilder_beginPosTex(GL11.GL_QUADS);
+ Tessellator tessellator = Tessellator.getInstance();
+ BufferBuilder buffer = tessellator.getBuffer();
+ buffer.begin(GL11.GL_QUADS, VertexFormats.POSITION_TEXTURE);
- BufferBuilder_addPosTex(minX, minY, 0, posX + size, posY + size);
- BufferBuilder_addPosTex(minX, maxY, 0, posX + size, posY);
- BufferBuilder_addPosTex(maxX, maxY, 0, posX, posY);
- BufferBuilder_addPosTex(maxX, minY, 0, posX, posY + size);
+ buffer.vertex(minX, minY, 0).texture(posX + size, posY + size).next();
+ buffer.vertex(minX, maxY, 0).texture(posX + size, posY).next();
+ buffer.vertex(maxX, maxY, 0).texture(posX, posY).next();
+ buffer.vertex(maxX, minY, 0).texture(posX, posY + size).next();
GL11.glPushMatrix();
@@ -275,15 +284,10 @@ public class PathPreviewRenderer extends EventRegistrations {
pos.getRight() - view.getRight()
);
GL11.glNormal3f(0, 1, 0);
- //#if MC>=11500
- GL11.glRotatef(-getRenderManager().camera.getYaw(), 0, 1, 0);
- GL11.glRotatef(getRenderManager().camera.getPitch(), 1, 0, 0);
- //#else
- //$$ GL11.glRotatef(-getRenderManager().cameraYaw, 0, 1, 0);
- //$$ GL11.glRotatef(getRenderManager().cameraPitch, 1, 0, 0);
- //#endif
+ GL11.glRotatef(-mc.getEntityRenderDispatcher().camera.getYaw(), 0, 1, 0);
+ GL11.glRotatef(mc.getEntityRenderDispatcher().camera.getPitch(), 1, 0, 0);
- Tessellator_getInstance().draw();
+ tessellator.draw();
GL11.glPopMatrix();
}
@@ -292,7 +296,7 @@ public class PathPreviewRenderer extends EventRegistrations {
Triple pos,
Triple rot) {
- MCVer.bindTexture(CAMERA_HEAD);
+ mc.getTextureManager().bindTexture(CAMERA_HEAD);
GL11.glPushMatrix();
@@ -308,12 +312,14 @@ public class PathPreviewRenderer extends EventRegistrations {
//draw the position line
GL11.glDisable(GL11.GL_TEXTURE_2D);
- BufferBuilder_beginPosCol(GL11.GL_LINES);
+ Tessellator tessellator = Tessellator.getInstance();
+ BufferBuilder buffer = tessellator.getBuffer();
+ buffer.begin(GL11.GL_LINES, VertexFormats.POSITION_COLOR);
- BufferBuilder_addPosCol(0, 0, 0, 0, 255, 0, 170);
- BufferBuilder_addPosCol(0, 0, 2, 0, 255, 0, 170);
+ buffer.vertex(0, 0, 0).color(0, 255, 0, 170).next();
+ buffer.vertex(0, 0, 2).color(0, 255, 0, 170).next();
- Tessellator_getInstance().draw();
+ tessellator.draw();
// draw camera cube
GL11.glEnable(GL11.GL_TEXTURE_2D);
@@ -322,45 +328,45 @@ public class PathPreviewRenderer extends EventRegistrations {
double r = -cubeSize/2;
- BufferBuilder_beginPosTexCol(GL11.GL_QUADS);
+ buffer.begin(GL11.GL_QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
//back
- BufferBuilder_addPosTexCol(r, r + cubeSize, r, 3 * 8 / 64f, 8 / 64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r + cubeSize, r, 4*8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r, r, 4*8/64f, 2*8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r, r, 3*8/64f, 2*8/64f, 255, 255, 255, 200);
+ buffer.vertex(r, r + cubeSize, r).texture(3 * 8 / 64f, 8 / 64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r + cubeSize, r).texture(4*8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r, r).texture(4*8/64f, 2*8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r, r).texture(3*8/64f, 2*8/64f).color(255, 255, 255, 200).next();
//front
- BufferBuilder_addPosTexCol(r + cubeSize, r, r + cubeSize, 2 * 8 / 64f, 2*8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r + cubeSize, r + cubeSize, 2 * 8 / 64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r + cubeSize, r + cubeSize, 8 / 64f, 8 / 64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r, r + cubeSize, 8 / 64f, 2*8/64f, 255, 255, 255, 200);
+ buffer.vertex(r + cubeSize, r, r + cubeSize).texture(2 * 8 / 64f, 2*8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(2 * 8 / 64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r + cubeSize, r + cubeSize).texture(8 / 64f, 8 / 64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r, r + cubeSize).texture(8 / 64f, 2*8/64f).color(255, 255, 255, 200).next();
//left
- BufferBuilder_addPosTexCol(r + cubeSize, r + cubeSize, r, 0, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r + cubeSize, r + cubeSize, 8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r, r + cubeSize, 8/64f, 2*8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r+cubeSize, r, r, 0, 2*8/64f, 255, 255, 255, 200);
+ buffer.vertex(r + cubeSize, r + cubeSize, r).texture(0, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r, r + cubeSize).texture(8/64f, 2*8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r+cubeSize, r, r).texture(0, 2*8/64f).color(255, 255, 255, 200).next();
//right
- BufferBuilder_addPosTexCol(r, r + cubeSize, r + cubeSize, 2*8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r + cubeSize, r, 3*8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r, r, 3*8/64f, 2*8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r, r + cubeSize, 2 * 8 / 64f, 2 * 8 / 64f, 255, 255, 255, 200);
+ buffer.vertex(r, r + cubeSize, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r + cubeSize, r).texture(3*8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r, r).texture(3*8/64f, 2*8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r, r + cubeSize).texture(2 * 8 / 64f, 2 * 8 / 64f).color(255, 255, 255, 200).next();
//bottom
- BufferBuilder_addPosTexCol(r + cubeSize, r, r, 3*8/64f, 0, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r, r + cubeSize, 3*8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r, r + cubeSize, 2*8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r, r, 2 * 8 / 64f, 0, 255, 255, 255, 200);
+ buffer.vertex(r + cubeSize, r, r).texture(3*8/64f, 0).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r, r + cubeSize).texture(3*8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r, r).texture(2 * 8 / 64f, 0).color(255, 255, 255, 200).next();
//top
- BufferBuilder_addPosTexCol(r, r + cubeSize, r, 8/64f, 0, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r, r + cubeSize, r + cubeSize, 8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r + cubeSize, r + cubeSize, 2*8/64f, 8/64f, 255, 255, 255, 200);
- BufferBuilder_addPosTexCol(r + cubeSize, r + cubeSize, r, 2 * 8 / 64f, 0, 255, 255, 255, 200);
+ buffer.vertex(r, r + cubeSize, r).texture(8/64f, 0).color(255, 255, 255, 200).next();
+ buffer.vertex(r, r + cubeSize, r + cubeSize).texture(8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next();
+ buffer.vertex(r + cubeSize, r + cubeSize, r).texture(2 * 8 / 64f, 0).color(255, 255, 255, 200).next();
- Tessellator_getInstance().draw();
+ tessellator.draw();
GL11.glPopMatrix();
}
diff --git a/versions/1.12.2/src/main/java/com/replaymod/compat/oranges17animations/HideInvisibleEntities.java b/versions/1.12.2/src/main/java/com/replaymod/compat/oranges17animations/HideInvisibleEntities.java
index d97a953a..01aec589 100644
--- a/versions/1.12.2/src/main/java/com/replaymod/compat/oranges17animations/HideInvisibleEntities.java
+++ b/versions/1.12.2/src/main/java/com/replaymod/compat/oranges17animations/HideInvisibleEntities.java
@@ -1,5 +1,6 @@
package com.replaymod.compat.oranges17animations;
+import com.replaymod.core.ReplayMod;
import com.replaymod.replay.camera.CameraEntity;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.Minecraft;
@@ -7,8 +8,6 @@ import net.minecraftforge.client.event.RenderLivingEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import static com.replaymod.core.versions.MCVer.*;
-
/**
* Orange seems to have copied vast parts of the RendererLivingEntity into their ArmorAnimation class which cancels the RenderLivingEvent.Pre and calls its own code instead.
* This breaks our mixin which assures that, even though the camera is in spectator mode, it cannot see invisible entities.
@@ -17,12 +16,12 @@ import static com.replaymod.core.versions.MCVer.*;
*/
public class HideInvisibleEntities extends EventRegistrations {
private final Minecraft mc = Minecraft.getMinecraft();
- private final boolean modLoaded = isModLoaded("animations");
+ private final boolean modLoaded = ReplayMod.instance.isModLoaded("animations");
@SubscribeEvent(priority = EventPriority.HIGH)
public void preRenderLiving(RenderLivingEvent.Pre event) {
if (modLoaded) {
- if (mc.player instanceof CameraEntity && getEntity(event).isInvisible()) {
+ if (mc.player instanceof CameraEntity && event.getEntity().isInvisible()) {
event.setCanceled(true);
}
}
diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/ReplayModBackend.java b/versions/1.12.2/src/main/java/com/replaymod/core/ReplayModBackend.java
index d0f1fb62..6da12741 100644
--- a/versions/1.12.2/src/main/java/com/replaymod/core/ReplayModBackend.java
+++ b/versions/1.12.2/src/main/java/com/replaymod/core/ReplayModBackend.java
@@ -61,6 +61,14 @@ public class ReplayModBackend {
return Loader.instance().getIndexedModList().get(MOD_ID).getVersion();
}
+ public String getMinecraftVersion() {
+ return Loader.MC_VERSION;
+ }
+
+ public boolean isModLoaded(String id) {
+ return Loader.isModLoaded(id);
+ }
+
static { // Note: even preInit is too late and we'd have to issue another resource reload
List defaultResourcePacks = ((MinecraftAccessor) getMinecraft()).getDefaultResourcePacks();
diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/versions/GLFW.java b/versions/1.12.2/src/main/java/com/replaymod/core/versions/GLFW.java
new file mode 100644
index 00000000..0c30d254
--- /dev/null
+++ b/versions/1.12.2/src/main/java/com/replaymod/core/versions/GLFW.java
@@ -0,0 +1,9 @@
+package com.replaymod.core.versions;
+
+import org.lwjgl.opengl.Display;
+
+public class GLFW {
+ public static boolean glfwWindowShouldClose(@SuppressWarnings("unused") long handle) {
+ return Display.isCloseRequested();
+ }
+}
diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/versions/Window.java b/versions/1.12.2/src/main/java/com/replaymod/core/versions/Window.java
new file mode 100644
index 00000000..d0a3ddba
--- /dev/null
+++ b/versions/1.12.2/src/main/java/com/replaymod/core/versions/Window.java
@@ -0,0 +1,69 @@
+package com.replaymod.core.versions;
+
+import com.replaymod.render.mixin.MainWindowAccessor;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.ScaledResolution;
+import org.lwjgl.opengl.Display;
+
+public class Window implements MainWindowAccessor {
+
+ private final Minecraft mc;
+ private ScaledResolution scaledResolution;
+
+ public Window(Minecraft mc) {
+ this.mc = mc;
+ }
+
+ @Override
+ public int getFramebufferWidth() {
+ return mc.displayWidth;
+ }
+
+ @Override
+ public void setFramebufferWidth(int value) {
+ mc.displayWidth = value;
+ }
+
+ @Override
+ public int getFramebufferHeight() {
+ return mc.displayHeight;
+ }
+
+ @Override
+ public void setFramebufferHeight(int value) {
+ mc.displayHeight = value;
+ }
+
+ public long getHandle() {
+ return 0;
+ }
+
+ public int getWidth() {
+ return Display.getWidth();
+ }
+
+ public int getHeight() {
+ return Display.getHeight();
+ }
+
+ private ScaledResolution scaledResolution() {
+ ScaledResolution scaledResolution = this.scaledResolution;
+ if (scaledResolution == null) {
+ //#if MC>=10809
+ scaledResolution = new ScaledResolution(mc);
+ //#else
+ //$$ scaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
+ //#endif
+ this.scaledResolution = scaledResolution;
+ }
+ return scaledResolution;
+ }
+
+ public int getScaledWidth() {
+ return scaledResolution().getScaledWidth();
+ }
+
+ public int getScaledHeight() {
+ return scaledResolution().getScaledWidth();
+ }
+}
diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/EventsAdapter.java b/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/EventsAdapter.java
index 2083b9fc..4a567d0c 100644
--- a/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/EventsAdapter.java
+++ b/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/EventsAdapter.java
@@ -55,7 +55,7 @@ public class EventsAdapter extends EventRegistrations {
@SubscribeEvent
public void preRenderGameOverlay(RenderGameOverlayEvent.Pre event) {
Boolean result = null;
- switch (MCVer.getType(event)) {
+ switch (event.getType()) {
case CROSSHAIRS:
result = RenderSpectatorCrosshairCallback.EVENT.invoker().shouldRenderSpectatorCrosshair();
break;
diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java b/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java
new file mode 100644
index 00000000..cf16de42
--- /dev/null
+++ b/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java
@@ -0,0 +1,47 @@
+package com.replaymod.core.versions.forge;
+
+import com.replaymod.gradle.remap.Pattern;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraftforge.client.event.GuiScreenEvent;
+import net.minecraftforge.client.event.RenderGameOverlayEvent;
+import net.minecraftforge.client.event.RenderLivingEvent;
+
+class Patterns {
+ @Pattern
+ private static GuiButton getButton(GuiScreenEvent.ActionPerformedEvent event) {
+ //#if MC>=10904
+ return event.getButton();
+ //#else
+ //$$ return event.button;
+ //#endif
+ }
+
+ @Pattern
+ private static GuiScreen getGui(GuiScreenEvent event) {
+ //#if MC>=10904
+ return event.getGui();
+ //#else
+ //$$ return event.gui;
+ //#endif
+ }
+
+ @Pattern
+ private static EntityLivingBase getEntity(RenderLivingEvent event) {
+ //#if MC>=10904
+ return event.getEntity();
+ //#else
+ //$$ return event.entity;
+ //#endif
+ }
+
+ @Pattern
+ private static RenderGameOverlayEvent.ElementType getType(RenderGameOverlayEvent event) {
+ //#if MC>=10904
+ return event.getType();
+ //#else
+ //$$ return event.type;
+ //#endif
+ }
+}
diff --git a/versions/1.14.4-forge/mapping.txt b/versions/1.14.4-forge/mapping.txt
index 6a1960e7..ec310305 100644
--- a/versions/1.14.4-forge/mapping.txt
+++ b/versions/1.14.4-forge/mapping.txt
@@ -16,6 +16,9 @@ net.minecraft.network.play.server.SPacketEntity.Move net.minecraft.network.play.
net.minecraftforge.fml.network.NetworkRegistry net.minecraftforge.fml.common.network.NetworkRegistry
net.minecraft.client.particle.ParticleManager queue queueEntityFX
org.apache.maven.artifact.versioning.ComparableVersion net.minecraftforge.fml.common.versioning.ComparableVersion
+org.lwjgl.glfw.GLFW com.replaymod.core.versions.GLFW
+net.minecraft.client.MainWindow com.replaymod.core.versions.Window
+net.minecraft.client.audio.SimpleSound net.minecraft.client.audio.PositionedSoundRecord
net.minecraft.resources.FolderPack getInputStream() getInputStreamByName()
net.minecraft.client.gui.GuiYesNoCallback confirmResult() confirmClicked()
diff --git a/versions/1.14.4-forge/src/main/java/com/replaymod/core/ReplayModBackend.java b/versions/1.14.4-forge/src/main/java/com/replaymod/core/ReplayModBackend.java
index 3527ca6d..2ba2eab7 100644
--- a/versions/1.14.4-forge/src/main/java/com/replaymod/core/ReplayModBackend.java
+++ b/versions/1.14.4-forge/src/main/java/com/replaymod/core/ReplayModBackend.java
@@ -1,5 +1,6 @@
package com.replaymod.core;
+import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.ModList;
import static com.replaymod.core.ReplayMod.MOD_ID;
@@ -8,4 +9,12 @@ public class ReplayModBackend {
public String getVersion() {
return ModList.get().getModContainerById(MOD_ID).get().getModInfo().getVersion().toString();
}
+
+ public String getMinecraftVersion() {
+ return Minecraft.getInstance().getMinecraftGame().getVersion().getName();
+ }
+
+ public boolean isModLoaded(String id) {
+ return ModList.get().isLoaded(id.toLowerCase());
+ }
}
diff --git a/versions/1.7.10/src/main/java/com/replaymod/core/versions/BufferBuilder.java b/versions/1.7.10/src/main/java/com/replaymod/core/versions/BufferBuilder.java
new file mode 100644
index 00000000..73628626
--- /dev/null
+++ b/versions/1.7.10/src/main/java/com/replaymod/core/versions/BufferBuilder.java
@@ -0,0 +1,30 @@
+package com.replaymod.core.versions;
+
+import net.minecraft.client.renderer.Tessellator;
+
+public class BufferBuilder {
+
+ private final Tessellator inner;
+
+ public BufferBuilder(Tessellator inner) {
+ this.inner = inner;
+ }
+
+ public void startDrawing(int glQuads) {
+ inner.startDrawing(glQuads);
+ }
+
+ public void addVertexWithUV(double x, double y, double z, float u, float v) {
+ inner.addVertexWithUV(x, y, z, u, v);
+ }
+
+ public void setColorRGBA(int r, int g, int b, int a) {
+ inner.setColorRGBA(r, g, b, a);
+ }
+
+ public void addVertex(double x, double y, double z) {
+ inner.addVertex(x, y, z);
+ }
+
+ public static class VertexFormats {}
+}
diff --git a/versions/1.8/mapping.txt b/versions/1.8/mapping.txt
index c5cece6f..3096beb7 100644
--- a/versions/1.8/mapping.txt
+++ b/versions/1.8/mapping.txt
@@ -36,3 +36,5 @@ net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer net.minecra
net.minecraft.network.play.server.S3FPacketCustomPayload getChannelName() func_149169_c()
net.minecraft.network.play.server.S01PacketJoinGame getEntityId() func_149197_c()
net.minecraft.client.network.NetHandlerLoginClient networkManager field_147393_d
+net.minecraft.client.renderer.WorldRenderer com.replaymod.core.versions.BufferBuilder
+net.minecraft.client.renderer.vertex.DefaultVertexFormats com.replaymod.core.versions.BufferBuilder.VertexFormats
diff --git a/versions/1.9.4/mapping.txt b/versions/1.9.4/mapping.txt
index d0fcbe20..9225b4c1 100644
--- a/versions/1.9.4/mapping.txt
+++ b/versions/1.9.4/mapping.txt
@@ -20,6 +20,7 @@ net.minecraft.network.play.server.SPacketSpawnMob dataManager field_149043_l
net.minecraft.network.play.server.SPacketSpawnMob getDataManagerEntries() func_149027_c()
net.minecraft.network.play.server.SPacketSpawnPlayer getDataManagerEntries() func_148944_c()
net.minecraft.client.multiplayer.ServerList saveSingleServer() func_147414_b()
+net.minecraft.util.SoundEvent com.replaymod.core.versions.MCVer.SoundEvent
net.minecraft.network.play.server.SPacketJoinGame net.minecraft.network.play.server.S01PacketJoinGame
net.minecraft.network.play.server.SPacketChat net.minecraft.network.play.server.S02PacketChat