Minecraft ships unobfuscated from 26.1, and 1.21.11 has the last Yarn release, so the shared src/ has to use Mojang's names before newer versions can be added (#39). Each version's sources were migrated with Loom's migrateMappings and merged back into src/, so code that is only active on other versions is migrated too. Where Mojang's names differ between 1.21.x versions, src/ uses the newest ones: Stonecutter replacements swap in the older Identifier/ResourceLocation and Avatar/Player renderer names, and version comments cover the few package moves and renamed methods. The fog mixin now targets setupFog on every version. Yarn's applyFog named two methods from 1.21.6 on, so it also applied to updateBuffer. Co-Authored-By: Claude Opus 5.5 <[email protected]>
65 lines
2.4 KiB
Java
65 lines
2.4 KiB
Java
package org.saturnclient.impl.cosmetics;
|
|
|
|
import org.saturnclient.client.player.SaturnPlayer;
|
|
import org.saturnclient.impl.cosmetics.obj.MtlLoader;
|
|
import org.saturnclient.impl.cosmetics.obj.ObjModel;
|
|
import org.saturnclient.saturnclient.SaturnRenderState;
|
|
|
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
|
//? if >=1.21.9 {
|
|
import net.minecraft.client.renderer.SubmitNodeCollector;
|
|
//?} else
|
|
//import net.minecraft.client.renderer.MultiBufferSource;
|
|
import net.minecraft.client.renderer.entity.layers.RenderLayer;
|
|
import net.minecraft.client.renderer.entity.RenderLayerParent;
|
|
//? if >=1.21.11 {
|
|
import net.minecraft.client.model.player.PlayerModel;
|
|
//?} else
|
|
//import net.minecraft.client.model.PlayerModel;
|
|
import net.minecraft.client.renderer.entity.state.AvatarRenderState;
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
|
|
public class HatFeatureRenderer extends RenderLayer<AvatarRenderState, PlayerModel> {
|
|
public HatFeatureRenderer(RenderLayerParent<AvatarRenderState, PlayerModel> context) {
|
|
super(context);
|
|
}
|
|
|
|
@Override
|
|
//? if >=1.21.9 {
|
|
public void submit(PoseStack matrices,
|
|
//?} else
|
|
//public void render(PoseStack matrices,
|
|
//? if >=1.21.9 {
|
|
SubmitNodeCollector output,
|
|
//?} else
|
|
//MultiBufferSource output,
|
|
int light, AvatarRenderState state, float limbAngle, float limbDistance) {
|
|
//? if >=1.21.8 {
|
|
SaturnPlayer player = state.getData(SaturnRenderState.saturnDataKey);
|
|
//?} else
|
|
//SaturnPlayer player = SaturnPlayer.get(state.name);
|
|
|
|
if (state.isInvisible || player == null || player.hat.isEmpty()) {
|
|
return;
|
|
}
|
|
|
|
matrices.pushPose();
|
|
|
|
// On the head, as vanilla places head items: the whole player (which emotes like the backflip
|
|
// turn), then the head's position, turn and scale (which crouching and emotes move)
|
|
PlayerModel model = this.getParentModel();
|
|
//? if >=1.21.5 {
|
|
model.root().translateAndRotate(matrices);
|
|
model.head.translateAndRotate(matrices);
|
|
//?} else {
|
|
/*model.root().translateAndRotate(matrices);
|
|
model.head.translateAndRotate(matrices);
|
|
*///?}
|
|
|
|
ObjModel.cosmetic("hat", player.hat).render(MtlLoader.cosmetic(player.hat),
|
|
matrices, output, light,
|
|
OverlayTexture.NO_OVERLAY);
|
|
|
|
matrices.popPose();
|
|
}
|
|
} |