Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Визуальная часть CustomCape. Zenith no recode 1.21.4, fabric

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
4 Май 2025
Сообщения
29
Реакции
0
Выберите загрузчик игры
  1. Fabric
Всем привет! Не видел подобных - адекватных тем на этом лучшем форуме.
Делюсь кодом с вами, код прост, он добавляет ванильный плащ с вашей png картинкой, также он показывается
и на друзьях.

Может и не очень, но вдруг кому пригодится

Пожалуйста, авторизуйтесь для просмотра ссылки.


java:
Expand Collapse Copy
package wtf.nowels.mixins;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.AbstractClientPlayerEntity;
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 wtf.nowels.api.repository.friend.FriendUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Mixin(AbstractClientPlayerEntity.class)
public class CustomCapeMixin {
    @Unique
    private static final Identifier CAPE_ID = Identifier.of("minecraft", "textures/cape.png");
    @Unique
    private static final Logger LOGGER = LoggerFactory.getLogger("CustomCape");
    @Inject(method = "getSkinTextures", at = @At("RETURN"), cancellable = true)
    private void replaceCape(CallbackInfoReturnable<SkinTextures> cir) {
        AbstractClientPlayerEntity player = (AbstractClientPlayerEntity)(Object)this;
        MinecraftClient client = MinecraftClient.getInstance();
        if (client.player == null) return;
        boolean isLocalPlayer = player.getUuid().equals(client.player.getUuid());
        boolean isFriend = !isLocalPlayer && FriendUtils.isFriend(player);
        if (!isLocalPlayer && !isFriend) {
            LOGGER.debug("No cape for: {} (not friend)", player.getName().getString());
            return;
        }
        LOGGER.info("Applying cape for: {} (local: {}, friend: {})",
                player.getName().getString(), isLocalPlayer, isFriend);
        SkinTextures old = cir.getReturnValue();
        cir.setReturnValue(new SkinTextures(
                old.texture(),
                old.textureUrl(),
                CAPE_ID,
                CAPE_ID,
                old.model(),
                old.secure()
        ));
    }
}

java:
Expand Collapse Copy
package wtf.nowels.mixins;

import com.mojang.authlib.GameProfile;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.session.Session;
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 java.util.Objects;
import java.util.UUID;
import java.util.function.Supplier;

@Environment(EnvType.CLIENT)
@Mixin(PlayerListEntry.class)
public abstract class PlayerListEntryMixin {
    @Unique
    private static final Identifier CAPE_TEXTURE =
            Identifier.of("nowels", "textures/cape.png");
    @Inject(method = "texturesSupplier", at = @At("RETURN"), cancellable = true)
    private static void injectCapeTexture(
            GameProfile profile,
            CallbackInfoReturnable<Supplier<SkinTextures>> cir
    ) {
        MinecraftClient client = MinecraftClient.getInstance();
        if (client == null) return;
        Session session = client.getSession();
        if (session == null) return;
        UUID sessionUuid = session.getUuidOrNull();
        if (sessionUuid == null) return;
        if (!Objects.equals(sessionUuid, profile.getId())) return;
        Supplier<SkinTextures> originalSupplier = cir.getReturnValue();
        if (originalSupplier == null) return;
        SkinTextures originalTextures = originalSupplier.get();
        if (originalTextures == null) return;
        SkinTextures updatedTextures = new SkinTextures(
                originalTextures.texture(),
                originalTextures.textureUrl(),
                CAPE_TEXTURE,
                originalTextures.elytraTexture(),
                originalTextures.model(),
                true
        );
        cir.setReturnValue(() -> updatedTextures);
    }
}
 
Последнее редактирование:
Всем привет! Не видел подобных - адекватных тем на этом лучшем форуме.
Делюсь кодом с вами, код прост, он добавляет ванильный плащ с вашей png картинкой, также он показывается
и на друзьях.

Может и не очень, но вдруг кому пригодится

Пожалуйста, авторизуйтесь для просмотра ссылки.


java:
Expand Collapse Copy
package wtf.nowels.mixins;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.AbstractClientPlayerEntity;
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 wtf.nowels.api.repository.friend.FriendUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Mixin(AbstractClientPlayerEntity.class)
public class CustomCapeMixin {
    @Unique
    private static final Identifier CAPE_ID = Identifier.of("minecraft", "textures/cape.png");
    @Unique
    private static final Logger LOGGER = LoggerFactory.getLogger("CustomCape");
    @Inject(method = "getSkinTextures", at = @At("RETURN"), cancellable = true)
    private void replaceCape(CallbackInfoReturnable<SkinTextures> cir) {
        AbstractClientPlayerEntity player = (AbstractClientPlayerEntity)(Object)this;
        MinecraftClient client = MinecraftClient.getInstance();
        if (client.player == null) return;
        boolean isLocalPlayer = player.getUuid().equals(client.player.getUuid());
        boolean isFriend = !isLocalPlayer && FriendUtils.isFriend(player);
        if (!isLocalPlayer && !isFriend) {
            LOGGER.debug("No cape for: {} (not friend)", player.getName().getString());
            return;
        }
        LOGGER.info("Applying cape for: {} (local: {}, friend: {})",
                player.getName().getString(), isLocalPlayer, isFriend);
        SkinTextures old = cir.getReturnValue();
        cir.setReturnValue(new SkinTextures(
                old.texture(),
                old.textureUrl(),
                CAPE_ID,
                CAPE_ID,
                old.model(),
                old.secure()
        ));
    }
}

java:
Expand Collapse Copy
package wtf.nowels.mixins;

import com.mojang.authlib.GameProfile;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.session.Session;
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 java.util.Objects;
import java.util.UUID;
import java.util.function.Supplier;

@Environment(EnvType.CLIENT)
@Mixin(PlayerListEntry.class)
public abstract class PlayerListEntryMixin {
    @Unique
    private static final Identifier CAPE_TEXTURE =
            Identifier.of("nowels", "textures/cape.png");
    @Inject(method = "texturesSupplier", at = @At("RETURN"), cancellable = true)
    private static void injectCapeTexture(
            GameProfile profile,
            CallbackInfoReturnable<Supplier<SkinTextures>> cir
    ) {
        MinecraftClient client = MinecraftClient.getInstance();
        if (client == null) return;
        Session session = client.getSession();
        if (session == null) return;
        UUID sessionUuid = session.getUuidOrNull();
        if (sessionUuid == null) return;
        if (!Objects.equals(sessionUuid, profile.getId())) return;
        Supplier<SkinTextures> originalSupplier = cir.getReturnValue();
        if (originalSupplier == null) return;
        SkinTextures originalTextures = originalSupplier.get();
        if (originalTextures == null) return;
        SkinTextures updatedTextures = new SkinTextures(
                originalTextures.texture(),
                originalTextures.textureUrl(),
                CAPE_TEXTURE,
                originalTextures.elytraTexture(),
                originalTextures.model(),
                true
        );
        cir.setReturnValue(() -> updatedTextures);
    }
}
1775286803622.png
Ну и нахуя? /del
 
Всем привет! Не видел подобных - адекватных тем на этом лучшем форуме.
Делюсь кодом с вами, код прост, он добавляет ванильный плащ с вашей png картинкой, также он показывается
и на друзьях.

Может и не очень, но вдруг кому пригодится

Пожалуйста, авторизуйтесь для просмотра ссылки.


java:
Expand Collapse Copy
package wtf.nowels.mixins;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.AbstractClientPlayerEntity;
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 wtf.nowels.api.repository.friend.FriendUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Mixin(AbstractClientPlayerEntity.class)
public class CustomCapeMixin {
    @Unique
    private static final Identifier CAPE_ID = Identifier.of("minecraft", "textures/cape.png");
    @Unique
    private static final Logger LOGGER = LoggerFactory.getLogger("CustomCape");
    @Inject(method = "getSkinTextures", at = @At("RETURN"), cancellable = true)
    private void replaceCape(CallbackInfoReturnable<SkinTextures> cir) {
        AbstractClientPlayerEntity player = (AbstractClientPlayerEntity)(Object)this;
        MinecraftClient client = MinecraftClient.getInstance();
        if (client.player == null) return;
        boolean isLocalPlayer = player.getUuid().equals(client.player.getUuid());
        boolean isFriend = !isLocalPlayer && FriendUtils.isFriend(player);
        if (!isLocalPlayer && !isFriend) {
            LOGGER.debug("No cape for: {} (not friend)", player.getName().getString());
            return;
        }
        LOGGER.info("Applying cape for: {} (local: {}, friend: {})",
                player.getName().getString(), isLocalPlayer, isFriend);
        SkinTextures old = cir.getReturnValue();
        cir.setReturnValue(new SkinTextures(
                old.texture(),
                old.textureUrl(),
                CAPE_ID,
                CAPE_ID,
                old.model(),
                old.secure()
        ));
    }
}

java:
Expand Collapse Copy
package wtf.nowels.mixins;

import com.mojang.authlib.GameProfile;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.session.Session;
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 java.util.Objects;
import java.util.UUID;
import java.util.function.Supplier;

@Environment(EnvType.CLIENT)
@Mixin(PlayerListEntry.class)
public abstract class PlayerListEntryMixin {
    @Unique
    private static final Identifier CAPE_TEXTURE =
            Identifier.of("nowels", "textures/cape.png");
    @Inject(method = "texturesSupplier", at = @At("RETURN"), cancellable = true)
    private static void injectCapeTexture(
            GameProfile profile,
            CallbackInfoReturnable<Supplier<SkinTextures>> cir
    ) {
        MinecraftClient client = MinecraftClient.getInstance();
        if (client == null) return;
        Session session = client.getSession();
        if (session == null) return;
        UUID sessionUuid = session.getUuidOrNull();
        if (sessionUuid == null) return;
        if (!Objects.equals(sessionUuid, profile.getId())) return;
        Supplier<SkinTextures> originalSupplier = cir.getReturnValue();
        if (originalSupplier == null) return;
        SkinTextures originalTextures = originalSupplier.get();
        if (originalTextures == null) return;
        SkinTextures updatedTextures = new SkinTextures(
                originalTextures.texture(),
                originalTextures.textureUrl(),
                CAPE_TEXTURE,
                originalTextures.elytraTexture(),
                originalTextures.model(),
                true
        );
        cir.setReturnValue(() -> updatedTextures);
    }
}
как же это бесполезно
 
Назад
Сверху Снизу