Update to MC 1.14 / Fabric
This commit is contained in:
@@ -53,7 +53,7 @@ public class BlendMeshBuilder
|
||||
this.wellBehaved = wellBehaved;
|
||||
}
|
||||
|
||||
public void setOffset(Vector3f offset) {
|
||||
public void setReverseOffset(Vector3f offset) {
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user