Guest User

StringData

a guest
Apr 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. import java.util.Optional;
  2.  
  3. import org.spongepowered.api.Sponge;
  4. import org.spongepowered.api.data.DataContainer;
  5. import org.spongepowered.api.data.DataHolder;
  6. import org.spongepowered.api.data.DataView;
  7. import org.spongepowered.api.data.manipulator.mutable.common.AbstractData;
  8. import org.spongepowered.api.data.merge.MergeFunction;
  9. import org.spongepowered.api.data.value.mutable.Value;
  10.  
  11.  
  12. public class StringData extends AbstractData<StringData, Immutable> {
  13.  
  14. private String stringStorage;
  15.  
  16. {
  17. registerGettersAndSetters();
  18. }
  19.  
  20. StringData() {
  21. }
  22.  
  23. StringData(String stringStorage) {
  24. this.stringStorage = stringStorage;
  25. }
  26.  
  27. @Override
  28. protected void registerGettersAndSetters() {
  29. registerFieldGetter(StringKeys.STRING_STORAGE, this::getStringStorage);
  30. registerFieldSetter(StringKeys.STRING_STORAGE, this::setStringStorage);
  31. registerKeyValue(StringKeys.STRING_STORAGE, this::stringStorage);
  32. }
  33.  
  34. public String getStringStorage() {
  35. return stringStorage;
  36. }
  37.  
  38. public void setStringStorage(String stringStorage) {
  39. this.stringStorage = stringStorage;
  40. }
  41.  
  42. public Value<String> stringStorage() {
  43. return Sponge.getRegistry().getValueFactory().createValue(StringKeys.STRING_STORAGE, stringStorage);
  44. }
  45.  
  46. @Override
  47. public Optional<StringData> fill(DataHolder dataHolder, MergeFunction overlap) {
  48. dataHolder.get(StringData.class).ifPresent(that -> {
  49. StringData data = overlap.merge(this, that);
  50. this.stringStorage = data.stringStorage;
  51. });
  52. return Optional.of(this);
  53. }
  54.  
  55. @Override
  56. public Optional<StringData> from(DataContainer container) {
  57. return from((DataView) container);
  58. }
  59.  
  60. public Optional<StringData> from(DataView container) {
  61. container.getObject(StringKeys.STRING_STORAGE.getQuery(), String.class).ifPresent(v -> stringStorage = v);
  62. return Optional.of(this);
  63. }
  64.  
  65. @Override
  66. public StringData copy() {
  67. return new StringData(stringStorage);
  68. }
  69.  
  70. @Override
  71. public Immutable asImmutable() {
  72. return new Immutable(stringStorage);
  73. }
  74.  
  75. @Override
  76. public int getContentVersion() {
  77. return 1;
  78. }
  79.  
  80. @Override
  81. public DataContainer toContainer() {
  82. return super.toContainer()
  83. .set(StringKeys.STRING_STORAGE.getQuery(), stringStorage);
  84. }
  85. }
Add Comment
Please, Sign In to add comment