Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package com.demkom58.aenergy.data;
  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.key.Key;
  8. import org.spongepowered.api.data.manipulator.mutable.common.AbstractData;
  9. import org.spongepowered.api.data.merge.MergeFunction;
  10. import org.spongepowered.api.data.value.mutable.Value;
  11.  
  12. import java.util.Optional;
  13.  
  14. public class AEnergyData extends AbstractData<AEnergyData, ImmutableAEnergyData> {
  15.     private String name;
  16.     private String id;
  17.  
  18.     AEnergyData(String name, String id) {
  19.         this.name = name;
  20.         this.id = id;
  21.         registerGettersAndSetters();
  22.     }
  23.  
  24.     @Override
  25.     protected void registerGettersAndSetters() {
  26.         registerFieldGetter(AEnergyDataKeys.STANDARD_ID, () -> this.id);
  27.         registerFieldGetter(AEnergyDataKeys.STANDARD_NAME, () -> this.name);
  28.         registerFieldSetter(AEnergyDataKeys.STANDARD_ID, id -> this.id = id);
  29.         registerFieldSetter(AEnergyDataKeys.STANDARD_NAME, name -> this.name = name);
  30.         registerKeyValue(AEnergyDataKeys.STANDARD_ID, this::id);
  31.         registerKeyValue(AEnergyDataKeys.STANDARD_NAME, this::name);
  32.     }
  33.  
  34.     public Value<String> name() {
  35.         return Sponge.getRegistry().getValueFactory().createValue(AEnergyDataKeys.STANDARD_NAME, name);
  36.     }
  37.  
  38.     public Value<String> id() {
  39.         return Sponge.getRegistry().getValueFactory().createValue(AEnergyDataKeys.STANDARD_ID, id);
  40.     }
  41.  
  42.     public void setID(String id) {
  43.         this.id = id;
  44.     }
  45.  
  46.     public void setName(String name) {
  47.         this.name = name;
  48.     }
  49.  
  50.     @Override
  51.     public Optional<AEnergyData> fill(DataHolder dataHolder, MergeFunction overlap) {
  52.         Optional<AEnergyData> otherData_ = dataHolder.get(AEnergyData.class);
  53.         if (otherData_.isPresent()) {
  54.             AEnergyData otherData = otherData_.get();
  55.             AEnergyData finalData = overlap.merge(this, otherData);
  56.             this.name = finalData.name;
  57.             this.id = finalData.id;
  58.         }
  59.         return Optional.of(this);
  60.     }
  61.  
  62.     @Override
  63.     public Optional<AEnergyData> from(DataContainer container) {
  64.         return from((DataView) container);
  65.     }
  66.  
  67.     public Optional<AEnergyData> from(DataView view) {
  68.         if (view.contains(AEnergyDataKeys.STANDARD_ID.getQuery()) && view.contains(AEnergyDataKeys.STANDARD_NAME.getQuery())) {
  69.             this.id = view.getString(AEnergyDataKeys.STANDARD_ID.getQuery()).get();
  70.             this.name = view.getString(AEnergyDataKeys.STANDARD_NAME.getQuery()).get();
  71.             return Optional.of(this);
  72.         } else {
  73.             return Optional.empty();
  74.         }
  75.     }
  76.  
  77.     @Override
  78.     public AEnergyData copy() {
  79.         return new AEnergyData(this.name, this.id);
  80.     }
  81.  
  82.     @Override
  83.     public ImmutableAEnergyData asImmutable() {
  84.         return new ImmutableAEnergyData(this.name, this.id);
  85.     }
  86.  
  87.     @Override
  88.     public int getContentVersion() {
  89.         return 1;
  90.     }
  91.  
  92.     @Override
  93.     public DataContainer toContainer() {
  94.         return super.toContainer()
  95.                 .set(AEnergyDataKeys.STANDARD_NAME.getQuery(), this.name)
  96.                 .set(AEnergyDataKeys.STANDARD_ID.getQuery(), this.id);
  97.     }
  98. }