[1.7.10] Как изменение текстуры блока связать со временем?

Если я не издеваюсь значит я просто не понял.Я сюда зашел спросить что делать а не для того что бы меня послали туториалы читать.Форум это его суть
dark32 написал(а):
XuPuPG, ты издеваешься? Иди читай туториалы, учебники, с самого начала читать, не пропуская ничего.
 
XuPuPG, Так есть тутор о том как правильно делать иконки блокам. newblock - это не иконка, это переменная, к тому же не то чтобы пустая, так даже не инициализированная.
Журнал вопросов - ответы на частые вопросы, решённые вопросы, разбор проблем. Туда ты даже не смотрел, а сразу полез задаывать вопрос. Если каждый будет задавать один и тот же вопрос, то это уже не форум будет, а маир.ру какой-то с их системой вопросов и ответов.
 
Это ты имеешь в виду? this.setBlockTextureName("newblock");
dark32 написал(а):
XuPuPG, Так есть тутор о том как правильно делать иконки блокам. newblock - это не иконка, это переменная, к тому же не то чтобы пустая, так даже не инициализированная.
Журнал вопросов - ответы на частые вопросы, решённые вопросы, разбор проблем. Туда ты даже не смотрел, а сразу полез задаывать вопрос. Если каждый будет задавать один и тот же вопрос, то это уже не форум будет, а маир.ру какой-то с их системой вопросов и ответов.
[merge_posts_bbcode]Добавлено: 24.02.2015 16:57:47[/merge_posts_bbcode]

Не работает и вот так http://joxi.ru/1A5ROdaIZ0DErE
XuPuPG написал(а):
Это ты имеешь в виду? this.setBlockTextureName("newblock");
dark32 написал(а):
XuPuPG, Так есть тутор о том как правильно делать иконки блокам. newblock - это не иконка, это переменная, к тому же не то чтобы пустая, так даже не инициализированная.
Журнал вопросов - ответы на частые вопросы, решённые вопросы, разбор проблем. Туда ты даже не смотрел, а сразу полез задаывать вопрос. Если каждый будет задавать один и тот же вопрос, то это уже не форум будет, а маир.ру какой-то с их системой вопросов и ответов.
 
annalifegame написал(а):
Не знаю как сделать на 1.7+
Но вот как на 1.6+ { 
public class TestBlock extends Block
{
    protected TestBlock(int par1)
    {
        super(par1, Material.ground);
        this.setCreativeTab(CreativeTabs.tabBlock);
    }
    public int getLightValue(IBlockAccess blockAccess, int x, int y, int z){
    if(blockAccess instanceof World){
        World world = (World)blockAccess;
        return world.isDaytime() ? 0 : 15;
    }
    return 0;
}

public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int metadata){
    if(blockAccess instanceof World){
        World world = (World)blockAccess;
        return world.isDaytime() ? icon1 : icon2;
    }
    return blockIcon;
}
    @SideOnly(Side.CLIENT)
    private Icon icon1;
    private Icon icon2;

    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister iconReg)
    {
        icon1 = iconReg.registerIcon("DifferentBlocks:Item01_1");
        icon2 = iconReg.registerIcon("DifferentBlocks:Item01_2");
    }
}
Вроде так, у меня работало.
А, ведь, я был так близко:..
Код:
package igor.mods.differentblocks;

import javax.swing.Icon;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class Block136 extends Block
{
   protected Block136()
   {
       super(Material.redstoneLight);
       this.setBlockName("block136");
       this.setCreativeTab(DifferentBlocks.tabDifferentBlocks);
       this.setLightLevel(1.0F);
       this.setStepSound(soundTypeGlass);
   }
   @SideOnly(Side.CLIENT)
   private IIcon blockIcon;
   private IIcon icon1;
   private IIcon icon2;

   @SideOnly(Side.CLIENT)
   public void register/*Block*/Icons(/*I*/IconRegister iconReg)
   {
       blockIcon = iconReg.registerIcon("DifferentBlocks:Block001");
       icon1 = iconReg.registerIcon("DifferentBlocks:Block002");
       icon2 = iconReg.registerIcon("DifferentBlocks:Block003");
   }
   public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int metadata){
       if(blockAccess instanceof World){
           World world = (World)blockAccess;
           return world.isDaytime() ? icon1 : icon2;
       }
       return blockIcon;
   }
}
Ну ладно, с этим я почти разобрался. Теперь возникает ошибка в IconRegister, предложений по импортированию классов нет, что делать?!
 
[font=Verdana, Helvetica, Arial, sans-serif] this.setBlockTextureName(":newblock"); - 1 способ
[/font]
[font=Verdana, Helvetica, Arial, sans-serif] this.setBlockTextureName(ModInfo.MODID + ":newblock"); - 2 способ[/font]
 
Ибо в 1.6 и 1.7 разные названия классов
Класс 1.6           Класс 1.7
IconRegister  -> IIconRegister
Icon              -> IIcon
 
Dragon2488 написал(а):
Ибо в 1.6 и 1.7 разные названия классов
Класс 1.6           Класс 1.7
IconRegister  -> IIconRegister
Icon              -> IIcon

Код:
package igor.mods.differentblocks;

import javax.swing.Icon;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class Block136 extends Block
{
    protected Block136()
    {
        super(Material.redstoneLight);
        this.setBlockName("block136");
        this.setCreativeTab(DifferentBlocks.tabDifferentBlocks);
    this.setLightLevel(1.0F);
        this.setStepSound(soundTypeGlass);
    }
    @SideOnly(Side.CLIENT)
    private IIcon icon1;
    private IIcon icon2;
    private IIcon blockIcon;
    
    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister iconReg)
    {
        icon1 = iconReg.registerIcon("DifferentBlocks:Block001");
        icon2 = iconReg.registerIcon("DifferentBlocks:Block002");
        blockIcon = iconReg.registerIcon("DifferentBlocks:Block003");
    }
    public int getLightValue(IBlockAccess blockAccess, int x, int y, int z)
    {
        if(blockAccess instanceof World)
        {
            World world = (World)blockAccess;
            return world.isDaytime() ? 0 : 15;
        }
            return 0;
    }
    public IIcon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int metadata)
    {
        if(blockAccess instanceof World)
        {
            World world = (World)blockAccess;
            return world.isDaytime() ? icon1 : icon2;
        }
        return blockIcon;
    }
}

Единственная разница между тем, что я пробовал и тем, что есть у меня сейчас лишь одно слово - Block. Смена текстуры не работает до сих пор, смена уровня свечения тоже до сих пор работает неправильно.
 
А вы зря агритесь. Я тут делал дебаг блок, который виден только в креативе. И, такие дела, чтобы блок поменял текстуру, надо или делать для него тайл, чтобы тот не зависел от перекомпоновки рендерлиста чанка, или же делать отдельный блок, как делают ванильные печь и лампа.
Текстура не меняется потому что чанк рендерится с нуля не каждый раз, а лишь при загрузке и обновлении. С освещением та же хрень.
Если при изменении блоков в чанке у ТС ничего не меняется, то у него ещё и в коде ошибка где-то.

Не верите мне - идите постройте замкнутый квадрат из ламп и вокруг сделайте редстоун-схему, которая будет последовательно зажигать все лампы, только не разом, а постепенно, цепочкой. И заодно посмотрите как всё это будет лагать.
 
Oldestkon написал(а):
А вы зря агритесь. Я тут делал дебаг блок, который виден только в креативе. И, такие дела, чтобы блок поменял текстуру, надо или делать для него тайл, чтобы тот не зависел от перекомпоновки рендерлиста чанка, или же делать отдельный блок, как делают ванильные печь и лампа.
Текстура не меняется потому что чанк рендерится с нуля не каждый раз, а лишь при загрузке и обновлении. С освещением та же хрень.
Если при изменении блоков в чанке у ТС ничего не меняется, то у него ещё и в коде ошибка где-то.

Не верите мне - идите постройте замкнутый квадрат из ламп и вокруг сделайте редстоун-схему, которая будет последовательно зажигать все лампы, только не разом, а постепенно, цепочкой. И заодно посмотрите как всё это будет лагать.
Вот, я писал, что блок излучает свет только после перезахода в игру и выключает точно также. А текстуры вообще не меняются. А в коде вряд ли ошибка, ведь я его с ответов скопировал...
[merge_posts_bbcode]Добавлено: 25.02.2015 23:12:00[/merge_posts_bbcode]

Agravaine написал(а):
Пните его хорошенько.
Вы не поверите, но после того, как вы мне кинули коды, я добавлял в код блока и регистрировал текстуры, только при регистрации я писал не "regicterIcons", а "registerBlockIcons", только тогда эклипс выделял какие-то ошибки с иконками, сейчас их не выделяет. А коды отличаются лишь в отсутствии этого слова - Block. А, ну и я добавил, где надо буквы I.
 
В принципе, вопрос можно закрыть. Для тех, кто умеет создавать TileEntity, эта тема, может, чем-то будет полезна.
 
eveready.С момента перехода с 1.6.4 на 1.7.10 изменилось название.
Измени с IconRegister на IIconRegister.Вродь так.

Получится вот так - 
public void registerIcons(IIconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon(ModInfo.MODID + ":test");
}
 
annalifegame написал(а):
eveready.С момента перехода с 1.6.4 на 1.7.10 изменилось название.
Измени с IconRegister на IIconRegister.Вродь так.

Получится вот так - 
public void registerIcons(IIconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon(ModInfo.MODID + ":test");
}
Анна, я это уже давно сделал, но это не помогло. Код проверял несколько раз на наличие несовпадений с теми, что дали мне форумчане. Свет работает, а текстуры не меняются, даже не отображаются (отображаются чёрно-фиолетовые квадратики).
 
annalifegame написал(а):
Ты проверь: Путь к текстуре;Название;png ли она;Размер правильный?
Пути правильные, формат .png (это точно, потому что так как этот блок экспериментальный, я указал пути уже на существующие и использующиеся другими блоками текстуры размером 16х16).
 
eveready1998 написал(а):
annalifegame написал(а):
Ты проверь: Путь к текстуре;Название;png ли она;Размер правильный?
Пути правильные, формат .png (это точно, потому что так как этот блок экспериментальный, я указал пути уже на существующие и использующиеся другими блоками текстуры размером 16х16).
Хм.Текстура вообще не грузит говоришь?
Путь - assets/testmod/textures/blocks/yourtexture.png ( пример )
А код я дала тебе рабочий.

Но есть же две версии кода.

В 1.6 было так - 

В конструктор можно было добавить строку - this.setTextureName(ModInfo.MODID + ":test");//Первый способ
this.setTextureName("testmod:test");//Второй способ

Так же с методом IIconRegister.
Пробуй
 
annalifegame написал(а):
eveready1998 написал(а):
annalifegame написал(а):
Ты проверь: Путь к текстуре;Название;png ли она;Размер правильный?
Пути правильные, формат .png (это точно, потому что так как этот блок экспериментальный, я указал пути уже на существующие и использующиеся другими блоками текстуры размером 16х16).
Хм.Текстура вообще не грузит говоришь?
Путь - assets/testmod/textures/blocks/yourtexture.png ( пример )
А код я дала тебе рабочий.

Но есть же две версии кода.

В 1.6 было так - 

В конструктор можно было добавить строку - this.setTextureName(ModInfo.MODID + ":test");//Первый способ
this.setTextureName("testmod:test");//Второй способ

Так же с методом IIconRegister.
Пробуй
Через .this работает только та текстура, которую я дальше и укажу, а текстуры в методе смены текстур не будут работать.
 
Назад
Сверху