Update to MC 1.14 / Fabric

This commit is contained in:
Jonas Herzig
2019-05-04 14:37:00 +02:00
parent 17fe5b345f
commit 3d009e45c7
151 changed files with 3963 additions and 1455 deletions

View File

@@ -53,7 +53,7 @@ public class BlendMeshBuilder
this.wellBehaved = wellBehaved;
}
public void setOffset(Vector3f offset) {
public void setReverseOffset(Vector3f offset) {
this.offset = offset;
}

View File

@@ -4,6 +4,7 @@ import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix3f;
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f;
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Quaternion;
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
@@ -16,6 +17,10 @@ import org.lwjgl.opengl.GL11;
import java.io.IOException;
import java.nio.FloatBuffer;
//#if MC>=11400
//$$ import net.minecraft.util.math.Vec3d;
//#endif
public class Util {
public static BlenderFactory factory() {
return BlendState.getState().getFactory();
@@ -131,6 +136,22 @@ public class Util {
q.w = -q.w;
}
//#if MC>=10800
public static Vector3f getCameraPos() {
Minecraft mc = Minecraft.getInstance();
//#if MC>=11400
//$$ Vec3d pos = mc.getEntityRenderManager().camera.getPos();
//$$ return new Vector3f((float) pos.x, (float) pos.y, (float) pos.z);
//#else
return new Vector3f(
(float) -mc.getRenderManager().viewerPosX,
(float) -mc.getRenderManager().viewerPosY,
(float) -mc.getRenderManager().viewerPosZ
);
//#endif
}
//#endif
public static Vector3f rotate(Quaternion rot, Vector3f vec, Vector3f dest) {
if (dest == null) dest = new Vector3f();
Quaternion vecQ = new Quaternion(vec.x, vec.y, vec.z, 0);

View File

@@ -11,10 +11,10 @@ import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import java.io.IOException;
import java.util.IdentityHashMap;
import java.util.Map;
import static com.replaymod.render.blend.Util.getCameraPos;
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
public class EntityExporter implements Exporter {
@@ -42,11 +42,7 @@ public class EntityExporter implements Exporter {
// Entities are rendered relative to the viewer location.
// We however want our Entities object to not move when the viewer does,
// so we position it at 0/0/0 and instead have the entities themselves move more
Matrix4f.translate(new Vector3f(
(float) -mc.getRenderManager().viewerPosX,
(float) -mc.getRenderManager().viewerPosY,
(float) -mc.getRenderManager().viewerPosZ
), modelView, modelView);
Matrix4f.translate(getCameraPos(), modelView, modelView);
renderState.push(entitiesObject, modelView);
}

View File

@@ -8,9 +8,14 @@ import com.replaymod.render.blend.data.DObject;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.client.model.pipeline.LightUtil;
import org.lwjgl.opengl.GL11;
//#if MC>=11400
//$$ import net.minecraft.util.math.Vec3i;
//#else
import net.minecraftforge.client.model.pipeline.LightUtil;
//#endif
//#if MC>=11300
import com.replaymod.render.blend.mixin.ItemRendererAccessor;
import net.minecraft.client.renderer.model.BakedQuad;
@@ -122,7 +127,14 @@ public class ItemExporter implements Exporter {
//#endif
//#endif
: 0xffffffff;
//#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());
//#else
LightUtil.renderQuadColor(buffer, quad, color);
//#endif
}
}

View File

@@ -12,6 +12,10 @@ import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f;
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
import net.minecraft.client.Minecraft;
//#if MC>=11400
//$$ import net.minecraft.util.math.Vec3d;
//#endif
//#if MC>=10904
import net.minecraft.client.particle.Particle;
//#else
@@ -27,6 +31,7 @@ import java.io.IOException;
import java.util.IdentityHashMap;
import java.util.Map;
import static com.replaymod.render.blend.Util.getCameraPos;
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
public class ParticlesExporter implements Exporter {
@@ -74,11 +79,7 @@ public class ParticlesExporter implements Exporter {
// Particles are rendered relative to the viewer location.
// We however want our Particles object to not move when the viewer does,
// so we position it at 0/0/0 and instead have the particles themselves move more
Matrix4f.translate(new Vector3f(
(float) -mc.getRenderManager().viewerPosX,
(float) -mc.getRenderManager().viewerPosY,
(float) -mc.getRenderManager().viewerPosZ
), modelView, modelView);
Matrix4f.translate(getCameraPos(), modelView, modelView);
renderState.push(lit ? litParticlesObject : particlesObject, modelView);
}
@@ -158,7 +159,7 @@ public class ParticlesExporter implements Exporter {
//#endif
DMesh mesh = new DMesh();
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
builder.setOffset(offset);
builder.setReverseOffset(offset);
builder.setWellBehaved(true);
//#if MC>=10809
builder.begin(7, DefaultVertexFormats.PARTICLE_POSITION_TEX_COLOR_LMAP);
@@ -166,7 +167,13 @@ public class ParticlesExporter implements Exporter {
//$$ builder.startDrawingQuads();
//#endif
//#if MC>=10809
particle.renderParticle(builder, MCVer.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0);
particle.renderParticle(builder,
//#if MC>=11400
//$$ MCVer.getMinecraft().gameRenderer.getCamera(),
//#else
MCVer.getMinecraft().getRenderViewEntity(),
//#endif
0, 1, 1, 0, 0, 0);
//#else
//$$ particle.func_180434_a(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0);
//#endif

View File

@@ -51,9 +51,15 @@ public class TileEntityExporter implements Exporter {
// We however want our TileEntities object to not move when the viewer does,
// so we position it at 0/0/0 and instead have the tile entities themselves move more
Matrix4f.translate(new Vector3f(
//#if MC>=11400
//$$ (float) -mc.getEntityRenderManager().camera.getPos().x,
//$$ (float) -mc.getEntityRenderManager().camera.getPos().y,
//$$ (float) -mc.getEntityRenderManager().camera.getPos().z
//#else
(float) -mc.getRenderManager().viewerPosX,
(float) -mc.getRenderManager().viewerPosY,
(float) -mc.getRenderManager().viewerPosZ
//#endif
), modelView, modelView);
renderState.push(tileEntitiesObject, modelView);
}

View File

@@ -5,13 +5,21 @@ import net.minecraft.client.renderer.chunk.RenderChunk;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
//#if MC>=11400
//$$ @Mixin(targets = "net/minecraft/client/render/WorldRenderer$ChunkInfo")
//#else
//#if MC>=11300
@Mixin(targets = "net/minecraft/client/renderer/WorldRenderer$ContainerLocalRenderInformation")
//#else
//$$ @Mixin(targets = "net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation")
//#endif
//#endif
public interface ContainerLocalRenderInformationAccessor {
//#if MC>=11400
//$$ @Accessor("renderer")
//#else
@Accessor
//#endif
RenderChunk getRenderChunk();
}
//#endif

View File

@@ -3,12 +3,17 @@ package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ParticlesExporter;
import net.minecraft.entity.Entity;
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;
//#else
import net.minecraft.entity.Entity;
//#endif
//#if MC>=10904
import net.minecraft.client.particle.ParticleManager;
//#else
@@ -23,7 +28,15 @@ import net.minecraft.client.particle.ParticleManager;
public abstract class MixinEffectRenderer {
@Inject(method = "renderParticles", at = @At("HEAD"))
public void preRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
private void preRender(
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
float renderPartialTicks,
CallbackInfo ci
) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ParticlesExporter.class).preParticlesRender(false);
@@ -31,13 +44,22 @@ public abstract class MixinEffectRenderer {
}
@Inject(method = "renderParticles", at = @At("RETURN"))
public void postRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
private void postRender(
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
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) {
BlendState blendState = BlendState.getState();
@@ -53,5 +75,6 @@ public abstract class MixinEffectRenderer {
blendState.get(ParticlesExporter.class).postParticlesRender();
}
}
//#endif
}
//#endif

View File

@@ -5,12 +5,17 @@ import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.EntityExporter;
import com.replaymod.render.blend.exporters.TileEntityExporter;
import net.minecraft.client.renderer.culling.ICamera;
import net.minecraft.entity.Entity;
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;
//#else
import net.minecraft.entity.Entity;
//#endif
//#if MC>=11300
import net.minecraft.client.renderer.WorldRenderer;
//#else
@@ -33,7 +38,13 @@ public abstract class MixinRenderGlobal {
//#else
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)Z"))
//#endif
public void preEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
private void preEntityRender(
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(EntityExporter.class).preEntitiesRender();
@@ -48,7 +59,13 @@ public abstract class MixinRenderGlobal {
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)Z",
//#endif
shift = At.Shift.AFTER))
public void postEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
private void postEntityRender(
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(EntityExporter.class).postEntitiesRender();
@@ -63,7 +80,13 @@ public abstract class MixinRenderGlobal {
//$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V"
//#endif
))
public void preTileEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
private void preTileEntityRender(
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).preTileEntitiesRender();
@@ -79,7 +102,13 @@ public abstract class MixinRenderGlobal {
//#endif
shift = At.Shift.AFTER
))
public void postTileEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
private void postTileEntityRender(
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).postTileEntitiesRender();

View File

@@ -28,6 +28,9 @@ import net.minecraft.client.renderer.model.IBakedModel;
//$$ @Mixin(RenderItem.class)
//#endif
public abstract class MixinRenderItem {
//#if MC>=11400
//$$ @Inject(method = "renderItemModel", at = @At("HEAD"))
//#else
//#if MC>=11300
@Inject(method = "renderModel(Lnet/minecraft/client/renderer/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
at = @At("HEAD"))
@@ -40,6 +43,7 @@ public abstract class MixinRenderItem {
//$$ at = @At("HEAD"))
//#endif
//#endif
//#endif
private void onRenderModel(IBakedModel model, ItemStack stack, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {

View File

@@ -19,11 +19,15 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class MixinRenderManager {
@Inject(
//#if MC>=11400
//$$ method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//#else
//#if MC>=11300
method = "renderEntity",
//#else
//$$ method = "doRenderEntity",
//#endif
//#endif
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V"))
public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
@@ -39,11 +43,15 @@ public abstract class MixinRenderManager {
}
@Inject(
//#if MC>=11400
//$$ method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
//#else
//#if MC>=11300
method = "renderEntity",
//#else
//$$ method = "doRenderEntity",
//#endif
//#endif
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V",
shift = At.Shift.AFTER))

View File

@@ -14,8 +14,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class MixinTileEntityRendererDispatcher {
//#if MC>=11300
//#if MC>=11400
//$$ @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(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
float alpha = 1;
//#else
@@ -37,8 +42,13 @@ public abstract class MixinTileEntityRendererDispatcher {
}
//#if MC>=11300
//#if MC>=11400
//$$ @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(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
//#else
//#if MC>=11200