[1.6.4] WorldSavedData + AxisAlignedBB

435
1
В общем сделал класс наследующий WorldSavedData
Код:
package com.mod;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.WorldSavedData;

public class SSWWorldData extends WorldSavedData
{
    private NBTTagCompound data = new NBTTagCompound();

    public SSWWorldData(String tagName) {
        super(tagName);
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        data = compound.getCompoundTag("sswWorld");
    }

    @Override
    public void writeToNBT(NBTTagCompound compound) {
        compound.setTag("sswWorld", data);
    }

    public NBTTagCompound getData() {
        return data;
    }
}

В общем не знаю как это правильно зарегать/доставать/добавлять переменные и изменять их(ну изменять наверное в тикере буду). Помогите - разъясните как :rolleyes:

И еще интересует вот что - есть тайл, в нем AxisAlignedBB. Можно проверить что игрок в зоне AxisAlignedBB тайла, не лазая в тайл?
 
Допустим я зарегал, создал нбт таги и залил в них переменные. Непонятно с получением.
[merge_posts_bbcode]Добавлено: 01.07.2015 22:08:54[/merge_posts_bbcode]

Делаю так - тикер.
Код:
package com.mrcreppo.artefact.src;

import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.Random;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.world.World;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.world.WorldEvent;

import com.ssw.Guns.FGMUtil;
import com.ssw.Guns.event.SSWWorldData;

import cpw.mods.fml.common.ITickHandler;
import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.network.PacketDispatcher;

public class TickHandlerWorldData implements ITickHandler {

    public static SSWWorldData worldData = null;

    public String getTagName() {
        return "sswWorldData";
    }

    @Override
    public void tickStart(EnumSet<TickType> type, Object... tickData) {
        if(type.equals(EnumSet.of(TickType.WORLDLOAD))){
            World world = null;
            for(int i = 0; i < tickData.length; i++)
                if(tickData[i] instanceof World)
                    world = (World)tickData[i];
            if(world == null){
                return;
            }
            worldData = SSWWorldData.forWorld(world);
            worldData.markDirty();
        }
        System.out.println(worldData);

    }

    @Override
    public void tickEnd(EnumSet<TickType> type, Object... tickData) {

    }

    @Override
    public EnumSet<TickType> ticks() {
        return EnumSet.of(TickType.WORLDLOAD);
    }

    @Override
    public String getLabel() {
        return getTagName();
    }
}

[merge_posts_bbcode]Добавлено: 01.07.2015 22:14:10[/merge_posts_bbcode]

Так разобрался - Присвоение должно быть в конструкторе чтобы нул не схватить.
 
Назад
Сверху