Search in sources :

Example 1 with ResourceKey

use of org.spongepowered.api.ResourceKey in project SpongeCommon by SpongePowered.

the class DataProviderRegistrator method spongeDataStore.

public void spongeDataStore(final ResourceKey datastoreKey, final int version, final DataContentUpdater[] contentUpdater, final Class dataHolder, final Key<? extends Value<?>>... dataKeys) {
    final SpongeDataStoreBuilder builder = ((SpongeDataStoreBuilder) DataStore.builder()).pluginData(datastoreKey, version);
    builder.updater(contentUpdater);
    builder.holder(dataHolder);
    for (Key dataKey : dataKeys) {
        builder.key(dataKey, dataKey.key().value());
    }
    SpongeDataManager.getDatastoreRegistry().register(builder.build(), Arrays.asList(dataKeys));
}
Also used : SpongeDataStoreBuilder(org.spongepowered.common.data.persistence.datastore.SpongeDataStoreBuilder) ResourceKey(org.spongepowered.api.ResourceKey) Key(org.spongepowered.api.data.Key)

Example 2 with ResourceKey

use of org.spongepowered.api.ResourceKey in project SpongeCommon by SpongePowered.

the class DataStoreRegistry method register.

public void register(final DataStore dataStore, Iterable<Key<?>> keys) {
    keys.forEach(k -> this.dataStoreByValueKey.put(k, dataStore));
    if (dataStore instanceof SpongeDataStore) {
        final ResourceKey customDataKey = ((SpongeDataStore) dataStore).getDataStoreKey();
        this.dataStoreByDataStoreKey.put(customDataKey, dataStore);
    }
    this.allDataStores.add(dataStore);
    this.dataStoreCache.clear();
    this.dataStoreByTokenCache.clear();
}
Also used : ResourceKey(org.spongepowered.api.ResourceKey)

Example 3 with ResourceKey

use of org.spongepowered.api.ResourceKey in project SpongeCommon by SpongePowered.

the class BoatData method register.

// @formatter:off
public static void register(final DataProviderRegistrator registrator) {
    registrator.asMutable(Boat.class).create(Keys.BOAT_TYPE).get(h -> ((BoatType) (Object) h.getBoatType())).set((h, v) -> h.setType((Boat.Type) (Object) v)).asMutable(BoatAccessor.class).create(Keys.IS_IN_WATER).get(h -> h.accessor$status() == Boat.Status.IN_WATER).asMutable(BoatBridge.class).create(Keys.CAN_MOVE_ON_LAND).get(BoatBridge::bridge$getMoveOnLand).set(BoatBridge::bridge$setMoveOnLand).asMutable(BoatBridge.class).create(Keys.OCCUPIED_DECELERATION).get(BoatBridge::bridge$getOccupiedDecelerationSpeed).set(BoatBridge::bridge$setOccupiedDecelerationSpeed).asMutable(BoatBridge.class).create(Keys.MAX_SPEED).get(BoatBridge::bridge$getMaxSpeed).set(BoatBridge::bridge$setMaxSpeed).asMutable(BoatBridge.class).create(Keys.UNOCCUPIED_DECELERATION).get(BoatBridge::bridge$getUnoccupiedDecelerationSpeed).set(BoatBridge::bridge$setUnoccupiedDecelerationSpeed);
    final ResourceKey boatDataStoreKey = ResourceKey.sponge("boat");
    registrator.spongeDataStore(boatDataStoreKey, 2, new DataContentUpdater[] { BoatData.BOAT_UPDATER_BYTE_TO_BOOL_FIX }, BoatBridge.class, Keys.MAX_SPEED, Keys.CAN_MOVE_ON_LAND, Keys.OCCUPIED_DECELERATION, Keys.UNOCCUPIED_DECELERATION);
    SpongeDataManager.INSTANCE.registerLegacySpongeData(Constants.Entity.Boat.BOAT_MAX_SPEED, boatDataStoreKey, Keys.MAX_SPEED);
    SpongeDataManager.INSTANCE.registerLegacySpongeData(Constants.Entity.Boat.BOAT_MOVE_ON_LAND, boatDataStoreKey, Keys.CAN_MOVE_ON_LAND);
    SpongeDataManager.INSTANCE.registerLegacySpongeData(Constants.Entity.Boat.BOAT_OCCUPIED_DECELERATION_SPEED, boatDataStoreKey, Keys.OCCUPIED_DECELERATION);
    SpongeDataManager.INSTANCE.registerLegacySpongeData(Constants.Entity.Boat.BOAT_UNOCCUPIED_DECELERATION_SPEED, boatDataStoreKey, Keys.UNOCCUPIED_DECELERATION);
}
Also used : DataContentUpdater(org.spongepowered.api.data.persistence.DataContentUpdater) Keys(org.spongepowered.api.data.Keys) BoatBridge(org.spongepowered.common.bridge.world.entity.vehicle.BoatBridge) Constants(org.spongepowered.common.util.Constants) Boat(net.minecraft.world.entity.vehicle.Boat) DataProviderRegistrator(org.spongepowered.common.data.provider.DataProviderRegistrator) ResourceKey(org.spongepowered.api.ResourceKey) ByteToBooleanContentUpdater(org.spongepowered.common.data.ByteToBooleanContentUpdater) BoatAccessor(org.spongepowered.common.accessor.world.entity.vehicle.BoatAccessor) BoatType(org.spongepowered.api.data.type.BoatType) SpongeDataManager(org.spongepowered.common.data.SpongeDataManager) BoatType(org.spongepowered.api.data.type.BoatType) BoatBridge(org.spongepowered.common.bridge.world.entity.vehicle.BoatBridge) Boat(net.minecraft.world.entity.vehicle.Boat) ResourceKey(org.spongepowered.api.ResourceKey)

Example 4 with ResourceKey

use of org.spongepowered.api.ResourceKey in project SpongeCommon by SpongePowered.

the class SpongeChannelManager method handlePlayPayload.

public boolean handlePlayPayload(final EngineConnection connection, final ServerboundCustomPayloadPacket packet) {
    final ServerboundCustomPayloadPacketAccessor accessor = (ServerboundCustomPayloadPacketAccessor) packet;
    final ResourceKey channel = (ResourceKey) (Object) accessor.accessor$identifier();
    final ChannelBuf payload = (ChannelBuf) accessor.accessor$data();
    return this.handlePlayPayload(connection, channel, payload);
}
Also used : ServerboundCustomPayloadPacketAccessor(org.spongepowered.common.accessor.network.protocol.game.ServerboundCustomPayloadPacketAccessor) ChannelBuf(org.spongepowered.api.network.channel.ChannelBuf) ResourceKey(org.spongepowered.api.ResourceKey)

Example 5 with ResourceKey

use of org.spongepowered.api.ResourceKey in project SpongeCommon by SpongePowered.

the class SpongeChannelManager method handleChannelRegistry.

private void handleChannelRegistry(final EngineConnection connection, final ChannelBuf payload) {
    final Set<ResourceKey> registered = ConnectionUtil.getRegisteredChannels(connection);
    registered.clear();
    final int count = payload.readVarInt();
    for (int i = 0; i < count; i++) {
        final ResourceKey key = ResourceKey.resolve(payload.readString());
        // type
        payload.readByte();
        registered.add(key);
    }
}
Also used : ResourceKey(org.spongepowered.api.ResourceKey)

Aggregations

ResourceKey (org.spongepowered.api.ResourceKey)71 Sponge (org.spongepowered.api.Sponge)13 List (java.util.List)11 Map (java.util.Map)11 DataContainer (org.spongepowered.api.data.persistence.DataContainer)11 Optional (java.util.Optional)10 Collectors (java.util.stream.Collectors)10 ArrayList (java.util.ArrayList)8 Collection (java.util.Collection)8 CompoundTag (net.minecraft.nbt.CompoundTag)8 NonNull (org.checkerframework.checker.nullness.qual.NonNull)8 RegistryTypes (org.spongepowered.api.registry.RegistryTypes)8 IOException (java.io.IOException)7 Component (net.kyori.adventure.text.Component)7 Nullable (org.checkerframework.checker.nullness.qual.Nullable)7 Keys (org.spongepowered.api.data.Keys)7 Constants (org.spongepowered.common.util.Constants)7 ImmutableList (com.google.common.collect.ImmutableList)6 ServerLevel (net.minecraft.server.level.ServerLevel)6 DataQuery (org.spongepowered.api.data.persistence.DataQuery)6