Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Часть функционала Кастом плащ на фабрик 1.21.4

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
31 Авг 2022
Сообщения
364
Реакции
4
Выберите загрузчик игры
  1. Fabric
Official mappings:
Expand Collapse Copy
package ru.apelsin.injections.player;

import com.mojang.authlib.GameProfile;
import net.minecraft.client.multiplayer.PlayerInfo;
import net.minecraft.client.resources.PlayerSkin;
import net.minecraft.resources.ResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.apelsin.Constants;
import ru.apelsin.common.QuickImports;

import java.util.function.Supplier;

@Mixin(PlayerInfo.class)
public class PlayerInfoMixin implements QuickImports {
    @Unique
    private final static ResourceLocation CAPE = Constants.getResource("images/cape.png");

    @Inject(method = "createSkinLookup", at = @At("RETURN"), cancellable = true)
    private static void createSkinLookup(GameProfile gameProfile, CallbackInfoReturnable<Supplier<PlayerSkin>> cir) {
        boolean bl = mc.isLocalPlayer(gameProfile.getId());
        if (bl) {
            PlayerSkin playerSkin = cir.getReturnValue().get();
            PlayerSkin newPlayerSkin = new PlayerSkin(playerSkin.texture(), playerSkin.textureUrl(), CAPE, playerSkin.elytraTexture(), playerSkin.model(), playerSkin.secure());

            cir.setReturnValue(() -> newPlayerSkin);
        }
    }
}

Yarn mappings:
Expand Collapse Copy
package ru.apelsin.injections.player;

import com.mojang.authlib.GameProfile;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.util.SkinTextures;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.apelsin.Constants;
import ru.apelsin.common.QuickImports;

import java.util.function.Supplier;

@Mixin(PlayerListEntry.class)
public class PlayerInfoMixin implements QuickImports {
    @Unique
    private final static Identifier CAPE = Constants.getResource("images/cape.png");

    @Inject(method = "texturesSupplier", at = @At("RETURN"), cancellable = true)
    private static void texturesSupplier(GameProfile gameProfile, CallbackInfoReturnable<Supplier<SkinTextures>> cir) {
        boolean bl = mc.uuidEquals(gameProfile.getId());
        if (bl) {
            SkinTextures playerSkin = cir.getReturnValue().get();
            SkinTextures newPlayerSkin = new SkinTextures(playerSkin.texture(), playerSkin.textureUrl(), CAPE, playerSkin.elytraTexture(), playerSkin.model(), playerSkin.secure());

            cir.setReturnValue(() -> newPlayerSkin);
        }
    }
}

пастите на здоровье!
 
Назад
Сверху Снизу