./gradlew :1.15.2:setCoreVersion

Also `./gradlew :jGui:1.15.2:setCoreVersion`.
This commit is contained in:
Jonas Herzig
2020-04-06 12:35:56 +02:00
parent f3c4092c72
commit b119d2d127
70 changed files with 1217 additions and 1217 deletions

View File

@@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class MixinShaderEntityRenderer {
//#if MC>=11400
@Inject(method = "renderCenter", at = @At("HEAD"))
@Inject(method = "renderWorld", at = @At("HEAD"))
//#else
//#if MC>=11400
//$$ @Inject(method = "updateCameraAndRender(FJ)V", at = @At("HEAD"))

View File

@@ -9,9 +9,9 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//#if MC>=11500
//$$ @Mixin(net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk.class)
@Mixin(net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk.class)
//#else
@Mixin(net.minecraft.client.render.chunk.ChunkRenderer.class)
//$$ @Mixin(net.minecraft.client.render.chunk.ChunkRenderer.class)
//#endif
public abstract class MixinShaderRenderChunk {

View File

@@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//#else
import net.minecraft.client.render.VisibleRegion;
//$$ import net.minecraft.client.render.VisibleRegion;
//#endif
//#if MC>=11400
@@ -31,7 +31,7 @@ public abstract class MixinShaderRenderGlobal {
@Shadow
public boolean needsTerrainUpdate;
@Inject(method = "setUpTerrain", at = @At("HEAD"), cancellable = true)
@Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
public void replayModCompat_setupTerrain(
//#if MC>=11400
Camera viewEntity,
@@ -44,10 +44,10 @@ public abstract class MixinShaderRenderGlobal {
//#endif
//#endif
//#if MC>=11500
//$$ Frustum camera,
//$$ boolean skipUpdate,
Frustum camera,
boolean skipUpdate,
//#else
VisibleRegion camera,
//$$ VisibleRegion camera,
//#endif
int frameCount,
boolean playerSpectator,

View File

@@ -445,7 +445,7 @@ public class ReplayMod implements
// Fail-fast in case we ever switch to async loading and forget to change this
// (except for fabric 1.15+ because it loads the mod before the client thread is set)
//#if FABRIC<1 || MC<11500
{ if (!MinecraftClient.getInstance().isOnThread()) throw new RuntimeException(); }
//$$ { if (!MinecraftClient.getInstance().isOnThread()) throw new RuntimeException(); }
//#endif
private ReplayModExecutor(String string_1) {

View File

@@ -4,20 +4,20 @@ package com.replaymod.core.events;
import de.johni0702.minecraft.gui.utils.Event;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.MatrixStack;
//#endif
public interface PostRenderWorldCallback {
Event<PostRenderWorldCallback> EVENT = Event.create((listeners) ->
//#if MC>=11500
//$$ (MatrixStack matrixStack) -> {
(MatrixStack matrixStack) -> {
//#else
() -> {
//$$ () -> {
//#endif
for (PostRenderWorldCallback listener : listeners) {
listener.postRenderWorld(
//#if MC>=11500
//$$ matrixStack
matrixStack
//#endif
);
}
@@ -26,7 +26,7 @@ public interface PostRenderWorldCallback {
void postRenderWorld(
//#if MC>=11500
//$$ MatrixStack matrixStack
MatrixStack matrixStack
//#endif
);
}

View File

@@ -11,13 +11,13 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.MatrixStack;
//#endif
@Mixin(GameRenderer.class)
public class MixinGameRenderer {
@Inject(
method = "renderCenter",
method = "renderWorld",
at = @At(
value = "FIELD",
target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z"
@@ -27,12 +27,12 @@ public class MixinGameRenderer {
float partialTicks,
long nanoTime,
//#if MC>=11500
//$$ MatrixStack matrixStack,
MatrixStack matrixStack,
//#endif
CallbackInfo ci) {
PostRenderWorldCallback.EVENT.invoker().postRenderWorld(
//#if MC>=11500
//$$ matrixStack
matrixStack
//#endif
);
}
@@ -40,7 +40,7 @@ public class MixinGameRenderer {
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
private void preRenderHand(
//#if MC>=11500
//$$ MatrixStack matrixStack,
MatrixStack matrixStack,
//#endif
Camera camera,
float partialTicks,

View File

@@ -4,7 +4,7 @@ package com.replaymod.core.mixin;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.versions.LangResourcePack;
import net.fabricmc.fabric.api.resource.ModResourcePack;
import net.fabricmc.fabric.impl.resources.ModResourcePackUtil;
import net.fabricmc.fabric.impl.resource.loader.ModResourcePackUtil;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.minecraft.resource.ResourcePack;

View File

@@ -140,7 +140,7 @@ public class LangResourcePack extends AbstractFileResourcePack {
public Collection<Identifier> findResources(
ResourceType resourcePackType,
//#if MC>=11500
//$$ String namespace,
String namespace,
//#endif
String path,
int maxDepth,

View File

@@ -24,10 +24,10 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
//#if MC>=11500
//$$ import net.minecraft.client.model.ModelPart.Cuboid;
//$$ import java.util.ArrayList;
import net.minecraft.client.model.ModelPart.Cuboid;
import java.util.ArrayList;
//#else
import net.minecraft.client.model.Box;
//$$ import net.minecraft.client.model.Box;
//#endif
//#if MC>=11400
@@ -88,7 +88,7 @@ import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormatElement;
//#if MC<11500
import net.minecraft.client.render.chunk.ChunkRenderTask;
//$$ import net.minecraft.client.render.chunk.ChunkRenderTask;
//#endif
//#else
//$$ import com.replaymod.core.mixin.ResourcePackRepositoryAccessor;
@@ -172,35 +172,35 @@ public class MCVer {
public static double Entity_getX(Entity entity) {
//#if MC>=11500
//$$ return entity.getX();
return entity.getX();
//#else
return entity.x;
//$$ return entity.x;
//#endif
}
public static double Entity_getY(Entity entity) {
//#if MC>=11500
//$$ return entity.getY();
return entity.getY();
//#else
return entity.y;
//$$ return entity.y;
//#endif
}
public static double Entity_getZ(Entity entity) {
//#if MC>=11500
//$$ return entity.getZ();
return entity.getZ();
//#else
return entity.z;
//$$ 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);
entity.setPos(x, y, z);
//#else
entity.x = x;
entity.y = y;
entity.z = z;
//$$ entity.x = x;
//$$ entity.y = y;
//$$ entity.z = z;
//#endif
}
@@ -368,13 +368,13 @@ public class MCVer {
@SuppressWarnings("unchecked")
//#if MC>=11500
//$$ public static List<Cuboid> cubeList(ModelPart modelRenderer) {
//$$ return new ArrayList<>(); // FIXME 1.15
//$$ }
//#else
public static List<Box> cubeList(ModelPart modelRenderer) {
return modelRenderer.boxes;
public static List<Cuboid> cubeList(ModelPart modelRenderer) {
return new ArrayList<>(); // FIXME 1.15
}
//#else
//$$ public static List<Box> cubeList(ModelPart modelRenderer) {
//$$ return modelRenderer.boxes;
//$$ }
//#endif
@SuppressWarnings("unchecked")
@@ -397,9 +397,9 @@ public class MCVer {
//#if MC>=11400
public static Window getWindow(MinecraftClient mc) {
//#if MC>=11500
//$$ return mc.getWindow();
return mc.getWindow();
//#else
return mc.window;
//$$ return mc.window;
//#endif
}
//#endif
@@ -609,9 +609,9 @@ public class MCVer {
}
//#if MC>=10800 && MC<11500
public interface ChunkRenderWorkerAccessor {
void doRunTask(ChunkRenderTask task) throws InterruptedException;
}
//$$ public interface ChunkRenderWorkerAccessor {
//$$ void doRunTask(ChunkRenderTask task) throws InterruptedException;
//$$ }
//#endif
public static long milliTime() {
@@ -624,10 +624,10 @@ public class MCVer {
public static void bindTexture(Identifier texture) {
//#if MC>=11500
//$$ getMinecraft().getTextureManager().bindTexture(texture);
getMinecraft().getTextureManager().bindTexture(texture);
//#else
//#if MC>=11400
getMinecraft().getTextureManager().bindTexture(texture);
//$$ getMinecraft().getTextureManager().bindTexture(texture);
//#else
//$$ getMinecraft().renderEngine.bindTexture(texture);
//#endif
@@ -822,10 +822,10 @@ public class MCVer {
public static boolean isKeyDown(int keyCode) {
//#if MC>=11500
//$$ return InputUtil.isKeyPressed(getMinecraft().getWindow().getHandle(), keyCode);
return InputUtil.isKeyPressed(getMinecraft().getWindow().getHandle(), keyCode);
//#else
//#if MC>=11400
return InputUtil.isKeyPressed(getMinecraft().window.getHandle(), keyCode);
//$$ return InputUtil.isKeyPressed(getMinecraft().window.getHandle(), keyCode);
//#else
//#if MC>=11400
//$$ return InputMappings.isKeyDown(keyCode);

View File

@@ -72,7 +72,7 @@ public class ScreenshotRenderer implements RenderInfo {
//#endif
);
//#if MC>=11500
//$$ mc.gameRenderer.onResized(displayWidthBefore, displayHeightBefore);
mc.gameRenderer.onResized(displayWidthBefore, displayHeightBefore);
//#endif
//#else
//$$ mc.resize(displayWidthBefore, displayHeightBefore);

View File

@@ -34,7 +34,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(value = EntityRenderer.class, priority = 1200)
public abstract class MixinRender {
//#if MC>=10800
@Inject(method = "isVisible", at=@At("HEAD"), cancellable = true)
@Inject(method = "shouldRender", at=@At("HEAD"), cancellable = true)
public void replayModExtras_isPlayerHidden(Entity entity, @Coerce Object camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> ci) {
ReplayModExtras.instance.get(PlayerOverview.class).ifPresent(playerOverview -> {
if (entity instanceof PlayerEntity) {

View File

@@ -8,9 +8,9 @@ import org.spongepowered.asm.mixin.gen.Accessor;
public interface IntegratedServerAccessor {
// TODO probably https://github.com/ReplayMod/remap/issues/10
//#if MC>=11500
//$$ @Accessor("paused")
@Accessor("paused")
//#else
@Accessor("field_5524")
//$$ @Accessor("field_5524")
//#endif
boolean isGamePaused();
}

View File

@@ -8,9 +8,9 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(MobSpawnS2CPacket.class)
public interface SPacketSpawnMobAccessor {
//#if MC<11500
@Accessor("dataTracker")
DataTracker getDataManager();
@Accessor("dataTracker")
void setDataManager(DataTracker value);
//$$ @Accessor("dataTracker")
//$$ DataTracker getDataManager();
//$$ @Accessor("dataTracker")
//$$ void setDataManager(DataTracker value);
//#endif
}

View File

@@ -8,9 +8,9 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(PlayerSpawnS2CPacket.class)
public interface SPacketSpawnPlayerAccessor {
//#if MC<11500
@Accessor("dataTracker")
DataTracker getDataManager();
@Accessor("dataTracker")
void setDataManager(DataTracker value);
//$$ @Accessor("dataTracker")
//$$ DataTracker getDataManager();
//$$ @Accessor("dataTracker")
//$$ void setDataManager(DataTracker value);
//#endif
}

View File

@@ -326,49 +326,49 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
@SuppressWarnings("unchecked")
private byte[] getPacketData(Packet packet) throws Exception {
//#if MC<11500
if (packet instanceof MobSpawnS2CPacket) {
MobSpawnS2CPacket p = (MobSpawnS2CPacket) packet;
SPacketSpawnMobAccessor pa = (SPacketSpawnMobAccessor) p;
if (pa.getDataManager() == null) {
pa.setDataManager(new DataTracker(null));
if (p.getTrackedValues() != null) {
Set<Integer> seen = new HashSet<>();
//$$ if (packet instanceof MobSpawnS2CPacket) {
//$$ MobSpawnS2CPacket p = (MobSpawnS2CPacket) packet;
//$$ SPacketSpawnMobAccessor pa = (SPacketSpawnMobAccessor) p;
//$$ if (pa.getDataManager() == null) {
//$$ pa.setDataManager(new DataTracker(null));
//$$ if (p.getTrackedValues() != null) {
//$$ Set<Integer> seen = new HashSet<>();
//#if MC>=10904
for (DataTracker.Entry<?> entry : Lists.reverse(p.getTrackedValues())) {
if (!seen.add(entry.getData().getId())) continue;
DataManager_set(pa.getDataManager(), entry);
}
//$$ for (DataTracker.Entry<?> entry : Lists.reverse(p.getTrackedValues())) {
//$$ if (!seen.add(entry.getData().getId())) continue;
//$$ DataManager_set(pa.getDataManager(), entry);
//$$ }
//#else
//$$ for(DataWatcher.WatchableObject wo : Lists.reverse((List<DataWatcher.WatchableObject>) p.func_149027_c())) {
//$$ if (!seen.add(wo.getDataValueId())) continue;
//$$ pa.getDataManager().addObject(wo.getDataValueId(), wo.getObject());
//$$ }
//#endif
}
}
}
if (packet instanceof PlayerSpawnS2CPacket) {
PlayerSpawnS2CPacket p = (PlayerSpawnS2CPacket) packet;
SPacketSpawnPlayerAccessor pa = (SPacketSpawnPlayerAccessor) p;
if (pa.getDataManager() == null) {
pa.setDataManager(new DataTracker(null));
if (p.getTrackedValues() != null) {
Set<Integer> seen = new HashSet<>();
//$$ }
//$$ }
//$$ }
//$$
//$$ if (packet instanceof PlayerSpawnS2CPacket) {
//$$ PlayerSpawnS2CPacket p = (PlayerSpawnS2CPacket) packet;
//$$ SPacketSpawnPlayerAccessor pa = (SPacketSpawnPlayerAccessor) p;
//$$ if (pa.getDataManager() == null) {
//$$ pa.setDataManager(new DataTracker(null));
//$$ if (p.getTrackedValues() != null) {
//$$ Set<Integer> seen = new HashSet<>();
//#if MC>=10904
for (DataTracker.Entry<?> entry : Lists.reverse(p.getTrackedValues())) {
if (!seen.add(entry.getData().getId())) continue;
DataManager_set(pa.getDataManager(), entry);
}
//$$ for (DataTracker.Entry<?> entry : Lists.reverse(p.getTrackedValues())) {
//$$ if (!seen.add(entry.getData().getId())) continue;
//$$ DataManager_set(pa.getDataManager(), entry);
//$$ }
//#else
//$$ for(DataWatcher.WatchableObject wo : Lists.reverse((List<DataWatcher.WatchableObject>) p.func_148944_c())) {
//$$ if (!seen.add(wo.getDataValueId())) continue;
//$$ pa.getDataManager().addObject(wo.getDataValueId(), wo.getObject());
//$$ }
//#endif
}
}
}
//$$ }
//$$ }
//$$ }
//#endif
//#if MC>=10800

View File

@@ -12,7 +12,7 @@ import net.minecraft.client.render.VertexFormatElement;
import org.lwjgl.opengl.GL11;
//#if MC>=11500
//$$ import com.mojang.datafixers.util.Pair;
import com.mojang.datafixers.util.Pair;
//#endif
//#if MC>=10904
@@ -140,10 +140,10 @@ public class BlendMeshBuilder
//$$ public static DMesh addBufferToMesh(WorldRenderer bufferBuilder, DMesh mesh, Vector3f vertOffset) {
//#endif
//#if MC>=11500
//$$ Pair<DrawArrayParameters, ByteBuffer> data = bufferBuilder.popData();
//$$ return addBufferToMesh(data.getSecond(), data.getFirst().getMode(), data.getFirst().getVertexFormat(), mesh, vertOffset);
Pair<DrawArrayParameters, ByteBuffer> data = bufferBuilder.popData();
return addBufferToMesh(data.getSecond(), data.getFirst().getMode(), data.getFirst().getVertexFormat(), mesh, vertOffset);
//#else
return addBufferToMesh(bufferBuilder.getByteBuffer(), bufferBuilder.getDrawMode(), bufferBuilder.getVertexFormat(), mesh, vertOffset);
//$$ return addBufferToMesh(bufferBuilder.getByteBuffer(), bufferBuilder.getDrawMode(), bufferBuilder.getVertexFormat(), mesh, vertOffset);
//#endif
}
@@ -168,15 +168,15 @@ public class BlendMeshBuilder
int posOffset = -1, colorOffset = -1, uvOffset = -1;
int index = 0;
//#if MC>=11500
//$$ int elementOffset = 0;
int elementOffset = 0;
//#endif
for (VertexFormatElement element : getElements(vertexFormat)) {
//#if MC>=11500
//$$ int offset = elementOffset;
//$$ elementOffset += element.getSize();
int offset = elementOffset;
elementOffset += element.getSize();
//#else
//#if MC>=10809
int offset = vertexFormat.getElementOffset(index);
//$$ int offset = vertexFormat.getElementOffset(index);
//#else
//$$ int offset = element.getOffset();
//#endif

View File

@@ -5,7 +5,7 @@ import com.replaymod.render.blend.data.Serializer;
//#if MC>=10800
// FIXME 1.15
//#if MC<11500
import com.replaymod.render.blend.exporters.ChunkExporter;
//$$ import com.replaymod.render.blend.exporters.ChunkExporter;
//#endif
import com.replaymod.render.blend.exporters.EntityExporter;
import com.replaymod.render.blend.exporters.ItemExporter;
@@ -58,7 +58,7 @@ public class BlendState implements Exporter {
register(renderState);
// FIXME 1.15
//#if MC<11500
register(new ChunkExporter());
//$$ register(new ChunkExporter());
//#endif
register(new EntityExporter(renderState));
register(new TileEntityExporter(renderState));

View File

@@ -1,175 +1,175 @@
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.exporters;
import com.replaymod.core.versions.MCVer;
import com.replaymod.render.blend.BlendMeshBuilder;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.Exporter;
import com.replaymod.render.blend.data.DMesh;
import com.replaymod.render.blend.data.DObject;
import com.replaymod.render.blend.mixin.ContainerLocalRenderInformationAccessor;
import com.replaymod.render.blend.mixin.WorldRendererAccessor;
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.texture.SpriteAtlasTexture;
import net.minecraft.client.util.GlAllocationUtils;
import com.mojang.blaze3d.platform.GLX;
import net.minecraft.client.render.chunk.ChunkRenderData;
import net.minecraft.client.render.chunk.ChunkRenderer;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.gl.VertexBuffer;
import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL15;
//$$ package com.replaymod.render.blend.exporters;
//$$
//$$ import com.replaymod.core.versions.MCVer;
//$$ import com.replaymod.render.blend.BlendMeshBuilder;
//$$ import com.replaymod.render.blend.BlendState;
//$$ import com.replaymod.render.blend.Exporter;
//$$ import com.replaymod.render.blend.data.DMesh;
//$$ import com.replaymod.render.blend.data.DObject;
//$$ import com.replaymod.render.blend.mixin.ContainerLocalRenderInformationAccessor;
//$$ import com.replaymod.render.blend.mixin.WorldRendererAccessor;
//$$ import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
//$$ import net.minecraft.client.MinecraftClient;
//$$ import net.minecraft.client.texture.SpriteAtlasTexture;
//$$ import net.minecraft.client.util.GlAllocationUtils;
//$$ import com.mojang.blaze3d.platform.GLX;
//$$ import net.minecraft.client.render.chunk.ChunkRenderData;
//$$ import net.minecraft.client.render.chunk.ChunkRenderer;
//$$ import net.minecraft.client.render.VertexFormats;
//$$ import net.minecraft.client.gl.VertexBuffer;
//$$ import org.apache.commons.lang3.tuple.Pair;
//$$ import org.lwjgl.opengl.GL11;
//$$ import org.lwjgl.opengl.GL15;
//$$
//#if MC>=10904
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.math.BlockPos;
//$$ import net.minecraft.client.render.RenderLayer;
//$$ import net.minecraft.util.math.BlockPos;
//#else
//$$ import net.minecraft.util.BlockPos;
//$$ import net.minecraft.util.EnumWorldBlockLayer;
//#endif
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ChunkExporter implements Exporter {
private final Map<BlockPos, DObject> chunkObjects = new HashMap<>();
//$$
//$$ import java.io.IOException;
//$$ import java.nio.ByteBuffer;
//$$ import java.util.ArrayList;
//$$ import java.util.EnumMap;
//$$ import java.util.HashMap;
//$$ import java.util.List;
//$$ import java.util.Map;
//$$
//$$ public class ChunkExporter implements Exporter {
//$$ private final Map<BlockPos, DObject> chunkObjects = new HashMap<>();
//#if MC>=10904
private final Map<BlockPos, Map<RenderLayer, DObject>> chunkLayerObjects = new HashMap<>();
private final List<Pair<ChunkRenderer, RenderLayer>> chunks = new ArrayList<>();
//$$ private final Map<BlockPos, Map<RenderLayer, DObject>> chunkLayerObjects = new HashMap<>();
//$$ private final List<Pair<ChunkRenderer, RenderLayer>> chunks = new ArrayList<>();
//#else
//$$ private final Map<BlockPos, Map<EnumWorldBlockLayer, DObject>> chunkLayerObjects = new HashMap<>();
//$$ private final List<Pair<RenderChunk, EnumWorldBlockLayer>> chunks = new ArrayList<>();
//#endif
private DObject chunksObject;
private int frame;
public void addChunkUpdate(ChunkRenderer chunk, ChunkRenderData compiledChunk) {
//$$ private DObject chunksObject;
//$$ private int frame;
//$$
//$$ public void addChunkUpdate(ChunkRenderer chunk, ChunkRenderData compiledChunk) {
//#if MC>=10904
for (RenderLayer layer : RenderLayer.values()) {
//$$ for (RenderLayer layer : RenderLayer.values()) {
//#else
//$$ for (EnumWorldBlockLayer layer : EnumWorldBlockLayer.values()) {
//#endif
if (compiledChunk == null || compiledChunk.isBufferInitialized(layer)) {
chunks.add(Pair.of(chunk, layer));
}
}
}
@Override
public void setup() throws IOException {
MinecraftClient mc = MCVer.getMinecraft();
@SuppressWarnings("unchecked")
List<ContainerLocalRenderInformationAccessor> renderInfos = ((WorldRendererAccessor) mc.worldRenderer).getRenderInfos();
for (ContainerLocalRenderInformationAccessor renderInfo : renderInfos) {
ChunkRenderer renderChunk = renderInfo.getRenderChunk();
ChunkRenderData compiledChunk = renderChunk.getData();
if (!compiledChunk.isEmpty()) {
addChunkUpdate(renderChunk, null);
}
}
chunksObject = new DObject(DObject.Type.OB_EMPTY);
chunksObject.id.name = "Chunks";
chunksObject.layers = 1 << 1;
BlendState.getState().getScene().base.add(chunksObject);
}
@Override
public void tearDown() throws IOException {
chunks.clear();
chunkObjects.clear();
chunksObject = null;
}
@Override
public void preFrame(int frame) throws IOException {
this.frame = frame;
}
@Override
public void postFrame(int frame) throws IOException {
//$$ if (compiledChunk == null || compiledChunk.isBufferInitialized(layer)) {
//$$ chunks.add(Pair.of(chunk, layer));
//$$ }
//$$ }
//$$ }
//$$
//$$ @Override
//$$ public void setup() throws IOException {
//$$
//$$ MinecraftClient mc = MCVer.getMinecraft();
//$$ @SuppressWarnings("unchecked")
//$$ List<ContainerLocalRenderInformationAccessor> renderInfos = ((WorldRendererAccessor) mc.worldRenderer).getRenderInfos();
//$$ for (ContainerLocalRenderInformationAccessor renderInfo : renderInfos) {
//$$ ChunkRenderer renderChunk = renderInfo.getRenderChunk();
//$$ ChunkRenderData compiledChunk = renderChunk.getData();
//$$ if (!compiledChunk.isEmpty()) {
//$$ addChunkUpdate(renderChunk, null);
//$$ }
//$$ }
//$$
//$$ chunksObject = new DObject(DObject.Type.OB_EMPTY);
//$$ chunksObject.id.name = "Chunks";
//$$ chunksObject.layers = 1 << 1;
//$$ BlendState.getState().getScene().base.add(chunksObject);
//$$ }
//$$
//$$ @Override
//$$ public void tearDown() throws IOException {
//$$ chunks.clear();
//$$ chunkObjects.clear();
//$$ chunksObject = null;
//$$ }
//$$
//$$ @Override
//$$ public void preFrame(int frame) throws IOException {
//$$ this.frame = frame;
//$$ }
//$$
//$$ @Override
//$$ public void postFrame(int frame) throws IOException {
//#if MC>=10904
for (Pair<ChunkRenderer, RenderLayer> pair : chunks) {
RenderLayer layer = pair.getRight();
//$$ for (Pair<ChunkRenderer, RenderLayer> pair : chunks) {
//$$ RenderLayer layer = pair.getRight();
//#else
//$$ for (Pair<RenderChunk, EnumWorldBlockLayer> pair : chunks) {
//$$ EnumWorldBlockLayer layer = pair.getRight();
//#endif
ChunkRenderer chunk = pair.getLeft();
DObject chunkObject = chunkObjects.get(chunk.getOrigin());
if (chunkObject == null) {
chunkObject = buildChunkObject(chunk);
chunkObjects.put(chunk.getOrigin(), chunkObject);
chunkLayerObjects.put(chunk.getOrigin(), new EnumMap<>(layer.getDeclaringClass()));
}
DObject layerObject = buildChunkLayerObject(chunkObject, chunk, layer);
if (layerObject == null) continue;
//$$ ChunkRenderer chunk = pair.getLeft();
//$$ DObject chunkObject = chunkObjects.get(chunk.getOrigin());
//$$ if (chunkObject == null) {
//$$ chunkObject = buildChunkObject(chunk);
//$$ chunkObjects.put(chunk.getOrigin(), chunkObject);
//$$ chunkLayerObjects.put(chunk.getOrigin(), new EnumMap<>(layer.getDeclaringClass()));
//$$ }
//$$ DObject layerObject = buildChunkLayerObject(chunkObject, chunk, layer);
//$$ if (layerObject == null) continue;
//#if MC>=10904
Map<RenderLayer, DObject> layerObjects
//$$ Map<RenderLayer, DObject> layerObjects
//#else
//$$ Map<EnumWorldBlockLayer, DObject> layerObjects
//#endif
= chunkLayerObjects.get(chunk.getOrigin());
DObject oldLayerObject = layerObjects.get(layer);
if (oldLayerObject != null) {
oldLayerObject.keyframe("hide", 0, frame, 1f);
}
if (frame > 0) {
layerObject.keyframe("hide", 0, frame - 1, 1f);
layerObject.keyframe("hide", 0, frame, 0f);
} else {
layerObject.keyframe("hide", 0, frame, 0f);
}
layerObjects.put(layer, layerObject);
}
chunks.clear();
}
private DObject buildChunkObject(ChunkRenderer renderChunk) {
BlockPos pos = renderChunk.getOrigin();
DObject chunkObject = new DObject(DObject.Type.OB_EMPTY);
chunkObject.setParent(chunksObject);
chunkObject.id.name = "Chunk[" + pos.getX()/16 + "/" + pos.getY()/16 + "/" + pos.getZ()/16 + "]";
chunkObject.loc = new Vector3f(pos.getX(), -pos.getZ(), pos.getY());
return chunkObject;
}
private DObject buildChunkLayerObject(DObject chunkObject, ChunkRenderer renderChunk,
//$$ = chunkLayerObjects.get(chunk.getOrigin());
//$$ DObject oldLayerObject = layerObjects.get(layer);
//$$ if (oldLayerObject != null) {
//$$ oldLayerObject.keyframe("hide", 0, frame, 1f);
//$$ }
//$$ if (frame > 0) {
//$$ layerObject.keyframe("hide", 0, frame - 1, 1f);
//$$ layerObject.keyframe("hide", 0, frame, 0f);
//$$ } else {
//$$ layerObject.keyframe("hide", 0, frame, 0f);
//$$ }
//$$ layerObjects.put(layer, layerObject);
//$$ }
//$$ chunks.clear();
//$$ }
//$$
//$$ private DObject buildChunkObject(ChunkRenderer renderChunk) {
//$$ BlockPos pos = renderChunk.getOrigin();
//$$ DObject chunkObject = new DObject(DObject.Type.OB_EMPTY);
//$$ chunkObject.setParent(chunksObject);
//$$ chunkObject.id.name = "Chunk[" + pos.getX()/16 + "/" + pos.getY()/16 + "/" + pos.getZ()/16 + "]";
//$$ chunkObject.loc = new Vector3f(pos.getX(), -pos.getZ(), pos.getY());
//$$ return chunkObject;
//$$ }
//$$
//$$ private DObject buildChunkLayerObject(DObject chunkObject, ChunkRenderer renderChunk,
//#if MC>=10904
RenderLayer layer) {
//$$ RenderLayer layer) {
//#else
//$$ EnumWorldBlockLayer layer) {
//#endif
VertexBuffer vertexBuffer = renderChunk.getGlBuffer(layer.ordinal());
if (vertexBuffer == null) return null;
DObject layerObject = new DObject(buildChunkLayerMesh(vertexBuffer));
layerObject.setParent(chunkObject);
layerObject.id.name = chunkObject.id.name + " - " + layer + " - Frame " + frame;
return layerObject;
}
private DMesh buildChunkLayerMesh(VertexBuffer vertexBuffer) {
vertexBuffer.bind();
int size = GL15.glGetBufferParameteri(GLX.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE);
ByteBuffer byteBuffer = GlAllocationUtils.allocateByteBuffer(size);
GL15.glGetBufferSubData(GLX.GL_ARRAY_BUFFER, 0, byteBuffer);
vertexBuffer.unbind();
MCVer.getMinecraft().getTextureManager().bindTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEX);
return BlendMeshBuilder.addBufferToMesh(byteBuffer, GL11.GL_QUADS, VertexFormats.POSITION_COLOR_UV_LMAP, null, null);
}
private static final int STRIDE = 28;
}
//$$ VertexBuffer vertexBuffer = renderChunk.getGlBuffer(layer.ordinal());
//$$ if (vertexBuffer == null) return null;
//$$
//$$ DObject layerObject = new DObject(buildChunkLayerMesh(vertexBuffer));
//$$ layerObject.setParent(chunkObject);
//$$ layerObject.id.name = chunkObject.id.name + " - " + layer + " - Frame " + frame;
//$$ return layerObject;
//$$ }
//$$
//$$ private DMesh buildChunkLayerMesh(VertexBuffer vertexBuffer) {
//$$ vertexBuffer.bind();
//$$ int size = GL15.glGetBufferParameteri(GLX.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE);
//$$ ByteBuffer byteBuffer = GlAllocationUtils.allocateByteBuffer(size);
//$$ GL15.glGetBufferSubData(GLX.GL_ARRAY_BUFFER, 0, byteBuffer);
//$$ vertexBuffer.unbind();
//$$
//$$ MCVer.getMinecraft().getTextureManager().bindTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEX);
//$$
//$$ return BlendMeshBuilder.addBufferToMesh(byteBuffer, GL11.GL_QUADS, VertexFormats.POSITION_COLOR_UV_LMAP, null, null);
//$$ }
//$$
//$$ private static final int STRIDE = 28;
//$$ }
//#endif

View File

@@ -125,13 +125,13 @@ public class ItemExporter implements Exporter {
//#endif
: 0xffffffff;
//#if MC>=11500
//$$ // FIXME 1.15
// FIXME 1.15
//#else
//#if MC>=11400
buffer.putVertexData(quad.getVertexData());
buffer.setQuadColor(color);
Vec3i vec3i_1 = quad.getFace().getVector();
buffer.postNormal(vec3i_1.getX(), vec3i_1.getY(), vec3i_1.getZ());
//$$ buffer.putVertexData(quad.getVertexData());
//$$ buffer.setQuadColor(color);
//$$ Vec3i vec3i_1 = quad.getFace().getVector();
//$$ buffer.postNormal(vec3i_1.getX(), vec3i_1.getY(), vec3i_1.getZ());
//#else
//$$ LightUtil.renderQuadColor(buffer, quad, color);
//#endif

View File

@@ -9,9 +9,9 @@ import org.lwjgl.opengl.GL11;
//#if MC>=11400
//#if MC>=11500
//$$ import net.minecraft.client.model.ModelPart.Cuboid;
import net.minecraft.client.model.ModelPart.Cuboid;
//#else
import net.minecraft.client.model.Box;
//$$ import net.minecraft.client.model.Box;
//#endif
import net.minecraft.client.model.ModelPart;
//#else
@@ -72,9 +72,9 @@ public class ModelRendererExporter implements Exporter {
if (object == null) {
object = new ModelBasedDObject(model, scale);
//#if MC>=11500
//$$ object.id.name = "???"; // FIXME 1.15 can we somehow nicely derive this?
object.id.name = "???"; // FIXME 1.15 can we somehow nicely derive this?
//#else
object.id.name = model.name;
//$$ object.id.name = model.name;
//#endif
object.setParent(parent);
}
@@ -86,13 +86,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
//$$ }
//#else
for (Box box : cubeList(model)) {
box.render(builder, scale);
for (Cuboid box : cubeList(model)) {
// FIXME 1.15
}
//#else
//$$ for (Box box : cubeList(model)) {
//$$ box.render(builder, scale);
//$$ }
//#endif
builder.maybeFinishDrawing();
return mesh;

View File

@@ -117,11 +117,11 @@ public class ParticlesExporter implements Exporter {
double dy = acc.getPrevPosY() + (acc.getPosY() - acc.getPrevPosY()) * renderPartialTicks;
double dz = acc.getPrevPosZ() + (acc.getPosZ() - acc.getPrevPosZ()) * renderPartialTicks;
//#if MC>=11500
//$$ // FIXME 1.15 is this still required?
// FIXME 1.15 is this still required?
//#else
dx -= Particle.cameraX;
dy -= Particle.cameraY;
dz -= Particle.cameraZ;
//$$ dx -= Particle.cameraX;
//$$ dy -= Particle.cameraY;
//$$ dz -= Particle.cameraZ;
//#endif
Vector3f offset = new Vector3f((float) dx, (float) dy, (float) dz);
Matrix4f.translate(offset, modelView, modelView);
@@ -182,7 +182,7 @@ public class ParticlesExporter implements Exporter {
//#endif
0
//#if MC<11500
, 1, 1, 0, 0, 0
//$$ , 1, 1, 0, 0, 0
//#endif
);
//#else

View File

@@ -1,27 +1,27 @@
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
//$$ package com.replaymod.render.blend.mixin;
//$$
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.gen.Accessor;
//$$
//#if MC>=11500
//$$ import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
//#else
import net.minecraft.client.render.chunk.ChunkRenderer;
//$$ import net.minecraft.client.render.chunk.ChunkRenderer;
//#endif
@Mixin(targets = "net.minecraft.client.render.WorldRenderer$ChunkInfo")
public interface ContainerLocalRenderInformationAccessor {
//$$
//$$ @Mixin(targets = "net.minecraft.client.render.WorldRenderer$ChunkInfo")
//$$ public interface ContainerLocalRenderInformationAccessor {
//#if MC>=11500
//$$ @Accessor("chunk")
//$$ BuiltChunk getRenderChunk();
//#else
//#if MC>=11400
@Accessor("renderer")
//$$ @Accessor("renderer")
//#else
//$$ @Accessor
//#endif
ChunkRenderer getRenderChunk();
//$$ ChunkRenderer getRenderChunk();
//#endif
}
//$$ }
//#endif

View File

@@ -1,35 +1,35 @@
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ChunkExporter;
import net.minecraft.client.render.chunk.ChunkRenderWorker;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$ package com.replaymod.render.blend.mixin;
//$$
//$$ import com.replaymod.render.blend.BlendState;
//$$ import com.replaymod.render.blend.exporters.ChunkExporter;
//$$ import net.minecraft.client.render.chunk.ChunkRenderWorker;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.injection.At;
//$$ import org.spongepowered.asm.mixin.injection.Inject;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$
//#if MC>=11400
import net.minecraft.client.render.chunk.ChunkRenderTask;
//$$ import net.minecraft.client.render.chunk.ChunkRenderTask;
//#else
//$$ import net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator;
//#endif
@Mixin(ChunkRenderWorker.class)
public abstract class MixinChunkRenderWorker {
@Inject(method = "runTask", at = @At("RETURN"))
//$$
//$$ @Mixin(ChunkRenderWorker.class)
//$$ public abstract class MixinChunkRenderWorker {
//$$
//$$ @Inject(method = "runTask", at = @At("RETURN"))
//#if MC>=11400
public void afterChunkUpdate(ChunkRenderTask task, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
if (task.getStage() == ChunkRenderTask.Stage.DONE
&& task.getMode() == ChunkRenderTask.Mode.REBUILD_CHUNK) {
blendState.get(ChunkExporter.class).addChunkUpdate(task.getChunkRenderer(), task.getRenderData());
}
}
}
//$$ public void afterChunkUpdate(ChunkRenderTask task, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ if (task.getStage() == ChunkRenderTask.Stage.DONE
//$$ && task.getMode() == ChunkRenderTask.Mode.REBUILD_CHUNK) {
//$$ blendState.get(ChunkExporter.class).addChunkUpdate(task.getChunkRenderer(), task.getRenderData());
//$$ }
//$$ }
//$$ }
//#else
//$$ public void afterChunkUpdate(ChunkCompileTaskGenerator task, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
@@ -41,5 +41,5 @@ public abstract class MixinChunkRenderWorker {
//$$ }
//$$ }
//#endif
}
//$$ }
//#endif

View File

@@ -1,64 +1,64 @@
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ParticlesExporter;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$ package com.replaymod.render.blend.mixin;
//$$
//$$ import com.replaymod.render.blend.BlendState;
//$$ import com.replaymod.render.blend.exporters.ParticlesExporter;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.injection.At;
//$$ import org.spongepowered.asm.mixin.injection.Inject;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$
//#if MC>=11400
import net.minecraft.client.render.Camera;
//$$ import net.minecraft.client.render.Camera;
//#else
//$$ import net.minecraft.entity.Entity;
//#endif
//$$
//#if MC>=10904
import net.minecraft.client.particle.ParticleManager;
//$$ import net.minecraft.client.particle.ParticleManager;
//#else
//$$ import net.minecraft.client.particle.EffectRenderer;
//#endif
//$$
//#if MC>=10904
@Mixin(ParticleManager.class)
//$$ @Mixin(ParticleManager.class)
//#else
//$$ @Mixin(EffectRenderer.class)
//#endif
public abstract class MixinEffectRenderer {
@Inject(method = "renderParticles", at = @At("HEAD"))
private void preRender(
//$$ public abstract class MixinEffectRenderer {
//$$
//$$ @Inject(method = "renderParticles", at = @At("HEAD"))
//$$ private void preRender(
//#if MC>=11400
Camera view,
//$$ Camera view,
//#else
//$$ Entity view,
//#endif
float renderPartialTicks,
CallbackInfo ci
) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ParticlesExporter.class).preParticlesRender(false);
}
}
@Inject(method = "renderParticles", at = @At("RETURN"))
private void postRender(
//$$ float renderPartialTicks,
//$$ CallbackInfo ci
//$$ ) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ParticlesExporter.class).preParticlesRender(false);
//$$ }
//$$ }
//$$
//$$ @Inject(method = "renderParticles", at = @At("RETURN"))
//$$ private void postRender(
//#if MC>=11400
Camera view,
//$$ Camera view,
//#else
//$$ Entity view,
//#endif
float renderPartialTicks,
CallbackInfo ci
) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ParticlesExporter.class).postParticlesRender();
}
}
//$$ float renderPartialTicks,
//$$ CallbackInfo ci
//$$ ) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ParticlesExporter.class).postParticlesRender();
//$$ }
//$$ }
//$$
//#if MC<11400
//$$ @Inject(method = "renderLitParticles", at = @At("HEAD"))
//$$ public void preLitRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
@@ -76,5 +76,5 @@ public abstract class MixinEffectRenderer {
//$$ }
//$$ }
//#endif
}
//$$ }
//#endif

View File

@@ -1,73 +1,73 @@
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ModelRendererExporter;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$ package com.replaymod.render.blend.mixin;
//$$
//$$ import com.replaymod.render.blend.BlendState;
//$$ import com.replaymod.render.blend.exporters.ModelRendererExporter;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.injection.At;
//$$ import org.spongepowered.asm.mixin.injection.Inject;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$
//#if MC>=11400
import net.minecraft.client.model.ModelPart;
//$$ import net.minecraft.client.model.ModelPart;
//#else
//$$ import net.minecraft.client.model.ModelRenderer;
//#endif
@Mixin(ModelPart.class)
public abstract class MixinModelRenderer {
@Inject(method = "render", at = @At("HEAD"))
public void preRender(float scale, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ModelRendererExporter.class).preRenderModel((ModelPart)(Object)this, scale);
}
}
@Inject(method = "method_2852", at = @At("HEAD"))
public void preRenderWithRotation(float scale, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ModelRendererExporter.class).preRenderModel((ModelPart)(Object)this, scale);
}
}
@Inject(method = "render", at = @At("RETURN"))
public void postRender(float scale, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ModelRendererExporter.class).postRenderModel();
}
}
@Inject(method = "method_2852", at = @At("RETURN"))
public void postRenderWithRotation(float scale, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ModelRendererExporter.class).postRenderModel();
}
}
@Inject(method = "render",
at = @At(value = "INVOKE",
target = "Lcom/mojang/blaze3d/platform/GlStateManager;callList(I)V"),
expect = 3)
public void onRender(float scale, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ModelRendererExporter.class).onRenderModel();
}
}
@Inject(method = "method_2852",
at = @At(value = "INVOKE",
target = "Lcom/mojang/blaze3d/platform/GlStateManager;callList(I)V"))
public void onRenderWithRotation(float scale, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ModelRendererExporter.class).onRenderModel();
}
}
}
//$$
//$$ @Mixin(ModelPart.class)
//$$ public abstract class MixinModelRenderer {
//$$ @Inject(method = "render", at = @At("HEAD"))
//$$ public void preRender(float scale, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ModelRendererExporter.class).preRenderModel((ModelPart)(Object)this, scale);
//$$ }
//$$ }
//$$
//$$ @Inject(method = "method_2852", at = @At("HEAD"))
//$$ public void preRenderWithRotation(float scale, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ModelRendererExporter.class).preRenderModel((ModelPart)(Object)this, scale);
//$$ }
//$$ }
//$$
//$$ @Inject(method = "render", at = @At("RETURN"))
//$$ public void postRender(float scale, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ModelRendererExporter.class).postRenderModel();
//$$ }
//$$ }
//$$
//$$ @Inject(method = "method_2852", at = @At("RETURN"))
//$$ public void postRenderWithRotation(float scale, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ModelRendererExporter.class).postRenderModel();
//$$ }
//$$ }
//$$
//$$ @Inject(method = "render",
//$$ at = @At(value = "INVOKE",
//$$ target = "Lcom/mojang/blaze3d/platform/GlStateManager;callList(I)V"),
//$$ expect = 3)
//$$ public void onRender(float scale, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ModelRendererExporter.class).onRenderModel();
//$$ }
//$$ }
//$$
//$$ @Inject(method = "method_2852",
//$$ at = @At(value = "INVOKE",
//$$ target = "Lcom/mojang/blaze3d/platform/GlStateManager;callList(I)V"))
//$$ public void onRenderWithRotation(float scale, CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ModelRendererExporter.class).onRenderModel();
//$$ }
//$$ }
//$$ }
//#endif

View File

@@ -10,9 +10,9 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import net.minecraft.client.render.Frustum;
import net.minecraft.client.render.Frustum;
//#else
import net.minecraft.client.render.VisibleRegion;
//$$ import net.minecraft.client.render.VisibleRegion;
//#endif
//#if MC>=11400
@@ -37,12 +37,12 @@ public abstract class MixinRenderGlobal {
// FIXME wither skull ._. mojang pls
//#if MC>=11500
//$$ @Inject(method = "renderEntity", at = @At("HEAD"))
@Inject(method = "renderEntity", at = @At("HEAD"))
//#else
@Inject(method = "renderEntities",
at = @At(value = "INVOKE",
//$$ @Inject(method = "renderEntities",
//$$ at = @At(value = "INVOKE",
//#if MC>=10904
target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;FZ)V"))
//$$ target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;FZ)V"))
//#else
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)Z"))
//#endif
@@ -55,16 +55,16 @@ public abstract class MixinRenderGlobal {
}
//#if MC>=11500
//$$ @Inject(method = "renderEntity", at = @At("RETURN"))
@Inject(method = "renderEntity", at = @At("RETURN"))
//#else
@Inject(method = "renderEntities",
at = @At(value = "INVOKE",
//$$ @Inject(method = "renderEntities",
//$$ at = @At(value = "INVOKE",
//#if MC>=10904
target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;FZ)V",
//$$ target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;FZ)V",
//#else
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)Z",
//#endif
shift = At.Shift.AFTER))
//$$ shift = At.Shift.AFTER))
//#endif
private void postEntityRender(CallbackInfo ci) {
BlendState blendState = BlendState.getState();
@@ -74,38 +74,38 @@ public abstract class MixinRenderGlobal {
}
//#if MC>=11500
//$$ // FIXME
// FIXME
//#else
@Inject(method = "renderEntities", at = @At(
value = "INVOKE",
//$$ @Inject(method = "renderEntities", at = @At(
//$$ value = "INVOKE",
//#if MC>=11400
target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;render(Lnet/minecraft/block/entity/BlockEntity;FI)V"
//$$ target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;render(Lnet/minecraft/block/entity/BlockEntity;FI)V"
//#else
//$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V"
//#endif
))
private void preTileEntityRender(CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).preTileEntitiesRender();
}
}
@Inject(method = "renderEntities", at = @At(
value = "INVOKE",
//$$ ))
//$$ private void preTileEntityRender(CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(TileEntityExporter.class).preTileEntitiesRender();
//$$ }
//$$ }
//$$
//$$ @Inject(method = "renderEntities", at = @At(
//$$ value = "INVOKE",
//#if MC>=11400
target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;render(Lnet/minecraft/block/entity/BlockEntity;FI)V",
//$$ target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;render(Lnet/minecraft/block/entity/BlockEntity;FI)V",
//#else
//$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V",
//#endif
shift = At.Shift.AFTER
))
private void postTileEntityRender(CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).postTileEntitiesRender();
}
}
//$$ shift = At.Shift.AFTER
//$$ ))
//$$ private void postTileEntityRender(CallbackInfo ci) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(TileEntityExporter.class).postTileEntitiesRender();
//$$ }
//$$ }
//#endif
}
//#endif

View File

@@ -10,8 +10,8 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import net.minecraft.client.render.VertexConsumer;
//$$ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if MC>=11400
@@ -34,11 +34,11 @@ import net.minecraft.client.render.model.BakedModel;
//#endif
public abstract class MixinRenderItem {
//#if MC>=11500
//$$ @Inject(method = "renderBakedItemModel", at = @At("HEAD"))
//$$ private void onRenderModel(BakedModel model, ItemStack stack, int int_1, int int_2, MatrixStack matrixStack_1, VertexConsumer vertexConsumer_1, CallbackInfo ci) {
@Inject(method = "renderBakedItemModel", at = @At("HEAD"))
private void onRenderModel(BakedModel model, ItemStack stack, int int_1, int int_2, MatrixStack matrixStack_1, VertexConsumer vertexConsumer_1, CallbackInfo ci) {
//#else
//#if MC>=11400
@Inject(method = "renderItemModel", at = @At("HEAD"))
//$$ @Inject(method = "renderItemModel", at = @At("HEAD"))
//#else
//#if MC>=11400
//$$ @Inject(method = "renderModel(Lnet/minecraft/client/renderer/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
@@ -53,7 +53,7 @@ public abstract class MixinRenderItem {
//#endif
//#endif
//#endif
private void onRenderModel(BakedModel model, ItemStack stack, CallbackInfo ci) {
//$$ private void onRenderModel(BakedModel model, ItemStack stack, CallbackInfo ci) {
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {

View File

@@ -21,20 +21,20 @@ import net.minecraft.client.render.entity.LivingEntityRenderer;
//#endif
public abstract class MixinRenderLivingBase {
//#if MC>=11500
//$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(
@Inject(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(
//#else
//#if FABRIC>=1
@Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
//$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
//#else
//$$ @Inject(method = "doRender(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
//#endif
//#endif
value = "INVOKE",
//#if MC>=11500
//$$ target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;scale(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/util/math/MatrixStack;F)V",
target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;scale(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/util/math/MatrixStack;F)V",
//#else
//#if MC>=10904
target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;scaleAndTranslate(Lnet/minecraft/entity/LivingEntity;F)F",
//$$ target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;scaleAndTranslate(Lnet/minecraft/entity/LivingEntity;F)F",
//#else
//$$ target = "Lnet/minecraft/client/renderer/entity/RendererLivingEntity;preRenderCallback(Lnet/minecraft/entity/EntityLivingBase;F)V",
//#endif

View File

@@ -10,8 +10,8 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
//#if MC>=11500
//$$ import net.minecraft.client.render.VertexConsumerProvider;
//$$ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if MC>=10904
@@ -25,10 +25,10 @@ public abstract class MixinRenderManager {
@Inject(
//#if MC>=11500
//$$ method = "render",
method = "render",
//#else
//#if MC>=11400 && FABRIC>=1
method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//$$ method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//#else
//#if MC>=11400
//$$ method = "renderEntity",
@@ -39,17 +39,17 @@ public abstract class MixinRenderManager {
//#endif
at = @At(value = "INVOKE",
//#if MC>=11500
//$$ target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V"))
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V"))
//#else
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V"))
//$$ target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V"))
//#endif
public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks,
//#if MC>=11500
//$$ MatrixStack matrixStack,
//$$ VertexConsumerProvider vertexConsumerProvider,
//$$ int int_1,
MatrixStack matrixStack,
VertexConsumerProvider vertexConsumerProvider,
int int_1,
//#else
boolean box,
//$$ boolean box,
//#endif
//#if MC>=10904
CallbackInfo ci) {
@@ -64,10 +64,10 @@ public abstract class MixinRenderManager {
@Inject(
//#if MC>=11500
//$$ method = "render",
method = "render",
//#else
//#if MC>=11400
method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//$$ method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//#else
//#if MC>=11400
//$$ method = "renderEntity",
@@ -78,18 +78,18 @@ public abstract class MixinRenderManager {
//#endif
at = @At(value = "INVOKE",
//#if MC>=11500
//$$ target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V",
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V",
//#else
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V",
//$$ target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V",
//#endif
shift = At.Shift.AFTER))
public void postRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks,
//#if MC>=11500
//$$ MatrixStack matrixStack,
//$$ VertexConsumerProvider vertexConsumerProvider,
//$$ int int_1,
MatrixStack matrixStack,
VertexConsumerProvider vertexConsumerProvider,
int int_1,
//#else
boolean box,
//$$ boolean box,
//#endif
//#if MC>=10904
CallbackInfo ci) {

View File

@@ -1,29 +1,29 @@
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.TileEntityExporter;
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
import net.minecraft.block.entity.BlockEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(BlockEntityRenderDispatcher.class)
public abstract class MixinTileEntityRendererDispatcher {
//$$ package com.replaymod.render.blend.mixin;
//$$
//$$ import com.replaymod.render.blend.BlendState;
//$$ import com.replaymod.render.blend.exporters.TileEntityExporter;
//$$ import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
//$$ import net.minecraft.block.entity.BlockEntity;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.injection.At;
//$$ import org.spongepowered.asm.mixin.injection.Inject;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$
//$$ @Mixin(BlockEntityRenderDispatcher.class)
//$$ public abstract class MixinTileEntityRendererDispatcher {
//$$
//#if MC>=11400
//#if MC>=11400
@Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
at = @At("HEAD"))
//$$ @Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
//$$ at = @At("HEAD"))
//#else
//$$ @Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
//$$ at = @At("HEAD"))
//#endif
public void preRender(BlockEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
float alpha = 1;
//$$ public void preRender(BlockEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
//$$ float alpha = 1;
//#else
//#if MC>=11200
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
@@ -36,21 +36,21 @@ public abstract class MixinTileEntityRendererDispatcher {
//$$ float alpha = 1;
//#endif
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).preRender(tileEntity, x, y, z, renderPartialTicks, destroyStage, alpha);
}
}
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(TileEntityExporter.class).preRender(tileEntity, x, y, z, renderPartialTicks, destroyStage, alpha);
//$$ }
//$$ }
//$$
//#if MC>=11400
//#if MC>=11400
@Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
at = @At("RETURN"))
//$$ @Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
//$$ at = @At("RETURN"))
//#else
//$$ @Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
//$$ at = @At("RETURN"))
//#endif
public void postRender(BlockEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
//$$ public void postRender(BlockEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
//#else
//#if MC>=11200
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
@@ -62,10 +62,10 @@ public abstract class MixinTileEntityRendererDispatcher {
//$$ public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, CallbackInfo ci) {
//#endif
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).postRender();
}
}
}
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(TileEntityExporter.class).postRender();
//$$ }
//$$ }
//$$ }
//#endif

View File

@@ -1,16 +1,16 @@
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import net.minecraft.client.render.WorldRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.List;
@Mixin(WorldRenderer.class)
public interface WorldRendererAccessor {
@Accessor("chunkInfos")
List getRenderInfos();
}
//$$ package com.replaymod.render.blend.mixin;
//$$
//$$ import net.minecraft.client.render.WorldRenderer;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.gen.Accessor;
//$$
//$$ import java.util.List;
//$$
//$$ @Mixin(WorldRenderer.class)
//$$ public interface WorldRendererAccessor {
//$$ @Accessor("chunkInfos")
//$$ List getRenderInfos();
//$$ }
//#endif

View File

@@ -81,21 +81,21 @@ public class ODSFrameCapturer implements FrameCapturer<ODSOpenGlFrame> {
shaderProgram.use();
setTexture("texture", 0);
//#if MC>=11500
//$$ setTexture("overlay", 1);
//$$ setTexture("lightMap", 2);
setTexture("overlay", 1);
setTexture("lightMap", 2);
//#else
setTexture("lightMap", 1);
//$$ setTexture("lightMap", 1);
//#endif
renderStateEvents = new EventRegistrations();
Program.Uniform[] texture2DUniforms = new Program.Uniform[]{
shaderProgram.getUniformVariable("textureEnabled"),
//#if MC>=11500
//$$ shaderProgram.getUniformVariable("overlayEnabled"),
//$$ shaderProgram.getUniformVariable("lightMapEnabled"),
//#else
shaderProgram.getUniformVariable("lightMapEnabled"),
shaderProgram.getUniformVariable("overlayEnabled"),
shaderProgram.getUniformVariable("lightMapEnabled"),
//#else
//$$ shaderProgram.getUniformVariable("lightMapEnabled"),
//$$ shaderProgram.getUniformVariable("overlayEnabled"),
//#endif
};
renderStateEvents.on(Texture2DStateCallback.EVENT, (id, enabled) -> {

View File

@@ -130,7 +130,7 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
mainWindow.setFramebufferWidth(width);
mainWindow.setFramebufferHeight(height);
//#if MC>=11500
//$$ mc.gameRenderer.onResized(width, height);
mc.gameRenderer.onResized(width, height);
//#endif
//#else
//$$ if (width != mc.displayWidth || height != mc.displayHeight) {

View File

@@ -446,9 +446,9 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
}
//#if MC<10800 || MC>=11500
//$$ if (method == RenderSettings.RenderMethod.BLEND) {
//$$ return "replaymod.gui.rendersettings.no_blend_on_1_7_10";
//$$ }
if (method == RenderSettings.RenderMethod.BLEND) {
return "replaymod.gui.rendersettings.no_blend_on_1_7_10";
}
//#endif
return null;

View File

@@ -7,16 +7,16 @@ import java.lang.reflect.Field;
//#if MC>=11500
//#else
import com.replaymod.render.mixin.ChunkRenderDispatcherAccessor;
import com.replaymod.render.mixin.WorldRendererAccessor;
import com.replaymod.render.utils.JailingQueue;
import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBuilder;
import net.minecraft.client.render.chunk.ChunkRenderTask;
import net.minecraft.client.render.chunk.ChunkRenderWorker;
import net.minecraft.client.render.chunk.ChunkRenderer;
import java.util.Iterator;
import static com.replaymod.core.versions.MCVer.*;
//$$ import com.replaymod.render.mixin.ChunkRenderDispatcherAccessor;
//$$ import com.replaymod.render.mixin.WorldRendererAccessor;
//$$ import com.replaymod.render.utils.JailingQueue;
//$$ import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
//$$ import net.minecraft.client.render.chunk.ChunkBuilder;
//$$ import net.minecraft.client.render.chunk.ChunkRenderTask;
//$$ import net.minecraft.client.render.chunk.ChunkRenderWorker;
//$$ import net.minecraft.client.render.chunk.ChunkRenderer;
//$$ import java.util.Iterator;
//$$ import static com.replaymod.core.versions.MCVer.*;
//#endif
//#if MC>=10904
@@ -35,14 +35,14 @@ public class ChunkLoadingRenderGlobal {
//#if MC>=11500
//#else
private ChunkBuilder renderDispatcher;
//$$ private ChunkBuilder renderDispatcher;
//#if MC>=11400
private JailingQueue<ChunkRenderTask> workerJailingQueue;
//$$ private JailingQueue<ChunkRenderTask> workerJailingQueue;
//#else
//$$ private JailingQueue<ChunkCompileTaskGenerator> workerJailingQueue;
//#endif
private ChunkRenderWorkerAccessor renderWorker;
private int frame;
//$$ private ChunkRenderWorkerAccessor renderWorker;
//$$ private int frame;
//#endif
public ChunkLoadingRenderGlobal(
@@ -55,10 +55,10 @@ public class ChunkLoadingRenderGlobal {
this.hooked = renderGlobal;
//#if MC>=11500
//$$ install();
//#else
setup(((WorldRendererAccessor) renderGlobal).getRenderDispatcher());
install();
//#else
//$$ setup(((WorldRendererAccessor) renderGlobal).getRenderDispatcher());
//$$ install();
//#endif
}
@@ -77,94 +77,94 @@ public class ChunkLoadingRenderGlobal {
//#if MC>=11500
//#else
public void updateRenderDispatcher(ChunkBuilder renderDispatcher) {
if (this.renderDispatcher != null) {
workerJailingQueue.freeAll();
this.renderDispatcher = null;
}
if (renderDispatcher != null) {
setup(renderDispatcher);
}
}
private void setup(ChunkBuilder renderDispatcher) {
this.renderDispatcher = renderDispatcher;
this.renderWorker = (ChunkRenderWorkerAccessor) new ChunkRenderWorker(renderDispatcher, new BlockBufferBuilderStorage());
ChunkRenderDispatcherAccessor renderDispatcherAcc = (ChunkRenderDispatcherAccessor) renderDispatcher;
int workerThreads = renderDispatcherAcc.getListThreadedWorkers().size();
//$$ public void updateRenderDispatcher(ChunkBuilder renderDispatcher) {
//$$ if (this.renderDispatcher != null) {
//$$ workerJailingQueue.freeAll();
//$$ this.renderDispatcher = null;
//$$ }
//$$ if (renderDispatcher != null) {
//$$ setup(renderDispatcher);
//$$ }
//$$ }
//$$
//$$ private void setup(ChunkBuilder renderDispatcher) {
//$$ this.renderDispatcher = renderDispatcher;
//$$ this.renderWorker = (ChunkRenderWorkerAccessor) new ChunkRenderWorker(renderDispatcher, new BlockBufferBuilderStorage());
//$$ ChunkRenderDispatcherAccessor renderDispatcherAcc = (ChunkRenderDispatcherAccessor) renderDispatcher;
//$$
//$$ int workerThreads = renderDispatcherAcc.getListThreadedWorkers().size();
//#if MC>=10904
PriorityBlockingQueue<ChunkRenderTask> queueChunkUpdates = renderDispatcherAcc.getQueueChunkUpdates();
//$$ PriorityBlockingQueue<ChunkRenderTask> queueChunkUpdates = renderDispatcherAcc.getQueueChunkUpdates();
//#else
//$$ BlockingQueue<ChunkCompileTaskGenerator> queueChunkUpdates = renderDispatcherAcc.getQueueChunkUpdates();
//#endif
workerJailingQueue = new JailingQueue<>(queueChunkUpdates);
renderDispatcherAcc.setQueueChunkUpdates(workerJailingQueue);
//$$ workerJailingQueue = new JailingQueue<>(queueChunkUpdates);
//$$ renderDispatcherAcc.setQueueChunkUpdates(workerJailingQueue);
//#if MC>=10904
ChunkRenderTask element = new ChunkRenderTask(
null,
null,
0
//$$ ChunkRenderTask element = new ChunkRenderTask(
//$$ null,
//$$ null,
//$$ 0
//#if MC>=11400
, null
//$$ , null
//#endif
);
//$$ );
//#else
//$$ ChunkCompileTaskGenerator element = new ChunkCompileTaskGenerator(null, null);
//#endif
element.cancel();
for (int i = 0; i < workerThreads; i++) {
queueChunkUpdates.add(element);
}
// Temporary workaround for dead lock, will be replaced by a new (ShaderMod compatible) mechanism later
//noinspection StatementWithEmptyBody
while (renderDispatcher.runTasksSync(0)) {}
workerJailingQueue.jail(workerThreads);
renderDispatcherAcc.setQueueChunkUpdates(queueChunkUpdates);
}
public void updateChunks() {
while (renderDispatcher.runTasksSync(0)) {
((WorldRendererAccessor) hooked).setDisplayListEntitiesDirty(true);
}
//$$ element.cancel();
//$$ for (int i = 0; i < workerThreads; i++) {
//$$ queueChunkUpdates.add(element);
//$$ }
//$$
//$$ // Temporary workaround for dead lock, will be replaced by a new (ShaderMod compatible) mechanism later
//$$ //noinspection StatementWithEmptyBody
//$$ while (renderDispatcher.runTasksSync(0)) {}
//$$
//$$ workerJailingQueue.jail(workerThreads);
//$$ renderDispatcherAcc.setQueueChunkUpdates(queueChunkUpdates);
//$$ }
//$$
//$$ public void updateChunks() {
//$$ while (renderDispatcher.runTasksSync(0)) {
//$$ ((WorldRendererAccessor) hooked).setDisplayListEntitiesDirty(true);
//$$ }
//$$
//#if MC>=10904
PriorityBlockingQueue<ChunkRenderTask> queueChunkUpdates;
//$$ PriorityBlockingQueue<ChunkRenderTask> queueChunkUpdates;
//#else
//$$ BlockingQueue<ChunkCompileTaskGenerator> queueChunkUpdates;
//#endif
queueChunkUpdates = ((ChunkRenderDispatcherAccessor) renderDispatcher).getQueueChunkUpdates();
while (!queueChunkUpdates.isEmpty()) {
try {
renderWorker.doRunTask(queueChunkUpdates.poll());
} catch (InterruptedException ignored) { }
}
Iterator<ChunkRenderer> iterator = ((WorldRendererAccessor) hooked).getChunksToUpdate().iterator();
while (iterator.hasNext()) {
ChunkRenderer renderchunk = iterator.next();
renderDispatcher.rebuildSync(renderchunk);
//$$ queueChunkUpdates = ((ChunkRenderDispatcherAccessor) renderDispatcher).getQueueChunkUpdates();
//$$ while (!queueChunkUpdates.isEmpty()) {
//$$ try {
//$$ renderWorker.doRunTask(queueChunkUpdates.poll());
//$$ } catch (InterruptedException ignored) { }
//$$ }
//$$
//$$ Iterator<ChunkRenderer> iterator = ((WorldRendererAccessor) hooked).getChunksToUpdate().iterator();
//$$ while (iterator.hasNext()) {
//$$ ChunkRenderer renderchunk = iterator.next();
//$$
//$$ renderDispatcher.rebuildSync(renderchunk);
//$$
//#if MC>=10904
renderchunk.unscheduleRebuild();
//$$ renderchunk.unscheduleRebuild();
//#else
//$$ renderchunk.setNeedsUpdate(false);
//#endif
iterator.remove();
}
}
public int nextFrameId() {
return frame++;
}
//$$ iterator.remove();
//$$ }
//$$ }
//$$
//$$ public int nextFrameId() {
//$$ return frame++;
//$$ }
//#endif
public void uninstall() {
//#if MC<11500
workerJailingQueue.freeAll();
//$$ workerJailingQueue.freeAll();
//#endif
try {
@@ -180,9 +180,9 @@ public class ChunkLoadingRenderGlobal {
}
//#if MC>=11500
//$$ public interface IBlockOnChunkRebuilds {
//$$ boolean uploadEverythingBlocking();
//$$ }
public interface IBlockOnChunkRebuilds {
boolean uploadEverythingBlocking();
}
//#endif
}
//#endif

View File

@@ -9,7 +9,7 @@ import lombok.Getter;
import net.minecraft.client.MinecraftClient;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if MC>=11400
@@ -64,9 +64,9 @@ public class EntityRendererHandler implements WorldRenderer {
if (mc.world != null && mc.player != null) {
//#if MC>=11500
//$$ mc.gameRenderer.renderWorld(partialTicks, finishTimeNano, new MatrixStack());
mc.gameRenderer.renderWorld(partialTicks, finishTimeNano, new MatrixStack());
//#else
mc.gameRenderer.renderWorld(partialTicks, finishTimeNano);
//$$ mc.gameRenderer.renderWorld(partialTicks, finishTimeNano);
//#endif
}

View File

@@ -1,34 +1,34 @@
//#if MC>=10800 && MC<11500
package com.replaymod.render.mixin;
import net.minecraft.client.render.chunk.ChunkBuilder;
import net.minecraft.client.render.chunk.ChunkRenderTask;
import net.minecraft.client.render.chunk.ChunkRenderWorker;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.List;
//$$ package com.replaymod.render.mixin;
//$$
//$$ import net.minecraft.client.render.chunk.ChunkBuilder;
//$$ import net.minecraft.client.render.chunk.ChunkRenderTask;
//$$ import net.minecraft.client.render.chunk.ChunkRenderWorker;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.gen.Accessor;
//$$
//$$ import java.util.List;
//#if MC>=10904
import java.util.concurrent.PriorityBlockingQueue;
//$$ import java.util.concurrent.PriorityBlockingQueue;
//#else
//$$ import java.util.concurrent.BlockingQueue;
//#endif
@Mixin(ChunkBuilder.class)
public interface ChunkRenderDispatcherAccessor {
@Accessor("workers")
List<ChunkRenderWorker> getListThreadedWorkers();
//$$
//$$ @Mixin(ChunkBuilder.class)
//$$ public interface ChunkRenderDispatcherAccessor {
//$$ @Accessor("workers")
//$$ List<ChunkRenderWorker> getListThreadedWorkers();
//$$
//#if MC>=10904
@Accessor("pendingChunks")
PriorityBlockingQueue<ChunkRenderTask> getQueueChunkUpdates();
@Accessor("pendingChunks")
void setQueueChunkUpdates(PriorityBlockingQueue<ChunkRenderTask> value);
//$$ @Accessor("pendingChunks")
//$$ PriorityBlockingQueue<ChunkRenderTask> getQueueChunkUpdates();
//$$ @Accessor("pendingChunks")
//$$ void setQueueChunkUpdates(PriorityBlockingQueue<ChunkRenderTask> value);
//#else
//$$ @Accessor
//$$ BlockingQueue<ChunkCompileTaskGenerator> getQueueChunkUpdates();
//$$ @Accessor
//$$ void setQueueChunkUpdates(BlockingQueue<ChunkCompileTaskGenerator> value);
//#endif
}
//$$ }
//#endif

View File

@@ -1,19 +1,19 @@
package com.replaymod.render.mixin;
//#if MC>=10800 && MC<11500
import com.replaymod.core.versions.MCVer;
import net.minecraft.client.render.chunk.ChunkRenderTask;
import net.minecraft.client.render.chunk.ChunkRenderWorker;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(ChunkRenderWorker.class)
public abstract class MixinChunkRenderWorker implements MCVer.ChunkRenderWorkerAccessor {
@Shadow abstract void runTask(ChunkRenderTask task) throws InterruptedException;
public void doRunTask(ChunkRenderTask task) throws InterruptedException {
runTask(task);
}
}
//$$
//$$ import com.replaymod.core.versions.MCVer;
//$$ import net.minecraft.client.render.chunk.ChunkRenderTask;
//$$ import net.minecraft.client.render.chunk.ChunkRenderWorker;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.Shadow;
//$$
//$$ @Mixin(ChunkRenderWorker.class)
//$$ public abstract class MixinChunkRenderWorker implements MCVer.ChunkRenderWorkerAccessor {
//$$ @Shadow abstract void runTask(ChunkRenderTask task) throws InterruptedException;
//$$
//$$ public void doRunTask(ChunkRenderTask task) throws InterruptedException {
//$$ runTask(task);
//$$ }
//$$ }
//#endif

View File

@@ -14,8 +14,8 @@ import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import net.minecraft.client.util.math.MatrixStack;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//#endif
//#if MC>=11400
@@ -98,7 +98,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
private void replayModRender_renderSpectatorHand(
//#if MC>=11500
//$$ MatrixStack matrixStack,
MatrixStack matrixStack,
//#endif
//#if MC>=11400
Camera camera,
@@ -140,76 +140,76 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
*/
//#if MC>=11500
//$$ @Inject(method = "method_22973", at = @At("RETURN"), cancellable = true)
//$$ private void replayModRender_setupStereoscopicProjection(CallbackInfoReturnable<Matrix4f> ci) {
//$$ if (replayModRender_getHandler() != null) {
//$$ Matrix4f offset;
//$$ if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
//$$ offset = Matrix4f.translate(0.07f, 0, 0);
//$$ } else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
//$$ offset = Matrix4f.translate(-0.07f, 0, 0);
//$$ } else {
//$$ return;
//$$ }
//$$ offset.multiply(ci.getReturnValue());
//$$ ci.setReturnValue(offset);
//$$ }
//$$ }
@Inject(method = "method_22973", at = @At("RETURN"), cancellable = true)
private void replayModRender_setupStereoscopicProjection(CallbackInfoReturnable<Matrix4f> ci) {
if (replayModRender_getHandler() != null) {
Matrix4f offset;
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
offset = Matrix4f.translate(0.07f, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
offset = Matrix4f.translate(-0.07f, 0, 0);
} else {
return;
}
offset.multiply(ci.getReturnValue());
ci.setReturnValue(offset);
}
}
//#else
//#if MC>=10800
@Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
//$$ @Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = false))
//#endif
private void replayModRender_setupStereoscopicProjection(
float partialTicks,
//$$ private void replayModRender_setupStereoscopicProjection(
//$$ float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
CallbackInfo ci
) {
if (replayModRender_getHandler() != null) {
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
GL11.glTranslatef(0.07f, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
GL11.glTranslatef(-0.07f, 0, 0);
}
}
}
//#endif
//#if MC>=11500
//$$ @Inject(method = "renderWorld", at = @At("HEAD"))
//$$ private void replayModRender_setupStereoscopicProjection(float partialTicks, long frameStartNano, MatrixStack matrixStack, CallbackInfo ci) {
//$$ CallbackInfo ci
//$$ ) {
//$$ if (replayModRender_getHandler() != null) {
//$$ if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
//$$ matrixStack.translate(0.1, 0, 0);
//$$ GL11.glTranslatef(0.07f, 0, 0);
//$$ } else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
//$$ matrixStack.translate(-0.1, 0, 0);
//$$ GL11.glTranslatef(-0.07f, 0, 0);
//$$ }
//$$ }
//$$ }
//#else
//#if MC>=10800
@Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 1))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
//#endif
private void replayModRender_setupStereoscopicModelView(
float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
CallbackInfo ci
) {
//#if MC>=11500
@Inject(method = "renderWorld", at = @At("HEAD"))
private void replayModRender_setupStereoscopicProjection(float partialTicks, long frameStartNano, MatrixStack matrixStack, CallbackInfo ci) {
if (replayModRender_getHandler() != null) {
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
GL11.glTranslatef(0.1f, 0, 0);
matrixStack.translate(0.1, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
GL11.glTranslatef(-0.1f, 0, 0);
matrixStack.translate(-0.1, 0, 0);
}
}
}
//#else
//#if MC>=10800
//$$ @Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 1))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
//#endif
//$$ private void replayModRender_setupStereoscopicModelView(
//$$ float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
//$$ CallbackInfo ci
//$$ ) {
//$$ if (replayModRender_getHandler() != null) {
//$$ if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
//$$ GL11.glTranslatef(0.1f, 0, 0);
//$$ } else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
//$$ GL11.glTranslatef(-0.1f, 0, 0);
//$$ }
//$$ }
//$$ }
//#endif
/*
@@ -217,25 +217,25 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
*/
//#if MC>=11400
@Redirect(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
@Redirect(method = "method_22973", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;viewboxMatrix(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
//#if MC<11500
//#if MC>=11400
@Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
//$$ @Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
//#else
//$$ @Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
//#endif
private Matrix4f replayModRender_perspective$1(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
@Redirect(method = "renderAboveClouds", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$2(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
//$$ private Matrix4f replayModRender_perspective$1(double fovY, float aspect, float zNear, float zFar) {
//$$ return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
//$$ }
//$$
//$$ @Redirect(method = "renderAboveClouds", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
//$$ private Matrix4f replayModRender_perspective$2(double fovY, float aspect, float zNear, float zFar) {
//$$ return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
//$$ }
//#endif
private Matrix4f replayModRender_perspective(float fovY, float aspect, float zNear, float zFar) {
@@ -243,7 +243,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
fovY = 90;
aspect = 1;
}
return Matrix4f.method_4929(fovY, aspect, zNear, zFar);
return Matrix4f.viewboxMatrix(fovY, aspect, zNear, zFar);
}
//#else
//$$ @Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))

View File

@@ -18,7 +18,7 @@ public abstract class MixinFogRenderer {
@Inject(method = "applyFog", at = @At("HEAD"), cancellable = true)
private
//#if MC>=11500
//$$ static
static
//#endif
void replayModRender_onSetupFog(CallbackInfo ci) {
EntityRendererHandler handler =

View File

@@ -20,9 +20,9 @@ import net.minecraft.client.render.Frustum;
//#endif
public abstract class MixinFrustum {
//#if MC>=11500
//$$ @Inject(method = "isAnyCornerVisible", at = @At("HEAD"), cancellable = true)
@Inject(method = "isAnyCornerVisible", at = @At("HEAD"), cancellable = true)
//#else
@Inject(method = "intersects", at = @At("HEAD"), cancellable = true)
//$$ @Inject(method = "intersects", at = @At("HEAD"), cancellable = true)
//#endif
public void intersects(CallbackInfoReturnable<Boolean> ci) {
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();

View File

@@ -13,11 +13,11 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
//#if MC>=11500
//$$ import net.minecraft.client.render.VertexConsumer;
//$$ import net.minecraft.util.math.Quaternion;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.util.math.Quaternion;
//#else
import com.replaymod.render.blend.mixin.ParticleAccessor;
import net.minecraft.client.render.BufferBuilder;
//$$ import com.replaymod.render.blend.mixin.ParticleAccessor;
//$$ import net.minecraft.client.render.BufferBuilder;
//#endif
//#if MC>=11400
@@ -29,40 +29,40 @@ import net.minecraft.client.render.Camera;
@Mixin(ParticleManager.class)
public abstract class MixinParticleManager {
//#if MC>=11500
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/client/render/Camera;F)V"))
//$$ private void buildOrientedGeometry(Particle particle, VertexConsumer vertexConsumer, Camera camera, float partialTicks) {
//$$ EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
//$$ if (handler == null || !handler.omnidirectional) {
//$$ buildGeometry(particle, vertexConsumer, camera, partialTicks);
//$$ } else {
//$$ Quaternion rotation = camera.getRotation();
//$$ Quaternion org = rotation.copy();
//$$ try {
//$$ Vec3d from = new Vec3d(0, 0, 1);
//$$ Vec3d to = MCVer.getPosition(particle, partialTicks).subtract(camera.getPos()).normalize();
//$$ Vec3d axis = from.crossProduct(to);
//$$ rotation.set((float) axis.x, (float) axis.y, (float) axis.z, (float) (1 + from.dotProduct(to)));
//$$ rotation.normalize();
//$$
//$$ buildGeometry(particle, vertexConsumer, camera, partialTicks);
//$$ } finally {
//$$ rotation.set(org.getA(), org.getB(), org.getC(), org.getD());
//$$ }
//$$ }
//$$ }
//$$
//$$ private void buildGeometry(Particle particle, VertexConsumer vertexConsumer, Camera camera, float partialTicks) {
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ParticlesExporter.class).onRender(particle, partialTicks);
//$$ }
//$$ particle.buildGeometry(vertexConsumer, camera, partialTicks);
//$$ }
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/client/render/Camera;F)V"))
private void buildOrientedGeometry(Particle particle, VertexConsumer vertexConsumer, Camera camera, float partialTicks) {
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
if (handler == null || !handler.omnidirectional) {
buildGeometry(particle, vertexConsumer, camera, partialTicks);
} else {
Quaternion rotation = camera.getRotation();
Quaternion org = rotation.copy();
try {
Vec3d from = new Vec3d(0, 0, 1);
Vec3d to = MCVer.getPosition(particle, partialTicks).subtract(camera.getPos()).normalize();
Vec3d axis = from.crossProduct(to);
rotation.set((float) axis.x, (float) axis.y, (float) axis.z, (float) (1 + from.dotProduct(to)));
rotation.normalize();
buildGeometry(particle, vertexConsumer, camera, partialTicks);
} finally {
rotation.set(org.getA(), org.getB(), org.getC(), org.getD());
}
}
}
private void buildGeometry(Particle particle, VertexConsumer vertexConsumer, Camera camera, float partialTicks) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ParticlesExporter.class).onRender(particle, partialTicks);
}
particle.buildGeometry(vertexConsumer, camera, partialTicks);
}
//#else
//#if MC>=11200
//#if MC>=11400
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/BufferBuilder;Lnet/minecraft/client/render/Camera;FFFFFF)V"))
private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Camera view, float partialTicks,
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/BufferBuilder;Lnet/minecraft/client/render/Camera;FFFFFF)V"))
//$$ private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Camera view, float partialTicks,
//#else
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
//$$ private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
@@ -71,11 +71,11 @@ public abstract class MixinParticleManager {
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/VertexBuffer;Lnet/minecraft/entity/Entity;FFFFFF)V"))
//$$ private void renderNormalParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
//#endif
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
}
// Seems to be gone by 1.14
//$$ float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
//$$ renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
//$$ }
//$$
//$$ // Seems to be gone by 1.14
//#if MC<11400
//#if MC>=11200
//$$ @Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
@@ -88,41 +88,41 @@ public abstract class MixinParticleManager {
//$$ renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
//$$ }
//#endif
private void renderParticle(Particle particle,
BufferBuilder vertexBuffer,
//$$
//$$ private void renderParticle(Particle particle,
//$$ BufferBuilder vertexBuffer,
//#if MC>=11400
Camera view,
//$$ Camera view,
//#else
//$$ Entity view,
//#endif
float partialTicks,
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
if (handler != null && handler.omnidirectional) {
// Align all particles towards the camera
//$$ float partialTicks,
//$$ float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
//$$ EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
//$$ if (handler != null && handler.omnidirectional) {
//$$ // Align all particles towards the camera
//#if MC>=11400
Vec3d pos = view.getPos();
//$$ Vec3d pos = view.getPos();
//#else
//$$ Vec3d pos = new Vec3d(view.posX, view.posY, view.posZ);
//#endif
Vec3d d = MCVer.getPosition(particle, partialTicks).subtract(pos);
double pitch = -Math.atan2(d.y, Math.sqrt(d.x * d.x + d.z * d.z));
double yaw = -Math.atan2(d.x, d.z);
rotX = (float) Math.cos(yaw);
rotZ = (float) Math.sin(yaw);
rotXZ = (float) Math.cos(pitch);
rotYZ = (float) (-rotZ * Math.sin(pitch));
rotXY = (float) (rotX * Math.sin(pitch));
}
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ParticlesExporter.class).onRender(particle, partialTicks);
}
particle.buildGeometry(vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
}
//$$ Vec3d d = MCVer.getPosition(particle, partialTicks).subtract(pos);
//$$ double pitch = -Math.atan2(d.y, Math.sqrt(d.x * d.x + d.z * d.z));
//$$ double yaw = -Math.atan2(d.x, d.z);
//$$
//$$ rotX = (float) Math.cos(yaw);
//$$ rotZ = (float) Math.sin(yaw);
//$$ rotXZ = (float) Math.cos(pitch);
//$$
//$$ rotYZ = (float) (-rotZ * Math.sin(pitch));
//$$ rotXY = (float) (rotX * Math.sin(pitch));
//$$ }
//$$ BlendState blendState = BlendState.getState();
//$$ if (blendState != null) {
//$$ blendState.get(ParticlesExporter.class).onRender(particle, partialTicks);
//$$ }
//$$ particle.buildGeometry(vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
//$$ }
//#endif
}
//#endif

View File

@@ -11,10 +11,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(EntityRenderer.class)
public abstract class MixinRender {
//#if MC>=11500
//$$ @Inject(method = "renderLabelIfPresent", at = @At("HEAD"), cancellable = true)
@Inject(method = "renderLabelIfPresent", at = @At("HEAD"), cancellable = true)
//#else
//#if MC>=11400
@Inject(method = "renderLabel(Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V", at = @At("HEAD"), cancellable = true)
//$$ @Inject(method = "renderLabel(Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V", at = @At("HEAD"), cancellable = true)
//#else
//$$ @Inject(method = "renderLivingLabel", at = @At("HEAD"), cancellable = true)
//#endif

View File

@@ -10,10 +10,10 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
//#if MC>=11500
//$$ import net.minecraft.client.render.VertexConsumerProvider;
//$$ import net.minecraft.client.util.math.MatrixStack;
//$$ import net.minecraft.client.util.math.Vector3f;
//$$ import net.minecraft.util.math.Quaternion;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
import net.minecraft.util.math.Quaternion;
//#endif
//#if MC>=10904
@@ -25,17 +25,17 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(EntityRenderDispatcher.class)
public abstract class MixinRenderManager {
//#if MC>=11500
//$$ @Shadow private Quaternion rotation;
@Shadow private Quaternion rotation;
//#else
@Shadow private float cameraPitch;
@Shadow private float cameraYaw;
//$$ @Shadow private float cameraPitch;
//$$ @Shadow private float cameraYaw;
//#endif
//#if MC>=11500
//$$ @Inject(method = "render", at = @At("HEAD"))
@Inject(method = "render", at = @At("HEAD"))
//#else
//#if MC>=11400 && FABRIC>=1
@Inject(method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At("HEAD"))
//$$ @Inject(method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At("HEAD"))
//#else
//#if MC>=11400
//$$ @Inject(method = "renderEntity", at = @At("HEAD"))
@@ -47,11 +47,11 @@ public abstract class MixinRenderManager {
//#if MC>=10904
private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks,
//#if MC>=11500
//$$ MatrixStack matrixStack,
//$$ VertexConsumerProvider vertexConsumerProvider,
//$$ int int_1,
MatrixStack matrixStack,
VertexConsumerProvider vertexConsumerProvider,
int int_1,
//#else
boolean iDoNotCare,
//$$ boolean iDoNotCare,
//#endif
CallbackInfo ci) {
//#else
@@ -62,12 +62,12 @@ public abstract class MixinRenderManager {
double pitch = -Math.atan2(dy, Math.sqrt(dx * dx + dz * dz));
double yaw = -Math.atan2(dx, dz);
//#if MC>=11500
//$$ this.rotation = new Quaternion(0.0F, 0.0F, 0.0F, 1.0F);
//$$ this.rotation.hamiltonProduct(Vector3f.POSITIVE_Y.getDegreesQuaternion((float) -yaw));
//$$ this.rotation.hamiltonProduct(Vector3f.POSITIVE_X.getDegreesQuaternion((float) pitch));
this.rotation = new Quaternion(0.0F, 0.0F, 0.0F, 1.0F);
this.rotation.hamiltonProduct(Vector3f.POSITIVE_Y.getDegreesQuaternion((float) -yaw));
this.rotation.hamiltonProduct(Vector3f.POSITIVE_X.getDegreesQuaternion((float) pitch));
//#else
this.cameraPitch = (float) Math.toDegrees(pitch);
this.cameraYaw = (float) Math.toDegrees(yaw);
//$$ this.cameraPitch = (float) Math.toDegrees(pitch);
//$$ this.cameraYaw = (float) Math.toDegrees(yaw);
//#endif
}
}

View File

@@ -1,111 +1,111 @@
package com.replaymod.render.mixin;
//#if MC>=11500
//$$ import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
//$$ import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
//$$ import net.minecraft.client.render.chunk.ChunkBuilder;
//$$ import net.minecraft.util.thread.TaskExecutor;
//$$ import org.spongepowered.asm.mixin.Final;
//$$ import org.spongepowered.asm.mixin.Mixin;
//$$ import org.spongepowered.asm.mixin.Shadow;
//$$ import org.spongepowered.asm.mixin.injection.At;
//$$ import org.spongepowered.asm.mixin.injection.Inject;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//$$
//$$ import java.util.Queue;
//$$ import java.util.concurrent.CompletableFuture;
//$$ import java.util.concurrent.locks.Condition;
//$$ import java.util.concurrent.locks.Lock;
//$$ import java.util.concurrent.locks.ReentrantLock;
//$$
//$$ @Mixin(ChunkBuilder.class)
//$$ public abstract class Mixin_BlockOnChunkRebuilds implements ChunkLoadingRenderGlobal.IBlockOnChunkRebuilds {
//$$ @Shadow @Final private Queue<BlockBufferBuilderStorage> threadBuffers;
//$$
//$$ @Shadow public abstract boolean upload();
//$$
//$$ @Shadow @Final private TaskExecutor<Runnable> mailbox;
//$$
//$$ @Shadow protected abstract void scheduleRunTasks();
//$$
//$$ @Shadow @Final private Queue<Runnable> uploadQueue;
//$$ private final Lock waitingForWorkLock = new ReentrantLock();
//$$ private final Condition newWork = waitingForWorkLock.newCondition();
//$$ private volatile boolean allDone;
//$$
//$$ private int totalBufferCount;
//$$
//$$ @Inject(method = "<init>", at = @At("RETURN"))
//$$ private void rememberTotalThreads(CallbackInfo ci) {
//$$ this.totalBufferCount = this.threadBuffers.size();
//$$ }
//$$
//$$ @Inject(method = "scheduleRunTasks", at = @At("RETURN"))
//$$ private void notifyMainThreadIfEverythingIsDone(CallbackInfo ci) {
//$$ if (this.threadBuffers.size() == this.totalBufferCount) {
//$$ // Looks like we're done, better notify the main thread in case the previous task didn't generate an upload
//$$ this.waitingForWorkLock.lock();
//$$ try {
//$$ this.allDone = true;
//$$ this.newWork.signalAll();
//$$ } finally {
//$$ this.waitingForWorkLock.unlock();
//$$ }
//$$ } else {
//$$ this.allDone = false;
//$$ }
//$$ }
//$$
//$$ @Inject(method = "scheduleUpload", at = @At("RETURN"))
//$$ private void notifyMainThreadOfNewUpload(CallbackInfoReturnable<CompletableFuture<Void>> ci) {
//$$ this.waitingForWorkLock.lock();
//$$ try {
//$$ this.newWork.signal();
//$$ } finally {
//$$ this.waitingForWorkLock.unlock();
//$$ }
//$$ }
//$$
//$$ private boolean waitForMainThreadWork() {
//$$ boolean allDone = this.mailbox.<Boolean>ask(reply -> () -> {
//$$ scheduleRunTasks();
//$$ reply.send(this.threadBuffers.size() == this.totalBufferCount);
//$$ }).join();
//$$
//$$ if (allDone) {
//$$ return true;
//$$ } else {
//$$ this.waitingForWorkLock.lock();
//$$ try {
//$$ while (true) {
//$$ if (this.allDone) {
//$$ return true;
//$$ } else if (!this.uploadQueue.isEmpty()) {
//$$ return false;
//$$ } else {
//$$ this.newWork.awaitUninterruptibly();
//$$ }
//$$ }
//$$ } finally {
//$$ this.waitingForWorkLock.unlock();
//$$ }
//$$ }
//$$ }
//$$
//$$ @Override
//$$ public boolean uploadEverythingBlocking() {
//$$ boolean anything = false;
//$$
//$$ boolean allChunksBuilt;
//$$ do {
//$$ allChunksBuilt = waitForMainThreadWork();
//$$ while (upload()) {
//$$ anything = true;
//$$ }
//$$ } while (!allChunksBuilt);
//$$
//$$ return anything;
//$$ }
//$$ }
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBuilder;
import net.minecraft.util.thread.TaskExecutor;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.Queue;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@Mixin(ChunkBuilder.class)
public abstract class Mixin_BlockOnChunkRebuilds implements ChunkLoadingRenderGlobal.IBlockOnChunkRebuilds {
@Shadow @Final private Queue<BlockBufferBuilderStorage> threadBuffers;
@Shadow public abstract boolean upload();
@Shadow @Final private TaskExecutor<Runnable> mailbox;
@Shadow protected abstract void scheduleRunTasks();
@Shadow @Final private Queue<Runnable> uploadQueue;
private final Lock waitingForWorkLock = new ReentrantLock();
private final Condition newWork = waitingForWorkLock.newCondition();
private volatile boolean allDone;
private int totalBufferCount;
@Inject(method = "<init>", at = @At("RETURN"))
private void rememberTotalThreads(CallbackInfo ci) {
this.totalBufferCount = this.threadBuffers.size();
}
@Inject(method = "scheduleRunTasks", at = @At("RETURN"))
private void notifyMainThreadIfEverythingIsDone(CallbackInfo ci) {
if (this.threadBuffers.size() == this.totalBufferCount) {
// Looks like we're done, better notify the main thread in case the previous task didn't generate an upload
this.waitingForWorkLock.lock();
try {
this.allDone = true;
this.newWork.signalAll();
} finally {
this.waitingForWorkLock.unlock();
}
} else {
this.allDone = false;
}
}
@Inject(method = "scheduleUpload", at = @At("RETURN"))
private void notifyMainThreadOfNewUpload(CallbackInfoReturnable<CompletableFuture<Void>> ci) {
this.waitingForWorkLock.lock();
try {
this.newWork.signal();
} finally {
this.waitingForWorkLock.unlock();
}
}
private boolean waitForMainThreadWork() {
boolean allDone = this.mailbox.<Boolean>ask(reply -> () -> {
scheduleRunTasks();
reply.send(this.threadBuffers.size() == this.totalBufferCount);
}).join();
if (allDone) {
return true;
} else {
this.waitingForWorkLock.lock();
try {
while (true) {
if (this.allDone) {
return true;
} else if (!this.uploadQueue.isEmpty()) {
return false;
} else {
this.newWork.awaitUninterruptibly();
}
}
} finally {
this.waitingForWorkLock.unlock();
}
}
}
@Override
public boolean uploadEverythingBlocking() {
boolean anything = false;
boolean allChunksBuilt;
do {
allChunksBuilt = waitForMainThreadWork();
while (upload()) {
anything = true;
}
} while (!allChunksBuilt);
return anything;
}
}
//#endif

View File

@@ -10,9 +10,9 @@ import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.ModifyConstant;
//#if MC>=11500
//$$ import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.WorldRenderer;
//#else
import net.minecraft.client.render.GameRenderer;
//$$ import net.minecraft.client.render.GameRenderer;
//#endif
/**
@@ -20,17 +20,17 @@ import net.minecraft.client.render.GameRenderer;
* at 4 or greater.
*/
//#if MC>=11500
//$$ @Mixin(WorldRenderer.class)
@Mixin(WorldRenderer.class)
//#else
@Mixin(GameRenderer.class)
//$$ @Mixin(GameRenderer.class)
//#endif
public abstract class Mixin_ChromaKeyForceSky {
@Shadow @Final private MinecraftClient client;
//#if MC>=11500
//$$ @ModifyConstant(method = "render", constant = @Constant(intValue = 4))
@ModifyConstant(method = "render", constant = @Constant(intValue = 4))
//#else
@ModifyConstant(method = "renderCenter", constant = @Constant(intValue = 4))
//$$ @ModifyConstant(method = "renderCenter", constant = @Constant(intValue = 4))
//#endif
private int forceSkyWhenChromaKeying(int value) {
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) this.client.gameRenderer).replayModRender_getHandler();

View File

@@ -8,19 +8,19 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
//$$ import net.minecraft.client.util.math.Vector3f;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
//#else
import org.lwjgl.opengl.GL11;
//$$ import org.lwjgl.opengl.GL11;
//#endif
import static com.replaymod.core.versions.MCVer.getMinecraft;
//#if MC>=11500
//$$ @Mixin(value = net.minecraft.client.render.GameRenderer.class)
@Mixin(value = net.minecraft.client.render.GameRenderer.class)
//#else
//#if MC>=11400
@Mixin(value = net.minecraft.client.render.Camera.class)
//$$ @Mixin(value = net.minecraft.client.render.Camera.class)
//#else
//$$ @Mixin(value = net.minecraft.client.renderer.EntityRenderer.class)
//#endif
@@ -31,19 +31,19 @@ public abstract class Mixin_CubicRotation {
}
//#if MC>=11500
//$$ @Inject(method = "renderWorld", at = @At("HEAD"))
@Inject(method = "renderWorld", at = @At("HEAD"))
//#else
//#if MC>=11400
@Inject(method = "update", at = @At("HEAD"))
//$$ @Inject(method = "update", at = @At("HEAD"))
//#else
//$$ @Inject(method = "orientCamera", at = @At("HEAD"))
//#endif
//#endif
private void replayModRender_setupCubicFrameRotation(
//#if MC>=11500
//$$ float partialTicks,
//$$ long frameStartNano,
//$$ MatrixStack matrixStack,
float partialTicks,
long frameStartNano,
MatrixStack matrixStack,
//#endif
CallbackInfo ci
) {
@@ -79,20 +79,20 @@ public abstract class Mixin_CubicRotation {
break;
}
//#if MC>=11500
//$$ matrixStack.multiply(new Vector3f(x, y, 0).getDegreesQuaternion(angle));
matrixStack.multiply(new Vector3f(x, y, 0).getDegreesQuaternion(angle));
//#else
GL11.glRotatef(angle, x, y, 0);
//$$ GL11.glRotatef(angle, x, y, 0);
//#endif
}
//#if MC<11500
if (getHandler() != null && getHandler().omnidirectional) {
// Minecraft goes back a little so we have to revert that
//$$ if (getHandler() != null && getHandler().omnidirectional) {
//$$ // Minecraft goes back a little so we have to revert that
//#if MC>=11400
GL11.glTranslatef(0.0F, 0.0F, -0.05F);
//$$ GL11.glTranslatef(0.0F, 0.0F, -0.05F);
//#else
//$$ GL11.glTranslatef(0.0F, 0.0F, 0.1F);
//#endif
}
//$$ }
//#endif
}
}

View File

@@ -12,14 +12,14 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import java.util.Set;
import java.util.Set;
//#else
import net.minecraft.client.render.VisibleRegion;
import net.minecraft.entity.Entity;
//$$ import net.minecraft.client.render.VisibleRegion;
//$$ import net.minecraft.entity.Entity;
//#endif
//#if MC>=11400 && MC<11500
import net.minecraft.client.render.Camera;
//$$ import net.minecraft.client.render.Camera;
//#endif
//#if MC>=11400
@@ -43,118 +43,118 @@ public abstract class Mixin_ForceChunkLoading {
public ChunkLoadingRenderGlobal replayModRender_hook;
//#if MC>=11500
//$$ @Shadow private Set<ChunkBuilder.BuiltChunk> chunksToRebuild;
//$$
//$$ @Shadow private ChunkBuilder chunkBuilder;
//$$
//$$ @Shadow private boolean needsTerrainUpdate;
//$$
//$$ @Shadow public abstract void scheduleTerrainUpdate();
//$$
//$$ @Shadow protected abstract void setupTerrain(Camera camera_1, Frustum frustum_1, boolean boolean_1, int int_1, boolean boolean_2);
//$$
//$$ @Shadow private int frame;
//$$
//$$ private boolean passThrough;
//$$ @Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
//$$ private void forceAllChunks(Camera camera_1, Frustum frustum_1, boolean boolean_1, int int_1, boolean boolean_2, CallbackInfo ci) {
//$$ if (replayModRender_hook == null) {
//$$ return;
//$$ }
//$$ if (passThrough) {
//$$ return;
//$$ }
//$$ ci.cancel();
//$$
//$$ passThrough = true;
//$$ try {
//$$ do {
//$$ // Determine which chunks shall be visible
//$$ setupTerrain(camera_1, frustum_1, boolean_1, frame++, boolean_2);
//$$
//$$ // Schedule all chunks which need rebuilding (we schedule even important rebuilds because we wait for
//$$ // all of them anyway and this way we can take advantage of threading)
//$$ for (ChunkBuilder.BuiltChunk builtChunk : this.chunksToRebuild) {
//$$ builtChunk.scheduleRebuild(this.chunkBuilder);
//$$ builtChunk.cancelRebuild();
//$$ }
//$$ this.chunksToRebuild.clear();
//$$
//$$ // Upload all chunks
//$$ this.needsTerrainUpdate |= ((ChunkLoadingRenderGlobal.IBlockOnChunkRebuilds) this.chunkBuilder).uploadEverythingBlocking();
//$$
//$$ // Repeat until no more updates are needed
//$$ } while (this.needsTerrainUpdate);
//$$ } finally {
//$$ passThrough = false;
//$$ }
//$$ }
//#else
private boolean replayModRender_passThroughSetupTerrain;
@Shadow private Set<ChunkBuilder.BuiltChunk> chunksToRebuild;
@Shadow
public boolean needsTerrainUpdate;
@Shadow private ChunkBuilder chunkBuilder;
@Shadow
public ChunkBuilder chunkBuilder;
@Shadow private boolean needsTerrainUpdate;
@Shadow
public abstract void setUpTerrain(
//#if MC>=11400
Camera viewEntity,
//#else
//$$ Entity viewEntity,
//#if MC>=11400
//$$ float partialTicks,
//#else
//$$ double partialTicks,
//#endif
//#endif
VisibleRegion camera,
int frameCount,
boolean playerSpectator
);
@Shadow public abstract void scheduleTerrainUpdate();
@Inject(method = "setUpTerrain", at = @At("HEAD"), cancellable = true)
private void replayModRender_setupTerrain(
//#if MC>=11400
Camera viewEntity,
//#else
//$$ Entity viewEntity,
//#if MC>=11400
//$$ float partialTicks,
//#else
//$$ double partialTicks,
//#endif
//#endif
VisibleRegion camera,
int frameCount,
boolean playerSpectator,
CallbackInfo ci
) {
if (replayModRender_hook != null && !replayModRender_passThroughSetupTerrain) {
replayModRender_passThroughSetupTerrain = true;
@Shadow protected abstract void setupTerrain(Camera camera_1, Frustum frustum_1, boolean boolean_1, int int_1, boolean boolean_2);
@Shadow private int frame;
private boolean passThrough;
@Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
private void forceAllChunks(Camera camera_1, Frustum frustum_1, boolean boolean_1, int int_1, boolean boolean_2, CallbackInfo ci) {
if (replayModRender_hook == null) {
return;
}
if (passThrough) {
return;
}
ci.cancel();
passThrough = true;
try {
do {
setUpTerrain(
viewEntity,
// Determine which chunks shall be visible
setupTerrain(camera_1, frustum_1, boolean_1, frame++, boolean_2);
// Schedule all chunks which need rebuilding (we schedule even important rebuilds because we wait for
// all of them anyway and this way we can take advantage of threading)
for (ChunkBuilder.BuiltChunk builtChunk : this.chunksToRebuild) {
builtChunk.scheduleRebuild(this.chunkBuilder);
builtChunk.cancelRebuild();
}
this.chunksToRebuild.clear();
// Upload all chunks
this.needsTerrainUpdate |= ((ChunkLoadingRenderGlobal.IBlockOnChunkRebuilds) this.chunkBuilder).uploadEverythingBlocking();
// Repeat until no more updates are needed
} while (this.needsTerrainUpdate);
} finally {
passThrough = false;
}
}
//#else
//$$ private boolean replayModRender_passThroughSetupTerrain;
//$$
//$$ @Shadow
//$$ public boolean needsTerrainUpdate;
//$$
//$$ @Shadow
//$$ public ChunkBuilder chunkBuilder;
//$$
//$$ @Shadow
//$$ public abstract void setUpTerrain(
//#if MC>=11400
//$$ Camera viewEntity,
//#else
//$$ Entity viewEntity,
//#if MC>=11400
//$$ float partialTicks,
//#else
//$$ double partialTicks,
//#endif
//#endif
//$$ VisibleRegion camera,
//$$ int frameCount,
//$$ boolean playerSpectator
//$$ );
//$$
//$$ @Inject(method = "setUpTerrain", at = @At("HEAD"), cancellable = true)
//$$ private void replayModRender_setupTerrain(
//#if MC>=11400
//$$ Camera viewEntity,
//#else
//$$ Entity viewEntity,
//#if MC>=11400
//$$ float partialTicks,
//#else
//$$ double partialTicks,
//#endif
//#endif
//$$ VisibleRegion camera,
//$$ int frameCount,
//$$ boolean playerSpectator,
//$$ CallbackInfo ci
//$$ ) {
//$$ if (replayModRender_hook != null && !replayModRender_passThroughSetupTerrain) {
//$$ replayModRender_passThroughSetupTerrain = true;
//$$
//$$ do {
//$$ setUpTerrain(
//$$ viewEntity,
//#if MC<11400
//$$ partialTicks,
//#endif
camera,
replayModRender_hook.nextFrameId(),
playerSpectator
);
replayModRender_hook.updateChunks();
} while (this.needsTerrainUpdate);
this.needsTerrainUpdate = true;
replayModRender_passThroughSetupTerrain = false;
ci.cancel();
}
}
//$$ camera,
//$$ replayModRender_hook.nextFrameId(),
//$$ playerSpectator
//$$ );
//$$ replayModRender_hook.updateChunks();
//$$ } while (this.needsTerrainUpdate);
//$$
//$$ this.needsTerrainUpdate = true;
//$$
//$$ replayModRender_passThroughSetupTerrain = false;
//$$ ci.cancel();
//$$ }
//$$ }
//$$
//#if MC<10904
//$$ @Inject(method = "isPositionInRenderChunk", at = @At("HEAD"), cancellable = true)
//$$ public void replayModRender_isPositionInRenderChunk(BlockPos pos, RenderChunk chunk, CallbackInfoReturnable<Boolean> ci) {
@@ -163,31 +163,31 @@ public abstract class Mixin_ForceChunkLoading {
//$$ }
//$$ }
//#endif
@Inject(method = "updateChunks", at = @At("HEAD"), cancellable = true)
public void replayModRender_updateChunks(long finishTimeNano, CallbackInfo ci) {
if (replayModRender_hook != null) {
replayModRender_hook.updateChunks();
ci.cancel();
}
}
// Prior to 1.9.4, MC always uses the same ChunkRenderDispatcher instance
//$$
//$$ @Inject(method = "updateChunks", at = @At("HEAD"), cancellable = true)
//$$ public void replayModRender_updateChunks(long finishTimeNano, CallbackInfo ci) {
//$$ if (replayModRender_hook != null) {
//$$ replayModRender_hook.updateChunks();
//$$ ci.cancel();
//$$ }
//$$ }
//$$
//$$ // Prior to 1.9.4, MC always uses the same ChunkRenderDispatcher instance
//#if MC>=10904
@Inject(method = "setWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/chunk/ChunkBuilder;stop()V"))
private void stopWorkerThreadsAndChunkLoadingRenderGlobal(CallbackInfo ci) {
if (replayModRender_hook != null) {
replayModRender_hook.updateRenderDispatcher(null);
}
}
//$$ @Inject(method = "setWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/chunk/ChunkBuilder;stop()V"))
//$$ private void stopWorkerThreadsAndChunkLoadingRenderGlobal(CallbackInfo ci) {
//$$ if (replayModRender_hook != null) {
//$$ replayModRender_hook.updateRenderDispatcher(null);
//$$ }
//$$ }
//#endif
@Inject(method = "reload", at = @At(value = "RETURN"))
private void setupChunkLoadingRenderGlobal(CallbackInfo ci) {
if (replayModRender_hook != null) {
replayModRender_hook.updateRenderDispatcher(this.chunkBuilder);
}
}
//$$
//$$ @Inject(method = "reload", at = @At(value = "RETURN"))
//$$ private void setupChunkLoadingRenderGlobal(CallbackInfo ci) {
//$$ if (replayModRender_hook != null) {
//$$ replayModRender_hook.updateRenderDispatcher(this.chunkBuilder);
//$$ }
//$$ }
//#endif
}
//#endif

View File

@@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class Mixin_SkipBlockOutlinesDuringRender {
@Shadow @Final private MinecraftClient client;
@Inject(method = "drawHighlightedBlockOutline", at = @At("HEAD"), cancellable = true)
@Inject(method = "drawBlockOutline", at = @At("HEAD"), cancellable = true)
private void replayModRender_drawSelectionBox(CallbackInfo ci) {
if (((EntityRendererHandler.IEntityRenderer) this.client.gameRenderer).replayModRender_getHandler() != null) {
ci.cancel();

View File

@@ -10,30 +10,30 @@ import java.util.Set;
import net.minecraft.client.render.chunk.ChunkBuilder;
//#if MC>=11500
//$$ import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
//#else
import net.minecraft.client.render.chunk.ChunkRenderer;
//$$ import net.minecraft.client.render.chunk.ChunkRenderer;
//#endif
//#endif
@Mixin(WorldRenderer.class)
public interface WorldRendererAccessor {
//#if MC<11500
@Accessor("field_4076")
void setRenderEntitiesStartupCounter(int value);
//$$ @Accessor("field_4076")
//$$ void setRenderEntitiesStartupCounter(int value);
//$$
//#if MC>=10800
@Accessor("chunkBuilder")
ChunkBuilder getRenderDispatcher();
@Accessor("needsTerrainUpdate")
void setDisplayListEntitiesDirty(boolean value);
@Accessor("chunksToRebuild")
//$$ @Accessor("chunkBuilder")
//$$ ChunkBuilder getRenderDispatcher();
//$$
//$$ @Accessor("needsTerrainUpdate")
//$$ void setDisplayListEntitiesDirty(boolean value);
//$$
//$$ @Accessor("chunksToRebuild")
//#if MC>=11500
//$$ Set<BuiltChunk> getChunksToUpdate();
//#else
Set<ChunkRenderer> getChunksToUpdate();
//$$ Set<ChunkRenderer> getChunksToUpdate();
//#endif
//#endif
//#endif

View File

@@ -33,9 +33,9 @@ import net.minecraft.sound.SoundCategory;
import net.minecraft.client.render.RenderTickCounter;
//#if MC>=11500
//$$ import com.mojang.blaze3d.systems.RenderSystem;
//$$ import net.minecraft.client.util.Window;
//$$ import org.lwjgl.opengl.GL11;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.util.Window;
import org.lwjgl.opengl.GL11;
//#endif
//#if MC>=11400
@@ -169,7 +169,7 @@ public class VideoRenderer implements RenderInfo {
}
//#if MC<11500
((WorldRendererAccessor) mc.worldRenderer).setRenderEntitiesStartupCounter(0);
//$$ ((WorldRendererAccessor) mc.worldRenderer).setRenderEntitiesStartupCounter(0);
//#endif
renderingPipeline.run();
@@ -377,7 +377,7 @@ public class VideoRenderer implements RenderInfo {
acc.setFramebufferWidth(displayWidth);
acc.setFramebufferHeight(displayHeight);
//#if MC>=11500
//$$ mc.gameRenderer.onResized(displayWidth, displayHeight);
mc.gameRenderer.onResized(displayWidth, displayHeight);
//#endif
//#else
//$$ mc.resize(displayWidth, displayHeight);
@@ -441,21 +441,21 @@ 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();
//$$ RenderSystem.ortho(0, window.getFramebufferWidth() / window.getScaleFactor(), window.getFramebufferHeight() / window.getScaleFactor(), 0, 1000, 3000);
//$$ RenderSystem.matrixMode(GL11.GL_MODELVIEW);
//$$ RenderSystem.loadIdentity();
//$$ RenderSystem.translatef(0, 0, -2000);
Window window = getWindow(mc);
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
RenderSystem.matrixMode(GL11.GL_PROJECTION);
RenderSystem.loadIdentity();
RenderSystem.ortho(0, window.getFramebufferWidth() / window.getScaleFactor(), window.getFramebufferHeight() / window.getScaleFactor(), 0, 1000, 3000);
RenderSystem.matrixMode(GL11.GL_MODELVIEW);
RenderSystem.loadIdentity();
RenderSystem.translatef(0, 0, -2000);
//#else
//#if MC>=11400
getWindow(mc).method_4493(
//$$ getWindow(mc).method_4493(
//#if MC>=11400
false
//$$ false
//#endif
);
//$$ );
//#else
//$$ mc.entityRenderer.setupOverlayRendering();
//#endif
@@ -504,10 +504,10 @@ public class VideoRenderer implements RenderInfo {
popMatrix();
//#if MC>=11500
//$$ getWindow(mc).swapBuffers();
getWindow(mc).swapBuffers();
//#else
//#if MC>=11400
getWindow(mc).setFullscreen(false);
//$$ getWindow(mc).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

View File

@@ -585,7 +585,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
entId,
GameMode.SPECTATOR,
//#if MC>=11500
//$$ packet.getSeed(),
packet.getSeed(),
//#endif
false,
packet.getDimension(),
@@ -594,7 +594,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
packet.getChunkLoadDistance(),
packet.hasReducedDebugInfo()
//#if MC>=11500
//$$ , packet.showsDeathScreen()
, packet.showsDeathScreen()
//#endif
);
//#else
@@ -637,7 +637,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
p = new PlayerRespawnS2CPacket(
respawn.getDimension(),
//#if MC>=11500
//$$ respawn.getSha256Seed(),
respawn.getSha256Seed(),
//#endif
respawn.getGeneratorType(),
GameMode.SPECTATOR

View File

@@ -13,7 +13,7 @@ import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.util.ScreenshotUtils;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if MC>=11400
@@ -64,10 +64,10 @@ public class NoGuiScreenshot {
GlStateManager.enableTexture();
//#if MC>=11500
//$$ mc.gameRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime(), new MatrixStack());
mc.gameRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime(), new MatrixStack());
//#else
//#if MC>=11400
mc.gameRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime());
//$$ mc.gameRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime());
//#else
//#if MC>=10809
//$$ mc.entityRenderer.updateCameraAndRender(MCVer.getRenderPartialTicks(), System.nanoTime());
@@ -94,7 +94,7 @@ public class NoGuiScreenshot {
// Read it, create the screenshot and finish the future
try {
//#if MC>=11400
Image image = new Image(ScreenshotUtils.method_1663(frameWidth, frameHeight, mc.getFramebuffer()));
Image image = new Image(ScreenshotUtils.takeScreenshot(frameWidth, frameHeight, mc.getFramebuffer()));
//#else
//$$ // We're using Minecraft's ScreenShotHelper even though it writes the screenshot to
//$$ // disk for better maintainability

View File

@@ -99,14 +99,14 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
protected Packet<?> decode(com.github.steveice10.netty.buffer.ByteBuf byteBuf) throws IOException {
int packetId = new ByteBufNetInput(byteBuf).readVarInt();
//#if MC>=11500
//$$ Packet<?> mcPacket = NetworkState.PLAY.getPacketHandler(NetworkSide.CLIENTBOUND, packetId);
Packet<?> mcPacket = NetworkState.PLAY.getPacketHandler(NetworkSide.CLIENTBOUND, packetId);
//#else
Packet<?> mcPacket;
try {
mcPacket = NetworkState.PLAY.getPacketHandler(NetworkSide.CLIENTBOUND, packetId);
} catch (IllegalAccessException | InstantiationException e) {
throw new IOException(e);
}
//$$ Packet<?> mcPacket;
//$$ try {
//$$ mcPacket = NetworkState.PLAY.getPacketHandler(NetworkSide.CLIENTBOUND, packetId);
//$$ } catch (IllegalAccessException | InstantiationException e) {
//$$ throw new IOException(e);
//$$ }
//#endif
if (mcPacket != null) {
int size = byteBuf.readableBytes();
@@ -196,7 +196,7 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
//$$ 0,
//#endif
//#if MC>=11500
//$$ 0,
0,
//#endif
//#if MC<11400
//$$ EnumDifficulty.NORMAL,

View File

@@ -37,8 +37,8 @@ import java.io.IOException;
import java.util.*;
//#if MC>=11500
//$$ import com.mojang.blaze3d.systems.RenderSystem;
//$$ import org.lwjgl.opengl.GL11;
import com.mojang.blaze3d.systems.RenderSystem;
import org.lwjgl.opengl.GL11;
//#endif
//#if MC>=11400
@@ -622,17 +622,17 @@ public class ReplayHandler {
enableTexture();
mc.getFramebuffer().beginWrite(true);
//#if MC>=11500
//$$ Window window = getWindow(mc);
//$$ RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
//$$ RenderSystem.matrixMode(GL11.GL_PROJECTION);
//$$ RenderSystem.loadIdentity();
//$$ RenderSystem.ortho(0, window.getFramebufferWidth() / window.getScaleFactor(), window.getFramebufferHeight() / window.getScaleFactor(), 0, 1000, 3000);
//$$ RenderSystem.matrixMode(GL11.GL_MODELVIEW);
//$$ RenderSystem.loadIdentity();
//$$ RenderSystem.translatef(0, 0, -2000);
Window window = getWindow(mc);
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
RenderSystem.matrixMode(GL11.GL_PROJECTION);
RenderSystem.loadIdentity();
RenderSystem.ortho(0, window.getFramebufferWidth() / window.getScaleFactor(), window.getFramebufferHeight() / window.getScaleFactor(), 0, 1000, 3000);
RenderSystem.matrixMode(GL11.GL_MODELVIEW);
RenderSystem.loadIdentity();
RenderSystem.translatef(0, 0, -2000);
//#else
//#if MC>=11400
getWindow(mc).method_4493(true);
//$$ getWindow(mc).method_4493(true);
//#else
//#if MC>=11400
//$$ mc.mainWindow.setupOverlayRendering();
@@ -666,10 +666,10 @@ public class ReplayHandler {
popMatrix();
//#if MC>=11500
//$$ getWindow(mc).swapBuffers();
getWindow(mc).swapBuffers();
//#else
//#if MC>=11400
getWindow(mc).setFullscreen(true);
//$$ getWindow(mc).setFullscreen(true);
//#else
//$$ Display.update();
//#endif

View File

@@ -7,15 +7,15 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(LivingEntity.class)
public interface EntityLivingBaseAccessor {
//#if MC>=11400
@Accessor("field_6224")
@Accessor("serverX")
double getInterpTargetX();
@Accessor("field_6245")
@Accessor("serverY")
double getInterpTargetY();
@Accessor("field_6263")
@Accessor("serverZ")
double getInterpTargetZ();
@Accessor("field_6284")
@Accessor("serverYaw")
double getInterpTargetYaw();
@Accessor("field_6221")
@Accessor("serverPitch")
double getInterpTargetPitch();
//#endif

View File

@@ -9,51 +9,51 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
//$$ import net.minecraft.client.MinecraftClient;
//$$ import net.minecraft.client.util.math.MatrixStack;
//$$ import net.minecraft.client.util.math.Vector3f;
//$$ import org.spongepowered.asm.mixin.Final;
//$$ import org.spongepowered.asm.mixin.Shadow;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Shadow;
//#else
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.world.BlockView;
//$$ import com.mojang.blaze3d.platform.GlStateManager;
//$$ import net.minecraft.world.BlockView;
//#endif
//#if MC>=11500
//$$ @Mixin(net.minecraft.client.render.GameRenderer.class)
@Mixin(net.minecraft.client.render.GameRenderer.class)
//#else
@Mixin(net.minecraft.client.render.Camera.class)
//$$ @Mixin(net.minecraft.client.render.Camera.class)
//#endif
public class MixinCamera {
//#if MC>=11500
//$$ @Shadow @Final private MinecraftClient client;
//$$ @Inject(
//$$ method = "renderWorld",
//$$ at = @At(
//$$ value = "INVOKE",
//$$ target = "Lnet/minecraft/client/render/Camera;getPitch()F"
//$$ )
//$$ )
//$$ private void applyRoll(float float_1, long long_1, MatrixStack matrixStack, CallbackInfo ci) {
//$$ Entity entity = this.client.getCameraEntity() == null ? this.client.player : this.client.getCameraEntity();
//$$ if (entity instanceof CameraEntity) {
//$$ matrixStack.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(((CameraEntity) entity).roll));
//$$ }
//$$ }
//#else
@Shadow @Final private MinecraftClient client;
@Inject(
method = "update",
method = "renderWorld",
at = @At(
value = "INVOKE",
target = "Lcom/mojang/blaze3d/platform/GlStateManager;rotatef(FFFF)V",
ordinal = 0
target = "Lnet/minecraft/client/render/Camera;getPitch()F"
)
)
private void applyRoll(BlockView blockView, Entity view, boolean boolean_1, boolean boolean_2, float float_1, CallbackInfo ci) {
if (view instanceof CameraEntity) {
GlStateManager.rotatef(((CameraEntity) view).roll, 0.0F, 0.0F, 1.0F);
private void applyRoll(float float_1, long long_1, MatrixStack matrixStack, CallbackInfo ci) {
Entity entity = this.client.getCameraEntity() == null ? this.client.player : this.client.getCameraEntity();
if (entity instanceof CameraEntity) {
matrixStack.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(((CameraEntity) entity).roll));
}
}
//#else
//$$ @Inject(
//$$ method = "update",
//$$ at = @At(
//$$ value = "INVOKE",
//$$ target = "Lcom/mojang/blaze3d/platform/GlStateManager;rotatef(FFFF)V",
//$$ ordinal = 0
//$$ )
//$$ )
//$$ private void applyRoll(BlockView blockView, Entity view, boolean boolean_1, boolean boolean_2, float float_1, CallbackInfo ci) {
//$$ if (view instanceof CameraEntity) {
//$$ GlStateManager.rotatef(((CameraEntity) view).roll, 0.0F, 0.0F, 1.0F);
//$$ }
//$$ }
//#endif
}
//#endif

View File

@@ -13,7 +13,7 @@ import static com.replaymod.core.versions.MCVer.*;
@Mixin(SpectatorHud.class)
public abstract class MixinGuiSpectator {
//#if MC>=10904
@Inject(method = "method_1976", at = @At("HEAD"), cancellable = true)
@Inject(method = "cycleSlot", at = @At("HEAD"), cancellable = true)
//#else
//$$ @Inject(method = "func_175260_a", at = @At("HEAD"), cancellable = true)
//#endif

View File

@@ -28,7 +28,7 @@ public abstract class MixinKeyboardListener {
at = @At(
value = "INVOKE",
//#if MC>=11400
target = "Lnet/minecraft/client/util/ScreenshotUtils;method_1659(Ljava/io/File;IILnet/minecraft/client/gl/Framebuffer;Ljava/util/function/Consumer;)V"
target = "Lnet/minecraft/client/util/ScreenshotUtils;saveScreenshot(Ljava/io/File;IILnet/minecraft/client/gl/Framebuffer;Ljava/util/function/Consumer;)V"
//#else
//#if MC>=11400
//$$ target = "Lnet/minecraft/util/ScreenShotHelper;saveScreenshot(Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;Ljava/util/function/Consumer;)V"

View File

@@ -9,9 +9,9 @@ import net.minecraft.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
//#if MC>=11500
//$$ import net.minecraft.client.render.Frustum;
import net.minecraft.client.render.Frustum;
//#else
import net.minecraft.client.render.VisibleRegion;
//$$ import net.minecraft.client.render.VisibleRegion;
//#endif
@Mixin(ArrowEntityRenderer.class)
@@ -22,15 +22,15 @@ public abstract class MixinRenderArrow extends EntityRenderer {
@SuppressWarnings("unchecked")
@Override
public boolean isVisible(Entity entity,
public boolean shouldRender(Entity entity,
//#if MC>=11500
//$$ Frustum camera,
Frustum camera,
//#else
VisibleRegion camera,
//$$ VisibleRegion camera,
//#endif
double camX, double camY, double camZ) {
// Force arrows to always render, otherwise they stop rendering when you get close to them
return ReplayModReplay.instance.getReplayHandler() != null || super.isVisible(entity, camera, camX, camY, camZ);
return ReplayModReplay.instance.getReplayHandler() != null || super.shouldRender(entity, camera, camX, camY, camZ);
}
}
//#endif

View File

@@ -13,17 +13,17 @@ import net.minecraft.util.Util;
//#endif
//#if MC>=11500
//$$ @Mixin(net.minecraft.client.render.RenderPhase.class)
@Mixin(net.minecraft.client.render.RenderPhase.class)
//#else
@Mixin(net.minecraft.client.render.item.ItemRenderer.class)
//$$ @Mixin(net.minecraft.client.render.item.ItemRenderer.class)
//#endif
public class MixinRenderItem {
//#if MC>=11400
//#if MC>=11500
//$$ @Redirect(method = "setupGlintTexturing", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
@Redirect(method = "setupGlintTexturing", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
//#else
//#if MC>=11400
@Redirect(method = "renderGlint", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
//$$ @Redirect(method = "renderGlint", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
//#else
//$$ @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J"))
//#endif

View File

@@ -13,17 +13,17 @@ import net.minecraft.util.Util;
//#endif
//#if MC>=11500
//$$ @Mixin(net.minecraft.client.render.RenderPhase.PortalTexturing.class)
@Mixin(net.minecraft.client.render.RenderPhase.PortalTexturing.class)
//#else
@Mixin(net.minecraft.client.render.block.entity.EndPortalBlockEntityRenderer.class)
//$$ @Mixin(net.minecraft.client.render.block.entity.EndPortalBlockEntityRenderer.class)
//#endif
public class MixinTileEntityEndPortalRenderer {
//#if MC>=11500
//$$ @Redirect(method = "method_23557", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
//$$ static
@Redirect(method = "method_23557", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
static
//#else
//#if MC>=11400
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
//$$ @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
//#else
//#if MC>=11200
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))

View File

@@ -8,9 +8,9 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
//#if MC>=11500
//$$ import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
//#else
import net.minecraft.client.render.chunk.ChunkRenderer;
//$$ import net.minecraft.client.render.chunk.ChunkRenderer;
//#endif
@Mixin(BuiltChunkStorage.class)
@@ -21,9 +21,9 @@ public abstract class MixinViewFrustum {
value = "INVOKE",
//#if MC>=10904
//#if MC>=11500
//$$ target = "Lnet/minecraft/client/render/chunk/ChunkBuilder$BuiltChunk;setOrigin(III)V"
target = "Lnet/minecraft/client/render/chunk/ChunkBuilder$BuiltChunk;setOrigin(III)V"
//#else
target = "Lnet/minecraft/client/render/chunk/ChunkRenderer;setOrigin(III)V"
//$$ target = "Lnet/minecraft/client/render/chunk/ChunkRenderer;setOrigin(III)V"
//#endif
//#else
//$$ target = "Lnet/minecraft/client/renderer/chunk/RenderChunk;setPosition(Lnet/minecraft/util/BlockPos;)V"
@@ -32,9 +32,9 @@ public abstract class MixinViewFrustum {
)
private void replayModReplay_updatePositionAndMarkForUpdate(
//#if MC>=11500
//$$ BuiltChunk renderChunk,
BuiltChunk renderChunk,
//#else
ChunkRenderer renderChunk,
//$$ ChunkRenderer renderChunk,
//#endif
//#if MC>=10904
int x, int y, int z

View File

@@ -25,8 +25,8 @@ import org.apache.commons.lang3.tuple.Triple;
import org.lwjgl.opengl.GL11;
//#if MC>=11500
//$$ import com.mojang.blaze3d.systems.RenderSystem;
//$$ import net.minecraft.client.util.math.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if FABRIC>=1
@@ -61,9 +61,9 @@ public class PathPreviewRenderer extends EventRegistrations {
//#if FABRIC>=1
{ on(PostRenderWorldCallback.EVENT, this::renderCameraPath); }
//#if MC>=11500
//$$ private void renderCameraPath(MatrixStack matrixStack) {
private void renderCameraPath(MatrixStack matrixStack) {
//#else
private void renderCameraPath() {
//$$ private void renderCameraPath() {
//#endif
//#else
//$$ @SubscribeEvent
@@ -92,10 +92,10 @@ public class PathPreviewRenderer extends EventRegistrations {
Triple<Double, Double, Double> viewPos = Triple.of(
Entity_getX(view),
//#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(),
//$$ // Eye height is subtracted to make path appear higher (at eye height) than it actually is (at foot height)
//$$ Entity_getY(view) - view.getStandingEyeHeight(),
//#else
//$$ Entity_getY(view),
Entity_getY(view),
//#endif
Entity_getZ(view)
);
@@ -107,7 +107,7 @@ public class PathPreviewRenderer extends EventRegistrations {
GL11.glDisable(GL11.GL_TEXTURE_2D);
//#if MC>=11500
//$$ RenderSystem.multMatrix(matrixStack.peek().getModel());
RenderSystem.multMatrix(matrixStack.peek().getModel());
//#endif
for (PathSegment segment : path.getSegments()) {
@@ -291,11 +291,11 @@ public class PathPreviewRenderer extends EventRegistrations {
);
GL11.glNormal3f(0, 1, 0);
//#if MC>=11500
//$$ GL11.glRotatef(-getRenderManager().camera.getYaw(), 0, 1, 0);
//$$ GL11.glRotatef(getRenderManager().camera.getPitch(), 1, 0, 0);
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);
//$$ GL11.glRotatef(-getRenderManager().cameraYaw, 0, 1, 0);
//$$ GL11.glRotatef(getRenderManager().cameraPitch, 1, 0, 0);
//#endif
Tessellator_getInstance().draw();