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