WIP 1.15 and ReplayStudio v2 update

This commit is contained in:
Jonas Herzig
2020-03-13 14:18:19 +01:00
parent 8bc0b0a4df
commit af8803d6b5
65 changed files with 874 additions and 1303 deletions

View File

@@ -11,6 +11,10 @@ import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormatElement;
import org.lwjgl.opengl.GL11;
//#if MC>=11500
//$$ import com.mojang.datafixers.util.Pair;
//#endif
//#if MC>=10904
//#if MC>=11200
import net.minecraft.client.render.BufferBuilder;
@@ -135,7 +139,12 @@ public class BlendMeshBuilder
//#else
//$$ 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);
//#else
return addBufferToMesh(bufferBuilder.getByteBuffer(), bufferBuilder.getDrawMode(), bufferBuilder.getVertexFormat(), mesh, vertOffset);
//#endif
}
public static DMesh addBufferToMesh(ByteBuffer buffer, int mode, VertexFormat vertexFormat, DMesh mesh, ReadableVector3f vertOffset) {
@@ -158,12 +167,20 @@ public class BlendMeshBuilder
// Determine offset of vertex components
int posOffset = -1, colorOffset = -1, uvOffset = -1;
int index = 0;
//#if MC>=11500
int elementOffset = 0;
//#endif
for (VertexFormatElement element : getElements(vertexFormat)) {
//#if MC>=11500
//$$ int offset = elementOffset;
//$$ elementOffset += element.getSize();
//#else
//#if MC>=10809
int offset = vertexFormat.getElementOffset(index);
//#else
//$$ int offset = element.getOffset();
//#endif
//#endif
switch (element.getType()) {
case POSITION:
//#if MC>=11400

View File

@@ -3,7 +3,10 @@ package com.replaymod.render.blend;
import com.replaymod.render.blend.data.DScene;
import com.replaymod.render.blend.data.Serializer;
//#if MC>=10800
// FIXME 1.15
//#if MC<11500
import com.replaymod.render.blend.exporters.ChunkExporter;
//#endif
import com.replaymod.render.blend.exporters.EntityExporter;
import com.replaymod.render.blend.exporters.ItemExporter;
import com.replaymod.render.blend.exporters.ParticlesExporter;
@@ -53,7 +56,10 @@ public class BlendState implements Exporter {
//#if MC>=10800
RenderState renderState = new RenderState(this);
register(renderState);
// FIXME 1.15
//#if MC<11500
register(new ChunkExporter());
//#endif
register(new EntityExporter(renderState));
register(new TileEntityExporter(renderState));
register(new ParticlesExporter(renderState));

View File

@@ -1,4 +1,5 @@
//#if MC>=10800
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.exporters;
import com.replaymod.core.versions.MCVer;

View File

@@ -124,6 +124,9 @@ public class ItemExporter implements Exporter {
//$$ ? stack.getItem().getColorFromItemStack(stack, quad.getTintIndex()) | 0xff000000
//#endif
: 0xffffffff;
//#if MC>=11500
//$$ // FIXME 1.15
//#else
//#if MC>=11400
buffer.putVertexData(quad.getVertexData());
buffer.setQuadColor(color);
@@ -132,6 +135,7 @@ public class ItemExporter implements Exporter {
//#else
//$$ LightUtil.renderQuadColor(buffer, quad, color);
//#endif
//#endif
}
}

View File

@@ -67,7 +67,11 @@ 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?
//#else
object.id.name = model.name;
//#endif
object.setParent(parent);
}
object.lastFrame = frame;
@@ -78,7 +82,11 @@ public class ModelRendererExporter implements Exporter {
DMesh mesh = new DMesh();
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
for (Box box : cubeList(model)) {
//#if MC>=11500
//$$ // FIXME 1.15
//#else
box.render(builder, scale);
//#endif
}
builder.maybeFinishDrawing();
return mesh;

View File

@@ -113,9 +113,16 @@ public class ParticlesExporter implements Exporter {
// Instead of actually translating, we just add the translation on the current model-view-matrix.
Matrix4f modelView = getGlModelViewMatrix();
ParticleAccessor acc = (ParticleAccessor) particle;
double dx = acc.getPrevPosX() + (acc.getPosX() - acc.getPrevPosX()) * renderPartialTicks - Particle.cameraX;
double dy = acc.getPrevPosY() + (acc.getPosY() - acc.getPrevPosY()) * renderPartialTicks - Particle.cameraY;
double dz = acc.getPrevPosZ() + (acc.getPosZ() - acc.getPrevPosZ()) * renderPartialTicks - Particle.cameraZ;
double dx = acc.getPrevPosX() + (acc.getPosX() - acc.getPrevPosX()) * renderPartialTicks;
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?
//#else
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);
renderState.pushModelView(modelView);
@@ -173,7 +180,11 @@ public class ParticlesExporter implements Exporter {
//#else
//$$ MCVer.getMinecraft().getRenderViewEntity(),
//#endif
0, 1, 1, 0, 0, 0);
0
//#if MC<11500
, 1, 1, 0, 0, 0
//#endif
);
//#else
//$$ particle.func_180434_a(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0);
//#endif

View File

@@ -15,11 +15,15 @@ import org.spongepowered.asm.mixin.gen.Accessor;
//#endif
//#endif
public interface ContainerLocalRenderInformationAccessor {
//#if MC>=11500
//$$ @Accessor("chunk")
//#else
//#if MC>=11400
@Accessor("renderer")
//#else
//$$ @Accessor
//#endif
//#endif
ChunkRenderer getRenderChunk();
}
//#endif

View File

@@ -1,4 +1,5 @@
//#if MC>=10800
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;

View File

@@ -1,4 +1,4 @@
//#if MC>=10800
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;

View File

@@ -1,4 +1,5 @@
//#if MC>=10800
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;

View File

@@ -9,6 +9,11 @@ import org.spongepowered.asm.mixin.Mixin;
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;
//#endif
//#if MC>=10904
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#else
@@ -19,6 +24,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class MixinRenderManager {
@Inject(
//#if MC>=11500
//$$ method = "render",
//#else
//#if MC>=11400
method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//#else
@@ -28,9 +36,17 @@ public abstract class MixinRenderManager {
//$$ method = "doRenderEntity",
//#endif
//#endif
//#endif
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V"))
public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
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,
//#else
boolean box,
//#endif
//#if MC>=10904
CallbackInfo ci) {
//#else
@@ -43,6 +59,9 @@ public abstract class MixinRenderManager {
}
@Inject(
//#if MC>=11500
//$$ method = "render",
//#else
//#if MC>=11400
method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//#else
@@ -52,10 +71,18 @@ public abstract class MixinRenderManager {
//$$ method = "doRenderEntity",
//#endif
//#endif
//#endif
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V",
shift = At.Shift.AFTER))
public void postRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
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,
//#else
boolean box,
//#endif
//#if MC>=10904
CallbackInfo ci) {
//#else

View File

@@ -1,4 +1,5 @@
//#if MC>=10800
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;

View File

@@ -1,4 +1,5 @@
//#if MC>=10800
// FIXME 1.15
//#if MC>=10800 && MC<11500
package com.replaymod.render.blend.mixin;
import net.minecraft.client.render.WorldRenderer;