@SuppressWarnings("unchecked") @Override public DataTransactionResult offerToStore(ValueContainer<?> container, E value) { final ImmutableValue<E> newValue = constructImmutableValue(value); if (supports(container)) { final DataTransactionBuilder builder = DataTransactionBuilder.builder(); final Optional<E> oldVal = getVal((C) container); try { if (set((C) container, value)) { if (oldVal.isPresent()) { builder.replace(constructImmutableValue(oldVal.get())); } return builder.result(DataTransactionResult.Type.SUCCESS).success(newValue).build(); } return builder.result(DataTransactionResult.Type.FAILURE).reject(newValue).build(); } catch (Exception e) { Sponge.getLogger().debug("An exception occurred when setting data: ", e); return builder.result(DataTransactionResult.Type.ERROR).reject(newValue).build(); } } return DataTransactionBuilder.failResult(newValue); }