Search in sources :

Example 21 with DataManipulator

use of org.spongepowered.api.data.manipulator.DataManipulator in project LanternServer by LanternPowered.

the class IDataHolder method copyFromNoEvents.

default DataTransactionResult copyFromNoEvents(DataHolder that, MergeFunction function) {
    final Collection<DataManipulator<?, ?>> containers = that.getContainers();
    final DataTransactionResult.Builder builder = DataTransactionResult.builder();
    boolean success = false;
    for (DataManipulator<?, ?> thatContainer : containers) {
        final DataManipulator<?, ?> thisContainer = get(thatContainer.getClass()).orElse(null);
        final DataManipulator<?, ?> merged = function.merge(thisContainer, thatContainer);
        final DataTransactionResult result = offerNoEvents(merged, MergeFunction.IGNORE_ALL);
        builder.absorbResult(result);
        if (!result.getSuccessfulData().isEmpty()) {
            success = true;
        }
    }
    return builder.result(success ? DataTransactionResult.Type.SUCCESS : DataTransactionResult.Type.FAILURE).build();
}
Also used : ImmutableDataManipulator(org.spongepowered.api.data.manipulator.ImmutableDataManipulator) DataManipulator(org.spongepowered.api.data.manipulator.DataManipulator) DataTransactionResult(org.spongepowered.api.data.DataTransactionResult)

Aggregations

DataManipulator (org.spongepowered.api.data.manipulator.DataManipulator)21 ImmutableDataManipulator (org.spongepowered.api.data.manipulator.ImmutableDataManipulator)13 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)8 DataView (org.spongepowered.api.data.DataView)7 ImmutableList (com.google.common.collect.ImmutableList)6 IMixinCustomDataHolder (org.spongepowered.common.interfaces.data.IMixinCustomDataHolder)6 Optional (java.util.Optional)5 DataContainer (org.spongepowered.api.data.DataContainer)5 InvalidDataException (org.spongepowered.api.data.persistence.InvalidDataException)4 SerializedDataTransaction (org.spongepowered.common.data.persistence.SerializedDataTransaction)4 ArrayList (java.util.ArrayList)3 NBTTagList (net.minecraft.nbt.NBTTagList)3 DataManipulatorRegistration (org.lanternpowered.server.data.manipulator.DataManipulatorRegistration)3 ImmutableValue (org.spongepowered.api.data.value.immutable.ImmutableValue)3 World (org.spongepowered.api.world.World)3 ImmutableSet (com.google.common.collect.ImmutableSet)2 Collection (java.util.Collection)2 List (java.util.List)2 IImmutableDataManipulator (org.lanternpowered.server.data.manipulator.immutable.IImmutableDataManipulator)2 DataRegistration (org.spongepowered.api.data.DataRegistration)2