Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.64 KB | None | 0 0
  1. ======================================================================
  2. Key<MapValue<String, EffectParams>> ITEM_EFFECTS = KeyFactory.makeMapKey(
  3. new TypeToken<Map<String, EffectParams>>() {
  4. },
  5. new TypeToken<MapValue<String, EffectParams>>() {
  6. },
  7. DataQuery.of("itemeffects"),
  8. "nt-rpg:item_effects",
  9. "Item effects");
  10.  
  11. ======================================================================
  12. DataRegistration.<EffectsData, EffectsData.Immutable>builder()
  13. .dataClass(EffectsData.class)
  14. .immutableClass(EffectsData.Immutable.class)
  15. .builder(new EffectsData.Builder())
  16. .manipulatorId("item_effects")
  17. .dataName("EffectsData")
  18. .buildAndRegister(Sponge.getPluginManager().getPlugin("nt-rpg").get());
  19. ======================================================================
  20. public class EffectsData extends AbstractMappedData<String, EffectParams, EffectsData, EffectsData.Immutable> {
  21.  
  22.  
  23. public EffectsData() {
  24. this(new HashMap<>());
  25. }
  26.  
  27. public EffectsData(Map<String, EffectParams> effects) {
  28. super(effects, NKeys.ITEM_EFFECTS);
  29. }
  30.  
  31. @Override
  32. public Optional<EffectParams> get(String key) {
  33. return Optional.of(getValue().get(key));
  34. }
  35.  
  36. @Override
  37. public Set<String> getMapKeys() {
  38. return getValue().keySet();
  39. }
  40.  
  41. @Override
  42. public EffectsData put(String key, EffectParams value) {
  43. getValue().put(key, value);
  44. return this;
  45. }
  46.  
  47. @Override
  48. public EffectsData putAll(Map<? extends String, ? extends EffectParams> map) {
  49. getValue().putAll(map);
  50. return this;
  51. }
  52.  
  53. @Override
  54. public EffectsData remove(String key) {
  55. if (getValue().containsKey(key))
  56. getValue().remove(key);
  57. return this;
  58. }
  59.  
  60. @Override
  61. public Optional<EffectsData> fill(DataHolder dataHolder, MergeFunction overlap) {
  62. Optional<EffectsData> a = dataHolder.get(EffectsData.class);
  63. if (a.isPresent()) {
  64. EffectsData otherData = a.get();
  65. EffectsData finalData = overlap.merge(this, otherData);
  66. this.setValue(finalData.getValue());
  67. }
  68. return Optional.of(this);
  69. }
  70.  
  71. @Override
  72. public Optional<EffectsData> from(DataContainer container) {
  73. if (!container.contains(NKeys.ITEM_EFFECTS)) {
  74. return Optional.empty();
  75. }
  76.  
  77. setValue((Map<String, EffectParams>) container.getMap(NKeys.ITEM_EFFECTS.getQuery()).get());
  78. return Optional.of(this);
  79. }
  80.  
  81. @Override
  82. public EffectsData copy() {
  83. return new EffectsData(getValue());
  84. }
  85.  
  86. @Override
  87. public Immutable asImmutable() {
  88. return new Immutable(getValue());
  89. }
  90.  
  91. @Override
  92. public int getContentVersion() {
  93. return Builder.CONTENT_VERSION;
  94. }
  95.  
  96.  
  97. public class Immutable extends AbstractImmutableMappedData<String, EffectParams, Immutable, EffectsData> {
  98.  
  99. private Map<String, EffectParams> effects;
  100.  
  101.  
  102. public Immutable(Map<String, EffectParams> effects) {
  103. super(effects, NKeys.ITEM_EFFECTS);
  104. this.effects = effects;
  105. }
  106.  
  107.  
  108. public Immutable() {
  109. this(Collections.emptyMap());
  110. }
  111.  
  112.  
  113. public ImmutableMapValue<String, EffectParams> effects() {
  114. return Sponge.getRegistry().getValueFactory()
  115. .createMapValue(NKeys.ITEM_EFFECTS, this.effects)
  116. .asImmutable();
  117. }
  118.  
  119.  
  120. private Map<String, EffectParams> getEffects() {
  121. return effects;
  122. }
  123.  
  124. @Override
  125. public int getContentVersion() {
  126. return EffectsData.Builder.CONTENT_VERSION;
  127. }
  128.  
  129. @Override
  130. public DataContainer toContainer() {
  131. DataContainer dataContainer = super.toContainer();
  132. dataContainer.set(NKeys.ITEM_EFFECTS,effects);
  133. return dataContainer;
  134. }
  135.  
  136. @Override
  137. public EffectsData asMutable() {
  138. return new EffectsData(effects);
  139. }
  140. }
  141.  
  142. public static class Builder extends AbstractDataBuilder<EffectsData>
  143. implements DataManipulatorBuilder<EffectsData, EffectsData.Immutable> {
  144.  
  145. public static final int CONTENT_VERSION = 1;
  146.  
  147. public Builder() {
  148. super(EffectsData.class, CONTENT_VERSION);
  149. }
  150.  
  151. @Override
  152. public EffectsData create() {
  153. return new EffectsData();
  154. }
  155.  
  156. @Override
  157. public Optional<EffectsData> createFrom(DataHolder dataHolder) {
  158. return create().fill(dataHolder);
  159. }
  160.  
  161. @Override
  162. @SuppressWarnings("unchecked")
  163. protected Optional<EffectsData> buildContent(DataView container) throws InvalidDataException {
  164. if (container.contains(NKeys.ITEM_EFFECTS)) {
  165.  
  166. EffectsData effectsData = new EffectsData();
  167. Map<String, Map> map = (Map<String, Map>) container.getMap(NKeys.ITEM_EFFECTS.getQuery()).get();
  168. for (Map.Entry<String, Map> q : map.entrySet()) {
  169. EffectParams params = new EffectParams();
  170. params.putAll(q.getValue());
  171. effectsData.getValue().put(q.getKey(), params);
  172. }
  173.  
  174. container.getSerializable(NKeys.ITEM_EFFECTS.getQuery(), EffectsData.class)
  175. .ifPresent(a -> {
  176. effectsData.set(NKeys.ITEM_EFFECTS, a.getValue());
  177. });
  178.  
  179.  
  180. return Optional.of(effectsData);
  181. }
  182. return Optional.empty();
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement