Пропадает значение getTileData()

Версия Minecraft
1.12.2
586
32
136
Допустим есть у меня солн. генератор, он собрал 10000 энергии, записана она в NBT, при перезаходе, энергия пропадает, равно 0.
 
Решение
Добавь к себе в тайл..
После юзай tile.DE - получишь DE, юзай tile.DE_MAX - получишь DE_MAX.
Java:
public float DE, DE_MAX;

@Override
public void readFromNBT(NBTTagCompound tag) {
super.readFromNBT(tag);
DE = tag.getFloat("modid_de");
DE_MAX = tag.getFloat("modid_de_max");
}

@Override
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
super.writeToNBT(tag);
tag.setFloat("modid_de", DE);
tag.setFloat("modid_de_max", DE_MAX);
return compound;
}
586
32
136
Ребят, не, все-же пропадает значение в тайле.
Код блока
Java:
package zarak.DarkKnowledge.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import zarak.DarkKnowledge.Tabs;
import zarak.DarkKnowledge.api.DkCrafting;
import zarak.DarkKnowledge.tile.TileAltar0;
import zarak.DarkKnowledge.init.ModItem;

import javax.annotation.Nullable;

public class BlockDarkAltar0 extends Block implements ITileEntityProvider {
    private final String name = "dark_altar_lvl0";
    private static final AxisAlignedBB AABB = new AxisAlignedBB(0, 0, 0, 1, 0.3D, 1);
    public BlockDarkAltar0() {
        super(Material.ROCK);
        this.setRegistryName(name);
        this.setUnlocalizedName(name);
        this.setCreativeTab(Tabs.DK_TAB);
        this.setHardness(50);
        this.setHarvestLevel("pickaxe", 4);
    }

    @Override
    public boolean isOpaqueCube(IBlockState state) {
        return false;
    }

    @Override
    public boolean isFullCube(IBlockState state) {
        return false;
    }

    @Override
    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
        return AABB;
    }

    @Override
    public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) {
            if(!(entityIn instanceof EntityItem))return;
            EntityItem entityItem = (EntityItem)entityIn;
            DkCrafting.reincarnation(worldIn,entityItem,pos, new ItemStack(ModItem.DIAMOND_GOLD,1),new ItemStack(ModItem.DARK_DIAMOND_GOLD,1),3200);
            DkCrafting.reincarnation(worldIn,entityItem,pos,  new ItemStack(ModItem.DARK_DUST,2),new ItemStack(Items.DIAMOND,3),1500);
    }

    @Nullable
    @Override
    public TileEntity createNewTileEntity(World worldIn, int meta) {
        return new TileAltar0();
    }

    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {

        TileAltar0 tileAltar0 = (TileAltar0) worldIn.getTileEntity(pos);
        System.out.println(tileAltar0.energy);
        return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ);
    }
}
Код тайла
Java:
package zarak.DarkKnowledge.tile;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
public class TileAltar0 extends TileEntity implements ITickable{
    public  float energy;
    public final float maxDE = 15000;
    public TileAltar0(){

    }

    @Override
    public NBTTagCompound writeToNBT(NBTTagCompound compound) {
        super.writeToNBT(compound);
        compound.setFloat("DE",energy);
        return compound;
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        super.readFromNBT(compound);
        energy = compound.getFloat("DE");
    }

    @Override
    public void update() {
        if(maxDE < energy) {
           energy = maxDE;
       }
       if(energy<0){
            energy = 0;
        }
    }
}
 
Последнее редактирование модератором:
3,005
192
592
Замени:
setRegister(ALTAR, "BLOCK_ALTAR");
на
setRegister(TileAltar0.class "BLOCK_ALTAR");
Убери ALTAR и не юзай вообще такое.
 
Последнее редактирование модератором:
Сверху