crwdns138249:0crwdne138249:0
Warning
crwdns138251:0crwdne138251:0
crwdns138253:0:javadoc:crwdne138253:0
crwdns138255:0:javadoc:crwdnd138255:0:javadoc:crwdnd138255:0:javadoc:crwdnd138255:0:javadoc:crwdnd138255:0:javadoc:crwdnd138255:0:javadoc:crwdne138255:0
crwdns138257:0:javadoc:crwdnd138257:0:javadoc:crwdnd138257:0:ref:crwdnd138257:0:ref:crwdne138257:0
crwdns138259:0:javadoc:crwdnd138259:0:javadoc:crwdne138259:0
Note
crwdns138261:0crwdne138261:0
crwdns138263:0:javadoc:crwdnd138263:0:javadoc:crwdne138263:0
crwdns138265:0crwdne138265:0
crwdns138267:0:javadoc:crwdne138267:0
crwdns138269:0crwdne138269:0
import org.spongepowered.api.Sponge;
import org.spongepowered.api.data.value.ValueFactory;
import org.spongepowered.api.data.value.mutable.Value;
import org.spongepowered.cookbook.myhomes.data.home.Home;
import org.spongepowered.cookbook.myhomes.data.Keys;
@Override
protected Value<Home> defaultHome() {
return Sponge.getRegistry().getValueFactory()
.createValue(Keys.DEFAULT_HOME, getValue(), null);
}
crwdns138271:0crwdne138271:0
crwdns138273:0:javadoc:crwdnd138273:0:javadoc:crwdne138273:0
crwdns138275:0:javadoc:crwdne138275:0
crwdns138277:0crwdne138277:0
import org.spongepowered.api.data.DataQuery;
import org.spongepowered.api.data.key.Key;
import org.spongepowered.api.data.key.KeyFactory;
import org.spongepowered.api.data.value.mutable.Value;
import org.spongepowered.api.data.value.mutable.Value;
import com.google.common.reflect.TypeToken;
import org.spongepowered.cookbook.myhomes.data.home.Home;
public static final Key<Value<Home>> DEFAULT_HOME = KeyFactory.makeSingleKey(
TypeToken.of(Home.class),
new TypeToken<Value<Home>>() {},
DataQuery.of("DefaultHome"), "myhomes:default_home", "Default Home");
Note
crwdns138279:0:javadoc:crwdnd138279:0:javadoc:crwdne138279:0
crwdns138281:0crwdne138281:0
crwdns138283:0crwdne138283:0
crwdns138285:0crwdne138285:0
crwdns138287:0crwdne138287:0
crwdns138289:0:doc:crwdnd138289:0:javadoc:crwdnd138289:0:javadoc:crwdnd138289:0:javadoc:crwdnd138289:0:ref:crwdne138289:0
Note
crwdns138291:0crwdne138291:0
crwdns138293:0crwdne138293:0
import org.spongepowered.api.data.DataContainer;
import org.spongepowered.cookbook.myhomes.data.Keys;
@Override
public DataContainer toContainer() {
DataContainer container = super.toContainer();
// This is the simplest, but use whatever structure you want!
container.set(Keys.DEFAULT_HOME.getQuery(), this.defaultHome);
container.set(Keys.HOMES, this.homes);
return container;
}
crwdns138295:0crwdne138295:0
crwdns138297:0crwdne138297:0
crwdns138299:0:javadoc:crwdnd138299:0:javadoc:crwdne138299:0
Note
crwdns138301:0:javadoc:crwdne138301:0
import org.spongepowered.api.event.game.state.GameInitializationEvent;
import org.spongepowered.api.data.DataRegistration;
import org.example.MyCustomData;
import org.example.ImmutableCustomData;
import org.example.CustomDataBuilder;
@Listener
public void onInit(GameInitializationEvent event) {
DataRegistration.builder()
.dataClass(MyCustomData.class)
.immutableClass(ImmutableCustomData.class)
.builder(new CustomDataBuilder())
.manipulatorId("my-custom")
.dataName("My Custom")
.build();
}
Warning
crwdns138303:0:javadoc:crwdne138303:0
crwdns138305:0crwdne138305:0
crwdns138307:0:javadoc:crwdne138307:0
crwdns138309:0crwdne138309:0
crwdns138311:0crwdne138311:0
crwdns138313:0:javadoc:crwdne138313:0
crwdns138315:0crwdne138315:0
crwdns138317:0crwdne138317:0
crwdns138319:0crwdne138319:0
crwdns138321:0crwdne138321:0
crwdns138323:0crwdne138323:0
crwdns138325:0crwdne138325:0
Tip
crwdns138327:0crwdne138327:0
crwdns138329:0crwdne138329:0
crwdns138331:0crwdne138331:0
crwdns138333:0crwdne138333:0
crwdns138335:0crwdne138335:0
crwdns138337:0:javadoc:crwdnd138337:0:javadoc:crwdne138337:0
Note
crwdns138339:0crwdne138339:0
crwdns138341:0crwdne138341:0
crwdns138343:0crwdne138343:0
import org.spongepowered.api.data.DataHolder;
import org.spongepowered.api.data.merge.MergeFunction;
import org.spongepowered.cookbook.myhomes.data.friends.FriendsData;
import java.util.Optional;
@Override
public Optional<FriendsData> fill(DataHolder dataHolder, MergeFunction overlap) {
FriendsData merged = overlap.merge(this, dataHolder.get(FriendsData.class).orElse(null));
setValue(merged.friends().get());
return Optional.of(this);
}
crwdns138345:0crwdne138345:0
import org.spongepowered.api.data.DataContainer;
import org.spongepowered.api.data.DataQuery;
import org.spongepowered.cookbook.myhomes.data.Keys;
import org.spongepowered.cookbook.myhomes.data.friends.FriendsData;
import org.spongepowered.cookbook.myhomes.data.friends.ImmutableFriendsData;
import com.google.common.collect.Maps;
import java.util.Optional;
import java.util.UUID;
@Override
public Optional<FriendsData> from(DataContainer container) {
if(container.contains(Keys.FRIENDS)) {
List<UUID> friends = container.getObjectList(Keys.FRIENDS.getQuery(), UUID.class).get();
return Optional.of(setValue(friends));
}
return Optional.empty();
}
crwdns138347:0crwdne138347:0
import org.spongepowered.cookbook.myhomes.data.friends.FriendsData;
@Override
public FriendsData copy() {
return new FriendsDataImpl(getValue());
}
crwdns138349:0crwdne138349:0
crwdns138351:0crwdne138351:0
crwdns138353:0crwdne138353:0
crwdns138355:0crwdne138355:0
crwdns138357:0crwdne138357:0
crwdns138359:0:javadoc:crwdne138359:0
crwdns138361:0crwdne138361:0
crwdns138363:0crwdne138363:0
crwdns138365:0:doc:crwdnd138365:0:javadoc:crwdnd138365:0:javadoc:crwdne138365:0
crwdns138367:0crwdne138367:0
crwdns138369:0crwdne138369:0
crwdns138371:0crwdne138371:0
crwdns138373:0crwdne138373:0
crwdns138375:0crwdne138375:0
crwdns138377:0crwdne138377:0
import org.spongepowered.cookbook.myhomes.data.Keys
// registerGetters() for immutable implementation
@Override
protected void registerGettersAndSetters() {
registerKeyValue(Keys.DEFAULT_HOME, this::defaultHome);
registerKeyValue(Keys.HOMES, this::homes);
registerFieldGetter(Keys.DEFAULT_HOME, this::getDefaultHome);
registerFieldGetter(Keys.HOMES, this::getHomes);
// Only on mutable implementation
registerFieldSetter(Keys.DEFAULT_HOME, this::setDefaultHome);
registerFieldSetter(Keys.HOMES, this::setHomes);
}
crwdns138379:0crwdne138379:0