use of org.spongepowered.common.accessor.world.level.BaseSpawnerAccessor in project SpongeCommon by SpongePowered.
the class MobSpawnerData method register.
// @formatter:off
public static void register(final DataProviderRegistrator registrator) {
registrator.asMutable(SpawnerBlockEntityAccessor.class).create(Keys.MAX_NEARBY_ENTITIES).get(h -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$maxNearbyEntities()).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$maxNearbyEntities(v)).create(Keys.MAX_SPAWN_DELAY).get(h -> new SpongeTicks(((BaseSpawnerAccessor) h.accessor$spawner()).accessor$maxSpawnDelay())).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$maxSpawnDelay((int) v.ticks())).create(Keys.MIN_SPAWN_DELAY).get(h -> new SpongeTicks(((BaseSpawnerAccessor) h.accessor$spawner()).accessor$minSpawnDelay())).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$minSpawnDelay((int) v.ticks())).create(Keys.NEXT_ENTITY_TO_SPAWN).get(h -> MobSpawnerData.getNextEntity((BaseSpawnerAccessor) h.accessor$spawner())).set((h, v) -> MobSpawnerData.setNextEntity(h.accessor$spawner(), v)).create(Keys.REMAINING_SPAWN_DELAY).get(h -> new SpongeTicks(((BaseSpawnerAccessor) h.accessor$spawner()).accessor$spawnDelay())).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$spawnDelay((int) v.ticks())).create(Keys.REQUIRED_PLAYER_RANGE).get(h -> (double) ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$requiredPlayerRange()).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$requiredPlayerRange(v.intValue())).create(Keys.SPAWN_COUNT).get(h -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$spawnCount()).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$spawnCount(v)).create(Keys.SPAWN_RANGE).get(h -> (double) ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$spawnRange()).set((h, v) -> ((BaseSpawnerAccessor) h.accessor$spawner()).accessor$spawnRange(v.intValue())).create(Keys.SPAWNABLE_ENTITIES).get(h -> MobSpawnerData.getEntities(h.accessor$spawner())).set((h, v) -> {
final BaseSpawnerAccessor logic = (BaseSpawnerAccessor) h.accessor$spawner();
MobSpawnerData.setEntities(logic, v);
MobSpawnerData.setNextEntity((BaseSpawner) logic, MobSpawnerData.getNextEntity(logic));
});
}
use of org.spongepowered.common.accessor.world.level.BaseSpawnerAccessor in project SpongeCommon by SpongePowered.
the class MobSpawnerData method getEntities.
private static WeightedTable<EntityArchetype> getEntities(final BaseSpawner logic) {
final WeightedTable<EntityArchetype> possibleEntities = new WeightedTable<>();
for (final SpawnData weightedEntity : ((BaseSpawnerAccessor) logic).accessor$spawnPotentials()) {
final CompoundTag nbt = weightedEntity.getTag();
final String resourceLocation = nbt.getString(Constants.Entity.ENTITY_TYPE_ID);
final EntityType<?> type = Registry.ENTITY_TYPE.getOptional(new ResourceLocation(resourceLocation)).map(EntityType.class::cast).orElse(EntityTypes.PIG.get());
final EntityArchetype archetype = SpongeEntityArchetypeBuilder.pooled().type(type).entityData(NBTTranslator.INSTANCE.translateFrom(nbt)).build();
possibleEntities.add(new WeightedSerializableObject<>(archetype, ((WeighedRandom_WeighedRandomItemAccessor) weightedEntity).accessor$weight()));
}
return possibleEntities;
}
Aggregations