Replace all ATs with Mixin on 1.13+ in preparation for Fabric
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
//#if MC>=10800
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderTask;
|
||||
import net.minecraft.client.renderer.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;
|
||||
//#else
|
||||
//$$ import java.util.concurrent.BlockingQueue;
|
||||
//#endif
|
||||
|
||||
@Mixin(ChunkRenderDispatcher.class)
|
||||
public interface ChunkRenderDispatcherAccessor {
|
||||
@Accessor
|
||||
List<ChunkRenderWorker> getListThreadedWorkers();
|
||||
|
||||
//#if MC>=10904
|
||||
@Accessor
|
||||
PriorityBlockingQueue<ChunkRenderTask> getQueueChunkUpdates();
|
||||
@Accessor
|
||||
void setQueueChunkUpdates(PriorityBlockingQueue<ChunkRenderTask> value);
|
||||
//#else
|
||||
//$$ @Accessor
|
||||
//$$ BlockingQueue<ChunkCompileTaskGenerator> getQueueChunkUpdates();
|
||||
//$$ @Accessor
|
||||
//$$ void setQueueChunkUpdates(BlockingQueue<ChunkCompileTaskGenerator> value);
|
||||
//#endif
|
||||
}
|
||||
//#endif
|
||||
@@ -0,0 +1,15 @@
|
||||
//#if MC>=11300
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import net.minecraft.client.MainWindow;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(MainWindow.class)
|
||||
public interface MainWindowAccessor {
|
||||
@Accessor
|
||||
void setFramebufferWidth(int value);
|
||||
@Accessor
|
||||
void setFramebufferHeight(int value);
|
||||
}
|
||||
//#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
//#if MC>=10800
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import com.replaymod.render.hooks.FogStateCallback;
|
||||
import com.replaymod.render.hooks.Texture2DStateCallback;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(GlStateManager.class)
|
||||
public class MixinGlStateManager {
|
||||
//#if MC>=11300
|
||||
@Accessor
|
||||
//#else
|
||||
//$$ @Accessor("activeTextureUnit")
|
||||
//#endif
|
||||
private static int getActiveTexture() { return 0; }
|
||||
|
||||
@Inject(method = "enableFog", at = @At("HEAD"))
|
||||
private static void enableFog(CallbackInfo ci) {
|
||||
FogStateCallback.EVENT.invoker().fogStateChanged(true);
|
||||
}
|
||||
|
||||
@Inject(method = "disableFog", at = @At("HEAD"))
|
||||
private static void disableFog(CallbackInfo ci) {
|
||||
FogStateCallback.EVENT.invoker().fogStateChanged(false);
|
||||
}
|
||||
|
||||
@Inject(method = "enableTexture2D", at = @At("HEAD"))
|
||||
private static void enableTexture2D(CallbackInfo ci) {
|
||||
Texture2DStateCallback.EVENT.invoker().texture2DStateChanged(getActiveTexture(), true);
|
||||
}
|
||||
|
||||
@Inject(method = "disableTexture2D", at = @At("HEAD"))
|
||||
private static void disableTexture2D(CallbackInfo ci) {
|
||||
Texture2DStateCallback.EVENT.invoker().texture2DStateChanged(getActiveTexture(), false);
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
@@ -4,6 +4,7 @@ package com.replaymod.render.mixin;
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import com.replaymod.render.blend.BlendState;
|
||||
import com.replaymod.render.blend.exporters.ParticlesExporter;
|
||||
import com.replaymod.render.blend.mixin.ParticleAccessor;
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.particle.Particle;
|
||||
import net.minecraft.client.particle.ParticleManager;
|
||||
@@ -51,9 +52,10 @@ public abstract class MixinParticleManager {
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
if (handler != null && handler.omnidirectional) {
|
||||
// Align all particles towards the camera
|
||||
double dx = particle.prevPosX + (particle.posX - particle.prevPosX) * partialTicks - view.posX;
|
||||
double dy = particle.prevPosY + (particle.posY - particle.prevPosY) * partialTicks - view.posY;
|
||||
double dz = particle.prevPosZ + (particle.posZ - particle.prevPosZ) * partialTicks - view.posZ;
|
||||
ParticleAccessor acc = (ParticleAccessor) particle;
|
||||
double dx = acc.getPrevPosX() + (acc.getPosX() - acc.getPrevPosX()) * partialTicks - view.posX;
|
||||
double dy = acc.getPrevPosY() + (acc.getPosY() - acc.getPrevPosY()) * partialTicks - view.posY;
|
||||
double dz = acc.getPrevPosZ() + (acc.getPosZ() - acc.getPrevPosZ()) * partialTicks - view.posZ;
|
||||
double pitch = -Math.atan2(dy, Math.sqrt(dx * dx + dz * dz));
|
||||
double yaw = -Math.atan2(dx, dz);
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
//#endif
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public interface WorldRendererAccessor {
|
||||
@Accessor
|
||||
void setRenderEntitiesStartupCounter(int value);
|
||||
|
||||
//#if MC>=10800
|
||||
@Accessor
|
||||
ChunkRenderDispatcher getRenderDispatcher();
|
||||
|
||||
@Accessor
|
||||
void setDisplayListEntitiesDirty(boolean value);
|
||||
|
||||
@Accessor
|
||||
Set<RenderChunk> getChunksToUpdate();
|
||||
//#endif
|
||||
}
|
||||
Reference in New Issue
Block a user