WIP 1.15 and ReplayStudio v2 update
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//#if MC>=10800
|
||||
//#if MC>=10800 && MC<11500
|
||||
package com.replaymod.render.blend.mixin;
|
||||
|
||||
import com.replaymod.render.blend.BlendState;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user