Ищу помощь по переменным в блоках

Версия Minecraft
1.7.10
81
3
Здравствуйте. Ищу помощь в изучении локальных переменных. Хочу хранить в блоке некие данные. В моем случае чиловые, если я не ошибаюсь то это int. Думаю что сменить на стринг не проблема будет, но об этом позже.

Пока что нашел ток инфу по следующему уроку:
Урок на форуме по NBT
Но он для 1.8
При попыке переноса в 1.7 естественно были ошибки и прочие неполадки. Так же, я полагаю что информация указанная в уроке слишком замудренная для простой перменной. Может конечно я ошибаюсь.

Хочу понять как хранить переменные в блоке.
Выводить значение переменной предлагаю пкм по блоку(Это я уже реализовал)
Подскажите как создать в блоке переменную и увеличивать ее значение, скажем каждую секунду(Предполагаю, что скорее всего для этого нужно будет дельта тайм или похожее. Ну тогда может проще каждые 20 тиков или как проще реализовать? Еще не сталкивался с вопросом похожим)
Можете дописать, или если время жалко, то хотя бы подкинуть где изучить вопрос. Буду очень признателен за пояснения.
Спасибо.

Вот мой класс блока:
Код:
package evo.aizark.testblock;

//Импорты, нужны для работы кода.
import cpw.mods.fml.common.registry.GameRegistry;
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.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;

public class TestBlockValue extends Block {

    //тут я принимаю из менйна материал блока, его имя, текстуру.
    protected TestGenerator(Material p_i45394_1_, String name, String texture) {
        super(p_i45394_1_);
   
        this.setBlockName("TestBlock"); //Имя

        this.setLightLevel(0F);  //Излучает свет
        this.setLightOpacity(10); //Прозрачность, 10 не прозрачный
        this.setHardness(2.0F);  //Прочность
        this.setCreativeTab(Main.tabTest); //Вкладка креатива CreativeTabs.tabBlock
        this.setResistance(10.0F); //Взрывоустойчиовость. Обсидиан 10к или 20к. Не помню.
        this.setHarvestLevel("axe", 3); //Каким инструментом добывается
        this.setStepSound(soundTypeMetal); //Звук при шагах по блоку
        //this.setBlockUnbreakable(); //Неразрушаемость. Закоментированно, иначе не сломать.
        this.setBlockTextureName(Main.MODID+":test/"+texture); //Текстура блока. Каталоги будут такими "assets/another/textures/block/wood.png или (Main.MODID+":"+texture)(Main.MODID+":wood/"+texture)
   
   
        GameRegistry.registerBlock(this, name); //Регистрируем блок
   
   
    }

    // Ниже закоментирован код, Позволяет сделать блок проходимым. Я его закоментил для себя. Сейчас он мне не нужен.

/*    public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
        return null;
    } */

    //Ниже событие, когда мы пкм жмем по блоку.
    @SideOnly(Side.CLIENT)
    public boolean onBlockActivated(World world, int p2, int p3, int p4, EntityPlayer player, int p6, float p7, float p8, float p9) { //Ловим событие с клиента, активация блока пкм. Что дальше за магия идет я незнаю совсем. Буду рад если объяснят что за p8 и пр.
        Minecraft.getMinecraft().thePlayer.sendChatMessage("Тестовое сообщение"); // демонстрируем что пкм по блоку прошел.
   
        return true;
    }
}

Для удобства укажу как в мейне указал блок:
Java:
@EventHandler
    public void preLoad(FMLPreInitializationEvent event)
    {
        testblock = new TestBlockValue(Material.iron, "TestBlock", "TestBlockTexture");
    }
 
Последнее редактирование:
1,038
57
229
он здесь бывает, можешь спросить что не понятно, но в любом случае начни с основ
 
81
3
extend - указание родителя, начни с Proxy.
call - не только звонок переводится, но и вызов метода (к примеру)
Когда ты сможешь закрытыми глазами с ним работать. Поймешь чуть больше.
TileEntity может быть и пустым, просто его надо зарегистрировать, как и блок, как и рендер блока, как и любой предмет. Ты его создаешь и регистрируешь.
Пусть там не всё так хорошо, и можно даже запутаться, но это хороший материал Структура мода - Minecraft Modding
Может кто на свой линк скинет.
Я долго удивлялся что надо что то регистрировать постоянно,думал если указываешь в коде блок, то он уже работает, а оказалось нет. Ссылки прочту, спасибо за наводку
 
81
3
А ничего что это на 1.11? Или там нет разницы в пояснении?

когда что то ищу, обычно пропускаю информацию связанную с другими версиями, ибо как потом оказывается информация не имеет например применение к моей версии. Инфу все равно прочту.
 
1,038
57
229
разница еле уловима. Все пишут по старому, поэтому код очень совместимый. Проблемы если и будут, то тебе помогут разобраться.
 
917
22
332
В блоке? Глобальную переменную?
Блок - синглтон, поэтому переменная глобальная получается
Это было что-то вроде сарказма. Впрочем, уже неактуально ибо автору этого поста уже всё объяснили как надо.
 
7,099
324
1,510
Хочешь сказать что блок не может хранить в себе отдельно, важную толтко для него информацию, и в примере толтко глобал будет, распространяя переменную на все блоки7

Верно ли я тогда понимаю, что локал переменную можно реализовать только через nbt¿
Именно, блок один на всю игру. Если хочешь хранить данные для конкретных координат - нужно использовать тайл.
При этом нбт юзать не обязательно. Нбт нужно только чтобы сохранять и загружать данные с диска, чтобы они сохранялись при перезагрузке мира.
А пока мир загружен данные хранятся в переменной тайла. Для каждой координаты экземпляр тайла свой, поэтому и переменные разные
 
81
3
Выходит мне надо нарыть то как создавай тайл энтити. Связывать его с конкретным блоком, хранить в тайлэентити переменную конкретного блока. Ну а при любой отгрузке чанка или мира, созранять в нбт, а прт загрузке отгружать.

Выглядит все просто, но примеров без мусора я пока не сыскал.
Спасибо что объяснили как это в целом работает, понимаю что искать.
 
Сверху