use of net.minecraft.nbt.LongArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperPropertyTest method testListEmptyPlusLongArray.
@Test
@DisplayName("Test serializing and deserializing lists of lists that would create the inner ones as an empty compound plus a long array")
void testListEmptyPlusLongArray() {
qt().forAll(lists().of(onlyLongs()).ofSizeBetween(1, 15)).check(longs -> {
ListNBT nbt = fromArray(new ListNBT(), fromLongs(longs));
ListNBT expected = fromArray(new LongArrayNBT(new long[0]), getExpected(longs));
return expected.equals(CCArgumentWrapperTestHelper.wrapAndSanitize(nbt, null, false));
});
}
use of net.minecraft.nbt.LongArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperPropertyTest method checkSameLongArray.
// ===================
// Long Arrays
// ===================
private boolean checkSameLongArray(List<Long> longs, @Nullable Class<? extends INBT> targetClass) {
LongArrayNBT nbt = new LongArrayNBT(longs);
Object sanitized = CCArgumentWrapperTestHelper.wrapAndSanitize(nbt, targetClass, false);
if (longs.isEmpty()) {
if (targetClass == INBT.class) {
return sanitized instanceof CompoundNBT && ((CompoundNBT) sanitized).isEmpty();
}
// CollectionNBT
return sanitized instanceof ListNBT && ((ListNBT) sanitized).isEmpty();
} else if (longs.stream().allMatch(value -> value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE)) {
ByteArrayNBT expected = new ByteArrayNBT(longs.stream().map(Long::byteValue).collect(Collectors.toList()));
return expected.equals(sanitized);
} else if (longs.stream().allMatch(value -> value >= Short.MIN_VALUE && value <= Short.MAX_VALUE)) {
ListNBT expected = longs.stream().map(i -> ShortNBT.valueOf(i.shortValue())).collect(Collectors.toCollection(ListNBT::new));
return expected.equals(sanitized);
} else if (longs.stream().allMatch(value -> value >= Integer.MIN_VALUE && value <= Integer.MAX_VALUE)) {
IntArrayNBT expected = new IntArrayNBT(longs.stream().map(Long::intValue).collect(Collectors.toList()));
return expected.equals(sanitized);
}
return getExpected(longs).equals(sanitized);
}
use of net.minecraft.nbt.LongArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperPropertyTest method testListByteArrayToLongArray.
@Test
@DisplayName("Test serializing and deserializing lists of lists that would create the inner ones as a byte array plus long array")
void testListByteArrayToLongArray() {
qt().forAll(lists().of(allBytes()).ofSizeBetween(1, 15), lists().of(onlyLongs()).ofSizeBetween(1, 15)).check((bytes, longs) -> {
ListNBT nbt = fromArray(fromBytes(bytes), fromLongs(longs));
ListNBT expected = fromArray(new LongArrayNBT(bytes.stream().mapToLong(Number::longValue).toArray()), getExpected(longs));
return expected.equals(CCArgumentWrapperTestHelper.wrapAndSanitize(nbt, null, false));
});
}
use of net.minecraft.nbt.LongArrayNBT in project Mekanism by mekanism.
the class TileEntityItemStackGasToItemStackFactory method save.
@Nonnull
@Override
public CompoundNBT save(@Nonnull CompoundNBT nbtTags) {
super.save(nbtTags);
nbtTags.put(NBTConstants.USED_SO_FAR, new LongArrayNBT(Arrays.copyOf(usedSoFar, usedSoFar.length)));
return nbtTags;
}
Aggregations