[1.7.10]Смена картинки блока при одевании предмета

Смысл такой, я ставлю блок, он является блоком с невидимой текстурой и рендером как у стекла, затем одеваю на себя спец. шлем и вместо его текстуры_1 видно текстуру_2.

Что для этого нужно сделать?
класс блока, класс те, класс рендера - это уже есть

В классе блока зарегистрировано две текстуры
Код:
@Override
public void registerBlockIcons(IIconRegister register) {
super.registerBlockIcons(register);
invisibleIcon = register.registerIcon(Main.MODID + getUnlocalizedName()
+ "_INVISIBLE");
visibleIcon = register.registerIcon(Main.MODID + getUnlocalizedName()
+ "_VISIBLE");
}
Как научить шлем переключать у игрока эти две текстуры?
 

timaxa007

Модератор
5,831
409
672
1. Использовать "getBlockTexture", используешь клиентского игрока "Minecraft.getMinecraft().thePlayer;", проверяешь его на наличии этого шлема.
2. Зависит от способа как ты хочешь переключать, но скорее всего NBT тег использовать.
 
Agravaine написал(а):
Не, такая фигня не пашет, метод вызывается только при чанк-апдейте.
Создавай свою текстуру.
Как вызвать апдейт чанка? onItemRightClick это понятно (или на слот в инвентаре), а как вызвать перезагрузку чанка?
 
В общем, я к сожалению не смог понять вашего объяснения и заговнокодил следующим образом (работает)

В классе шлема
Код:
    public static int visibility = 0;

        ...

        @Override
        public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
        if (itemStack.getItem().equals(Main.admin_glasses))
            player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 40));
            if(visibility < 1){visibility = 1;}
        }
        
        @Override
        public void onUpdate(ItemStack istack, World world, Entity player, int num, boolean bool){
        System.out.println(visibility);
        if(visibility > 0){visibility = 0;}
        }
В классе рендера блока
Код:
@Override
    public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) {

            ...
        if(com.CAJlO.Barrier.Admin_Glasses.visibility<1){
        ResourceLocation textures = (new ResourceLocation(com.CAJlO.Barrier.Constants.MOD_ID +
                ":models/blocks/barrier/barrier_invisible.png"));
        Minecraft.getMinecraft().renderEngine.bindTexture(textures);
        
        }else{
        ResourceLocation textures = (new ResourceLocation(com.CAJlO.Barrier.Constants.MOD_ID +
                ":models/blocks/barrier/barrier_visible.png"));
        Minecraft.getMinecraft().renderEngine.bindTexture(textures);
        }
        ...

    }
 
1,239
2
24
И как же тогда сделано в таум крафте,где если наденешь очки будет видна аура?(она тоже как блок)
 
Сверху