Skip to content

Commit

Permalink
Support OptiFine_1.15.2_HD_U_G1_pre30. Fix #27.
Browse files Browse the repository at this point in the history
  • Loading branch information
ZekerZhayard committed Jun 22, 2020
1 parent 3169c09 commit 05e97f2
Show file tree
Hide file tree
Showing 11 changed files with 16 additions and 382 deletions.
7 changes: 4 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ before_install: chmod +x gradlew
script:
- ./gradlew build -iS

before_deploy:
- ./gradlew curseforge -iS

deploy:
edge: true
file:
Expand All @@ -27,13 +30,11 @@ deploy:
skip_cleanup: true
token: $GITHUB_TOKEN

after_deploy:
./gradlew curseforge -iS

after_success:
- wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
- chmod +x send.sh
- ./send.sh success $WEBHOOK_URL

after_failure:
- wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
- chmod +x send.sh
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# OptiForge ([CurseForge](https://www.curseforge.com/minecraft/mc-mods/optiforge))

*Compatibility: (2020-06-17)*
 *OptiForge-0.1.24*
*Compatibility: (2020-06-22)*
 *OptiForge-0.1.25*
 *Forge-1.15.2-31.2.15 or newer version*
 *OptiFine-1.15.2-G1-pre23 or newer version*
 *OptiFine-1.15.2-G1-pre30 or newer version*

## How to Use

Expand Down
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false

mod_version=0.1.24
# G1_pre23
optifine_version=7.1.23
mod_version=0.1.25
# G1_pre30
optifine_version=7.1.30
minecraft_version=1.15.2
forge_version=31.2.15
forge_gradle_version=3.0.174
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,97 +1,27 @@
package io.github.zekerzhayard.optiforge.asm.mixins.net.minecraft.client.renderer;

import com.mojang.blaze3d.matrix.MatrixStack;
import io.github.zekerzhayard.optiforge.asm.utils.annotations.DynamicShadow;
import io.github.zekerzhayard.optiforge.asm.utils.annotations.LazyOverwrite;
import io.github.zekerzhayard.optiforge.asm.utils.annotations.RedirectSurrogate;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.renderer.OverlayRenderer;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.tags.Tag;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.client.event.RenderBlockOverlayEvent;
import net.minecraftforge.event.ForgeEventFactory;
import org.apache.commons.lang3.tuple.Pair;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

/**
* {@link io.github.zekerzhayard.optiforge.asm.transformers.net.minecraft.client.renderer.OverlayRendererTransformer}
*/
@Mixin(OverlayRenderer.class)
public abstract class MixinOverlayRenderer {
@Shadow
private static void renderTexture(Minecraft minecraftIn, TextureAtlasSprite spriteIn, MatrixStack matrixStackIn) {

}

@Redirect(
method = "Lnet/minecraft/client/renderer/OverlayRenderer;renderOverlays(Lnet/minecraft/client/Minecraft;Lcom/mojang/blaze3d/matrix/MatrixStack;)V",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/OverlayRenderer;getViewBlockingState(Lnet/minecraft/entity/player/PlayerEntity;)Lnet/minecraft/block/BlockState;"
),
require = 1,
allow = 1
)
private static BlockState redirect$renderOverlays$0(PlayerEntity playerEntity, Minecraft minecraftIn, MatrixStack matrixStackIn) {
Pair<BlockState, BlockPos> overlay = MixinOverlayRenderer.getOverlayBlock(playerEntity);
if (overlay != null && !ForgeEventFactory.renderBlockOverlay(playerEntity, matrixStackIn, RenderBlockOverlayEvent.OverlayType.BLOCK, overlay.getLeft(), overlay.getRight())) {
MixinOverlayRenderer.renderTexture(minecraftIn, minecraftIn.getBlockRendererDispatcher().getBlockModelShapes().getTexture(overlay.getLeft(), minecraftIn.world, overlay.getRight()), matrixStackIn);
}
return null;
}

@Redirect(
method = "Lnet/minecraft/client/renderer/OverlayRenderer;renderOverlays(Lnet/minecraft/client/Minecraft;Lcom/mojang/blaze3d/matrix/MatrixStack;)V",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/entity/player/ClientPlayerEntity;areEyesInFluid(Lnet/minecraft/tags/Tag;)Z"
),
require = 1,
allow = 1
)
private static boolean redirect$renderOverlays$1(ClientPlayerEntity player, Tag<Fluid> tagIn, Minecraft minecraftIn, MatrixStack matrixStackIn) {
return false;
}

@RedirectSurrogate(loacalVariableOrdinals = 0)
private static boolean redirect$renderOverlays$1(ClientPlayerEntity player, Tag<Fluid> tagIn, Minecraft minecraftIn, MatrixStack matrixStackIn, PlayerEntity playerEntity) {
return player.areEyesInFluid(tagIn) && !ForgeEventFactory.renderWaterOverlay(playerEntity, matrixStackIn);
}

@Redirect(
method = "Lnet/minecraft/client/renderer/OverlayRenderer;renderOverlays(Lnet/minecraft/client/Minecraft;Lcom/mojang/blaze3d/matrix/MatrixStack;)V",
method = "Lnet/minecraft/client/renderer/OverlayRenderer;getOverlayBlock(Lnet/minecraft/entity/player/PlayerEntity;)Lorg/apache/commons/lang3/tuple/Pair;",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/entity/player/ClientPlayerEntity;isBurning()Z"
target = "Lorg/apache/commons/lang3/tuple/Pair;of(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/commons/lang3/tuple/Pair;",
ordinal = 1
),
remap = false,
require = 1,
allow = 1
)
private static boolean redirect$renderOverlays$2(ClientPlayerEntity player, Minecraft minecraftIn, MatrixStack matrixStackIn) {
return false;
}

@RedirectSurrogate(loacalVariableOrdinals = 0)
private static boolean redirect$renderOverlays$2(ClientPlayerEntity player, Minecraft minecraftIn, MatrixStack matrixStackIn, PlayerEntity playerEntity) {
return player.isBurning() && !ForgeEventFactory.renderFireOverlay(playerEntity, matrixStackIn);
}

// getViewBlockingState
@LazyOverwrite(prefix = "optiforge_")
private static BlockState optiforge_func_230018_a_(PlayerEntity playerIn) {
return MixinOverlayRenderer.getOverlayBlock(playerIn).getLeft();
}

@DynamicShadow
private static Pair<BlockState, BlockPos> getOverlayBlock(PlayerEntity playerIn) {
private static Pair<BlockState, BlockPos> redirect$getOverlayBlock$0(Object left, Object right) {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,37 +1,15 @@
package io.github.zekerzhayard.optiforge.asm.mixins.net.minecraft.client.renderer;

import com.mojang.blaze3d.matrix.MatrixStack;
import io.github.zekerzhayard.optiforge.asm.utils.annotations.DynamicShadow;
import io.github.zekerzhayard.optiforge.asm.utils.annotations.LazyOverwrite;
import io.github.zekerzhayard.optiforge.asm.utils.annotations.RedirectSurrogate;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
import net.minecraft.client.renderer.texture.Texture;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.MusicDiscItem;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.client.CloudRenderHandler;
import net.minecraftforge.client.IRenderHandler;
import net.minecraftforge.client.SkyRenderHandler;
import net.minecraftforge.common.ForgeConfig;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Coerce;
import org.spongepowered.asm.mixin.injection.Redirect;

/**
* {@link io.github.zekerzhayard.optiforge.asm.transformers.net.minecraft.client.renderer.WorldRendererTransformer}
*/
@Mixin(WorldRenderer.class)
public abstract class MixinWorldRenderer {
@Shadow
private int ticks;

@Redirect(
method = "Lnet/minecraft/client/renderer/WorldRenderer;setupTerrain(Lnet/minecraft/client/renderer/ActiveRenderInfo;Lnet/minecraft/client/renderer/culling/ClippingHelperImpl;ZIZ)V",
at = @At(
Expand All @@ -57,81 +35,4 @@ public abstract class MixinWorldRenderer {
private void redirect$updateCameraAndRender$0(Texture texture, boolean blurIn, boolean mipmapIn) {
texture.setBlurMipmap(blurIn, mipmapIn);
}

@Redirect(
method = "Lnet/minecraft/client/renderer/WorldRenderer;renderSky(Lcom/mojang/blaze3d/matrix/MatrixStack;F)V",
at = @At(
value = "INVOKE",
target = "Lnet/optifine/reflect/Reflector;callVoid(Ljava/lang/Object;Lnet/optifine/reflect/ReflectorMethod;[Ljava/lang/Object;)V",
remap = false
),
require = 1,
allow = 1
)
private void redirect$renderSky$0(Object obj, @Coerce Object method, Object[] params, MatrixStack matrixStackIn, float partialTicks) {
if (obj instanceof SkyRenderHandler) {
((SkyRenderHandler) obj).render((int) params[0], (float) params[1], matrixStackIn, (ClientWorld) params[2], (Minecraft) params[3]);
} else {
((IRenderHandler) obj).render((int) params[0], (float) params[1], (ClientWorld) params[2], (Minecraft) params[3]);
}
}

@Redirect(
method = "Lnet/minecraft/client/renderer/WorldRenderer;renderClouds(Lcom/mojang/blaze3d/matrix/MatrixStack;FDDD)V",
at = @At(
value = "INVOKE",
target = "Lnet/optifine/reflect/Reflector;callVoid(Ljava/lang/Object;Lnet/optifine/reflect/ReflectorMethod;[Ljava/lang/Object;)V",
remap = false
),
require = 1,
allow = 1
)
private void redirect$renderClouds$0(Object obj, @Coerce Object method, Object[] params, MatrixStack matrixStackIn, float partialTicks, double viewEntityX, double viewEntityY, double viewEntityZ) {
if (obj instanceof CloudRenderHandler) {
((CloudRenderHandler) obj).render(this.ticks, (float) params[0], matrixStackIn, (ClientWorld) params[1], (Minecraft) params[2]);
} else {
((IRenderHandler) obj).render(this.ticks, (float) params[0], (ClientWorld) params[1], (Minecraft) params[2]);
}
}

@Redirect(
method = "Lnet/minecraft/client/renderer/WorldRenderer;playRecord(Lnet/minecraft/util/SoundEvent;Lnet/minecraft/util/math/BlockPos;)V",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/item/MusicDiscItem;getBySound(Lnet/minecraft/util/SoundEvent;)Lnet/minecraft/item/MusicDiscItem;"
),
require = 1,
allow = 1
)
private MusicDiscItem redirect$playRecord$0(SoundEvent _soundIn) {
return null;
}

@RedirectSurrogate(loacalVariableOrdinals = 0)
private MusicDiscItem redirect$playRecord$0(SoundEvent _soundIn, MusicDiscItem musicDiscItem) {
return musicDiscItem;
}

@Redirect(
method = "Lnet/minecraft/client/renderer/WorldRenderer;playEvent(Lnet/minecraft/entity/player/PlayerEntity;ILnet/minecraft/util/math/BlockPos;I)V",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/WorldRenderer;playRecord(Lnet/minecraft/util/SoundEvent;Lnet/minecraft/util/math/BlockPos;)V",
ordinal = 0
),
require = 1,
allow = 1
)
private void redirect$playEvent$0(WorldRenderer worldRenderer, SoundEvent soundIn, BlockPos pos, PlayerEntity player, int type, BlockPos blockPosIn, int data) {
this.playRecord(soundIn, pos, (MusicDiscItem) Item.getItemById(data));
}

// playRecord
@LazyOverwrite(prefix = "optiforge_")
public void optiforge_func_184377_a(SoundEvent soundIn, BlockPos pos) {
this.playRecord(soundIn, pos, soundIn == null ? null : MusicDiscItem.getBySound(soundIn));
}

@DynamicShadow
public abstract void playRecord(SoundEvent soundIn, BlockPos pos, MusicDiscItem musicDiscItem);
}

This file was deleted.

Loading

0 comments on commit 05e97f2

Please sign in to comment.