[1.7.10] - Как адекватно изменить модель игроку?

tox1cozZ

aka Agravaine
8,453
599
2,906
Есть свои данные IExtendedEntityProperties, нужно относительно их менять модель игроку.Как это лучше всего сделать?
P.S Зарегал свой рендер игрока(совместимость не волнует), дописал в doRender вот такое:
Код:
public void doRender(AbstractClientPlayer player, double x, double y, double z, float yaw, float pitch){
        MorasPlayer morasPlayer = MorasPlayer.forPlayer(player);
        if(morasPlayer.isRaceSelected()){
            mainModel = getRaceModel(morasPlayer.getRace(), morasPlayer.getGender(), morasPlayer.isMale());
            modelBipedMain = (ModelBiped)mainModel;
        }
        
        super.doRender(player, x, y, z, yaw, pitch);
Модель, вроде, меняется. В одиночке все нормально.
Но когда на сервере смотрю на другого игрока, то мне присвается его моделька и из-за этого не видно руку(от 1-го лица).
Вобщем, посоветуйте.
 
Но когда на сервере смотрю на другого игрока, то мне присвается его моделька и из-за этого не видно руку(от 1-го лица).
Вобщем, посоветуйте.
Не совсем понял что ты имел ввиду. У тебя все модели игроков одинаковые, а надо, что-бы были разные или что?
[merge_posts_bbcode]Добавлено: 20.10.2015 00:39:28[/merge_posts_bbcode]

Помню была где-то огромнейшая тема, где чел менял модель игрока на рептилоида...
 
Agravaine написал(а):
Да, у каждого должна быть разная модель, которая зависит от расы.
Ну, тогда стоит найти ту тему.
У меня взгляд лишь на скин падает, у каждого игрока ведь он разный...
 
Код:
AbstractClientPlayer

От него наследуется как твоя тушка, так и тушка другого игрока в твоем клиенте.
Где-то ты пишешь в статическое поле сначала себя, а потом по коду и чужую тушку.
Перетряхни все статики.
 
svk написал(а):
Помню была где-то огромнейшая тема, где чел менял модель игрока на рептилоида...
Моя тема была. [1.6.4]Проблемы с рендером
[merge_posts_bbcode]Добавлено: 20.10.2015 22:47:59[/merge_posts_bbcode]

Решил так - юзал RP Api, брал класс рендера модели.
 
Agravaine написал(а):
Скин я тоже меняю. И он отлично работает.
Если можно, сможешь, пожалуйста, поделиться кодом? 
P.S все кто думают что это мне надо для рас, КС проекта, СТАЛКЕР проекта и Т.Д - отвечу, мне код нужен для изменение скина без использования оптифайна и т.д. Я буду качать скин в временную папку и рендерить его. Но проблемма та, что у меня даже нет идей как его можно менять. Заранее спасибо.
 
А ты качай в постоянную папку и записывай чексумму, а если скин изменится, то изменится и чексумма, поэтому перекачивай.
[merge_posts_bbcode]Добавлено: 22.10.2015 20:18:32[/merge_posts_bbcode]

Посмотри как в 1.7.10 это сделано
 
CoomingSoon написал(а):
А ты качай в постоянную папку и записывай чексумму, а если скин изменится, то изменится и чексумма, поэтому перекачивай.
[merge_posts_bbcode]Добавлено: 22.10.2015 20:18:32[/merge_posts_bbcode]

Посмотри как в 1.7.10 это сделано
Я сделал изменение скина. Но ест пару багов и я не знаю как их зафиксить. 
Я в эвенте RenderPlayerEvent.Pre меняю скин. Все успешно вроде как. Но есть баг: Скин руки не меняется. Он меняется как но я нажму F5 и прогружу сам скин, тогда когда я обратно вернусь в обычный режим, скин руки уже поменялся. В эвенте RenderHandEvent не нашел код что бы тоже менять скин.
 
Давай код, пошаманю. Да и вообще, что мешает использовать этот великолепный туториал? http://forum.mcmodding.ru/viewtopic.php?id=2429
 
Yarik написал(а):
CoomingSoon написал(а):
А ты качай в постоянную папку и записывай чексумму, а если скин изменится, то изменится и чексумма, поэтому перекачивай.
[merge_posts_bbcode]Добавлено: 22.10.2015 20:18:32[/merge_posts_bbcode]

Посмотри как в 1.7.10 это сделано
Я сделал изменение скина. Но ест пару багов и я не знаю как их зафиксить. 
Я в эвенте RenderPlayerEvent.Pre меняю скин. Все успешно вроде как. Но есть баг: Скин руки не меняется. Он меняется как но я нажму F5 и прогружу сам скин, тогда когда я обратно вернусь в обычный режим, скин руки уже поменялся. В эвенте RenderHandEvent не нашел код что бы тоже менять скин.
Если 1.7.10, то есть хороший эвент.
 
MrCreppo написал(а):
Yarik написал(а):
CoomingSoon написал(а):
А ты качай в постоянную папку и записывай чексумму, а если скин изменится, то изменится и чексумма, поэтому перекачивай.
[merge_posts_bbcode]Добавлено: 22.10.2015 20:18:32[/merge_posts_bbcode]

Посмотри как в 1.7.10 это сделано
Я сделал изменение скина. Но ест пару багов и я не знаю как их зафиксить. 
Я в эвенте RenderPlayerEvent.Pre меняю скин. Все успешно вроде как. Но есть баг: Скин руки не меняется. Он меняется как но я нажму F5 и прогружу сам скин, тогда когда я обратно вернусь в обычный режим, скин руки уже поменялся. В эвенте RenderHandEvent не нашел код что бы тоже менять скин.
Если 1.7.10, то есть хороший эвент.
1.7.10. Руку сам пофиксил. А вот с черным фоном плаща + белым фоном плаща не смог пофиксить.
P.S Если у игрока нет плаща - он белый; Если у игрока есть плащ - он черный;
 
Код дай в любом случае, интересно попробовать.
 
public HashMap renderedCape = new HashMap();
public static String capeurl = "http://сайт.ru/lk/files/cloaks/%s.png";
public static ResourceLocation getCloak(String name) {
ResourceLocation cloak = new ResourceLocation("patchcloaks/" + StringUtils.stripControlCodes(name));
TextureManager var2 = Minecraft.getMinecraft().getTextureManager();
ITextureObject var3 = var2.getTexture(cloak);
if(var3 == null) {
ThreadDownloadImageData var31 = new ThreadDownloadImageData((File)null, String.format(capeurl, new Object[]{StringUtils.stripControlCodes(name)}), (ResourceLocation)null, new ImageBufferDownload());
var2.loadTexture(cloak, (ITextureObject)var31);
}

return cloak;
}



@SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Pre event) {
EntityPlayer entity = event.entityPlayer;
String name = entity.getCommandSenderName();


// if(((AbstractClientPlayer)entity).func_152122_n()) {
if(!this.renderedCape.containsKey(name)) {
ResourceLocation cape = getCloak(name);
((AbstractClientPlayer)entity).func_152121_a(Type.CAPE, cape);
this.renderedCape.put(name, cape);
} else {
((AbstractClientPlayer)entity).func_152121_a(Type.CAPE, (ResourceLocation)this.renderedCape.get(name));
}
// }
}
 
У меня вообще плаща нет
Код:
public HashMap renderedCape = new HashMap();
    public static String capeurl = "";

    public static ResourceLocation getCloak(String name) {
        ResourceLocation cloak = new ResourceLocation("patchcloaks/" + StringUtils.stripControlCodes(name));
        TextureManager var2 = Minecraft.getMinecraft().getTextureManager();
        ITextureObject var3 = var2.getTexture(cloak);
        if (var3 == null) {
            ThreadDownloadImageData var31 = new ThreadDownloadImageData((File) null, String.format(capeurl, new Object[]{StringUtils.stripControlCodes(name)}), (ResourceLocation) null, new ImageBufferDownload());
            var2.loadTexture(cloak, (ITextureObject) var31);
        }
        return cloak;
    }

    @SubscribeEvent
    public void onRenderPlayer(RenderPlayerEvent.Pre event) {
        EntityPlayer entity = event.entityPlayer;
        String name = entity.getCommandSenderName();

        if (!this.renderedCape.containsKey(name)) {
            ResourceLocation cape = getCloak(name);
            ((AbstractClientPlayer) entity).func_152121_a(Type.SKIN, cape);
            this.renderedCape.put(name, cape);
        } else {
            ((AbstractClientPlayer) entity).func_152121_a(Type.SKIN, (ResourceLocation) this.renderedCape.get(name));
        }
    }
Сильно твой не менял. Так что мешает сделать php скрипты?
 
Много причин есть. И кстати, поможешь с forge 1.5.2?
У меня выдает ошибку на линуксе, типа не может разархивировать scala-library.jar
 
Назад
Сверху