java类net.minecraft.nbt.NBTTagLong的实例源码

ChopTreeActionWorker.java 文件源码 项目:MeeCreeps 阅读 21 收藏 0 点赞 0 评论 0
@Override
public void readFromNBT(NBTTagCompound tag) {
    NBTTagList list = tag.getTagList("blocks", Constants.NBT.TAG_LONG);
    blocks.clear();
    for (int i = 0; i < list.tagCount(); i++) {
        blocks.add(BlockPos.fromLong(((NBTTagLong) list.get(i)).getLong()));
    }
    list = tag.getTagList("leaves", Constants.NBT.TAG_COMPOUND);
    leavesToTick.clear();
    for (int i = 0; i < list.tagCount(); i++) {
        NBTTagCompound tc = list.getCompoundTagAt(i);
        BlockPos pos = BlockPos.fromLong(tc.getLong("p"));
        int counter = tc.getInteger("c");
        leavesToTick.put(pos, counter);
    }
}
CropStats.java 文件源码 项目:ExPetrum 阅读 18 收藏 0 点赞 0 评论 0
@Override
public void deserializeNBT(NBTTagCompound nbt)
{
    this.growthRanges[0].deserializeNBT(nbt.getCompoundTag("tGrowthRangeMinimal"));
    this.growthRanges[1].deserializeNBT(nbt.getCompoundTag("tGrowthRangeOptimal"));
    this.growthRanges[2].deserializeNBT(nbt.getCompoundTag("tGrowthRangePerfect"));
    this.humidityGrowthRange = Pair.of(nbt.getCompoundTag("hGrowthRange").getFloat("min"), nbt.getCompoundTag("hGrowthRange").getFloat("max"));
    this.generation = nbt.getInteger("generation");
    this.wild = nbt.getBoolean("wild");
    this.type = EnumCrop.values()[nbt.getByte("type")];
    this.plantedAt = new Calendar();
    if (nbt.hasKey("plantedAt"))
    {
        this.plantedAt.deserializeNBT((NBTTagLong) nbt.getTag("plantedAt"));
    }

    this.health = nbt.getFloat("health");
    this.growthRate = nbt.getFloat("growthRate");
    this.waterConsumption = nbt.getFloat("waterConsumption");
    this.growth = nbt.getFloat("growth");
    this.nutrientConsumption.clear();
    nbt.getTagList("nutrientConsumption", NBT.TAG_COMPOUND).forEach(tag -> this.nutrientConsumption.put(EnumPlantNutrient.values()[((NBTTagCompound)tag).getByte("nutrient")], ((NBTTagCompound)tag).getFloat("amount")));
}
NbtConverterTest.java 文件源码 项目:wizards-of-lua 阅读 16 收藏 0 点赞 0 评论 0
@Test
public void test_merge__Can_create_new_Tag() {
  // Given:
  NBTTagCompound nbt = new NBTTagCompound();

  Table data = new DefaultTable();
  String key = "my_key";
  long value = 53;
  data.rawset(key, value);

  // When:
  NBTTagCompound actual = underTest.merge(nbt, data);

  // Then:
  assertThat(actual.getKeySet()).containsOnly(key);
  assertThat(actual.getTag(key)).isEqualTo(new NBTTagLong(value));
}
NbtConverterTest.java 文件源码 项目:wizards-of-lua 阅读 15 收藏 0 点赞 0 评论 0
@Test
public void test_toNbtCompound__With_numeric_Value() {
  // Given:
  Table data = new DefaultTable();
  String key = "my_key";
  long value = 42;
  data.rawset(key, value);
  String keyString = String.valueOf(key);

  // When:
  NBTTagCompound actual = underTest.toNbtCompound(data);

  // Then:
  assertThat(actual.getKeySet()).containsOnly(keyString);
  assertThat(actual.getTag(keyString)).isEqualTo(new NBTTagLong(value));
}
NbtConverterTest.java 文件源码 项目:wizards-of-lua 阅读 16 收藏 0 点赞 0 评论 0
@Test
public void test_toNbtCompound__With_Compound_Value() {
  // Given:
  Table data = new DefaultTable();
  String key = "my_key";
  Table value = new DefaultTable();
  data.rawset(key, value);
  String key2 = "my_key2";
  long value2 = 42;
  value.rawset(key2, value2);

  // When:
  NBTTagCompound actual = underTest.toNbtCompound(data);

  // Then:
  assertThat(actual.getKeySet()).containsOnly(key);
  assertThat(actual.getTag(key)).isExactlyInstanceOf(NBTTagCompound.class);
  NBTTagCompound actualValue = actual.getCompoundTag(key);
  assertThat(actualValue.getKeySet()).containsOnly(key2);
  assertThat(actualValue.getTag(key2)).isEqualTo(new NBTTagLong(value2));
}
TilePump.java 文件源码 项目:rangedpumps 阅读 21 收藏 0 点赞 0 评论 0
@Override
public void readFromNBT(NBTTagCompound tag) {
    super.readFromNBT(tag);

    if (tag.hasKey("Energy")) {
        energy.receiveEnergy(tag.getInteger("Energy"), false);
    }

    if (tag.hasKey("CurrentPos")) {
        currentPos = BlockPos.fromLong(tag.getLong("CurrentPos"));
    }

    if (tag.hasKey("Range")) {
        range = tag.getInteger("Range");
    }

    if (tag.hasKey("Surfaces")) {
        NBTTagList surfaces = tag.getTagList("Surfaces", Constants.NBT.TAG_LONG);

        for (NBTBase surface : surfaces) {
            this.surfaces.add(BlockPos.fromLong(((NBTTagLong) surface).getLong()));
        }
    }

    tank.readFromNBT(tag);
}
ItemTeletoryPortalLinker.java 文件源码 项目:TeleToro 阅读 19 收藏 0 点赞 0 评论 0
private void linkPortalWithOrigin(EntityPlayer player, World world, ItemStack stack, ControlBlockLocation thisPortal,
        PortalLinkerOrigin remoteInfo) {

    ControlBlockLocation remotePortal = findControllerBlock(world, remoteInfo.pos, STANDARD_SIZER);

    stack.setTagInfo("origin", new NBTTagLong(0));
    stack.setTagInfo("dimid", new NBTTagInt(0));

    if (remotePortal == null) {
        return;
    }

    linkPortalTo(world, thisPortal, remotePortal, remoteInfo.dimId, remoteInfo.side);
    linkPortalTo(world, remotePortal, thisPortal, player.dimension, getSide(player, thisPortal));

    playSound(player);
    stack.damageItem(1, player);
}
NBTHelper.java 文件源码 项目:TaleCraft 阅读 24 收藏 0 点赞 0 评论 0
private static void asJson(NBTBase tag, StringBuilder builder) {
    switch(tag.getId()) {
    case NBT.TAG_BYTE: builder.append(((NBTTagByte)tag).getByte()).append('b'); break;
    case NBT.TAG_SHORT: builder.append(((NBTTagShort)tag).getByte()).append('b'); break;
    case NBT.TAG_INT: builder.append(((NBTTagInt)tag).getInt()); break;
    case NBT.TAG_LONG: builder.append(((NBTTagLong)tag).getByte()).append('l'); break;
    case NBT.TAG_FLOAT: builder.append(((NBTTagFloat)tag).getFloat()).append('f'); break;
    case NBT.TAG_DOUBLE: builder.append(((NBTTagDouble)tag).getDouble()).append('d'); break;
    case NBT.TAG_STRING: builder.append('"').append(((NBTTagString)tag).getString()).append('"'); break;
    case NBT.TAG_BYTE_ARRAY: builder.append(Arrays.toString(((NBTTagByteArray)tag).getByteArray())); break;
    case NBT.TAG_INT_ARRAY: builder.append(Arrays.toString(((NBTTagIntArray)tag).getIntArray())); break;
    case NBT.TAG_COMPOUND: asJson((NBTTagCompound) tag, builder); break;
    case NBT.TAG_LIST: asJson((NBTTagList) tag, builder); break;
    }

}
NbtUtils.java 文件源码 项目:copycore 阅读 24 收藏 0 点赞 0 评论 0
/** Creates and returns a primitive NBT tag from a value.
 *  If the value already is an NBT tag, it is returned instead. */
public static NBTBase createTag(Object value) {
    if (value == null)
        throw new IllegalArgumentException("value is null");
    if (value instanceof NBTBase) return (NBTBase)value;
    if (value instanceof Byte)    return new NBTTagByte((Byte)value);
    if (value instanceof Short)   return new NBTTagShort((Short)value);
    if (value instanceof Integer) return new NBTTagInt((Integer)value);
    if (value instanceof Long)    return new NBTTagLong((Long)value);
    if (value instanceof Float)   return new NBTTagFloat((Float)value);
    if (value instanceof Double)  return new NBTTagDouble((Double)value);
    if (value instanceof String)  return new NBTTagString((String)value);
    if (value instanceof byte[])  return new NBTTagByteArray((byte[])value);
    if (value instanceof int[])   return new NBTTagIntArray((int[])value);
    throw new IllegalArgumentException("Can't create an NBT tag of value: " + value);
}
ConvertNBTTagCompound.java 文件源码 项目:CraftingManager 阅读 17 收藏 0 点赞 0 评论 0
public static Object getObject(NBTBase base)
{
    if(base instanceof NBTTagByte)
        return ((NBTTagByte)base).func_150290_f();
    if(base instanceof NBTTagShort)
        return ((NBTTagShort)base).func_150289_e();
    if(base instanceof NBTTagInt)
        return ((NBTTagInt)base).func_150287_d();
    if(base instanceof NBTTagLong)
        return ((NBTTagLong)base).func_150291_c();
    if(base instanceof NBTTagFloat)
        return ((NBTTagFloat)base).func_150288_h();
    if(base instanceof NBTTagDouble)
        return ((NBTTagDouble)base).func_150286_g();
    if(base instanceof NBTTagByteArray)
        return ((NBTTagByteArray)base).func_150292_c();
    if(base instanceof NBTTagString)
        return ((NBTTagString)base).func_150285_a_();
    if(base instanceof NBTTagList)
        return base;
    if(base instanceof NBTTagCompound)
        return ((NBTTagCompound)base);
    if(base instanceof NBTTagIntArray)
        return ((NBTTagIntArray)base).func_150302_c();
    return null;
}
ModMultiblockTileEntity.java 文件源码 项目:MobTotems 阅读 15 收藏 0 点赞 0 评论 0
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) {
    tagCompound = super.writeToNBT(tagCompound);
    tagCompound.setBoolean(IS_MASTER, isMaster);

    NBTTagList slaveList = new NBTTagList();
    for (BlockPos slavePos : slaves) {
        slaveList.appendTag(new NBTTagLong(slavePos.toLong()));
    }
    tagCompound.setTag(SLAVES, slaveList);

    if (masterPos != null) {
        tagCompound.setLong(MASTER_POS, masterPos.toLong());
    }
    return tagCompound;
}
ModMultiblockTileEntity.java 文件源码 项目:MobTotems 阅读 14 收藏 0 点赞 0 评论 0
@Override
public void readFromNBT(NBTTagCompound tagCompound) {
    super.readFromNBT(tagCompound);
    isMaster = tagCompound.getBoolean(IS_MASTER);

    NBTTagList tagList = tagCompound.getTagList(SLAVES, Constants.NBT.TAG_LONG);
    for (int i = 0; i < tagList.tagCount(); i++) {
        NBTBase tag = tagList.get(i);
        if (tag instanceof NBTTagLong) {
            BlockPos blockPos = BlockPos.fromLong(((NBTTagLong) tag).getLong());
            slaves.add(blockPos);
        }
    }

    masterPos = BlockPos.fromLong(tagCompound.getLong(MASTER_POS));
}
GuiEditNBT.java 文件源码 项目:NBTEdit 阅读 28 收藏 0 点赞 0 评论 0
private static void setValidValue(Node<NamedNBT> node, String value){
    NamedNBT named = node.getObject();
    NBTBase base = named.getNBT();

    if (base instanceof NBTTagByte)
        named.setNBT(new NBTTagByte(ParseHelper.parseByte(value)));
    if (base instanceof NBTTagShort)
        named.setNBT(new NBTTagShort(ParseHelper.parseShort(value)));
    if (base instanceof NBTTagInt)
        named.setNBT(new NBTTagInt(ParseHelper.parseInt(value)));
    if (base instanceof NBTTagLong)
        named.setNBT(new NBTTagLong(ParseHelper.parseLong(value)));
    if(base instanceof NBTTagFloat)
        named.setNBT(new NBTTagFloat(ParseHelper.parseFloat(value)));
    if(base instanceof NBTTagDouble)
        named.setNBT(new NBTTagDouble(ParseHelper.parseDouble(value)));
    if(base instanceof NBTTagByteArray)
        named.setNBT(new NBTTagByteArray(ParseHelper.parseByteArray(value)));
    if(base instanceof NBTTagIntArray)
        named.setNBT(new NBTTagIntArray(ParseHelper.parseIntArray(value)));
    if (base instanceof NBTTagString)
        named.setNBT(new NBTTagString(value));
}
CropStats.java 文件源码 项目:ExPetrum 阅读 19 收藏 0 点赞 0 评论 0
public void createFromItemNBT(NBTTagCompound tag)
{
    this.uprootedAt = Optional.of(new Calendar());
    if (tag.hasKey("uprootedAt", NBT.TAG_LONG))
    {
        this.uprootedAt.get().deserializeNBT((NBTTagLong) tag.getTag("uprootedAt"));
    }

    this.deserializeNBT(tag);
}
ExPFarmland.java 文件源码 项目:ExPetrum 阅读 15 收藏 0 点赞 0 评论 0
@Override
public void deserializeNBT(NBTTagCompound nbt)
{
    this.moistureLevel = nbt.getFloat("moisture");
    for (NBTBase tag : nbt.getTagList("nutrientData", NBT.TAG_COMPOUND))
    {
        NBTTagCompound tagCompound = (NBTTagCompound) tag;
        this.nutrientData.put(EnumPlantNutrient.values()[tagCompound.getByte("key")], tagCompound.getFloat("value"));
    }

    if (nbt.hasKey("calendar"))
    {
        this.timeKeeper.deserializeNBT((NBTTagLong) nbt.getTag("calendar"));
    }
}
ExPCrop.java 文件源码 项目:ExPetrum 阅读 17 收藏 0 点赞 0 评论 0
@Override
public void deserializeNBT(NBTTagCompound nbt)
{
    this.stats = new CropStats();
    this.stats.deserializeNBT(nbt.getCompoundTag("stats"));
    this.isSick = nbt.getBoolean("eaten");
    this.timeKeeper.deserializeNBT((NBTTagLong) nbt.getTag("calendar"));
}
ItemFood.java 文件源码 项目:ExPetrum 阅读 21 收藏 0 点赞 0 评论 0
public Calendar getLastTickTime(ItemStack is)
{
    Calendar ret = new Calendar();
    if (is.getOrCreateSubCompound("exp.foodData").hasKey("lastTick"))
    {
        ret.deserializeNBT((NBTTagLong) is.getOrCreateSubCompound("exp.foodData").getTag("lastTick"));
    }

    return ret;
}
PackInfo.java 文件源码 项目:ExPetrum 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void deserializeNBT(NBTTagCompound nbt)
{
    this.packID = new UUID(nbt.getLong("idMost"), nbt.getLong("idLeast"));
    this.leaderUUID = new UUID(nbt.getLong("leaderMost"), nbt.getLong("leaderLeast"));
    this.entitiesSet.clear();
    Iterator<NBTBase> iter = nbt.getTagList("entities", Constants.NBT.TAG_LONG).iterator();
    while (iter.hasNext())
    {
        this.entitiesSet.add(new UUID(((NBTTagLong)iter.next()).getLong(), ((NBTTagLong)iter.next()).getLong()));
    }

    this.playerReps.clear();
    StreamSupport.stream(nbt.getTagList("playerReps", Constants.NBT.TAG_COMPOUND).spliterator(), false).map(n -> (NBTTagCompound)n).forEach(tag -> this.playerReps.put(new UUID(tag.getLong("keyMost"), tag.getLong("keyLeast")), tag.getFloat("value")));
}
WidgetTextData.java 文件源码 项目:ExtraUtilities 阅读 23 收藏 0 点赞 0 评论 0
public static Object getNBTBaseData(final NBTBase nbt) {
    if (nbt == null) {
        return null;
    }
    switch (nbt.getId()) {
        case 1: {
            return ((NBTTagByte)nbt).func_150290_f();
        }
        case 2: {
            return ((NBTTagShort)nbt).func_150289_e();
        }
        case 3: {
            return ((NBTTagInt)nbt).func_150287_d();
        }
        case 4: {
            return ((NBTTagLong)nbt).func_150291_c();
        }
        case 5: {
            return ((NBTTagFloat)nbt).func_150288_h();
        }
        case 6: {
            return ((NBTTagDouble)nbt).func_150286_g();
        }
        case 8: {
            return ((NBTTagString)nbt).func_150285_a_();
        }
        case 10: {
            return nbt;
        }
        default: {
            return null;
        }
    }
}
WidgetTextData.java 文件源码 项目:ExtraUtilities 阅读 19 收藏 0 点赞 0 评论 0
public static NBTBase getNBTBase(final Object o) {
    if (o instanceof Integer) {
        return (NBTBase)new NBTTagInt((Integer)o);
    }
    if (o instanceof Short) {
        return (NBTBase)new NBTTagShort((Short)o);
    }
    if (o instanceof Long) {
        return (NBTBase)new NBTTagLong((Long)o);
    }
    if (o instanceof String) {
        return (NBTBase)new NBTTagString((String)o);
    }
    if (o instanceof Double) {
        return (NBTBase)new NBTTagDouble((Double)o);
    }
    if (o instanceof Float) {
        return (NBTBase)new NBTTagFloat((Float)o);
    }
    if (o instanceof NBTTagCompound) {
        return (NBTBase)o;
    }
    if (o instanceof Byte) {
        return (NBTBase)new NBTTagByte((Byte)o);
    }
    LogHelper.debug("Can't find type for " + o, new Object[0]);
    throw null;
}
RotHandler.java 文件源码 项目:BetterWithAddons 阅读 20 收藏 0 点赞 0 评论 0
@SubscribeEvent
public void rotAttachCapability(AttachCapabilitiesEvent<ItemStack> event)
{
    ItemStack stack = event.getObject();

    if(isRottingItem(stack) && MINECRAFT_DATE != -1) //All items instead?
    {
        NBTTagCompound compound = stack.getTagCompound();
        if(compound == null || !compound.hasKey(CREATION_TIME_TAG))
            stack.setTagInfo(CREATION_TIME_TAG,new NBTTagLong(MINECRAFT_DATE));
        //event.addCapability(ROT,new Rot());
    }
}
NbtConverter.java 文件源码 项目:wizards-of-lua 阅读 28 收藏 0 点赞 0 评论 0
private Map<Class<? extends NBTBase>, NbtMerger<? extends NBTBase>> getMergers() {
  if (mergers == null) {
    mergers = new HashMap<>();
    registerMerger(NBTTagByte.class, new NbtByteMerger(this));
    registerMerger(NBTTagCompound.class, new NbtCompoundMerger(this));
    registerMerger(NBTTagDouble.class, new NbtDoubleMerger(this));
    registerMerger(NBTTagFloat.class, new NbtFloatMerger(this));
    registerMerger(NBTTagInt.class, new NbtIntMerger(this));
    registerMerger(NBTTagList.class, new NbtListMerger(this));
    registerMerger(NBTTagLong.class, new NbtLongMerger(this));
    registerMerger(NBTTagShort.class, new NbtShortMerger(this));
    registerMerger(NBTTagString.class, new NbtStringMerger(this));
  }
  return mergers;
}
NbtLongMerger.java 文件源码 项目:wizards-of-lua 阅读 16 收藏 0 点赞 0 评论 0
@Override
public NBTTagLong merge(NBTTagLong nbt, Object data, String key, String path) {
  if (data instanceof Number) {
    return NbtConverter.toNbt(((Number) data).longValue());
  }
  throw converter.conversionException(path, data, "number");
}
ItemTeletoryPortalLinker.java 文件源码 项目:TeleToro 阅读 21 收藏 0 点赞 0 评论 0
private void setOriginPortal(EntityPlayer player, ItemStack stack, ControlBlockLocation thisPortal) {
    stack.setTagInfo("origin", new NBTTagLong(thisPortal.pos.toLong()));
    stack.setTagInfo("dimid", new NBTTagInt(player.dimension));
    int side = getSide(player, thisPortal);
    stack.setTagInfo("side", new NBTTagInt(side));
    playSound(player);
}
SetManager.java 文件源码 项目:CraftingHarmonics 阅读 16 收藏 0 点赞 0 评论 0
/**
 * Converts the map to a NBT tag compound
 * @param map    The map to convert
 * @return       The output NBT
 */
private static NBTTagCompound convertMapToCompoundNbt(Map<String, Long> map) {
    NBTTagCompound output = new NBTTagCompound();
    for(Map.Entry<String, Long> entry : map.entrySet()) {
        output.setTag(entry.getKey(), new NBTTagLong(entry.getValue()));
    }
    return output;
}
NBTSettingsManager.java 文件源码 项目:morecommands 阅读 25 收藏 0 点赞 0 评论 0
/**
 * Converts a {@link JsonElement} into an {@link NBTBase}
 * 
 * @param element the {@link JsonElement} to convert
 * @return the converted {@link NBTBase}
 */
public static NBTBase toNBTElement(JsonElement element) {
    if (element.isJsonArray()) {
        NBTTagList list = new NBTTagList();
        for (JsonElement elem : element.getAsJsonArray()) list.appendTag(toNBTElement(elem));
        return list;
    }
    else if (element.isJsonObject()) {
        NBTTagCompound compound = new NBTTagCompound();
        for (Map.Entry<String, JsonElement> entry : element.getAsJsonObject().entrySet()) compound.setTag(entry.getKey(), toNBTElement(entry.getValue()));
        return compound;
    }
    else if (element.isJsonPrimitive() && element.getAsJsonPrimitive().isNumber()) {
        Number num = element.getAsJsonPrimitive().getAsNumber();

        if (num instanceof Byte) return new NBTTagByte(num.byteValue());
        else if (num instanceof Short) return new NBTTagShort(num.shortValue());
        else if (num instanceof Integer) return new NBTTagInt(num.intValue());
        else if (num instanceof Long) return new NBTTagLong(num.longValue());
        else if (num instanceof Float) return new NBTTagFloat(num.floatValue());
        else if (num instanceof Double) return new NBTTagDouble(num.doubleValue());
        else return new NBTTagDouble(num.doubleValue());
    }
    else if (element.isJsonPrimitive() && element.getAsJsonPrimitive().isString()) 
        return new NBTTagString(element.getAsJsonPrimitive().getAsString());
    else return null;
}
DataConverter.java 文件源码 项目:NOVA-Core 阅读 23 收藏 0 点赞 0 评论 0
/**
 * Reads an unknown object withPriority a known name from NBT
 * @param tag - tag to read the value from
 * @param key - name of the value
 * @return object or suggestionValue if nothing is found
 */
public Object load(NBTTagCompound tag, String key) {
    if (tag != null && key != null) {
        NBTBase saveTag = tag.getTag(key);

        if (saveTag instanceof NBTTagFloat) {
            return tag.getFloat(key);
        } else if (saveTag instanceof NBTTagDouble) {
            return tag.getDouble(key);
        } else if (saveTag instanceof NBTTagInt) {
            return tag.getInteger(key);
        } else if (saveTag instanceof NBTTagString) {
            if (tag.getBoolean(key + "::nova.isBigInteger")) {
                return new BigInteger(tag.getString(key));
            } else if (tag.getBoolean(key + "::nova.isBigDecimal")) {
                return new BigDecimal(tag.getString(key));
            } else {
                return tag.getString(key);
            }
        } else if (saveTag instanceof NBTTagShort) {
            return tag.getShort(key);
        } else if (saveTag instanceof NBTTagByte) {
            if (tag.getBoolean(key + "::nova.isBoolean")) {
                return tag.getBoolean(key);
            } else {
                return tag.getByte(key);
            }
        } else if (saveTag instanceof NBTTagLong) {
            return tag.getLong(key);
        } else if (saveTag instanceof NBTTagByteArray) {
            return tag.getByteArray(key);
        } else if (saveTag instanceof NBTTagIntArray) {
            return tag.getIntArray(key);
        } else if (saveTag instanceof NBTTagCompound) {
            NBTTagCompound innerTag = tag.getCompoundTag(key);
            return toNova(innerTag);
        }
    }
    return null;
}
DataConverter.java 文件源码 项目:NOVA-Core 阅读 20 收藏 0 点赞 0 评论 0
/**
 * Reads an unknown object withPriority a known name from NBT
 * @param tag - tag to read the value from
 * @param key - name of the value
 * @return object or suggestionValue if nothing is found
 */
public Object load(NBTTagCompound tag, String key) {
    if (tag != null && key != null) {
        NBTBase saveTag = tag.getTag(key);

        if (saveTag instanceof NBTTagFloat) {
            return tag.getFloat(key);
        } else if (saveTag instanceof NBTTagDouble) {
            return tag.getDouble(key);
        } else if (saveTag instanceof NBTTagInt) {
            return tag.getInteger(key);
        } else if (saveTag instanceof NBTTagString) {
            if (tag.getBoolean(key + "::nova.isBigInteger")) {
                return new BigInteger(tag.getString(key));
            } else if (tag.getBoolean(key + "::nova.isBigDecimal")) {
                return new BigDecimal(tag.getString(key));
            } else {
                return tag.getString(key);
            }
        } else if (saveTag instanceof NBTTagShort) {
            return tag.getShort(key);
        } else if (saveTag instanceof NBTTagByte) {
            if (tag.getBoolean(key + "::nova.isBoolean")) {
                return tag.getBoolean(key);
            } else {
                return tag.getByte(key);
            }
        } else if (saveTag instanceof NBTTagLong) {
            return tag.getLong(key);
        } else if (saveTag instanceof NBTTagByteArray) {
            return tag.getByteArray(key);
        } else if (saveTag instanceof NBTTagIntArray) {
            return tag.getIntArray(key);
        } else if (saveTag instanceof NBTTagCompound) {
            NBTTagCompound innerTag = tag.getCompoundTag(key);
            return toNova(innerTag);
        }
    }
    return null;
}
NbtUtils.java 文件源码 项目:copycore 阅读 20 收藏 0 点赞 0 评论 0
/** Returns the primitive value of a tag, casted to the return type. */
public static <T> T getTagValue(NBTBase tag) {
    if (tag == null)
        throw new IllegalArgumentException("tag is null");
    if (tag instanceof NBTTagByte)      return (T)(Object)((NBTTagByte)tag).func_150290_f();
    if (tag instanceof NBTTagShort)     return (T)(Object)((NBTTagShort)tag).func_150289_e();
    if (tag instanceof NBTTagInt)       return (T)(Object)((NBTTagInt)tag).func_150287_d();
    if (tag instanceof NBTTagLong)      return (T)(Object)((NBTTagLong)tag).func_150291_c();
    if (tag instanceof NBTTagFloat)     return (T)(Object)((NBTTagFloat)tag).func_150288_h();
    if (tag instanceof NBTTagDouble)    return (T)(Object)((NBTTagDouble)tag).func_150286_g();
    if (tag instanceof NBTTagString)    return (T)((NBTTagString)tag).func_150285_a_();
    if (tag instanceof NBTTagByteArray) return (T)((NBTTagByteArray)tag).func_150292_c();
    if (tag instanceof NBTTagIntArray)  return (T)((NBTTagIntArray)tag).func_150302_c();
    throw new IllegalArgumentException(NBTBase.NBTTypes[tag.getId()] + " isn't a primitive NBT tag");
}
ModMultiblockInventoryTileEntity.java 文件源码 项目:MobTotems 阅读 15 收藏 0 点赞 0 评论 0
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) {
    tagCompound = super.writeToNBT(tagCompound);
    tagCompound.setBoolean(IS_MASTER, isMaster);

    NBTTagList slaveList = new NBTTagList();
    for (BlockPos slavePos : slaves) {
        slaveList.appendTag(new NBTTagLong(slavePos.toLong()));
    }
    tagCompound.setTag(SLAVES, slaveList);
    return tagCompound;
}


问题


面经


文章

微信
公众号

扫码关注公众号