Search in sources :

Example 16 with IMixinCustomDataHolder

use of org.spongepowered.common.interfaces.data.IMixinCustomDataHolder in project SpongeCommon by SpongePowered.

the class CustomDataNbtUtil method writeCustomData.

public static void writeCustomData(NBTTagCompound compound, DataHolder dataHolder) {
    if (dataHolder instanceof IMixinCustomDataHolder) {
        final List<DataManipulator<?, ?>> manipulators = ((IMixinCustomDataHolder) dataHolder).getCustomManipulators();
        if (!manipulators.isEmpty()) {
            final List<DataView> manipulatorViews = DataUtil.getSerializedManipulatorList(manipulators);
            final NBTTagList manipulatorTagList = new NBTTagList();
            for (DataView dataView : manipulatorViews) {
                manipulatorTagList.appendTag(NbtTranslator.getInstance().translateData(dataView));
            }
            compound.setTag(NbtDataUtil.CUSTOM_MANIPULATOR_TAG_LIST, manipulatorTagList);
        }
        final List<DataView> failedData = ((IMixinCustomDataHolder) dataHolder).getFailedData();
        if (!failedData.isEmpty()) {
            final NBTTagList failedList = new NBTTagList();
            for (DataView failedDatum : failedData) {
                failedList.appendTag(NbtTranslator.getInstance().translateData(failedDatum));
            }
            compound.setTag(NbtDataUtil.FAILED_CUSTOM_DATA, failedList);
        }
    }
}
Also used : NBTTagList(net.minecraft.nbt.NBTTagList) DataView(org.spongepowered.api.data.DataView) DataManipulator(org.spongepowered.api.data.manipulator.DataManipulator) IMixinCustomDataHolder(org.spongepowered.common.interfaces.data.IMixinCustomDataHolder)

Aggregations

IMixinCustomDataHolder (org.spongepowered.common.interfaces.data.IMixinCustomDataHolder)16 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)9 DataManipulator (org.spongepowered.api.data.manipulator.DataManipulator)6 World (org.spongepowered.api.world.World)5 DataTransactionResult (org.spongepowered.api.data.DataTransactionResult)4 TileEntity (org.spongepowered.api.block.tileentity.TileEntity)3 DataView (org.spongepowered.api.data.DataView)3 SpongeBlockSnapshotBuilder (org.spongepowered.common.block.SpongeBlockSnapshotBuilder)3 UUID (java.util.UUID)2 ITileEntityProvider (net.minecraft.block.ITileEntityProvider)2 IBlockState (net.minecraft.block.state.IBlockState)2 NBTTagList (net.minecraft.nbt.NBTTagList)2 TileEntity (net.minecraft.tileentity.TileEntity)2 BlockState (org.spongepowered.api.block.BlockState)2 DataContainer (org.spongepowered.api.data.DataContainer)2 ImmutableDataManipulator (org.spongepowered.api.data.manipulator.ImmutableDataManipulator)2 ItemStack (org.spongepowered.api.item.inventory.ItemStack)2 DataProcessor (org.spongepowered.common.data.DataProcessor)2 ValueProcessor (org.spongepowered.common.data.ValueProcessor)2 SerializedDataTransaction (org.spongepowered.common.data.persistence.SerializedDataTransaction)2