Skip to content

Commit 50398d6

Browse files
chore: Update Dragon texture replacing feature
1 parent fb6e937 commit 50398d6

File tree

2 files changed

+40
-10
lines changed

2 files changed

+40
-10
lines changed

mod/src/main/java/gg/skytils/skytilsmod/mixins/transformers/renderer/MixinRenderDragon.java

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,22 @@
1818

1919
package gg.skytils.skytilsmod.mixins.transformers.renderer;
2020

21+
import com.llamalad7.mixinextras.expression.Definition;
22+
import com.llamalad7.mixinextras.expression.Expression;
23+
import com.llamalad7.mixinextras.sugar.Local;
2124
import gg.skytils.skytilsmod.features.impl.dungeons.MasterMode7Features;
22-
import net.minecraft.client.render.entity.model.EntityModel;
25+
import gg.skytils.skytilsmod.mixins.extensions.ExtensionEntityRenderState;
26+
import net.minecraft.client.render.RenderLayer;
27+
import net.minecraft.client.render.VertexConsumerProvider;
2328
import net.minecraft.client.render.entity.EnderDragonEntityRenderer;
24-
import net.minecraft.client.render.entity.MobEntityRenderer;
2529
import net.minecraft.client.render.entity.EntityRenderDispatcher;
30+
import net.minecraft.client.render.entity.MobEntityRenderer;
31+
import net.minecraft.client.render.entity.model.EntityModel;
32+
import net.minecraft.client.render.entity.state.EnderDragonEntityRenderState;
33+
import net.minecraft.entity.Entity;
2634
import net.minecraft.entity.boss.dragon.EnderDragonEntity;
2735
import net.minecraft.util.Identifier;
36+
import org.jetbrains.annotations.Nullable;
2837
import org.spongepowered.asm.mixin.Mixin;
2938
import org.spongepowered.asm.mixin.Unique;
3039
import org.spongepowered.asm.mixin.injection.At;
@@ -34,14 +43,10 @@
3443
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
3544

3645
@Mixin(EnderDragonEntityRenderer.class)
37-
public abstract class MixinRenderDragon extends MobEntityRenderer<EnderDragonEntity> {
46+
public abstract class MixinRenderDragon {
3847
@Unique
3948
private EnderDragonEntity lastDragon = null;
4049

41-
public MixinRenderDragon(EntityRenderDispatcher renderManager, EntityModel modelBase, float f) {
42-
super(renderManager, modelBase, f);
43-
}
44-
4550
@Inject(method = "render(Lnet/minecraft/entity/boss/dragon/EnderDragonEntity;FFFFFF)V", at = @At("HEAD"))
4651
private void onRenderModel(EnderDragonEntity entitylivingbaseIn, float f, float g, float h, float i, float j, float scaleFactor, CallbackInfo ci) {
4752
lastDragon = entitylivingbaseIn;
@@ -57,8 +62,19 @@ private void afterRenderHurtFrame(EnderDragonEntity entitylivingbaseIn, float f,
5762
MasterMode7Features.INSTANCE.afterRenderHurtFrame((EnderDragonEntityRenderer) (Object) this, entitylivingbaseIn, f, g, h, i, j, scaleFactor, ci);
5863
}
5964

60-
@Inject(method = "getTexture", at = @At("HEAD"), cancellable = true)
61-
private void replaceEntityTexture(EnderDragonEntity entity, CallbackInfoReturnable<Identifier> cir) {
62-
MasterMode7Features.INSTANCE.getEntityTexture(entity, cir);
65+
///#if MC==10809
66+
//$$ @Inject(method = "getTexture", at = @At("HEAD"), cancellable = true)
67+
//$$ private void replaceEntityTexture(EnderDragonEntity entity, CallbackInfoReturnable<Identifier> cir) {
68+
//$$ MasterMode7Features.INSTANCE.getEntityTexture(entity, cir);
69+
//$$ }
70+
//#else
71+
@Definition(id = "getBuffer", method = "Lnet/minecraft/client/render/VertexConsumerProvider;getBuffer(Lnet/minecraft/client/render/RenderLayer;)Lnet/minecraft/client/render/VertexConsumer;")
72+
@Definition(id = "DRAGON_CUTOUT", field = "Lnet/minecraft/client/render/entity/EnderDragonEntityRenderer;DRAGON_CUTOUT:Lnet/minecraft/client/render/RenderLayer;")
73+
@Expression("?.getBuffer(DRAGON_CUTOUT)")
74+
@ModifyArg(method = "render(Lnet/minecraft/client/render/entity/state/EnderDragonEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At("MIXINEXTRAS:EXPRESSION"))
75+
private RenderLayer getDragonCutoutLayer(RenderLayer renderLayer, @Local(argsOnly = true) EnderDragonEntityRenderState state) {
76+
@Nullable Entity entity = ((ExtensionEntityRenderState) state).getSkytilsEntity();
77+
return MasterMode7Features.INSTANCE.getDragonCutoutLayer(entity, renderLayer);
6378
}
79+
//#endif
6480
}

mod/src/main/kotlin/gg/skytils/skytilsmod/features/impl/dungeons/MasterMode7Features.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import net.minecraft.client.render.entity.EnderDragonEntityRenderer
4949
import net.minecraft.entity.Entity
5050
import net.minecraft.entity.boss.dragon.EnderDragonEntity
5151
import net.minecraft.block.Blocks
52+
import net.minecraft.client.render.RenderLayer
5253
import net.minecraft.entity.EntityType
5354
import net.minecraft.network.packet.s2c.play.ParticleS2CPacket
5455
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket
@@ -265,6 +266,14 @@ object MasterMode7Features : EventSubscriber {
265266
} else value
266267
}
267268

269+
fun getDragonCutoutLayer(entity: Entity?, renderLayer: RenderLayer): RenderLayer {
270+
if (entity !is EnderDragonEntity || !Skytils.config.retextureWitherKingsDragons) return renderLayer
271+
entity as ExtensionEntityLivingBase
272+
val type = entity.skytilsHook.masterDragonType ?: return renderLayer
273+
return type.cutoutLayer
274+
}
275+
276+
268277
fun getEntityTexture(entity: EnderDragonEntity, cir: CallbackInfoReturnable<Identifier>) {
269278
if (!Skytils.config.retextureWitherKingsDragons) return
270279
entity as ExtensionEntityLivingBase
@@ -324,6 +333,11 @@ enum class WitherKingDragons(
324333
}
325334
val particleLocation: BlockPos = blockPos.up(5)
326335

336+
//#if MC>=12104
337+
val decalLayer = RenderLayer.getEntityDecal(texture)
338+
val cutoutLayer = RenderLayer.getEntityCutoutNoCull(texture)
339+
//#endif
340+
327341
companion object {
328342
const val particleYConstant = 19.0
329343
}

0 commit comments

Comments
 (0)