package com.demkom58.aenergy.data;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.data.DataContainer;
import org.spongepowered.api.data.DataHolder;
import org.spongepowered.api.data.DataView;
import org.spongepowered.api.data.key.Key;
import org.spongepowered.api.data.manipulator.mutable.common.AbstractData;
import org.spongepowered.api.data.merge.MergeFunction;
import org.spongepowered.api.data.value.mutable.Value;
import java.util.Optional;
public class AEnergyData extends AbstractData<AEnergyData, ImmutableAEnergyData> {
private String name;
private String id;
AEnergyData(String name, String id) {
this.name = name;
this.id = id;
registerGettersAndSetters();
}
@Override
protected void registerGettersAndSetters() {
registerFieldGetter(AEnergyDataKeys.STANDARD_ID, () -> this.id);
registerFieldGetter(AEnergyDataKeys.STANDARD_NAME, () -> this.name);
registerFieldSetter(AEnergyDataKeys.STANDARD_ID, id -> this.id = id);
registerFieldSetter(AEnergyDataKeys.STANDARD_NAME, name -> this.name = name);
registerKeyValue(AEnergyDataKeys.STANDARD_ID, this::id);
registerKeyValue(AEnergyDataKeys.STANDARD_NAME, this::name);
}
public Value<String> name() {
return Sponge.getRegistry().getValueFactory().createValue(AEnergyDataKeys.STANDARD_NAME, name);
}
public Value<String> id() {
return Sponge.getRegistry().getValueFactory().createValue(AEnergyDataKeys.STANDARD_ID, id);
}
public void setID(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
@Override
public Optional<AEnergyData> fill(DataHolder dataHolder, MergeFunction overlap) {
Optional<AEnergyData> otherData_ = dataHolder.get(AEnergyData.class);
if (otherData_.isPresent()) {
AEnergyData otherData = otherData_.get();
AEnergyData finalData = overlap.merge(this, otherData);
this.name = finalData.name;
this.id = finalData.id;
}
return Optional.of(this);
}
@Override
public Optional<AEnergyData> from(DataContainer container) {
return from((DataView) container);
}
public Optional<AEnergyData> from(DataView view) {
if (view.contains(AEnergyDataKeys.STANDARD_ID.getQuery()) && view.contains(AEnergyDataKeys.STANDARD_NAME.getQuery())) {
this.id = view.getString(AEnergyDataKeys.STANDARD_ID.getQuery()).get();
this.name = view.getString(AEnergyDataKeys.STANDARD_NAME.getQuery()).get();
return Optional.of(this);
} else {
return Optional.empty();
}
}
@Override
public AEnergyData copy() {
return new AEnergyData(this.name, this.id);
}
@Override
public ImmutableAEnergyData asImmutable() {
return new ImmutableAEnergyData(this.name, this.id);
}
@Override
public int getContentVersion() {
return 1;
}
@Override
public DataContainer toContainer() {
return super.toContainer()
.set(AEnergyDataKeys.STANDARD_NAME.getQuery(), this.name)
.set(AEnergyDataKeys.STANDARD_ID.getQuery(), this.id);
}
}